版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VHDL语言刘书桂天津大学精密仪器与光电子工程学院精密测试技术及仪器国家重点实验室:274047797/26/2023VHDL程序的根本结构VHDL程序一般由5个局部组成:Library〔程序库〕Package〔程序包〕Entity〔实体〕Architecture〔构造体〕Configuration〔配置〕VHDL程序的根本结构VHDL程序一般由5个局部组成:Library〔程序库〕Package〔程序包〕Entity〔实体〕Architecture〔构造体〕Configuration〔配置〕库和程序包库:存放已编译过的实体、构造体、
程序包和配置程序包:由一组对外可见的信号、常量、数据类型、子程序、属性等组成的程序集合库和程序包的使用Library<库名列表>;Use<库名>.<程序包名>.<工程名>;例:Libraryieee;Useieee.std_logic_1164.all;常用库StdVHDL的标准库ieeeIEEE认可的标准库Work现行作业库Vital面向ASIC的库用户自定义库常用库及其程序包Std:VHDL的标准库
standard:定义了bit,bit_vector,character,time等数据类型textio:包含了对文本文件进行读写操作的过程和函数
缺省说明:
librarystd;use;常用库及其程序包IEEE:IEEE认可的标准库
std_logic_1164:定义了
std_logic,
std_logic_vector,
std_ulogic,
std_ulogic_vector等数据类型VHDL程序的根本结构VHDL程序一般由5个局部组成:Library〔库〕Package〔程序包〕Entity〔实体〕Architecture〔构造体〕Configuration〔配置〕设计实体实体说明构造体设计实体的组成设计实体实体说明构造体1有多个构造体的设计实体的组成构造体2构造体n……配置设计实体实体说明构造体设计实体的组成实体说明Entity<实体名>is[类属说明;][端口说明;][实体说明局部;][实体语句局部;]End[entity]<实体名>;最简单的例:entitynothingisendnothing;实体说明--类属说明类属为设计实体和外部环境通讯的静态通信提供通道。可以定义端口大小、元件数目及定时特性等Generic([constant]参数名:[in]子类型标识[:=静态表达式];
…);例:Generic(delay:time:=10ns);实体说明--端口说明端口为设计实体和外部环境通讯的动态通信提供通道port([signal]端口名:[模式]子类型标识[:=静态表达式];
…);模式:in,out,inout,bufferInout和buffer都是双向端口,但buffer只能有一个驱动源例:Port(a,b:inbit;q:outbit);实体说明--实体说明局部用于定义设计实体接口中的公共信息,如定义新的数据类型和常量等例:定义新的数据类型colorTypecolorisarray(6downto0)ofstd_logic;实体说明--实体语句局部是设计实体接口的共同局部。只能由并行断言语句、并行过程调用语句、被动进程语句组成,且不能在语句中给信号赋值。设计实体实体说明构造体设计实体的组成构造体architecture<构造体名>of<实体名>is[构造体说明语句;]Begin<功能描述语句;>End[architecture]<构造体名>;构造体-构造体说明语句定义本构造体内部使用的信号、常数、数据类型和函数因为它们仅限于内部使用,所以没有也不需要有方向的说明构造体-功能描述语句具体描述构造体的行为和结构。功能描述语句是并行执行的,并不以语句的书写顺序为执行顺序。有5种类型的功能描述语句:
信号赋值语句、块语句、进程语句、
子程序调用语句、元件例化语句。并行信号赋值语句1、简单赋值语句
目标信号<=表达式;2、条件信号赋值语句
目标信号<=表达式1when条件1else 表达式2when条件2else
…… 表达式n-1when条件n-1else 表达式n;3、选择信号赋值语句
with条件表达式select 目标信号<= 表达式1when条件1, 表达式2when条件2,
……表达式nwhen条件n;块语句块标号:BLOCK[保护表达式][类属子句;][端口子句;][块说明局部;]BEGIN<块语句局部;>ENDBLOCK块标号;类属子句用于参数的定义;端口子句用于信号的定义;块说明局部对该块要用到的信号、常数、元件和子程序等进行说明;块语句局部对该块的功能进行描述,块语句局部的语句是并行执行的,和书写顺序无关。进程语句[进程标号:]PROCESS[敏感信号表][IS][进程语句说明局部;]BEGIN<进程语句局部;>ENDPROCESS[进程标号];敏感信号表列出进程对其敏感的所有信号,每当其中的一个或多个信号发生变化时,就会启动进程的执行;进程语句说明局部对该进程要用到的变量、子程序等进行说明;进程语句局部对该进程的功能进行描述,进程语句局部的语句是顺序执行的,和书写顺序有关。子程序调用语句过程名〔参数表〕;子程序调用语句假设位于“构造体〞或“块语句〞中,它就是并发语句;假设位于“进程语句〞或另一个“子程序〞中,它就是顺序语句;设计实体实体说明构造体1有多个构造体的设计实体的组成构造体2构造体n……
配置配置一个实体可以拥有多个不同的构造体,而每个构造体在实体中的地位是相同的。可以利用配置语句为实体指定一个构造体。最简单的缺省配置格式结构CONFIGURATION配置名OF实体名ISFOR构造体名
ENDFOR;END配置名;CONFIGURATION配置名OF实体名IS[语句说明];END配置名;配置例ENTITYcounterIS----ENDcounter;ARCHITECTUREcount_255OFcounterIS----ENDcount_255;ARCHITECTUREcount_64kOFcounterIS----ENDcount_64k;CONFIGURATIONsmall_countOFcounterISFORcount_255ENDFOR;ENDsmall_count;CONFIGURATIONbig_countOFcounterISFORcount_64KENDFOR;ENDbig_count;现场演示4选1数据选择器Entitymux4isEndmux4;Architecturertlofmux4isBeginEndrtl;现场演示4比特可逆计数器端口方向说明方向定义含义IN输入OUT输出INOUT双向BUFFER具有读功能的输出模块只写,可有多个驱动可读、可写可读写,仅1个驱动只读在实际的数字集成电路中,IN相当于只可输入的引脚,OUT相当于只可输出的引脚,BUFFER相当于带输出缓冲器并可回读的引脚,INOUT相当于双向引脚。PACKAGE已在设计实体中定义的数据类型、子程序或数据对象对于其它的实体是不可用的,或者说是不可见的。为了使其能被更多的实体访问和共享,可以将它们收集在一个程序包中。7/26/2023PACKAGE7/26/2023PACKAGE程序包首:程序包首的说明语句可收集多个VHDL设计所需的公共
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论