密码锁verilog课程设计
- 格式:doc
- 大小:59.50 KB
- 文档页数:17
《EDA技术》设计报告题目:学院:专业:班级:姓名:学号:一.引言1.1 电子密码锁的现状随着我国对外开放的不断深入,高档建筑发展很快,高档密码锁具市场的前景乐观。
我国密码锁具行业对密码锁具高新技术的投入正逐年增大,高档密码锁的市场需求也逐年增加。
在安防工程中,锁具产品是关系到整个系统安全性的重要设备,所以锁具产品的优劣也关系了整个安防工程的质量和验收。
目前,市场上比较先进的智能电子密码锁分别有:IC卡电子密码锁、射频卡式电子密码锁、红外遥控电子密码锁、指纹识别电子密码锁和瞳孔识别电子密码锁等。
IC卡电子密码锁成本低,体积小,卡片本身无须电源等优点占领了一定的市场份额,但是由于有机械接触,会产生接触磨损,而且使用不太方便,在一定程度上限制了它的应用;射频卡式电子密码锁是非接触式电子密码锁,成本也不太高,体积跟IC卡密码锁相当,卡片使用感应电源,重量很轻,技术成熟,受到了广泛的欢迎,但是与IC卡电子密码锁相比,成本偏高;指纹识别电子密码锁和瞳孔识别电子密码锁可靠性很高,安全性是目前应用系统中最高的,但是成本高昂,还没进入大众化使用阶段。
在国外,美国、日本、德国的电子密码锁保密性较好,并结合感应卡技术,生物识别技术,使电子密码锁系统得到了飞跃式的发展。
这几个国家的密码锁识别的密码更复杂,并且综合性比较好,已经进入了成熟期,出现了感应卡式密码锁,指纹式密码锁,虹膜密码锁,面部识别密码锁,序列混乱的键盘密码锁等各种技术的系统,它们在安全性,方便性,易管理性等方面都各有特长,新型的电子密码锁系统的应用也越来越广。
基于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课程设计一、课程目标知识目标: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的密码锁课程设计一、课程目标知识目标: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实验报告一、实验目的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位数字密码锁设计本科学生学年论文题目: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)第一章前言电子密码锁系统主要由电子锁体、电子密匙等部分组成,一把电子密匙里能存放多组开锁密码,用户在使用过程中能够随时修改开锁密码,更新或配制钥匙里开锁密码。
一把电子锁可配制多把钥匙。
语音方面的广泛应用,使得具有语音播放的电子密码锁使用起来更加方便。
基于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的密码锁课程设计一、课程目标知识目标: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. 第四周:总结与拓展,提高密码锁性能。
基于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电子密码锁课程设计一、课程目标知识目标: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周:课程项目与实践,成果展示与评价。
课程设计报告课程设计题目: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软件对各个模块进行编写仿真。
键盘电路理想接口图:设计原理:本模块采用2×2的扫描键盘电路,对输入信号进行采集,此模块的主要功能是每按下一个按键,flag 产生一个矩形波,作为连接模块的触发信号。
同时key_value 值为所按下键的编码值,与flag 一同传入连接模块。
实际设计接口图:key_value键盘模块仿真图:跟据图中所示当输出kevalue :10值的时候,flag 出现一个矩形波。
当输出kevalue:11值的时候,flag 再次出现上跳沿。
实际上,上面的图写的测试文件是有一点错误的,当a 扫描到第三个值(01)时,b 在实际电路中应该是01而不是11,此时根据程序flag 应置为1,当然此时flag 本来就是1,不会发生错误。
在实际中,时钟频率跳的如此之快,人按一下按键的持续时间还是有的,所以flag 应在按键按完后再下降下来。
不然多出很多无用的矩形波,这个装置就没用了。
连接模块接口图:setreset设计原理:本连接模块通过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.输出结果状态;状态转换图如下所示:控制模块接口图:clkt设计原理:通过各种状态的转变,实现密码锁的开锁,报错,重设密码功能。
当密码错误是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,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;endendcaseendendcaseendendmodule2.2 connect_test: `timescale 1s/1smodule connect_test();reg flag;reg[1:0] keyvalue;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,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;endendmodule3.1 control:modulecontrol(clk,flag2,a,b,c,d,set1,reset,control_set,ena,c_led,d_led,state,a1,b1,c1,d1,hh h);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;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;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)state=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;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;endenddefault: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=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位串行数字密码锁。