《数电设计保险箱代码锁.doc》由会员分享,可在线阅读,更多相关《数电设计保险箱代码锁.doc(5页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流数电设计保险箱代码锁【精品文档】第 5 页1. 题目:设计一个保险箱用的4位数字代码锁,该锁有规定的地址代码A、B、C、D四个输入端和一个开箱钥匙孔信号E的输入端,锁的代码由实验者自编。当用钥匙开箱时,如果输入的4个代码正确,保险箱被打开;否则,电路将发出警报(可用发光二极管亮表示)。 具体要求:1)参考有关资料,找出要使用的芯片; 2)写出设计过程,并画出原理图; 3)使用Verilog HDL进行仿真。 设计方案:本设计方案采用的芯片有数据选择器74X151,译码器74X139以及一些必要的逻辑门电路。F1端为开锁信号输出端,F2为报警输出端。其中密
2、码位从高到低依次为DCBA,密码的最高位D和钥匙端口E分别接译码器的两个输入端B A。译码器的输出端Y1N和Y3N分别接两片74X151的使能端,作为选择哪片数据选择器来工作。密码的CBA位分别接两片数据选择器的地址选择端。本次设计的密码为0011,当钥匙端E有效时,且密码输入为0011时。F1输出端输出D3端的高电平,即锁打开;F2输出为低电平,即不报警。当钥匙端E有效,但是密码不正确时。F1输出为低电平,即锁不打开;F2输出为高电平,即产生报警。当钥匙端E无效时,F1和F2都输出低电平,锁不打开。 设计原理图:由原理图得到的时序仿真图:Verilog HDL :module y74x139
3、(a,b,en,y);input en,a,b;output 3:0 y;reg 3:0 y;always (en or a or b) beginif(en)case(b,a)0:y=4b1110;1:y=4b1101;2:y=4b1011;3:y=4b0111;default y=4bx;endcaseelse y=4b1111;endendmodule module y74x151(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 or b or c or en) beginif(e
4、n=0)if(c=0&b=0&a=0) y=d0;else if(c=0&b=0&a=1) y=d1;else if(c=0&b=1&a=0) y=d2;else if(c=0&b=1&a=1) y=d3;else if(c=1&b=0&a=0) y=d4;else if(c=1&b=0&a=1) y=d5;else if(c=1&b=1&a=0) y=d6;else y=d7;else y=0;y_l=!y;endendmodulemodule mima(E,D,C,B,A,set,f1,f2);wire 3:0 y;input E,D,C,B,A;input 15:0 set;output f1,f2;y74x139(E,D,0,y);y74x151 m1(A,B,C,y1,set7:0,y1,y1_l);y74x151 m2(A,B,C,y3,set15:8,y2,y2_l);or (f1,y1,y2);assign f2=E&(f1);endmodule 由Verilog HDL得到的时序仿真: