Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第2章

上传人:E**** 文档编号:89350105 上传时间:2019-05-23 格式:PPT 页数:121 大小:835.50KB
返回 下载 相关 举报
Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第2章_第1页
第1页 / 共121页
Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第2章_第2页
第2页 / 共121页
Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第2章_第3页
第3页 / 共121页
Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第2章_第4页
第4页 / 共121页
Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第2章_第5页
第5页 / 共121页
点击查看更多>>
资源描述

《Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第2章》由会员分享,可在线阅读,更多相关《Verilog HDL数字集成电路设计原理与应用 教学课件 ppt 作者 蔡觉平_ 第2章(121页珍藏版)》请在金锄头文库上搜索。

1、,第2章 Verilog HDL基础知识,2.1 Verilog HDL的语言要素 2.2 数据类型 2.3 运算符 2.4 模块 本章小结,Verilog HDL语法来源于C语言基本语法,其基本词法约定与C语言类似。程序的语言要素也称为词法,是由符号、数据类型、运算符和表达式构成的,其中符号包括空白符、注释符、标识符和转义标识符、关键字、数值等。,2.1 Verilog HDL的语言要素,2.1.1 空白符 空白符包括空格符(b)、制表符(t)、换行符和换页符。空白符使代码看起来结构清晰,阅读起来更方便。在编译和综合时,空白符被忽略。 Verilog HDL程序可以不分行,也可以加入空白符采

2、用多行编写。,例2.1-1 空白符使用示例。 initial begin a = 3b100; b = 3b010; end 相当于: initial begin a = 3b100; b = 3b010; end,2.1.2 注释符 Verilog HDL语言中允许插入注释,标明程序代码功能、修改、版本等信息,以增强程序的可阅读性和帮助管理文档。Verilog HDL中有两种形式的注释。 (1) 单行注释:单行注释以“/”开始,Verilog HDL忽略从此处到行尾的内容。 (2) 多行注释:多行注释以“/*”开始,到“*/”结束,Verilog HDL忽略其中的注释内容。 需要注意的是,多

3、行注释不允许嵌套,但是单行注释可以嵌套在多行注释中。,例2.1-2 注释符使用示例。 单行注释: assign a=b /*注释行1 注释行2 */ 非法多行注释:/*注释内容 /*多行注释嵌套多行注释*/ 注释内容*/ 合法多行注释:/*注释内容 /多行注释嵌套单行注释*/,2.1.3 标识符和转义标识符 在Verilog HDL中,标识符(Identifier)被用来命名信号名、模块名、参数名等,它可以是任意一组字母、数字、$符号和_(下划线)符号的组合。应该注意的是,标识符的字母区分大小写,并且第一个字符必须是字母或者下划线。 例2.1-3 以下标识符都是合法的。 count COUNT

4、 /与count不同 _CC_G5 B25_78 SIX,例2.1-4 以下标识符都是不正确的。 30count /标识符不允许以数字开头 out* /标识符中不允许包含字符 * a+b-c /标识符中不允许包含字符 + 和 - n238 /标识符中不允许包含字符 为了使用标识符集合以外的字符或标号,Verilog HDL规定了转义标识符(Escaped Identifier)。采用转义标识符可以在一条标识符中包含任何可打印的字符。转义标识符以“”(反斜线)符号开头,以空白结尾(空白可以是一个空格、一个制表字符或换行符)。,例2.1-5 以下是合法的转义标识符。 a+b=c 7400 .*.$

5、 * Q OutGate /与OutGate相同,2.1.4 关键字 Verilog HDL语言内部已经使用的词称为关键字或保留字,它是Verilog HDL语言内部的专用词,是事先定义好的确认符,用来组织语言结构。用户不能随便使用这些关键字。需注意的是,所有关键字都是小写的。例如,ALWAYS不是关键字,它只是标识符,与always(关键字)是不同的。表2.1-1所示为Verilog HDL的常用关键字。,表2.1-1 Verilog HDL中的常用关键字,2.1.5 数值 Verilog HDL有四种基本的逻辑数值状态,用数字或字符表达数字电路中传送的逻辑状态和存储信息。Verilog H

