ch6VerilogHDL语法与要素

上传人:沈*** 文档编号:247257105 上传时间:2024-10-17 格式:PPT 页数:80 大小:1.19MB
返回 下载 相关 举报
ch6VerilogHDL语法与要素_第1页
第1页 / 共80页
ch6VerilogHDL语法与要素_第2页
第2页 / 共80页
ch6VerilogHDL语法与要素_第3页
第3页 / 共80页
点击查看更多>>
资源描述
,*,*,*,*,Verilog,HDL,语法与要素,延 边 大 学 工 学 院,电 子 信 息 通 信 学 科,许 一 男,Verilog,HDL,的注释语句有两种形式:,(,1,),单行注释,。用符号“,/,”表示注释的开始,从这个符号开始到本行的结束都被认为是注释,而且它只能注释到本行结束。,6.1,Verilog,HDL,语言要素,(注 释 语 句),2,(,2,),多行注释,。以起始符“,/*,”开始,到终止符“,*,/,”结束,可以跨越多行,在一对起始符与终止符之间的所有内容都被认为是注释。,注 释 语 句,3,标识符是用户定义的各种名称,可以是模块、端口、寄存器、线网、实例和程序块等元素的名称,比如语句“,module adder;,”就定义了一个标识符,adder,,而语句“,reg,abc,;,”则定义了标识符,abc,。标识符可以是字母、数字和下划线“,_,”等符号的任意组合序列,但首字符不能是数字,而且单个标识符的总字符数不能多于,1024,。,关键词是语言的保留字,有其特定的和专有的语法作用,用户不能再对这些关键词做新的定义。,Verilog,HDL,共有,102,个关键词。,注意:,关键词必须是小写,的,如“,module,”是关键词,而“,Module,”不是。,标识符和关键词,4,Verilog,HDL,提供了丰富的数据类型,本章把,Verilog,HDL,的数据分为常量和变量两类,并分别介绍其特点和使用方法。,表达式是操作符、操作数和标点符号序列,其目的是用来说明一个计算过程。程序中的大部分语句是由表达式构成的,因此表达式是,Verilog,HDL,的重要部分。,数据类型与表达式,5,在程序运行过程中,其值不能被改变的量称为,常量,。,Verilog,HDL,有,整型、实数型、字符串型,3,种常量。,在整型或实数型常量的任意位置可以随意插入下划线“,_,”(但是不能当作首符号),这些下划线对数本身并没有意义,但是当数字很长时使用下划线可以提高可读性。,6.2,常 量(,constants),6,Verilog,HDL,有,4,种基本值:,0,表示逻辑,0,或“,假,”;,1,表示逻辑,1,或“,真,”;,x,表示,未知,;,z,表示,高阻,。,注意:,x,值和,z,值都是不分大小写的,,也就是说,值,0 x1z,与值,0X1Z,相同。,(,尽量统一使用小写,),Verilog,HDL,的常量是由以上这,4,种基本值组成的。,7,整型常量即整数,,Verilog,HDL,的整数有两种书写格式:,十进制数格式,基数格式。,(,1,)十进制数格式是一个可以带正负号的数字序列,代表一个有符号数,,如下例:,32 /,十进制数,32,-15 /,十进制数,-15,(1),整形常量,8,(,2,)基数格式的数通常是无符号数,形式如下:,size,base,value,size,定义常量的位数(长度),这是可选项;,base,是基数,规定这个数据的进制,可以是,o,或,O,(表示八进制),,b,或,B,(表示二进制),,d,或,D,(表示十进制),,h,或,H,(表示十六进制)之一;,value,是一个数字序列,其形式应与,base,定义的形式相符。这个数字序列中出现的值,x,和,z,以及十六进制中的,a,f,不区分大小写,“,?,”字符可以代替值,z,。,9,下面给出一些典型书写方法,有正确的也有错误的。,5O37 /5,位八进制数,4D2 /4,位十进制数,4B1x_01 /4,位二进制数,7Hx /7,位,x(,扩展的,x),即,xxxxxxx,4hZ /4,位,z(,扩展的,z),即,zzzz,2h1?/2,位十六进制数,与,2h1z,相同,8h 2 A /,在位数和字符之间,以及基数和数值之间允许出现空格,4d-4 /,非法:数值不能为负,3 b001 /,非法:,和基数,b,之间不允许出现空格,(2+3)b10 /,非法:位数不能够为表达式,10,如果没有定义常量的位数,那么这个数的长度就是相应值的位数,例如:,o721 /9,位八进制数,hAF,/8,位十六进制数,如果定义的长度大于数字序列的实际长度,通常在数据序列的高位(左侧)补,0,。但是如果这个数字序列最左边一位为,x,或,z,,就用,x,或,z,在左边补位,例如:,10b10 /,左边补,0,0000000010,10bx0 x1 /,左边补,x,xxxxxxx0 x1,如果定义的长度小于数字序列的实际长度,这个数字序列最左边超出的位将被截断,例如:,3b1001_0011 /,与,3b011,相等,5H0FFF /,与,5H1F,相等,11,在,Verilog,HDL,中,实数就是浮点数,实数的定义方式有两种:,(,1,)十进制格式,由数字和小数点组成(必须有小数点),例如:,2.0,5.678,11572.12,0.1,2./,非法:小数点右侧必须有数字,(2),实数型常量,12,2,)指数格式,由数字和字符,e,(,E,)组成,,e,(,E,)的前面必须要有数字而且后面必须为整数,,例如:,23_5.1e2 /,其值为,23510.0,,忽略下划线,3.6E2 /,其值为,360.0(e,与,E,相同,),5E,4 /,其值为,0.0005,13,字符串常量是由一对双引号括起来的字符序列。出现在双引号内的任何字符(包括空格和下划线)都将被作为字符串的一部分。如下例:,INTERNAL ERROR“,R E A C H E D,H E R E /,空格出现在双引号内,所以是字符串的组成部分,12345_6789_0 /,下划线出现在双引号内,所以是字符串的组成部分,(3),字符串型常量,14,实际上,字符都会被转换成二进制数,而且这种二进制数是按特定规则编码的。现在普遍都采用,ASCII,码,这种代码把每个字符用一个字节(,8,位)的二进制数表示。所以字符串实际就是若干个,8,位,ASCII,码的序列。例如字符串“,INTERNAL ERROR,”共有,14,个字符,存储这个字符串的变量就需要,8*14,位的存储空间,如下:,reg,1:8*14 Message;/,定义变量,Message,并分配存储空,Message=INTERNAL ERROR /,给变量,Message,赋值为字符串常量,15,Verilog,HDL,有,线网,和,寄存器,两种类型的变量,每种类型都有其在电路中的实际意义。,1,线网型变量,线网表示元件之间的,物理连线,,,它不能存储数据,。线网是被“驱动”的,可以用连续赋值或把元件的输出连接到线网等方式给线网提供“驱动”,给线网提供驱动的赋值和元件就是“驱动源”,线网的值由驱动源决定。如果没有驱动源连接到线网,线网的缺省值为,z,。,6.3,数 据 类 型,16,Verilog,HDL,共有,11,种线网类型:,wire,、,tri,、,wor,、,trior,、,wand,、,triand,、,trireg,、,tri1,、,tri0,、,supply0,、,supply1,。,线网的声明语法形式如下:,net_kind,msb:lsb,net1,net2,.,netN,;,net_kind,是线网类型;,msb:lsb,定义线网宽度的最高位和最低位,这一项是可选的,如果没有定义宽度,那么认为线网宽度是,1,位;,net1,,,net2,netN,是线网变量的名称。,17,可以在同一个定义中声明多个变量,例如:,wire,Rdy,Start;/,Rdy,和,Start,是,2,个,1,位的连线,wand 2:0,Addr,;/,Addr,是,3,位线与型线网,线网可以有多个驱动源(多条语句对同一个线网进行赋值),每个驱动源都会给线网赋值,出现这种情况时,线网的取值由线网类型决定。,18,wor,Rde,;/,定义,Rde,为线或类型的线网,assign,Rde,=,Blt,&,Wyl,;/,第一个连续赋值语句是,Rde,的第,1,个驱动源,assign,Rde,=,Kbl,|Kip;/,第二个连续赋值语句是,Rde,的第,2,个驱动源,本例中,,Rde,有两个驱动源,它们分别来自于两个连续赋值语句。由于,Rde,是“线或”类型的线网,所以,Rde,的有效值由驱动源的值(右边表达式的值)的线或表决定,具体做法是:把这两个驱动源赋给线网的两个值作为索引去线或表中查询,就可以得到线网真正的有效值。,19,在这,11,种线网中,经常用到的是前,6,种,下面给出其详细的,(,1,),wire,和,tri,线网,wire,连线。,tri,三态线。,wire,和,tri,型线网都是用于连接单元的连线,是最常见的线网类型。二者语法和语义一致,不同的是三态线可以用于描述多个驱动源驱动同一根线的线网类型。,20,下面是定义这两种线网的实例:,wire Reset;/1,位连线,Reset,wire 3:2,Cla,Pla,Sla,;/,Cla,,,Pla,和,Sla,都是,2,位连线,tri MSB,1:LSB+1 Art;/,三态线,Art,,位宽由表达式确定,21,wire(,或,tri),0,1,x,z,0,0,x,x,0,1,x,1,x,1,x,x,x,x,x,z,0,1,x,z,(,1,),wire(tri,),真值表,如果多个驱动源驱动一个连线,(,或三态线网,),这个线网的有效值由下列表决定,22,例子:,assign,Cla,=,Pla,&,Sla,;/,第,1,个驱动源,.,assign,Cla,=,Pla,Sla,;/,第,2,个驱动源,在这个例子中,,Cla,有两个驱动源。两个驱动源的值用于在上表中进行索引,以便决定,Cla,的有效值。,Cla,是一个向量,在查表确定其有效值时应按位操作。例如,如果第,1,个驱动源的值为,01x,,第,2,个驱动源的值为,11z,,那么,Cla,的有效值是,x1x,(两个值的第一位,0,和,1,在表中索引到,x,,第,2,位,1,和,1,在表中索引到,1,,第,3,位,x,和,z,在表中索引到,x,)。,23,wor,线或。,trior,三态线或。,线或的含义是只要这类线网的某个驱动源值是,1,,那么线网的值就是,1,。线或和三态线或在语法和功能上是一致的。例如:,wor,MSB:LSB Art;,trior,MAX,1:MIN,1,Rdx,Sdx,Bdx,;,(,2,),wor,和,trior,线网,24,wor,(,或,trior,),0,1,x,z,0,0,1,x,0,1,1,1,1,1,x,x,1,x,x,z,0,1,x,z,wor,和,trior,真值表,如果多个驱动源驱动这类线网,其有效值由下列表决定,25,wand,线与。,triand,三态线与。,线与的含义是只要这类线网的某个驱动源值是,0,,那么线网的值就是,0,。线与和三态线与在语法和功能上是一致的。例如:,wand,-7:0,Dbus,;,triand,Reset,Clk,;,(,3,),wand,和,triand,线网,26,wand,和,triand,真值表,wand(,或,triand,),0,1,x,z,0,0,1,0,0,1,0,1,x,1,x,0,x,x,x,z,0,1,x,z,如果这类线网存在多个驱动源,线网的有效值由下列表决定,27,trireg,三态寄存器。,这种线网可以存储数值(类似于寄存器),可用于电容节点的建模。当没有驱动源时,三态寄存器线网的缺省初始值为,x,。当它的所有驱动源都处于高阻态(值都为,z,)时,三态寄存器保存的值是作用在该线网上的最后一个值。例如:,(,4,),trireg,线网,28,tri0,三态,0,。,tri1,三态,1,。,这两类线网可以用于线逻辑的建模,即线网有多于一个驱动源。,tri0,(,tri1,)线网的特征是,若无驱动源驱动,它的值为,0,(,tri0,)或,1,(,tri1,)。例如:,tri0,3:3,GndBus
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!