我是靠谱客的博主 知性百合,最近开发中收集的这篇文章主要介绍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技术实用教程 | 复习二 | Verilog基本语法的全部内容,希望文章能够帮你解决EDA技术实用教程 | 复习二 | Verilog基本语法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部