Я написал verilog-модули для SR Latch, SR Flip Flop (путем создания экземпляра модуля SR Latch) и JK Flip Flop (путем создания экземпляра модуля SR Latch). Я использую версию Xilinx Vivado 2019 для моделирования и просмотра выходных сигналов. Модули SR Latch и SR Flip flop работают отлично, и я также получаю правильные выходные сигналы. Я попытался создать JK Flip Flop Module, создав модуль SR Latch. Но я просто не получаю выходные сигналы. Я не знаю, что происходит не так. Я также проверил логические выражения. Кажется, все в порядке. Может кто-нибудь указать на ошибку?
Вот коды.
Модуль защелки SR
module sr_latch(s, r, q, qbar);
input s, r;
output q, qbar;
nand(q, s, qbar);
nand(qbar, r, q);
endmodule
Модуль триггера SRс использованием SR Latch
module sr_ff(s, r, clk, q, qbar);
input s, r, clk;
output q, qbar;
reg t1, t2;
always @(posedge clk)
begin
t1 <= !(clk & s);
t2 <= !(clk & r);
end
sr_latch SRL(t1, t2, q, qbar);
endmodule
JK Flip Flop с использованием SR Latch
module jk_ff(j, k, clk, q, qbar);
input j, k, clk;
output q, qbar;
reg t1, t2;
always @(posedge clk)
begin
t1 <= !(clk & qbar & j);
t2 <= !(clk & q & k);
end
sr_latch SRL(t2, t1, q, qbar);
endmodule
JK Flip Flop Testbench
module jk_ff_tb();
wire q, qbar;
reg j, k, clk=1;
integer i;
jk_ff JKFF(j, k, clk, q, qbar);
always #25 clk = !clk;
initial
begin
for(i=0; i<4; i=i+1)
begin
{j, k} <= i; #50;
end
$stop;
end
endmodule