以下是一个简单的4位向上计数器verilog代码,我使用4位加法器verilog代码(一个工作文件,经过测试)。我碰巧当我包含加法器实例化时,时钟停止工作,因此整个代码停止工作。任何可能出错的建议????
module four_bit_counter(
output reg [3:0] a
);
reg clock ;
reg [3:0] temp;
initial
begin
a = 4'b0000;
clock =0 ;
temp = 4'b0000; // Remove this
end
four_bit_adder add(.a(temp), .b(4'b0001), .s(a)); // four_bit_adder add(.a(a), .b(4'b0001), .s(temp));
always begin
#10 clock = ~clock;
end
always @(posedge clock)
begin
assign temp = a; // a<=temp;
end
endmodule
// 4位加法器代码:
模块four_bit_adder(
input [3:0] a,
input [3:0] b,
output reg [3:0] s // Type wire
);
wire [3:0] sum;
wire [3:0] c ;
full_adder f1( .a(a[0]) , .b(b[0]), .cin(1'b0), .s(sum[0]), .c(c[0]) );
full_adder f2( .a(a[1]) , .b(b[1]), .cin(c[0]), .s(sum[1]), .c(c[1]) );
full_adder f3( .a(a[2]) , .b(b[2]), .cin(c[1]), .s(sum[2]), .c(c[2]) );
full_adder f4( .a(a[3]) , .b(b[3]), .cin(c[2]), .s(sum[3]), .c(c[3]) );
always begin
assign s = sum;
end
endmodule
答案 0 :(得分:0)
发现错误。将verilog代码视为带有变量的普通C代码。在硬件级别考虑它时可以解决问题。我评论了为使其发挥作用而需要做的改变。