第三章 Verilog HDL语言要素

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


Count COUNT R56_68 FIVE$ 30count Out*
//与Count不同 与 不同
//非法 标识符不允许以数字开头 非法:标识符不允许以数字开头 非法 //非法,标识符中不允许包含字符 非法, 非法 标识符中不允许包含字符*
芜湖职业技术学院
4.关键字 关键字 Verilog语言内部已经使用的词称为关键字或 语言内部已经使用的词称为关键字或 保留字,这些关键字用户不能随便使用。 保留字,这些关键字用户不能随便使用。
芜湖职业技术学院
2. 寄存器型
寄存器型变量对应的是具有状态保持作用的电路元件, 如触发器、寄存器等。register型变量与net型变量的根本 区 别 在 于 : register 型 变 量 需 要 被 明 确 地 赋 值 , 并 且 register型变量在被重新赋值前一直保持原值。在设计中必 须将寄存器型变量放在过程语句(initial、always)中,通过 过程赋值语句赋值。注:在initial、always等过程块内,被 赋值的每一个信号都必须定义成寄存器型。 Verilog HDL 有4种寄存器型变量,见表:
芜湖职业技术学院
实数
实型数可以用下列两种形式定义: 实型数可以用下列两种形式定义: ①十进制计数法 2.0 5.678 11572.12 0.1 2. //非法:小数点两侧必须有 位数字 非法: 非法 小数点两侧必须有1位数字 ②科学计数法 23_5.1e2 其值为23510.0; 忽略下划线 其值为 ; 3.6E2 其值为360.0 (e与E相同 相同) 其值为 与 相同 5E-4 其值为0.0005 - 其值为
1.空白符和注释 空白符和注释
空白符 代码中, 在Verilog HDL代码中,空白符包括空格、tab、换行 代码中 空白符包括空格、 、 和换页。空白符使代码错落有致,阅读起来方便。 和换页。空白符使代码错落有致,阅读起来方便。在综合 空白符被忽略。 时,空白符被忽略。 Verilog程序可以不分行,也可以加入空白符采用多行 程序可以不分行, 程序可以不分行 编写。例如: 编写。例如: initial begin ina =3’b001; inb= 3’b011; end 这段程序等同于下面的书写格式: 这段程序等同于下面的书写格式:
芜湖职业技术学院
பைடு நூலகம்
字符串
字符串是双引号内的字符序列, 字符串是双引号内的字符序列,字符串不能分成 多行书写。 多行书写。 字符串中的特殊字符必须用字符“ 来说明 比如: 来说明, 字符串中的特殊字符必须用字符“\”来说明,比如: \n 换行符 \t Tab键 键 \\ 字符“ 本身 字符“\”本身 \” 双引号” 双引号” \206 八进制数206对应的 对应的ASC||值 八进制数 对应的 值
always edge endspecify if module and else endtable initial negedge assign end endtas k inout nor begin endcas e event input not case endmodul e for integer or default endfuncti on forever fork join output disable endprimiti ve function large
芜湖职业技术学院 wire型 型 wire是最常用的连线型变量,重要介绍下。wire型数据常 用来表示以assign语句赋值的组合逻辑信号。Verilog HDL模块 中的输入/输出信号类型缺省时自动定义为wire型。Wire型信号 可以用作任何表达式的输入,也可以用作“assign”语句和实例 元件的输出。对于综合器而言,其取值可为0,1,X,Z。 宽度为1位的wire类型变量的定义格式如下: Wire 数据名1,数据名2,……,数据名n; 例如:wire a,b; //定义了两个wire型变量a和b
类型 reg integer real time 功能说明 常用的寄存器型变量 32位带符号整型变量 位带符号整型变量 64位带符号实型变量 位带符号实型变量 无符号时间变量 √ √ 可综合性说明
芜湖职业技术学院 integer、real和time三种寄存器型变量都是纯数学的抽 象描述,不对应任何具体的硬件电路。reg型变量是最常用 的一种寄存器型变量。 reg型 型 宽度为1位的reg类型变量的定义格式如下: reg 数据名1,数据名2,……,数据名n; 例如:reg a,b; //定义了两个reg型变量a和b
芜湖职业技术学院 1.线网类型 线网类型 线网类型数据相当于硬件电路中的各种物理连接,如器 件的管脚、内部器件如与门的输出等。其特点是输出的 值紧跟输入值的变化而变化。 对连线型有两种驱动方式, 一种方式是在结构描述中将其连接到一个逻辑门或模块 的输出端;另一种方式是用持续赋值语句assign对其进 行赋值。 Verilog HDL提供了多种连线型变量。见表:
芜湖职业技术学院
2. 数字与字符串
Verilog HDL有下面 种基本逻辑状态 有下面4种基本逻辑状态 有下面 种基本逻辑状态: 0:低电平、逻辑0或逻辑非; 1:高电平、逻辑1或“真”; x或X:不确定或未知的逻辑状态; z或Z:高阻态。 注意,这四种值的解释都内置于语言中。如一个为 的值 注意,这四种值的解释都内置于语言中。如一个为z的值 总是意味着高阻抗,一个为0 的值通常是指逻辑0; 总是意味着高阻抗,一个为 的值通常是指逻辑 ;在门 的输入或一个表达式中为“ 的值通常解释成 的值通常解释成“ 。 的输入或一个表达式中为“z”的值通常解释成“x ”。此 值和z值都是不分大小写的 外x值和 值都是不分大小写的,也就是说,值0x1z与值 值和 值都是不分大小写的,也就是说, 与值 0X1Z相同。 相同。 相同
芜湖职业技术学院
3.2 数据类型
在硬件描述语言当中,数据类型是用来表示 数字电路中的物理连线,数据存储和传送等物理 量。 Verilog语言中的数据类型很多,最基本的的主 要有两类:一类称为连线型,另一类称为寄存器 型。在这两类中,最常用的是:wire型、reg型、 integer型和parameter型4种数据类型。本节着重 介绍wire型、reg型和parameter型数据类型的使用。
宽度为多位的wire类型变量的定义格式如下: wire[n-1:0] 数据名1,数据名2,……,数据名n; wire[7:0] databus // databus的宽度为8位
芜湖职业技术学院 wire型数据的使用 型数据的使用 wire[7:0] in,out; //定义了两个8位宽度向量in和out assign out,in; //不能用always操作
宽度为多位的reg类型变量的定义格式如下: reg[n-1:0] 数据名1,数据名2,……,数据名n; reg[7:0] qout // qout的宽度为8位
芜湖职业技术学院
3. parameter
在Verilog HDL中,用paramter来定义符号常量,即用 parameter来定义一个标志符代表一个常量。其定义 格式为: parameter sel=8, code=8’ha3; 分别定义参数sel代表常量8(10进制),参数code 代表常量a3(16进制); 还可以定义为: parameter datawidth=8, addrwidth=datawidth*2; 定义参数datawidth代表常数8,参数addrwidth代 表16(8*2);
若只使用其中的某几位,可直接选中这几位,但应 注意宽度一致: wire[7:0] out;
wire[2:0] in; assign out[4:2]=in //out的第2到4位于in相等
等效于:assign out[4]=in[2]; assign out[3]=in[1]; assign out[2]=in[0];
芜湖职业技术学院
整数
基数表示形式整数的例子: 基数表示形式整数的例子: 5'O37 5位八进制数(二进制 位八进制数( 位八进制数 二进制11111) ) 4'D2 4位十进制数(二进制 位十进制数( 位十进制数 二进制0011) ) 4'B1x_01 4位二进制数 位二进制数 7'Hx 7位x(扩展的 ,即xxxxxxx 扩展的x), 位 扩展的 4'hZ 4位z(扩展的 ,即zzzz 扩展的z), 位 扩展的 4'd-4 非法: 非法:数值不能为负 8‘h 2A 在位长和字符之间,以及基数和数值 在位长和字符之间, 之间允许出现空格 3' b001 非法: 和基数 和基数b之间不允许出现空格 非法:`和基数 之间不允许出现空格 (2+3)'b10 非法:位长不能够为表达式 非法:
类型 wire、tri 、 wor、trior 、 wand、triand 、 tri1、tri0 、 supply1、supply0 、 功能说明 连线类型 具有线或特性的连线 具有线与特性的连线 分别为上拉电阻和下 拉电阻 分别为电源(逻辑 和 分别为电源 逻辑1)和 逻辑 逻辑0) 地(逻辑 ) √ 可综合说明 √
芜湖职业技术学院
第3章 Verilog HDL语言要素 章 语言要素
词法 数据类型 寄存器和存储器 运算符
芜湖职业技术学院
本章概述
本章介绍Verilog语言的基本要素,包括数字、字符 串、标识符、运算符、数据类型和保留字等,这些语言 要素既有与软件编程语言(如C语言)相同和相似之处,也 有Verilog HDL作为一种硬件描述语言所特有的地方。比 如:Verilog语言的运算符与C语言的很相像,而数据类 型(wire、reg等)则是Verilog HDL所特有的。必须深入理 解硬件描述语言与软件编程语言的本质区别。
Verilog HDL定义的 定义的 一些常用的 关键词
需要注意的是, 所有关键字都是小写的, 例如, 需要注意的是 , 所有关键字都是小写的 , 例如 , ALWAYS(标识符 不是关键字 , 它与 标识符)不是关键字 关键字)是 标识符 不是关键字,它与always(关键字 是 关键字 不同的。 不同的。
芜湖职业技术学院
3.1 词 法
词法概念: 程序是由各种符号流构成的, 词法概念: Verilog HDL程序是由各种符号流构成的,这 程序是由各种符号流构成的 些符号包括空白符、操作符、数字、字符串、注释、 些符号包括空白符、操作符、数字、字符串、注释、标识 符和关键字等,我们将其称为词法。 符和关键字等,我们将其称为词法。
芜湖职业技术学院 Verilog HDL中有 种类型的常量 中有3种类型的常量 中有 种类型的常量: 整数; 实数; 字符串。
下划线符号( 可以随意用在整数或实数中, 下划线符号( _ )可以随意用在整数或实数中,它 们就数量本身没有意义,可用来提高易读性, 们就数量本身没有意义,可用来提高易读性,唯一的限 制是下划线符号不能用做首字符。 制是下划线符号不能用做首字符。
芜湖职业技术学院 Initial begin //加入空格、换行等,使代码错落有致,提高可读性 加入空格、 加入空格 换行等,使代码错落有致, ina =3’b001; inb= 3’b011; end
注释 中有两种形式的注释。 在Verilog HDL中有两种形式的注释。 中有两种形式的注释 a)单行注释:以“//”开始到本行结束,不允许续行 单行注释: 开始到本行结束, 单行注释 开始到本行结束 b)多行注释:多行注释以“/*”开始,到“*/”结束 多行注释: 开始, 多行注释 多行注释以“ 开始 结束
芜湖职业技术学院
3.标识符 标识符
Verilog HDL中的标识符可以是任意一组字母、数字、 中的标识符可以是任意一组字母、 中的标识符可以是任意一组字母 数字、 $符号和 下划线 符号的组合,但标识符的第一个字符必 符号和_(下划线 符号的组合, 符号和 下划线)符号的组合 须是字母或者下划线。另外,标识符是区分大小写的。 须是字母或者下划线。另外,标识符是区分大小写的。
相关文档
最新文档