具有使能和异步复位功能的 4 位寄存器
4 bit register with enable and asynchronous reset
我正在为一个具有启用和异步复位功能的 4 位寄存器建模。该寄存器具有三个一位输入,即 clk、复位和使能,一个四位输入,D 和一个使用 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.
我没有发现代码有任何问题。
第 9 行的 Q <= 4’b0;
应更改为 Q <= 4'b0;
.
我正在为一个具有启用和异步复位功能的 4 位寄存器建模。该寄存器具有三个一位输入,即 clk、复位和使能,一个四位输入,D 和一个使用 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.
我没有发现代码有任何问题。
Q <= 4’b0;
应更改为 Q <= 4'b0;
.