草庐IT

3.1 Verilog 连续赋值

关键词: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.2 Verilog 时延

关键词:时延,惯性时延连续赋值延时语句中的延时,用于控制任意操作数发生变化到语句左端赋予新值之间的时间延时。时延一般是不可综合的。寄存器的时延也是可以控制的,这部分在时序控制里加以说明。连续赋值时延一般可分为普通赋值时延、隐式时延、声明时延。下面3个例子实现的功能是等效的,分别对应3种不同连续赋值时延的写法。//普通时延,A&B计算结果延时10个时间单位赋值给ZwireZ,A,B;assign#10  Z=A&B; //隐式时延,声明一个wire型变量时对其进行包含一定时延的连续赋值。wireA,B;wire#10    Z=A&B; //声明时延,声明一个wire型变量是指定一个时延。因此对

3.2 Verilog 时延

关键词:时延,惯性时延连续赋值延时语句中的延时,用于控制任意操作数发生变化到语句左端赋予新值之间的时间延时。时延一般是不可综合的。寄存器的时延也是可以控制的,这部分在时序控制里加以说明。连续赋值时延一般可分为普通赋值时延、隐式时延、声明时延。下面3个例子实现的功能是等效的,分别对应3种不同连续赋值时延的写法。//普通时延,A&B计算结果延时10个时间单位赋值给ZwireZ,A,B;assign#10  Z=A&B; //隐式时延,声明一个wire型变量时对其进行包含一定时延的连续赋值。wireA,B;wire#10    Z=A&B; //声明时延,声明一个wire型变量是指定一个时延。因此对

2.5 Verilog 编译指令

以反引号`开始的某些标识符是Verilog系统编译指令。编译指令为Verilog代码的撰写、编译、调试等提供了极大的便利。下面介绍下完整的8种编译指令,其中前4种使用频率较高。`define,`undef在编译阶段,`define用于文本替换,类似于C语言中的#define。一旦`define指令被编译,其在整个编译过程中都会有效。例如,在一个文件中定义:`defineDATA_DW32则在另一个文件中也可以直接使用DATA_DW。`defineS$stop;//用`S来代替系统函数$stop;(包括分号)`defineWORD_DEFreg[31:0]//可以用`WORD_DEF来声明32b

2.5 Verilog 编译指令

以反引号`开始的某些标识符是Verilog系统编译指令。编译指令为Verilog代码的撰写、编译、调试等提供了极大的便利。下面介绍下完整的8种编译指令,其中前4种使用频率较高。`define,`undef在编译阶段,`define用于文本替换,类似于C语言中的#define。一旦`define指令被编译,其在整个编译过程中都会有效。例如,在一个文件中定义:`defineDATA_DW32则在另一个文件中也可以直接使用DATA_DW。`defineS$stop;//用`S来代替系统函数$stop;(包括分号)`defineWORD_DEFreg[31:0]//可以用`WORD_DEF来声明32b

4.1 Verilog 过程结构

关键词:initial,always过程结构语句有2种,initial与always语句。它们是行为级建模的2种基本语句。一个模块中可以包含多个initial和always语句,但2种语句不能嵌套使用。这些语句在模块间并行执行,与其在模块的前后顺序没有关系。但是initial语句或always语句内部可以理解为是顺序执行的(非阻塞赋值除外)。每个initial语句或always语句都会产生一个独立的控制流,执行时间都是从0时刻开始。initial语句initial语句从0时刻开始执行,只执行一次,多个initial块之间是相互独立的。如果initial块内包含多个语句,需要使用关键字begin

4.1 Verilog 过程结构

关键词:initial,always过程结构语句有2种,initial与always语句。它们是行为级建模的2种基本语句。一个模块中可以包含多个initial和always语句,但2种语句不能嵌套使用。这些语句在模块间并行执行,与其在模块的前后顺序没有关系。但是initial语句或always语句内部可以理解为是顺序执行的(非阻塞赋值除外)。每个initial语句或always语句都会产生一个独立的控制流,执行时间都是从0时刻开始。initial语句initial语句从0时刻开始执行,只执行一次,多个initial块之间是相互独立的。如果initial块内包含多个语句,需要使用关键字begin