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)原理图和芯片选择:

根据上述设计方法,我们可以得到下面的原理图:

image-20211103171532027

其中,四个比较器使用的芯片为 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

下面是仿真结果的截图:

image-20211103172036367

从仿真结果可以看出,当输入的代码为 1010 时,输出信号 LED 为 1,表示输入正确;当输入的代码不为 1010 时,输出信号 LED 为 0,表示输入错误。同时,当使用开箱钥匙时,无论输入是否正确,都可以打开保险箱。


原文地址: https://www.cveoy.top/t/topic/nB22 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录