版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VHDL语言程序的基本结构VHDL语言程序通常含5部分:实体entity:构造architecture:配configuration:包集package:库library:3.1VHDL语言设计的基本单元及其VHDL语言设计的基本单元就是一个设计实体。初级设计单元公用设计数据PACKAGEpkg1IS}...NEDPACKAGEpkg1ARCHITCTUREarch3OFent1ISPACKAGEBODYpkg1IS}...ENDPACKAGEBODYpkg1;}ARCHITECTUREarch2OFent1IS}ARCHITECTUREarch1OFent1ISVHDL语言程序的基本结构VHDL语言程序通常含5部分:实体entity:构造architecture:配configuration:包集package:库library:3.1VHDL语言设计的基本单元及其VHDL语言设计的基本单元就是一个设计实体。初级设计单元公用设计数据PACKAGEpkg1IS}...NEDPACKAGEpkg1ARCHITCTUREarch3OFent1ISPACKAGEBODYpkg1IS}...ENDPACKAGEBODYpkg1;}ARCHITECTUREarch2OFent1IS}ARCHITECTUREarch1OFent1IS}...BEGIN}...次级设计单元ENDARCHITECTUREarch1;VHDL的设计单元基本单元的基本组成:ENTITYent1IS}...BEGIN}...ENDENTITYent1;CONFIGURATIONcfg1OFent1IS}...ENDCONFIGURATIONcfg1;序和函数。选取所需单元组成系统的不同版本描述所设计系统的外部接口信号,是可见的。基本单元的基本组成:例如:二选一电路基本设计单元的VHDL描述:d0qd1seld0&≥q1&d1sel3.1.1实体说明实体说明是一个设计实体的表层设计单元,描述设计实体与外部电路进行接口。规定设计单元的输入输出接口信号或引脚,是设计实体经封装后对外的一个通信界面。1、类属参数说明中间在方括号内的语句描述,在特定的情况下并非是必须的。VHDL仿真测试基准等情况中可以省去方括号中的语句。实体说明单元的常用语句结构如下:E TY实体名IS类属表);]END实体名;ENTITYmuxISgeneric(m:time:=1ns);PORT(d0,d1,sel:in基本单元的基本组成:例如:二选一电路基本设计单元的VHDL描述:d0qd1seld0&≥q1&d1sel3.1.1实体说明实体说明是一个设计实体的表层设计单元,描述设计实体与外部电路进行接口。规定设计单元的输入输出接口信号或引脚,是设计实体经封装后对外的一个通信界面。1、类属参数说明中间在方括号内的语句描述,在特定的情况下并非是必须的。VHDL仿真测试基准等情况中可以省去方括号中的语句。实体说明单元的常用语句结构如下:E TY实体名IS类属表);]END实体名;ENTITYmuxISgeneric(m:time:=1ns);PORT(d0,d1,sel:inbit;q:outbit);ENDmux;ArchitecturedataflowofmuxisBeginvariabletmp1,tmp2,tmp3:bit;begin实体说明+构造体说明注意:(1)该模块被调用时从外部传入参数值。(2)参数值可以为本实体所属的结构体使用。(3)传入的类属参数作为常量使用,在使用时不能修改。2、端口说明(PORT)端口说明是对于一个设计实体与外部接口的描述。1)端口名:是设计者为实体的每一个对外通道所取的名字;(实现该设计程序的器件外部引脚的名称)注意:(1)该模块被调用时从外部传入参数值。(2)参数值可以为本实体所属的结构体使用。(3)传入的类属参数作为常量使用,在使用时不能修改。2、端口说明(PORT)端口说明是对于一个设计实体与外部接口的描述。1)端口名:是设计者为实体的每一个对外通道所取的名字;(实现该设计程序的器件外部引脚的名称)——标示符实体端口说明的一般书写格式如下:PORT(端口名:端口模式数据类型{;端口名:端口模式数据类型});或者说:是CPLD/FPGA器件外部引脚信号的名称、数据类型和传输方向的描述。例如:ENTITYMCKISGENERIC(WIDTH: EGER:=16;RISEW:TIME:=1ns;FALLW:TIME:=1ns);PORT(ADD_BUS:OUTSTD_LOGIC_VECTOR(WIDTH-1DOWNTO0));ENDMCK;类属(GENERIC)放在实体说明部分。是一些信息,默认的参数值。如端口大小、总线宽度、时间等。类属说明的一般书写格式如下:GENERIC([常数名:数据类型[:=设定值][;常数名:数据类型[]]);3)端口的数据类型:标准类型:BIT和BIT_VICTOR和STD_LOGIC_VECTOR扩展类型 库和程序包的 ,并且 在程序中注意:端口信号与类属参数的类型不能在entity中定义,必须在程序包package中预先定义。3)端口的数据类型:标准类型:BIT和BIT_VICTOR和STD_LOGIC_VECTOR扩展类型 库和程序包的 ,并且 在程序中注意:端口信号与类属参数的类型不能在entity中定义,必须在程序包package中预先定义。方向定义含 义IN输入OUT输出(构造体内部不能再使用)INOUT双向BUFFER输出(构造体内部可再使用)4)端口说明(port)举例3.1.2构造体(结构体)ARCHITCTURE构造体是用于描述设计实体的(元件及内部的连接关系)以及实体端口间的逻辑关系(实体的行为。注意:构造体一定要跟在实体说明的后面4)端口说明(port)举例3.1.2构造体(结构体)ARCHITCTURE构造体是用于描述设计实体的(元件及内部的连接关系)以及实体端口间的逻辑关系(实体的行为。注意:构造体一定要跟在实体说明的后面1、构造体描述的一般语句构造体的描述方法:行为级描述、RTL(数据流)级描述、结构描述(逻辑元件连接)LIBRARYIEEE;USEIEEE.STD_LOGIC.1164.ALL;AND2ISGENERIC(RISEW:TIME:=1ns;FALLW :TIME:=1ns);LIBRARYIEEE; A0:INSTD_LOGIC;USEIEEE.STDLIC.16.ALL; OUTSTDLOGIC);ENTITYmmISPORT(n0,n1,select:INSTD_LOGIC;Q :OUTSTD_LOGIC;Bus : OUT STD_LOGIC_VECTOR(7DOWNTO0));ENDmm;构造体的语句格式如下:ARCHITECTUREOFIS[定义语对数据类型、常数、信号、子程序和元BEGIN件等元素的说明。不是必须的。]END构造体名;构造体的语句格式如下:ARCHITECTUREOFIS[定义语对数据类型、常数、信号、子程序和元BEGIN件等元素的说明。不是必须的。]END构造体名;以各种不同的描述风格描述实体逻辑行为2、构造体定义语句及并行处理语句在一个构造体中说明和定义的数据类型、常数、元件、函数和过程只能用于这个构造体中。若希望其能用于其他的实体或构造体中,则来处理。将其作为程序包一个构造体内可以包含多条并行描述语句,它们不以书写的先后顺序为执行顺序。总是同时在执行。有8条并发描述语句。注意:实体名必须是所在设计实体的名字,而构造体名可以由设计者自己选择,但当一个实体具有多个结构体时,构造体的取名不可重复。通常用Beioral(行为、dataflow(数据流描述)或structural(结构描述)3.3vhdl构造体描述的三种方法例3-12二选一数据选择器•ENTITYmuxISPORT(d0,d1:INBIT;3.3.1 只表示输入和输出间转换的行3.3vhdl构造体描述的三种方法例3-12二选一数据选择器•ENTITYmuxISPORT(d0,d1:INBIT;3.3.1 只表示输入和输出间转换的行(硬件逻辑行为方式Q:OUTBIT);ENDmux;ARCHITECTUREbeBEGINPRO BEGINTHENq<=d0;ELSEq<=d1;ENDIF;eOFmuxISENDPROS;ENDbee;例3-13二选一数据选择器3.3.2RTL级描述(数据流描述方式:以规定设计中的各种寄存•ENTITYmuxISPORT(d0,d1:INBIT;sel:INBIT;q:OUTBI寄存器之间逻辑。组合ENDmux;ARCHITECTUREbeeOFmuxIS数据流描述方式能比较直观地表达底层逻辑行为。BEGINcale:PROBEGINS(d0,d1,sel)d0tmp1Nsel<=NOTsel;例3-13二选一数据选择器3.3.2RTL级描述(数据流描述方式:以规定设计中的各种寄存•ENTITYmuxISPORT(d0,d1:INBIT;sel:INBIT;q:OUTBI寄存器之间逻辑。组合ENDmux;ARCHITECTUREbeeOFmuxIS数据流描述方式能比较直观地表达底层逻辑行为。BEGINcale:PROBEGINS(d0,d1,sel)d0tmp1Nsel<=NOTsel;&tmp3≤1 qd1tmp2tmp2<=d1ANDnsel;&nselseltmp3<=tmp1ORtmp2;q<=tmp3;3-4二选一数据选择器电路图ENDPROS;ENDbee;3.3.3结构描述:是表示元件之间的互联,次的设计实体可以调用低层次设计实体。最接近实际的硬件电路结构。使用元件说明语句和元件例化语句例3-14ARCHITECTUREstruOFmuxIS定义信号BIT;tmp1,tmp2,tmp3,nselCOMPONENd2PORT(a,b:INBIT;:OT3.3.3结构描述:是表示元件之间的互联,次的设计实体可以调用低层次设计实体。最接近实际的硬件电路结构。使用元件说明语句和元件例化语句例3-14ARCHITECTUREstruOFmuxIS定义信号BIT;tmp1,tmp2,tmp3,nselCOMPONENd2PORT(a,b:INBIT;:OTENDCOMPONENT;COMPONENTinvINBIT;:OUTENDCOMPONENT;定义元件and2定义语句PORT(a:定义元件inv定义元件or2COMPONENT or2BEGINPORT(a,b:INBIT;MAP(a=>sel,c=>nsel);MAP(d0,sel,tmp1);并行处理语句PORTMAP(d1,nsel,tmp2);ENDsq<=tm;3;3.2VHDL语言构造体的子结构描述三种:3.2.1BLOCK语句结构BLOCK语句结构PRO 构SUBPROGRAMS(子程序)结构一个构造体内可以包含多个BLOCK语句,每个BLOCK语句描述一个子模块的功能,相当于电原理图中子原理图。格式:[块结构名:]BLOCK块头generic语句、genericmap语句、port语句、portmap语句实现信号一个构造体内可以包含多个BLOCK语句,每个BLOCK语句描述一个子模块的功能,相当于电原理图中子原理图。格式:[块结构名:]BLOCK块头generic语句、genericmap语句、port语句、portmap语句实现信号的及参数的定义。可有可无{说明语句}BE可有可无同构造体的定义语句,对BLOCK语句用到的数据类型定{并发处ENDBLOCK块结说明,子程序说明及子程序体,子句例3-5用BLOCK语句描述二选一选择器用BLOCK语句描述CPU(P83例4-21)Block语句的嵌套(P82例4-20)使用block语句子结构应注意:语句(3)BLOCK语句可以嵌套,外层block中的说明语句说明的内容(信号、元件等)内层block语句可以用,反之不能。互为嵌套的block语句说明的对象不能重名。(2)block语句结构内部的语句也是并行执行的,与书写顺序无关。(1)一个构造体内可以包含多个独立的block语句结构。它们是并行执行的。带有条件的block语句 式block语句卫式block语句格式:例3-6卫式block语句描述D触发器ENTITYlatchISPORT带有条件的block语句 式block语句卫式block语句格式:例3-6卫式block语句描述D触发器ENTITYlatchISPORT(d,clk:INBIT;q,qb:OUTBIT);ENDlatch;ARCHITECTURElatch_guradOFlatchISBEGINBLOCK(clk=‘1’)BEGINq<=GUARDEDdAFTER5ns;qb<=GUARDEDNOT(d)AFTER7ns;ENDBLOCKG1;ENDlatch_guard;3.2.2进程语句(pros)Block语句可以被综合。卫式Block语句不可以被综合,只能用于仿真。信号赋值符号后必须有guarded一词卫式布尔表达式[块结构名]:BLOCK卫式布尔表达式)beginendblock在赋值符号后要加入它是一种并发描述语句,描述硬件系统并为的最基本语句。例3-7pros语句实现二选一数据选择器变量说明语句顺序执行语Pro3.Pros语句实现D触发器s语句的启动ENTITYmuxISPORT(d0,d1,sel:inbit;q:outbit);ENDmux;Architecture它是一种并发描述语句,描述硬件系统并为的最基本语句。例3-7pros语句实现二选一数据选择器变量说明语句顺序执行语Pro3.Pros语句实现D触发器s语句的启动ENTITYmuxISPORT(d0,d1,sel:inbit;q:outbit);ENDmux;Architecturedataf 敏感信号isBeginpro s(d0,d1,sel)variabletmp1,tmp2,tmp3:bit;begintmp1:=d0andsel;tmp2:=d1and(notsel);顺序描述语句语句格式:[进程名]:pro s(敏感信号表)bpro s语句使用的类型、常量子程序 、子程序体、属性 、属性指定等endpro s[进程名];4.进程(pros)的同步描述pro同时还可以进行通信。s语句存在,它们并行同步执行,多pro多Pros语句通信是通过在结构体中定义的信号来实现。s语句通信注意:pro s4.进程(pros)的同步描述pro同时还可以进行通信。s语句存在,它们并行同步执行,多pro多Pros语句通信是通过在结构体中定义的信号来实现。s语句通信注意:pro s语句敏感表和wait语句只能有一个。Pro s语句的敏感表中敏感信号与pro s语句描述硬件电路的输入信号一一对应。任何一个敏感信号发生变化都将启动pros语句,从上到下顺序pros语句执行完了,回到pros次的变化。Pro s语句可以不带敏感表,但是要在endpro s;语句前加入waiton信号1,信号2,…;=pro beginOutput<=AorB;waitonA,B;endpro s;pro s(A,B)beginOutput<=AorB;endpro s;EntityisPort(event_a:inbit);;EndArchitecturecatch_ballofisSignalto_a,to_b:bit:=‘0’;beginA:probegins(event_a,to_a)If(event_a’event and event_a=‘1’)or(to_a’evendto_a=‘1’)then20ns;after30ns;Endif;toTo_bs;2010EntityisPort(event_a:inbit);;EndArchitecturecatch_ballofisSignalto_a,to_b:bit:=‘0’;beginA:probegins(event_a,to_a)If(event_a’event and event_a=‘1’)or(to_a’evendto_a=‘1’)then20ns;after30ns;Endif;toTo_bs;20103.2.3子程序(subprogram)结构描述子程序有两种类型:在一起包集合;几个包集合汇集在一起就形成了一个库。1、过程语句(procedure)例3-8将位矢量转换为整数函数(function)子程序含义和其它高级语言中的子程序概念相当。在主程序调用后,能将处理结果返回主程序的程序模块。用来实现系统程序中多处 使用的功能模块。可以反复调用,但只有子程序调用返回后,方可再次调用。B:pro beginIf((to_b’even dto_b=‘1’)thenafter20ns;Endif;Endpro Endcatch_ball;2、函数语句例3-10:用函数说明语句描述两数取最大值的功能过程和函数的区别过程结束用“end”即可函数必须由2、函数语句例3-10:用函数说明语句描述两数取最大值的功能过程和函数的区别过程结束用“end”即可函数必须由return语句结束,且返回一个值。过程调用将输出值(out,inout)传递给调用者定义的信号或变量,调用语句是一条语句。函数调用将函数产生的返回值赋给调用者定义的信号或变量,调用语句为一个表达式。3)形参的方式:过程 in,out,inout函数-----只有in,所以省略。库:经过编译后的数据的集合。存放包集合定义、实体定义、结构体定义和配置定义。库有5种:IEEE库,STD库、用户定义的库、WORK库、ASIC库。IEEE库包含:IEEE正式认可的标准包集合Std_Logic_1164Std_Logic_Arith公司提供不被IEEE承认,但允许其放在IEEE库中Std_Logic_Unsigned用法举例:Libraryieee;Useieee.std_logic_1164.all;STD库、WORK库、用户定义的库STD库:STD库是VHDL的标准库。在库中有名为SDARD的包集合(标准数据类型均在此包集合中定义,还有EXTISTD库、WORK库、用户定义的库STD库:STD库是VHDL的标准库。在库中有名为SDARD的包集合(标准数据类型均在此包集合中定义,还有EXTISTD;USESTD.TEXTIO.ALL;WORK库:现行作业库。设计的所有VHDL程序都自动存放在进行说明(也就是说他总是可见的3.4.2包集合包集合书写格式:packageis[说明语句];end包集合名;packagebodyis[说明语句];end包集合名;例3-16包集合实例3.4.3配置层与层之间—元件实体与结构体之间与被调用实体LIBRARY库名;USE 库名.包集合名.项目名(过程名或函数名或ALL);若使用SDARD包中的数据可以说明(也就是说他总是可见的),但是若使用TEXTIO包,则按照如下格式说明:配置指定语句格式:OFISFor选配构造体名[语句说明;最简单的形式Endfor;END配置名;例3-19:Libraryieee;ENTITYnandIS配置指定语句格式:OFISFor选配构造体名[语句说明;最简单的形式Endfor;END配置名;例3-19:Libraryieee;ENTITYnandISPORT(a,b:INstd_logic;c:outstd_logic);ENDnand;实体nand由构造体two配置名为second实体nand由构造体one实现,配置名为ARCHITECTUREtwoOFnandISBEGINwhen(a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度科研仪器租赁及技术服务合同
- 2024年定制:5G网络技术研发与技术服务合同
- 2024合作开发合同的开发内容和合作方式
- 04版加工承揽合同生产工艺与质量控制
- 2024年度校园租赁:电动自行车合同
- 2024光电子技术研发与生产合同
- 2024广州市劳动合同范文新版
- 2024营业租赁合同范文
- 2024年度电力设备安装与维护合同
- 2024年度计算机软件开发与销售合同
- 化工安全隐患大排查内容
- (自己编)丝网除沫器计算
- 应用数理统计基础答案 庄楚强
- 溢流阀基本知识图解
- 5G网络优化测试方法
- 代理申办原产地证委托书
- 全套企业管理流程(文字版)
- ICC国际商会NCNDA和IMFPA中英文对照可编辑
- 关于房屋建筑和市政工程界定文件
- 各种表面活性剂耐碱性一览表
- 我最喜欢的运动英语作文(精选3篇)
评论
0/150
提交评论