VHDL程序的基本结构.ppt

上传人:sh****n 文档编号:12561747 上传时间:2020-05-11 格式:PPT 页数:34 大小:1.09MB
返回 下载 相关 举报
VHDL程序的基本结构.ppt_第1页
第1页 / 共34页
VHDL程序的基本结构.ppt_第2页
第2页 / 共34页
VHDL程序的基本结构.ppt_第3页
第3页 / 共34页
点击查看更多>>
资源描述
可编程逻辑器件应用,主讲人:刘文怡,第五讲VHDL程序的基本结构,VHDL语言设计的基本单元及其构成结构体的子结构描述包集合、库及配置要求:掌握硬件描述语言的基本框架结构;了解硬件描述语言的库、程序包和配置;,前节内容回顾,EDA,CPLD,FPGA,HDL,VHDLVHDL,VERILOG,AHDLFPGA芯片公司Altera,Xilinx,Microsemi(Actel),latticeFPGA,CPLD,单片机,DSP,ARM,如果把这个电路做成一个元件,别人使用的时候,只需知道两件事:一是封装!二是功能!,漂亮的程序(回顾),Fengzhuang_kaishiport(IN1:in;IN2:in;IN3:in;IN4:in;OUT4:out)Fengzhuang_jieshuGongneng_kaishisignalT1,T2;OUT4=T1orT2;T2=IN3andIN4;T1=IN1andIN2;Gongneng_jieshu,1、为了用起来像个函数的样子,不妨加个port关键词,把输入输出引脚象参数一样排列起来。2、很好地表达了4个输入引脚,1个输出引脚。3、提供给别人调用。,1、内部功能实现的细节2、T1、T2似乎有点奇怪,哪来的?3、那我们也规定先定义,后使用!,LibraryIEEE;UseIEEE.STD_LOGIC_1164.ALL;ENTITYmuxISPORT(d0,d1,sel:inbit;q:outbit);ENDmux;,Architecturedataflowofmuxissignaltmp1,tmp2,tmp3:bit;Begintmp1=d0andsel;tmp2=d1and(notsel);tmp3=tmp1ortmp2;q=tmp3;Enddataflow;,VHDL语言如何做的?,一个完整的VHDL语言程序通常包含5个部分:库(Library)包集合(Package)实体(Entity)结构体(Architecture)配置(Configuration),必备部分,VHDL程序的基本构成,实体:描述所设计系统的外部接口信号,是可见的;结构体:描述系统内部的结构和行为,是不可见的;配置:选取所需单元组成系统设计的不同版本;包集合:存放各种设计模块都能共享的数据类型、常数、子程序和函数等;库:存放已经编译的实体、结构体、包集合和配置。,VHDL程序的基本单元解释,实体声明,实体声明语法:ENTITY实体名IS类属参数说明;端口说明;END实体名;举例:ENTITYmuxISPORT(d0,d1,sel:INBIT;q:OUTBIT);ENDmux;,实体的声明,实体名必须与文件名相同,否则编译时会出错。实体用于定义电路的输入输出引脚,但并不描述电路的具体结构和实现的功能。大小写不敏感。,实体声明注意事项,实体的类属参数说明(了解),类属参数说明是实体说明中的可选项,必须放在端口说明之前,用于指定参数,如端口大小、总线宽度、时间等;其一般书写格式为:GENERIC(常数名:数据类型:设定值,);举例:GENERIC(m:TIME:=1ns);这个参数说明是指在VHDL程序中,结构体内的参数m的值为1ns。,实体的端口说明,端口说明是对基本设计实体(单元)与外部接口的描述,也可以说是对外部引脚信号的名称,数据类型和输入、输出方向的描述;其一般书写格式为:PORT(端口名,端口名n:方向数据类型名;端口名,端口名m:方向数据类型名);举例:PORT(d0,d1,sel:INBIT;q:OUTBIT;bus:OUTBIT_VECTOR(7DOWNTO0);,(1)端口名:赋予每个外部引脚名称,通常用一个或几个英文字母,或者用英文字母加数字命名之,例如:d0,d1,sel。(2)端口方向:用来定义外部引脚的信号方向。,请注意OUT与BUFFER的区别,ENTITYtestISPORT(a:INSTD_LOGIC;b1,c1:OUTSTD_LOGIC;b2:BUFFERSTD_LOGIC;c2:OUTSTD_LOGIC);ENDtest;ARCHITECTUREaoftestISBEGINb1=not(a);c1=b1;-Errorb2=not(a);c2=b2;ENDa;,端口数据类型,标准类型:BIT和BIT_VECTOR扩展类型:STD_LOGIC和STD_LOGIC_VECTOR单点多点(总线)扩展类型需要库和程序包的支持,并且需要在程序中指明使用时需要加入以下两个语句:LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;,练习:,试写出半加器的实体描述:如右图所示a,b为半加器的输入端口s,co为输出信号,s为和信号,co为进位信号。,结构体ARCHITECTURE,结构体的描述方法:行为级描述、RTL(数据流)级描述、结构描述(逻辑元件连接),结构体是用于描述设计实体的内部结构(元件及内部的连接关系)以及实体端口间的逻辑关系(实体的行为)。,注意:结构体一定要跟在实体说明的后面。,结构体的一般书写格式,ARCHITECTURE结构体名OF实体名IS定义语句内部信号,常数,数据类型,函数等的定义;BEGIN功能描述语句并行处理语句;END结构体名;,实体名必须是所在设计实体的名字,结构体名由设计者定义,但当一个实体具有多个结构体时,结构体的取名不可重复。,结构体名称的命名,结构体名称由设计者自由命名,是结构体的唯一名称。OF后面的实体名称表明该结构体属于哪个设计实体,有些设计实体中可能含有多个结构体。这些结构体的命名可以从不同侧面反映结构体的特色,让人一目了然。例如:ARCHITECTUREbehavioralOFmuxIS用结构体行为命名ARCHITECTUREdataflowOFmuxIS用结构体数据流命名ARCHITECTUREstructuralOFmuxIS用结构体组织结构命名ARCHITECTUREboolOFmuxIS用结构体的数学表达方式命名ARCHITECTURElatchOFmuxIS用结构体的功能来命名.,定义语句,定义语句位于ARCHITECTURE和BEGIN之间,用于对结构体内部所使用的信号、常数、数据类型和函数进行定义。举例:ARCHITECTUREbehaveOFmuxISSIGNALtmp:BIT;BEGINENDbehave;结构体的信号定义和实体的端口说明一样,应有信号名称和数据类型定义,不用说明信号方向,因为是结构体内部连接用信号。,结构体的语法格式,结构体中的说明语句是对结构体的功能描述语句中将要用到的信号(SIGNAL)、数据类型(TYPE)、常数(CONSTANT)、元件(COMPONENT)、函数(FUNCTION)和过程(PROCEDURE)等加以说明的语句。在一个结构体中说明和定义的数据类型、常数、元件、函数和过程只能用于这个结构体中,若希望其能用于其他的实体或结构体中,则需要将其作为程序包来处理。,结构体的语法格式,结构体的并行处理语句,具体描述结构体的行为及其连接关系。在结构体中的语句都可以是并行执行的,语句的书写顺序不决定语句的执行顺序。所谓“并行”,指的是这些并行语句之间没有执行顺序的先后之分。,并行处理语句的局部化,在实际逻辑设计时,我们不一定希望所有的逻辑语句同时工作,怎么办?换句话:如何能让不同部分的语句“有条件地”起作用?解决办法:挑出来、加条件!使用条件语句吗?不行!用适当的语法来表达:就引入了进程语句,PROCESS语句的书写格式,进程名:PROCESS(敏感信号表)IS变量说明语句变量说明语句BEGIN进程内逻辑语句ENDPROCESS进程名;,process语句使用的类型、常量、变量、子程序声明、子程序体、属性声明等,但不能有信号声明*,可有可无,区分不同进程,process(A,B)beginOutput=AorB;endprocess;,processbeginOutput=AorB;waitonA,B;endprocess;,PROCESS语句的工作机理,任何一个敏感信号发生变化都将启动process内部的所有并行语句执行一次。Process语句可以不带敏感表,但是要在endprocess;前加入waiton信号1,信号2,;注意:process语句敏感表和waiton语句只能有一个。,ENTITYmuxISPORT(d0,d1,sel:inbit;q:outbit);ENDmux;ArchitecturedataflowofmuxisSIGNALtmp1,tmp2,tmp3:bit;Beginq=tmp3;process(d0,d1,sel)begintmp1=d0andsel;tmp2=d1and(notsel);tmp3=tmp1ortmp2;endprocess;Enddataflow;,敏感信号d0,d1,sel任一信号发生变化就执行,28,进程语句举例,进程里面的语句,可以放置任何信号代入语句;可以放置一般并行语句;可以放置条件、分支、循环语句;不可以放置进程语句(嵌套);,结构体三种描述方式,行为描述:对设计实体按算法的路径来描述。采用进程语句顺序描述设计实体的行为和功能。寄存器传输描述(数据流描述):通过描述数据流程的运动路径、方向和运动结果,实现设计实体的行为和功能。结构描述(逻辑元件连接描述):采用并行处理语句描述设计实体内的结构组织和元件互连关系。通常用于层次式设计。,结构体描述的三种方法,例二选一数据选择器,ENTITYmuxISPORT(d0,d1:INBIT;sel:INBIT;Q:OUTBIT);ENDmux;ARCHITECTUREbehaveOFmuxISBEGINPROCESS(d0,d1,sel)BEGINIFsel=0THENq=d0;ELSEq=d1;ENDIF;ENDPROCESS;ENDbehave;,1)行为级描述:只表示输入和输出间转换的行为,它不包含任何结构的信息(硬件特性、连线方式、逻辑行为方式)。,ENTITYmuxISPORT(d0,d1:INBIT;sel:INBIT;q:OUTBIT);ENDmux;ARCHITECTUREbehaveOFmuxISSIGNALtmp1,tmp2,tmp3,nsel:BIT;BEGINcale:PROCESS(d0,d1,sel)BEGINNsel=NOTsel;tmp1=d0ANDsel;tmp2=d1ANDnsel;tmp3nsel);U2:and2PORTMAP(d0,sel,tmp1);U3:and2PORTMAP(d1,nsel,tmp2);U4:or2PORTMAP(tmp1,tmp2,tmp3);q=tmp3;,3)结构描述,本节课小结,1、VHDL语言的五个基本部分:库,包,实体,结构体和配置;2、结构体的三种描述方法:行为描述,数据流描述和结构描述;,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!