【 Verilog HDL 】进一步了解 Verilog HDL 的赋值运算符

版权声明:本博客内容来自于个人学习过程中的总结,参考了互联网以及书本、论文等上的内容,仅供学习交流使用,如有侵权,请联系我会重写!转载请注明地址! https://blog.csdn.net/Reborn_Lee/article/details/82772130

目录

连续赋值符号

阻塞赋值符号

非阻塞赋值

映射赋值符号

位置赋值


以前已经写过博文专门介绍阻塞赋值和非阻塞赋值运算符了,见博文:【Verilog HDL】赋值语句之阻塞赋值方式与非阻塞赋值方式,可今天看《FPGA之道》这本书时,回首过去,觉得说得还不够,这里再一次总结下 Verilog 中的赋值运算符。其中包括阻塞赋值和非阻塞赋值,感觉理解更进一步了。

包括对阻塞以及非阻塞这些字眼的理解,还有其他字眼的理解,这本书可谓真是通俗易懂,可惜买不到珍藏了。


连续赋值符号

连续赋值(continues assignments),它常配合assign关键字使用,仅能用于线网类型的变量赋值,例如:

input b;
wire a;
assign a = b;

当然也可以这样写:

input b;
wire a = b;

相比之下,我们可以称带有assign关键字的赋值方式为显式地连续赋值,而简化后的赋值方式为隐式地连续赋值。

为什么叫连续赋值呢?

这是因为该赋值语句所描述的硬件功能,赋值电路不需要等待任何事件的触发,也不会受任何事件的影响而中断,会连续不断地执行(当然了,在仿真的时候显然不能这样,否则将进入仿真死循环,故这里不是描述的仿真中的用法)。显然,这种模式只能描述组合电路,故只能用于线网类型变量的赋值。


阻塞赋值符号

阻塞赋值主要用于组合逻辑,它只能操作寄存器类的变量,赋值符号为“=”。一般来说,当我们期望变量被综合成为FPGA中的硬件连线时,我们常常会对变量用阻塞赋值,而对应的赋值语句一般要写在表示组合逻辑的always程序段中。在always程序段中,语句的执行一般都是顺序的,阻塞赋值符号的作用就是保证上一条语句已经执行并且赋值操作完成后才开始下一条语句的执行,也因此得名为阻塞赋值。例如:

always@(c)
begin
    b = c;
    a = b;
end

如何理解上面的这一个逻辑块功能呢?

如果当前状态 c为逻辑1,b为逻辑1,a也为逻辑1。若此时 c 变为逻辑0,那么在本次 c 改变后,b的逻辑为0,a也为逻辑0。从硬件实现上说,上述代码就是三段首尾相连的硬件连线,其实就是一根线,试想一下,如果连线的输入端值改变了,那么整个连线的值肯定也都跟着变了,所以c处的值传给b,同时经过b也传给了a;

从阻塞赋值符号的作用来说,由于在第1条语句的赋值完成以后才开始执行第2条语句,所以第2条语句中的b是b的新值。


非阻塞赋值

非阻塞赋值主要用于时序逻辑,它也只能操作寄存器类的变量,赋值符号为“<=”。一般来说,当我们期待变量被综合为FPGA中的寄存器时,我们常常会对变量用非阻塞赋值符号,当然了,对应的赋值语句也应该写在表示时序逻辑的always块内。在always程序段中,语句的执行一般都是顺序的,非阻塞赋值符号的作用就是可以在上一条语句已执行但是赋值操作还没有完成前就开始下一条语句的执行。例如:

always@( posedge clk )
begin
    b <= c;
    a <= b;
end

如果在上一次时钟上升沿触发后,b为逻辑1,a为逻辑1。若此时c保持为逻辑0,那么在本次时钟上升沿触发后,b为逻辑0,a为上一次b的值,即为逻辑1。从硬件实现上来说,上述代码就是一个移位寄存器,每一次时钟触发后,c处的值传给b,b处的值传给a,值的传递只能跨越1个寄存器。

从非阻塞赋值符号的作用上说,由于第一条语句的赋值还没有完成时,就开始执行第2条赋值语句,所以第2条语句中的b仍然使用的是b的旧址。


映射赋值符号

所谓的映射赋值就是模块的实例化中,端口之间的一种对应关系。例如:

wire line0, line1, result;
cellAnd m0( .a(line0), .b(line1), .c(result) );

无论端口的方向是 input 还是 output,都一律使用“.”来映射赋值,至于赋值的方向,编译器会根据上下文自己推断。


位置赋值

位置赋值和映射赋值一样,都是实例化中端口的一种对应关系,不过此时是位置严格对应,而不适用“.”了而已。例如:

cellAnd m0( line0, line1, result );

不推荐这种赋值方式,因为映射赋值是于位置无关的,这里呢?还必须位置严格对应,容易出错。

猜你喜欢

转载自blog.csdn.net/Reborn_Lee/article/details/82772130
今日推荐