VHDL的子程序.ppt

上传人:s****8 文档编号:93085445 上传时间:2023-06-28 格式:PPT 页数:33 大小:461.50KB
返回 下载 相关 举报
VHDL的子程序.ppt_第1页
第1页 / 共33页
VHDL的子程序.ppt_第2页
第2页 / 共33页
点击查看更多>>
资源描述

《VHDL的子程序.ppt》由会员分享,可在线阅读,更多相关《VHDL的子程序.ppt(33页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、VHDL的子程序的子程序子程序由函数和过程组成,函数只有输 入参数和单一的返回值,而过程有任意多个输入、输出和双向参数。函数有类型转换的转换函数。决断函数为多驱动网络算出正确驱动值。过程被看作一种语句,而函数通常是表达式的一部分。过程能单独存在,而函数通常作为语句的一部分被请求。程序包用于封装属于多个设计单元分享的公共信息。程序包由程序包说明(说明数据类型、子程序和常量等)和程序包体(它含有子程序体与现有的延时常数)所组成。VHDL的子程序(1)子程序由执行公共操作的过程过程和函数函数组成。程序包是分享属于实体数据的一种机制,把子程序、数据类型和元件说明看成建立设计的工具,则程序包是工具箱1)

2、过程返回多个变量,而函数则只返回一个变元。2)函数中所有参数是输入参数。而过程有输入参数,输出参数和双向参数。3)过程和函数都有两种形式:即并行过程和并行函数以及顺序过程和顺序函数。并行的过程与函数可在进程语句和另一个子程序的外部,而顺序函数和过程仅存在于进程语句和另一个子程序语句。过程在结构体或者进程中按分散语句的形式存在,而函数经常在赋值语句或表达式中用。函数USE WORK.std_logic_1164.ALL;PACKAGE num_types IS TYPE log8 IS ARRAY(0 TO 7)OF std_logic;-line 1END num_types;USE WORK

3、.std_logic_1164.ALL;USE WORK.num_types.ALL;ENTITY convert IS PORT(I1:IN log8;-line 2 O1:OUT INTEGER);-line 3END convert;VHDL的子程序(2)ARCHITECTURE behave OF convert IS FUNCTION vector_to_intvector_to_int(S:log8)-line 4 RETURN INTEGER is -line 5 VARIABLE result:INTEGER:=0;-line 6 BEGIN FOR i IN 0 TO 7 L

4、OOP -line 7 result:=result*2;-line 8 IF S(i)=1 THEN -line 9 result:=result+1;-line 10 END IF;END LOOP;RETURN result;-line 11 END vector_to_int;BEGIN O1=vector_to_int(I1);-line 12END behave;behave结构体说明区中描述vector_to_int函数,函数在结构体中是透明的。函数对数组中每bit位置做移位和相加,(用*2)先移位,如果移出逻辑1值,就加1。最后调用函数的结果赋值到输出端口。函数的参量总只能是输

5、入参数,上例的参量是constant类别的,没有显式地指定而是默认为一个常量。函数还有另一种参量是signal信号参量,由信号参量传入信号属性,并在函数中是可用的。语句的例外是属性STABLE,TRANSACTION,QUIET 和DELAYED,他们将建立特殊的信号。包含信号参数的函数例子如下所示:函数名.变元和返回值函数说明区它能说明变量、常量和类型,但不能说明信号convertI1O1在结构体中做函数调用VHDL的子程序(3)USE WORK.std_logic_1164.ALL;ENTITY dff IS PORT(d,clk:IN std_logic;q :OUT std_logic

6、);FUNCTION rising_edge (SIGNAL S:std_logic)-line 1 RETURN BOOLEAN IS -line 2 BEGIN IF(SEVENT)AND(S=1)AND -line 3 (SLAST_VALUE=0)THEN -line 4 RETURN TRUE;-line 5 ELSE RETURN FALSE;-line 6 END IF;END rising_edge;END dff;ARCHITECTURE behave OF dff ISBEGIN PROCESS(clk)BEGIN IF rising_edge(clk)THEN -line

7、 7 q RETURN X;WHEN L=RETURN 0;WHEN H=RETURN 1;WHEN Z=RETURN Z;END CASE;END convert4val;*PACKAGE my_std IS TYPE fourval IS(X,L,H,Z);TYPE fourvalue IS(X,0,1,Z);TYPE fvector4 IS ARRAY(0 TO 3)OF fourval;END my_std;USE WORK.my_std.ALL;ENTITY reg IS PORT(a:IN fvector4;clr:IN fourval;clk:IN fourval;q:OUT f

8、vector4);Fourval(fvector4)Fvector4(fourval)aa44clkclrreg四值四值转换函数转换函数VHDL的子程序(6)FUNCTION convert4val(S:fourval)RETURN fourvalue IS BEGIN CASE S IS WHEN X=RETURN X;WHEN L=RETURN 0;WHEN H=RETURN 1;WHEN Z=RETURN Z;END CASE;END convert4val;FUNCTION convert4value(S:fourvalue)RETURN fourval IS BEGIN CASE S

9、 IS WHEN X=RETURN X;WHEN 0=RETURN L;WHEN 1=RETURN H;WHEN Z=RETURN Z;END CASE;END convert4value;END reg;XLHZX 0 1 ZXLHZXLHZX 0 1 Zconvert4valueconvert4valVHDL的子程序(7)ARCHITECTURE structure OF reg IS COMPONENT dff PORT(d,clk,clr :IN fourvalue;q:OUT fourvalue);END COMPONENT;BEGIN U1:dff PORT MAP(convert

10、4val(a(0),convert4val(clk),convert4val(clr),convert4value(q)=q(0);U2:dff PORT MAP(convert4val(a(1),convert4val(clk),convert4val(clr),convert4value(q)=q(1);U3:dff PORT MAP(convert4val(a(2),convert4val(clk),convert4val(clr),convert4value(q)=q(2);U4:dff PORT MAP(convert4val(a(3),convert4val(clk),conver

11、t4val(clr),convert4value(q)=q(3);END structure;VHDL的子程序(8)下面是在称之为trans2的实体中含两个双向转换器件的例子。PACKAGE my_pack IS TYPE nineval IS(Z0,Z1,ZX,R0,R1,RX,0,1,FX);TYPE nvector2 IS ARRAY(0 TO 1)OF nineval;TYPE fourstate IS(X,L,H,Z);FUNCTION convert4state(a:fourstate)RETURN nineval;convert4state FUNCTION convert9va

12、l(a:nineval)RETURN fourstate;END my_pack;convert9valX L HZZ0,Z1,ZX,R0,R1,RX,0,1,FXZ0,Z1,ZX,R0,R1,RX,0,1,FXXL H Zconvert4statePACKAGE body my_pack IS FUNCTION convert4state(a:fourstate)RETURN nineval IS BEGIN CASE a IS WHEN X=RETURN FX;WHEN L=RETURN F0;WHEN H=RETURN F1;WHEN Z=RETURN ZX;END CASE;END c

13、onvert4state;X LHZX,L,H,ZFX F0 F1 ZXVHDL的子程序(9)FUNCTION convert9val(a:FUNCTION convert9val(a:ninevalnineval)RETURN RETURN fourstatefourstate IS IS BEGIN BEGIN CASE a IS CASE a IS WHEN Z0=WHEN Z0=RETURN Z;RETURN Z;WHEN Z1=WHEN Z1=RETURN Z;RETURN Z;WHEN ZX=WHEN ZX=RETURN Z;RETURN Z;WHEN R0=WHEN R0=RET

14、URN L;RETURN L;WHEN R1=WHEN R1=RETURN H;RETURN H;WHEN RX=WHEN RX=RETURN X;RETURN X;WHEN F0=WHEN F0=RETURN L;RETURN L;WHEN F1=WHEN F1=RETURN H;RETURN H;WHEN FX=WHEN FX=RETURN X;RETURN X;END CASE;END CASE;END convert9val;END convert9val;END my_pack;END my_pack;Z0Z1ZXR0R1RXF0F1FXZLHXVHDL的子程序(10)USE WOR

15、K.my_pack.ALL;USE WORK.my_pack.ALL;ENTITY trans2 ISENTITY trans2 IS PORT(a,b:INOUT nvector2;PORT(a,b:INOUT nvector2;enable:IN enable:IN ninevalnineval););END trans2;END trans2;ARCHITECTURE ARCHITECTURE structstruct OF trans2 IS OF trans2 IS COMPONENT trans COMPONENT trans PORT(x1,x2:INOUT PORT(x1,x2

16、:INOUT fourstatefourstate;en:IN en:IN fourstatefourstate););END COMPONENT;END COMPONENT;BEGINBEGIN U1:trans PORT MAP(U1:trans PORT MAP(convert4stateconvert4state(x1)=(x1)=convert9valconvert9val(a(0),(a(0),convert4stateconvert4state(x2)=(x2)=convert9valconvert9val(b(0),(b(0),en=en=convert9valconvert9

17、val(enable);(enable);U2:trans PORT MAP(U2:trans PORT MAP(convert4stateconvert4state(x1)=(x1)=convert9valconvert9val(a(1),(a(1),convert4stateconvert4state(x2)=(x2)=convert9valconvert9val(b(1),(b(1),en=en=convert9valconvert9val(enable);(enable);END END structstruct;trans2En(九值)a(9值)b(9值)x1(4态)x2(4态)co

18、nvert9valconvert4state决断函数决断函数:当信号被多个驱动源所驱动时用决断函数返回信号值。在VHDL中一个带多个驱动源的信号,不对信号附加决断函数视为非法,由其信号的驱动之一有事件处理时被请求的函数组成决断函数,执行决断函数并从所有的驱动值中返回一信号新值。通常在模拟器中造有决断函数,或者有一个固定的决断函数,如线或、线与和信号平均值等。决断函数输入单一变元并返回一个单值,单驱动变元由信号驱动值的非限定数组组成,该信号附上决断函数。如果为两个驱动的信号,其非限定数组将是两个元素的长度,如果信号有三个驱动,非限定数组将是三个元素的长度,决断函数将检查所有驱动器的值并返回一个决

19、断值,前例中fourval类型:TYPE fourval IS(X,L,H,Z);列出强度的次序,从最弱往强排是:Z最弱H,L,或X都能覆盖过它;H,L中等强度只有X能覆盖过它;X强不被覆盖过。排出如下所示的真值表:inbinainainbz先比强度后比电平PACKAGE PACKAGE fourpackfourpack IS IS TYPE TYPE fourvalfourval IS(X,L,H,Z);IS(X,L,H,Z);TYPE TYPE fourval_vectorfourval_vector IS ARRAY(natural RANGE)OF IS ARRAY(natural R

20、ANGE)OF fourvalfourval;FUNCTION resolve(s:FUNCTION resolve(s:fourval_vectorfourval_vector)RETURN)RETURN fourvalfourval;END END fourpackfourpack;PACKAGE BODY PACKAGE BODY fourpackfourpack IS IS FUNCTION resolve(s:FUNCTION resolve(s:fourval_vectorfourval_vector)RETURN)RETURN fourvalfourval ISIS VARIAB

21、LE result:VARIABLE result:fourvalfourval:=Z;:=Z;BEGIN BEGIN FOR i IN sRANGE LOOP FOR i IN sRANGE LOOP CASE result IS CASE result IS WHEN Z=WHEN Z=CASE s(i)IS CASE s(i)IS WHEN H=WHEN H=result:=H;result:=H;WHEN L=WHEN L=result:=L;result:=L;WHEN X=WHEN X=result:=X;result:=X;WHEN OTHERS=WHEN OTHERS=NULL

22、;NULL;END CASE;END CASE;WHEN L=WHEN L=CASE s(i)IS CASE s(i)IS WHEN H=WHEN H=result:=X;result:=X;WHEN X=WHEN X=result:=X;result:=X;WHEN OTHERS=WHEN OTHERS=NULL;NULL;END CASE;END CASE;VHDL的子程序(13)WHEN H=CASE s(i)IS WHEN L=result:=X;WHEN X=result:=X;WHEN OTHERS=NULL;END CASE;WHEN X=result:=X;END CASE;E

23、ND LOOP;RETURN result;END resolve;END fourpack;九值决断函数 某些仿真器用九值系统来表示信号值:Z0,Z1,Zx,RO,R1,RX,FO,F1,FX,(Z0最弱、往右增强、至FX最强)。系统由三个强度值系统由三个强度值:Z高阻强度(几百千欧电阻)R电阻性(几千欧电阻)F激励性(几欧电阻)三个逻辑值组成三个逻辑值组成:0:逻辑0或假1:逻辑1或真X:不定逻辑九种状态说明如下:Z0:高阻0 RO:电阻性0 FO:激励0Z1:高阻1 R1:电阻性1 F1:激励1ZX:高阻不定 RX:电阻性不定 FX:激励不定态为了定义决断函数如何工作用了几个简单规定:1

24、最强的强度总是赢家2强度相同而值不同,返回强度同但值为X。PACKAGE ninepack IS TYPE strength IS(Z,R,F);TYPE nineval IS(Z0,Z1,ZX,R0,R1,RX,F0,F1,FX);TYPE ninevalvec IS ARRAY(natural RANGE )OF nineval;VHDL的子程序(14)TYPE ninevaltab IS ARRAY(ninevalLOW TO ninevalHIGH)OF nineval;TYPE strengthtab IS ARRAY(strengthLOW TO strengthHIGH)OF n

25、ineval;FUNCTION resolve9FUNCTION resolve9(s:ninevalvec)RETURN nineval;END ninepack;PACKAGE BODYPACKAGE BODY ninepack IS FUNCTION reslove9(s:ninvalvec)RETURN nineval IS VARIABLE result:nineval;CONSTANT get_strength:ninevaltab:=(Z,-Z0 Z,-Z1 Z,-ZX R,-R0 R,-R1 R,-RX F,-F0 F,-F1 F,-FXVHDL的子程序(15)CONSTANT

26、 x_tab:strengthtab:=(ZX,-Z RX,-R FX);-F BEGIN IF sLENGTH=0 THEN RETURN ZX;END IF;result:=s(0);FOR i IN sRANGE LOOP IF get_strength(result)get_strength(s(i)THEN result:=s(i);ELSIF get_strength(result)=ELSIF get_strength(result)=get_strength(s(i)THENget_strength(s(i)THEN IF result/=s(i)THEN result:=x_

27、tab(get_strength(result);END IF;END IF;END LOOP;RETURN result;END resolve9;END ninepack;VHDL的子程序的子程序(16)复合类型的决断不好简单地认为复合类型信号的一个复合类型值比另一个更强,除非能判断其中的一个比所有其它的都弱,为此应设计一个复合类型的值。决断函数将检查有多少个驱动器有这种值和多少个驱动器正被这种值激励,如果只有一个,那么决断函数将返回这个值作为决断值。如果出现多个值,那么或许存在一个错误条件,并且决断函数能声明是出错:下面的信号XBUS能被多个源驱动,但CPU一次只响应一个,决断函数必须先

28、决定激励XBUS的驱动源是多少,然后为信号返回一个正确的值。下面示出的复合类型说明和用复合类型的决断函数的例子:PACKAGE composite_res IS TYPE xtype IS RECORD addr:INTEGER;data:INTEGER;END RECORD;TYPE xtypevector IS ARRAY(natural RANGE )OF xtype;CONSTANT notdriven:xtype:=(-1,-1);FUNCTION cresolve(t:xtypevector)RETURN xtype;END composite_res;复合决断函数最初无驱动决断函

29、数检查有无驱动,谁驱动?输出决断值,直到它被替代。VHDL的子程序(17)PACKAGE BODY composite_res IS FUNCTION cresolve(t:xtypevector)RETURN xtype IS VARIABLE result:xtype:=notdriven;VARIABLE drive_count:INTEGER:=0;BEGIN IF tLENGTH=0 THEN RETURN notdriven;END IF;FOR i IN tRANGE LOOP IF t(i)/=notdriven THEN drive_count:=d rive_count+1

30、;IF drive_count=1 THEN result:=t(i);ELSE result:=notdriven;ASSERT FALSE REPORT SEVERITY ERROR;END IF;END IF;END LOOP;RETURN result;END cresolve;END composite_res;设初值为零若无驱动循环语句找驱动源号码,若有驱动源且最先请求xbus,决断之。若有一个驱动源result决断输出找不到驱动源multiple drivers detected指出多驱动出错VHDL的子程序(18)决断信号:两种方法建立决断信号,一是建立决断子类型并用它描述一个

31、信号。二是在信号说明部分指定信号为一个决断函数。1)TYPE fourval IS(X,L,H,Z);-不能做编辑 SUBTYPE resfour IS resolve fourval;-这是可做编辑用把名为resolve的决断函数用于决断fourval基本类型PACKAGE fourpack IS TYPE fourval IS(X,L,H,Z);TYPE fourvalvector IS ARRAY(natural RANGE )OF fourval;FUNCTION resolve(s:fourvalvector)RETURN fourval;-line 3 SUBTYPE resfou

32、r IS resolve fourval;-line 4END fourpack;第三行说明的决断函数resolve将在子类型的说明中用它,决断函数将在程序包体中描述。第四行说明在基本类型和决断函数说明中用的子类型。第二种方法是在信号说明中指定决断函数:PACKAGE fourpack IS TYPE fourval IS(X,L,H,Z);TYPE fourvalvector IS ARRAY(natural RANGE )OF fourval;FUNCTION resolve(s:fourvalvector)RETURN fourval;SUBTYPE resfour IS resolve

33、 fourval;END fourpack;VHDL的子程序(19)USE WORK.fourpack.ALL;ENTITY mux2 IS PORT(i1,i2,a:IN fourval;q:OUT fourval);END mux2;ARCHITECTURE different OF mux2 IS COMPONENT and2 PORT(a,b:IN fourval;c:OUT fourval);END COMPONENT;COMPONENT inv PORT(a:IN fourval;nota:OUT fourval);END COMPONENT;SIGNAL nota:fourval

34、;-resolved signal SIGNAL intq:resolve fourval:=x;BEGIN U1:inv PORT MAP(a,nota);U2:and2 PORT MAP(i1,a,intq);U3:and2 PORT MAP(i2,nota,intq);q=intq;END different;决断函数说明的intg信号mux2i1i2qaVHDL的子程序(20)PROCEDUCEPROCEDUCE过程过程有任意个输入、输出和双向参数,过程调用看作程序语句的一部分,要求返回多个值时用过程。过程说明用关键词PROCEDUCE开头,后面跟过程名,然后列一个变元清单。函数与过程

35、的主要区别是过程变元清单和每个参数的方向关联:而函数的变元清单没有这种功能,在过程中某些变元做成IN、OUT或INOUT的模块,而函数中所有变元都默认IN模块且只有一种IN模块,举数组转换为整数类型的过程例子:USR WORK.std_logic_1164.ALL;PROCEDURE vector_to_int (z:IN std_logic_vector;x_flag:OUT BOOLEAN;q:INOUT INTEGER)ISBEGIN q:=0;x_flag:=false;FOR i IN zRANGE LOOP q:=q*2;IF z(i)=1 THEN q:=q+1;ELSIF z(

36、i)/=0 THEN x_flag:=TRUE;END IF;END LOOP;END vector_to_int;对左移出的1,逐位(循环)加1。(0不加)对非1和非0的情况,标志为不定值vector_to_intvector_to_intVHDL的子程序(21)带带InoutInout(双向)参数的过程双向)参数的过程:介绍记录类型的双向变元过程例子,该记录含8个整型值的数组,用一字段保持所有整型数的平均值,该过程算整型值的平均值,并写到记录的平均字段和返回更新的记录。PACKAGE intpack IS TYPE bus_start_vec IS ARRAY(0 to 7)OF INTE

37、GER;TYPE bus_start_t IS RECORD bus_val:bus_stat_vec;average_val:INTEGER;END RECORD;PROCEDUCE bus_average(x:inout bus_stat_t);END intpack;PACKAGE BODY intpack ISEND intpack;PROCESS(mem_update)VARIABLE bus_statistics:bus_stat_t;BEGIN bus_statistics.bus_val:=(50,40,30,35,45,55,65,85);bus_average(bus_st

38、atistics);average=bus_statistics.average_val;END PROCESS;PROCEDUCE bus_average(x:inout bus_stat_t)IS VARIABLE total:INTEGER:=0;BEGIN FOR i IN 0 TO 7 LOOP total:=total+x.bus_val(i);END LOOP;x.average_val:=total/8;END bus_average;bus_averagebus_average的的双向双向参数过程参数过程过程调用VHDL的子程序(22)5.3 程序包 两个以上设计单元中共享的

39、元件封装在程序包内,故程序包是公共存储区,在程序包内说明的数据对实体透明。程序包由程序包说明和程序包体组成,程序包说明为程序包定义接口,其方式与实体定义模块接口非常相同,程序包体规定程序的实际功能,其方式与结构体语句方法相同。下述说明都含在程序包说明部分:。子程序说明。类型,子类型说明。常量,延时常量说明。信号说明,建立一个全局信号。文件说明。别名说明。元件说明、。属性说明、用户定义的属性(见第八章)。属性详细说明。拆接规范。USE付句用USE付句可使程序包说明说明的所有项对设计都透明,程序包接口由某个子程序或者程序包说明中的延时常量说明组成,子程序或者延时常量说明必须有相应的子程序体和在子程

40、序包包体中的延时常量值,否则应一个出错的结论。VHDL的子程序(23)延时常量延时常量是一种常量,在程序包说明部分描述该常量的名字和类型,其实际值在程序包包体部分指定。在程序包说明中说明延时常量的例示如下:PACKAGE tpack IS CONSTANT timing_mode:t_mode;END tpack;子程序说明允许设计者由子程序体分别地规定对子程序的接口,这将允许设计者用子程序来开始或者继续一个设计。同时,详细说明子程序内部的规范,还能让设计者自由地改变子程序内部工作方式,而不影响用此子程序的任何设计。PACKAGE cluspack IS TYPE nineval IS(Z0,

41、Z1,ZX,R0,R1,RX,F0,F1,FX);TYPE t_cluster IS ARRAY(0 TO 15)OF nineval;TYPE t_clus_vec IS ARRAY(natural range )OF t_cluster;FUNCTION resolve_cluster(s:t_clus_vec)RETURN t_cluster;SUBTYPE std_clus IS resolve_cluster t_cluster;CONSTANT undriven:std_clus;END cluspack;对resolve_cluster的子程序说明指定了子程序的名字、变元、它们的

42、类型和模块以及当子程序是一函数时的返回类型。VHDL的子程序(24)程序包包体的主要任务是定义延时常量的值,并为程序说明中的某些子程序规定子程序体。程序包包体:。子程序说明。文件说明。子程序体。别名说明。类型、子类型说明。USE付句。常量说明(常量说明填入一个延时常量的值)PACKAGE BODY cluspack IS CONSTANT undriven:t_wclus:=(ZX,ZX,ZX,ZX,ZX,ZX,ZX,ZX,ZX,ZX,ZX,ZX,ZX,ZX,ZX,ZX);FUNCTION resolve_cluster(s:t_clus_vec)return t_cluster IS VAR

43、IABLE result:t_cluster;VARIABLE drive_count:INTEGER;BEGIN IF sLENGTH=0 THEN RETURN undriven;END IF;FOR i in sRANGE LOOP IF s(i)/=undriven THEN drive_count:=drive_count+1;IF drive_count=1 THEN result:=s(i);ELSE result:=undriven;ASSERT FALSE REPORT multiple drivers detected SEVERITY ERROR;END IF;END I

44、F;END LOOP;RETURN result;END resolve_cluster;END cluspack;VHDL的子程序(25)USE WORK.std_logic_1164.ALL;PACKAGE math IS TYPE st16 IS ARRAY(0 TO 15)OF std_logic;FUNCTION add(a,b:IN st16)RETURN st16;FUNCTION sub(a,b:IN st16)RETURN st16;END math;PACKAGE BODY math IS FUNCTION vect_to_int(S:st16)RETURN INTEGER

45、 IS VARIABLE result:INTEGER:=0;BEGIN FOR i IN 0 TO 7 LOOP result:=result*2;IF S(i)=1 THEN result:=rsult+1;END IF;END LOOP;RETURN result;END vect_to_int;先做一个vect_to_intVHDL的子程序(26)FUNCTION int_to_st16(s:INTEGER)RETURN st16 IS VARIABLE result:st16;VARIABLE digit:INTEGER:=2*15;VARIABLE local:INTEGER;BE

46、GIN local:=s;FOR i IN 15 DOWNTO 0 LOOP IF local/digit=1 THEN result(i):=1;local:=local-digit;ELSE result(i):=0;END IF;digit:=digit/2;END LOOP;RETURN result;END int_to_st16;再做一个int_to_st16FUNCTION add(a,b:IN st16)RETURN st16 IS VARIABLE result:INTEGER;BEGIN result:=vect_to_int(a)+vect_to_int(b);RETURN int_to_st16(result);END add;FUNCTION sub(a,b:IN st16)RETURN st16 IS VARIABLE result:INTEGER;BEGIN result:=vect_to_int(a)-vect_to_int(b);RETURN int_to_st16(result);END sub;END math;然后做add和sub

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

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com