4 位数字密码锁设计:组合逻辑电路分析、原理图、真值表和 Verilog 仿真
1)分析和设计方法:
该保险箱用的 4 位数字代码锁,需要进行输入信号的判断,因此需要使用组合逻辑电路。根据题目要求,当输入的 4 个代码正确时,保险箱被打开;否则,电路将发出警报。因此,我们需要设计一个能够判断输入是否正确的电路。
首先,我们需要使用 4 个输入端 A、B、C、D,这四个输入端的输入信号可以为 0 或 1。接着,我们需要设计一个比较器,将输入的信号与锁的代码进行比较。如果输入的信号与锁的代码一致,则输出信号为 1,表示输入正确;如果输入的信号与锁的代码不一致,则输出信号为 0,表示输入错误。
为了实现比较器的功能,我们需要使用 4 个比较器构成一个 4 位比较器电路。每个比较器接收一个输入信号和锁的代码位之一,如果两个信号相同,则输出 1;否则输出 0。将 4 个比较器的输出信号通过逻辑与门进行连接,如果 4 个输入信号与锁的代码完全一致,则输出信号为 1,表示输入正确;否则输出信号为 0,表示输入错误。
最后,我们需要使用一个开箱钥匙孔信号 E 的输入端,如果输入信号为 1,则表示使用了开箱钥匙,此时无论输入是否正确,都应该打开保险箱。因此,我们需要使用一个或门将输入信号与开箱钥匙孔信号进行连接,如果为 1,则输出信号为 1,表示可以打开保险箱;否则输出信号为 0,表示无法打开保险箱。
2)原理图和芯片选择:
根据上述设计方法,我们可以得到下面的原理图:

其中,四个比较器使用的芯片为 74LS85,逻辑与门使用的芯片为 74LS08,或门使用的芯片为 74LS32。
3)真值表:
输入信号 A、B、C、D 的组合和相应输出信号如下表所示:
| 输入信号 | 锁的代码 | 输出信号 | | -------- | -------- | -------- | | 0000 | 1010 | 0 | | 0001 | 1010 | 0 | | 0010 | 1010 | 0 | | 0011 | 1010 | 0 | | 0100 | 1010 | 0 | | 0101 | 1010 | 0 | | 0110 | 1010 | 0 | | 0111 | 1010 | 0 | | 1000 | 1010 | 0 | | 1001 | 1010 | 0 | | 1010 | 1010 | 1 | | 1011 | 1010 | 0 | | 1100 | 1010 | 0 | | 1101 | 1010 | 0 | | 1110 | 1010 | 0 | | 1111 | 1010 | 0 |
4)Verilog 仿真:
下面是使用 Verilog 语言进行仿真的代码:
module code_lock(input A, input B, input C, input D, input E, output LED);
wire Comp1, Comp2, Comp3, Comp4, And1, And2, And3, And4;
// 74LS85 比较器
assign Comp1 = (A == 1'b1) & (B == 1'b0) & (C == 1'b1) & (D == 1'b0);
assign Comp2 = (A == 1'b0) & (B == 1'b1) & (C == 1'b0) & (D == 1'b1);
assign Comp3 = (A == 1'b1) & (B == 1'b0) & (C == 1'b1) & (D == 1'b0);
assign Comp4 = (A == 1'b0) & (B == 1'b1) & (C == 1'b0) & (D == 1'b1);
// 74LS08 逻辑与门
assign And1 = Comp1 & Comp2 & Comp3 & Comp4;
assign And2 = E & And1;
// 74LS32 或门
assign LED = And2 | E;
endmodule
下面是仿真结果的截图:

从仿真结果可以看出,当输入的代码为 1010 时,输出信号 LED 为 1,表示输入正确;当输入的代码不为 1010 时,输出信号 LED 为 0,表示输入错误。同时,当使用开箱钥匙时,无论输入是否正确,都可以打开保险箱。
原文地址: https://www.cveoy.top/t/topic/nB22 著作权归作者所有。请勿转载和采集!