o第八章翻译3改.doc

o第八章翻译3改.doc

ID:59777964

大小:118.41 KB

页数:12页

时间:2020-11-23

o第八章翻译3改.doc_第1页
o第八章翻译3改.doc_第2页
o第八章翻译3改.doc_第3页
o第八章翻译3改.doc_第4页
o第八章翻译3改.doc_第5页
资源描述:

《o第八章翻译3改.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、毕业设计(论文)译  文题目VHDL高级特性学生姓名张昕旭学号2012409737专业电气及其自动化班级20124097指导教师黄南山评阅教师完成日期2016年1月14日8VHDL高级特性在本章中,对一些更深奥的VHDL特性进行了讨论。一些功能可能是有用的对于某些类型有用,而某些类型不适用。本章用典型的使用实例来显示这些特性的使用方法。本章将要讨论的特性包括:重载、限定表达式、用户自定义属性、生成语句、别名、和TEXTIO。有这些特性为设计人员提供了一个高级的编程环境。8.1重载重载可以使设计人员编写出阅读性更好的程序代码。当多个子程序或类型使用相同的

2、对象名时,就称对象被重载。在每一个重载的应用实例中,由VHDL编译器选择相应的使用对象。在VHDL中,有许多类型可以重载:子程序重载、运算符重载、举重类型重载。子程序重载允许子程序处理不同类型的对象,重载运算符允许运算符对不同类型的对象完成相同的运算,重载使设计人员避免为了某一重复操作而设计多个不同名的子程序。使用重载子程序和重载运算符,可以使设计的程序更加易于读懂、易于维护。8.1.1子程序重载 子程序重载允许设计人员为多个子程序使用相同的程序名,但参数的数量、参数的类型和返回值(如果存在)可以不同。VHDL编译器在编译的时候,根据不同的子程序调用选

3、择与之匹配的子程序。如果没有找到与调用匹配的子程序,则产生一个错误提示。下面的例子说明如何根据参数类型重载子程序。LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;PACKAGEp_shiftISTYPEs_intISRANGE0TO255;TYPEs_arrayISARRAY(0TO7)OFstd_logic;FUNCTIONshiftr(a:s_array)returns_array;FUNCTIONshiftr(a:s_int)returns_int;ENDp_shift;PACKAGEBODYp_shiftISFUN

4、CTIONshiftr(a:s_array)returns_arrayISVARIABLEresult:s_array;BEGINFORiINa’RANGELOOPIFi=a’HIGHTHENresult(i):=‘0’;ELSEresult(i):=a(i+1);ENDIF;ENDLOOP;RETURNresult;ENDshiftr;FUNCTIONshiftr(a:s_int)returns_intISBEGINRETURN(a/2);ENDshiftr;ENDp_shift;这个程序包里p_shift里有两个函数,函数名都是shiftr,两个函

5、数都实现向右移功能。但是每个函数只能对一个特定的类型进行右移操作。其中一个函数适用于s_int类型,而另一个函数适用于s_array类型。编译器根据调用函数的参数类型选择相应的函数,并返回相应的运算结果。下面例子所示的是不同类型的函数调用,以及每次使用的结果:USEWORK.p_shift.ALL;ENTITYshift_exampleISENDshift_example;ARCHITECTUREtestOFshift_exampleISSIGNALint_signal:s_int;SIGNALarray_signal:s_array;BEGIN--p

6、icksfunctionthatworkswiths_inttypeint_signal<=shiftr(int_signal);--picksfunctionthatworkswith--s_arraytypearray_signal<=shiftr(array_signal);--produceserrorbecausenofunction--willmatcharray_signal<=shiftr(int_signal);ENDtest;这个程序包里有三次使用了函数shiftr,第1次对函数shiftr调用时使用的参数类型为s_int,返回类型

7、也是s_int。因为包体p_shi白内第2个函数的输入参数类型和返回值的类型均为s_Înt,与调用函数匹配,所以这次调用使用包内的第2个函数。第2次调用函数shiftr时使用了s_array数组类型的参数和返回值,所以选择使用包体p_shi白内第一个定义的函数。因为两者的输入参数的类型和返回值的类型都匹配。第3次调用函数shiftr时,输入参数的类型s_mt匹配到了形参类型为s_int的函数,但是该函数返回值的类型与目标信号的类型不匹配,根据p_shi负包内现有定义的函数,没有找到能准确匹配的函数。所以,编译器对第3行编译时产生一个错误提示。为了使第3

8、次函数调用有效,需要再定义一个函数,使新函数的类型与第3次调用要求的类型匹配。在下面的程序行就

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。