2015-05-05 61 views
-2

這裏是我的代碼:產生時鐘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」值!

回答

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

+0

我不知道這是不是一個有效的輸入,但我的Verilog代碼並不顯示!我不知道爲什麼。 – Farhood

+0

它無效的原因是輸出無效。這並不意味着輸出會產生未知(X),但輸出**不能**,也不應該使用,因爲結果是不可預測的。 – wilcroft