用verilog描述带时钟的SR Latch

时间:2014-12-04 15:12:46

标签: verilog

我是verilog编码的新手。我只是试图在详细描述中描述一个带有NAND门的时钟SR锁存器,但是一旦我模拟它,所有输出都变为Z而且我不会#39;不知道原因是什么?有任何想法吗?? 提前致谢... verilog代码和测试平台:

module CLOCKED_SR(input clk, s, r, output q, qbar);
  wire i, j;
  nand #20 (s, clk, i);
  nand #20 (r, clk, j);
  nand #20 (qbar, j, q);
  nand #20 (q, i, qbar);
endmodule

module Q1_test();
  reg clk, s, r;
  wire qbar, q;
  CLOCKED_SR T_SR(clk, s, r, qbar, q);
  initial begin
    #20 clk = 1;
    #50 s = 0; r = 0;
    #50 s = 0; r = 1;
    #50 s = 1; r = 0;
    #50 $stop;
  end
endmodule

1 个答案:

答案 0 :(得分:1)

在Verilog中使用门原语时,输出始终是实例化列表中的第一个值。因此,您在第一级NAND门ij中作为输入,而不是输出。

您需要确保门的输出是第一个:

module CLOCKED_SR(input clk, s, r, output q, qbar);
  wire i, j;
  nand #20 (i, clk, s);
  nand #20 (j, clk, r);
  nand #20 (qbar, j, q);
  nand #20 (q, i, qbar);
endmodule