Я пишу код verilog для 4-битной S R защелки. Я считал защелку асинхронной. Поэтому я не включил часы. Сначала я написал код для 1-битной защелки S R, затем я использовал этот код для 4-битной защелки S R.
module srlatch (S, R, En, Q, Qc);
input S, R;
input En;
output Q, Qc;
reg Q,Qc;
always@(*)
begin
if(En)
begin
Q = ~(R | Qc);
Qc = ~(S | Q);
end
end
endmodule
module srlatch4 (S, R, En, Q, Qc);
input [3:0] S, R;
input En;
output [3:0] Q, Qc;
srlatch s1(S[0], R[0], En, Q[0], Qc[0]);
srlatch s2(S[1], R[1], En, Q[1], Qc[1]);
srlatch s3(S[2], R[2], En, Q[2], Qc[2]);
srlatch s4(S[3], R[3], En, Q[3], Qc[3]);
endmodule
В чем проблема? Он не проходит контрольный пример, т.е.
Q (t) = 0x0x, Qc (t) = 1010 и S = 1100, R = 0000, En = 0, Q (t + 1) = 0x0x, Qc (t + 1) = 1010