3.6_3.7 子程序及描述风格

上传人:油条 文档编号:46087003 上传时间:2018-06-22 格式:PPT 页数:41 大小:502.50KB
返回 下载 相关 举报
3.6_3.7 子程序及描述风格_第1页
第1页 / 共41页
3.6_3.7 子程序及描述风格_第2页
第2页 / 共41页
3.6_3.7 子程序及描述风格_第3页
第3页 / 共41页
3.6_3.7 子程序及描述风格_第4页
第4页 / 共41页
3.6_3.7 子程序及描述风格_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《3.6_3.7 子程序及描述风格》由会员分享,可在线阅读,更多相关《3.6_3.7 子程序及描述风格(41页珍藏版)》请在金锄头文库上搜索。

1、3.6 子程序l 子程序由一组顺序语句组成,是为了在程序中重复使用而设立的。l 在结构体中定义的子程序对于该结构体来说是局部的,即不能被其它设计层次的结构体调用。如果要在其它结构体中调用同一个子程序,就需要把子程序定义到程序包中。lVHDL中的子程序有两类: 过程(PROCEDURE):过程通过其接口返回 0个或多个值。 函数(FUNCTION):函数直接返回单个值。 l 子程序包含两部分:即子程序声明和主体部分。在程序包中声明子程序时,子程序声明必须要 在程序包首中,子程序主体必须要在程序包体 中。一、函数的定义与引用函数语句的作用是输入若干参数,通过函数运算求值,最后 返回一个值。函数语句

2、的格式为: FUNCTION 函数名 (参数表) RETURN 数据类型; -函数首FUNCTION 函数名 (参数表) RETURN 数据类型 IS -函数体子程序声明部分;BEGIN顺序语句; END 函数名; 函数首是程序包与函数的接口界面。如果要将一个函数组织成程序包入库,则必须定义函数首,且函数首应放在程序包的说明部分,而函数体应放在程序包的包体内。如果只在一个结构体中定义并调用函数,则只需定义函数体即可。参数表中为参数名、参数类别及数据类型,函数的参数为信号或常数,默认情况为常数;在RETURN后面的数据类型为函数返回值的类型; 子程序声明项用来说明函数体内引用的对象和过程; 顺序

3、语句就是函数体,用来定义函数的功能。LIBRARY ieee; USEieee.std_logic_1164.ALL; ENTITYfunIS PORT (A: IN std_logic _Vector(0 TO 2);M : OUT std_logic _Vector(0 TO 2); END fun; ARCHITECTURE art OF fun ISFUNCTION sam (X,Y,Z: BIT) RETURN BIT ISBEGINRETURN(X AND Y) OR Z;END sam;函数应用实例只有输入变量只有输入变量函数应用在结构体中BEGINPROCESS(A)BEGIN

4、M(0) 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 WORK.packexp.ALL ; ENTITY axamp IS PORT(dat1,dat2 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); dat3,dat4 : IN STD_LOGIC_VECTOR(3 DOWNTO 0); out1,out2 : OUT ST

5、D_LOGIC_VECTOR(3 DOWNTO 0) ); END; ARCHITECTURE bhv OF axamp IS BEGIN out1 = max(dat1,dat2); -用在赋值语句中的并行函数调用语句 PROCESS(dat3,dat4) BEGIN out2 = max(dat3,dat4); -顺序函数调用语句 END PROCESS; END;二、过程的定义与引用过程的作用是传递信息,即通过参数进行内外 的信息传递。其中参数需说明(信号、变量及常量)类 别、类型及传递方向。过程定义的格式为:PROCEDURE 过程名 (参数声明) IS 子程序声明部分; BEGIN

