密码锁verilog课程设计

合集下载

FPGA基于某verilog HDL的密码锁

FPGA基于某verilog HDL的密码锁

EDA课程设计课设名称:密码锁课设日期: 2014.6.23——7.5 姓名:陈飞学号:110250101哈尔滨工业大学(威海)信电学院电子信息工程2014.6一. 所用软件与硬件介绍1.1所用软件介绍QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

QuartusII可以在XP、Linux以及Unix上使用,除了可以使用TCL脚本完成设计流程外,提供了完善的用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。

对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。

此外,QuartusII 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。

目前Altera已经停止了对MaxplusII 的更新支持,QuartusII 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。

Altera在QuartusII 中包含了许多诸如SignalTapII、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII 友好的图形界面及简便的使用方法。

基于FPGA的verilog的电子密码锁设计

基于FPGA的verilog的电子密码锁设计

《EDA技术》设计报告题目:学院:专业:班级:姓名:学号:一.引言1.1 电子密码锁的现状随着我国对外开放的不断深入,高档建筑发展很快,高档密码锁具市场的前景乐观。

我国密码锁具行业对密码锁具高新技术的投入正逐年增大,高档密码锁的市场需求也逐年增加。

在安防工程中,锁具产品是关系到整个系统安全性的重要设备,所以锁具产品的优劣也关系了整个安防工程的质量和验收。

目前,市场上比较先进的智能电子密码锁分别有:IC卡电子密码锁、射频卡式电子密码锁、红外遥控电子密码锁、指纹识别电子密码锁和瞳孔识别电子密码锁等。

IC卡电子密码锁成本低,体积小,卡片本身无须电源等优点占领了一定的市场份额,但是由于有机械接触,会产生接触磨损,而且使用不太方便,在一定程度上限制了它的应用;射频卡式电子密码锁是非接触式电子密码锁,成本也不太高,体积跟IC卡密码锁相当,卡片使用感应电源,重量很轻,技术成熟,受到了广泛的欢迎,但是与IC卡电子密码锁相比,成本偏高;指纹识别电子密码锁和瞳孔识别电子密码锁可靠性很高,安全性是目前应用系统中最高的,但是成本高昂,还没进入大众化使用阶段。

在国外,美国、日本、德国的电子密码锁保密性较好,并结合感应卡技术,生物识别技术,使电子密码锁系统得到了飞跃式的发展。

这几个国家的密码锁识别的密码更复杂,并且综合性比较好,已经进入了成熟期,出现了感应卡式密码锁,指纹式密码锁,虹膜密码锁,面部识别密码锁,序列混乱的键盘密码锁等各种技术的系统,它们在安全性,方便性,易管理性等方面都各有特长,新型的电子密码锁系统的应用也越来越广。

基于FPGA的电子密码锁是新型现代化安全管理系统,它集微机自动识别技术和现代安全管理措施为一体,它涉及电子,机械,计算机技术,通讯技术,生物技术等诸多新技术。

它是解决重要部门出入口实现安全防范管理的有效措施,适用各种场合,如银行、宾馆、机房、军械库、机要室、办公间、智能化小区、工厂、家庭等。

在数字技术网络技术飞速发展的今天,电子密码锁技术得到了迅猛的发展。

FPGA课设

FPGA课设

FPGA课程设计—数字密码锁学院:专业班级:姓名:学号:页脚内容1FPGA基于Verilog HDL密码锁设计1. 摘要 (3)2. 题目来源: (4)3. 理论分析 (4)4. 实现过程 (5)4.1顶层模块 (5)4.2蜂鸣器模块 (7)4.3显示模块 (8)4.4控制模块 (13)5. 实验结果 (17)5.1顶层模块时序仿真: (17)5.2蜂鸣器时序仿真 (20)5.3显示模块时序仿真: (21)5.4控制模块时序仿真 (23)6. 总结 (27)7. 参考文献 (28)页脚内容21.摘要随着科技的发展数字电路的各种产品广泛应用,传统的机械锁由于其构造的简单,安全性不高,电子密码锁其保密性高,使用灵活性好,安全系数高,使用方便,将会是未来使用的趋势。

