1、电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院 目前,国际上越来越多的目前,国际上越来越多的EDAEDA工具都接收工具都接收HDLHDL语言作为语言作为设计输入。硬件描述语言向着标准化、集成化的方向发展,设计输入。硬件描述语言向着标准化、集成化的方向发展,VHDLVHDL和和Verilog HDLVerilog HDL适应了这种趋势的要求,先后成为适应了这种趋势的要求,先后成为IEEEIEEE标准。目前应用最广泛的硬件描述语言有标准。目前应用最广泛的硬件描述语言有VHDLVHDL和和VerilogVerilog两种。此外两种。此外ABEL-HDLABEL-HDL也有少
2、量应用。也有少量应用。Verilog HDL Verilog HDLVerilog HDL全称为全称为VerilogVerilog硬件描述语言,它是硬件描述语言,它是19831983年由年由GDAGDA公司的公司的Phil MoorbyPhil Moorby首创的。首创的。19891989年年CadenceCadence公司公司收购了收购了GDAGDA公司,并公开了公司,并公开了Verilog HDLVerilog HDL。基于。基于Verilog Verilog HDLHDL的优越性,的优越性,IEEEIEEE于于19951995年制订了年制订了Verilog HDLVerilog HDL的
3、的IEEEIEEE标标准,即准,即Verilog HDL 1364-1995Verilog HDL 1364-1995。硬件描述语言概述电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院 Verilog HDLVerilog HDL是专为是专为ASICASIC设计而开发的。设计而开发的。Verilog HDLVerilog HDL较为较为适合算法级、寄存器传输级适合算法级、寄存器传输级RTLRTL、逻辑级和门级的设计、逻辑级和门级的设计,它可以很容易地把完成的设计移植到不同厂家的不同芯片它可以很容易地把完成的设计移植到不同厂家的不同芯片中去,并且对设计很容易修改。中去,并
4、且对设计很容易修改。采用采用Verilog HDLVerilog HDL输入法的最大优点是其与工艺的无输入法的最大优点是其与工艺的无关性,这使得设计者在功能设计、逻辑验证阶段可不必过关性,这使得设计者在功能设计、逻辑验证阶段可不必过多考虑门级及其工艺实现的具体细节,只需要利用系统设多考虑门级及其工艺实现的具体细节,只需要利用系统设计时对芯片的要求,施加不同的约束条件,即可设计出实计时对芯片的要求,施加不同的约束条件,即可设计出实际电路。际电路。Verilog HDLVerilog HDL完全集成于完全集成于MAX+plusMAX+plus中,它可以包含中,它可以包含MAX+plusMAX+pl
5、us支持结构的任何形式的组合,也可以包含支持结构的任何形式的组合,也可以包含AlteraAltera提供的元器件和宏功能模块。利用提供的元器件和宏功能模块。利用Verilog HDLVerilog HDL可可以进行功能描述、仿真验证、时序分析、逻辑综合等。以进行功能描述、仿真验证、时序分析、逻辑综合等。硬件描述语言概述电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院VHDL VHDLVHDL全称为超高速集成电路硬件描述语言。它是美国全称为超高速集成电路硬件描述语言。它是美国国防部于国防部于2020世纪世纪8080年代后期出于军事工业的需要开发的。年代后期出于军事工业的需
6、要开发的。19871987年年VHDLVHDL被被IEEEIEEE确定为标准化的硬件描述语言确定为标准化的硬件描述语言,即即VHDL87VHDL87版本。版本。19931993年,年,IEEEIEEE对对VHDLVHDL进行了修订,从更高进行了修订,从更高的抽象层次和系统描述能力上扩展了的抽象层次和系统描述能力上扩展了VHDLVHDL的内容,形成了的内容,形成了新版本的新版本的VHDLVHDL,即,即VHDL93VHDL93版本。版本。VHDLVHDL语言涵盖面广,抽象描述能力强,支持硬件的设语言涵盖面广,抽象描述能力强,支持硬件的设计、验证、综合与测试。计、验证、综合与测试。VHDLVHDL
7、能在多个级别上对同一逻辑能在多个级别上对同一逻辑功能进行描述,如可以在寄存器级别上对电路的组成结构功能进行描述,如可以在寄存器级别上对电路的组成结构进行描述,也进行描述,也可以在行为描述级别上对电路的功能与性能可以在行为描述级别上对电路的功能与性能进行描述进行描述。无论哪种级别的描述,都有赖于优良的综合器。无论哪种级别的描述,都有赖于优良的综合器其转化为具体的硬件结构。其转化为具体的硬件结构。硬件描述语言概述电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院 利用利用VHDLVHDL描述设计,设计者描述设计,设计者可以不懂硬件结构,也不可以不懂硬件结构,也不必考虑最终实现
8、的目标器件是什么,只需用正确的语言描必考虑最终实现的目标器件是什么,只需用正确的语言描述系统的行为即可述系统的行为即可。正因为。正因为VHDLVHDL的硬件描述与具体的工艺的硬件描述与具体的工艺技术和硬件结构无关,使得技术和硬件结构无关,使得VHDLVHDL设计程序的硬件实现目标设计程序的硬件实现目标器件有广阔的选择范围,其中包括各系列的器件有广阔的选择范围,其中包括各系列的CPLDCPLD、FPGAFPGA及及各种门阵列器件。各种门阵列器件。在各种硬件描述语言中,在各种硬件描述语言中,VHDLVHDL的行为抽象描述能力是的行为抽象描述能力是最强的最强的,从而决定了它成为系统设计领域最佳的硬件
9、描述,从而决定了它成为系统设计领域最佳的硬件描述语言。语言。硬件描述语言概述电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院ABEL-HDL ABLE-HDL是一种最基本的硬件描述语言。它支持是一种最基本的硬件描述语言。它支持各种行为的输入方式,其中包括布尔方程、真值表、状态各种行为的输入方式,其中包括布尔方程、真值表、状态机等逻辑表达方式。机等逻辑表达方式。ABEL语言和语言和Verilog 同属一种描述级同属一种描述级别,但别,但ABEL的特性和受支持程度远不如的特性和受支持程度远不如Verilog。ABLE的主要优点有使用灵活、格式简洁、编译要求的主要优点有使用灵
10、活、格式简洁、编译要求宽松等。宽松等。ABLE被广泛用于可编程逻辑器件的逻辑功能设被广泛用于可编程逻辑器件的逻辑功能设计,由于其语言描述的独立性,因而适用于各种不同规模计,由于其语言描述的独立性,因而适用于各种不同规模的可编程逻辑器件的设计。的可编程逻辑器件的设计。虽然有不少虽然有不少EDAEDA软件支持软件支持ABEL-HDLABEL-HDL,但提供,但提供ABEL-HDLABEL-HDL综合器的综合器的EDAEDA公司仅公司仅DATA IODATA IO公司一家,描述风格一般只用公司一家,描述风格一般只用门电路级描述方式,对于复杂的设计显得力不从心。应用门电路级描述方式,对于复杂的设计显得
11、力不从心。应用不广,未能进入不广,未能进入IEEEIEEE国际标准。国际标准。硬件描述语言概述电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院VerilogHDL与与VHDL的比较的比较 一般的硬件描述语言可在三个层次上进行电路描述,一般的硬件描述语言可在三个层次上进行电路描述,其层次由高到低依次可分为其层次由高到低依次可分为行为级、行为级、RTLRTL级和门电路级级和门电路级。VHDLVHDL语言通常更适合行为级和语言通常更适合行为级和RTLRTL级的描述级的描述;VerilogHDLVerilogHDL通常只适合通常只适合RTLRTL级和门电路级的描述级和门电路级的
12、描述。因此与因此与VerilogHDLVerilogHDL相比,相比,VHDLVHDL是一种高级描述语言,是一种高级描述语言,适用于电路高级建模,最适合描述电路的行为,即描述电适用于电路高级建模,最适合描述电路的行为,即描述电路的功能,但它几乎不能直接控制门电路,即控制电路的路的功能,但它几乎不能直接控制门电路,即控制电路的资源;资源;VerilogHDLVerilogHDL则是一种低级的描述语言,最适合于描则是一种低级的描述语言,最适合于描述门级电路,易于控制电路资源。述门级电路,易于控制电路资源。硬件描述语言概述电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院 任何
13、一种语言源程序,最终都要转换成门电路级才能任何一种语言源程序,最终都要转换成门电路级才能被布线器或适配器所接收。被布线器或适配器所接收。VHDLVHDL语言的综合通常要经过语言的综合通常要经过行行为级为级RTLRTL级级门电路级的转化门电路级的转化;而;而VerilogHDLVerilogHDL语言的综语言的综合过程要稍简单些,即经过合过程要稍简单些,即经过RTLRTL级级门电路级的转化门电路级的转化。VHDL和和VerilogHDL主要区别在于逻辑表达的描述主要区别在于逻辑表达的描述级别级别。VHDL虽然也可以直接描述门电路,但这方面的虽然也可以直接描述门电路,但这方面的能力却不如能力却不如
14、VerilogHDL;相反,;相反,VerilogHDL在高级建模在高级建模描述方面不如描述方面不如VHDL。VerilogHDL的描述风格接近于电的描述风格接近于电路原理图,从某种意义上说,它是电路原理图的高级文路原理图,从某种意义上说,它是电路原理图的高级文本表示方式。本表示方式。硬件描述语言概述电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院 由于由于VHDL和和VerilogHDL各有所长,市场占有量也相各有所长,市场占有量也相差不多。差不多。VHDL描述语言层次较高,不易控制底层电路描述语言层次较高,不易控制底层电路,因而对综合器的综合性能要求较高。但当设计者
15、积累一定因而对综合器的综合性能要求较高。但当设计者积累一定经验后会发现,每种综合器一般将一定描述风格的语言综经验后会发现,每种综合器一般将一定描述风格的语言综合成确定的电路,只要熟悉基本单元电路的描述风格,综合成确定的电路,只要熟悉基本单元电路的描述风格,综合后的电路还是易于控制的。合后的电路还是易于控制的。VHDL入门相对稍难,但在熟悉以后,设计效率明显入门相对稍难,但在熟悉以后,设计效率明显高于高于VerilogHDL,生成的电路性能也与,生成的电路性能也与VerilogHDL的不的不相上下相上下。在。在VHDL设计中,综合器完成的工作量是巨大的,设计中,综合器完成的工作量是巨大的,设计者
16、所做的工作就相对减少了;而在设计者所做的工作就相对减少了;而在VerilogHDL设计设计中,工作量通常比较大,因为设计者需要搞清楚具体电路中,工作量通常比较大,因为设计者需要搞清楚具体电路结构的细节。结构的细节。硬件描述语言概述电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院第三章 VHDL基本概念基本概念 硬件描述语言概述 VHDL程序的实体和结构体 VHDL程序的库和程序包 VHDL程序的配置VHDL基本概念基本概念电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院一般结构一般结构 VHDLVHDL程序结构的一个显著特点就是,任何一个完整的设
17、程序结构的一个显著特点就是,任何一个完整的设计项目计项目(或称为设计实体,简称实体或称为设计实体,简称实体)都可以分为两部分。都可以分为两部分。第一部分主要用于描述电路的第一部分主要用于描述电路的“外部端口外部端口”,包括器件,包括器件名称、端口的名称、数据类型等,我们把它称为名称、端口的名称、数据类型等,我们把它称为“实体说实体说明明”;第二部分主要用于描述电路的第二部分主要用于描述电路的“内部结构、功能及其实内部结构、功能及其实现的算法现的算法”,我们把它称为,我们把它称为“结构体结构体”。以上两部分是一个以上两部分是一个VHDLVHDL程序必备的两部分,缺一不可。程序必备的两部分,缺一不
18、可。当一个设计实体的内、外两部分都设计完成后,其他设计实当一个设计实体的内、外两部分都设计完成后,其他设计实体就可以像调用普通元件一样直接调用它。体就可以像调用普通元件一样直接调用它。VHDL语言的程序结构电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院【例例3-1】试用试用VHDL语言描述一个语言描述一个2输入端的与非门。输入端的与非门。-第一部分:第一部分:“外部端口外部端口”ENTITY nand2 IS-ENTITY nand2 IS-实体说明描述,实体名称为实体说明描述,实体名称为nand2nand2 PORT(a,b:IN BIT;-a PORT(a,b:I
19、N BIT;-a、b b为输入引脚,数据类型为为输入引脚,数据类型为BITBIT y:OUT BIT);-y y:OUT BIT);-y为输出引脚,数据类型为为输出引脚,数据类型为BITBIT END nand2;-END nand2;-结束实体说明结束实体说明 -第二部分:第二部分:“结构体结构体”ARCHITECTURE a OF nand2 IS -ARCHITECTURE a OF nand2 IS -结构体名称为结构体名称为a a BEGIN BEGIN y=a NAND b;-a y=a NAND b;-a和和b b进行与非运算,结果赋给进行与非运算,结果赋给y yEND a;-E
20、ND a;-结束结构体描述结束结构体描述 从上述例子可看出,从上述例子可看出,VHDLVHDL的所有语句都是以的所有语句都是以“;”结结束的;语句后面的束的;语句后面的“-”-”部分表示程序注释。部分表示程序注释。VHDL语言的程序结构电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院 “实体说明实体说明”部分给出了器件部分给出了器件nand2nand2的外部引脚的外部引脚(PORT)(PORT),如图所示。如图所示。a a、b b为输入引脚,为输入引脚,y y为输出引脚,数据类型均为为输出引脚,数据类型均为BITBIT。BITBIT指的是指的是1 1位二进制数,只有位二
21、进制数,只有2 2两种逻辑取值两种逻辑取值“0”0”和和“1”1”。“结构体结构体”部分给出了部分给出了nand2nand2的内部功能信息。其中的内部功能信息。其中“NAND”NAND”是实现是实现“与非与非”运算的运算符;运算的运算符;“=”=”是赋值运是赋值运算符,从电路的角度来看就是表示信号的传输,即将算符,从电路的角度来看就是表示信号的传输,即将a a和和b“b“与非与非”运算后的结果信号传输给运算后的结果信号传输给y y。VHDL语言的程序结构电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院实体实体 实体是实体是VHDLVHDL程序设计中最基本的模块,可以单独
22、编译程序设计中最基本的模块,可以单独编译和并入设计库。和并入设计库。实体就是设计对象实体就是设计对象(或设计项目或设计项目),实体可代表任何电,实体可代表任何电路,从一个门电路、一个芯片、一块电路板,到一个复杂路,从一个门电路、一个芯片、一块电路板,到一个复杂系统都可看成一个实体。如果在设计时采用的是自顶向下系统都可看成一个实体。如果在设计时采用的是自顶向下分层、划分模块的设计方法,那么,各层的设计模块都可分层、划分模块的设计方法,那么,各层的设计模块都可看成一个实体。顶层的系统模块称为顶层实体,低层的设看成一个实体。顶层的系统模块称为顶层实体,低层的设计模块称为低层实体。计模块称为低层实体。
23、在用在用VHDLVHDL语言描述时,顶层的实体可将比它低的低层语言描述时,顶层的实体可将比它低的低层实体当作元件来调用。至于低层实体的具体结构和功能,实体当作元件来调用。至于低层实体的具体结构和功能,在低层实体中描述。在低层实体中描述。实体电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院实体说明实体说明 实体说明的功能就是对实体与外部电路的接口进行描实体说明的功能就是对实体与外部电路的接口进行描述,是实体的表层设计单元,它规定了实体的输入输出接述,是实体的表层设计单元,它规定了实体的输入输出接口信号,是实体对外的一个通信界面。口信号,是实体对外的一个通信界面。实体说明常
24、用的语句结构如下:实体说明常用的语句结构如下:ENTITY ENTITY 实体名实体名 ISIS GENERIC(GENERIC(类属参数说明语句类属参数说明语句););PORT(PORT(端口说明端口说明););END END 实体名实体名;实体电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院2 2中间方括号内的语句描述并非必需。中间方括号内的语句描述并非必需。3 3对于对于VHDLVHDL的编译器和综合器来说,程序字母的大小写是的编译器和综合器来说,程序字母的大小写是不加区分的,但为了便于阅读和分辨,建议将不加区分的,但为了便于阅读和分辨,建议将VHDLVHDL的表
25、示的表示符或基本语句的关键词以大写方式表示,而由设计者添加符或基本语句的关键词以大写方式表示,而由设计者添加的内容以小写方式来表示。的内容以小写方式来表示。实体说明中应注意以下几个问题:实体说明中应注意以下几个问题:1 1实体名可由设计者自己规定,可采用英文字母实体名可由设计者自己规定,可采用英文字母“A-Z”A-Z”、“a-z”a-z”,阿拉伯数字,阿拉伯数字“0-9”0-9”,或底线符号,或底线符号“_”_”,但字符,但字符数不能超过数不能超过3232个,不能以数字或个,不能以数字或“_”_”开头,不能连续使用开头,不能连续使用底线符号底线符号“_ _”_ _”,也不能以,也不能以“_”_
26、”结束。结束。实体电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院C11DclkdqqbENTITY dff ISENTITY dff IS PORT(clk,d:IN BIT;PORT(clk,d:IN BIT;q,qb:OUT BIT);q,qb:OUT BIT);END dff;END dff;【例例3-23-2】试编写一个试编写一个D D触发器的实体说明。触发器的实体说明。本例中:本例中:实体名:实体名:dff类属参数说明语句:缺省类属参数说明语句:缺省(非必须非必须)端口说明:输入端口端口说明:输入端口 clk,d ;输出端口;输出端口q,qb。端口类型端口类
27、型 BIT。实体电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院类属参数说明语句类属参数说明语句(GENERIC)(GENERIC)类属参数说明语句必须放在端口说明语句之前,类属类属参数说明语句必须放在端口说明语句之前,类属参数的值可由实体外部提供,它通常用于设定元件内部电参数的值可由实体外部提供,它通常用于设定元件内部电路的结构和规模,设计者可从外面通过重新设定类属参数路的结构和规模,设计者可从外面通过重新设定类属参数的值而容易地改变元件内部电路结构和规模。的值而容易地改变元件内部电路结构和规模。类属参数说明语句的一般书写格式如下:类属参数说明语句的一般书写格式如下:
28、GENERIC(GENERIC(常数名常数名:数据类型数据类型 :设定值设定值;常数名常数名:数据类型数据类型 :设定值设定值););其中的常数名由设计者定义,数据类型通常取其中的常数名由设计者定义,数据类型通常取INTEGER(INTEGER(整整数数)或或TIMETIME等类型,设定值即为常数名所代表的值。但需注等类型,设定值即为常数名所代表的值。但需注意,综合器只支持整数数据类型。意,综合器只支持整数数据类型。实体电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院【例例3-33-3】试编写一个试编写一个1212位二进制计数器的实体说明。位二进制计数器的实体说明。EN
29、TITY counter_x ISENTITY counter_x IS GENERIC(n:INTEGER:=12);GENERIC(n:INTEGER:=12);PORT(clk:IN STD_LOGIC;PORT(clk:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(n-1 DOWNTO 0);q:OUT STD_LOGIC_VECTOR(n-1 DOWNTO 0);END counter_x;END counter_x;本例中,定义了类属参数本例中,定义了类属参数n n的设定值为的设定值为1212,在后续语句,在后续语句中,用到中,用到n n的地方均可用的地方
30、均可用1212代替。本例的第代替。本例的第4 4行语句也可写成行语句也可写成 q:OUT STD_LOGIC_VECTOR(11 DOWNTO 0);q:OUT STD_LOGIC_VECTOR(11 DOWNTO 0);优点优点:当在某个实体内大量使用某个参数时,可把该参数:当在某个实体内大量使用某个参数时,可把该参数定义成类属参数。当设计者需改变该参数的值时,只需在定义成类属参数。当设计者需改变该参数的值时,只需在类属参数语句中改写一次即可。类属参数语句中改写一次即可。从从EDAEDA工具综合的结果来看,工具综合的结果来看,将大大地影响设计结果的硬件规模将大大地影响设计结果的硬件规模。实体
31、电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院 端口说明对设计实体与外部电路的接口通道进行了说端口说明对设计实体与外部电路的接口通道进行了说明,包括对每一接口的输入输出模式和数据类型进行了定明,包括对每一接口的输入输出模式和数据类型进行了定义。义。端口说明的一般书写格式如下:端口说明的一般书写格式如下:PORT(PORT(端口名端口名,端口名端口名:端口模式端口模式 数据类型数据类型;端口名端口名,端口名端口名:端口模式端口模式 数据类型数据类型););实体电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院(1)(1)端口名端口名。端口名是设计者
32、赋给每个对外通道的名字,它。端口名是设计者赋给每个对外通道的名字,它与原理图中元件符号上的管脚名相类似。对端口的命名可与原理图中元件符号上的管脚名相类似。对端口的命名可采用英文字母采用英文字母“A-Z”A-Z”、“a-z”a-z”,阿拉伯数字,阿拉伯数字“0-9”0-9”,或,或底线符号底线符号“_”_”,但字符数不能超过,但字符数不能超过3232个,不能以数字或个,不能以数字或“_”_”开头,不能连续使用底线符号开头,不能连续使用底线符号“_ _”_ _”,也不能以,也不能以“_”_”结束。每个端口名在同一实体中必须是唯一的,不能有重结束。每个端口名在同一实体中必须是唯一的,不能有重复现象。
33、复现象。(2)(2)端口模式端口模式。端口模式用来说明端口上的数据流动方向。端口模式用来说明端口上的数据流动方向。端口模式包括端口模式包括IN、OUT、INOUT、BUFFER四种类型。四种类型。实体电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院 1)IN1)IN。定义的端口为输入端口,可以通过此端口将外部。定义的端口为输入端口,可以通过此端口将外部的其他信号读入设计实体中。的其他信号读入设计实体中。2)OUT2)OUT。定义的端口为输出端口,通过此端口可将信号从。定义的端口为输出端口,通过此端口可将信号从设计实体输出到外部。设计实体输出到外部。3)INOUT3)IN
34、OUT。定义的端口为输入输出双向端口,即实体可以。定义的端口为输入输出双向端口,即实体可以通过该端口输入外部信号,又可以通过该端口把实体内的通过该端口输入外部信号,又可以通过该端口把实体内的信号输出到外部。信号输出到外部。INOUTINOUTBUFFER实体电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院 4)BUFFER4)BUFFER。定义的端口为具有数据读入功能的输出端。定义的端口为具有数据读入功能的输出端口。它与口。它与INOUTINOUT的区别是,的区别是,INOUTINOUT是双向端口,即可以输入是双向端口,即可以输入信号,也可以输出信号;而信号,也可以输出
35、信号;而BUFFERBUFFER也可以输出实体信号到也可以输出实体信号到外部,但作为输入时,信号不是由外部输入,而是在实体外部,但作为输入时,信号不是由外部输入,而是在实体内由输出信号反馈得到,即内由输出信号反馈得到,即BUFFERBUFFER模式的端口在信号输出模式的端口在信号输出实体的同时,也可以被实体本身读入。实体的同时,也可以被实体本身读入。(3)(3)数据类型数据类型。数据类型是指端口信号的取值类型。数据类型是指端口信号的取值类型。1)BIT1)BIT。二进制位类型,其取值是一个。二进制位类型,其取值是一个1 1位的二进制数,取位的二进制数,取值只能是值只能是0 0或或1 1。2)B
36、IT_VECTOR2)BIT_VECTOR。位向量数据类型,其取值是一组二进制数,。位向量数据类型,其取值是一组二进制数,常用来描述总线等端口,如常用来描述总线等端口,如data:IN BIT_VECTOR(3 DOWNTO data:IN BIT_VECTOR(3 DOWNTO 0)0),定义了一个具有,定义了一个具有4 4位位宽的输入数据总线端口。位位宽的输入数据总线端口。实体电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院 3)STD_LOGIC3)STD_LOGIC。工业标准逻辑类型,取值有。工业标准逻辑类型,取值有0 0、1 1、Z(Z(高阻高阻)、X(X(未
37、知未知)等等9 9种,该数据类型由种,该数据类型由IEEEIEEE库中的库中的STD_LOGIC_1164STD_LOGIC_1164程序包定义。程序包定义。4)STD_LOGIC_VECTOR4)STD_LOGIC_VECTOR。工业标准逻辑向量类型,是。工业标准逻辑向量类型,是STD_LOGICSTD_LOGIC的组合,也常用来描述总线等端口。的组合,也常用来描述总线等端口。5)INTEGER5)INTEGER。整数类型,可用作循环的指针或常数,通常。整数类型,可用作循环的指针或常数,通常不用作不用作I/OI/O信号信号。6)BOOLEAN6)BOOLEAN。布尔类型,取值有。布尔类型,取
38、值有FALSE(FALSE(假假)、TRUE(TRUE(真真)两种。两种。电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院关键字关键字说明说明BOOLEAN布尔类型,取值有布尔类型,取值有FALSE、TURE两种两种BIT二进制位类型,取值有二进制位类型,取值有0、1BIT_VECTOR位向量类型,表示一组二进制数位向量类型,表示一组二进制数STD_LOGIC工业标准的逻辑类型,取值工业标准的逻辑类型,取值0、1、X、ZSTD_LOGIC_VECTOR工业标准的逻辑向量类型,是工业标准的逻辑向量类型,是STD_LOGIC的组合的组合INTEGER整数类型,可用做循环的指
39、针或常数整数类型,可用做循环的指针或常数常用端口数据类型常用端口数据类型实体电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院结构体 对一个设计实体而言,实体说明部分描述的是实体的对一个设计实体而言,实体说明部分描述的是实体的对外接口,并不考虑实体内部的具体细节。实体的内部结对外接口,并不考虑实体内部的具体细节。实体的内部结构与行为由结构体来描述。构与行为由结构体来描述。结构体是实体的一个重要组成部分,主要用来描述实结构体是实体的一个重要组成部分,主要用来描述实体内的硬件结构、元件之间的连接、实体所完成的逻辑功体内的硬件结构、元件之间的连接、实体所完成的逻辑功能以及数据的
40、传输和变换等方面的内容。一个实体可以有能以及数据的传输和变换等方面的内容。一个实体可以有一个或多个结构体,每个结构体可分别描述该实体功能的一个或多个结构体,每个结构体可分别描述该实体功能的不同实现方案。不同实现方案。结构体一般由两大部分组成:结构体一般由两大部分组成:l对数据类型、常数、信号、子程序和元器件等因素的说明;对数据类型、常数、信号、子程序和元器件等因素的说明;l描述实体逻辑行为的功能描述语句,包括各种顺序语句和描述实体逻辑行为的功能描述语句,包括各种顺序语句和并行语句。并行语句。结构体结构体电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院 ARCHITECT
41、URE ARCHITECTURE 结构体名结构体名 OF OF 实体名实体名 ISIS 说明语句说明语句 BEGIN BEGIN 功能描述语句功能描述语句 END END 结构体名;结构体名;在书写格式上需注意,结构体中在书写格式上需注意,结构体中“实体名实体名”必须与实必须与实体说明中的体说明中的“实体名实体名”相一致,而相一致,而“结构体名结构体名”可由设计可由设计者自己选择,但当一个实体具有多个结构体时,各结构体者自己选择,但当一个实体具有多个结构体时,各结构体名不可重复。说明语句必须放在关键词名不可重复。说明语句必须放在关键词“ARCHITECTURE”ARCHITECTURE”和和“
42、BEGIN”BEGIN”之间,结构体必须以之间,结构体必须以“END END 结构体名结构体名;”;”作为作为结束句。结束句。结构体结构体电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院二、二、结构体的说明语句 结构体中的说明语句是对结构体的功能描述语句中结构体中的说明语句是对结构体的功能描述语句中要用到的信号要用到的信号(SIGNAL)(SIGNAL)、数据类型、数据类型(TYPE)(TYPE)、常数、常数(CONSTANT)(CONSTANT)、元件、元件(COMPONENT)(COMPONENT)、函数、函数(FUNCTION)(FUNCTION)和过程和过程(P
43、ROCEDURE)(PROCEDURE)等加以说明。等加以说明。结构体信号定义和端口说明一样,应有信号名称和结构体信号定义和端口说明一样,应有信号名称和数据类型定义,因是内部连接用的信号不需说明方向。数据类型定义,因是内部连接用的信号不需说明方向。需要注意的是,在一个结构体中说明和定义的数据需要注意的是,在一个结构体中说明和定义的数据类型、常数、元件、函数和过程只能用于该结构体中。类型、常数、元件、函数和过程只能用于该结构体中。如果希望这些定义也能用于其他的实体或结构体中,需如果希望这些定义也能用于其他的实体或结构体中,需要将其作为程序包来处理。要将其作为程序包来处理。结构体结构体电子设计自动
44、化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院 功能描述语句含有五种不同类型且以并行方式工作功能描述语句含有五种不同类型且以并行方式工作的语句结构,这可以看成是结构体的五个子结构。而在的语句结构,这可以看成是结构体的五个子结构。而在每一子结构的内部也可能含有顺序运行的逻辑描述语句。每一子结构的内部也可能含有顺序运行的逻辑描述语句。这就是说虽然五个子结构本身是并行语句,但每个子结这就是说虽然五个子结构本身是并行语句,但每个子结构内所包含的语句并不一定是并行语句。构内所包含的语句并不一定是并行语句。结构体结构体电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院
45、右图给出了结构体右图给出了结构体的一般构造图。的一般构造图。可以看出结构体包可以看出结构体包含含说明语句说明语句和和功能描述功能描述语句语句。有关常用的子结构有关常用的子结构基本组成和语句描述将基本组成和语句描述将在后续内容中介绍。在后续内容中介绍。结构体结构体电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院四、四、结构体描述方法 n(1)行为描述法:采用进程语句,顺序描述被称设计实体的行为描述法:采用进程语句,顺序描述被称设计实体的行为。行为。n(2)数据流描述法:采用进程语句顺序描述数据流在控制流数据流描述法:采用进程语句顺序描述数据流在控制流作用下被加工、处理、存
46、储的全过程。作用下被加工、处理、存储的全过程。n(3)结构描述法,采用并行处理语句描述设计实体内的结构结构描述法,采用并行处理语句描述设计实体内的结构组织和元件互连关系。组织和元件互连关系。结构体结构体电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院&ABYtemp1temp2temp3xor2VHDL语言的程序结构电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院-实体说明实体说明 ENTITY xor2 IS -ENTITY xor2 IS -实体名为实体名为xor2xor2 PORT(A,B:IN BIT;-A PORT(A,B:IN BIT
47、;-A、B B为输入引脚为输入引脚,数据类型数据类型BITBIT Y:OUT BIT);-Y Y:OUT BIT);-Y为输出引脚为输出引脚,数据类型数据类型BITBIT END xor2;END xor2;-结构体结构体 ARCHITECTURE a OF xor2 IS -ARCHITECTURE a OF xor2 IS -结构体名为结构体名为a a SIGNAL temp1,temp2,temp3:BIT;-SIGNAL temp1,temp2,temp3:BIT;-类属参数说明语句类属参数说明语句 BEGIN -BEGIN -开始结构体描述开始结构体描述 temp1=A NAND B
48、;-Atemp1=A NAND B;-A和和B B与非运算与非运算,结果赋给结果赋给temp1temp1 temp2=A NAND temp1;-A temp2=A NAND temp1;-A和和temp1temp1与非运算给与非运算给temp2temp2 temp3=B NAND temp1;-B temp3=B NAND temp1;-B和和temp1temp1与非运算给与非运算给temp3temp3 Y=temp2 NAND temp3;Y=temp2 NAND temp3;END a;-END a;-结束结构体描述结束结构体描述VHDL语言的程序结构电子设计自动化电子设计自动化光电信息
49、与通信工程学院光电信息与通信工程学院 在上述例子中,在上述例子中,temp1temp1、temp2temp2、temp3temp3和和Y Y这四条赋这四条赋值语句之间是并行运行的关系,即它们的执行是同步的。值语句之间是并行运行的关系,即它们的执行是同步的。只要某个信号发生变化,都会立即引起相应的语句被执只要某个信号发生变化,都会立即引起相应的语句被执行,产生相应的输出,而不管该语句的书写先后顺序。行,产生相应的输出,而不管该语句的书写先后顺序。这一点和传统的程序设计语言的顺序执行情况是不同的,这一点和传统的程序设计语言的顺序执行情况是不同的,但它和硬件电路的工作情况相一致,这种并行的执行方但它
50、和硬件电路的工作情况相一致,这种并行的执行方式是式是VHDLVHDL与传统程序语言的最显著区别。与传统程序语言的最显著区别。VHDL语言的程序结构电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院第三章 VHDL基本概念基本概念 硬件描述语言概述 VHDL程序的实体和结构体 VHDL程序的库和程序包 VHDL程序的配置VHDL基本概念基本概念电子设计自动化电子设计自动化光电信息与通信工程学院光电信息与通信工程学院(LIBRARY)库是经编译后数据的集合,它可以是预先定义好的库是经编译后数据的集合,它可以是预先定义好的数据类型,也可以是已编译过的设计单元数据类型,也可以是已