密码锁verilog课程设计

合集下载

基于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语言的应用,并且掌握数字密码锁系统的设计原理。

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

verilog的密码锁课程设计

verilog的密码锁课程设计

verilog的密码锁课程设计一、课程目标知识目标:1. 掌握Verilog硬件描述语言的基本语法和结构;2. 理解密码锁的原理及设计方法;3. 学会使用Verilog设计简单的密码锁电路。

技能目标:1. 能够运用Verilog编写密码锁的硬件描述代码;2. 能够对设计的密码锁进行功能仿真和时序分析;3. 能够根据实际需求调整密码锁的参数和结构。

情感态度价值观目标:1. 培养学生对数字电路设计领域的兴趣,激发学习热情;2. 培养学生团队合作精神,提高沟通与协作能力;3. 培养学生严谨的科学态度,注重实际操作和问题解决。

课程性质:本课程为实践性较强的数字电路设计课程,结合学生年级特点,注重理论知识与实际操作的结合。

学生特点:学生具备一定的电子基础和Verilog编程基础,对数字电路设计有一定了解。

教学要求:教师需引导学生通过理论学习与实践操作,掌握密码锁的设计方法,提高学生的实际操作能力和问题解决能力。

将课程目标分解为具体的学习成果,以便后续教学设计和评估。

1. Verilog基础知识回顾:变量声明与赋值、运算符、控制语句、模块与端口定义等;2. 密码锁原理介绍:密码锁工作原理、常见密码锁类型及其优缺点分析;3. Verilog设计密码锁:模块划分、密码生成与比对、锁的开闭控制;- 教材章节:第三章“组合逻辑设计”,第四章“时序逻辑设计”;- 教学内容:使用Verilog设计组合逻辑与时序逻辑电路,实现密码锁功能;4. 功能仿真及时序分析:利用ModelSim软件进行功能仿真,验证密码锁的正确性;- 教材章节:第六章“数字电路仿真与验证”;- 教学内容:仿真环境搭建,编写测试向量,进行功能仿真和时序分析;5. 密码锁优化与拓展:讨论如何提高密码锁的安全性和可靠性,进行性能优化;- 教材章节:第八章“数字电路优化技术”;- 教学内容:研究密码锁的冗余设计、功耗优化等方法。

教学内容安排和进度:1. 第一周:Verilog基础知识回顾,理解密码锁原理;2. 第二周:Verilog设计密码锁,模块划分与代码编写;3. 第三周:功能仿真及时序分析,优化密码锁设计;4. 第四周:总结与拓展,提高密码锁性能。

基于VerilogHDL密码锁设计

基于VerilogHDL密码锁设计

基于Verilog HDL密码锁设计摘要随着科技的开展数字电路的各种产品广泛应用,传统的机械锁由于其构造的简单,平安性不高,电子密码锁其性高,使用灵活性好,平安系数高,使用方便,将会是未来使用的趋势。

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

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

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

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

关键字密码锁Verilog HDL Quartus II总体设计密码锁分为四个模块:①顶层模块、②显示模块、③蜂鸣器模块、④控制模块。

其中由顶层模块调其他分模块来实现密码锁功能。

密码锁功能:1.由12个拨码开关设置三位密码〔0-9〕2.再输入密码开锁,密码正确,指示灯亮开锁成功。

3.密码输入错误,蜂鸣器响五秒,表示开锁失败。

设计思路:本设计以007为万能密码在忘记密码时开锁使用。

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

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

设置好密码后按关闭拨码使锁关闭,指示灯处于灭的状态。

再输入三位数字进展开琐,如果输入的密码正确则指示灯亮,表示开琐成功,否则蜂鸣器发出响声,并持续五秒钟,表示开锁失败。

总体框图灯亮,在密码错误时蜂鸣器发出五秒钟的响声。

程序如下:moduledingceng(n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,set,close,clk1,clk2,clk3,lock, alarm,Q,ss1,ss0);input n0,n1,n2,n3,n4,n5,n6,n7,n8,n9;input set,close;input clk1,clk2,clk3;output lock,alarm,ss1,ss0;output[6:0] Q;reg lock,alarm;reg ss0,ss1;reg[6:0] Q;wire[3:0] *1,*2,*3;wire *4,*5;codeu1(.lock(lock),.warning(*4),.num1(*1),.num2(*2),.num3(*3),.clk(clk1),.n 0(n0),.n1(n1),.n2(n2),.n3(n3),.n4(n4),.n5(n5),.n6(n6),.n7(n7),.n8(n8),.n 9(n9),.set(set),.close(close));show u2(.A(*1),.B(*2),.C(*3),.clk(clk2),.Q(Q[6:0]),.ss1(ss1),.ss0(ss0)); speaker u3(.ENA(*4),.CLK2(clk3),.COUT(alarm));endmodule2.蜂鸣器模块蜂鸣器是一种一体化构造的电子讯响器,采用直流电压供电,广泛应用各类电子产品中作发声器件。

fpga电子密码锁课程设计

fpga电子密码锁课程设计

fpga电子密码锁课程设计一、课程目标知识目标:1. 学生能理解FPGA的基本原理和电子密码锁的工作机制;2. 学生能掌握使用硬件描述语言(HDL)进行数字电路设计和实现的方法;3. 学生能了解数字电路中常见的加密算法,并运用到电子密码锁的设计中;4. 学生能分析并解决电子密码锁在实际应用中可能遇到的问题。

技能目标:1. 学生能运用所学知识,设计并实现一个基于FPGA的电子密码锁;2. 学生能熟练使用相关硬件描述语言和开发工具,完成电子密码锁的编程与调试;3. 学生能通过实际操作,提高动手能力和团队协作能力;4. 学生能通过课程项目,培养创新思维和问题解决能力。

情感态度价值观目标:1. 学生能够认识到科技对社会和生活的重要性,增强学习科技的兴趣和责任感;2. 学生能够在课程学习中,培养勇于探索、积极进取的精神;3. 学生能够通过团队协作,学会互相尊重、沟通与协作,培养良好的团队精神;4. 学生能够关注电子密码锁在安全领域的应用,提高对国家和社会安全的意识。

二、教学内容1. 数字电路基础:回顾数字电路的基本概念,重点掌握组合逻辑电路和时序逻辑电路的设计原理;教材章节:第一章 数字逻辑基础2. FPGA原理与应用:介绍FPGA的基本结构、工作原理以及编程方法;教材章节:第二章 可编程逻辑器件及其编程技术3. 硬件描述语言(HDL):学习硬件描述语言的基本语法和编程技巧;教材章节:第三章 硬件描述语言VHDL/Verilog基础4. 加密算法:讲解常见的加密算法,如AES、DES等,分析其原理和实现方法;教材章节:第四章 数字信号处理与加密算法5. 电子密码锁设计与实现:结合所学知识,设计并实现一个基于FPGA的电子密码锁;教材章节:第五章 数字系统设计实例分析与综合6. 课程项目与实践:以小组形式进行项目实践,完成电子密码锁的设计、编程、调试和测试;教材章节:第六章 数字系统项目实践教学内容安排和进度:第1周:数字电路基础复习第2周:FPGA原理与应用学习第3-4周:硬件描述语言学习第5周:加密算法学习第6-8周:电子密码锁设计与实现第9-10周:课程项目与实践,成果展示与评价。

智能密码锁控制系统设计

智能密码锁控制系统设计
不足:在软件、硬件设计和仿真过程中遇到不少问题,但最终还是把 它们解决了,使得设计符合要求。
• 结论:智能密码锁由于采用Verilog HDL语言设计, 用一片FPGA芯 片来实现,因而体积小,功耗低,稍加修改就可以改变密码的位数和 输入密码的次数,而升级和维护都很方便,而且容易做成 ASIC 芯片, 具有较好的应用前景。但由于结构还比较简单,有待进一步完善。
• //第4个always语句块,在确认键按下的时候判断密码是否正确同时使错误数加一,来
判断是否进行锁死
• always @(negedge queren,negedge nrst)
• begin
• if(!nrst)
• begin count<=0;is_right<=0;end
• else
• if(!queren)

