数字电子技术 教学课件 ppt 作者 包晓敏 第4章

上传人:E**** 文档编号:89502632 上传时间:2019-05-26 格式:PPT 页数:145 大小:4.63MB
返回 下载 相关 举报
数字电子技术 教学课件 ppt 作者 包晓敏 第4章_第1页
第1页 / 共145页
数字电子技术 教学课件 ppt 作者 包晓敏 第4章_第2页
第2页 / 共145页
数字电子技术 教学课件 ppt 作者 包晓敏 第4章_第3页
第3页 / 共145页
数字电子技术 教学课件 ppt 作者 包晓敏 第4章_第4页
第4页 / 共145页
数字电子技术 教学课件 ppt 作者 包晓敏 第4章_第5页
第5页 / 共145页
点击查看更多>>
资源描述

《数字电子技术 教学课件 ppt 作者 包晓敏 第4章》由会员分享,可在线阅读,更多相关《数字电子技术 教学课件 ppt 作者 包晓敏 第4章(145页珍藏版)》请在金锄头文库上搜索。

1、数字电子技术,书号:978-7-111-36240-1 机械工业出版社 本书课件及答案下载网页链接为: http:/ Verilog HDL硬件描述语言与软件实现,章目录,节目录,目 录,4.1 Verilog HDL的特点与基本结构,4.2 Verilog HDL语言要素,4.3 Verilog HDL基本语句,4.4 Verilog HDL门元件和结构描述方式,4.5 仿真验证与可综合设计,4.6 组合逻辑电路设计实践,4.7 有限状态机的设计,章目录,节目录,4.1 Verilog HDL的特点与基本结构,特点:适合于各个层次的电路计设计和描述,开关级,系统级,行为级,RTL(Regis

2、ter Transfer Level)级,门级,章目录,节目录,基本结构,module () endmodule,数字系统,模块(Module),Verilog HDL,章目录,节目录,模块定义,结束行,模块名,【例】用Verilog语言描述一位加法器,module adder(a,b,sum);,端口列表,input a,b; output 1:0 sum; wire a,b; reg 1:0 sum;,always(a or b) begin sum = a+b; end,endmodule,module模块名称(端口1,端口2,端口N);,端口状态:input (output),数据类型

3、: wire, reg,always语句和begin-end串行块,章目录,节目录,Verilog HDL模块例化,模块例化:程序调用,模块名 例化名 (端口1信号名(连接端口1信号名), 端口2信号名(连接端口2信号名), 端口3信号名(连接端口3信号名), );,例化方法:,位置映射法,信号名称映射法,混合映射法,章目录,节目录,例如: module compare_app1(result0, a0, b0, result1, a1, b1); input 7:0 a0, b0, a1, b1; output result0, result1; /第1次调用比较器子模块,利用信号名称映射法

4、 compare_core inst_compare_core0( .result(result0), .a(a0), .b(b0) ); /第2次调用比较器子模块,利用信号名称映射法 compare_core inst_compare_core1( .a(a1), .b(b1), . result(result1) ); endmodule,章目录,节目录,4.2 Verilog HDL语言要素,章目录,节目录,4.2.1 标识符与注释,4.2.2 数据类型,4.2.3 运算符,4.2.4 编译预处理语句,4.2.5 系统任务与系统函数,Sdfj_kiu /允许在标识符内部包含下划线) _s

5、dfji /允许以下划线开头字母区分大小写,标识符(Identifier):赋给对象的唯一名称,通过标识符可提及相应的对象。如:,1.标识符必须由字母(az,Az)或下划线开头; 2.字母区分大小写,后续部分可以是字母、数字、下划线和$符号的组合; 3.总长度要小于1024个字符长度。,注意,4.2.1 标识符与注释,章目录,节目录,转义标识符:以反斜杠“”开头,以空白符(空白符可以是一个空格、一个Tab键、一个制表符或者一个换行符等)结尾的任意字符串序列。转义标识符本身没有意义。如:,标识符不能和Verilog HDL语言的关键词重复,关键词是用小写字母定义的,用户命名时要避免使用。,注意,

6、n t ” (*+7u) 23kie /可以以任意可打印的字符开头,章目录,节目录,注释(Comment) :在代码中添加注释行可以提高代码的可读性和可维护性。,多行注释,Verilog HDL中有以下两种形式的注释。 (1)/ 注释内容 (2)/* 注释内容 */,章目录,节目录,4.2.2数据类型,数据类型 (Data types),常量,变量,整型,实型,字符型,线型,寄存器型,章目录,节目录,1.逻辑数值(Number),基本逻辑数值,0:逻辑0或“假”;,1:逻辑1或“真”;,x:未知;,z:高阻。,(1)x、z不区分大小写; (2)也可以用?表示z。,注意,章目录,节目录,2.常量

7、(Constants),整数(integer),实数(reals),字符串(strings),章目录,节目录,整数定义的格式为: ,(1)整数(integer),二进制,八进制,十进制,十六进制,8h3F (8位十六进制数) h15 (十六进制15),8b1100_0001 (8位二进制数) b01x (二进制01x),9d6 (9位十进制数) 15 (十进制15),常量的位数,(B),(O),(D),(H),基数默认为十进制数,数值可为0、1、x(X)、z(Z)或?,下划线“_”增加可读性,章目录,节目录,(2)实数(Reals),十进制计数法,科学计数法,如 0.5,128.78329,如

