数字系统设计:2.2 VHDL结构体的子结构描述_第1页
数字系统设计:2.2 VHDL结构体的子结构描述_第2页
数字系统设计:2.2 VHDL结构体的子结构描述_第3页
数字系统设计:2.2 VHDL结构体的子结构描述_第4页
数字系统设计:2.2 VHDL结构体的子结构描述_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2.2VHDL结构体的子结构描述3种子结构描述块结构语句(Block)进程语句(Process)子程序结构(Subprograms)过程(Procedure)函数(Function)块(BLOCK)1、格式块标号:BLOCK[(块保护表达式)]-块标号是必须的

[接口说明] [类属说明]

BEGIN[并行语句]

ENDBLOCK

块标号;块(BLOCK)2、BLOCK的应用BLOCK用于仿真、查错BLOCK是VHDL中的一种划分机制,每个Block块相当于一张子原理图。BLOCK语句的应用只是一种将结构体中的并行语句进行组合的方法,它的主要目的是改善并行语句及其结构的可读性,或是利用BLOCK的保护表达式关闭某些信号。综合器不支持BLOCK语句。并且在仿真过程中有其他办法代替BLOCK语句功能,故较少用。块(BLOCK)2、BLOCK的应用举例entitylatchisport(d,clk:inbit;q,qb:outbit);endlatch;architecturebehavoflatchisbeging1:block(clk=‘1’)--()内是保护表达式,为布尔型

beginq<=guardeddafter5ns;--由guarded引导防护语句

qb<=not(d)after7ns;endblockg1;endbehav;保护条件为真时,保护表达式才起作用,而对非保护表达式不起作用。进程语句(PROCESS)功能:表达结构体内具有条件执行或是顺序执行的语句。1.格式

格式1:

[进程标号:]PROCESS(敏感信号)

[进程说明部分];

BEGIN[顺序描述语句];ENDPROCESS[进程标号];格式2:

[进程标号:]PROCESS

[进程说明部分];

BEGIN

WAITUNTIL(进程激活条件)

[顺序描述语句];ENDPROCESS[进程标号];进程语句(PROCESS)进程工作原理进程语句(PROCESS)2.应用说明进程之间是并行的,改变进程之间的顺序对综合和仿真无影响。

Process中的语句是顺序执行的,不过其中的信号赋值语句也可以说是并行的。

Process通常带敏感信号,当敏感信号发生变化时将启动进程。

可以有多个Process存在,通过信号进行通信,传递信息。变量只在Process内部定义。例1三态缓冲器libraryieee;usestd_logic_1164.all;entitytri_gateisport(en:instd_logic;din:instd_logic_vector(7downto0);

dout:outstd_logic_vector(7downto0));endtri_gate;architecturebehavoftri_gateisbegin

process(din,en)ifen=’1’thendout<=din;elsedout<=“ZZZZZZZZ”;endif;endprocess;endbehav;3.应用举例多进程的同步例2多进程的同步Architecturebehaveofproc_synisSignalTo_A,To_B:std_logic;BeginA:PROCESS(To_A)beginif(To_A’eventandTo_A=‘1’)thenTo_B<=‘1’after20ns;‘0’after30ns;endif;ENDPROCESSA;B:PROCESS(To_B)beginif(To_B’eventandTo_B=‘1’)thenTo_A<=‘1’after20ns;‘0’after30ns;endif;ENDPROCESSB;子程序(SUBPROGRAM)过程(PROCEDURE)

函数(FUNCTION)过程(procedure)格式:procedure过程名(参数表);--过程首procedure过程名(参数表)

is--过程体

[定义语句];--变量、常量、数据类型定义,且 只在过程中有效begin[顺序处理语句];--过程语句

end过程名;功能:相当于一般语言中的子程序,实现程序嵌 套。如果将过程放入包(PACKAGE)中时,过程首在包首中,过程体在包体中。如果过程直接在结构体或进程中定义时,不需要过程首。过程参数表中的参数用IN、OUT、INOUT定义其端口模式。注意:如果一个过程是在进程中调用,且这个进程已列出敏感参数表,则不能在此过程中使用WAIT语句。(进程有两种启动方式:敏感参数表和WAIT语句)。过程(procedure)例:procedureand2(x,y:inbit;O:out

bit);--过程首procedure

and2(x,y:in

bit;O:out

bit)is--过程体beginifx=‘1’andy=‘1’thenO<=‘1’;elseO<=‘0’;endif;endand2;过程调用:

signala:bit:=‘1’;signalb:bit:=‘0’;signalc:bit;……And2(a,b,c);--过程调用时,注意形参和实参数据类型的一致性

……过程(procedure)函数(function)格式:function函数名(参数表)return数据类型;--函数首function函数名(参数表)return数据类型is--函数体

[定义语句];--与过程一样begin[顺序语句];end[函数名];

功能:将常用的算法包装成子程序,利于共享。在VHDL中有多种函数形式,包括用户自定义的函数和在库中现成的具有专用功能的预定义函数。如果将一个已编制好的函数并入程序包,函数首必须放在程序包首,而函数体需放在程序包的包体内。如果在一个结构体或进程中定义函数,则仅需函数体。函数(function)函数(function)entityfuncisport(a:inbit_vector(0to2);m:outbit_vector(0to2));endfunc;architecturedemooffuncisfunctionsam(x,y,z:bit)returnbitis--定义函数sam,函数体beginreturn(xandy)ory;endsam;beginprocess(a)beginm(0)<=sam

(a(0),a(1),a(2));--调用函数SAMm(1)<=sam(a(2),a(0),a(1));m(2)<=sam(a(1),a(2),a(0));endprocess;enddemo;异:过程常用来定义一个算法,而函数则常用来产生一个特定的返回值;过程中参数的端口模式一般是IN、OUT或INOUT,而函数中参数的模式只能是IN。过程中可以有WAIT语句(但综合器一般不支持),函数中不能;过程有多个返回值,函数只有一个返回值;函数调用语句只能用在赋值语句或表达式中,过程调用语句可独立存在。函数与过程的异同同函数和过程中都必须是顺序语句函数和过程的定义语句中都不能定义信号程序包(package)格式:功能:使已定义的常数、数据类型、函数、过程等能被其他设计共享的一种数据结构。

PACKAGE

程序包名IS--程序包首程序包首说明;

END程序包名;

PACKAGEBODY

程序包名IS--程序包体程序包体说明部分以及包体;

END程序包名;程序包(package)例:packagelogicistypethree_level_logicis(‘0’,’1’,’z’);constantunknown_velue:three_level_logic:=‘0’;functioninvert(input:three_level_logic)returnthree_level_logic;

endlogic;

packagebodylogicisfunctioninvert(input:three_level_logic)returnthree_level_logicisbegincaseinputiswhen‘0’=>return‘1’;when‘1’=>return‘0’;when‘z’=>return‘z’;endcase;endinvert;

endlogic;

程序包(package)应用usework.logic.three_level_logic;--使程序包相关定义可见usework.logic.invert;--或usework.logic.all;全部定义可见

entityinverterisport(x:inthree_level_logic;y:outthree_level_logic);endinverter;architecturebehavofinverterisbeginprocess(x)y<=invert(x)after2ns;--函数调用

endprocess;endbehav;程序包(package)常见的程序包std_logic_1164;(VHDL标准包,定义VHDL基本数据类型,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论