以上代码只有一个问题,这一句:in <= in >> 1;不允许对非寄存器进行过程赋值,请问如何用verilog解决?
时间: 2024-01-22 11:19:57 浏览: 73
Verilog 中也不能直接对非寄存器进行赋值。可以使用一个临时变量来保存右移后的值,然后再将这个临时变量赋值给 `in`。
下面是修改后的 Verilog 代码:
```verilog
module test(input [7:0] in, output [7:0] out);
reg [7:0] temp;
always @(*) begin
temp = in >> 1;
out = in - temp;
end
endmodule
```
这样,我们就可以避免对非寄存器进行赋值了。
阅读全文