- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VHDL中的子结构
VHDL中的子结构 为了使设计简化,避免重复的工作,VHDL中通常使用子结构来规范一些常用的运算或简单的功能模块; function函数:用于表达常用的运算; procedure过程:用于表达简单的元件; 子结构中的执行语句都应为顺序语句。 VHDL中的函数:function 在赋值类语句中,经常引用函数来表达常用的运算组合或类型转换,以达到代码重用和共享的目的; 函数主要由参量表、说明部分和顺序执行部分构成。 函数的编写格式 function 函数名 (信号列表) return return-type is declarations and definitions;--说明部分 begin sequential-statement;--功能部分 …… sequential-statement; end function-name; 函数的编写实例 采用函数表达,设计inhibit门 P.277(表4-36) architecture dat of inhibit is function butnot (a,b:bit) return bit is begin if b=0 then return a; else return ‘0’; end if; end butnot; begin z=butnot (x,y); end dat; 函数的编写特点 1 函数可以看作是一种多输入/单输出的电路模块; 2 函数信号表中带有若干形式参量,在调用时由实际信号取代,实现主程序向函数的输入;在函数内部,信号被作为常量对待; 函数的编写特点 3 函数内部可以定义局部使用的类型、常量、变量、函数、过程;但不能定义信号; 函数的输入只能是常数或信号,在函数中被作为in模式,不能改变; 函数中不能有out模式的数据对象,运算结果通过return语句赋值给函数名输出。 函数的编写特点 4 函数应用时,为了进行运算,可在函数体中设置变量,在函数执行过程中为该变量赋值;用return语句可以将该变量值返回(赋值给函数名);该变量应与规定的返回类型一致;函数定义中可以设置多个返回语句,但在一次调用中,只有一个返回语句带回函数值; 数据类型转换函数的实例 从std_logic_vector到integer:p.279(表4-38) function conv_integer (x: std_logic_vector) return integer is variable result: integer; begin result := 0; for I in xrange loop result :=result*2; case x(i) is when 0|L = null; when 1|H = result := result+1; when others = null; end case; end loop; return result; end conv_integer; 数据类型转换函数的实例 程序中的一些语法解释: xrange 属性描述:返回由x的位数所指定的数据范围; a|b : 将两个(或多个)信号(变量)并列的表达形式; = : case语句的表达形式,当出现左边值时,执行右边的语句;注意与“大于等于”区分; null:关键词语句,表示不执行任何操作; 用单引号所括的字母H、L等必须大写; 数据运算函数的实例 整数与逻辑位的加法; function + (a:integer,b:bit) return integer is begin if (b = 1) then return a+1; else return a; end if; end +; 数据运算函数的实例 在VHDL程序中,当遇上相关情况时,程序就可以自动调用该函数: signal a,b:integer range 0 to 15; signal c:bit; ………… b = 3+a+c; 第1个+进行预定义的算术操作,第2个+进行函数操作; 数据类型运算函数的实例 在VHDL程序中,当遇上相关情况时,程序就可以自动调用该函数: signal a,b:integer range 0 to 15; signal c:bit; ………… b = 3+a+c; 第1个+进行预定义的算术操作,第2个+进行自定义函数操作;这称为运算重载overload。 VHDL中的结构设计:procedure 语句 过程是VHDL的一种子结构,可以看作简单的元件。过程可以对应于一个多输入多输出的电路模块。过程可以在结构体中调用(并行调用),也可以在子结构中调用。 VHDL中的过程:procedure 过程的定义: procedure 过程名( 参量:模式 类型)is
文档评论(0)