求高手,帮忙分析一下下面的FPGA程序,为什么out 加至1000 后直接变成了0001,而不是1001,高位为什么会变

module test(clk,out);
input clk;
output [3:0]out;
reg [3:0]out;
reg next_bit;
always @ (posedge clk)//8 ci
if(1)
out <= out[2:0]+4'b0001;

always next_bit =out[3];
endmodule

1 那个if(1) 完全没必要

2 out <= out[2:0]+4'b0001; //这一句是用一个三位数与四位数相加,这时候应该会导致out溢出

3 第二个always 里面的内容 next_bit =out[3]; 可以跟第一个写到一起,那么前面的 out <= out[2:0]+4'b0001 也可以改成out[3:0] ,这里我假定你在第二个always里要做的是把运算后的out值最高位赋值给next_bit

4 请养成习惯 使用 begin end ,就像C语言的'{' 与' }'一样
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答
大家正在搜