...EDA课程设计报告书课题名称基于VHDL语言的8位数字密码锁设计姓名学号院、系、部专业指导教师2016年6月20日※※※※※※※※※※※※※※※※※※※※※※※※2014级学生EDA课程设计2一、设计任务及要求:设计任务:设计一个具有能够修改、控制、扫描、显示密码的密码锁电路。要求:1:数码输入:手动用3个拨码开关与3个按键设计三位密码的输入,并在显示器显示出该数值。2:数码验证:开锁时输入密码后,拨动RT键使其为高电平,而CHANGE为低电平检测,密码正确时开锁,输出LOCKOPEN灯灭,LOCKCLOSE灯亮,表示开锁成功。3:错误显示:当密码输入错误时,LOCKOPEN灯亮,LOCKCLOSE灯灭,表示开锁失败。4:更改密码:当改变密码时,按下CHANGE键使其为高电平,而RT为低电平时,可改变密码。5:密码清除:按下REST可清除前面的输入值,清除为“888”。指导教师签名:2016年月日二、指导教师评语:指导教师签名:2016年月日三、成绩指导教师签名:2016年月日3基于VHDL语言的8位数字密码锁设计1设计目的(1)熟悉集成电路的引脚安排。(2)掌握各芯片的逻辑功能及使用方法。(3)了解面包板结构及其接线方法。(4)了解电子密码锁的组成及工作原理。(5)熟悉电子密码锁的设计与制作。2设计方案电子密码锁,主要由三部分组成:密码输入电路、密码锁控制电路和密码锁显示电路。作为电子密码锁的输入电路,可选用的方案有拨码与按键来控制输入和触摸式键盘输入等多种。拨码与按键和触摸式4*4键盘相比简单方便而且成本低,构成的电路简单,本设计中采用拨码与按键来作为该设计的输入设备。数字电子密码锁的显示信息电路可采用LED数码显示管和液晶屏显示两种。液晶显示具有高速显示、可靠性高、易于扩展和升级的特点,但是普通的液晶存在亮度低、对复杂环境适应能力差的特点,但是在本设计中任然使用LED数码管。根据以上选定的输入设备与与显示器件,并考虑到现实各项密码锁功能的具体要求,与系统的设计要求,系统设计采用自顶向下的设计方案。整个密码锁系统的总体总体框图如图2.1所示。4图2.1电子密码锁系统总体框图3功能模块3.1输入模块3.1.1功能介绍输入时有三个拨码键控制输入,每个拨码各控制一位密码,对于其中一个拨码键每拨一次码按一次按键,表示输入一位,当输入四位时输出一位数,用“888”拨码与按键单脉冲控制输入译码BCD七段译码显示电路控制模块寄存器与清零信号发生电路数值比较器开/关锁电路三选一选择器扫描电路LED灯显示模块输入模块5作为初始密码。3.1.2输入模块与仿真图形单脉冲控制如图3.1如下图图3.1上图为单脉冲控制输入,当M给一上升沿信号将在PUL输出一位与之对应的高或低电平。四位串行输入并行输出寄存器如下图3.26图3.2上图为4为串行输入并行输出寄存器,它由4个D触发组成,当reset为高电平时,每给一脉冲输入数据将向右移一位二值代码,它能同时复位。3.1.3程序的输入在文本区内输入程序,程序如下:单脉冲信号控制puls.vhdLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYpulsISPORT(PUL,M:INSTD_LOGIC;Q:OUTSTD_LOGIC);ENDpuls;ARCHITECTUREBEHAVEOFpulsISSIGNALTEMP:STD_LOGIC;BEGINPROCESS(M)BEGINIFM'EVENTANDM='1'THENIFPUL='1'THENTEMP='1';ELSETEMP='0';ENDIF;ENDIF;ENDPROCESS;Q=TEMP;ENDBEHAVE;4位串行输入并行输出寄存器7shifter.vhdLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYshifterISPORT(din:INSTD_LOGIC;reset,CLK:INSTD_LOGIC;qout:bufferSTD_LOGIC_VECTOR(0TO3));ENDshifter;ARCHITECTUREactOFshifterISBEGINPROCESS(CLK)VARIABLEq:STD_LOGIC_VECTOR(0TO3);BEGINIFreset='0'THENq:=(others='0');ELSEifclk'eventandclk='1'thenq(3):=q(2);q(2):=q(1);q(1):=q(0);q(0):=din;ENDIF;ENDIF;qout=q;ENDPROCESS;ENDarchitectureact;3.2控制模块3.2.1功能介绍开锁时输入密码后,拨动RT键使其为高电平,而CHANGE为低电平检测,密码正确时开锁,输出LOCKOPEN灯灭,LOCKCLOSE灯亮,表示开锁成功。当密码输入错误时,LOCKOPEN灯亮,LOCKCLOSE灯灭,表示开锁失败。当改变密码时,按下CHANGE键使其为高电平,而RT为低电平时,可改变密码。按下REST可清除前面的输入值,清除为“888”。3.2.2控制模块与仿真图形输入译码器图3.3,如下图8图3.3上图为译码器将4位二值代码转化成BCD码从“0000”~“1001”表示0~9。表3-1输入译码的真值表输入输出DCBAY1Y2Y3Y4字形000000000000100011001000102001100113010001004010101015011001106011101117100010008100110019表3-1总功能控制模块图3.4,如下图9图3.4当CHANGE为高电平且rt为低电平时开始输入密码这时lockopen为高电平,而lockclose为低电平,当rt为高电平,change为低电平时开始检测密码,如上图开始密码为“108”当再次出现“108”时lockopen为高电平,而lockclose为低电平,当密码错误时lockopen为低电平,而lockclose为高电平。4选1选择器与扫描器图3.5,如下图10图3.5如上图多路选择器可以从多组数据来源中选取一组送入目的地,在本设计中利用多路选择器做扫描电路来分别驱动输出装置,可以将低成本消耗,如上图当输入“819”时,在时钟地控制下qout将输出“819”,而与之对应的sel扫描对应的数码管。在文本区内输入程序,程序如下:输入译码器KEY.vhdLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYKEYISPORT(clk:INSTD_LOGIC;data:INSTD_LOGIC_VECTOR(3DOWNTO0);q:OUTSTD_LOGIC_VECTOR(3DOWNTO0);q1:OUTSTD_LOGIC_VECTOR(3DOWNTO0));11ENDENTITYKEY;ARCHITECTUREARTOFKEYISBEGINPROCESS(clk,data)ISBEGINIFclk'EVENTANDclk='1'THENCASEdataISWHEN0000=q=0000;q1=0000;WHEN0001=q=0001;q1=0001;WHEN0010=q=0010;q1=0010;WHEN0011=q=0011;q1=0011;WHEN0100=q=0100;q1=0100;WHEN0101=q=0101;q1=0101;WHEN0110=q=0110;q1=0110;WHEN0111=q=0111;q1=0111;WHEN1000=q=1000;q1=1000;WHEN1001=q=1001;q1=1001;WHENOTHERS=q=0000;q1=0000;ENDCASE;ENDIF;ENDPROCESS;ENDARCHITECTUREART;总功能控制模块Eleclock.vhdLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYEleclockISPORT(NB:INSTD_LOGIC_VECTOR(3DOWNTO0);NS:INSTD_LOGIC_VECTOR(3DOWNTO0);NG:INSTD_LOGIC_VECTOR(3DOWNTO0);CLK:INSTD_LOGIC;CHANGE,RT:INSTD_LOGIC;DB:OUTSTD_LOGIC_VECTOR(3DOWNTO0);DS:OUTSTD_LOGIC_VECTOR(3DOWNTO0);DG:OUTSTD_LOGIC_VECTOR(3DOWNTO0);LOCKOPEN,LOCKCLOSE:OUTSTD_LOGIC);ENDENTITYEleclock;ARCHITECTUREARTOFEleclockISCOMPONENTKeyISPORT(CLK:INSTD_LOGIC;DATA:INSTD_LOGIC_VECTOR(3DOWNTO0);Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0);Q1:OUTSTD_LOGIC_VECTOR(3DOWNTO0)12);ENDCOMPONENTKey;SIGNALENABLE,C0,C1,S,ENABLE1:STD_LOGIC;SIGNALTB,TS,TG,D_B,D_S,D_G:STD_LOGIC_VECTOR(3DOWNTO0);BEGINENABLE=CHANGEAND(NOTRT);ENABLE1=RTAND(NOTCHANGE);U0:KEYPORTMAP(CLK=CLK,DATA=NB,Q=DB,Q1=D_B);U1:KEYPORTMAP(CLK=CLK,DATA=NS,Q=DS,Q1=D_S);U2:KEYPORTMAP(CLK=CLK,DATA=NG,Q=DG,Q1=D_G);PROCESS(CLK,D_B,D_S,D_G)ISBEGINIFCLK'EVENTANDCLK='1'THENIFENABLE='1'THENTB=D_B;TS=D_S;TG=D_G;ENDIF;IFENABLE1='1'THENIF(TB=D_BANDTS=D_SANDTG=D_G)THENLOCKOPEN='1';LOCKCLOSE='0';ELSELOCKOPEN='0';LOCKCLOSE='1';ENDIF;ENDIF;ENDIF;ENDPROCESS;ENDARCHITECTUREART;4选1选择器与扫描器sel.vhdLIBRARYIEEE;USEIEEE.STD_LOGIC_ARITH.ALL;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYselISPORT(QIN1,QIN2,QIN3:INSTD_LOGIC_VECTOR(3DOWNTO0);CLK,RST:INSTD_LOGIC;QOUT:OUTSTD_LOGIC_VECTOR(3DOWNTO0);sel:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDsel;ARCHITECTUREARTOFselIS13BEGINPROCESS(CLK,RST)VARIABLECNT:INTEGERRANGE0TO2;BEGINIF(RST='0')THENCNT:=0;sel=00000000;QOUT=0000;ELSIFCLK'EVENTANDCLK='1'THENIFCNT=2THENCNT:=0;ELSECNT:=CNT+1;ENDIF;CASECNTISWHEN0=QOUT=QIN1;sel=11111110;WHEN1=QOUT=QIN2;sel=11111101;WHEN2=QOUT=QIN3;sel=11111011;WHENOTHERS=QOUT=0000;sel