为什么一个always块里面只让对一个变量进行操作
一个always里面可以对多个变量赋值。
但是可以综合的代码,一个变量只能在一个always里面赋值。(不综合的代码随便写)
这样写的代码易于管理和维护
谢谢!
哦,这样的啊我以为还有什么特别的好处呢像二楼说的在一个always块里对多个变量进行操作是不是就不可综合呢?
在一个always模块里对多个变量是可以综合的,这你可以自己编个简单代码试试
因为我之前一直是在一个always块里写多个语句的也是可以综合的,但是今天突然有人跟我这么说,我还以为有什么特别之处呢,谢谢啊
一个always里面可以对多个变量赋值;
但是一个变量只能在一个always里面赋值,如果是在多个always里面对其赋值会是出现多驱动的情况!
正解!
可以对多个变量赋值,也可以综合,只是要加上 begin ... end
例如:always @(posedge clk) begin
if(rst) begin
a<= 1'b0;
b<= 1'b0;
end
else begin
a<= 1'b1;
b<= 1'b1;
end
end
一个always块里只写一个信号,也有利于避免生成latch。
一个always可以对多个变量赋值,但是不可以在多个always对同一个变量赋值。
不过还是建议一个always对相关变量赋值,利于代码维护。
毕竟HDL是并行执行的,变量写在一个always里面,便于修改和理解。