ns=kaisuo;

else

ns=idle;
• sancisuosi:ns=sancisuosi;
• kaisuo:ns=kaisuo;
• endcase
• end

//标志寄存器,判断密码输入是否正确
• reg rlock;
• reg ropen;

//密码输入错误计数
• //第三个always模块,状态机的输出,根据状态不同输出不同的信号(三段式第三段) • always@(posedge clk ,negedge nrst) • begin • if(!nrst) {rlock,ropen}<=2"b11; • else • begin • {rlock,ropen}<=2"b11; • case(cs) • idle:{rlock,ropen}<=2"b11; • tanqi:{rlock,ropen}<=2"b11; • sancisuosi:{rlock,ropen}<=2"b01; • kaisuo:{rlock,ropen}<=2"b10; • endcase • end • end

数字密码锁FPGA课程设计报告

数字密码锁FPGA课程设计报告

西安邮电学院FPGA课程设计报告题目:数字密码锁院系:专业班级:学生姓名:导师姓名:起止时间:至2012年9 月21 日FPGA课程设计报告提纲1.任务设计一个简单的数字密码锁,假设预设密码为4位数:0000,当输入正确时输出为1、输入错误时输出为0。

同时输出输入的次数,当3次以上输入错误时,输出一个超告警信号,即使第四、五次输入正确也输出告警信号。

2.目的通过学习FPGA技术,应用于实践当中,掌握FPGA数字电路系统的开发流程,并且在自己的实践设计中熟练这门技术,同时排除和解决开发中遇到的问题,用Verilog语言编写设计所需要的实现的功能。

3.使用环境(软件/硬件环境,设备等)功能仿真和后仿真采用第三方验证工具(Modelsim),综合与布局布线工具为:Quartus II。

4.FPGA课程设计详细内容4.1 技术规范一、功能定义具体功能如下:(1)、用户初次使用,可按下am_en键进行密码设置。

(2)、开锁时一次完整的输入密码,当输入的密码与设置的密码相同时密码锁打开,即lockopen为高电平,连接的绿灯亮;否则密码锁关闭,即warn_en 为高电平,连接的红灯亮。

(3)、当输入错误的次数>3时,密码锁强制自动关闭。

二、引脚定义4.2 设计方案一、总体设计(1)密码设置或修改模块用户初次使用密码锁时可通过按am_en键进行密码设置,先输入初始密码0000,则进入密码设置,高电平有效。

密码是十进制的四位数字密码。

以后修改密码时,按am_en键,然后输入旧密码,正确时方可进入密码设置选项,否则重新开始。

(2)密码输入模块开锁时,一次完整输入密码后,按下enter键进行密码验证,高电平有效,看输入的数字是否等于原密码的值,密码正确时开锁,否则关闭。

当输入有误时,按下return键,清除输入的数字,重新输入(3)密码输入次数计数模块开始时count=0,当输入密码按下enter键时且密码错误时count+1,当conut>3时,密码锁强制自动关闭。

基于Verilog HDL密码锁设计

基于Verilog HDL密码锁设计

基于Verilog HDL密码锁设计摘要随着科技的发展数字电路的各种产品广泛应用,传统的机械锁由于其构造的简单,安全性不高,电子密码锁其保密性高,使用灵活性好,安全系数高,使用方便,将会是未来使用的趋势。

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

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

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

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

关键字密码锁 Verilog HDL Quartus II总体设计密码锁分为四个模块:①顶层模块、②显示模块、③蜂鸣器模块、④控制模块。

其中由顶层模块调其他分模块来实现密码锁功能。

密码锁功能:1.由12个拨码开关设置三位密码(0-9)2.再输入密码开锁,密码正确,指示灯亮开锁成功。

3.密码输入错误,蜂鸣器响五秒,表示开锁失败。

设计思路:本设计以007为万能密码在忘记密码时开锁使用。

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

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