本设计使用FPGA设计使设计过程廷到高度自动化,其具有强大的设计功能、测试、仿真分析、管理等功能。

用Verilog HDL可以更加快速、灵活地设计出符合各种要求的密码锁。

本设计基于Verilog HDL语言来设计密码锁,先介绍设计要求和整体设计思想,随后对所使用各模块分别为蜂鸣器模块、显示模块、控制模块、顶层模块进行了介绍,给出各个模块的主要代码,在对各个模块的功能进行仿真。

随着现代科技的日益发展,智能化,自动化技术的成熟将会代替以往的人工手动控制。

密码锁不仅可以有效地提高人们的生活效率,节约生活资源,而且十分安全可靠。

电子密码锁运用电子电路控制机械部分,使两者紧密结合,从而避免了因为机械部分被破坏而导致开锁功能失常.大大增加了密码锁得防盗功能。

同时因为电子密码锁不需要携带钥匙,弥补了钥匙极易丢失和仿造的缺陷,方便了锁具的使用。

关键字:页脚内容3密码锁Verilog HDL Quartus II2.题目来源:本设计以007为万能密码在忘记密码时开锁使用。

开始时密码锁处于关闭的状态,输入万能密码将锁打开。

在锁处于打开的状态时设计密码,此时指示灯处于亮的状态,说明锁处于开的状态。

电子密码锁verilog课程设计

电子密码锁verilog课程设计

电子密码锁verilog课程设计一、课程目标知识目标:1. 掌握电子密码锁的基本原理及其Verilog HDL实现方法;2. 了解数字电路设计的基本流程,包括设计、仿真和验证;3. 理解Verilog HDL语言的基本语法和结构,如模块、端口、信号定义等;4. 学会使用硬件描述语言进行简单的数字系统设计。

技能目标:1. 能够运用Verilog HDL语言设计一个具备基本功能的电子密码锁;2. 能够对所设计的电子密码锁进行功能仿真和时序分析;3. 能够根据实际需求调整和优化电子密码锁的设计;4. 培养学生的实际操作能力和问题解决能力。

情感态度价值观目标:1. 激发学生对数字电路和硬件描述语言的兴趣,培养其主动学习和探索的精神;2. 培养学生的团队合作意识,学会与他人共同解决问题;3. 增强学生的自信心,使其在克服困难的过程中体验到成就感;4. 引导学生关注科技发展,认识到所学知识在现实生活中的应用。

本课程针对高年级学生,结合课程性质、学生特点和教学要求,将目标分解为具体的学习成果。

在教学过程中,注重理论与实践相结合,使学生能够掌握电子密码锁的设计方法,提高其编程能力和实际操作技能。

同时,关注学生情感态度的培养,激发其学习兴趣,为学生的未来发展奠定基础。

二、教学内容本章节教学内容依据课程目标,结合教材相关章节,进行以下安排:1. 电子密码锁原理介绍:讲解电子密码锁的基本工作原理、组成和分类,使学生了解电子密码锁在实际应用中的重要性。

2. Verilog HDL基础知识:回顾Verilog HDL的基本语法、数据类型、运算符、赋值语句等,为学生编写电子密码锁程序打下基础。

3. 数字电路设计流程:介绍数字电路设计的基本流程,包括设计、仿真和验证,让学生了解实际工程项目的设计过程。

4. 电子密码锁设计:详细讲解电子密码锁的设计方法,包括密码存储、密码输入、密码比对和锁控逻辑等模块的设计。

5. 功能仿真及时序分析:教授如何对所设计的电子密码锁进行功能仿真和时序分析,以确保设计满足预期要求。

verilog的密码锁课程设计

verilog的密码锁课程设计

