当前位置:文档之家› EDA课程设计报告

EDA课程设计报告

EDA课程设计报告学校:大学课程题目:密码锁的设计学院:信息科学技术学院专业及班级:通信工程(3)班:江虹学号:20101613310068其他组员:羊精月、林芳梅指导老师:文进目录一、设计思路……………………………………………………………………2二、硬件电路的实现 (2)(一)、独立键盘输入电路 (2)(二)、控制输入电路 (5)(三)、移位电路 (6)(四)、比较电路 (8)(五)、存储器模块 (12)(六)、译码模块 (14)(七)、密码锁的总体电路 (16)三、密码锁的功能及分析 (17)四、方案的优点及不足 (20)五、心得体会 (21)六、总结 (21)七、参考文献 (22)一、设计思路1、设计一个电子密码锁,在锁开的状态下输入密码,密码共4位2、设计一个初始密码3、用数据开关K1 K10分别代表数字1、2、…、9、04、输入的密码用数码管显示,最后输入的密码显示在最右边的数码管上,即每输入一位数,密码在数码管上的显示右移一位。

可删除输入的数字,删除的是最后输入的数字,每删除一位,密码在数码管的显示左移一位,并在右边空出的位上补充“0”。

5、密码锁的控制功能有清零、修改、锁定、解锁,删除,确认。

6、因为密码一般不想被人看到,所以在显示时在按键按下灯亮时显示正确字符,在按键按下灯灭时显示特殊字符,由于数码管显示译码时没有“*”,所以特殊字符选择“E”。

7、用一位输出电平的状态代表锁的开闭状态。

8、为保证密码锁主人能打开密码锁,设置一个万能密码,在主人忘记密码时使用。

二、硬件电路的实现(一)、独立键盘输入电路由于EDA实验箱有独立式键盘输入和矩阵式键盘输入电路,本实验就选择独立式键盘输入,本实验的密码是4位,实现在按键按下去灯亮时有一位数据输入,在按键按下去灯灭时没有有数据输入。

