版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章硬件描述语言VerilogHDL数值与变量03Part3数值与变量关键字关键字是在程序中起到指定用途的字符组合以下是部分VerilogHDL常用关键字的说明。module和endmodule用于定义模块的开始和结束input和output用于定义I/O端口always用于描述电路的逻辑行为assign用于连续赋值begin和end用于将多条语句组合在一起case和endcase用于实现多路选择结构wire和reg用于声明变量类型for用于迭代和循环if和else用于条件语句integer用于定义数据类型3数值与变量关键字VerilogHDL的关键字全部采用小写字母,详见附录1。3数值与变量标识符VerilogHDL代码中的标识符用于表示模块名称、端口名称、实体名称、变量名称等。VerilogHDL的标识符是任意大小写字母、数字、$符号和_(下划线)符号的组合,但是第一个字符必须是字母或者下划线。区分大小写。以下是合法的标识符:counterSYS_CLKsys_clk_ADD_T1231$ad其中SYS_CLK和sys_clk因为大小写字母的区别,认定为两个不同的标识符。以下是不合法的标识符:58ant_CLK*well19790207?wew3数值与变量标识符为了保持代码的一致性和可读性,建议在使用标识符时遵循一定的规范。例如,不建议在标识符中使用大小写混合,普通内部信号建议全部小写,并且信号命名最好能体现信号的含义,使其简洁、清晰、易懂。3数值与变量注释为增加代码的可读性,VerilogHDL支持两种注释方式:①注释单行文本,使用//(双斜杠)符号,VerilogHDL忽略从此处到本行末尾的内容。这种方式常用于说明文字或备注较短的情况。②注释多行文本,使用/*……*/符号,编译时将忽略其中注释的内容。这种方式适用于代码的辅助说明较为复杂需要占用多行的情况。3数值与变量注释以下是两个常见的单行注释,用于解释一条程序语句。a=b&&c;//a是b和c相与的结果setStartPosition(nX,nY);//设置起始坐标以下是一个常见的多行注释,使用/*……*/符号。/*ProjectDescription:Theprojectisstartedfrom2024/1/1,willbefinishedinJune.*/3数值与变量注释注释符不仅用于程序语句和程序块的说明,也常用于对整个程序的信息发布,下面是一个常见的程序开头说明,使用//符号。//************************************************//创建日期:2024-01-01//开发者:王明//项目名称:XXX//************************************************多行文本的注释不允许进行嵌套,在/*……*/符号里又出现/*……*/是非法注释。如/*Thisis/*anillegal*/comment*/就是一个非法注释的例子。3数值与变量数字格式为了便于阅读或计算,VerilogHDL程序中允许使用多种形式的数值,基本的数字格式为:<位数>’<进制格式><数值>其中,<位数>是指该数值转换为二进制形式的位数,进制是数值的表现形式,与<数值>相一致进制格式进制进制格式有效值二进制Borb0,1,x,X,z,Z,?,_八进制Ooro0~7,x,X,z,Z,?,_十进制Dord0~9,_十六进制HorH0~9,a~f,A~F,x,X,z,Z,?,_3数值与变量数字格式没有标明进制格式的,默认为十进制,如1234。所有数值必须符合进制格式的有效范围,否则视为无效。VerilogHDL数值可以指定位数,也可以不指定位数。不指定位数时,<位数>位置的数据省略,默认为32位。如:‘hc3
//8位,十六进制数,默认为32位
‘o21
//6位,八进制数,默认为32位常见的数值表现为:4’b1111//4位,二进制数12’habc//12位,十六进制数16’d255//16位,十进制数3数值与变量四值逻辑根据IEEE1364标准,VerilogHDL语言运用四值逻辑,即用四种逻辑状态表示数据的状态:0、1、X和Z。0:逻辑0或条件为假1:逻辑1或条件为真X:未知态或不定态Z:高阻抗态3数值与变量信号强度信号强度及其属性按照从强到弱的排列顺序:strong:驱动pull:驱动large:存储weak:驱动medium:存储small:存储highz:高阻态强弱3数值与变量字符X和Z字符X和x代表未知状态,字符Z和z代表高阻状态。不区分大小写。当X和Z出现在数值末尾时,代表了后面的所有位数。12’h13x//12位十六进制数,低4位未知6’hx//6位x32’bz//32位高阻值3数值与变量参数参数来配置电路的信号位宽、功能行为等,使用parameter定义。在未改变模块主要逻辑结构的情况下,可以通过改变参数来改变电路的属性,从而提高代码的复用性。参数的声明格式为:parameter参数1=表达式1,参数2=表达式2,…,参数n=表达式n;如:parametermsb=7;//定义一个参数msb,代表常数7与参数匹配的表达式里也可以引入另一个参数。如:parameterbyte_size=8,byte_msb=byte_size-1;//定义了两个参数byte_size和byte_msb,后一个参数的表达式里包含了前一个参数3数值与变量下划线_在VerilogHDL中,下划线的主要作用是增加程序的可读性。当它用在数值中,符号“_”可以出现在数字中间的任何位置,以增加数值的可读性。比较12’b111100001010和12’b1111_0000_1010下划线还可以用于命名标识符,体现模块名或变量名中的层次或分类,如test_counter_4bit。3数值与变量3.3变量VerilogHDL支持多种类型的变量定义。主要分为线网(net)和寄存器(register)两大类。3数值与变量线网型变量线网型(net)变量用于连接不同的硬件模块元件。它表示结构实体之间的物理连接,类似于电子线路中使用的导线,可以传输信号,但没有电荷保持作用。线网型变量有wire、tri、wor、trior、wand、triand、tri0、tri1、supply0、supply1、trireg共11种,如表3.3.2所示,其中只有wire、tri、supply0、supply1是“可综合”的,可以用于硬件实现和系统仿真,其余6种只能用于系统仿真。线网型变量不能储存值,它必须连接驱动,如果没有驱动连接到线网型变量上,它就呈现高阻状态,其默认值为Z(trireg除外)。3数值与变量线网型变量线网类型变量说明关键字说明关键字说明关键字说明wire连线tri三态线网supply0用于对“地”建模wand线与triand三态线与supply1用于对“电源”建模wor线或trior三态线或uwire连线,用于避免多驱动tri0三态下拉线网tri1三态上拉线网trireg三态寄存器3数值与变量线网型变量wire是最常使用的线网型数据类型,在模块中,wire型变量可以作为电路连线使用。除了声明,wire型数据通常使用连续赋值语句assign对其进行赋值。wire变量的定义格式为:wire[MSB,LSB]变量1,变量2,…,变量n;如:wirea;
//定义一个1位wire变量awire[7:0]busA,busB;
//定义两个8位wire变量wire[15:0]bus;
//定义一个16位wire变量assignbus={busA,busB};
//给bus变量赋值3数值与变量线网型变量在进行模块端口声明时,如果没有明确指出端口数据类型,这个端口被默认为wire型数据。如定义语句为inputa;和outputb,c;这里的a、b、c默认为wire类型,具备wire变量的特性。3数值与变量寄存器型变量寄存器型变量是VerilogHDL语法中的概念,与电路硬件中的寄存器不同,它是一个储存数据的变量,用于电路的行为级建模。寄存器型变量可以始终保持其状态的值,直到被新的值覆盖。因此,没有驱动的寄存器型变量或者是未初始化的变量,它们可能包含任何值,因此默认值视为X,意思是未知的。仅在变量声明时,或者在initial和always过程块中,才可以给寄存器型变量赋值。寄存器变量用在initial和always过程块中,可以接受任何变量或表达式的赋值。3数值与变量寄存器型变量常用的寄存器类型变量有reg、integer、time、real等常用寄存器类型变量说明寄存器类型功能说明reg可定义位宽的寄存器型变量integer32位有符号的整数型变量real64位有符号的实数型变量time64位无符号的时间变量3数值与变量reg变量寄存器型变量中,reg是最常使用类型,也只有reg是确定“可综合”的,既可以用于硬件实现,也可以用于系统仿真。reg变量的定义格式为:reg[MSB:LSB]变量1,变量2,…,变量n;定义reg变量的时候要定义位宽,用[MSB:LSB]表示位宽范围,通常按照数字系统的书写习惯把最高位放在左边,最低位放在右边。没有书写位宽的默认是1位变量。3数值与变量reg变量如:regclock;//定义一个1位reg变量clockreg[3:0]addr_a;//定义一个4位的变量addr_aaddr_a=4’b0011;//给寄存器变量add_a赋值integer、real和time变量有固定位宽,定义语句中只需要写明变量名称,不需要定义位宽。3数值与变量integer变量integer定义有符号整数,可以表示出正整数、零和负整数,可用于算术运算、关系运算和循环控制。integer变量通常不被直接综合为硬件寄存器。integer变量的定义格式为:integer变量1,变量2,…,变量n;如:integerA,B,C;//定义3个整数型变量,每个变量都是32位有符号数3数值与变量real变量real类型在Verilog中用于表示浮点数,它提供了高精度的数值表示和运算能力。然而,由于浮点数运算在硬件实现中相对复杂且资源消耗大,real类型变量通常也不被综合到硬件中,而是用于仿真中的精确数值计算。real变量的定义格式为:real变量1,变量2,…,变量n;如:realdelta;//定义一个64位实数型变量,只可用于仿真,不可综合3数值与变量time变量time变量是一种特殊类型的变量,主要用于存储和处理仿真时间相关的信息。time类型变量不能综合到硬件中,它主要用于仿真中的时间控制和延迟建模。time变量的定义格式为:time变量1,变量2,…,变量n;如:timetime_a;//定义一个64位的时间变量3数值与变量与端口连接的变量VerilogHDL对与端口连接的信号变量类型的规则。3数值与变量与端口连接的变量从端口看:input端口仅用于将外部信号输入电路,默认为线网类型,可以接受外来的wire或者reg型变量的赋值。output端口仅用于将电路产生的信号送出去,在模块内可以定义为wire或者reg类型,出了模块后作为线网类型的变量。inout端口既可以作为输入也可以作为输出使用。无论是它自己的端口定义还是与它连接的变量,都必须是线网类型。3数值与变量与端口连接的变量从模块看:一个模块的端口,无论是input还是output端口,因为本身具备net变量的特性,在声明时默认为wire类型。从模块外部看,连接input端口的信号可以是net或者reg型,连接output和inout端口的信号必须为net型。从模块内部看,input和inout端口只能是net(wire)型,而output端口可以是net或者reg型。在module-endmodule框架内进行的电路描述,属于模块内部描述,通常只会给输出端口赋值。3数值与变量与端口连接的变量如果Verilog代码采用结构化描述或者数据流描述,输出端口保持wire类型。如果采用的是行为描述,输出端口必须显式地声明为reg类型。原本声明的端口outputQ;应该重新声明为regQ;3数值与变量与端口连接的变量分析:电路模块OUTER的端口和变量声明如下:inputO1;O2;O3;//OUTER模块的输入端口outputQ1,Q2;//OUTER模块的输出端口wirewire_o;//OUTER模块内的wire变量regreg_o;//OUTER模块内的reg变量例3.4如图3-4所示,大电路模块OUTER里包含小电路模块INNER,试分析INNER各端口能够连接的信号类型。3数值与变量与端口连接的变量电路模块INNER的端口和变量声明如下:inputI1,I2;//INNER模块的输入端口outputY1,Y2;//INNER模块的输出端口wirewire_inn;//INNER模块内的wire变量regreg_inn;//INNER模块内的reg变量3数值与变量与端口连接的变量所有的输入输出端口都默认为线网(wire)类型。①INNER模块的输入端口I1既可以接受来自端口O1、O2、O3的赋值,也可以接受线网变量wire_o和寄存器变量reg_o的赋值,它们对于I1来说都是来自INNER模块外部的信号。I1=wire_o;和I1=reg_o;这两条语句都是成立
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 核心素养导向下小学英语五年级上册Unit1What‘shelikePartALet’slearn教学设计
- 核心素养视域下初中三年级英语单元整合教学设计:叙事与诗歌的文体比较及跨媒介创意表达
- 小学音乐二年级下册《箫的初体验》探究式教案
- 4.2《旋转现象》教案 -2025-2026学年三年级下册数学(西师大版)西南大学版
- 2026年危险化学品安全管理试题及答案
- 2026年高考地理最后冲刺押题试卷及答案(十三)
- 2026年劳动权益的试题及答案
- 2026年4月重庆万州区周家坝街道公益性岗位招聘1人备考题库含答案详解(黄金题型)
- 2026西安交通大学管理学院管理辅助工作人员招聘4人备考题库及完整答案详解
- 2026安徽芜湖市无为市中医医院招聘周转池编制专业技术人员6人备考题库完整答案详解
- 2024装配式等效钢骨混凝土结构技术规程
- 云南省公路工程试验检测费用指导价
- 秋梨膏做法完整版本
- 解聘合同范本简单版
- 吉利工厂过程质量对标标准手册V4
- 2024年4月贵州省高三年级适应性考试历史试卷
- 《电子皮带秤》课件
- 二手房交易资金监管协议书
- 德国发展低碳经济的经验
- 地理专业英语词汇大全
- NB/T 10744-2021选煤用浮选药剂安全使用管理要求
评论
0/150
提交评论