verilog的密码锁课程设计一、课程目标知识目标:1. 学生理解Verilog硬件描述语言的基本语法和结构;2. 学生掌握用Verilog设计简单的数字电路,特别是组合逻辑和时序逻辑;3. 学生能够描述密码锁的工作原理及其在数字系统中的应用;4. 学生了解基本的硬件仿真概念,并能运用到密码锁的设计中。

技能目标:1. 学生能够运用Verilog编写代码实现一个简单的密码锁电路;2. 学生能够通过仿真软件验证密码锁设计的正确性和功能;3. 学生能够对密码锁进行测试,并分析结果,进行故障诊断和修正;4. 学生具备团队协作能力,能在小组内有效沟通,共同完成密码锁的设计。

情感态度价值观目标:1. 学生培养对数字电路设计和硬件描述语言的兴趣,激发创新意识和探索精神;2. 学生通过实践活动,培养耐心、细致和严谨的科学态度;3. 学生在学习过程中,强化安全意识,了解密码学在实际生活中的重要意义;4. 学生通过小组合作,培养团队精神,学会尊重他人意见,共同进步。

课程性质:本课程属于实践性较强的课程,结合理论知识与实际操作,使学生在实践中掌握Verilog语言及数字电路设计。

学生特点:学生具备一定的数字电路基础,对编程和设计有一定的兴趣,喜欢动手实践。

教学要求:注重理论与实践相结合,强调学生动手能力,通过项目驱动教学,使学生能将所学知识运用到实际中。

同时,注重培养学生的团队协作能力和解决问题的能力。

二、教学内容1. Verilog基础知识回顾:包括数据类型、运算符、控制语句等,确保学生具备基本的编程能力。

(对应教材第2章)2. 数字电路设计基础:复习组合逻辑和时序逻辑设计原理,理解触发器、计数器等基本电路的工作原理。

(对应教材第3章)3. 密码锁原理讲解:介绍密码锁的构成、工作原理及其在现实生活中的应用。

(对应教材第5章)4. Verilog设计密码锁:教授如何运用Verilog语言编写密码锁代码,包括密码比对、锁的控制逻辑等。

课程设计fpga密码锁

课程设计fpga密码锁

FPGA实验报告一、实验目的1.设计一个密码锁2.加深FPGA电路原理的理解3.掌握VHDL语言的使用,学会用VHDL语言来编程解决实际问题4.学会使用EDA开发软件设计小型综合电路,掌握仿真的技巧5.学会应用开发系统实现硬件电路,检验电路的功能二、实验内容题目:电子密码锁内容:设计一个4位串行数字锁1.开锁代码为4位二进制,当输入代码的位数与锁内给定的密码一致,且按规定程序开锁时,方可开锁。

否则进入“错误”状态,发出报警信号。

2.锁内的密码可调,且预置方便,保密性好。

3.串行数字锁的报警,直到按下复位开关,才停下。

此时,数字锁又自动等待下一个开锁状态。

三、实验步骤1.系统总框图本系统的硬件部分主要由密码锁按键消抖模块,密码输入比较更改模块,密码显示模块、报警模块组成。

整体系统框图如下图所示。

2.密码锁的主要功能密码锁控制器的主要功能有:(1)密码输入:有二个按键来控制(分别代表0和1),每按下一个键,要求在数码管上显示,并依次左移。

(2)密码校验:如果有按键按下,直到松开该按键,如果密码校验正确,无变化,否则如果密码校验错误蜂鸣器响,表明密码错误。

(3)错误报警:密码输入错误开始报警。

(4)密码修改:输入密码正确后按按键输入要设置和更改的密码,按按键确认密码设置与更改,则密码设置成功。

3.密码锁的各个模块(1)按键消抖。

每按下一个键,仅产生一个信号脉冲,作为按键的使能信号,使能信号控制显示的数字。

(2)密码输入比较密码输入值的比较主要有两部分,密码位数和内容,任何一个条件不满足,都不能打开锁。

