1 / 110

第三章 硬件描述语言( VHDL )

第三章 硬件描述语言( VHDL ). VHDL : V HSIC (Very High Speed Integrated Circuit) H ardware D escription L anguage. §3.1 概述. 一、什么是 VHDL ?. 二、 VHDL 的历史. 80 年代初由美国国防部在实施超高速集成电 路( VHSIC )项目时开发的。 1987 年由 IEEE 协会批准为 IEEE 工业标准, 称为 IEEE1076-1987 。

clem
Télécharger la présentation

第三章 硬件描述语言( VHDL )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第三章 硬件描述语言(VHDL)

  2. VHDL: VHSIC (Very High Speed Integrated Circuit) Hardware Description Language §3.1 概述 一、什么是VHDL?

  3. 二、VHDL的历史 80年代初由美国国防部在实施超高速集成电 路(VHSIC)项目时开发的。 1987年由 IEEE 协会批准为 IEEE 工业标准, 称为 IEEE1076-1987。 各EDA公司相继推出支持VHDL的设计环境。 1993年被更新为 93 标准,即IEEE1076-1993。 进一步提高抽象描述层次,扩展系统描述能力。

  4. 1、VHDL打破软、硬件的界限 传统的数字系统设计分为: 硬件设计(硬件设计人员) 软件设计(软件设计人员) VHDL是电子系统设计者和 EDA工具之间的界面。 三、VHDL的作用 EDA工具及 HDL的流行,使电子系统向集成化、大规模和高速度等方向发展。 美国硅谷约有80%的ASIC和FPGA/CPLD 已采用 HDL进行设计。

  5. 2、VHDL与C、C++的比较: C、C++ 代替汇编等语言 VHDL 代替原理图、逻辑状态图等 3、VHDL与电原理图描述的比较: VHDL具有较强的抽象描述能力,可进行系统 行为级别的描述。描述简洁,效率高。 VHDL描述与实现工艺无关。 电原理图描述需给出完整、具体的电路结构 图,不能进行抽象描述。描述繁杂,效率低。 电原理图描述与实现工艺有关。

  6. 1、VHDL具有强大的语言结构,系统硬件描述能 力强、设计效率高;具有较高的抽象描述能力。 如:一个可置数的16位计数器的电原理图: 四、VHDL语言特点

  7. 用VHDL描述的可置数16位计数器:

  8. 2、VHDL语言可读性强,易于修改和发现错误。 3、VHDL具有丰富的仿真语句和库函数,可对 VHDL源代码进行早期功能仿真,有利于大 系统的设计与验证。 4、VHDL设计与硬件电路关系不大。 5、VHDL设计不依赖于器件,与工艺无关 。 6、移植性好。 7、VHDL体系符合TOP-DOWN和CE(并行工程)设计 思想。 8、VHDL设计效率高,产品上市时间快,成本低。 9、易于ASIC实现。

  9. 五、VHDL与其它硬件描述语言的比较 行为级 RTL级 门电路级 VHDL: 具有较强的系统级抽象描述能力,适合行为级和 RTL级的描述。设计者可不必了解电路细节,所作工作较少,效率高。但对综合器的要求高,不易控制底层电路的生成。IEEE标准,支持广泛。 RTL: Register Translate Level

  10. Verilog HDL : 系统级抽象描述能力比VHDL稍差;门级开关电路描述方面比 VHDL 强。适合 RTL级和门电路级的描述。设计者需要了解电路细节,所作工作较多。IEEE标准,支持广泛。 ABEL、PALASM、AHDL(Altera HDL): 系统级抽象描述能力差,一般作门级 电路描述。要求设计者对电路细节有详细的了解。对综合器的性能要求低,易于控制电路资源。支持少。

  11. VHDL主要用于描述数字系统的结构、行 为、功能和接口。 VHDL将一个设计(元件、电路、系统) 分为: 外部(可视部分、端口) 内部(不可视部分、内部功能、算法) 六、VHDL设计简述

  12. 外部与内部: 器件或 子系统 ports ports ENTITY ARCHITECTURE Process Process Sequential Process Combinational Process ports ports component

  13. 2选1选择器的VHDL描述:

  14. VHDL语言的一些基本特点:  VHDL语言由保留关键字组成;  一般,VHDL语言对字母大小写不敏感; 例外:‘’、“”所括的字符、字符串;  每条VHDL语句由一个分号(;)结束;  VHDL语言对空格不敏感,增加可读性;  在“--”之后的是VHDL的注释语句;  VHDL有以下描述风格: 行为描述; 数据流(寄存器传输RTL)描述; 结构化描述;

  15. 基本结构包括:  实体(Entity)  结构体(Architecture)  配置(Configuration)  库(Library)、程序包(Package) §3.2 VHDL程序基本结构

  16. 库、程序包 实体(Entity) 结构体 (Architecture) 进程 或其它并行结构 配置(Configuration)

  17. 一、实体(说明) 实体(说明): 定义系统的输入输出端口 语法: ENTITY <entity_name> IS Generic Declarations Port Declarations END <entity_name>; (1076-1987 version) END ENTITY <entity_name> ; ( 1076-1993 version)

  18. 1、类属说明 类属说明: 确定实体或组件中定义的局部常数。模 块化设计时多用于不同层次模块之间信息的 传递。可从外部改变内部电路结构和规模。 类属说明必须放在端口说明之前。 Generic ( 常数名称:类型 [:= 缺省值] {常数名称:类型 [:= 缺省值]} );

  19. 类属常用于定义: 实体端口的大小、 设计实体的物理特性、 总线宽度、 元件例化的数量等。 例: entity mck is generic(width: integer:=16); port(add_bus:out std_logic_vector (width-1 downto 0)); …

  20. 例:2输入与门的实体描述 entity and2 is generic(risewidth: time:= 1 ns; fallwidth: time:= 1 ns); port(a1: in std_logic; a0: in std_logic; z0: out std_loigc); end entity and2; 注:数据类型 time 用于仿真模块的设计。 综合器仅支持数据类型为整数的类属值。

  21. 其中,端口模式: in: 输入型,此端口为只读型。 out: 输出型,只能在实体内部对其赋值。 inout:输入输出型,既可读也可赋值。 buffer: 缓冲型,与 out 相似,但可读。 2、端口声明 端口声明:确定输入、输出端口的数目和类型。 Port ( 端口名称{,端口名称}:端口模式 数据类型; … 端口名称{,端口名称}:端口模式 数据类型 );

  22. out 和buffer 的区别: inout 和buffer 的区别:

  23. 指端口上流动的数据的表达格式。为预先定 义好的数据类型。 如:bit、bit_vector、integer、 std_logic、std_logic_vector 等。 例: entity nand2 is entity m81 is port ( port( a,b:in bit; a:in bit_vector(7 downto 0); z: out bit sel:in bit_vector(2 downto 0); ) ; b:out bit); end entity nand2; end entity m81; 3、数据类型:

  24. 二、结构体 作用:定义系统(或模块)的行为、元件及内部 的连接关系,即描述其逻辑功能。 两个组成部分:  对数据类型、常数、信号、子程序、元件等 元素的说明部分。  以各种不同的描述风格描述的系统的逻辑功 能实现的部分。常用的描述风格有:行为描 述、数据流描述、 结构化描述。

  25. 常数说明 结构体说明 数据类型说明 信号说明 结构体 例化元件说明 子程序说明 块语句 结构体功能描述 进程语句 信号赋值语句 子程序调用语句 元件例化语句

  26. 实体与结构体的关系: 一个设计实体可有多个结构体,代表实体的多种实现方式。各个结构体的地位相同。 结构体1 结构体2 结构体3 设计实体 。 。 。 结构体n

  27. 注:同一实体的结构体不能同名。定义语句中的 常数、信号不能与实体中的端口同名。 结构体的语法: architecture 结构体名称 of 实体名称 is [说明语句]内部信号、常数、 数据类型、子程序(函数、过程)、 元件等的说明; begin [并行处理(功能描述)语句]; end [architecture] 结构体名称;

  28. 例:结构体中错误的信号声明

  29. 例:一个完整描述(3 bit 计数器)

  30. 3bit计数器的等效描述(out与buffer的区别):

  31. 三、配置 结构体1 结构体2 结构体3 设计实体 。 。 。 一个设计实体的多种实现方式 结构体n 配置:从某个实体的多种结构体描述方式中选择 特定的一个。

  32. 简单配置的语法: configuration 配置名 of 实体名 is for 选配结构体名 end for ; end 配置名;

  33. 例:一个与非门不同实现方式的配置如下: library ieee; use ieee.std_logic_1164.all; entity nand is port(a: in std_logic; b: in std_logic; c: out std_logic); end entity nand; architecture art1 of nand is begin c<=not (a and b); end architecture art1;

  34. architecture art2 of nand is begin c<=‘1’ when (a=‘0’) and (b=‘0’) else ‘1’ when (a=‘0’) and (b=‘1’) else ‘1’ when (a=‘1’) and (b=‘0’) else ‘0’ when (a=‘1’) and (b=‘1’) else ‘0’; end architecture art2;

  35. configuration first of nand is for art1; end for; end first; configuration second of nand is for art2 end for; end second;

  36. 例:一个对计数器实现多种形式的配置如下:

  37. 四、 程序包、库 程序包: 已定义的常数、数据类型、元件调用说明、子程序的一个集合。 目的:方便公共信息、资源的访问和共享。 库: 多个程序包构成库。

  38. 程序包说明的内容: 常量说明; VHDL数据类型说明; 元件说明; 子程序说明; 程序包的结构包括: 程序包说明(包首) 程序包主体(包体)

  39. 1、程序包说明(包首) 语法: package 程序包名 is { 包说明项 } end 程序包名; 包声明项可由以下语句组成: use 语句(用来包括其它程序包); 类型说明;子类型说明;常量说明; 信号说明;子程序说明;元件说明。

  40. 例:程序包说明

  41. 2、程序包包体 程序包的内容:子程序的实现算法。 包体语法: package body 程序包名 is { 包体说明项 } end 程序包名; 包体说明项可含: use 语句;子程序说明;子程序主体;类型说明;子类型说明;常量说明。

  42. 程序包首与程序包体的关系: 程序包体并非必须,只有在程序包中要说明 子程序时,程序包体才是必须的。 程序包首可以独立定义和使用。如下:

  43. package seven is subtype segments is bit_vector(0 to 6); type bcd is range 0 to 9; end seven; library work; use work.seven.all; entity decoder is port(input: in bcd; drive: out segments); end decoder; architecture art of decoder is begin

  44. with input select drive<=B“1111110” when 0, B“0110000” when 1, B“1101101” when 2, B“1111001” when 3, B“0110011” when 4, B“1011011” when 5, B“1011111” when 6, B“1110000” when 7, B“1111111” when 8, B“1111011” when 9, B“0000000” when others; end architecture art; a f b g e c d

  45. 3、库的种类 VHDL库可分为 5种: 1)IEEE 库 定义了四个常用的程序包: •std_logic_1164 (std_logic types & related functions) •std_logic_arith (arithmetic functions) •std_logic_signed (signed arithmetic functions) •std_logic_unsigned (unsigned arithmetic functions)

  46. Type STD_LOGIC: 9 logic value system (‘U’, ‘X’, ‘0’, ‘1’, ‘Z’, ‘W’, ‘L’, ‘H’, ‘-’) • ‘W’, ‘L’, ‘H” weak values (Not supported by Synthesis) • ‘X’ - (not ‘x’)used for unknown • ‘Z’ - (not ‘z’) used for tri-state • ‘-’ Don’t Care

  47. 2)STD 库(默认库) 库中程序包为:standard, 定义最基本的数据类型: Bit,bit_vector ,Boolean, Integer,Real,and Time 注:Type Bit 2 logic value system (‘0’, ‘1’) 3)面向ASIC的库 4)WORK库(默认库) 5)用户定义库

  48. 4、库及程序包的使用 库及程序包的说明总是放在实体单元前面, 默认库及程序包可不作说明。用关健字library 说明要使用的库,用关健字 use 说明要使用的库中的程序包。 库及程序包的作用范围:仅限于所说明的设计实体。 每一个设计实体都必须有自已完整的库及程序包说明语句。

  49. 库、程序包 实体(Entity) 结构体 (Architecture) 进程 或其它并行结构 配置(Configuration)

More Related