1、第9章 硬件描述语言 9.1 概述 9.2 VHDL简介 第第9 9章章 硬件描述语言硬件描述语言 第9章 硬件描述语言 数字电子系统的传统的设计方法是由分析逻辑命题、列真值表、化简逻辑函数到绘制逻辑电路图等步骤组成的,此方法只适用于中小规模系统设计。9.1 9.1 概概 述述 第9章 硬件描述语言 下面从使用方面对这三种语言进行简要的对比:(1)逻辑描述层次(2)设计要求(3)综合过程(4)对综合器的要求(5)支持EDA的工具 第9章 硬件描述语言 VHDL的优点主要体现在以下几个方面:(1)覆盖面广,描述能力强,是一个多层次的硬件描述语言;(2)可读性好,既能够被计算机接受,也容易被人理解
2、;(3)生命周期长,它的硬件描述与工艺无关,不会因工艺变化而过时;(4)支持大规模设计的分解和已有设计的再利用,有利于由多人或项目组来共同完成一个大规模设计;(5)已成为IEEE承认的一个工业标准,也即一种通用的硬件描述语言。第9章 硬件描述语言 9.2.1 基本程序简介基本程序简介 VHDL程序由实体(entity)、结构体(architecture)、程序包(package)和库(library)等几部分组成。VHDL语言程序的基本结构如图9-1所示。9.2 VHDL9.2 VHDL简介简介 第9章 硬件描述语言 图9-1 VHDL程序结构第9章 硬件描述语言 9.2.2 词法构成词法构成
3、1 VHDL的主要构件的主要构件 1)实体实体(ENTITY)是VHDL设计电路的最基本部分。它描述一个设计单元的外部接口以及连接信号的类型和方向。当一个实体经过编译并被放入库中之后,它就成为其他设计可以采用的一种元件。实体描述了设计单元的名称和端口的引脚信息等。第9章 硬件描述语言 根据IEEE标准,实体组织的一般格式为 ENTITY 实体名 IS PORT(端口表);实体说明部分;BEGIN 实体语句部分;ENDENTITY实体名;第9章 硬件描述语言 2)结构体 电路描述部分称为结构体(ATCHITECTURE),它用于描述设计单元内部的行为、元件及连接关系。结构体的一般格式为 ARCH
4、ITECTURE 结构体名 OF 实体名 IS 定义语句;(内部信号,常数,数据类型,函数定义等)BEGIN 并行处理语句;进程语句;END结构体名;第9章 硬件描述语言 VHDL主要采取以下三种描述方式:(1)行为描述(2)数据流(RTL寄存器传输)描述(3)结构描述 第9章 硬件描述语言 3)程序包程序包(PACKAGE)是一种使包体中的元件、子程序、公用数据类型和说明等对其他设计单元可调用的设计单元。程序包说明的一般形式是:PACKAGE 程序包名 IS 说明部分 END 程序包名包体的一般形式是:PACKAGE BODY 程序包名 IS 说明部分 END 程序包名第9章 硬件描述语言
5、4)库库(LIBRARY)是用来存放可编译的设计单元的地方。可以放置若干个程序包库。(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)第9章 硬件描述语言(2)STD 库(默认库)。STD库是VHDL的标准库,在库中存放STANDARD的包集合
6、。由于它是VHDL的标准库,因此设计人员调用STANDARD包内的数据时可以不进行标准格式的说明。STD库中还包含TEXTIO的包集合,在使用这部分包时,必须说明库和包集合名,然后才能使用该包集合中的数据。LIBRARY STD USE STD.TEXTIO.ALL;STANDATD包集合中定义最基本的数据类型包括bit、bit_vector、boolean、integer、real和time等。第9章 硬件描述语言(3)面向ASIC的库。WORK库在VHDL中,为了门级仿真的要求,各公司提供面向ASIC的逻辑门库。在该库中存放着与逻辑门一一对应的实体。为了使用它,必须对库进行说明。(4)WO
7、RK库。WORK库是存放设计数据的库。设计所描述的VHDL语句并不需要说明,将存放到WORK中。在使用该库的时候无需说明。(5)用户定义库。第9章 硬件描述语言 2 数据类型和运算数据类型和运算 1)标量数据类型标量数据类型是一种基本数据类型,它包括字符、位、布尔量、实数、整数、物理单位和枚举等。类型说明的一般形式是:TYPE 类型名 IS 类型定义 2)复合数据类型 第9章 硬件描述语言 3)IEEE标准数据类型“std_logic”和“std_logic_vector”在IEEE库的程序包std_logic1164中,定义了两个重要的数据类型,即标准逻辑位std_logic和标准逻辑矢量s
8、td_logic_vector,使得std_logic数据可以具有如下的9种不同的值:“U”初始值“0”0“Z”高阻“L”弱信号0“X”不定“1”1“W”弱信号不定“H”弱信号1“_”不可能情况第9章 硬件描述语言 3 运算及运算符运算及运算符逻辑代数中的各种逻辑运算如与、或、非等在VHDL中都有专门的运算符。运算符所涉及的对象必须事先定义为bit、bit_vector或boolean等数据类型,运算符not的优先级最高。VHDL提供了常用的关系运算符,如、=、=和/=,它们分别代表小于、小于等于、大于、大于等于、等于和不等于。关系运算符常用在if-then-else句型中,根据关系运算的结果
9、决定下面要执行的语句。第9章 硬件描述语言 9.2.3 用用VHDL描述逻辑电路的实例描述逻辑电路的实例【例例9.1】LIBRARY IEEE;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ENTITY mux4 IS port(x:in std_logic_vector(3 downto 0);sel:in std_logic_vector(1 downto 0);y:out std_logic);END mux4;ARCHITECTURE rtl of mux4 IS 第9章 硬件描述语言 BEGIN y=x(0)when sel=00 else x(1)when sel=01 else x(2)when sel=10 else x(3);END rtl;