T触发器Verilog

T触发器Verilog,verilog,modelsim,Verilog,Modelsim,我无法从D触发器中获得T触发器,即使它直接来自课堂笔记,也无法在Modelsim中工作。一定是我忽略了一些简单的事情 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

我无法从D触发器中获得T触发器,即使它直接来自课堂笔记,也无法在Modelsim中工作。一定是我忽略了一些简单的事情

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
模块D\u FF(q、Clk、复位n、D);
输出q;
输入时钟,复位,d;
reg q;
始终@(posedge重置或negedge时钟)
如果(~reset\n)
qHi有两个问题:
1.您的重置处于低激活状态,因此它应该对时钟的下降沿敏感。
2.那个VCC是什么?你应该在那里用d。
这是正确的版本

D_FF:


T触发器的功能不正确:Greg是正确的,还有其他一些东西。首先,您的DFF应该使用
negedge reset\n
,因为它是一个断言的低重置。其次,您正在将DFF的
d
线连接到不存在的导线
Vcc
(除非在其他地方将其定义为常量
1'b1
,但这仍然没有帮助)
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
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