8、 1.7e8(指数符号: e或E),实数可根据四舍五入的原则转化为整数,将实数赋值给一个整数时,这种转化会自行发生。,章目录,节目录,(3)字符串(Strings),在表达式和赋值语句中用字符串作为操作数,其数据类型转换成无符号整型常量,取值为对应字符的ASCII码(一个字符用8位二进制数表示)。,注意,字符串必须写在双引号内,不能分多行写;,reg1:8*7 Char; Char=counter,存储字符串ounter, 变量需要87位,章目录,节目录,(3)字符串(Strings),输出特定格式特殊字符,需要一些特殊字符配合,章目录,节目录,(3)字符串(Strings),【实例】字符串,

9、module string_test; reg8*14-1 stringvar; initial begin stringvar =”hello world”; $display(“%s is stord %h”,stringvar,stringvar); stringvar =stringvar,”!”; $display(“%s is stord as %h”,stringvar,stringvar); end endmodule,章目录,节目录,参数是特殊的常量,常用来定义时延和变量宽度等。 参数定义的格式为: parameter 参数名1表达式1,参数名2表达式2,参数名2表达式2,;

10、,3.参数(Parameters),用参数delay代替延时常数10, 用bus_width代替总线宽度常数32, 用msb、lsb代替最高有效位7和最低有效位0,【例4.2.2】参数定义 module example_for_parameters(reg_a,bus_addr,); parameter msb7,1sb0,delay10,bus_width32; regmsb:1sb reg_a; regbus_width-1:0 bus_addr; and #delay(out,and1,and2); endmodule,章目录,节目录,例4.2.2 参数定义 module example

11、_for_parameters(reg_a,bus_addr,); parameter msb7,1sb0,delay10,bus_width32; regmsb:1sb reg_a; regbus_width-1:0 bus_addr; and #delay(out,and1,and2); endmodule,章目录,节目录,线型变量的值由驱动元件的值决定,并具有实时更新性; 通常表示硬件电路中元器件间的物理连接; 变量的每一位可以是0、1、x或z; 线型变量在无驱动源时呈高阻态(trireg保持在不定态)。,4.线型变量(Nets),章目录,节目录,4.线型变量(Nets),wire型变量

12、是常用的线型变量,其赋值只能通过assign语句来完成,不能用于always语句中。 Verilog HDL模块的输入/输出端口的默认值就是wire型。 其定义的格式为: wire in1,in2; /inl、in2默认为1位宽的线型变量 wire7:0 local_bus; /local_bus定义为8位宽的线型变量,章目录,节目录,寄存器型变量的定义方式为: reg in3,in4; /in3、in4默认为1位宽的寄存器型变量 reg7:0 local_bus; /local_bus为8位宽的寄存器型变量,5、寄存器型变量(Registers),具有“寄存”性:在接受下一次赋值前,保持原值

13、不变; 寄存器型变量的默认值是不定值x; 寄存器型变量只能在always语句和initial语句中被赋值; 寄存器型变量没有强度之分; 寄存器类变量必须明确给出类型说明(无默认状态)。,章目录,节目录,5、寄存器型变量(Registers),常用寄存器型变量及说明,reg型变量是常用的寄存器型变量。,integer、real和time用于纯数学的抽象描述,不对应硬件电路。,章目录,节目录,Verilog HDL通过对reg型变量建立数组来对存储器建模,可描述RAM、ROM存储器和寄存器数组。数组中的每一个单元通过索引进行寻址。Memory型通过扩展reg型数据的地址范围来达到二维数组的效果。,

14、6、存储器(Memories),定义的格式如下: regwordsize-1:0 memory_namememsize-1:0;,例如: parameter wordsize = 16, memsize = 1024; regwordsize-1:0 mem_rammemsize-1:0;,定义了一个由1024个16位寄存器构成的存储器,即存储器的字长为16位,容量为1K。,章目录,节目录,一个由n个1位寄存器构成的存储器组是不同于一个n位寄存器; regn-1:0 rega; /一个n位寄存器 reg meman-1:0 /一个由n个1位寄存器构成的存储器组,memory类型变量和reg类型

15、变量的区别:,对memory中的存储单元进行读/写操作,必须指定该单元在存储器中的地址。,进行寻址的地址索引可以是表达式,从而实现对存储器中的不同单元进行操作。,mema4=0; /将memory中的第4个存储单元赋值为0,章目录,节目录,4.2.3 运算符,运算符:是Verilog HDL预定义的函数符号,这些函数符号对被操作的对象(即操作数)进行规定的运算。运算符可分为三种: (1)单目运算符(Unary operator):可以带一个操作数,操作数放在运算符的右边; (2)双目运算符(Binary operabr):可以带两个操作数,操作数放在运算符的两边; (3)三目运算符(Ternary operator):可以带三个操作数,操作数被运算符隔开。,章目录,节目录,Verilog HDL的运算符,章目录,节目录,1算术运算符(Arithmetic operators),算术运算符又称为二进制运算符,包括: (1)+加法运算符,或正值运算符,如a+b,+3; (2)-减法运算符,或负值运算符,如a-3,-3; (3)*乘法运算符,如a*3; (4)/除法运算符,如5/3; (5)%求余运算符,要求%两边均为整型数据

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

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

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