6、DL逻辑数值中,x和z都不区分大小写,也就是说,0x1z与值0X1Z是等同的。Verilog HDL中的四值电平逻辑如表2.1-2所示。,表2.1-2 四值电平逻辑,在数值中,下划线符号“_”除了不能放于数值的首位外,可以随意用在整型数与实型数中,它们对数值大小没有任何改变,只是为了提高可读性。例如,16b1011000110001100和16b1011_0001_1000_1100的数值大小是相同的,只是后一种的表达方式可读性更强。,1整数及其表示 Verilog HDL中的整数可以是二进制(b或B)、八进制(o或O)、十进制(d或D)与十六进制(h或H),其基数符号和可以采用的数字字符集如

7、表2.1-3所示。,表2.1-3 数制的基数符号与数字字符集,整数的表示形式为如下: +/- 其中,“+/-”是正数和负数标示;size指换算过后的二进制数的宽度;“”为基数格式表示的固有字符,该字符不能缺省,否则为非法表示形式;base_format是其基数符号;number是可以使用的数字字符集,形式上是相应进制格式下的一串数值。,使用整数时需要注意的是: (1) 在较长的数之间可以用下划线来分开,目的是提高可读性,下划线本身没有意义,如16b1110_1011_0011_1010,但下划线符号不能用作首字符。 (2) 当数字没有说明位宽时,默认为32位。 (3) x或z在二进制中代表1位

8、x或z,在八进制中代表3位x或z,在十六进制中代表4位x或z,其代表的宽度取决于所用的进制。例如: 8b1011xxxx /等价于8hBx 8b1001zzzz /等价于8h9z,(4) 若没有定义一个整数的位宽,其宽度为相应值中定义的位数。例如: o642 /9位八进制数 hBD /8位十六进制数,(5) 若定义的位宽比实际数的位数大,则在左边用0补齐。但如果数最左边一位为x或z,就相应地用x或z在左边补齐。例如: 10b101 /左边补0,得0000000101 8bz0x1 /左边补z,得zzzzz0x1 如果定义的位宽比实际数的位宽小,那么最左边的位被截断。例如: 4b10111011

9、 /等价于4b1011 6HFFFB /等价于6H3B,(6) “?”是高阻态z的另一种表示符号。在数字的表示中,字符“?”和Z或z是等价的,可互相替代。例如:4b? 等价于4bzzzz。 (7) 整数可以带正、负号,并且正、负号应写在最左边。负数表示为二进制的补码形式。例如:-4等价于4b1100。 (8) 如果位宽和进制都缺省,则代表十进制数。例如:-15代表十进制数-15。 (9) 数字中不能有空格,但在表示进制的字母两侧可以有空格。,例2.1-6 下面是一些合法的整数表示。 8b10001101 /位宽为8位的二进制数10001101 8ha6 /位宽为8位的十六进制数a6 5o35

10、/5位八进制数35 4d6 /4位十进制数6 4b1x_01 /4位二进制数1x01 5hx /5位十六进制数x (扩展的x),即xxxxx,4hz /4位十六进制数z,即zzzz 8 h 2A /在位宽和字符之间以及进制和数值之间可以有空格, /但数字之间不能有空格,例2.1-7 下面是错误的整数表示。 4d-4 /数值不能为负,有负号应放最左边 3 b001 / 和基数b之间不允许出现空格 (4+4) b11 /位宽不能是表达式形式,2实数及其表示 实数有两种表示方法。 (1) 十进制表示法。采用十进制格式,小数点两边必须都有数字,否则为非法的表示形式。例如:3.0、4.54、0.2等都是