锁内密码为“0000” , key2 和key1 置低电平,分别表示输入“1” 和“0” 。

输入密码前先按start键,再依次正确输入0000,会在数码管逐一显示,按确认键,经检验,输入的密码等于锁内预先设置的密码密码锁开启信号,锁开启。

同时,可以进行密码修改。

若在输入密码的过程中,4 位二进制密码出现输入错误,那么锁不能开启,同时,蜂鸣器发出报警信号。

基于Verilog语言的8位数字密码锁设计

基于Verilog语言的8位数字密码锁设计

基于Verilog语言的8位数字密码锁设计本科学生学年论文题目:8位数字密码锁设计学院:电子工程学院年级:2011级专业:电子科学与技术(光电子)姓名: 李思远学号:20112508指导教师:林连东2011年5月28日8位数字密码锁设计摘要本文简述了VHDL语言的功能及其特点,并以8位串行数字锁设计为例,介绍了在QUARTUS II 6. 0开发软件下,利用VHDL硬件描述语言设计数字逻辑电路的过程和方法。

关键词:VHDL语言数字锁QUARTUS II 6.0 硬件描述语言数字逻辑电路AbstractThis paper describes the function and characteristics of VHDL language, and eight serial number lock design as an example, this paper introduces QUARTUS II 6・ 0 software development in of VHDL hardware design of digital logic circuit process and method.Keywords: VHDL language QUARTUS II 6・ 0 hardware description language, digitallogic circuit8位数字密码锁设计第一章前言Abstract第二章密码锁系统的设计2.1设计要求2.2设计分析 (5)第三章软件设计 (6)第四章软件仿真及验证 (10)12参考文献 (13)致谢 (14)第一章前言电子密码锁系统主要由电子锁体、电子密匙等部分组成,一把电子密匙里能存放多组开锁密码,用户在使用过程中能够随时修改开锁密码,更新或配制钥匙里开锁密码。

一把电子锁可配制多把钥匙。

语音方面的广泛应用,使得具有语音播放的电子密码锁使用起来更加方便。

基于-VerilogHDL的数字密码锁的设计

基于-VerilogHDL的数字密码锁的设计

基于Verilog HDL的数字密码锁设计是一种常见的数字电路设计项目,它可以帮助学生理解数字逻辑电路和Verilog HDL的应用。

下面将详细介绍数字密码锁的设计方案。

一、系统结构设计数字密码锁主要由数字键盘、数码管显示、密码比对模块和控制逻辑组成。

数字键盘用于输入密码,数码管显示用于显示密码输入状态和开锁结果,密码比对模块用于比对输入的密码和预设的密码是否一致,控制逻辑用于控制整个系统的运行。

二、硬件设计1. 数字键盘:数字键盘采用矩阵式键盘,通过扫描按键来获取用户输入的密码。

2. 数码管显示:数码管用于显示密码输入状态,例如显示“请输入密码”、“密码正确”或“密码错误”等信息。

3. 密码比对模块:密码比对模块接收输入的密码和预设的密码,在Verilog HDL中实现密码比对逻辑。

4. 控制逻辑:控制逻辑用于控制密码输入、比对和显示的流程,以及控制门锁的开关。

三、Verilog HDL设计1. 数字键盘输入模块:编写Verilog HDL代码来接收数字键盘输入的密码。

2. 密码比对模块:编写Verilog HDL代码来比对输入的密码和预设的密码,输出比对结果。

3. 数码管控制模块:编写Verilog HDL代码来控制数码管的显示,根据密码比对结果显示相应的信息。

四、系统功能设计1. 密码输入功能:用户通过数字键盘输入密码。

2. 密码比对功能:系统对输入的密码进行比对,判断密码是否正确。

3. 显示功能:数码管显示密码输入状态和开锁结果。

五、仿真与综合完成Verilog HDL代码设计后,进行仿真验证,确保系统能够正常工作。

然后进行综合和布局布线,生成FPGA可编程文件。

