《基于Xilinx Vivado的数字逻辑实验教程》学习笔记(二)

《基于Xilinx Vivado的数字逻辑实验教程》是电子工业出版社出版,廉玉欣、傅博雅、王猛、侯云鹏编著的。

P172 例5-2 带有清零和置位端的D触发器

程序5.2:带有清零和置位端的D触发器Verilog程序。

module flipflopcs
    (
    input  wire clk,
    input  wire D,
    input  wire S,
    input  wire R,
    output      Q,
    output      notQ
    );
// ------------------------------------------------------ //    
    wire f1;
    wire f2;        
    wire f3;
    wire f4; 
    wire f5;
    wire f6; 
// ------------------------------------------------------ //    
    assign f1   = ~(f4 & f2 & ~S);
    assign f2   = ~(f1 & f5 & ~R);
    assign f3   = ~(f6 & f4 & ~S);
    assign f4   = ~(f3 & clk & ~R);
    assign f5   = ~(f4 & clk & f6 & ~S);
    assign f6   = ~(f5 & D & ~R);
    assign Q    = f1;
    assign notQ = f2;
// ------------------------------------------------------ //
endmodule

程序5.2:带有清零和置位端的D触发器Verilog测试程序。

module tb_flipflopcs( );
// ------------------------------------------------------ //
    reg clk;
    reg D;
    reg S;
    reg R;
    wire Q;
    wire notQ;
// ------------------------------------------------------ //
flipflopcs ins_flipflopcs
    (
    .clk(clk),
    .D(D),
    .S(S),
    .R(R),
    .Q(Q),
    .notQ(notQ)
    );
// ------------------------------------------------------ //
    initial
    begin
        clk = 0;
        R   = 0;
        S   = 0;
        D = 0;
        forever
        begin
            #40 D = 1;
            #40 D = 0;    
        end                
    end
// ------------------------------------------------------ //
    always #330 R = 1;
    always #480 R = 0;
    always #280 S = 1;
    always #330 S = 0;
    always #380 S = 1;
    always #480 S = 0;
// ------------------------------------------------------ //
    always #20 clk <= ~clk; // 半周期为20ns,全周期为40ns的一个信号
// ------------------------------------------------------ //
endmodule

仿真波形图

《基于Xilinx Vivado的数字逻辑实验教程》学习笔记(二)_第1张图片

你可能感兴趣的:(清零端,置位端,D触发器,Verilog,FPGA)