Verilog最常用的2种数据类型就是线网(wire)与寄存器(reg),其余类型可以理解为这两种数据类型的扩展或辅助。线网(wire)wire类型表示硬件单元之间的物理连线,由其连接的器件输出端连续驱动。如果没有驱动元件连接到wire型变量,缺省值一般为"Z"。举例如下:实例wire interrupt;wire flag1,flag2;wire gnd=1'b0; 线网型还有其他数据类型,包括wand,wor,wri,triand,trior,trireg等。这些数据类型用的频率不是很高,这里不做介绍。寄存器(reg)寄存器(reg)用来表示存储单元,它会保持数据原有的值,直到被改写。声明
Verilog最常用的2种数据类型就是线网(wire)与寄存器(reg),其余类型可以理解为这两种数据类型的扩展或辅助。线网(wire)wire类型表示硬件单元之间的物理连线,由其连接的器件输出端连续驱动。如果没有驱动元件连接到wire型变量,缺省值一般为"Z"。举例如下:实例wire interrupt;wire flag1,flag2;wire gnd=1'b0; 线网型还有其他数据类型,包括wand,wor,wri,triand,trior,trireg等。这些数据类型用的频率不是很高,这里不做介绍。寄存器(reg)寄存器(reg)用来表示存储单元,它会保持数据原有的值,直到被改写。声明
表达式表达式由操作符和操作数构成,其目的是根据操作符的意义得到一个计算结果。表达式可以在出现数值的任何地方使用。例如:实例a^b; //a与b进行异或操作address[9:0]+10'b1; //地址累加flag1&&flag2; //逻辑与操作操作数操作数可以是任意的数据类型,只是某些特定的语法结构要求使用特定类型的操作数。操作数可以为常数,整数,实数,线网,寄存器,时间,位选,域选,存储器及函数调用等。实例moduletest;//实数reala,b,c;c=a+b;//寄存器reg [3:0] cprmu_1,cprmu_2;always@(posedgeclk)begin
表达式表达式由操作符和操作数构成,其目的是根据操作符的意义得到一个计算结果。表达式可以在出现数值的任何地方使用。例如:实例a^b; //a与b进行异或操作address[9:0]+10'b1; //地址累加flag1&&flag2; //逻辑与操作操作数操作数可以是任意的数据类型,只是某些特定的语法结构要求使用特定类型的操作数。操作数可以为常数,整数,实数,线网,寄存器,时间,位选,域选,存储器及函数调用等。实例moduletest;//实数reala,b,c;c=a+b;//寄存器reg [3:0] cprmu_1,cprmu_2;always@(posedgeclk)begin
关键词:assign,全加器连续赋值语句是Verilog数据流建模的基本语句,用于对wire型变量进行赋值。:格式如下assignLHS_target=RHS_expression;LHS(lefthandside)指赋值操作的左侧,RHS(righthandside)指赋值操作的右侧。assign为关键词,任何已经声明wire变量的连续赋值语句都是以assign开头,例如:wireCout,A,B;assignCout=A&B;//实现计算A与B的功能需要说明的是:LHS_target必须是一个标量或者线型向量,而不能是寄存器类型。RHS_expression的类型没有要求,可以是标量或线型
关键词:assign,全加器连续赋值语句是Verilog数据流建模的基本语句,用于对wire型变量进行赋值。:格式如下assignLHS_target=RHS_expression;LHS(lefthandside)指赋值操作的左侧,RHS(righthandside)指赋值操作的右侧。assign为关键词,任何已经声明wire变量的连续赋值语句都是以assign开头,例如:wireCout,A,B;assignCout=A&B;//实现计算A与B的功能需要说明的是:LHS_target必须是一个标量或者线型向量,而不能是寄存器类型。RHS_expression的类型没有要求,可以是标量或线型
关键词:时延,惯性时延连续赋值延时语句中的延时,用于控制任意操作数发生变化到语句左端赋予新值之间的时间延时。时延一般是不可综合的。寄存器的时延也是可以控制的,这部分在时序控制里加以说明。连续赋值时延一般可分为普通赋值时延、隐式时延、声明时延。下面3个例子实现的功能是等效的,分别对应3种不同连续赋值时延的写法。//普通时延,A&B计算结果延时10个时间单位赋值给ZwireZ,A,B;assign#10 Z=A&B; //隐式时延,声明一个wire型变量时对其进行包含一定时延的连续赋值。wireA,B;wire#10 Z=A&B; //声明时延,声明一个wire型变量是指定一个时延。因此对