下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 [笔记]VHDL语言详解

[笔记]VHDL语言详解.doc

[笔记]VHDL语言详解

Georgia玉
2017-09-17 0人阅读 举报 0 0 暂无简介

简介:本文档为《[笔记]VHDL语言详解doc》,可适用于初中教育领域

笔记VHDL语言详解VHDL语言详解第二章VHDL程序基础VHDL程序结构VHDL的语言元素VHDL的基本描述语句VHDL结构体的三种描述方法VHDL程序结构VHDL程序基本结构VHDL结构体的基本子结构VHDL程序结构VHDL程序基本结构例一个输入的与门的逻辑描述LIBRARYieee库说明语句USEieeestdlogicALL程序包说明语句ENTITYandISPORT(a,b:INSTDLOGICy:OUTSTDLOGIC)ENDandARCHITECTUREandxOFandISBEGINy<=aANDbENDandx实体部分结构体部分VHDL设计文件的两个基本组成部分实体(Entity)结构体(Architecture)配置(Configuration)包集合(Package)库(Library)一个完整的VHDL程序库用于存放已编译的实体,结构体,包集合和配置VHDL程序基本结构实体部分描述设计系统的外部接口信号(即输入输出信号)结构体用于描述系统的内部电路配置用于从库中选取所需元件安装到设计单元的实体中包集合存放各设计模块能共享的数据类型,常数,子程序等实体(ENTITY)实体的一般格式为:ENTITY实体名IS类属参数说明端口说明ENDENTITY,IS,END是VHDL的关键字(保留字)实体中的每一个IO信号被称为端口,其功能对应于电路图符号的一个引脚端口说明则是对一个实体的一组端口的定义,即对基本设计实体与外部接口的描述端口是设计实体和外部环境动态通信的通道ayandb类属参数说明是可选部分如果需要,可使用以"GENERIC"语句来指定该设计单元的类属参数(如延时,功耗等)实体名,端口名等均应为符合VHDL命名规则的标识符端口说明的一般格式为:PORT(端口名{,端口名}:端口模式数据类型端口名{,端口名}:端口模式数据类型)端口模式用来说明数据传输通过该端口的方向端口模式有以下几类:IN(输入):仅允许数据流进入端口主要用于时钟输入,控制输入,单向数据输入OUT(输出):仅允许数据流由实体内部流出端口该模式通常用于终端计数一类的输出,不能用于反馈BUFFER(缓冲):该模式允许数据流出该实体和作为内部反馈时用,但不允许作为双向端口使用INOUT(双向):可以允许数据流入或流出该实体该模式也允许用于内部反馈如果端口模式没有指定,则该端口处于缺省模式为:IN数据类型原则上可以是任何标准的数据类型和用户自定义类型PORT(a,b:INSTDLOGICy:OUTSTDLOGIC)inininoutoutbufferinoutmodemode模式及其信号源类属参数说明的格式为:GENERIC(端口名{,端口名}:IN子类型:=初始值{端口名{,端口名}:IN子类型:=初始值})例:加入类属说明的输入的与门的逻辑描述ENTITYandISGENERIC(rise,fall:time)PORT(a,b:INSTDLOGICy:OUTSTDLOGIC)ENDandARCHITECTUREandxOFandISSIGNALu:BITBEGINu<=aANDby<=uafter(rise)whenu=''elseuafter(fall)ENDandx例:四位加法器实体说明程序ENTITYaddISPORT(a,b:INSTDLOGICVECTOR(downto)Ci:INSTDLOGICSum:OUTSTDLOGICVECTOR(downto)Co:OUTSTDLOGIC)ENDadd由实体说明画出四位加法器add的电路图如下所示addabSumCiCo结构体(ARCHITECTURE)结构体的一般格式如下:ARCHITECTURE结构体名OF实体名IS结构体说明部分BEGIN并发处理语句END结构体名结构体说明是指对结构体需要使用的信号,常数,数据类型和函数进行定义和说明并发处理语句位于BEGIN和END之间,这些语句具体地描述了构造体的行为并发处理语句是功能描述的核心部分,也是变化最丰富的部分并发处理语句可以使用赋值语句,进程语句,元件例化语句,块语句以及子程序等需要注意的是,这些语句都是并发(同时)执行的,与排列顺序无关配置(CONFIGURATION)配置的基本格式为:CONFIGURATION配置名OF实体名IS配置说明END配置名配置语句描述了层与层之间的连接关系,以及实体与构造体之间的连接关系设计者可以利用配置语句选择不同的构造体,使其与要设计的实体相对应在仿真某一个实体时,可以利用配置选择不同的构造体进行性能对比实验,以得到性能最佳的构造体CONFIGURATION配置名OF实体名ISFOR选配结构体名ENDFOREND配置名配置语句根据不同情况,其说明语句有简有繁最简单的缺省配置格式为:例:加入了配置的位等值比较器设计文件LIBRARYIEEEUSEIEEESTDLOGICALLENTITYcompISPORT(a,b:INSTDLOGICVECTOR(downto)y:OUTSTDLOGIC)ENDcomp结构体:ARCHITECTUREbehaviorOFcompISBEGINComp:PROCESS(a,b)BEGINIFa=bTHENy<=''ELSEyRETURN''WHEN'Z'=>RETURN'Z'ENDCASEENDinvertENDBODY一个包集合说明至多可以带一个包体,包体和包头使用相同的名字包体的内容是基本说明和子程序体说明但要注意,若包集合中含有子程序说明时,必须将子程序放在对应的包体中包体中的子程序及其相应的说明是专用的,不能被其它VHDL单元所引用而包集合中的说明是公用的,它可以独立地编译并插入设计库中包集合体是次级设计单元,只有在其对应的主设计单元编译并插入设计库之后,才可独立地编译并插入到设计库中程序包举例(见vhdl程序example)库(LIBRARY)库是用来放置可编译的设计单元的地方,通过其目录可查询和调用VHDL中的库大致可归纳为种:IEEE库,STD库,ASIC矢量库,WORK库和用户定义库IEEE库常用的资源库IEEE库包含经过IEEE正式认可的STDLOGIC包集合和某些公司提供的一些包集合,如STDLOGICARITH(算术运算库),STDLOGICUNSIGNED等STD库VHDL的标准库库中存放有称为"standard"的标准包集合,其中定义了多种常用的数据类型,均不加说明可直接引用STD库中还包含有称为"textio"的包集合在使用"textio"包集合中的数据时,应先说明库和包集合名,然后才可使用该包集合中的数据ASIC矢量库在VHDL语言中,为了进行门级仿真,各公司可提供面向ASIC的逻辑门库在该库中存放着与逻辑门一一对应的实体为了使用面向ASIC的库,对库进行说明是必要的WORK库WORK库是现行作业库设计者所描述的VHDL语句不需要任何说明,将都存放在WORK库中WORK库对所有设计都是隐含可见的,因此在使用该库时无需进行任何说明用户定义库用户定义库简称用户库,是由用户自己创建并定义的库设计者可以把自己经常使用的非标准(一般是自己开发的)包集合和实体等汇集成在一起定义成一个库,作为对VHDL标准库的补充用户定义库在使用时同样要首先进行说明上述类库中,除了STD库和WORK库之外的其它库均为资源库资源库是存放常规元件和标准模块的库,使用时需预先说明库说明语句的语法形式为:LIBRARY库名说明使用什么库USE包集合名说明使用库中哪一个包集合及包集合中的项目(如过程名,函数名等)包集合名最多为三个层次,即:librarynamepackgenameitemnameLIBRARY语句和USE语句的作用范围:仅限于紧跟起后的实体和结构体VHDL结构体的基本子结构在规模较大的电路设计中,整个电路将被分成若干个相对独立的模块来描述这样,一个结构体可以用几个子结构,即相对独立的几个模块来构成VHDL语言有以下种形式的子结构描述语句:BLOCK语句结构PROCESS语句结构SUBPROGRAMS结构块(BLOCK)BLOCK语句的语法格式为:块标号:BLOCK(块保护条件)说明语句BEGIN并发处理语句ENDBLOCK标号名保护条件是可选项,它是一个布尔表达式如果有保护条件,则该条件应用圆括号括起来,放在BLOCK之后保护条件的作用是:只有当其为真时,该块中的语句才被启动执行否则,该块中的语句不被执行BLOCK语句中所描述的各个语句是可以并行执行的,它和书写顺序无关一个大规模的电原理图通常可以分割成多张子原理图,以便于设计和存档同样,在VHDL程序设计中,构造体对应整个电原理图,而构造体可由多个BLOCK块组成,每一个BLOCK块则对应一张子原理图电原理图的分割关系和VHDL程序中用BLOCK块分割构造体的关系是一一对应的例用BLOCK语句描述选电路的程序ENTITYmuxISPORT(d,d,sel:INSTDLOGICq:OUTSTDLOGIC)ENDmuxARCHITECTUREamuxOFmuxISSIGNALtmp,tmp,tmp:STDLOGICBEGINcale:BLOCKBEGINtmp<=dANDseltmp<=dAND(notsel)tmp<=tmpORtmpq<=tmpENDBLOCKcaleENDamux上述结构体中只有一个BLOCK块,若电路复杂时可由几个BLOCK块组成选数据选择器ddqseluuutmptmptmp例用带保护条件的BLOCK语句描述一个锁存器的结构ENTITYlatchISPORT(d,clk:INSTDLOGICq,qn:OUTSTDLOGIC)ENDlatchARCHITECTURElatchaOFlatchISBEGINg:BLOCK(clk='')BEGINq<=guardeddafternsqn<=guardednot(d)afternsENDBLOCKgENDlatchaqnqQDCdclk在BLOCK块中的两个信号传送语句都写有前卫关键词guarded,表明只有clk=''为真时,这两个语句才能执行(注意:这里的综合工具不支持guardedblock语句和after短语)进程(PROCESS)PROCESS语句是一种并发处理语句,在一个构造体中多个PROCESS语句可以同时并发运行因此,PROCESS语句是VHDL中描述硬件系统并发行为的最常用,最基本的语句进程语句的一般格式为进程名:PROCESS(敏感信号表)进程说明语句BEGIN顺序描述语句ENDPROCESS进程名例利用PROCESS语句设计与非门电路nandx:PROCESS(a,b)BEGINy<=aNANDbAFTERnsENDPROCESSnandx敏感信号表所标明的信号是用来启动进程的敏感信号表中的信号无论哪一个发生变化(如由''变''或由''变'')都将启动该PROCESS语句一旦启动后,PROCESS中的语句将从上至下逐句执行一遍当最后一个执行完毕以后,即返回到开始的PROCESS语句,等待下一次启动因此,只要PROCESS中指定的信号变化一次,该PROCESS语句就会执行一遍PROCESS内部各语句之间是顺序关系在系统仿真时,PROCESS语句是按书写顺序一条一条向下执行的而不象BLOCK中的语句可以并行执行若构造体中有多个进程存在,各进程之间的关系是并行关系进程之间的通信则一边通过接口由信号传递,一边并行地同步执行子程序(SUBPROGRAM)子程序的特点:子程序可以在结构体或程序包的任何位置被调用,而且可以反复调用子程序是一个非重入的程序,即子程序返回后才能再被调用在调用时子程序首先要进行初始化,执行结束后子程序终止再调用时要再进行初始化因此,子程序内部的值不能保持VHDL的子程序具有可重载性,即允许有许多重名的子程序,但这些子程序的参数类型和返回数值类型是不同的VHDL的子程序有两种类型:过程(PROCEDURE)函数(FUNCTION)过程(PROCEDURE)过程语句的结构:PROCEDURE过程名(参数参数…)IS定义语句BEGIN顺序处理语句END过程名过程语句的调用格式:过程名(实际参数表)例设计一个从两个整数中求取最大值的过程PROCEDUREmax(a,b:ININTEGERy:OUTINTEGER)ISB

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/12

[笔记]VHDL语言详解

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利