Verilog语法
基础语法
基础知识
逻辑值:
逻辑X:表示未知,有可能是高点平,也有可能是低电平。
逻辑Z:表示高组态,外部没有激励信号,是一个悬空状态。
数字进制格式:
Verilog数字进制一般使用二进制b、十进制d、十六进制h。
二进制表示如下:4’b0101 表示4位二进制数字0101。
十进制表示如下:4’d2 表示4位十进制数字2(二进制0010)。
十六进制表示如下:4’ha 表示4位十六进制数字a(二进制1010)。
标识符推荐写法:
不建议大小写混合使用。
普通内部信号建议全部小写。
信号命名最好体现信号的含义,简洁、清晰、易懂。
以下是一些推荐的写法:
1、用有意义的有效的名字如:sum、cpu_addr等。
2、用下划线区分词,如cpu_addr。
3、采用一些前缀或后缀,比如时钟采用clk前缀:clk_50,clk_cpu。
数据类型
主要三大类数据类型:寄存器数据类型、线网数据类型(主要在数字电路中起作用的数据类型)、参数数据类型(编译器识别的类型)。
1、寄存器类型:
关键字为reg,reg类型数据的默认初始值为不定制x,默认位宽为1。
PS:reg类型的数据只能在always语句和initial语句中被赋值。
如果该过程语句描述的是时序逻辑,即always语句带有时钟信号,则该寄存器变量对应为触发器。
如果该过程语句描述的是组合逻辑,即always语句不带有时钟信号,则该寄存器变量对应为硬件连线。
2、线网类型:
线网数据类型表示结构实体(结构实体)之间的物理连线。
线网结构的变量不能储存值,它的值是由驱动它的元件所决定的。驱动的元件可以是门、连续赋值语句、assign等。如果没有驱动元件连接到线网类型的变量上,则该变量就是高阻的,则其值为Z。
线网数据类型包括wire型和tri型,其中最常见的就是wire类型。
3、参数类型:
就是一个常量,用parameter定义常量。每个参数定义的右边必须是一个常量表达式。
参数型数据常用于定义状态机的状态、数据位宽和延迟大小等。
在模块调用时,可通过参数传递来改变被调用模块中已定义的参数。
运算符
分为算术、关系、逻辑、条件、位、移位、