Verilog HDL数字系统设计——原理、实例及仿真 教学课件 ppt 作者 康磊 第1-7章 第2章

上传人:E**** 文档编号:89354490 上传时间:2019-05-23 格式:PPT 页数:36 大小:630KB
返回 下载 相关 举报
Verilog HDL数字系统设计——原理、实例及仿真 教学课件 ppt 作者 康磊 第1-7章 第2章_第1页
第1页 / 共36页
Verilog HDL数字系统设计——原理、实例及仿真 教学课件 ppt 作者 康磊 第1-7章 第2章_第2页
第2页 / 共36页
Verilog HDL数字系统设计——原理、实例及仿真 教学课件 ppt 作者 康磊 第1-7章 第2章_第3页
第3页 / 共36页
Verilog HDL数字系统设计——原理、实例及仿真 教学课件 ppt 作者 康磊 第1-7章 第2章_第4页
第4页 / 共36页
Verilog HDL数字系统设计——原理、实例及仿真 教学课件 ppt 作者 康磊 第1-7章 第2章_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《Verilog HDL数字系统设计——原理、实例及仿真 教学课件 ppt 作者 康磊 第1-7章 第2章》由会员分享,可在线阅读,更多相关《Verilog HDL数字系统设计——原理、实例及仿真 教学课件 ppt 作者 康磊 第1-7章 第2章(36页珍藏版)》请在金锄头文库上搜索。

1、第2章 Verilog HDL 基础,2.1 Verilog HDL的特点 2.2 程序设计流程 2.3 程序的基本结构 2.4 语法基础,2.1 Verilog HDL的特点 Verilog HDL语言描述硬件单元的结构简单、易读,其最大特点就是易学易用,如果有C语言的编程经验,在一个较短的时间内即能很快掌握。但Verilog HDL较自由的语法,也容易使初学者犯一些错误,这一点应注意。 Verilog HDL 语言具有多种描述能力,包括设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。,Verilog HDL语言编写的模型可使用Verilo

2、g仿真器进行验证,它从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解,但是Verilog HDL的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。完整的硬件描述语言可以对从最复杂的芯片到完整的电子系统进行描述,主要特点如下: (1) Verilog HDL是一种用于数字逻辑电路描述的语言,主要用于逻辑电路的建模、仿真和设计。 (2) 用Verilog HDL描述的电路设计就是该电路的Verilog HDL模型。,(3) Verilog HDL 既是一种行为描述语言也是一种结构描述语言,既可以用电路的功能描述,也可以用元器件和

3、它们之间的连接来建立所设计电路的Verilog HDL模型。 (4) Verilog模型可以是实际电路不同级别的抽象,这些抽象的级别和它们对应的模型类型共有以下五种:,系统级(System)用高级语言结构实现设计模块行为的模型; 算法级(Algorithmic)用高级语言结构实现设计算法行为的模型,部分可综合; RTL级(Register Transfer Level)描述数据在寄存器之间流动和处理这些数据行为的模型,可综合; 门级(Gate-Level)描述逻辑门以及逻辑门之间连接的模型; 开关级(Switch-Level)描述器件中三极管和存储器件以及它们之间连接的模型。,2.2 程序设计

4、流程 图2.1所示是一个典型的FPGA/CPLD设计流程,而如果是ASIC设计,则不需要STEP5这个环节,只要把综合后的结果直接交给集成电路生产厂家即可。,图2.1 典型的FPGA/CPLD设计流程,2.3 程序的基本结构 2.3.1 模块的概念 模块(module)是Verilog HDL设计中的基本描述单位,用于描述某个设计的功能或结构及其与其他模块通信的外部端口。每个Verilog HDL设计的系统都是由若干个模块组成的,所以在学习基本语法之前有必要了解模块的概念。模块具有如下特征: (1) 每个模块在语言形式上是以关键词module开始、以关键词endmodule结束的一段程序。 (

5、2) 模块代表硬件电路上的逻辑实体,其范围可以从简单的门到整个大的系统,比如一个计数器、一个存储子系统、一个微处理器等。,(3) 模块可以根据描述方法的不同定义成行为型或结构型(或者是二者的组合)。行为型模块通过传统的编程语言结构定义数字系统(模块)的状态,如使用if条件语句、赋值语句等。结构型模块是将数字系统(模块)的状态表达为具有层次概念的互相连接的子模块。 (4) 每个模块都可实现特定的功能。 (5) 模块是分层的,高层模块通过调用、连接底层模块的实例来实现复杂的功能。 (6) 模块之间是并行运行的。 图2.2是一个完整模块的结构示意图,从图中我们可以看出模块作为Verilog HDL设

