可编程逻辑电路原理与应用-第三章 vhdl语言与应用设计

上传人:aa****6 文档编号:51085200 上传时间:2018-08-12 格式:PPT 页数:302 大小:1.41MB
返回 下载 相关 举报
可编程逻辑电路原理与应用-第三章 vhdl语言与应用设计_第1页
第1页 / 共302页
可编程逻辑电路原理与应用-第三章 vhdl语言与应用设计_第2页
第2页 / 共302页
可编程逻辑电路原理与应用-第三章 vhdl语言与应用设计_第3页
第3页 / 共302页
可编程逻辑电路原理与应用-第三章 vhdl语言与应用设计_第4页
第4页 / 共302页
可编程逻辑电路原理与应用-第三章 vhdl语言与应用设计_第5页
第5页 / 共302页
点击查看更多>>
资源描述

《可编程逻辑电路原理与应用-第三章 vhdl语言与应用设计》由会员分享,可在线阅读,更多相关《可编程逻辑电路原理与应用-第三章 vhdl语言与应用设计(302页珍藏版)》请在金锄头文库上搜索。

1、第三章 VHDL语言与应用设计 n 3.1 VHDL硬件描述语言简介 n 3.2 VHDL的结构与语言要素n 3.3 VHDL的基本语句n 3.4 VHDL应用设计实例 3.1 VHDL硬件描述语言简介VHDL(VHSIC Hardware Description Language)是一种标准的硬件描述语言, 它是在20世纪7080年代中, 由美国国防部资助的VHSIC (Very High Speed Integrated Circuit)项目开发的产品。 在这个语言首次开发出来时, 其目标仅是使电路文本化的一种标准, 为了使人们采用文本方式描述的设计, 能够被其他人所理解。1987年,VH

2、DL被正式确定为IEEE 1076标准。 VHDL可使各种复杂度(系统级、 电路板级、 芯片级、 门级)的电路网络在同一抽象程度上被描述。 1993年,IEEE 1076标准被升级、 更新, 新的 VHDL标准为IEEE 1164。 1996年, IEEE 1076.3成为VHDL综合标准。 (1). VHDL的优点VHDL已成为一个数字电路和系统的描述、 建模、 综合的工业标准。 在电子产业界, 无论ASIC设计人员, 还是系统级设计人员, 都需要学习VHDL, 来提高工作效率。 由于VHDL所具有的通用性, 它成为可支持不同层次设计者需求的标准语言。VHDL有如下所述的一些优点。1)功能强

3、大, 灵活性强VHDL具有功能强大的语言结构, 可用简洁明确的代码描述来进行复杂控制逻辑的设计。它还具有多层次的设计描述功能, 支持设计库和可重复使用的元件生成。 VHDL是一种设计、 模拟、 综合的标准硬件描述语言。 2)不依赖于器件设计 VHDL允许设计者生成一个设计, 而并不需要首先选择一个用来实现设计的器件。 对于同一个设计描述, 可以采用多种不同的器件结构来实现其功能。 若需对设计进行资源利用和性能方面的优化, 也并不是要求设计者非常熟悉器件的结构才行。3)可移植性因为VHDL是一个标准语言, 故VHDL的设计描述可以被不同的工具所支持, 可以从一个模拟工具移植到另一个模拟工具, 从

4、一个综合工具移植到另一个综合工具, 从一个工作平台移植到另一个工作平台去执行。4)性能评估能力非依赖器件的设计(Device Independent Design) 和可移植能力允许设计者采用不同的器件结构和不同 的综合工具来评估设计。 设计者可以进行一个完整的设计描述, 并且对其 进行综合, 生成选定的器件结构的逻辑功能, 然后评 估结果, 选用最适合你设计需求的器件。 为了衡量综合的质量, 可用不同的综合工具所得 到的综合结果来进行分析、 评估。(2). VHDL的不足之处 VHDL的不足之处是:(1) 电路采用高级的简明结构VHDL描述, 意味着放弃了对电路门级实现定义的控制; (2)

