当前位置: 代码迷 >> 综合 >> Verilog基础语法(一)
  详细解决方案

Verilog基础语法(一)

热度:61   发布时间:2024-02-19 22:52:50.0

一、数据类型

在Verilog语言中主要有三大数据类型:寄存器数据类型、线网数据类型、参数数据类型

1、寄存器数据类型

关键字:reg,reg类型数据默认初始值为不定值X;需要注意的是reg类型的数据只能在always语句和initial语句中被赋值。

reg [31:0] delay_cnt;
reg        key;//默认位宽为1

    如果该过程语句描述的是时序逻辑,即always语句带有时钟信号,则该寄存器变量对应为触发器;如果该过程描述的是组合逻辑,即always语句不带有时钟信号,则该寄存器变量对应为硬件连线;

2、线网数据类型

关键字:wire和tri;最常见的是wire类型

wire   key_flag;//默认位为1位(设计变量位宽与reg相同)

线网数据类型表示结构实体之间的物理连线;线网类型的变量不能存储值,它的值是由驱动它的元件所决定,能够驱动线网类型变量的元件有门、连续赋值语句、assign等。如果没有驱动元件连接到线网类型的变量上,则该变量就是高阻的,即其值为Z。

3、参数数据类型

关键字:parameter;参数其实就是一个常量,可以一次定义多个参数,参数与参数之间需要用逗号隔开,且每个参数定义的右边必须是一个常数表达式。

parameter  SYS  =  4'd2;

参数类型的数据常用于定义状态机的状态、数据位宽和延迟大小等。采用标识符来代表一个常量可以提高代码的可读性和维护性。

二、运算符

1、算数运算符

+     加
-     减
*     乘
/     除(只能实现整除)
%     模除(求余)

2、关系运算符

>     大于
<     小于
<=    小于等于
>=    大于等于
==    等于
!=   不等于

3、逻辑运算符

!    非
&&    与 (a&&b 如果a和b都为1,结果才为1,表示真)
||    或(a||b 如果a或者b有一个为1,结果为1,表示真)

4、条件运算符

?:   a?b:c    (如果a为真,就选择b,否则选择c)

5、位运算符

~     取反
&     与(按位与)
|     或(按位或)
^     异或(按位异或)

6、移位运算符

>>      右移     a>>b   (将a右移b位)  
<<      左移     a<<b   (将a左移b位) 

7、拼接运算符

{}     {a,b}   将a和b拼接起来,作为一个新的信号

运算符的优先级:

(从高到低)

! ~
*  / %
+  -
<<  >>
<  <=  >  >=
==  !=  ====  !==
&
^  ^~
|
&&
||
?:

三、注释方式

Verilog中有两种注释方式 ,一种是//开头的语句,它表示以//开始到本行结束都属于注释语句;另一种是以“/*”开始,以“*/”结束,在两个符号之间的语句都是注释语句。这种注释方式与C语言相同。

四、常用的关键字

  1. module          模块开始定义
  2. input              输入端口定义
  3. output            输出端口定义
  4. inout              双向端口定义
  5. parameter     信号的参数定义
  6. wire               wire信号定义
  7. reg                reg信号定义
  8. always           产生reg信号语句的关键字
  9. assign            产生wire信号语句的关键字
  10. begin              语句的其实标志
  11. end                 语句的结束标志
  12. edge/posedge/negedge         时序电路的标志
  13. case                case语句起始标记
  14. default             case语句的默认分支标志
  15. endcase           case语句结束标记
  16. if                       if/else语句标记
  17. else                  if/else语句标记
  18. for                     for语句标记
  19. endmodule       模块结束定义

五、程序框架

Verilog基本的设计单元是模块(block);一个模块由两个部分组成,一部分描述端口,另一部分描述逻辑功能。

每一个Verilog程序包括4个主要的部分:端口定义、IO说明、内部信号声明、功能定义。

功能定义部分有三种方法:

1、assign语句:描述组合逻辑电路

2、always语句:描述组合/时序逻辑

3、例化实例元件:如and#2 u1(q,a,b);

需要说明的是上述三种逻辑功能是并行的

 

  相关解决方案