assign用阻塞赋值和非阻塞赋值的区别
时间: 2024-05-31 11:08:27 浏览: 270
Verilog阻塞与非阻塞赋值的区别
在Verilog中,assign语句用于在组合逻辑中把一个信号和一个表达式进行连接。assign语句可以使用阻塞赋值或非阻塞赋值。它们之间的区别如下:
阻塞赋值:
1. 在阻塞赋值中,右侧的表达式立即求值,然后将结果放在左侧的信号中,直到完成这个赋值语句之前,信号的值都不会改变。
2. 阻塞赋值使用“=”符号进行赋值,如:assign A = B + C; 。
3. 由于阻塞赋值是顺序执行的,所以在多个阻塞赋值之间可能存在竞争条件。这种情况下,后面的赋值语句可能会覆盖之前的赋值结果。
非阻塞赋值:
1. 在非阻塞赋值中,右侧的表达式不会立即求值,而是在下一个时钟周期中求值。结果会被放在左侧的信号中,但不会影响当前时钟周期内的其他操作。
2. 非阻塞赋值使用“<=”符号进行赋值,如:assign A <= B + C; 。
3. 非阻塞赋值的执行顺序是无关紧要的,因此不会发生竞争条件。这使得非阻塞赋值更适用于时序逻辑中。
总结:
阻塞赋值会立即求值,会影响当前逻辑,适用于组合逻辑中;而非阻塞赋值是在下一个时钟周期中求值,不会影响当前逻辑,适用于时序逻辑中。
阅读全文