verilog语法

发布时间 2023-09-14 15:22:06作者: 悠闲的小莫

状态

verilog中对于状态的描述一共有四个

  • 1:高电平
  • 0:低电平
  • x:未知,可以是高电平也可以是低电平
  • z:高阻态,悬空状态

进制

verilog的进制和其他语言有很大的不同

  • 二进制:4'b0101表示四位二进制的0101
  • 十进制:4'd2表示四位十进制的2
  • 十六进制:4'ha表示四位十六进制的a

总之前面的4是指位宽后面的是指进制等

标识符

类似变量名,用于定义变量、模块名、端口名、信号名等

标识符的第一个符号不能是数字

数据类型

verilog中主要有三大数据类型

  • 寄存器数据类型
  • 线网数据类型
  • 参数数据类型

这三大数据类型中真正起作用的是寄存器和线网数据类型,参数其实就是中间过度的东西

寄存器数据类型(reg)

只能在always和initial中被赋值,默认初始值是不定值x。

如果过程描述时序逻辑,即always带有时钟信号则寄存器变量为对应的触发器

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

其实就是一个器件。

在定义的时候需要在末尾加上分号,reg 【31:0】name;其中中括号表示位宽,高位在前地位在后,若未给出默认位宽为1.

线网数据类型(wire)

表示结构体之间的物理连线,并且线网不能存储值,它的值由驱动它的原件所决定的。

驱动线网的变量的元件有,门、连续赋值语句、assign等。

如果没有驱动元件连接到线网上则该变量为高阻态z。

线网数据类型wire、tri(很少用)

wire name;

wire [31:0] name;

参数类型(常量 parameter)

有define的效果

parameter name = 4'b0101;

如果定义多个参数除了最后一个参数其他用逗号隔开就行

运算符

与c基本一致