设置好密码后按关闭拨码使锁关闭,指示灯处于灭的状态。

再输入三位数字进行开琐,如果输入的密码正确则指示灯亮,表示开琐成功,否则蜂鸣器发出响声,并持续五秒钟,表示开锁失败。

总体框图input n0,n1,n2,n3,n4,n5,n6,n7,n8,n9;input set,close;input clk1,clk2,clk3;output lock,alarm,ss1,ss0;output[6:0] Q;reg lock,alarm;reg ss0,ss1;reg[6:0] Q;wire[3:0] X1,X2,X3;wire X4,X5;codeu1(.lock(lock),.warning(X4),.num1(X1),.num2(X2),.num3(X3),.clk(clk1), .n0(n0),.n1(n1),.n2(n2),.n3(n3),.n4(n4),.n5(n5),.n6(n6),.n7(n7),.n8(n 8),.n9(n9),.set(set),.close(close));showu2(.A(X1),.B(X2),.C(X3),.clk(clk2),.Q(Q[6:0]),.ss1(ss1),.ss0(ss0)); speaker u3(.ENA(X4),.CLK2(clk3),.COUT(alarm));endmodule2.蜂鸣器模块蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用各类电子产品中作发声器件。

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 友好的图形界面及简便的使用方法。

基于VerilogHDL密码锁设计

基于VerilogHDL密码锁设计

基于Verilog HDL密码锁设计摘要随着科技的发展数字电路的各种产品广泛应用,传统的机械锁由于其构造的简单,安全性不高,电子密码锁其保密性高,使用灵活性好,安全系数高,使用方便,将会是未来使用的趋势。

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

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

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

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

关键字密码锁 Verilog HDL Quartus II总体设计密码锁分为四个模块:①顶层模块、②显示模块、③蜂鸣器模块、④控制模块。

其中由顶层模块调其他分模块来实现密码锁功能。

密码锁功能:1.由12个拨码开关设置三位密码(0-9)2.再输入密码开锁,密码正确,指示灯亮开锁成功。

3.密码输入错误,蜂鸣器响五秒,表示开锁失败。

设计思路:本设计以007为万能密码在忘记密码时开锁使用。

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

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

设置好密码后按关闭拨码使锁关闭,指示灯处于灭的状态。

再输入三位数字进行开琐,如果输入的密码正确则指示灯亮,表示开琐成功,否则蜂鸣器发出响声,并持续五秒钟,表示开锁失败。

总体框图图总体框图模块功能其及主要代码1.顶层模块实现几个模块的配合工作,它能实现对密码的设置和显示,同时在密码正确时时灯亮,在密码错误时蜂鸣器发出五秒钟的响声。

程序如下:moduledingceng(n0,n1,n2,n3,n4,n5,n6,n7,n8,n9,set,close,clk1,clk2,clk3,lock, alarm,Q,ss1,ss0);input n0,n1,n2,n3,n4,n5,n6,n7,n8,n9;input set,close;input clk1,clk2,clk3;output lock,alarm,ss1,ss0;output[6:0] Q;reg lock,alarm;reg ss0,ss1;reg[6:0] Q;wire[3:0] X1,X2,X3;wire X4,X5;codeu1(.lock(lock),.warning(X4),.num1(X1),.num2(X2),.num3(X3),.clk(clk1), .n0(n0),.n1(n1),.n2(n2),.n3(n3),.n4(n4),.n5(n5),.n6(n6),.n7(n7),.n8(n 8),.n9(n9),.set(set),.close(close));showu2(.A(X1),.B(X2),.C(X3),.clk(clk2),.Q(Q[6:0]),.ss1(ss1),.ss0(ss0)); speaker u3(.ENA(X4),.CLK2(clk3),.COUT(alarm));endmodule2.蜂鸣器模块蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用各类电子产品中作发声器件。

课程设计报告-基于fpga的电子密码锁的设计

课程设计报告-基于fpga的电子密码锁的设计

课程设计报告-基于fpga的电子密码锁的设计
一、引言
随着计算机技术的发展,传统的安全锁逐渐淡出人们的视野,取而代之的是一种更加
先进而安全的电子密码锁。

采用FPGA开发的电子密码锁在现代实用锁中变得越来越常见,它能够实现简单易懂、稳定可靠的安全锁功能,从而满足人们对安全问题日益严峻的需求。

本文主要介绍基于FPGA技术设计的电子密码锁的原理及实际应用,旨在为技术研究和产
品设计提供有价值的参考。

二、系统概述
电子密码锁是一种可以根据用户的输入及系统的设置的安全保护锁,它主要由输入接口、控制器、显示屏和锁具电源等组成。

基于FPGA设计的电子密码锁主要分为输入端处
理和控制端处理两部分,其中,输入端利用FPGA控制集成电路(IC)、有源转换器和输入/
输出连接器,实现密码锁的输入模块部分的处理功能;控制端利用FPGA实现温度检测和
按键、加密算法、记录密码信息等功能,满足密码锁的控制要求。

三、工作原理
电子密码锁工作原理主要是建立在输入接口和控制器之间的信息传输上。

当用户通过
输入接口输入密码时,控制器收到输入信号,利用自身中内置的加密算法,将输入的密码
信息和系统设置密码进行比对,如果密码正确,系统会将密码锁打开,从而使得受保护的
物品得到有效的安全保护。

四、总结
基于FPGA技术设计的电子密码锁为现代安全保护提供了一种先进的途径,其安全性
和可靠性得到了极大的提高,使得大多数受保护物品得到有效保护。

电子密码锁以及FPGA 技术的发展正在为我们日常生活与工作提供前所未有的便利,也将带给未来更多安全的思
考与希望。

基于Verilog HDL的数字密码锁的设计

基于Verilog HDL的数字密码锁的设计

成绩课程设计报告题目:基于Verilog HDL的数字密码锁的设计学生姓名:江留胜学生学号:**********系别:电气信息工程学院专业:电子信息工程届别:2013届指导教师:马立宪基于Verilog HDL的数字密码锁的设计学生:江留胜指导教师:马立宪电气信息工程学院电子信息工程1课程设计的任务与要求1.1 课程设计的任务设计一个6位的数字密码锁,利用Verilog HDL语言来实现,并使用QuartusⅡ进行仿真与调试。

1.2 课程设计的要求设计一个简单的数字密码锁,密码为6位,其功能:1、在内部设置密码,其密码用6位十进制数表示。

2、输入密码时,每次输入一位数,输入后按#进行确认。

3、当输入的密码顺序与设置的密码一致时,密码锁打开,否则,则报警。

4、具有重置密码的功能。

输入密码正确后按*号键输入要重的密码,按#号键确认密码的重置,连续输入两次,则密码重置成功。

使用Verilog HDL语言编写密码锁的开锁过程的程序,并借助QuartusⅡ软件对其进行仿真,观察实验波形。

1.3 课程设计的研究基础(设计所用的基础理论)密码锁就是要有一定的自我保护功能,并且能够定时更新防止破译的危险。

密码锁控制器是硬件与软件的结合。

Verilog HDL是一种优秀的硬件描述语言,它与C语言有许多相似之处,并继承和借鉴了C语言的多种操作符和语法结构,有C语言基础的人很快就能够学习并使用该语言。

在本次计中,系统开发平台为QuartusⅡ。

QuartusⅡ界面友好,使用便捷,被誉为业界最易用易学的EDA软件。

在QuartusⅡ上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。

在本次设计中,采用的硬件描述语言是Verilog HDL。

Verilog HDL也是目前应用最为广泛的硬件描述语言,并被IEEE采纳为IEEE#1064-1995标准。

基于Verilog HDL的数字密码锁的设计

基于Verilog HDL的数字密码锁的设计

成绩课程设计报告题目:基于Verilog HDL的数字密码锁的设计学生姓名:江留胜学生学号:**********系别:电气信息工程学院专业:电子信息工程届别:2013届指导教师:马立宪基于Verilog HDL的数字密码锁的设计学生:江留胜指导教师:马立宪电气信息工程学院电子信息工程1课程设计的任务与要求1.1 课程设计的任务设计一个6位的数字密码锁,利用Verilog HDL语言来实现,并使用QuartusⅡ进行仿真与调试。