6、计中最基本的单元的结构组成。,图2.2 模块结构示意图, 模块名是模块唯一性的标识符(模块的名称)。 端口定义是端口(输入、输出和双向端口)的列表,这些端口用来与其他模块进行连接。端口类型有三种:输入端口(input)、输出端口(output)和输入/输出(双向)端口(inout)。 通过图2.3模块的端口示意图,我们可以更清楚地了解模块端口。,图2.3 模块的端口示意图, 数据类型声明是对模块中所用到的信号(包括端口信号、节点信号等)进行数据类型的定义,也就是指定数据对象为寄存器型、存储器型、线型等。 逻辑功能定义是模块中最核心的部分,有多种方法可在模块中描述和定义逻辑功能,还可以调用函数(

7、function)和任务(task)来描述逻辑功能,可以包含 initial结构、always结构、连续赋值或模块实例等。 标识模块结束的endmodule之后没有分号。,【例2.1】 一个三位二进制加法器。,【例2.2】 2选1数据选择器。,图2.4 2选1数据选择器逻辑图,【例2.3】 一位比较器。,【例2.4】 调用子模块举例。,2.3.2 模块的调用 模块调用是Verilog HDL结构描述的基本构成方式。我们可以把一个模块看做由其他模块像积木块一样搭建而成的,所有被当前模块调用的其他模块都属于低一层次的模块,如果当前模块不再被其他模块所调用,那么这个模块一定是所谓的顶层模块。在一个硬

8、件系统的描述中必定有而且只能有一个顶层模块。,【例2.5】 以二选一数据选择器为例,实现模块调用。,调用模块实例的一般形式如下: ; 其中,是要调用子模块的名称,如上例中调用的是mymux2;是传输到子模块的参数值,参数传递的典型应用是定义门级时延,例2.5中没有用到;是把子模块实例化后的名称,例2.5中的实例名是m2;是实现子模块连接并实现高层模块功能的关键。,2.3.3 模块的测试 Verilog HDL模型建成之后,为确保其正确性,应当对模块进行测试,这需要编写测试程序(testbench),也即用一段程序产生测试信号序列,作为待测模块的输入信号,并测试被测模块的输出信号,用以测试所设计

9、的模块能否正常运行。,【例2.6】 2选1数据选择器测试模块的描述。,进行功能仿真后可以得到图2.5的仿真波形和图2.6的仿真监测结果,通过对这些输入、输出信号进行分析,检查模块的功能是否满足设计要求。,图2.5 仿真波形,图2.6 仿真监测结果,上述程序仿真后将产生如下结果: (1) 仿真器执行所有的事件后自行停止,因此不需要指定仿真结束时间。 (2) 在Verilog HDL硬件编程中,模块的调用是硬件的实现,每一次调用(实例化)都将产生实现这个模块功能的一组电路。,2.4 语 法 基 础 2.4.1 程序基本格式 Verilog HDL是一种书写格式非常自由的语言,即语句可以在一行内编写

10、,也可跨行编写;每一句均用分号分隔;由空格(b)、制表符(t)和换行符组成空白符,在文本中起一个分隔符的作用,在编译时被忽略。,例如: initial begin Top = 3b001; #2 Top = 3b011; end 和下面的程序一样:,2.4.2 注释语句 Verilog HDL中有两种注释的方式。 1多行注释 多行注释以起始符“/*”开始,以终止符“*/”结束,两个符号之间的语句都是注释语句,因此可扩展到多行。例如:,【例2.7】 多行注释举例。,2单行注释 单行注释以符号/开头,表示以/开始到本行结束都属于注释语句,而且它只能注释到本行结束。 【例2.8】 单行注释举例。 r

11、eg in1,in2; /定义两个寄存器变量in1、in2,2.4.3 标识符和关键字 标识符(identifier)用于定义模块名、端口名、信号名等。Verilog HDL 中的标识符可以是任意一组字母、数字、$符号和_(下划线)符号的组合,但标识符的第一个字符必须是字母或者下划线,不能是数字。单个标识符的总字符数不能超过1024个。另外,标识符是区分大小写的。以下是标识符的几个例子:,2.4.4 参数声明 在Verilog HDL中用parameter来定义常量,即用parameter来定义一个代表常量的标识符,称为符号常量,采用标识符常量可提高程序的可读性和可维护性。parameter型数据是一种常数型的数据,其说明格式如下: parameter 参数名1 = 表达式,参数名2 = 表达式,参数名n = 表达式;,parameter是参数型数据的关键字,其后跟一个用逗号分隔开的赋值语句表。每一个赋值语句的右边必须是一个常数表达式。也就是说,该表达式只能包含数字或先前已定义过的参数。例如:,【例2.9】 使用参数来声明程序中的常数,如时延、信号宽度。,

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

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

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