CH11_套件函式与程序.ppt_第1页
CH11_套件函式与程序.ppt_第2页
CH11_套件函式与程序.ppt_第3页
CH11_套件函式与程序.ppt_第4页
CH11_套件函式与程序.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 套件 Packages 函式 Functions 與程序 Procedures 第十一章 儒林圖書公司TB061 VHDL數位電路設計實務教本使用QuartusII 套件 Packages 2 Package是一種設計單元 它用來宣告一些VHDL中可使用的物件 讓使用者可以將VHDL中的Functions Procedures及資料型別的定義用一個Package包裝起來 而凡是在套件 Package 內所定義和宣告的東西就變成是公開的 可以在全程式中使用 Package套件名稱IS 套件宣告部份套件宣告部份END套件名稱 PackageBody套件名稱IS 套件主體套件主體之內容END套件名稱 套件 Packages 的使用 3 而當我們的VHDL程式需要使用某一個套件裡所定義的函式或程序時 其語法如下 最簡單的例子就是在VHDL程式設計中一定會用使到的 上述的語法說明我們打算使用目前工作目錄 WorkDirectory 下的my package套件裡所有的副程式與資料型別 其意即為使用IEEE目錄下的std logic 1164套件內所有的副程式與資料型別 因此 若我們設計的VHDL程式需要用到自己所建立的my package套件時 語法如下 套件 Packages Example1 4 LIBRARYieee USEieee std logic 1164 all 宣告在Package中所使用到的PackagePACKAGEcompIS 在Package中宣告最小值比較器函式functionminimum constanta b integer returninteger ENDcomp USEieee std logic 1164 all packagebodycompis 在套件主體區中描述函式的內容functionminimum constanta b integer returnintegerisvariablec integer 區域變數宣告beginifa bthenc a 最小值為aelsec b 最小值為bendif returnc 傳回其中之最小者endminimum endcomp 套件 Packages Example1 續 5 USEp all 宣告使用之前建立的PackageENTITYtest compisPORT x y INinteger z OUTinteger ENDtest comp ARCHITECTUREaOFtest compISBEGINz minimum x y 呼叫使用minimum函式ENDa 套件 Packages Example2 6 LIBRARYieee USEieee std logic 1164 all PACKAGEmy package1ISconstantc std logic vector 00000011 套件1中宣告常數c的值為00000011ENDmy package1 LIBRARYieee USEieee std logic 1164 all PACKAGEmy package2ISconstantc std logic vector 00000100 套件2中宣告常數c的值為00000100ENDmy package2 套件 Packages Example2 續 7 LIBRARYieee USEieee std logic 1164 all USEieee 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中所宣告的常數c 00000011 Y2 B work my package2 c 使用my package2中所宣告的常數c 00000100 enda 函式 Functions 的語法 8 函式 Functions 的宣告語法如下 函式 Functions 的主體內容語法如下 函式 Functions 的呼叫 9 函式 Functions Example1 10 LIBRARYieee USEieee std logic 1164 all PACKAGEmy packageISfunctioncarry bit1 bit2 bit3 std logic returnstd logic ENDmy package LIBRARYieee USEieee std logic 1164 all packagebodymy packageisfunctioncarry bit1 bit2 bit3 std logic returnstd logicISvariableresult std logic beginresult bit1andbit2 or bit1andbit3 or bit2andbit3 returnresult end endmy package 函式 Functions Example1 續 11 LIBRARYieee USEieee std logic 1164 all USEwork my package all 使用目前工作目錄下的my package套件ENTITYcarry packisPORT a b c INstd logic Cout OUTstd logic ENDcarry pack ARCHITECTUREaOFcarry packISBEGINProcess a b c BeginCout carry a b c Endprocess ENDa 函式 Functions Example2 12 LIBRARYieee USEieee std logic 1164 all entityprocisport s inintegerrange0to15 A inintegerrange0to31 B inintegerrange0to31 Result outintegerrange0to63 endproc ArchitectureaofprocISFunctionSum A inintegerrange0to15 兩整數相加函式B inintegerrange0to15 ReturnIntegerISBeginReturnA B EndSum FunctionDiff A inintegerrange0to15 兩整數相減函式B inintegerrange0to15 ReturnIntegerISBeginReturnA B EndDiff 函式 Functions Example2 續 13 beginprocess s beginif s 0 thenResult Sum A B s 0時呼叫兩整數相加函式elsif s 1 thenResult Diff A B s 1時呼叫兩整數相減函式elseResult 63 當s為0和1以外條件時輸出值為63endif endprocess enda 函式 Functions Example3 14 LIBRARYieee USEieee std logic 1164 all ENTITYfunction callsISPORT A B C D E INSTD LOGIC Y1 Y2 Y3 OUTSTD LOGIC ENDfunction calls ARCHITECTUREaOFfunction callsISfunctionFn1 F1 F2 F3 F4 std logic returnstd logicisvariabletemp std logic begintemp F1xorF2 xor F3xorF4 Returntemp endfunctionFn1 BEGIN process A B C D E beginY1C F4 D F1 A F2 B xorE 呼叫Fn1函式 使用名稱對應表示法 Y3D F3 C 呼叫Fn1函式 位置與名稱對應混合法 endprocess enda 函式 Functions Example4 15 ARCHITECTUREaOFfunction calleISfunctionFn1 F1 F2 F3 F4 std logic returnstd logicisvariabletemp std logic begintemp F1xorF2 xor F3xorF4 Returntemp endfunctionFn1 BEGINY1C2 F4 D2 F1 A2 F2 B2 xorm1xorm2 Y3D3 F3 C3 xorm1xorm2 endprocess enda 函式 Functions 應用 型別轉換 TypeConversion 16 VHDL是一種資料型別檢查非常嚴格的語言 不同的資料型別彼此之間不能直接作直接設定敘述或運算 因此我們必需採用型別轉換的函式將其資料型別轉換成完全相同的型別才能進一步作運算處理 LibraryIEEE Useieee std logic 1164 all entityexampleisport in x inBIT out y outBOOLEAN endexample architectureaofexampleisfunctionbit to boolean in bit inBIT returnBOOLEANisvariablec boolean beginifin bit 1 thenc TRUE elsec FALSE endif returnc endbit to boolean beginout y bit to boolean in x enda Example 輸入為BIT而輸出傳回值為BOOLEAN的函式設計 函式 Functions 應用 型別轉換 TypeConversion 17 AlteraQuartusII在其IEEELibrary裡提供有std logic arithPackage 已經內含下面幾種格式轉換函式 conv integer 將integer unsigned signed或std ulogic轉換成整數 integer conv unsigned 將integer unsigned signed或std ulogic轉換成Unsigned數值 conv std logic vector 將integer unsigned signed或std ulogic轉換成std logic vector 函式 Functions 應用 型別轉換簡例 18 LIBRARYieee USEieee std logic 1164 all USEieee std logic arith all 指定使用std logic arith套件entityadder tisport A B inunsigned 7downto0 A B宣告為unsigned的陣列輸入result outinteger result宣告為整數 integer 輸出endadder t Architectureaofadder tISbeginresult conv integer A B 將A B運算結果由unsigned轉換成整數輸出到resultenda 函式 Functions 應用 型別轉換簡例 19 USEieee std logic 1164 all USEieee std logic arith all 指定使用std logic arith套件entityadder conisport A B inunsigned 7downto0 result outstd logic vector 7downto0 endadder con Architectureaofadder conISbeginresult conv std logic vector A B 7 本函式要設定待轉換的運算數及SIZE位元等參數enda 程序 Procedures 的語法 20 程序 Procedures 的傳回值則可以不限於一個 與函式最大的不同 在VHDL語言中 程序 Procedure 的宣告語法如下 程序 Procedures Example 四位元加法器的架構 21 ENTITYadder4ISPORT a b instd logic vector 3downto0 cin instd logic sum outstd logic vector 3downto0 cout outstd logic ENDadder4 ARCHITECTUREstructuralOFadder4ISprocedurefull adder a b c instd logic sum cout outstd logic ISbeginsum axorbxorc cout aandb or aandc or bandc end BEGINprocess a b cin variableresult std logic vector 3downto0 variablecarry std logic beginfull adder a 0 b 0 cin result 0 carry 呼叫一位元全加法器程序full adder a 1 b 1 carry result 1 carr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论