2016-02-02 15 views
-2

我一直在桌上打了幾個小時,因爲這應該很簡單。即使在課堂筆記直接發佈後,我也無法從D觸發器獲得T-Flipflop,以便在Modelsim中工作。這一定很簡單,我只是俯瞰。T FlipFlop Verilog

module D_FF (q, Clk, reset_n,d); 
    output  q; 
    input  Clk, reset_n, d; 
    reg  q; 

    always @(posedge reset_n or negedge Clk) 
    if (~reset_n) 
     q <= 1'b0; 
    else 
     q <= d; 
endmodule 

module T_ff (q, Clk, reset_n); 
    output q; 
    input Clk, reset_n; 
    wire d; 

    D_FF DFF0 (q, Clk, reset_n, Vcc); 
    not n1 (d,q); 

endmodule 
+0

你有一個T觸發器的功能不正確:https://en.wikipedia.org/wiki/Flip-flop_%28electronics%29#T_flip-flop – Greg

+0

格雷格是正確的,以及其他一些事情。首先,你的DFF應該使用'negedge reset_n',因爲它是一個斷言的低復位。其次,你將DFF的'd'線連接到不存在的線'Vcc'(除非在別處被定義爲常量'1'b1',但這仍然不起作用) – Unn

回答

0

喜有兩個問題:1。 您復位爲低電平有效,所以它應該是在時鐘的下降沿敏感。 2.什麼是VCC?你應該在那裏使用d。 這裏是正確的版本

D_FF:

module D_FF (q, Clk, reset_n,d); 
    output  q; 
    input  Clk, reset_n, d; 
    reg  q; 

always @(negedge reset_n or posedge Clk) 
    if (~reset_n) 
     q <= 1'b0; 
    else 
     q <= d; 
endmodule 

T_FF:

module T_FF (q, Clk, reset_n); 
    output q; 
    input Clk, reset_n; 
    wire d; 

    D_FF DFF0 (q, Clk, reset_n, d); 
    not n1 (d,q); 

endmodule