带有四个NAND门的时钟SR锁定的输出是出乎意料的



这是我的代码:

`timescale 1ns/1ns
module sr_latch (input s,r,clk ,output q,q_bar,w,w_bar);
    wire i,j;
    assign w=q;
    assign w_bar=q_bar;
    nand#7(i , r , clk);
    nand#7(j , s , clk);
    nand#7(q_bar,q,i);
    nand#7(q , q_bar , j);
endmodule
module tb_sr_latch();
    reg s,r,clk;
    wire q,q_bar,w,w_bar;
    sr_latch op( s , r , clk , q , q_bar ,w,w_bar);
    initial begin 
        clk=1; s=0 ; r=1; 
        #50 r=0;
        #50 s=1;
        #50 r=1;
    end
endmodule

我不知道为什么s=1r=1的输出为1。如果我使用另一个测试台(例如,在开始时添加q=0),它会产生很多" X"。值。

sr输入均为1时,qq_bar输出均为1,因为nand门的建模方式。请参阅IEEE STD 1800-2017,第28.4 和Nand,Nor,or,of of Xor和Xnor Gates 的第28.4节。如果nand门的两个输入均为1,则输出为0。如果两个输入为0,则输出为1。

我添加了实例名称以澄清我的解释:

nand #7 n1 (i , r , clk);
nand #7 n2 (j , s , clk);
nand #7 n3 (q_bar , q , i);
nand #7 n4 (q , q_bar , j);

由于clk = 1,当r = 1时, n1 nand gate力i = 0。

同样,当s = 1时, n2 nand栅极力j = 0。

当i = 0时, n3 nand栅极力 q_bar to 1,无论 q

同样,当j = 0时, n4 nand栅极力 q至1,无论 q_bar

如果这不是您想要的行为,则需要更改Verilog代码才能获得所需的一切;在这种情况下,您没有描述您想要的。

我不相信r = s = 1是(门控)sr闩锁的有效输入。在该状态下,任何输出都是无效的。SR闩锁的真相表:https://electronics.stackexchange.com/questions/163164/sr-flip-fllop-flop-nor-or-nand

另请参阅:https://electronics.stackexchange.com/questions/62501/why-is-s-s-1-s-s-s-nate-forbidden-forbidend-in-rs-in-rs-flip-flop?rq = rq = 1<>

最新更新