1.2 课程设计的要求设计一个简单的数字密码锁,密码为6位,其功能:1、在内部设置密码,其密码用6位十进制数表示。

2、输入密码时,每次输入一位数,输入后按#进行确认。

3、当输入的密码顺序与设置的密码一致时,密码锁打开,否则,则报警。

4、具有重置密码的功能。

输入密码正确后按*号键输入要重的密码,按#号键确认密码的重置,连续输入两次,则密码重置成功。

使用Verilog HDL语言编写密码锁的开锁过程的程序,并借助QuartusⅡ软件对其进行仿真,观察实验波形。

1.3 课程设计的研究基础(设计所用的基础理论)密码锁就是要有一定的自我保护功能,并且能够定时更新防止破译的危险。

密码锁控制器是硬件与软件的结合。

Verilog HDL是一种优秀的硬件描述语言,它与C语言有许多相似之处,并继承和借鉴了C语言的多种操作符和语法结构,有C语言基础的人很快就能够学习并使用该语言。

在本次计中,系统开发平台为QuartusⅡ。

QuartusⅡ界面友好,使用便捷,被誉为业界最易用易学的EDA软件。

在QuartusⅡ上可以完成设计输入、元件适配、时序仿真和功能仿真、编程下载整个流程,它提供了一种与结构无关的设计环境,是设计者能方便地进行设计输入、快速处理和器件编程。

在本次设计中,采用的硬件描述语言是Verilog HDL。

Verilog HDL也是目前应用最为广泛的硬件描述语言,并被IEEE采纳为IEEE#1064-1995标准。

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

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

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

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

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

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

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

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

2)锁内的密码可调。

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

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

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

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

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

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

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

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

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

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

3.2连接模块连接模块接口图:设计原理:本连接模块通过flag信号下降沿触发,将keyvalue送入连接模块进行运算,当连续四个0和1键按下时,flag2产生一个矩形波,并将四个值分别送入a,b,c,d中,如果按下的是set键,则set置1,如果按下的是reset键,则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都是要重新赋值的,这才符合实际情况。

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

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

所以把开锁过程分为三个部分:1.等待输入状态;2.重设密码状态;3.输出结果状态;状态转换图如下所示:控制模块接口图:设计原理:通过各种状态的转变,实现密码锁的开锁,报错,重设密码功能。

当密码错误是ena=1;当重设密码成功时c_led置为1;当输入密码成功开锁时d_led为1。

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

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

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

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

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

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

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

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

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

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

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

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

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

附:Verilog程序代码1.1 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;end4'b10_10:beginkeyvalue=2'b01;flag=1;j=3;end4'b01_01:beginkeyvalue=2'b10;flag=1;j=3;end4'b01_10:beginkeyvalue=2'b11;flag=1;j=3;enddefault:keyvalue=keyvalue;endcasebeginj=j+1;if(j==3) flag=0;endendendmodule1.2 key_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;endendmodule2.1 connect:moduleconnect(flag,keyvalue,a_led,b_led,flag2,a,b,c,d,set1,reset,jishu,jish u1,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; endendcaseendendcaseendendmodule2.2 connect_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;connectu2(flag,keyvalue,a_led,b_led,flag2,a,b,c,d,set1,reset,jishu,jishu1,ji shu2,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;endendmodule3.1 control:modulecontrol(clk,flag2,a,b,c,d,set1,reset,control_set,ena,c_led,d_led,stat e,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)beginstate=set;control_set=1;endelse if (control_set==1&&hhh==1)beginstate=in;control_set=0;hhh=0;else 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;b1=b;c1=c;d1=d;hhh=1;c_led=1;state=in;endout1: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;endcaseendendmodule3.2 control_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;controlu2(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 学号:201420130326 课程设计题目:4位串行数字密码锁。

相关文档
最新文档