子程序及描述风格.ppt
《子程序及描述风格.ppt》由会员分享,可在线阅读,更多相关《子程序及描述风格.ppt(41页珍藏版)》请在三一办公上搜索。
1、3.6 子程序,子程序由一组顺序语句组成,是为了在程序中重复使用而设立的。在结构体中定义的子程序对于该结构体来说是局部的,即不能被其它设计层次的结构体调用。如果要在其它结构体中调用同一个子程序,就需要把子程序定义到程序包中。,VHDL中的子程序有两类:过程(PROCEDURE):过程通过其接口返回0个或多个值。函数(FUNCTION):函数直接返回单个值。子程序包含两部分:即子程序声明和主体部分。在程序包中声明子程序时,子程序声明必须要在程序包首中,子程序主体必须要在程序包体中。,一、函数的定义与引用,函数语句的作用是输入若干参数,通过函数运算求值,最后返回一个值。函数语句的格式为:FUNCT
2、ION 函数名(参数表)RETURN 数据类型;-函数首FUNCTION 函数名(参数表)RETURN 数据类型 IS-函数体 子程序声明部分;BEGIN 顺序语句;END 函数名;,函数首是程序包与函数的接口界面。如果要将一个函数组织成程序包入库,则必须定义函数首,且函数首应放在程序包的说明部分,而函数体应放在程序包的包体内。如果只在一个结构体中定义并调用函数,则只需定义函数体即可。参数表中为参数名、参数类别及数据类型,函数的参数为信号或常数,默认情况为常数;在RETURN后面的数据类型为函数返回值的类型;子程序声明项用来说明函数体内引用的对象和过程;顺序语句就是函数体,用来定义函数的功能。
3、,LIBRARYieee;USEieee.std_logic_1164.ALL;ENTITYfunISPORT(A:IN std_logic _Vector(0 TO 2);M:OUT std_logic _Vector(0 TO 2);ENDfun;ARCHITECTURE art OF fun IS FUNCTION sam(X,Y,Z:BIT)RETURN BIT IS BEGIN RETURN(X AND Y)OR Z;END sam;,函数应用实例,函数应用在结构体中,BEGINPROCESS(A)BEGINM(0)=sam(A(0),A(1),A(2);M(1)=sam(A(2),
4、A(0),A(1);M(2)=sam(A(1),A(2),A(0);END PROCESS;END art;,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;PACKAGE packexp IS-定义程序包 FUNCTION max(a,b:IN STD_LOGIC_VECTOR)RETURN STD_LOGIC_VECTOR;-定义函数首-FUNCTION func1(a,b,c:REAL)RETURN REAL;-定义函数首-FUNCTION*(a,b:INTEGER)RETURN INTEGER;-定义函数首-FUNCTION as2(SIGNAL in
5、1,in2:REAL)RETURN REAL;-定义函数首END;,函数定义在程序包中,PACKAGE BODY packexp IS FUNCTION max(a,b:IN STD_LOGIC_VECTOR)RETURN STD_LOGIC_VECTOR IS-定义函数体 BEGIN IF a b THEN RETURN a;ELSE RETURN b;END IF;END FUNCTION max;-结束FUNCTION语句END;-结束PACKAGE BODY语句,LIBRARY IEEE;-函数应用实例USE IEEE.STD_LOGIC_1164.ALL;USE;ENTITY axa
6、mp ISPORT(dat1,dat2:IN STD_LOGIC_VECTOR(3 DOWNTO 0);dat3,dat4:IN STD_LOGIC_VECTOR(3 DOWNTO 0);out1,out2:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END;ARCHITECTURE bhv OF axamp ISBEGINout1=max(dat1,dat2);-用在赋值语句中的并行函数调用语句PROCESS(dat3,dat4)BEGINout2=max(dat3,dat4);-顺序函数调用语句END PROCESS;END;,二、过程的定义与引用,过程的作用是传递信
7、息,即通过参数进行内外的信息传递。其中参数需说明(信号、变量及常量)类别、类型及传递方向。过程定义的格式为:PROCEDURE 过程名(参数声明)IS子程序声明部分;BEGIN顺序语句;END PROCEDURE 过程名;其中:参数声明指明了输入、输出端口的数目和类型。参数声明的语法格式为:参数名:方式方式参数类型有inoutinoutbuffer 等四种。,在PROCEDURE结构中,参数可以是输入也可以是输出。在没有特别指定的情况下,“IN”作为常数;而“OUT”和“INOUT”则看作“变量”进行拷贝。在过程语句执行结束后,如没有特别说明,输出和输入输出参数将按变量对待将值传递给调用者的变
8、量。如果调用者需要输出和输入输出作为信号使用,则在过程参数定义时要指明是信号。例如:PROCEDURE shift(din:IN STD_LOGIC_VECTOR;SIGNAL dou:OUT STD_LOGIC_VECTOR;q:INOUT INTEGER)IS BEGIN.END shift;,LIBRARYieee;USEieee.std_logic_1164.ALL;ENTITYfun ISPORT(A:IN std_logic _Vector(0 TO 2);M:OUT std_logic _Vector(0 TO 2);ENDfun;ARCHITECTURE art1 OF fun
9、 IS PROCEDURE sam1(X,Y,Z:IN BIT;N:OUT BIT)IS BEGIN N:=(X AND Y)OR Z;END sam1;,过程应用实例,BEGINsam1(A(0),A(1),A(2),N(0);sam1(A(2),A(0),A(1),N(1);sam1(A(1),A(2),A(0),N(2);M(0)=N(0);-等效于:M=N(2),在PROCEDURE结构中,参数可以是输入也可以是输出。而FUNCTION语句中括号内的所有参数都是输入参数或输入信号,因此在括号内指明端口方向的“IN”可以省略。FUNCTION的输入值由调用者拷贝到输入参数中,如果没有特别
10、指定,在FUNCTION语句中按常数处理。通常各种功能的FUNCTION语句的程序都被集中在包集合(Package)中。,3.7 VHDL的描述风格,行为描述方式 数据流描述方式(RTL描述方式)结构化描述方式,VHDL语言是通过结构体具体描述整个设计实体的逻辑功能。,通常结构体有四种不同的描述方式:,VHDL通过这四种不同的描述方式从不同的侧面描述结构体的功能。前三种是最基本的描述方式,他们组合起来就成为混合描述方式。,行为描述方式(behavior)数据流描述方式(dataflow)或寄存器RTL描述方式 结构化描述方式(structural)混合描述方式。,全加器的输入输出关系,全加器框
11、图,下面结合一个全加器来说明这四种描述风格,全加器的端口示意图如图所示,其输入输出关系如表所示。,一、行为描述方式,行为描述输入与输出间转换的行为,不需包含任何结构信息,它对设计实体按算法的路径来描述。,行为级描述,也称为算法级描述,它不是对某一个器件的描述,而是对整个设计单元的数学模型描述,所以属于一种高层次描述方式。,例:基于全加器真值表采用行为描述方式设计的全加器(1位二进制数全加),LIBRARY IEEE;ENTITY full_adder IS GENERIC(tpd:TIME:=10 ns);PORT(x,y,c_in:IN STD_LOGIC;Sum,c_out:OUT STD
12、_LOGIC);END full_adder;,ARCHITECTURE behav OF full_adder ISBEGIN PROCESS(x,y,c_in)VARIABLE n:INTEGER;CONSTANT sum_vector:STD_LOGIC_VECTOR(0 TO 3):=“0101”;CONSTANT carry_vector:STD_LOGIC_VECTOR(0 TO 3):=“0011”;,BEGIN n:=0;IF x=1 THEN n:=n+1;END IF;,IF y=1 THEN n:=n+1;END IF;IF c_in=1 THEN n:=n+1;END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 子程序 描述 风格
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6564270.html