5、由综合工具生成的逻辑实现效果有时不优化; (3) 采用工具的不同导致综合质量不一样。 VHDL设计数字系统,可划分为6个步骤: (1) 设计要求的定义; (2) 用VHDL进行设计描述(系统描述与代码设计); (3) 原代码模拟; (4) 设计综合、 设计优化和设计的布局布线; (5) 布局、 布线后的设计模块模拟; (6) 设计实现的工作(如芯片的物理版图设计、 可编程门阵列器件的编程等)。 (3). VHDL的设计步骤 (4). VHDL程序的结构库说明(LIBRARY)程序包使用说明(USE)实体说明(ENTITY)结构体(ARCHITECTURE)配置(CONFIGURATION)在V

6、HDL中, 基本单元是设计实体。 设计实体可以是整个系统, 如像CPU那样复杂的系统,也可以是一个芯片、 逻辑器件, 或者是一个最简单的门电路 。 在VHDL中, 设计实体可以代表任何一个模块, 它可以是某个层次中的一个元件, 也可以是设计中的顶层模块。 设计实体由实体说明和构造体(结构体)所组成。 实体说明用来描述电路的外部特征(接口说明)。构造体用来描述电路的内部逻辑。 图 设计实体的组成 3.2 VHDL的结构与语言要素l VHDL语言是现代数字系统设计的基本硬件描述语言。 l VHDL+EDA工具+FPGA器件, 构成了典型的数字系统现场集成设计方式, 正推 动着数字系统设计技术的进步

7、。 VHDL硬件描述语言语法的基本要素是: 数据对象、 数据类型、 运算符和标识符。3.2.1 VHDL基本要素3.2.1.1 数据对象(data object)定义:可以赋予一个值的对象VHDL语言的数据对象有:信号、 变量、 常量信号l 是描述硬件系统的基本数据对象,类似于电路内部的连线和节点。l 信号说明全局量, 用于描述中的结构(构造)体( Architecture)、 实体(Entity)和程序包(Package)。l 信号定义: SIGNAL 信号名: 数据类型: =初始值信号定义示例:SIGNAL sl: std_logic:=0定义了一个标准的单值信号sl,初始值为低电平。SI

8、GNAL s2: std_logic_vector(15 DOWNTO 0)定义了一个标准的位矢量信号s2,共有16个信号元素。l 信号定义了数据类型后,就可对其赋值。信号 的赋值语句格式为:目标信号名 ,库名;USE . . ALLUSE . . ;关键词LIBRARY指明所使用的库名,USE指明库中程序包。例: LIBRARY ieee;USE ieee. std_logic_1164. ALL;USE ieee.std_logic_1164. rising_edge;表示打开ieee库,允许设计程序中被描述器件的输入、输出端口和数据类型使用ieee标准库中的std_logic_1164.

9、ALL程序包和std_logic_1164程序包中的rising_edge函数。库的种类n VHDL库分为设计库和资源库,设计库不需要使用LIBRARY和USE子句声明,资源库是标准模块和常规元件存放的库,使用之前需要声明。n VHDL库的设计库主要是STD库、 WORK库;n VHDL库的资源库包括用户定义库和IEEE库。(1) IEEE库 该库存放了IEEE 1076中的标准设计单元, 如程序包std_logic_1164、 numeric_std和 numeric_bit。其中std_logic_1164是最重要和最常用的程 序包。Synopsys的std_logic_arith, st

10、d_logic_signed, std_logic_unsigned也并入 了IEEE库。(2) STD库 逻辑名为STD的库是所有设计单元隐含定 义的库, 即下面的LIBRARY子句隐含存在任意设计单元之前, 而不需显式地写出。 LIBRARY STD; STD库中包含预定义的程序包Standard和 Textio。(3) WORK库 用户当前库, 可用于保存当前正在进行的设计; 它也是在开发过程中, 各种VHDL工具处理设计文件的地方。 用户在设计项目中已经设计好的,正在校验、未仿真的中间件等均放在工作库work中。 (4) 用户定义库 VHDL工具厂商往往都有他们自己的资源库, 其中包括