6、顺序语句; END PROCEDURE 过程名 ; 其中:参数声明指明了输入、输出端口的数目和类型 。参数声明的语法格式为:参数名:方式 方式参数类型有inoutinoutbuffer 等四种。l 在PROCEDURE结构中,参数可以是输入也可以是输 出。在没有特别指定的情况下,“IN”作为常数;而 “OUT”和“INOUT”则看作“变量”进行拷贝。 l 在过程语句执行结束后,如没有特别说明,输出和输入 输出参数将按变量对待将值传递给调用者的变量。如果 调用者需要输出和输入输出作为信号使用,则在过程参 数定义时要指明是信号。 l 例如:PROCEDURE shift(din: IN STD_L

7、OGIC_VECTOR;SIGNAL dou: OUT STD_LOGIC_VECTOR;q: INOUT INTEGER) ISBEGIN.END shift; LIBRARY ieee; USEieee.std_logic_1164.ALL; ENTITYfun IS PORT (A: IN std_logic _Vector(0 TO 2);M : OUT std_logic _Vector(0 TO 2); END fun; ARCHITECTURE art1 OF fun ISPROCEDURE sam1 (X,Y,Z: IN BIT;N:OUT BIT) ISBEGINN:=(X

8、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)M(1)= N(1);M(2)= N(2);END art1;过程的调用即启动了对过过程的调用即启动了对过 程体的顺序语句的调用,程体的顺序语句的调用, 调用调用3 3次。次。过程调用是一条过程调用是一条 语句。语句。l 在PROCEDURE结构中,参数可以是输

9、入也可以是输 出。而FUNCTION语句中括号内的所有参数都是输入参 数或输入信号,因此在括号内指明端口方向的“IN”可以 省略。 l FUNCTION的输入值由调用者拷贝到输入参数中,如 果没有特别指定,在FUNCTION语句中按常数处理。 l 通常各种功能的FUNCTION语句的程序都被集中在包 集合(Package)中。3.7 VHDL的描述风格 行为描述方式 数据流描述方式(RTL描述方式)结构化描述方式VHDL语言是通过结构体具体描述整个设计实体的逻辑功能。通常结构体有四种不同的描述方式:VHDL通过这四种不同的描述方式从不同的侧面描述结构体的功能。前三种是最基本的描述方式,他们组合

10、起来就成为混合描述方式。行为描述方式(behavior)数据流描述方式(dataflow)或寄存器RTL描述方式结构化描述方式(structural)混合描述方式。全加器的输入输出关系 全加器框图输入 输出 0xyc_outsum00000 00101 01001 01110 10001 10110 11010 11111下面结合一个全加器来说明这四种描述风格,全加器 的端口示意图如图所示,其输入输出关系如表所示。一、 行为描述方式行为描述输入与输出间转换的行为,不需包含任 何结构信息,它对设计实体按算法的路径来描述。行为级描述,也称为算法级描述,它不是对某一个器件的描述,而是对整个设计单元的

11、数学模型描述,所以属于一种高层次描述方式。例:基于全加器真值表采用行为描述方式设计的全加器 (1位二进制数全加)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY full_adder ISGENERIC(tpd : TIME := 10 ns);PORT(x,y,c_in : IN STD_LOGIC;Sum, c_out : OUT STD_LOGIC);END full_adder;ARCHITECTURE behav OF full_adder ISBEGINPROCESS (x, y, c_in)VARIABLE n: INTEGER;CO

12、NSTANT sum_vector: STD_LOGIC_VECTOR (0 TO 3) := “0101”;CONSTANT carry_vector: STD_LOGIC_VECTOR (0 TO 3) := “0011”;BEGINn := 0;IF x = 1 THENn := n+1;END IF;IF y = 1 THENn:=n+1;END IF;IF c_in = 1 THENn:=n+1;END IF; sum = sum_vector (n) AFTER 2*tpd; c_out = carry_vector (n) AFTER 3*tpd; END PROCESS; EN

13、D behav; 对照真值表解释程序(0 TO 3) sum_vector初值为“0101”carry_vector初值为“0011”(0 TO 3)输入 输出c_in x y c_out sum 0 0 0 0 00 0 1 0 10 1 0 0 10 1 1 1 01 0 0 0 11 0 1 1 01 1 0 1 01 1 1 1 1 行为级描述只描述设计电路的功能或电路的行为,而没有指明或实现这些行为的硬件结构;或者说行为级描述只表示输入输出之间的转换行为,它不包含任何结构信息。 行为级描述通常指顺序语句描述,即含有进程的非结构化的逻辑描述。 行为级描述的设计模型定义了系统的行为,通常

14、由一个或多个进程构成,每一个进程又包含了一系列的顺序语句。u数据流描述也叫RTL的描述方式,采用寄存器硬件一一对应的直接描述,或者采用寄存器之间的功能描述。uRTL描述方式建立在并行信号赋值语句描述的基础上,描述数据流的运动路径、运动方向和运动结果运动路径、运动方向和运动结果。uRTL描述方式是真正可以进行逻辑综合的描述方式。uRTL描述方式既可描述时序电路,又可描述组合电路。二、 数据流描述方式对于全加器,用布尔方程描述其逻辑功能如下: s = x XOR y sum = s XOR c_in c_out = (x AND y) OR( s AND c_in) 输入 输出c_in x y c_out sum 0 0 0 0 00 0 1 0 10 1 0 0 10 1 1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号