产生具有四个与非门的时钟SR锁存器

时间:2015-05-05 18:47:42

标签: verilog

这是我的代码:

`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"值!

2 个答案:

答案 0 :(得分:0)

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

另见:https://electronics.stackexchange.com/questions/62501/why-is-s-1-r-1-state-forbidden-in-rs-flip-flop?rq=1

答案 1 :(得分:0)

由于q门的建模方式,当q_bars的输入均为1时,rnand的输出均为1。请参阅IEEE Std 1800-2017第28.4节以及,nand,nor,或,xor和xnor门。如果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门力i = 0。

类似地,当s = 1时,n2 nand门力j = 0。

当i = 0时,n3nand将力q_bar设为1,与q无关。

同样,当j = 0时,n4 nand门将q设为1,而与q_bar无关。

如果这不是您想要的行为,则需要更改您的Verilog代码以获取所需的内容。在这种情况下,您没有描述您想要的东西。