四位数字密码锁设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学
数字电路课程设计报告题目:保险箱用四位数字代码锁
院系:
专业:
学号:
学生姓名:
指导教师:
保险箱用四位数字代码锁
一.设计要求:
设计一个保险箱用的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综合后截屏所得)
总体逻辑电路图
2-4译码器逻辑电路图
151多路复用器逻辑电路图
D C B A LATCH LED
0 0 0 0 0 1
0 0 0 1 0 1
0 0 1 0 0 1
0 0 1 1 0 1
0 1 0 0 0 1
0 1 0 1 1 0
0 1 1 0 0 1
0 1 1 1 0 1
1 0 0 0 0 1
1 0 0 1 0 1
1 0 1 0 0 1
1 0 1 1 0 1
1 1 0 0 0 1
1 1 0 1 0 1
1 1 1 0 0 1
1 1 1 1 0 1
假设用钥匙开锁(即钥匙孔信号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;
endcase
else y=4'b0000;
end
endmodule
module 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)
begin
if(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;
end
endmodule
module 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
以下为仿真得到的时序图: