《数字电路与数字逻辑》vhdl.ppt_第1页
《数字电路与数字逻辑》vhdl.ppt_第2页
《数字电路与数字逻辑》vhdl.ppt_第3页
《数字电路与数字逻辑》vhdl.ppt_第4页
《数字电路与数字逻辑》vhdl.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12章 硬件描述语言 121 概述 122 VHDL语言的基本结构 123 数据对象、数据类型和运算操作符 124 仿真和逻辑综合 125 VHDL基本逻辑电路设计举例 本章小结 习题12 返回主目录,硬件描述语言,12.1 概述 在计算机辅助电子系统设计出现以前,人们完成系 统硬件的设计一直采用传统的自下而上的方法,设计者 根据系统的具体需要,选择市场上能买到的逻辑元器件, 构成所需要的硬件电路,在设计的后期进行仿真和调试, 主要的设计文件是电原理图。 ,随着大规模专用集成电路(ASIC)的开发和研制, 各ASIC研制和生产厂家相继开发了用于各自目的的硬件 描述语言。 其中最具代表性的是美国国防部开发的 VHDL语言(VHSIC Hardware Description Language), Viewlogic 公司开发的Verilog HDL以及日本电子工业振 兴协会开发的UDL/I语言。,所谓硬件描述语言, 就是可以描述硬件电路的功能、 信号连接关系以及定时关系的语言, 它比电原理图更能有 效地表示硬件电路的特性。利用HDL语言设计系统硬件, 通常采用自上而下的方法,即从系统总体要求出发,自上 而下地逐步将设计内容细化,,最后完成系统硬件的整体设计。在设计过程中,设 计者分3个层次对系统硬件进行设计:行为描述、寄存器 传输(RTL)方式描述和逻辑综合,并且在每一层次都要 进行仿真,以便尽早发现问题。设计过程如图12.1所示。,图 12.1 HDL语言设计系统 硬件过程框图,设计者不会受到元器件的限制,可根据设计需要大 量采用ASIC芯片。采用HDL语言设计硬件电路时,主要 的设计文件是用HDL语言编写的源程序,如果需要也可 以转换成电原理图形式输出。 ,当前各ASIC芯片制造商都开发了自己的HDL语言, 惟一被公认的是美国国防部的VHDL语言,它已成为 IEEE STD-1076标准。VHDL有许多优点,它支持自上而 下(Top Down)和基于库(LibraryBased)的设计方 法,而且还支持同步电路、异步电路、FPGA以及其他随 机电路的设计;系统硬件的描述能力强; 用VHDL编程 可以和工艺无关等。 本章简要介绍VHDL语言的一些基 本知识, 旨在让读者了解VHDL。,122 VHDL语言的基本结构,1221 语言设计的基本单元及其构成 1222 VHDL构造体的描述方式 1223 包集合、库及配置,12.2 VHDL语言的基本结构,一个完整的VHDL程序通常包含实体(Entity)、构造 体(Architecture)、配置(Configuration)、包集合(Package)和 库(Library)5个部分。前4种是可分别编译的源设计单元, 库可由用户生成或由ASIC芯片制造商提供。, 12.2.1 VHDL语言设计的基本单元及其构成 VHDL语言的一个基本设计单元, 简单的可以是一个 与门,复杂的可以是一个微处理器或一个系统。但是,其 基本构成是一致的,它们都由实体和构造体两部分组成。 首先我们来看一个例子。图12. 2是二选一电路及其VHDL 描述。 ,图 12.2 二选一电路及其VHDL描述,ENTITY mux IS GENERIC(m: TIME:=1 ns); PORT(d0, d1, sel: IN BIT; Q: OUT BIT); END mux; ARCHITECTURE connect OF mux IS SIGNAL tmp: BIT,BEGIN cale: PROCESS(d0, d1, sel) VARIABLE tmp1, tmp2, tmp3: BIT; BEGIN tmp1:=d0 AND sel; tmp2:=d1 AND (NOT sel); tmp1:=tmp1 OR tmp2; tmp=tmp3; q=tmp AFTER m; END PROCESS; END connect;,1. 实体(ENTITY) 实体部分主要规定了设计单元的输入和输出或引脚. 实体部分的一般格式为 ENTITY 实体名 IS GENERIC(类属参数说明); PORT(端口说明); END 实体名; 属参数说明表示设计单元的默认类属参数值,例如规 定端口的大小、实体的定时特性等。例如上述程序中的 GENERIC(m: TIME: =1ns),指定了构造体内m的值为1 ns。 端口说明是对基本设计实体与外部接口的描述,即对外部 引脚信号的名称、数据类型和输入输出方向的描述。其一 般格式为 ,PORT(端口名: 方向 数据类型名; 端口名: 方向 数据类型名); 端口方向主要有4种:输入(IN)、输出(OUT)、 缓冲(BUFFER)和双向(INOUT)。 数据类型主要有布尔型(BOOLEAN)、位(BIT) 位矢量(BIT-VECTOR)、 整数(INTEGER)等。有 些VHDL程序中,数据类型的说明符号有所不同,例如 LIBRARY IEEE USE IEEE.STD-LOGIC-1164.ALL; ENTITY mu IS PORT(d0, d1, sel: IN STD-LOGIC; Q: OUT STD-LOGIC); END mu;,该例中, BIT类型用STD-LOGIC说明,这两种方 法是完全等效的。只是使用了不同的库和包集合,例如 上列程序的前两个语句。 2. 构造体 构造体主要用来描述实体的内部逻辑,即描述一个 实体的功能。构造体的一般说明格式为 ARCHITECTURE 构造体名 OF 实体名 IS 定义说明; BEGIN 语句部分; END 构造体名; VHDL可用3种描述格式来完成构造体, 下面将分别介绍。,12.2.2 构造体的描述方式 对系统的构造体进行描述,VHDL允许采用3种不同 风格的描述格式来完成,即行为描述、数据流RTL(或寄 存器传输)描述和结构描述方式,或者是这些方式的任 意组合。 在当前的情况下,采用后两种方式的VHDL程 序可以进行逻辑综合,而采用行为描述的VHDL程序大部 分只用于系统仿真。,1. 行为描述方式(Behavioral Descriptions) 所谓行为描述,是指描述该设计单元的功能,即该 硬件能做什么,主要使用函数、过程和进程语句,以算 法形式描述数据的变换和传送。以四选一电路为例: LIBRARY IEEE; 说明使用IEEE库 USE IEEE.STD-LOGIC-1164.ALL; 说明使用 IEEE库中“STD-LOGIC-1164” USE IEEE.STD-LOGIC-UNSIGNED.ALL; 和 “STD-LOGIC-UNSIGNED” 包集合 ENTITY mux4 IS 定义实体mux4, 说明端口i0, i1, i2, i3, ,PORT(i0, i1, i2, i3, a, b: IN STD-LOGIC; a,b为输 入,q为输出 q: OUT STD-LOGIC); END mux4; 实体mux4结束 ARCHITECTURE behave OF mux4 IS 定义构造 体behave SIGNAL sel: INTEGER; 定义信号sel BEGIN WITH sel SELECT 用选择信号代入语句描 述电路功能 q= i0 WHEN 0, 例如: 当ab为00时,sel为0 i1 WHEN 1, 此时输出q为i0, 其余类推 ,i2 WHEN 2, i3 WHEN 3, XWHEN OTHERS; sel= 0 WHEN a=0AND b=0ELSE 1 WHEN a=1AND b=0ELSE 2 WHEN a=0AND b=1ELSE 3 WHEN a=1AND b=1ELSE 4; END behave; 构造体结束,2. 数据流RTL描述方式 所谓数据流描述,是指以类似于寄存器传输级的方 式描述数据的传输和变换,主要使用并行的信号赋值语 句,既显示了该设计单元的行为,也表示了该设计单元 的结构。为说明这一点,我们仍用四选一电路为例,用 数据流描述其功能。例如, LIBRARY IEEE; USE IEEE.STD-LOGIC-1164.ALL; USE IEEE.STD-LOGIC-UNSIGNED.ALL; ENTITY mux4 IS,PORT(input:INSTD-LOGIC-VECTOR(3DOWNTO 0); 端口说明,定义输入和输出 sel: IN STD-LOGIC-VECTOR (1 DOWNTO 0); 信号 y: OUT STD-LOGIC); END mux4; ARCHITECTURE rtl OF mux4 IS 定义构造体rtl BEGIN y= input(0) WHEN sel=“00”ELSE 用条件信号代 入语句描述电路 input(1) WHEN sel=“01“ELSE 功能,当输入sel 为“00”时, input(2) WHEN sel=“10“ELSE 输出y为输入信号 input(0), input(3); 其余类推 END rtl;,3. 结构描述方式 所谓结构描述,是指描述该设计单元的硬件结构, 即该硬件是如何构成的。结构描述主要使用配置指定语 句及元件例化语句描述元件的类型及元件的互连关系。 例如, ENTITY mux2 IS PORT(d0, d1, sel: IN BIT; q: OUT BIT); END mux2;,ARCHITECTURE struct OF mux2 IS COMPONENT and2 PORT(a, b: IN BIT; c: OUT BIT); END COMPONENT; COMPONENT or2 PORT(a, b: IN BIT; c: OUT BIT); END COMPONENT ,COMPONENT inv PORT(a: IN BIT; c: OUT BIT); END COMPONENT; SIGNAL aa, ab, nsel: BIT; BEGIN u1: inv PORT MAP (sel, nsel); u2: and2 PORT MAP (nsel, d1, ab); u3: and2 PORT MAP (d0, sel, aa); u4: or2 PORT MAP (aa, ab, q); END struct;,图 12.3 二选一电路,在图12.3所示的二选一电路的构造体中用OMPONENT语句 指明了该电路中所使用的已生成的模块(在这里是AND,OR, NOT门电路),供本构造体调用。用PORT MAP()语句将生 成模块的端口与所设计的各模块(在这里为u1, u2, u3, u4)的端 口联系起来,并定义相应的信号,以表示所设计的各模块的连 接关系。 在上述3种描述方式的介绍中, 我们使用了一些描述语句, 例如条件信号代入语句、选择信号代入语句等。对于VHDL语言 的主要描述语句,本书不作介绍,有兴趣读者可参考相关文献。 ,12.2.3 包集合、 库及配置 除了实体和构造体之外, 包集合(PACKAGE)、 库(LIBRARY)和配置(CONFIGURATION)都是在 VHDL语言中另外3个可以独立进行编译的源设计单元。 1. 库 库是经编译后的数据的集合,存放包集合定义、实 体定义、构造体定义和配置定义。其功能类似DOS中的 目录。库的好处是设计者可以共享已经编译过的设计结 果,库与库之间是独立的,不能嵌套,库的说明总是放 在设计单元的最前面。 LIBRARY 库名; ,当前VHDL的库主要归纳为5类:IEEE库、STD库、 ASIC库、用户定义的库、WORK库。STD库是VHDL的 标准库,其中存放有“STANDARD”的包集合,设计者要 调用“STANDARD”中的数据可以不按标准格式说明。 IEEE库中有一个“STD-LOGIC-1164”的包集合,它是IEEE 认可的标准包集合。 一般,在使用库时首先要用两条语句进行说明, 例如: LIBRARY IEEE USE IEEE.STD-LOGIC-1164.ALL; ,2. 包集合 包集合用来罗列VHDL中要用到的信号定义、 常数 定义、数据类型、元件语句和函数定义等。 它是一个可 编译的设计单元,也是库结构中的一个层次。要使用包 集合可以使用USE语句,例如: USE IEEE.STD-LOGIC-1164.ALL; 3. 配置 配置语句描述层与层之间以及实体和结构体之间的 连接关系。设计者可以利用配置语句来选择不同的构造 体,使其与要设计的实体相对应。下面是一个RS触发器 的例子: ,ENTITY rsff IS PORT (set, rest: IN bit; q, qb: BUFFER bit); END rsff; ARCHITECTURE netlist OF rsff IS 结构描述 COMPONENT NAND2 PORT(a, b: IN bit); END COMPONENT;,BIGIN u1: NAND2 PORT MAP(a=set, b=qb, c=q); u2: NAND2 PORT MAP(a=reset, b=q, c=qb); END netlist; ARCHITECTURE behave OF rsff IS 行为描述BEGIN q=NOT(qb AND set); q=NOT(q AND reset); END behave;,在上述例子中, 实体rsff有两个构造体netlist和behave, 实体究竟和哪个构造体相对应,由配置语句来实现。 如果选用构造体netlist, 则用: CONFIGURATION rsffconl OF rsff IS FOR netlist END FOR; END rsffconl;,如果选用构造体behave, 则用: CONFIGURATION rsffconl OF rsff IS FOR behave END FOR; END rsffconl; 这只是非常简单的一类配置, 详细说明请读者参 考相关文献。 ,123 数据对象、数据类型和运算操作符,1231 数据对象 1232 数据类型 1233 运算操作符, 12.3.1 数据对象 VHDL的数据对象保存有专门类型的值, 数据对象 包括信号(Signal)、 变量(Variable)、常数(Constant) 和文件(File),在使用之前必须给予详细的说明。 1. 信号(Signal) 信号与电路内部的硬件连接相对应,端口也是信号。 作为连线,信号可以是逻辑门的输入或输出,也可以表 达存储元件的状态。信号通常在构造体、包集合和实体 中说明。信号说明的格式为,12.3数据对象、 数据类型和运算操作符,SIGNAL 信号名:数据类型约束条件:=表达式; 例如, SIGNAL enable: BIT:=0; SIGNAL count: BIT-VECTOR(3 DOWNTO 0); 2. 变量(Variable) 变量只能在进程语句、 函数语句和过程语句中使用, 它是一个局部量。和信号不同,分配给信号的值必须经过一 段时间的延迟后才能成为当前值,而分配给变量的值则立刻 成为当前值,信号和硬件的“连线”相对应,而变量不能表达 连线和存储元件。变量的说明格式为,VARIABLE 变量名:数据类型约束条件:=表达式; 例如, VARIABLE x, y: INTEGER; VARIABLE count: INTEGER RANGE 0 TO 255: =10; 变量的赋值是直接的,非预设的。而信号的值必须 经过一段延迟后,才能成为当前值的赋值,信号赋值采 用“=”符号。变量的赋值和初始化的符号“:KG-*4=” 表示立即赋值。 ,3. 常数(Constant) 常数是一个固定的值。所谓常数说明就是对某一常 数名赋予一个固定的值。通常赋值在程序开始前进行, 该值的数据类型则在说明语句中指出,常数一旦被赋值 就不能再改变。常数说明的一般格式如下: CONSTANT 常数名: 数据类型:=表达式; 例如, CONSTANT VCC: REL:=5.0; CONSTANT DALY: TIME:=100ns;,4. 文件(File) 文件包含一些专门类型的数值, 它不可以通过赋值来 更新文件的内容。文件可以作为参数向子程序传递,通过 子程序对文件进行读写操作。因此文件参数没有模式。 ,12.3.2 数据类型 VHDL具有很强的数据类型,这使得VHDL能够创建 高层次的系统和算法模型。VHDL的数据类型分别为标量 类型、复合类型、存取类型和文件类型。其中前两种用 于综合,后两种主要用于建立仿真模型。这里主要讨论 标量类型和复合类型。 1. 标量类型(Scalar Types) 标量类型是最基本的数据类型,它包括:整数类型、 浮点类型、物理类型和枚举类型。,1) 整数类型(Integer Types) 整数类型严格地和算术整数相似, 能够处理VHDL的 软件必须支持-(231-1)+(231-1),即-2 147 483 647 +2 147 483 647范围的整数,例如: VARIABLE a: INTEGER range -63+63; 2) 浮点类型(Floating Types) 浮点类型用于表达大部分实数, VHDL规定其范围 为 -1.0E38+1.0E38。综合工具通常不支持浮点类型。 3) 物理类型(Physical Types) 物理类型对于综合意义不大, 主要用于仿真。,4) 枚举类型(Enumeration Types) 枚举类型是一种非常重要的数据类型,用于建立抽 象的模型。设计者用枚举类型严格地表达一个特定操作 所需要的值。枚举类型的所有值由用户定义,这些值为 标识符或某个字母的字面值。标识符像一个名字,例如, abc, black, clock等。文字字符的字面值是用引号括起来的 字符,例如:X、1等。 举例如下: TYPE Two-level-logic is (0, 1); TYPE color is (red, yellow, blue);KH*2,2. 复合类型(Composite Types) 标量类型的数据对象在任何时刻仅持有一个值, 而复合 类型的数据对象则在某个时刻可持有多个值。复合类型由数 组类型和记录类型组成。 1) 数组类型(Array Types) 一个数组类型的对象用相同类型的多个元素组成,其定 义如下: TYPE 数据类型名 IS ARRAY 范围 OF 原数据类 型名; 例如: TYPE bit-vector IS ARRAY (0 TO 6) OF STD -LOGIC;,2) 记录类型(Record Types) 一个记录类型的数据对象可具有不同类型的多个元 素,其定义如下: TYPE 数据类型名 IS RECORD 元素名: 数据类型名; 元素名: 数据类型名; END RECORD; 例如, TYPE bank IS RECORD addr: STD-LOGIC-VECTOR (7 DOWNTO 0); ro: INTEGER; END RECORD;,表 12.1 VHDL的运算操作符,12.3.3 运算操作符 VHDL定义了丰富的运算操作符,主要有算术运算 符、关系运算符、逻辑运算符、赋值运算符、关联运算 符和其他运算符,如表 12.1 所示。 ,续表(2),续表(3),124 仿真和逻辑综合,1241 仿真 1242 逻辑综合,12.4仿真和逻辑综合,12.4.1 仿真 前面介绍了VHDL语言的基本语句,掌握了这些就可 以利用VHDL语言设计数字逻辑电路。为了验证设计模块 是否正确, 还需对这些设计进行仿真。仿真是利用HDL语 言进行硬件设计的一个必不可少的步骤,它贯穿整个过程。 目前仿真工具有许多,如:Synopsys公司的 VHDL System Simulator等。仿真输入信息的产生通常有两种方法: 程序 直接产生方法和读TEXIO方法, 这里不再详细介绍。 ,在硬件系统设计过程中一般要进行3次仿真: 行为级 仿真、RTL级仿真和门级仿真。它们的仿真目的和仿真程 序模块的书写要求各不相同。 1. 行为级仿真 行为级仿真的目的是验证系统的数学模型和行为是 否正确,因而对系统的抽象程度较高。对行为级仿真程 序模块的书写没有太多限制,凡是VHDL语言中的语句和 数据类型都可以在程序中使用。 ,2. RTL级仿真 通过行为级仿真以后,下一步就是将行为级描述的 程序改写为RTL描述的程序模块。RTL仿真是为了使被仿 真模块符合逻辑工具的要求,使其能生成门级逻辑电路。 3. 门级电路仿真 RTL程序模块经逻辑综合后就生成了门级电路。在门 级电路的仿真中,主要考虑门的延时对系统工作情况的 影响。,12.4.2 逻辑综合 逻辑综合就是将较高抽象层次的描述自动地转换到 较低抽象层次的描述的一种方法。就现有的逻辑综合工 具而言,就是将RTL级的描述转换成门级网络表(用基本 逻辑元件表示的文件);如果需要,可以将逻辑综合的 结果以逻辑原理图输出。 ,当前,已有十几种逻辑综合工具,如Synopsys公司 的 Design Compiler Family,Cadence Design Systems公司 的 Synerey等。要求的输入为:RTL描述的程序模块;约 束条,如面积、速度、功耗、可测性;支持工艺库,如 TTL工艺库、MOS工艺库、CMOS工艺库等。输出是门级 网络表。 1. RTL级描述 RTL级描述的特点是规定设计中采用各种寄存器形 式,然后在寄存器之间插入组合逻辑。组合逻辑或者由 逻辑方程、顺序控制语言和子程序描述, 或者通过并行 语句由寄存器之间的云图文件来表示。,2约束条件 在逻辑综合过程中,为了优化输出和工艺映射的需 要,一定要有相应的约束条件,以实现所设计结构的控 制,也就是说,采用不同的约束条件如面积、延时、功 耗和可测性,对于同一个系统,其实现的结构是不同的。 3. 属性 属性用于规定设计进行的环境,例如属性规定输出 器件必须驱动的负载数、驱动器件的驱动能力、输入信 号的定时等。 ,4. 工艺库 在根据约束条件建立网表时,工艺库含有使综合进 程作正确选择的全部信息。它不仅含有ASIC单元的逻辑 功能,还有该单元的面积、输入到输出的定时关系、输 出的扇出限制和对单元所需的定时检查。 5. 逻辑综合的基本步骤 为了将RTL描述转换到门级,一般应有 3 步:转换、 优化和映射到门,12.5 VHDL基本逻辑电路设计举例,3-8译码器是一个常用的数字电路,例如芯片74LS138。 由有关手册可知,该译码器由8个3输入“与非”门,4个反相 器和一个3输入“或非”门构成。如果事先不作说

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论