Вот мой код:Генерировать синхронизированный 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=1
и r=1
1. Если я использую другой испытательный стенд (например, добавление q=0
в начале), он делает много значений «X»!
Я знаю, что это не действительный вход, но мой Verilog код не показывает, что! Я не знаю почему. – Farhood
Причина, по которой это неверно, заключается в том, что вывод недействителен. Это не означает, что на выходе будет отображаться неизвестный (X), но вывод ** не может ** и не должен использоваться, поскольку результат непредсказуем. – wilcroft