verilog阻塞/非阻塞赋值
时间: 2023-07-06 17:36:52 浏览: 72
在Verilog中,阻塞赋值和非阻塞赋值是两种不同的信号赋值方式。
阻塞赋值是通过“=”号来实现的,它会立即地将右侧的表达式的值赋给左侧的信号,然后暂停执行直到该赋值语句执行完毕。因此,它会阻塞后面的语句执行,直到该赋值语句完成。
非阻塞赋值是通过“<=”号来实现的,它不会立即地将右侧的表达式的值赋给左侧的信号,而是将该赋值语句放入一个队列中,等到所有的阻塞赋值语句执行完毕之后才会执行。因此,它不会阻塞后面的语句执行,即使在其后面有其他非阻塞赋值语句也不会受到影响。
一般来说,阻塞赋值用于组合逻辑,而非阻塞赋值用于时序逻辑,因为时序逻辑在同一个时钟周期内会有多个信号的赋值,并且它们之间的顺序是非常重要的。而非阻塞赋值可以保证多个时序逻辑语句之间的顺序不会发生改变,从而保证了设计的时序正确性。
相关问题
verilog中阻塞赋值和非阻塞赋值
在Verilog中,阻塞赋值和非阻塞赋值是两种不同的赋值方式。
阻塞赋值(blocking assignment)使用“=”符号进行赋值,在同一时间步中,按照代码顺序执行。这意味着在当前语句执行完成之前,下一条语句无法执行。阻塞赋值会立即更新信号的值。
例如:
```
a = b; // 阻塞赋值
```
非阻塞赋值(non-blocking assignment)使用“<=”符号进行赋值,允许并行执行。非阻塞赋值将在当前时间步结束后才更新信号的值。这意味着所有的非阻塞赋值语句都会在当前时间步结束之后同时执行。
例如:
```
a <= b; // 非阻塞赋值
```
在时序逻辑中,非阻塞赋值常用于描述时钟边沿触发的寄存器或者存储单元的更新,而阻塞赋值则用于描述组合逻辑。
需要注意的是,阻塞赋值和非阻塞赋值只在时序语句(always、initial块)中使用,不能在组合逻辑(combinational logic)中使用。
verilog非阻塞赋值
Verilog 非阻塞赋值(Non-blocking Assignment,简称“<=”)是一种并发赋值语句,它可以用于描述时序逻辑。与阻塞赋值(Blocking Assignment)不同的是,非阻塞赋值语句的执行不会直接影响到当前的时钟周期,而是在下一个时钟周期开始时才会生效。
例如,下面是一个简单的 Verilog 代码片段,使用非阻塞赋值语句来描述一个 D 触发器:
```
always @(posedge clk) begin
q <= d;
end
```
在上述代码中,当时钟上升沿到来时,非阻塞赋值语句 `q <= d;` 会被执行,将输入信号 `d` 的值赋给输出信号 `q`。由于这是一个非阻塞赋值语句,因此该操作不会直接影响到当前时钟周期的输出,而是在下一个时钟周期开始时生效。
需要注意的是,当出现多个非阻塞赋值语句时,它们的执行顺序是不确定的,因此需要使用阻塞赋值语句(Blocking Assignment,简称“=”)来保证执行顺序。例如,下面是一个简单的 Verilog 代码片段,使用阻塞赋值语句和非阻塞赋值语句来描述一个 4 位计数器:
```
always @(posedge clk) begin
count <= count + 1; // 非阻塞赋值语句
if (count == 4'd15) begin
reset = 1; // 阻塞赋值语句
count <= 0; // 非阻塞赋值语句
end else begin
reset = 0; // 阻塞赋值语句
end
end
```
在上述代码中,首先使用非阻塞赋值语句 `count <= count + 1;` 来实现计数器的计数功能。当计数器的值达到 15 时,使用阻塞赋值语句 `reset = 1;` 将复位信号置为 1,并使用非阻塞赋值语句 `count <= 0;` 将计数器清零。最后,使用阻塞赋值语句 `reset = 0;` 将复位信号置为 0,以便下一次计数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)