您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 第4章 VHDL语言基础
FPGA-CPLD原理及应用第4章VHDL语言基础第四章VHDL语言基础FPGA-CPLD原理及应用第4章VHDL语言基础硬件特性工程(实体)外部(可视部分,也称端口)内部(不可视,也称内部功能和算法)FPGA-CPLD原理及应用第4章VHDL语言基础库实体(Entity)结构体(Architecture)进程或其它并行结构配置(Configuration)VHDL结构程序包FPGA-CPLD原理及应用第4章VHDL语言基础Library(程序库)Package(程序包)Entity(实体)Architecture(结构体)Configuration(配置)VHDL程序由5个部分组成FPGA-CPLD原理及应用第4章VHDL语言基础一个实体可以拥有多个不同的结构体,而每个结构体在实体中的地位是相同的。可以利用配置语句为实体指定一个结构体。VHDL程序由5个部分组成库存放已编译过的实体、结构体、程序包和配置。程序包由一组对外可见的信号、常量、数据类型、子程序、属性等组成的程序集合。实体描述系统的外部信号接口。结构体描述系统的行为,系统数据流程,系统组织结构形式。配置FPGA-CPLD原理及应用第4章VHDL语言基础--eqcomp4isafourbitequalitycomparatorLibraryIEEE;useIEEE.std_logic_1164.all;entityeqcomp4isport(a,b:instd_logic_vector(3downto0);equal:outstd_logic);endeqcomp4;architecturedataflowofeqcomp4isbeginequal=‘1’whena=belse‘0’;Enddataflow;VHDL组成eqcomp4.vhd包实体结构体文件名和实体名一致每行;结尾关键字begin关键字end后跟实体名关键字end后跟结构体名库FPGA-CPLD原理及应用第4章VHDL语言基础一、实体(Entity)描述此设计功能输入输出端口(Port)在层次化设计时,Port为模块之间的接口在芯片级,则代表具体芯片的管脚A[3..0]B[3..0]equalEntityeqcomp4isport(a,b:instd_logic_vector(3downto0);equal:outstd_logic);endeqcomp4;FPGA-CPLD原理及应用第4章VHDL语言基础Port(端口名称{,端口名称}:端口模式数据类型;…端口名称{,端口名称}:端口模式数据类型);端口声明确定输入、输出端口的数目和类型。输入(Input)输出(Output)双向(Inout):可代替所有其他模式,但降低了程序的可读性,一般用于与CPU的数据总线接口缓冲(Buffer):与Output类似,但允许该管脚名作为一些逻辑的输入信号FPGA-CPLD原理及应用第4章VHDL语言基础端口模式符号图INOUTBUFFERINOUTFPGA-CPLD原理及应用第4章VHDL语言基础out和buffer的区别FPGA-CPLD原理及应用第4章VHDL语言基础OUT、INOUT与BUFFER模式的区别FPGA-CPLD原理及应用第4章VHDL语言基础例:一个完整描述(3比特计数器)FPGA-CPLD原理及应用第4章VHDL语言基础计数器等效描述(out与buffer的区别)FPGA-CPLD原理及应用第4章VHDL语言基础指端口上流动的数据表达格式,为预先定好的数据类型,如:bit、bit_vector、integer、std_logic、std_logic_vector等。例:entitym81isport(a:instd_logic_vector(7downto0);sel:instd_logic_vector(2downto0);b:outbit);endentitym81;3、数据类型FPGA-CPLD原理及应用第4章VHDL语言基础作用:用于描述设计实体的内部结构以及实体端口之间的逻辑关系两个组成部分:说明部分:对数据类型、常数、信号、子程序、元件等元素的说明。功能描述部分:以各种不同的描述风格对系统的逻辑功能进行描述。常用的描述风格有:行为描述、数据流描述、结构化描述。二、结构体FPGA-CPLD原理及应用第4章VHDL语言基础结构体结构体说明结构体功能描述常数说明数据类型说明信号说明例化元件说明子程序说明块语句进程语句信号赋值语句子程序调用语句元件例化语句二、结构体FPGA-CPLD原理及应用第4章VHDL语言基础实体与结构体的关系设计实体结构体1结构体2结构体3结构体n。。。一个设计实体可有多个结构体,代表实体的多种实现方式。各个结构体的地位相同。FPGA-CPLD原理及应用第4章VHDL语言基础注:同一实体的结构体不能同名。定义语句中的常数、信号不能与实体中的端口同名。architecture结构体名称of实体名称is[说明语句];begin[(功能描述)语句];end[architecture]结构体名称;结构体的语法FPGA-CPLD原理及应用第4章VHDL语言基础例:结构体中错误的信号声明FPGA-CPLD原理及应用第4章VHDL语言基础设计实体结构体1结构体2结构体3结构体n。。。一个设计实体的多种实现方式配置:从某个实体的多种结构体描述方式中选择特定的一个。三、配置FPGA-CPLD原理及应用第4章VHDL语言基础configuration配置名of实体名isfor选配结构体名endfor;end配置名;简单配置的语法FPGA-CPLD原理及应用第4章VHDL语言基础libraryieee;useieee.std_logic_1164.all;entitynandisport(a:instd_logic;b:instd_logic;c:outstd_logic);endentitynand;architectureart1ofnandisbeginc=not(aandb);endarchitectureart1;一个与非门不同实现方式的配置FPGA-CPLD原理及应用第4章VHDL语言基础architectureart2ofnandisbeginc=‘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’;endarchitectureart2;FPGA-CPLD原理及应用第4章VHDL语言基础configurationfirstofnandisforart1;endfor;endfirst;configurationsecondofnandisforart2endfor;endsecond;FPGA-CPLD原理及应用第4章VHDL语言基础四、库库是一种用来存储预先完成的程序包和数据集合体的仓库。VHDL语言中存在多个不同的库,库与库之间独立,不可嵌套;库的好处:达到资源共享。1、格式:LIBRARY库名;FPGA-CPLD原理及应用第4章VHDL语言基础2、库的种类IEEE库STD库(默认库)ASIC库WORK库(默认库)用户定义库库的分类FPGA-CPLD原理及应用第4章VHDL语言基础IEEE库IEEE库是最常用的资源库,包含IEEE标准的程序包和其他一些支持工业标准的程序包。还有一些程序包,如SYNOPSYS公司提供的STD_LOGIC_ARITHSTD_LOGIC_UNSIGNEDSTD_LOGIC_SIGNED不属于IEEE标准,但仍汇集在IEEE库中。FPGA-CPLD原理及应用第4章VHDL语言基础该库中的程序包并非符合VHDL语言标准,因此在使用时必须以显示表达出来。格式:LIBRARYIEEE;库内程序包:•std_logic_1164(std_logictypes&relatedfunctions)•std_logic_arith(arithmeticfunctions)•std_logic_signed(signedarithmeticfunctions)•std_logic_unsigned(unsignedarithmeticfunctions)IEEE库FPGA-CPLD原理及应用第4章VHDL语言基础Std_logic_1164:包含了一些标准逻辑电平所需数据类型和函数的定义。内含数据类型:STD_LOGIC和STD_LOGIC_VECTOR。Std_logic_Arith:扩展了三个数据类型UNSIGNED,SIGNED和SMALL_INT,并为其定义了相关的算术运算符和转换函数。Std_logic_signed和Std_logic_Unsigned:重载了可用于INTEGER型和STD_LOGIC及STD_LOGIC_VECTOR型混合运算的运算符,并定义了不同数据类型间的转换函数。IEEE库程序包FPGA-CPLD原理及应用第4章VHDL语言基础TypeSTD_LOGIC:(‘U’,‘X’,‘0’,‘1’,‘Z’,‘W’,‘L’,‘H’,‘-’)•‘W’,‘L’,‘H”弱值(综合中不支持)•‘X’–强未知•‘Z’–高阻态•‘-’忽略•‘U’–未初始化九值逻辑FPGA-CPLD原理及应用第4章VHDL语言基础STD库STD库(默认库)库中程序包为:standard,TEXTIO,STD库符合VHDL语言标准,是默认库,在应用中不必象IEEE库那样显示表达出来。定义最基本的数据类型:Bit,bit_vector,Boolean,Integer,Real,Time并支持这些数据类型的所有运算符函数注:TypeBIT:2logicvaluesystem(‘0’,‘1’)FPGA-CPLD原理及应用第4章VHDL语言基础WORK库WORK库:是用户的VHDL设计的现行工作库;用于存放用户设计和定义的一些设计单元和程序包;满足VHDL语言标准,在实际调用中不必以显式说明。FPGA-CPLD原理及应用第4章VHDL语言基础用户定义库用户为自身设计需要,所开发的程序包和实体等,也可以汇集在一起定义成一个库。这就是用户定义库或称用户库,在使用时同时要首先说明库名。FPGA-CPLD原理及应用第4章VHDL语言基础库的使用库的说明语句总是放在实体单元前面,而且库语言一般必须与USE语言同用。一般,在使用库时先要用两条语句对库进行说明,如:LIBRARY库名;USE库名.程序包.项目名;或USE库名.程序包名.ALL;FPGA-CPLD原理及应用第4章VHDL语言基础LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.CONV_INTEGER;上例表明,要使用IEEE库中STD_LOGIC_1164包集合中的所有过程和函数,这里项目名为ALL,表示包集合中的所有项目都要用。库调用举例FPGA-CPLD原理及应用第4章VHDL语言基础程序包(Package):将已定义的常数、数据类型、元件语句、子程序等收集起来组成一个集合,以便被更多的VHDL设计实体进行访问和共享。五、程序包(包集合)Package程序包结构:程序包说明(包首)程序包主体(包体)FPGA-CPLD原理及应用第4章VHDL语言基础包声明项可由以下语句组成:use语句(用来包括其它程序包);类型说明;子类型说明;常量说明;信号说明;子程序说明;元件说明。package程序包名is{包说明项}end程序包名;1、程序包说明(包首)语法:FPGA-CPLD原理及应用第4章VHDL语言基础包首说明FPGA-CPLD原理及应用第4章VHDL语言基础包体说明项可含:use语句;子程序说明;子程序主体;类型说明;子类型说明;常量说明。packagebody程序包名is{包体
本文标题:第4章 VHDL语言基础
链接地址:https://www.777doc.com/doc-3737694 .html