首页 > 解决方案 > 具有启用和异步复位功能的 4 位寄存器

问题描述

我正在建模一个具有启用和异步复位的 4 位寄存器。该寄存器有 3 个一位输入,即 clk、reset 和 enable、1 个四位输入、D 和 1 个使用 verilog 的四位输出 Q。这是我的设计和测试平台。设计


    module fourbitreg(D,clk,reset,enable, Q);
    input[3:0] D; // Data input
    input clk,reset,enable;
    output[3:0] Q; // output Q
    reg[3:0] Q;
    always @(posedge clk or posedge reset)
    begin
            if(reset)
                    Q <= 4’b0;
            else if (enable)
                    Q <= D;
    end
    endmodule

试验台


    module four_bitreg_tb;
      reg [3:0] D;
    reg clk,reset,enable;
    wire[3:0]Q;
    always #5 clk = ~clk;
      fourbitreg uut(.D(D),.clk(clk),.reset(reset),.enable(enable),.Q(Q));
    initial begin
        $monitor("time=",$time,"D=%b  reset =%d  enable =%d  Q=%b",D,reset,enable,Q);
        $dumpfile("dump.vcd");
        $dumpvars;
        reset <= 0;
        enable <= 0;
        D <=  4'b0000; 
        #5 
        D <= 4'b0001; 
        reset <= 0;
        enable <= 1;
        #5
        D <= 4'b0010; 
        reset <= 1;
        enable <= 0;
        #5
        D <= 4'b0011; 
        reset <= 1;
        enable <=1;
        #5
        D <= 4'b0100; 
        reset <= 0;
            enable <= 0;
        #5
        D <= 4'b0101; 
        reset <= 0;
            enable <= 1;
        #5
        D <= 4'b0110; 
        reset <= 1;
            enable <= 0;
        #5
        D <= 4'b0111; 
        reset <= 1;
            enable <= 1;
        #5
        D <= 4'b1000; 
        reset <= 0;
            enable <= 0;
        #5
        D <= 4'b1001; 
        reset <= 0;
            enable <= 1;
        #5
        D <= 4'b1010; 
        reset <= 1;
            enable <= 0;
        #5
        D <= 4'b1011; 
        reset <= 1;
            enable <= 1;
        #5
        D <= 4'b1100; 
        reset <= 0;
            enable <= 0;
        #5
        D <= 4'b1101; 
        reset <= 0;
            enable <= 1;
        #5
        D <= 4'b1110; 
        reset <= 1;
            enable <= 0;
        #5
        D <= 4'b1111;
        reset <= 1;
            enable <= 1;
        #20 $finish;
    end
    endmodule

编译代码时出现以下错误。


    4bitreg.v:9: syntax error
    I give up.

我没有发现代码有任何问题。

标签: verilogfpga

解决方案


Q <= 4’b0;第 9 行应更改为Q <= 4'b0;.


推荐阅读