电子科技大学□数字电路课程设计报告□题目:保险箱用四位数字代码锁院系:专业:学号:学生姓名:指导教师:保险箱用四位数字代码锁□.设计要求:设计一个保险箱用的 4 位数字代码锁,该锁有规定的地址代码 A、B、C、D4 个输入端和一个开箱钥匙孔信号 E 的输入端,锁的代码由实验者自编。当用 钥匙开箱时,如果输入的 4 个代码正确,保险箱被打开;否则,电路将发出 警报(可用发光二极管亮表示)。具体要求:1)写出改组合逻辑电路的分析和设计方法;2)参考有关资料画出原理图,找出要使用的芯片; 3)画出真值表以验证是否真确; 4)使用 Verilog HDL 语言进行仿真。二.设计方案:1.该组合逻辑电路的分析和设计方法:本设计方案中我采用多路复用器,2-4 译码器,LED 灯和或门等器件来完成 设计。用 2 个 74x151 多路复用器扩展为 16-2 多路复用器,题目中的地址代码A、 B、C、D4 个输入端作为扩展的多路复用器的地址端,D0-D8 作为数据端。开箱钥 匙孔信号 E 作为 2-4decoder 的使能端。设计开锁的正确代码为 0101,当用钥匙 开锁(即 2-4decoder 的使能端有效)时,如果正确输入开锁密码:0101,则输 出 Y 为逻辑高电平,Y’为逻辑低电平,锁被打开,而 LED 灯不会亮(即不会报 警);如果输入的密码错误或者钥匙孔信号无效,则输出 Y 为逻辑低电平,Y’为 逻辑高电平,锁无法打开,逻辑高电平 Y’驱动 LED 灯亮,产生报警效果。2.设计原理图:(以下电路图为用 Quartus II 综合后截屏所得)4 hθ - — DATAAMUX21 DECODER2-4译码器逻辑电路图DCBALATCHLED000001000101001001001101010001010110011001011101100001100101101001101101110001110101111001111101假设用钥匙开锁(即钥匙孔信号 E有效)时的真值表4.Verilog HDL 语言仿真:程序代码:module e2_4decoder(i,en,y);input en;input [1:0] i;output [3:0] y;reg [3:0] y;always @(i or en)begin if(en)case(i) 0:y=4'b0001; 1:y=4'b0010; 2:y=4'b0100; 3:y=4'b1000;endcaseelse y=4'b0000; endendmodulemodule mutiplexer16_1(a,b,c,en,d,y,y_l);input a,b,c,en;input [7:0] d;output y,y_l;reg y,y_l;always @(a,b,c,en)beginif(en==0)if(c==0&b==0&a==0)y=d[0];else if(c==0&b==0&a==1)y=d[1];else if(c==0&b==1&a==0)y=d[2];else if(c==0&b==1&a==1)y=d[3];else if(c==1&b==0&a==0)y=d[4];else if(c==1&b==0&a==1)y=d[5];else if(c==1&b==1&a==0)y=d[6];else y=d[7];else y=0;y_l=!y;endendmodulemodule liuyong(A,B,C,D,set,LED,LATCH);wire [3:0] y;wire [1:0] i;input A,B,C,D;input [15:0] set;output LED,LATCH;assign i[1]=0;assign i[0]=D;e2_4decoder u1(i,1,y);mutiplexer16_1 m1(A,B,C,!y[0],set[7:0],y1,y1_l);mutiplexer16_1 m2(A,B,C,!y[1],set[15:8],y2,y2_l);or (LATCH,y1,y2);not (LED,LATCH);endmodule以下为仿真得到的时序图: