我是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
答案 0 :(得分:1)
在Verilog中使用门原语时,输出始终是实例化列表中的第一个值。因此,您在第一级NAND门i
和j
中作为输入,而不是输出。
您需要确保门的输出是第一个:
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