EDA技术与VHDL实用教程.ppt

  1. 1、本文档共349页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EDA技术与VHDL实用教程

几点注意: 函数名需放在关键词FUNCTION之后,它可以是普通的标识符,也可以是运算符。 当是运算符时必须加上双引号,这是运算符的重载。 函数的参数表中的参数只能是IN模式,用来定义输入值。 输入值只能是信号或常数,若没有特别的说明,则参数被默认为常数。 信号或常数的数据类型只能使用类似STD_LOGIC_VECTOR和INTEGER的非限制的形式。 几个例子 FUNCTION FUNC1(A,B,C: REAL) RETURN REAL; ----参量前没注明CONSANT或SIGNAL,默认为常数。 FUNCTION “*” (CONSANT A,B: INTEGER) RETURN INTEGER; ----注意重载运算符函数名*要用引号括起来。 FUNCTION AS2 (SIGNAL IN1,IN2:REAL) RETURN REAL; ----注意信号参量前要注明SIGNAL。 下面是一个函数体声明的例子: FUNCTION SAM (x,y,z:BIT) RETURN BIT IS ----定义函数SAM,该函数无函数首 BEGIN RETURN (x OR z)AND y; END FUNCTION SAM; (2)函数声明的地方 可在结构体的声明部分、进程的声明部分或程序包中声明函数。 在结构体或进程中声明函数,只能在结构体或进程中调用函数,而在程序包中声明函数则可通过声明引用程序包,在不同的实体的各个结构体内的调用函数。 (3) 函数的调用 library ieee; use ieee.std_logic_1164.all; entity dec3_8 is port( a: in std_logic_vector(2 downto 0); y: out std_logic_vector(7 downto 0)); end dec3_8; architecture a of dec3_8 is function to_integer(arg:std_logic_vector) return integer is variable temp: natural:=0; variable j:natural:=arg’length-1;---arg’length是arg的位长 begin if arg’length=32 then return temp ; end if ;----不能超过整数范围 for i in arg’range loop if arg(i)=’1’ then temp:=temp+2**j;---某一位不为零,则贡献一部分和 end if ; if j0 then j:=j-1; end if ; end loop; return temp; end function to_integer; begin g1: for k in 7 downto 0 generate y(k)=’0’ when to_integer(a)=k else ‘1’; end generate g1; end a ; 这是使用数据转换函数to_integer描写的3-8译码器,转换函数to_integer将STD_LOGIC_VECTOR类型转换为INTEGER类型。 注意这里函数调用的方法是把实际参数代入形式参数的位置,这称位置连接映射。还可以使用指名连接映射,to_integer( arg = a)。 函数调用格式如下: 函数名 (实际函数参数表) 其中函数参数表可以是位置连接映射形式(a1,a2,…..an)或者指名连接映射形式(x1=a1,x2=a2,…..xn=an)。 3. 过程 (1) 过程及其声明 在VHDL源代码中,如果在多处出现重复的模块,可使用过程来描述。 过程声明分过程首声明和过程体声明两部分,同一个过程的过程首和过程体应具有相同的名字。 过程首的声明格式如下: PROCEDURE 过程名(参数表); 过程体的声明格式如下: PROCEDURE 过程名(参数表) IS [说明部分]; BEGIN 顺序语句; END [PROCEDURE] 过程名; 过程首由过程名和参数表组成 参数表用于对常数、变量和信号三类形式参量作出说明 用关键词IN、OUT和INOUT定义这些参数的信息

文档评论(0)

yurixiang1314 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档