EDA技术实用教程 | 复习二 | Verilog基本语法

一、reg型

reg主要用于定义特定类型的变量,即寄存器变量或寄存器型数据类型的变量。

寄存器变量的定义格式如下:

reg 变量名1,变量名2,...;
reg [msb : lsb] 变量名1,变量名2, ...;

例如:定义输出端口seg一个寄存器数据类型的7位总线
output reg [6 : 0] seg;

二、wire型

对于模块中功能描述设计的所有信号都必须定义相应的变量类型。如果没有在模块中显示地定义信号的类型,Verilog 综合器都将其默认定义为wire型。

如果assign语句中需要有端口以外的信号或连接线性质的变量(由于端口都已默认为网线型变量),特别是考虑到assign语句中的输出信号变量必须是wire网线型变量,则必须用网线型变量定义语句事先给出显示定义。

wire是定义网线型变量的关键词

wire的具体定义格式如下:

wire 变量名1,变量名2,...;
wire [msb : lsb] 变量名1,变量名2, ...;

例如:定义矢量位a[7 : 0]为网线型变量的表达式是:
wire [7 : 0] a;

三、integer型

integer类型与前面已介绍过的reg类型都属于同类的寄存器类型,或称变量类型。定义为integer类型的变量多数被用于表达循环变量,用于指示循环的次数。

integer的一般定义格式如下:

integer 标识符1,标识符2,... ,标识符n [msb : lsb];
例如:
integer A, B[3 : 0];  //定义5个整数型:A、B[0]、B[1]、B[2]、B[3],都是32位。

integer与reg类型的定义不同,reg类型必须明确定义其位数。然而integer类型的定义则不必特指位数,因为它们都默认为32位宽的二进制数寄存器类型。

四、常量

在程序运行时,其值不能被改变的量叫常量。

两类最基本的常量:数字型常量和参数型(parameter)

1、数字型常量:整数型可按如下两种方式书写

1)基数表示法
格式:

[位宽]'进制 值

定义的为无符号数,位宽是按照二进制来计算的。进制可以为B(二进制)、O(八进制)、D(十进制)、H(十六进制)。

例如:
3'b001, 3'B110         三位二进制
6'o12,  6'O12          六位八进制
4'd9,   4'D9           四位十进制
8'hBF   8'HBF          八位十六进制

2)简单的十进制格式
这种形式的整数定义为带有一个可选的“+”(一元)或“-”(一元)运算符的数字序列。
这种形式的整数值代表一个有符号的数。负数使用补码形式表示。

   15	相当于二进制01111
  -15	相当于二进制10001

x(或z)在十六进制值中代表4位x(或z),在八进制中代表3位x(或z),在二进制中代表1位x(或z)
当常量不说明位数时候默认是32位,每个字母用8位ASCII码来表示

10 =32'd10 =32'b1010
1=32'd1 =32'b1
-1 = -32'd1 =32'hFFFF_FFFF
'BX=32'BX=32'BXXXXXXXXXX...
“AB”=16'B 010000001_01000010
A的ASCII值是85,B的值是86
2、 参数型(parameter)

参数是一个特殊常量,parameter就是定义参数的关键词。用parameter定义一个标识符来代表一个常量。参数经常用于定义时延和变量的宽度。

parameter的一般定义格式如下:

parameter  标识符名1 = 表达式或数值1, 标识符名2 = 表达式或数值2, ... ;
例如:
  parameter Delay = 1;
  parameter A = 32,B=4'b0001;
  parameter string = “exec_command”;
上一篇:EDA 实验报告


下一篇:关于web前端base64转换为Blob,存入数组后 ajax请求传输到后端 接受不到文件问题