11、正确的,而5.是错误的。 (2) 科学计数法。例如:564.2e2的值为56420.0,8.7E2的值为870.0(e不分大小写),3E-3的值为0.003。 Verilog HDL还定义了实数转换为整数的方法,实数通过四舍五入转换为最相近的整数。例如:-13.74转换为整数是-14,33.27转换为整数是33。,例2.1-8 实数表示示例。 2.7 /十进制计数法 5.2e8 /科学计数法 3.5E-6 /科学计数法可用e或E表示,其结果相同 5_4582.2158_5896 /使用下划线提高可读性 6. /非法表示 .3e5 /非法表示,3字符串及其表示 字符串是指用双引号括起来的字符序列

12、,它必须包含在同一行中,不能分行书写。若字符串用作Verilog HDL表达式或赋值语句中的操作数,则字符串被看做8位的ASCII值序列,即一个字符对应8位的ASCII值。例如“hello world“和“An example for Verilog HDL“是标准的字符串类型。,在Verilog HDL中,数据类型共有19种,分别是wire、tri、tri0、tri1、wand、triand、trireg、trior、wor、reg、large、small、scalared、medium、vectored、integer、time、real、 parameter型。,2.2 数 据 类 型,

13、按照抽象程度,Verilog HDL的数据类型又可划分为两大类:物理数据类型(主要包括连线型及寄存器型)和抽象数据类型(主要包括整型、时间型、实型及参数型)。 物理数据类型的抽象程度比较低,与实际硬件电路的映射关系比较明显;而抽象数据类型则是进行辅助设计和验证的数据类型。,2.2.1 物理数据类型 Verilog HDL最主要的物理数据类型是连线型、寄存器型和存储器型,并使用四种逻辑电平和八种信号强度对实际的硬件电路建模。四值逻辑电平是对信号的抽象表示方式(见表2.1-2)。信号强度表示数字电路中不同强度的驱动源,用来解决不同驱动强度下的赋值冲突,逻辑0和1可以用表2.2-1列出的强度值表示,

14、驱动强度从supply到highz依次递减。,表2.2-1 强 度 等 级,1连线型 连线型变量包含多种类型,表2.2-2给出了各种连线型变量类型以及相应的含义。,表2.2-2 连线型数据类型及其功能描述,连线表示逻辑单元的物理连接,可以对应为电路中的物理信号连线,这种变量类型不能保持电荷(除trireg之外)。连线型变量必须要有驱动源,一种是连接到一个门或者模块的输出端,另一种是用assign连续赋值语句对它进行赋值。若没有驱动源,将保持高阻态z。,1) wire和tri 在众多的连线型数据类型中,最常见的是wire(连线)和tri(三态线)两种,它们的语法和语义一致。不同之处在于:wire

15、型变量通常用来表示单个门驱动或连续赋值语句驱动的连线型数据,tri型变量则用来表示多驱动器驱动的连线型数据,主要用于定义三态的线网。Wire/tri的真值表如表2.2-3所示。,表2.2-3 wire/tri真值表,上述真值表可以理解为,同时有两个驱动强度相同的驱动源来驱动wire或tri变量时的输出结果。 例2.2-1 连线型变量示例。 wire 2:0c; assign c =3b0x1; assign c = 3b1z1; /c=3bxx1;,在上面的例子中,两个驱动源共同决定c的值。第一个赋值语句右侧表达式的值为0x1,第二个赋值语句右侧表达式的值为1z1,那么c 的有效值是xx1。这是因为0和1同时驱动的结果为x,x和z同时驱动的结果为x,而1和1同时驱动的结果为1。,2) wor和trior 当有多个驱动源驱动wor和trior型数据时,将产生线或结构,其真值表如表2.2-4所示。,表2.2-4 wor/trior真值表,3) wand和triand 当有多个驱动源驱动wand和triand型数据时,将产生线与结构,其真值表如表2.2

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号