欢迎来到天天文库
浏览记录
ID:49202061
大小:1.04 MB
页数:22页
时间:2020-02-01
《CH11_套件函式与程序.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1套件(Packages)、函式(Functions)與程序(Procedures)第十一章儒林圖書公司TB061VHDL數位電路設計實務教本使用QuartusII套件(Packages)2Package是一種設計單元,它用來宣告一些VHDL中可使用的物件,讓使用者可以將VHDL中的Functions、Procedures及資料型別的定義用一個Package包裝起來,而凡是在套件(Package)內所定義和宣告的東西就變成是公開的,可以在全程式中使用。Package套件名稱IS-套件宣告部份套件宣告部份END套件名稱;PackageBody套件名稱I
2、S--套件主體套件主體之內容END套件名稱;套件(Packages)的使用3USEwork.my_package.all而當我們的VHDL程式需要使用某一個套件裡所定義的函式或程序時,其語法如下:USE目錄名稱.套件名稱.指定的項目;最簡單的例子就是在VHDL程式設計中一定會用使到的:USEieee.std_logic_1164.all上述的語法說明我們打算使用目前工作目錄(WorkDirectory)下的my_package套件裡所有的副程式與資料型別。其意即為使用IEEE目錄下的std_logic_1164套件內所有的副程式與資料型別。因此,若我
3、們設計的VHDL程式需要用到自己所建立的my_package套件時,語法如下:套件(Packages)Example14LIBRARYieee;USEieee.std_logic_1164.all;--宣告在Package中所使用到的PackagePACKAGEcompIS--在Package中宣告最小值比較器函式functionminimum(constanta,b:integer)returninteger;ENDcomp;USEieee.std_logic_1164.all;packagebodycompis--在套件主體區中描述函式的內容f
4、unctionminimum(constanta,b:integer)returnintegerisvariablec:integer;--區域變數宣告beginifa5、_comp;ARCHITECTUREaOFtest_compISBEGINz<=minimum(x,y);--呼叫使用minimum函式ENDa;套件(Packages)Example26LIBRARYieee;USEieee.std_logic_1164.all;PACKAGEmy_package1ISconstantc:std_logic_vector:="00000011";--套件1中宣告常數c的值為00000011ENDmy_package1;------------------------------------------------6、------------LIBRARYieee;USEieee.std_logic_1164.all;PACKAGEmy_package2ISconstantc:std_logic_vector:="00000100";--套件2中宣告常數c的值為00000100ENDmy_package2;------------------------------------------------------------套件(Packages)Example2(續)7LIBRARYieee;USEieee.std_logic_1164.all;USEieee7、.std_logic_unsigned.all;USEieee.std_logic_arith.all;Entityexam_packmISgeneric(num_bits:integer:=8);port(A,B:instd_logic_vector(num_bits-1downto0);Y1,Y2:outstd_logic_vector(num_bits-1downto0));endexam_packm;Architectureaofexam_packmISBeginY1<=A+work.my_package1.c;--使用my_package18、中所宣告的常數c(00000011)Y2<=B+work.my_package2.c;--使用my_pack
5、_comp;ARCHITECTUREaOFtest_compISBEGINz<=minimum(x,y);--呼叫使用minimum函式ENDa;套件(Packages)Example26LIBRARYieee;USEieee.std_logic_1164.all;PACKAGEmy_package1ISconstantc:std_logic_vector:="00000011";--套件1中宣告常數c的值為00000011ENDmy_package1;------------------------------------------------
6、------------LIBRARYieee;USEieee.std_logic_1164.all;PACKAGEmy_package2ISconstantc:std_logic_vector:="00000100";--套件2中宣告常數c的值為00000100ENDmy_package2;------------------------------------------------------------套件(Packages)Example2(續)7LIBRARYieee;USEieee.std_logic_1164.all;USEieee
7、.std_logic_unsigned.all;USEieee.std_logic_arith.all;Entityexam_packmISgeneric(num_bits:integer:=8);port(A,B:instd_logic_vector(num_bits-1downto0);Y1,Y2:outstd_logic_vector(num_bits-1downto0));endexam_packm;Architectureaofexam_packmISBeginY1<=A+work.my_package1.c;--使用my_package1
8、中所宣告的常數c(00000011)Y2<=B+work.my_package2.c;--使用my_pack
此文档下载收益归作者所有