Verilog HDL 使用笔记2--赋值语句的使用

什么是过程赋值语句:
位于过程块中的赋值语句称之为过程赋值语句,过程语句只能对寄存器类的量进行赋值。
左端必须是寄存器类的变量(reg,integer,real,time)对于多位宽的寄存器变量(矢量),还可以只对其中的某一位或某几位进行赋值。对于存储器类,则只能通过选定的地址单位,对某个字进行赋值。还可以将前述各类变量用连接符拼接起来,构成一个整体作为过程赋值的左端。
过程赋值语句的右端可以是由各种运算符和操作数构成的任何有效表达式。
对各种形式寄存器变量进行过程赋值的例子:

reg_a=8'b10110110;//对一个8位寄存器赋值
reg_a[3]=1'b0;//对寄存器某一位赋值
reg[7:4]=4'b1101;//对寄存器的其中几位赋值
mem_a[address]=8'h5d;//对由address地址指定的存储器单元赋值
{carry,sum}=reg_a+reg_b;//通过连接算符构成一个整体赋值

什么是连续赋值语句
与上述过程赋值不同,主要体现有一下几点:
1、赋值对象的不同:连续赋值语句用于对连线变量的赋值;过程赋值语句完成对寄存器类变量的赋值。
2、赋值过程实现方式不同:连线变量一旦被连续赋值语句赋值后,赋值语句右端表达式的信号有任何变化,都随时反映到左端的连线变量中;过程赋值语句只有在语句被执行到时,赋值过程才进行一次,且赋值过程的具体执行时刻还收到定时控制及延时模式等多方面因素的影响。
3、语句出现位置不同:连续赋值语句不能出现在任何一个过程块中;过程赋值语句只能出现在过程块中。
4、语句结构不同:连续赋值语句以关键词assign为先导,语句中的赋值算符只有阻塞型一种;过程赋值语句不需要相应的先导关键词,语句中的赋值算符分阻塞型和非阻塞型。
5、冲突处理方式的不同:一天连线可被多条连续赋值语句同时驱动,最后的结果依据连线类型的不同有相应的冲突处理方式;寄存器变量在同一时刻只允许一条过程赋值语句对其进行赋值。

你可能感兴趣的:(verilog,VIVADO,FPGA)