1、2 硬件描述语言硬件描述语言VHDL基础基础2.1 概述概述2.2 VHDL的主要构件的主要构件2.3 数据类型和运算数据类型和运算2.4 行为和结构描述行为和结构描述2.1 概概 述述1.1.组合电路传统的设计方法组合电路传统的设计方法:逻辑命题逻辑命题列真值表列真值表 化简逻辑函数化简逻辑函数画逻辑电路图。画逻辑电路图。2.传统的设计方法缺点传统的设计方法缺点(对于复杂数字系统的设计对于复杂数字系统的设计):a.很繁琐很繁琐;b.不便于互相交流不便于互相交流;c.难以了解设计的正确性难以了解设计的正确性;3.硬件描述语言硬件描述语言HDL(Hardware Description Lang
2、uage)a.便于利用计算机进行数字系统辅助设计。便于利用计算机进行数字系统辅助设计。b.便于交流和存档。便于交流和存档。HDL是描述电子系统硬件行为、结构和数据的语言,是是描述电子系统硬件行为、结构和数据的语言,是一种描述复杂数字电路的工具,是设计者与电子设计自动化一种描述复杂数字电路的工具,是设计者与电子设计自动化(EDA)软件之间的界面。软件之间的界面。HDL的特点:的特点:c.不同的不同的HDL有很大的差异,便于交流和推广。有很大的差异,便于交流和推广。VHDL是一种标准化的硬件描述语言,它支持系统级、是一种标准化的硬件描述语言,它支持系统级、寄存器级和门级三个不同层次的设计。在数字系
3、统从顶寄存器级和门级三个不同层次的设计。在数字系统从顶到底到底(Topto-Down)设计的全过程中,都可利用这同一种设计的全过程中,都可利用这同一种硬件描述语言进行设计、模拟和存档。硬件描述语言进行设计、模拟和存档。4.VHDL(VHSIC Hardware Description Language)VHSIC Very High Speed Integrated Circuit 自从自从IEEE 1987年和年和1993年公布了年公布了VHDL的标准版本的标准版本之后,各之后,各EDA公司纷纷加入这一标准化的行列。公司纷纷加入这一标准化的行列。VHDL的优点:的优点:a.覆盖面广,描述能力
4、强,是一个多层次的硬件描述语言;覆盖面广,描述能力强,是一个多层次的硬件描述语言;b.可读性好;可读性好;c.生命期长,其硬件描述与工艺技术无关;生命期长,其硬件描述与工艺技术无关;d.支持大规模设计的分解和已有设计再利用;支持大规模设计的分解和已有设计再利用;e.已成为已成为IEEE承认的一个工业标准,成为一种通用的硬件描承认的一个工业标准,成为一种通用的硬件描述语言。述语言。2.2 VHDL的主要构件的主要构件2.2.1 实体实体 实体实体VHDL设计电路的最基本部分,它描述一个设计单元设计电路的最基本部分,它描述一个设计单元的外部接口以及连接信号的类型和方向。的外部接口以及连接信号的类型
5、和方向。当一个实体经过编译并被放入库中之后,它就成为其他当一个实体经过编译并被放入库中之后,它就成为其他设计可以采用的一种元件。设计可以采用的一种元件。1.实体的一般格式实体的一般格式:ENTITY 实体名实体名 IS PORT(端口表端口表);实体说明部分;实体说明部分;实体语句部分;实体语句部分;END ENTITY 实体名实体名;BIGIN2.举例举例或门的实体或门的实体ENTITY orgate ISPORT(a,b:IN BIT;z:OUT BIT);END orgate;注:注:a.ENTITY,IS,PORT,IN,OUT,END为关键字。为关键字。b.VHDL本身不区分大小写。
6、本身不区分大小写。实体实体(entity)名称名称 端口端口信息信息 端口模式:端口模式:信号取值类型:信号取值类型:输入、输出、双向、缓冲输入、输出、双向、缓冲位、整数、实数、记录、数组位、整数、实数、记录、数组3.实体的格式实体的格式2.2.2 结构体结构体 电路描述部分称之为结构体电路描述部分称之为结构体(ARCHITECTURE),它用于描,它用于描述设计单元内部的行为、元件及连接关系。述设计单元内部的行为、元件及连接关系。1.结构体的一般格式结构体的一般格式ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS 定义语句定义语句;(内部信号,常数,数据类型,函数定义等内
7、部信号,常数,数据类型,函数定义等)BEGIN 并行处理语句并行处理语句;进程语句进程语句;END 结构体名;结构体名;architecture behave of orgate is begin or_func:process(a,b)begin if(a=1 or b=1)then z=1;else z=0;end if;end process or_func;end behave;2.举例举例或门的结构体或门的结构体3.VHDL主要采取的描述方式主要采取的描述方式a.行为描述行为描述:描述该设计单元的功能。描述该设计单元的功能。主要使用函数、主要使用函数、过程和进程语句,以算法形式描述数
8、据的变换和传送。过程和进程语句,以算法形式描述数据的变换和传送。b.结构描述结构描述:描述该设计单元的硬件结构,即该电路描述该设计单元的硬件结构,即该电路是如何构成的。主要使用配置指定语句及元件例化语是如何构成的。主要使用配置指定语句及元件例化语句描述元件的类型及互连关系。句描述元件的类型及互连关系。包含一个实体和一个或一个以上结构体的包含一个实体和一个或一个以上结构体的VHDL程序就是程序就是一段完整的一段完整的VHDL程序。程序。2.2.3 程序包程序包 程序包程序包(PACKAGE)是一种使包体中的元件、子程序、公是一种使包体中的元件、子程序、公用数据类型和说明等对其它设计单元可调用的设
9、计单元。用数据类型和说明等对其它设计单元可调用的设计单元。程序包包括程序包说明和程序包体。程序包包括程序包说明和程序包体。PACKAGE 程序包名程序包名 IS说明部分说明部分END 程序包名程序包名1.程序包说明的一般形式程序包说明的一般形式PACKAGE BODY 程序包名程序包名 IS说明部分说明部分END 程序包名程序包名2.包体的一般形式包体的一般形式3.程序包的调用程序包的调用 包体中的子程序体和基本说明不能被其它包体中的子程序体和基本说明不能被其它VHDL单单元使用,程序包中的说明是公共的,是可调用的。元使用,程序包中的说明是公共的,是可调用的。如果一个程序包中所定义的内容可以被
10、调用,应在如果一个程序包中所定义的内容可以被调用,应在VHDL单元前加上单元前加上use语句。语句。例如,调用程序包例如,调用程序包ieee.std_logic_1164.all中的内容。中的内容。library ieee;use ieee.std_logic_1164.all;2.2.4 库库 库(库(LIBRARY)是用来存放可编译的设计单元的地方,)是用来存放可编译的设计单元的地方,可以放置若干个程序包。可以放置若干个程序包。VHDL语言库分为设计库和资源库。语言库分为设计库和资源库。设计库对当前项目是可见、默认的,无需用设计库对当前项目是可见、默认的,无需用LIBRARY语句声明。设计
11、库包括语句声明。设计库包括WORK和和STD库。库。WORK库相当于一个临时仓库,用于保存当前项目中库相当于一个临时仓库,用于保存当前项目中设计成功、正在验证、未仿真的中间器件。一个项目对应设计成功、正在验证、未仿真的中间器件。一个项目对应一个一个WORK库。库。资源库是把常用的工具、元件和模块等设计资源集中资源库是把常用的工具、元件和模块等设计资源集中打包,它存放常规元件和标准模块,供其它项目引用。打包,它存放常规元件和标准模块,供其它项目引用。2.3 数据类型和运算数据类型和运算1.VHDL硬件描述语言中的三类对象:硬件描述语言中的三类对象:信号、变量和常量。信号、变量和常量。VHDL是一
12、种非常严格的数据类型化语言,规定每个信号、是一种非常严格的数据类型化语言,规定每个信号、常量、变量或表达式都要有确定的数据类型。常量、变量或表达式都要有确定的数据类型。2.数据类型数据类型数据类型大体分为标量型和复合型。数据类型大体分为标量型和复合型。2.3.1 标量数据类型标量数据类型 1.标量数据类型包括:字符、位、布尔量、实数、标量数据类型包括:字符、位、布尔量、实数、整数、物理单位和枚举等。整数、物理单位和枚举等。2.标量数据类型说明的一般形式标量数据类型说明的一般形式 type类型名类型名is类型定义类型定义 a.一个字符放入单引号中就定义了一个字符一个字符放入单引号中就定义了一个字
13、符:x,字符,字符可以是可以是a z 中任一个字符、中任一个字符、0 9中的数字和特殊字符等等。中的数字和特殊字符等等。b.数字系统中的信号经常用位来表示,表示的方法是用数字系统中的信号经常用位来表示,表示的方法是用0或或1来表示一个位的两个可能值。来表示一个位的两个可能值。c.一个布尔文字用来表示真一个布尔文字用来表示真(True)或者假或者假(False)。d.枚举类型枚举类型枚举类型定义在形式上是括号括起来的枚举文字表。枚举类型定义在形式上是括号括起来的枚举文字表。枚举文字既可以是标识符,也可以是字符文字。枚举文字既可以是标识符,也可以是字符文字。TYPE my_state IS(res
14、et,rw_cycle,int_cycle);signal state:my_state;state=reset;OKstate=“00”;ERR例例1 它指定了一个范围限制、一个基本单位、零个或多个它指定了一个范围限制、一个基本单位、零个或多个次级单位,每个次级单位都是基本单位的整数倍。次级单位,每个次级单位都是基本单位的整数倍。e.物理类型物理类型例例2type Resistance is range 1 to E9;units ohm;基本单位基本单位 kohm=1000 ohm;次级单位,基本单位的整数倍次级单位,基本单位的整数倍 end units;2.3.2 复合数据类型复合数据类
15、型分类分类记录:异构复合类型记录:异构复合类型,记录的元素可以是不同的类型。记录的元素可以是不同的类型。数组:同构复合类型数组:同构复合类型,数组的各个元素具有同一类型。数组的各个元素具有同一类型。type Instruction is record Opcode_field:Opcode;Operand_1:address;Operand_2:address;end record;例例32.3.3 IEEE标准数据类型标准数据类型“std_logic”和和std_logic_vector”“STD_LOGIC”和和“STD_LOGIC_VECTOR”是是IEEE标标准化数据类型,使用它们以前
16、必须写出库准化数据类型,使用它们以前必须写出库IEEE和程序包集合和程序包集合std_logic说明语句说明语句library IEEE和和use ieee.std_logic_1164.all,否则,编译时就会出错。否则,编译时就会出错。2.3.4 运算及运算符运算及运算符 逻辑代数中的各种逻辑运算如与、或、非等在逻辑代数中的各种逻辑运算如与、或、非等在VHDL中中都有专门的运算符号,如都有专门的运算符号,如and、or、nand、nor、xor和和not等。等。逻辑运算所涉及的对象必须事先定义为逻辑运算所涉及的对象必须事先定义为bit、bit_vector或或boolean等数据类型,运算
17、符等数据类型,运算符not的优先级别最高。的优先级别最高。library ieee;use ieee.std_logic_1164.aLL;entity muls is port(a,b,c:in bit;z :out bit);end muls;architecture ex of muls is begin z=a and not(b or c);end ex;例例4 4 运算符优先级的举例运算符优先级的举例2.4 行为和结构描述行为和结构描述 进程就是进程就是VHDL中最主要的并发语句,是联系顺序层中最主要的并发语句,是联系顺序层和并发层的一种纽带。并发层使和并发层的一种纽带。并发层使V
18、HDL可以在同一模拟时可以在同一模拟时间运行许多不同的进程。间运行许多不同的进程。VHDL定义的数字系统的行为:定义的数字系统的行为:顺序顺序(Sequential)层和并发层和并发(Concurrent)层。层。顺序层就是在每一个进程中用顺序语句规定它没一步的行为;顺序层就是在每一个进程中用顺序语句规定它没一步的行为;并发层就是定义这些进程互相的关系,特别是它们之间并发层就是定义这些进程互相的关系,特别是它们之间的信息传递问题。的信息传递问题。2.4.1 进程进程 进程进程(process):行为描述构造体中的一部分,它用时序:行为描述构造体中的一部分,它用时序语句描述了硬件的行为。语句描述
19、了硬件的行为。进程名进程名 process 敏感信号表敏感信号表 变量说明语句变量说明语句;begin 顺序说明语句顺序说明语句;end process 进程名进程名;进程句法的一般形式进程句法的一般形式:2.4.2 并发行为并发行为 用硬件描述语言用硬件描述语言VHDL所设计的电子系统实际工作时是所设计的电子系统实际工作时是并行操作,所以系统中的元件在模拟时间上应该同时运行。并行操作,所以系统中的元件在模拟时间上应该同时运行。并发语句就是用来表示这种并发行为的。并发语句就是用来表示这种并发行为的。VHDL语言中电路描述部分语言中电路描述部分(architecture)中的语句都是中的语句都是
20、并行的,在字面上的顺序并不代表它们的执行顺序。并行的,在字面上的顺序并不代表它们的执行顺序。2.4.3 VHDL的行为描述的行为描述 行为描述是一种抽象的描述,它不具体对应电路的实现,行为描述是一种抽象的描述,它不具体对应电路的实现,是用算法来对单元的功能进行描述。是用算法来对单元的功能进行描述。例例1 1 加法器的行为描述加法器的行为描述library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity adder is port(op1,op2:in unsigned(7 downto 0);result
21、:out INTEGER);end adder;architecture maxpld of adder isbeginresult=conv_integer(op1+op2);end maxpld;2.4.4 VHDL的结构描述的结构描述 要描述一个设计单元的硬件结构,就是要描述它由那些元要描述一个设计单元的硬件结构,就是要描述它由那些元件组成,以及它们之间的连接关系。结构描述比行为描述更为件组成,以及它们之间的连接关系。结构描述比行为描述更为具体化,它的基本单元是具体化,它的基本单元是“调用元件语句调用元件语句”,这些元件通常是,这些元件通常是放在库里的已编译好的低层设计单元,在进行顶层设
22、计时调用。放在库里的已编译好的低层设计单元,在进行顶层设计时调用。entity compare is port(a,b:in bit;c:out bit);end compare;architecture struct of compare is signal i:bit;component xr2 port(x,y:in Bit;z:out Bit);end component;component inv port(x:in Bit;z:out Bit);end component;Begin U0:xr2 port map(a,b,i);U1:inv port map(i,c);end struct;例例2 比较器的结构描述比较器的结构描述对应的结构框图对应的结构框图xabyzzxciU0 xr2U1inv硬件的基本结构是元件、端口和信号。硬件的基本结构是元件、端口和信号。