1、实现键盘输入的VHDL设计USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JPSR ISPORT ( KEY_IN1:IN STD_LOGIC_VECTOR(9 DOWNTO 0);DATA_N: OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END JPSR;ARCHITECTURE behav OF JPSR ISBEGINP_REG: PROCESS(KEY_IN1)BEGINCASE KEY_IN1 ISWHEN "0000000001"=>DATA_N<="0000";WHEN "0000000010"=>DATA_N<="0001";WHEN "0000000100"=>DATA_N<="0010";WHEN "0000001000"=>DATA_N<="0011";WHEN "0000010000"=>DATA_N<="0100";WHEN "0000100000"=>DATA_N<="0101";WHEN "0001000000"=>DATA_N<="0110";WHEN "0010000000"=>DATA_N<="0111";WHEN "010*******"=>DATA_N<="1000";WHEN "1000000000"=>DATA_N<="1001";WHEN OTHERS=>DATA_N<="1010";END CASE;END PROCESS P_REG ;END behav;2、异或电路的VHDL设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY or10 ISPORT ( Q:IN STD_LOGIC_VECTOR(9 DOWNTO 0);Y : BUFFER STD_LOGIC);END or10;ARCHITECTURE behav OF or10 ISBEGINP_REG: PROCESSVARIABLE N : STD_LOGIC;BEGINIF Q="0000000001" THEN N:='1';ELSIF Q="0000000010" THEN N:='1';ELSIF Q="0000000100" THEN N:='1';ELSIF Q="0000001000" THEN N:='1';ELSIF Q="0000010000" THEN N:='1';ELSIF Q="0000100000" THEN N:='1';ELSIF Q="0001000000" THEN N:='1';ELSIF Q="0010000000" THEN N:='1';ELSIF Q="010*******" THEN N:='1';ELSIF Q="1000000000" THEN N:='1';ELSE N:='0';END IF;Y<=N;END PROCESS P_REG ;END behav;该电路是为了后面模块的时钟而设计的。

(二)、控制电路KEY_IN2输入为“001”时即输出为“00001”时实现清零的功能,KEY_IN2输入为“”时即输出为“00100”时实现锁定的功能,KEY_IN2输入为“100”时即输出为“01000”时实现解锁的功能,KEY_IN3输入为“1”时即输出为“1”时实现确认的功能,KEY_IN4输入为“1”时即输出为“00010”时实现修改的功能。

KEY_IN5输入为“1”时即输出为“10000”时实现删除的功能。

1、控制电路的VHDL设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY KZ ISPORT (KEY_IN2:IN STD_LOGIC_VECTOR(2 DOWNTO 0);KEY_IN3:IN STD_LOGIC;KEY_IN4,KEY_IN5:IN STD_LOGIC; DATA_F: OUT STD_LOGIC_VECTOR(4 DOWNTO 0);DATA_FF: OUT STD_LOGIC_VECTOR(4 DOWNTO 0);DATA_FFFF: OUT STD_LOGIC_VECTOR(4 DOWNTO 0);FLEG_F:OUT STD_LOGIC);END KZ;ARCHITECTURE behav OF KZ ISSIGNAL FF,FG,F5:STD_LOGIC;SIGNAL Z:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINP_REG: PROCESS(FF,Z,FG,F5)BEGINZ<=KEY_IN2;FF<=KEY_IN3;FG<=KEY_IN4;F5<=KEY_IN5;CASE Z ISWHEN "001"=>DATA_F<="00001";WHEN ""=>DATA_F<="00100";WHEN "100"=>DATA_F<="01000";WHEN OTHERS=>DATA_F<="00000";END CASE;CASE FG ISWHEN '1'=>DATA_FF<="00010";WHEN OTHERS=>DATA_FF<="00000";END CASE;CASE FF ISWHEN '1'=>FLEG_F<='1';WHEN OTHERS=>FLEG_F<='0';END CASE;CASE F5 ISWHEN '1'=>DATA_FFFF<="10000";WHEN OTHERS=>DATA_FFFF<="00000";END CASE;END PROCESS;END behav;(三)、移位电路Y NYYN该模块实现右移的功能,且在此模块中实现清零功能。

1、 移位显示电路的VHDL 设计DF=00001时钟上升沿NA<="0000";NB<="0000"; NC<="0000"; ND<="0000";NA<=NB;NB<=NC;NC<=ND;ND<=DATA_N;DATAA<=NA; DATAB<=NB; DATAC<=NC; DATAD<=ND; DF=10000 CODEB<=NA; CODEC<=NB; CODED<=NC; CODEA<="0000"; DATAAA<=CODEA DATABB<=CODEB; DATACC<=CODEC; DATADD<=CODEDDATAAA<=NA;DATABB<=NB;DATACC<=NC;DATADD<=ND;NA<=DATAA; NB<=DATAB; NC<=DATAC; ND<=DATAD;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY YW ISPORT (CLK:IN STD_LOGIC;DATA_N:IN STD_LOGIC_VECTOR(3 downto 0);DATA_F:IN STD_LOGIC_VECTOR(4 downto 0);DATAA,DATAB,DATAC,DATAD:OUT STD_LOGIC_VECTOR(3 downto 0));END ENTITY;ARCHITECTURE ONE OF YW ISSIGNAL NA,NB,NC,ND:STD_LOGIC_VECTOR(3 downto 0);BEGINPROCESS(CLK,DATA_F)BEGINIF DATA_F="00001" THENNA<="0000";NB<="0000";NC<="0000";ND<="0000";ELSIF CLK'EVENT AND CLK='1' THENNA<=NB;NB<=NC;NC<=ND;ND<=DATA_N;END IF;DATAA<=NA;DATAB<=NB;DATAC<=NC;DATAD<=ND;END PROCESS;END ONE;2、移位删除电路的VHDL设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY YWSC ISPORT (DATA_F:IN STD_LOGIC_VECTOR(4 downto 0);DATAA,DATAB,DATAC,DATAD:IN STD_LOGIC_VECTOR(3 downto 0); DATAAA:OUT STD_LOGIC_VECTOR(3 downto 0);DATABB:OUT STD_LOGIC_VECTOR(3 downto 0);DATACC:OUT STD_LOGIC_VECTOR(3 downto 0);DATADD:OUT STD_LOGIC_VECTOR(3 downto 0));END ENTITY;ARCHITECTURE ONE OF YWSC ISSIGNAL NA,NB,NC,ND,CODEA,CODEB,CODEC,CODED:STD_LOGIC_VECTOR(3 downto 0); BEGINPROCESS(DATA_F)BEGINNA<=DATAA;NB<=DATAB;NC<=DATAC;ND<=DATAD;IF DATA_F="10000" THENCODEB<=NA;CODEC<=NB;CODED<=NC;CODEA<="0000";DATAAA<=CODEA;DATABB<=CODEB;DATACC<=CODEC;DATADD<=CODED;ELSEDATAAA<=NA;DATABB<=NB;DATACC<=NC;DATADD<=ND;END IF;END PROCESS;END ONE;(四)、比较电路N N Y N Y YY Y NN N YY N Y Y Y N该模块是在解锁的状态下将输入的4送来的原来设置的密码进行比较,全部相等就解锁,低电平“0”表示解锁,高低平表示开锁。

相关主题