11、各厂商自己预定义的程序包。 用户可以直接使用这些库。 另外, 用户也可以建立自己的资源库, 如对每个项目建立的用户库等。 为了使用已经定义好的某个资源库, 必须在要使用资源库的每个设计单元的开头用LIBRARY子句显式地说明。 (5) 面向ASIC库 FPGA公司提供的现成的IP资源库, 有许多可以由用户定制的功能元件形式出现的设计。 这些元件的功能范围从简单的加法器、 多路选择器等到复杂的系统级的滤波器、 存储器模块等。 这些功能元件都经过专业设计和验证, 并在性能和占用器件资源等方面进行了优化。 应用它们对提高设计效率和质量十分有利。 2) 程序包程序包是一个可编译的设计单元, 也是库结构

12、中的一个层次, 用来存放各个设计共 享的信号定义、 常数定义、 数据类型、 元件 结构、 函数定义和过程定义等。程序包的一般格式: PACKAGE 程序包名IS说明单元END PACKAGE程序包名; 以下为程序包包体单元PACKAGE BODY 程序包名 IS说明单元END PACKAGE BODY程序包名; 程序包体名应该与其对应的程序包说明的名字相同。 程序包说明单元是主设计单元, 它可以独立编译并插入设计库中。 程序包体是次级单元, 它可以在其对应的主设计单元编译并插入设计库之后独立进行编 译, 然后插入设计库中。 例如: 程序包的说明单元PACKAGE my_package ISFU

13、NCTION and_f(a, b: STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR; TYPE my_array IS ARRAY 2 DOWNTO 0 OF STD_LOGIC_VECTOR(3 DOWNTO 0); CONSTANT my_5v: STD_LOGIC_VECTOR(7 DOWNTO 0):=(OTHER = 1); END; 程序包的包体单元PACKAGE BODY my_pack ISFUNCTION add_f(a, b: STD_LOGIC_VECTOR) RETURN STD_LOGIC_VECTOR ISBEGINRETURN

14、(0 END; 常用程序包VHDL标准提供了一些预先定义的标准程序包,包括 standard,textio,std_logic_1164,numeric_std,numeric_bit等程序包。std_logic_1164程序包定义了一些数据类型、子类型和函数,这些定 义将VHDL扩展为能描述多值逻辑的硬件描述语言。该程序包对所有设计实体均不可见,在使用时 需在VHDL开始部分添加以下语句:LIBRARY ieee;USE ieee.std_logic_1164.ALL;std_logic_arith程序包该程序包已预先编译在ieee库中,在 std_logic_1164程序包基础上的扩展。s

15、td_logic_signed和std_logic_unsigned程序包该程序包已预先编译在ieee库中,其中 std_logic_signed定义有符号数的运算,std_logic_unsigned定义无符号数的运算,standard程序包存在于标准设计库std中。定义了布尔量类型,位类型,字符类型,实数类型,整数类型等 。textio程序包存在于标准设计库std中。定义了line类型, text类型,文件input等。程序包textio对所有设计实体均不可见,故在使用它时需要在VHDL程序的开始部分添加:LIBRARY std;USE std.textio.ALL;3.3 VHDL的基本

16、语句 VHDL语句主要是并行语句 Concurrent statements和顺序语句Sequential statements。 并行语句在执行过程中,语句的执行顺序与语句的书写顺序无关,所有语句是并发执行的。 顺序语句在执行过程中,语句的执行顺序按照语句的书写顺序依次执行的。 并行语句主要用于表示算法模块间的连接关系, 顺序语句主要用于实现模型的算法部分。 结构体中各个模块之间是并行执行的,应采用并行语句来描述。 模块内部的语句则需根据描述方式决定,即模块内部既可采用并行描述语句,也可采用顺序描述语句。实际电子系统中,几乎所有操作都是并发执行的 。 这些操作没有顺序之分。一旦得到事件触发,它们就 会开始工作。 为了描述电子系统的工作方式,VHDL提供了并行 描述语句。 各种并行语句在结构体中的执行是同步进行的,即 并行运行的,其执行

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

当前位置:首页 > 办公文档 > PPT模板库 > 教育/培训/课件

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