六、总结与展望通过数字密码锁的设计,学生可以深入理解数字逻辑电路、Verilog HDL语言的应用,并且掌握数字密码锁系统的设计原理。

未来,可以进一步优化系统功能,增加更多的安全性和便利性功能,提升系统的性能和可靠性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

密码锁v e r i l o g课程设计Last revision on 21 December 2020课程设计报告课程设计题目:4位串行数字密码锁学号学生姓名:谢渊良专业:通信工程班级:1421302指导教师:钟凯2017年 1月 5日1.摘要随着科技的发展数字电路的各种产品广泛应用,传统的机械锁由于其构造的简单,安全性不高,电子密码锁其保密性高,使用灵活性好,安全系数高,使用方便,将会是未来使用的趋势。

本设计使用EDA设计使设计过程廷到高度自动化,其具有强大的设计功能、测试、仿真分析、管理等功能。

使用EDA环境完成电路的系统综合设计和仿真。

用VHDL可以更加快速、灵活地设计出符合各种要求的密码锁。

本设计基于Verilog HDL语言来设计密码锁,先介绍设计要求和整体设计思想,随后对所使用各模块分别为键盘模块、连接模块、控制模块进行了介绍,给出各个模块的主要代码,在对各个模块的功能进行仿真。

关键字:密码锁 Verilog HDL2.设计内容设计一个4位数字密码锁子系统1)设计要求 开锁密码为4位二进制,当输入密码与锁内给定的密码一致时,方可开锁。

否则进入“错误”状态,发出报警信号。

2)锁内的密码可调。

3)串行数字密码锁的报警,直到按下复位开关,才停下。

此时,数字密码锁又自动等待下一个开锁状态。

3.系统设计本设计中,FPGA 系统采用硬件描述语言Verilog 按模块化方式进行设计,并用modersim 软件对各个模块进行编写仿真。

键盘模块键盘电路理想接口图:Set本模块采用2×2的扫描键盘电路,对输入信号进行采集,此模块的主要功能是每按下一个按键,flag 产生一个矩形波,作为连接模块的触发信号。

同时key_value 值为所按下键的编码值,与flag 一同传入连接模块。

实际设计接口图:flag键盘模块仿真图:跟据图中所示当输出kevalue :10值的时候,flag 出现一个矩形波。

当输出kevalue:11值的时候,flag 再次出现上跳沿。

实际上,上面的图写的测试文件是有一点错误的,当a 扫描到第三个值(01)时,b 在实际电路中应该是01而不是11,此时根据程序flag 应置为1,当然此时flag 本来就是1,不会发生错误。

在实际中,时钟频率跳的如此之快,人按一下按键的持续时间还是有的,所以flag 应在按键按完后再下降下来。

不然多出很多无用的矩形波,这个装置就没用了。

连接模块连接模块接口图:setresetkeyvalue 送入连接模块进行运算,当连续四个a,b,c,d 中,如果按下的是键,则reset 键置1;a_led,b_led 是灯泡,如果按的是0键,则a_led 置1,若是1键,则b_led 置1。

连接模块仿真图如下:这里有一个需要注意的点是,当第一次按了0键后马上按reset键,再按一下1键时,a 的值是1,而不是0。

每次按了reset或set,a,b,c,d都是要重新赋值的,这才符合实际情况。

控制模块:因为这个密码锁是循环使用的,就一定有不同的状态。

这里采用有限状态机的方法进行设计。

所以把开锁过程分为三个部分:1.等待输入状态;2.重设密码状态;3.输出结果状态;状态转换图如下所示:控制模块接口图:d_led为1。

因为初设密码是0000,所以在第一个flag2的矩形波到来后,d_led出现一个矩形波,实际上不应该出现矩形,一直亮直到reset重置才行。

或者设计一个计数器都行,虽然只是一些小错误,但如果在实际验证中可能现象就不易观察了。

