Создание модуля JK Flip Flop с использованием модуля SR Flip Flop в Verilog - PullRequest
0 голосов
/ 08 ноября 2019

Я написал 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
...