四位数字密码锁设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

以下为仿真得到的时序图:

相关文档
最新文档