然后就是按下set键的模拟了,波形都达到了课设的要求。

这是令人欣喜的,虽然经过了很多次的修改,实在是很不容易。

4.实验心得我从第二个星期的星期一开始做,本来只是随便做一下,但是看到周围同学都热情高昂,我也深受感染,然后开始查资料,后面看到这个状态机的方法很不错,很方便的解决了状态的转换问题,然后我就尝试这个方法。

同时在写程序的时候我也遇到了很多了困难,其中最难找的错误就是逻辑错误,但是最终还是一一被我解决了。

心中的成就感还是有一些的。

通过此次的课设,使我对数字电路的设计有更深层次的了解(各种时序),对verilog语言的运用也更加熟练。

由于时间和心力有限的原因,使我只能止步各个模块的设计了。

本来还想联合仿真的,但是电脑里只装了modersim,其中又有一个键盘开关的硬件,还是比较难实现的。

我想,如果我的程序下载到fpga芯片里,那是一定会出现不少错误的,实际的情况往往更加复杂,这也是我的一大遗憾!最后我要感谢我的室友,感谢他们对我的关爱,在我将要放弃的时候鼓励我,使我积极向前。

在此,我还要特别感谢英明兄的无私帮助,减少了我找编译错误的时间。

还依稀记得上次的数电感觉也是如此,很不错啊。

附:Verilog程序代码Key_board_input:module key_board_input(clk,a,b,keyvalue,flag ,q,j);input clk;input[1:0] b;output reg[1:0] a;output reg[1:0] keyvalue;output reg flag;output reg q=1;output reg[1:0] j=0;always @(posedge clk)beginq=q+1;case(q)0:a=2'b01;1:a=2'b10;endcasecase({a,b})4'b10_01:beginkeyvalue=2'b00;flag=1;j=3;end 4'b10_10:beginkeyvalue=2'b01;flag=1;j=3;end 4'b01_01:beginkeyvalue=2'b10;flag=1;j=3;end 4'b01_10:beginkeyvalue=2'b11;flag=1;j=3;end default:keyvalue=keyvalue;endcasebeginj=j+1;if(j==3) flag=0;endendendmodulekey_board_test: `timescale 1s/1smodule key_board_test();reg clk;reg[1:0] b;wire[1:0] a;wire[1:0] keyvalue;wire flag;wire q;wire [1:0] j;key_board_input u2(clk,a,b,keyvalue,flag,q,j);initialbegin#0 clk=0;#2 clk=1;b=1;#2 clk=0;#2 clk=1;b=3;#2 clk=0;#2 clk=1;b=3;#2 clk=0;#2 clk=1;b=3;#2 clk=0;#2 clk=1;b=2;#2 clk=0;#2 clk=1;b=3;#2 clk=0;#2 clk=1;b=3;#2 clk=0;#2 clk=1;b=3;endendmoduleconnect:module connect(flag,keyvalue,a_led,b_led,flag2,a,b,c,d,set1,reset,jishu,jishu1,jishu2,hh);input flag;input [1:0]keyvalue;output reg a_led,b_led,flag2,a,b,c,d,set1,reset;output reg [1:0] jishu=2'b00;output reg [1:0]jishu1=0,jishu2=0,hh=0;always@(negedge flag)beginjishu2<=jishu2+1;jishu1<=jishu1+1;if(keyvalue<2)beginif(jishu==3)beginjishu<=0;endelsejishu<=jishu+1;endif(jishu==0)flag2=0;if(keyvalue==2)beginhh<=jishu1;jishu<=0;endif(jishu1==(hh+1)) beginset1<=0;endif(keyvalue==2'd3) beginhh<=jishu2;jishu<=0;endif(jishu2==(hh+1)) beginreset<=0;end/*if(jishu==0)flag2=0;/*set*/case(jishu)0:begincase(keyvalue)0:begina<=0;a_led=1;b_led=0;end1:begina=1;a_led=0;b_led=1;end2:beginset1=1;end3:beginreset=1;endendcaseend1:begincase(keyvalue) 0:beginb=0;a_led=1;b_led=0;end1:beginb=1;a_led=0;b_led=1;end2:beginset1=1;end3:beginreset=1;endendcaseend2:begincase(keyvalue) 0:beginc=0;a_led=1;b_led=0;end1:beginc=1;a_led=0;b_led=1;end2:beginset1=1;end3:beginreset=1;endendcaseend3:begincase(keyvalue) 0:begind=0;a_led=1;b_led=0;flag2=1;end1:begind=1;a_led=0;b_led=1;flag2=1;end2:beginset1=1;end3:beginreset=1;endendcaseendendcaseendendmoduleconnect_test:`timescale 1s/1smodule connect_test();reg flag;reg[1:0] keyvalue;wire a_led,b_led,flag2,a,b,c,d,set1,reset;wire [1:0]jishu;wire[1:0] jishu1,jishu2,hh;connect u2(flag,keyvalue,a_led,b_led,flag2,a,b,c,d,set1,reset,jishu,jishu1,jishu2,hh);initialbegin#0 flag=0;#2 flag=1;keyvalue=1;#2 flag=0;#2 flag=1;keyvalue=3;#2 flag=0;#2 flag=1;keyvalue=0;#2 flag=0;#2 flag=1;keyvalue=0;#2 flag=0;#2 flag=1;keyvalue=1;#2 flag=0;#2 flag=1;keyvalue=0;#2 flag=0;endendmodulecontrol:modulecontrol(clk,flag2,a,b,c,d,set1,reset,control_set,ena,c_led,d_led,state,a1,b1,c1,d1,hhh);input clk,flag2,a,b,c,d,set1,reset;output reg ena,c_led,d_led,control_set;output reg[1:0] state=0;output reg a1=0,b1=0,c1=0,d1=0;output reg hhh=0;parameter in=2'b00,set=2'b01,out1=2'b10;always@(posedge clk or posedge set1 or posedge reset or flag2)begincase(state)in:beginif(reset==1)state=in;else if(set1==1)begincontrol_set=1;endelse if (control_set==1&&hhh==1) beginstate=in;control_set=0;hhh=0;endelse if(flag2==1)state=out1;elsebeginena=0;c_led=0;control_set=0;d_led=0;endendset:beginif(reset==1)state=in;else if(set1==1)beginstate=set;control_set=1;endelse if(flag2==1&&control_set==1) begina1=a;c1=c;d1=d;hhh=1;c_led=1;state=in;endendout1:beginif(reset==1)state=in;elsebeginif(a==a1&b==b1&c==c1&d==d1) beginena=0;d_led=1;state=in;endelsebeginena=1;state=out1;endendenddefault:state=in;endcaseendendmodulecontrol_test:`timescale 1s/1smodule control_test();reg clk,flag2,a,b,c,d,set1,reset;wire ena,c_led,d_led,control_set;wire [1:0] state;wire a1,b1,c1,d1;wire hhh;control u2(clk,flag2,a,b,c,d,set1,reset,control_set,ena,c_led,d_led,state,a1,b1,c1,d1,hhh); always #10 clk=~clk;initialbegin clk=0;reset=0;flag2=0;a=0;b=0;c=0;d=0;set1=0;reset=0;#10 a=0;#20 b=0;#20 c=0;#20 d=0;flag2=1;#20 flag2=0;#50 reset=1;#20 reset=0;#50 set1=1;#20 a=1; set1=0;#20 b=1;#20 c=0;#20 d=0;flag2=1;#20 flag2=0;#20 reset=1;#20 reset=0;#80 a=0;#20 b=0;#20 c=0;#20 d=0;flag2=1;#20 flag2=0;#20 reset=1;#20 reset=0;endendmodule东华理工大学课程设计评分表学生姓名:谢渊良班级:1421302课程设计题目:4位串行数字密码锁。

相关文档
最新文档