VHDL語言的程序結(jié)構(gòu).ppt
《VHDL語言的程序結(jié)構(gòu).ppt》由會員分享,可在線閱讀,更多相關(guān)《VHDL語言的程序結(jié)構(gòu).ppt(76頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1 7 2VHDL語言的程序結(jié)構(gòu) 第7章VHDL語言基礎(chǔ) 2 1 USE定義區(qū) 定義元件庫 2 PACKAGE定義區(qū) 定義使用哪些自定義元件庫 3 ENTITY定義區(qū) 定義電路實體的外觀 I O接口的規(guī)格 4 ARCHITECTRUE定義區(qū) 描述電路內(nèi)部的功能 說明電路執(zhí)行什么動作或功能 5 CONFIGURATION定義區(qū) 描述各種設(shè)計實體和元件之間的連接關(guān)系以及設(shè)計實體和結(jié)構(gòu)體之間的連接關(guān)系 第7章VHDL語言基礎(chǔ) 3 VHDL基本結(jié)構(gòu) 第7章VHDL語言基礎(chǔ) LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYmux21ISPORT a b INSTD LOGIC s INSTD LOGIC y OUTSTD LOGIC ENDENTITYmux21 ARCHITECTUREbehaveOFmux21ISBEGINPROCESS a b s BEGINIFs 0 THENy a ELSEy b ENDIF ENDPROCESS ENDARCHITECTUREbehave IEEE說明 自定義元件庫 定義一個實體 描述輸入輸出 信號 結(jié)構(gòu)體說明 4 1 庫 Library 庫是經(jīng)編譯后的數(shù)據(jù)的集合 存放包集合定義 實體定義 結(jié)構(gòu)體定義和配置定義 庫的功能類似于UNIX和MS DOS操作系統(tǒng)中的目錄 庫中存放設(shè)計的數(shù)據(jù) 在VHDL中 庫的說明總放在設(shè)計單元的最前面 庫中的各個設(shè)計單元可以用作進(jìn)行其他設(shè)計的資源 一個設(shè)計可以使用多個庫中的設(shè)計單元 7 2 1庫 第7章VHDL語言基礎(chǔ) 5 1 庫的使用首先在設(shè)計的開頭說明要引用的庫 然后使用use子句指明要使用庫中的哪一個設(shè)計單元 其書寫格式為 Library庫名 Use庫名 程序包名 all 其中 程序包名就是實際設(shè)計要使用的庫中的設(shè)計單元 all表示使用程序包中的所有項目 第7章VHDL語言基礎(chǔ) 6 引用庫和程序包中的說明語句有以下4種形式 假定設(shè)計實體中的信號類型為std logic 其類型說明在ieee庫的std logic 1164程序包中定義 形式一 Libraryieee Entityand2isPort a inieee Std logic 1164 Std logic b inieee Std logic 1164 Std logic c outieee Std logic 1164 Std logic Endand2 庫說明 程序包 數(shù)據(jù)類型 第7章VHDL語言基礎(chǔ) 7 形式2 Libraryieee Useieee all Entityand2isPort a inStd logic 1164 Std logic b inStd logic 1164 Std logic c outStd logic 1164 Std logic Endand2 形式3 Libraryieee Useieee std logic 1164 all Entityand2isPort a instd logic b instd logic c outstd logic Endand2 第7章VHDL語言基礎(chǔ) 8 引用庫和程序包中的說明語句有以下4種形式 假定設(shè)計實體中的信號類型為std logic 其類型說明在ieee庫的std logic 1164程序包中定義 形式4 Libraryieee Useieee std logic 1164 std logic Entityand2isPort a instd logic b instd logic c outstd logic Endand2 第7章VHDL語言基礎(chǔ) 9 2 庫的種類VHDL提供的庫可分為兩大類 設(shè)計庫 對當(dāng)前設(shè)計是永遠(yuǎn)可見的 不需在程序開頭對它們進(jìn)行說明 一般包括std庫和work庫 資源庫 用來存放常規(guī)元件和常用模塊的庫 在使用時要進(jìn)行說明 資源庫的內(nèi)容與廠商直接相關(guān) 現(xiàn)在的VHDL廠商和EDA工具廠商都有自己的資源庫 其中含有廠商自定義的程序包 應(yīng)用最廣泛的資源庫是ieee庫 vital庫和用戶自定義的庫 第7章VHDL語言基礎(chǔ) 10 1 std庫是VHDL的標(biāo)準(zhǔn)庫 包含程序包standard和textio 程序包standard中定義了bit bit vector character和time等數(shù)據(jù)類型 程序包textio主要包含了對文本文件進(jìn)行讀寫操作的過程和函數(shù) 注意 使用程序包textio時要對庫和程序包進(jìn)行說明 Librarystd Usestd textio all 使用程序包standard時 由于VHDL規(guī)定standard程序包總是可見的 因此不必進(jìn)行說明 第7章VHDL語言基礎(chǔ) 11 2 work庫 是VHDL的工作庫 在編譯一VHDL的時候 默認(rèn)其保存在work庫中 因此work庫可以用來臨時保存設(shè)計人員以前編譯過的元件和模塊 也可以通過該庫來使用其中的元件和模塊 VHDL標(biāo)準(zhǔn)中規(guī)定了work庫也是永遠(yuǎn)可見的 因此在使用work庫的時候不需要對它進(jìn)行說明 第7章VHDL語言基礎(chǔ) 12 3 ieee庫 是應(yīng)用最廣泛的資源庫 主要包括程序包std logic 1164 numeric bit numeric std math complex和math real 其中程序包std logic 1164 numeric bit numeric std是ieee標(biāo)準(zhǔn)化組織認(rèn)可的程序包 現(xiàn)在有些公司 如synopsys公司提供了程序包std logic arith std logic signed和std logic unsigned等 雖沒得到ieee標(biāo)準(zhǔn)化組織的認(rèn)可 但仍然定義在ieee庫中 使用ieee庫時必須進(jìn)行說明 Libraryieee Useieee std logic 1164 all 第7章VHDL語言基礎(chǔ) 13 4 vital庫 是應(yīng)用比較廣泛的資源庫 主要包括程序包vital timing和vital primitives 其中vital timing是一個時序程序包 vital primitives是一個基本元件程序包 它們可以提高VHDL門級時序模擬精度 5 用戶自定義庫 用來存放設(shè)計中共用的一些程序包 這是設(shè)計人員自己建立的資源庫 可以提高設(shè)計的靈活性 在VHDL的開頭要對庫進(jìn)行說明 第7章VHDL語言基礎(chǔ) 14 第7章VHDL語言基礎(chǔ) VHDL設(shè)計中的基本單元就是設(shè)計實體 它用以描述完整系統(tǒng) 電路板 芯片 邏輯單元或門電路 設(shè)計實體的組成部分 實體說明 EntityDeclaration 描述一個設(shè)計的外貌 即對外的輸入輸出接口以及一些用于結(jié)構(gòu)體的參數(shù)定義 結(jié)構(gòu)體或構(gòu)造體 ArchitectureBody 描述的是設(shè)計的行為和結(jié)構(gòu) 指定輸入和輸出之間的行為 7 2 2VHDL程序的實體 15 設(shè)計實體 實體說明和結(jié)構(gòu)體之間的關(guān)系 設(shè)計實體 結(jié)構(gòu)體1 結(jié)構(gòu)體2 第7章VHDL語言基礎(chǔ) 例 一個二輸入門電路的VHDL描述 Entityand gateisPort a inbit b inbit c outbit Endand gate Architecturebehaveofand gateisBeginc aandb Endbehave 保留字 實體名 實體說明 結(jié)構(gòu)體 說明 VHDL是不區(qū)分大小寫的 可根據(jù)習(xí)慣書寫 17 2 一般格式ENTITY實體名IS GENERIC 類型表 PORT 端口表 實體說明部分 BEGIN實體語句部分 END ENTITY 實體名 一 實體說明 ENTITYor gateISGENERIC delay time 1ns PORT a inbit b inbit c outbit ENDor gate 第7章VHDL語言基礎(chǔ) 1 功能 描述設(shè)計模塊的輸入 輸出信號或引腳 并給出設(shè)計模塊與外界的接口 實體類似一個 黑盒 實體描述了 黑盒 的輸入輸出口 18 實體名實際上是器件名 最好根據(jù)相應(yīng)的電路功能確定 如4位2進(jìn)制計數(shù)器用counter4b 8位加法器用add8b 3 8譯碼器用ym 38 實體名必須與文件名相同 否則無法編譯 實體名不能用工具庫中定義好的元件名 實體名不能用中文 也不能用數(shù)字開頭 實體名 第7章VHDL語言基礎(chǔ) 19 二 類型說明 1 作用為設(shè)計實體和其外部環(huán)境通信的靜態(tài)信息提供通道 可以定義端口的大小 實體中元件的數(shù)目以及實體的定時特性等 2 一般格式GENERIC CONSTANT 名字表 IN 子類型標(biāo)識 靜態(tài)表達(dá)式 第7章VHDL語言基礎(chǔ) ENTITYnand2ISGENERIC t rise time 1ns t fall time 1ns PORT a inbit b inbit c outbit ENDnand2 20 使用類屬參數(shù)說明語句易于使設(shè)計具有通用性 ENTITYand gateISGENERIC delay time PORT a inbit b inbit c outbit ENDand gate ARCHITECTUREbehaveOFand gateISBEGINc aandbafter delay ENDbehave 第7章VHDL語言基礎(chǔ) 例 在電路中多次使用二輸入與門電路 但延遲時間不同 二輸入與門電路的VHDL程序 現(xiàn)在要求實現(xiàn)這樣一個設(shè)計 由三個二輸入與門電路組成下圖所示的四輸入與門功能 要求門1的延遲時間為5ns 門2的延遲時間為6ns 門2的延遲時間為7ns 在設(shè)計過程中通常遇到一些參數(shù)不確定的情況 參數(shù)是待定的 在模擬時 只要用GENERICMAP語句將待定參數(shù)初始化即可 22 ENTITYor3ISPORT a b c inbit q outbit ENDor3 ARCHITECTRUEbehaveOFor3ISCOMPONENTand gateGENERIC delay time PORT a b inbit c outbit ENDCOMPONENT SIGNALq1 q2 bit BEGINU1 and gateGENERICMAP 5ns PORTMAP a b q1 U2 and gateGENERICMAP 6ns PROTMAP c d q2 U3 and gateGENERICMAP 7ns PROTMAP q1 q2 q ENDbehave 第7章VHDL語言基礎(chǔ) 23 三 端口說明 1 作用是對設(shè)計實體與外部接口的描述 是設(shè)計實體和外部環(huán)境動態(tài)通信的通道 其功能對應(yīng)于電路圖符號的一個引腳 2 一般格式PORT 端口名 端口模式數(shù)據(jù)類型 端口名 端口模式數(shù)據(jù)類型 第7章VHDL語言基礎(chǔ) 24 三 端口說明 1 端口名稱是端口的標(biāo)識符 是賦予每個外部引腳的名稱由字母 數(shù)字和下劃線組成 其命名規(guī)則為 1 第一個字符必須是字母 2 下劃線不能連用 3 最后一個字符不能是下劃線 4 不區(qū)分大小寫 5 命名不能與保留字相同 如 不合法的例子 clk 8mclk data bus buffer data 第7章VHDL語言基礎(chǔ) 25 輸入IN 輸入信號的驅(qū)動源由外部向該設(shè)計實體內(nèi)進(jìn)行 主要用于時鐘輸入 控制輸入和單向的數(shù)據(jù)輸入 輸出OUT 允許數(shù)據(jù)流從實體內(nèi)部輸出 用于計數(shù)輸出 單方向數(shù)據(jù)輸出 設(shè)計實體產(chǎn)生的控制其他實體的信號等 緩沖BUFFER 允許內(nèi)部引用該端口的信號 既能用于輸出 也可用于反饋 只能連接內(nèi)部信號和具有緩沖模式的端口 雙向模式INOUT 可以代替IN OUT BUFFER 第7章VHDL語言基礎(chǔ) 2 端口模式 用來說明數(shù)據(jù) 信號通過該端口的傳輸方向 模式有IN OUT BUFFER INOUT 26 說明 1 雙向模式可以代替輸入 輸出和緩沖模式的任何一種 2 out 和 buffer 都可以定義輸出端口 圖 a 只能用于輸出 圖 b 構(gòu)造體內(nèi)部也要使用該信號時 只能定義成 buffer 其區(qū)別 3 數(shù)據(jù)類型 布爾型 boolean 位型 bit 位矢量型 bit vector 整數(shù)型 integer 枚舉型 物理類型等10種數(shù)據(jù)類型 在邏輯電路中用到兩種 bit 位 和bit vector 位向量 1 bit 為位邏輯數(shù)據(jù)類型 信號取值是邏輯值 1 和 0 2 bit vector 取值是一組二進(jìn)制位的值 如 8位數(shù)據(jù)總線數(shù)端口Port d0 d1 sel inbit q outbit bus outbit vector 7downto0 3 在VHDL程序中 設(shè)計人員常使用的數(shù)據(jù)類型為IEEE STD Logic 1164程序包所給定的 標(biāo)準(zhǔn)邏輯類型STD Logic STD Logic vector LibraryIEEE UseIEEE STD Logic 1164 all EntitymuisPort d0 d1 sel inSTD Logic q outSTD Logic bus outSTD Logic vector 7downto0 28 主要用于定義該設(shè)計實體接口中的公共信息 比如定義新的數(shù)據(jù)類型和常量定義等 四 實體說明部分 五 實體語句部分 是設(shè)計實體接口的共同部分 只能由如下并行語句構(gòu)成 并行斷言語句 并行過程調(diào)用語句和被動進(jìn)程語句等 這些語句應(yīng)該是被動語句 即在語句中不含有信號賦值 第7章VHDL語言基礎(chǔ) ENTITYexampleISPORT a b INSTD LOGIC c OUTSTD LOGIC TYPEcolourISARRAY 6downto0 ofSTD LOGIC ENDexample 實體舉例 ENTITYblack boxISGeneric constantwidth integer 7 PORT clk rst instd logic d instd logic vector widthdownto0 q outstd logic vector widthdownto0 co outstd logic ENDblack box 練習(xí) 編寫包含以下內(nèi)容的實體代碼 端口D為12位輸入總線 端口OE和CLK都是1位輸入 端口AD為12位雙向總線 端口A為12位輸出總線 端口INT是1位輸出 端口AS是一位輸出同時被用作內(nèi)部反饋 練習(xí)答案 Libraryieee Useieee std logic 1164 ALL Entitymy designisPORT d instd logic vector 11downto0 oe clk in std logic ad inoutstd logic vector 11downto0 a outstd logic vector 7downto0 int outstd logic as bufferstd logic Endmy design 32 一 結(jié)構(gòu)體的作用 描述了基本設(shè)計單元 實體 的結(jié)構(gòu) 行為 元件及內(nèi)部連接關(guān)系 也就是說它定義了設(shè)計實體的功能 規(guī)定了設(shè)計實體的數(shù)據(jù)流程 制定了實體內(nèi)部元件的連接關(guān)系 通過若干并行語句來描述設(shè)計實體的邏輯功能 行為描述 或內(nèi)部電路結(jié)構(gòu) 結(jié)構(gòu)描述 從而建立設(shè)計實體輸出與輸入之間的關(guān)系 一個設(shè)計實體可以有多個結(jié)構(gòu)體 7 3 3VHDL程序的結(jié)構(gòu)體 第7章VHDL語言基礎(chǔ) 33 二 結(jié)構(gòu)體的一般格式 ARCHITECTURE結(jié)構(gòu)體名OF實體名IS定義語句 內(nèi)部信號 常數(shù) 數(shù)據(jù)類型 函數(shù)定義BEGIN 并行處理語句 進(jìn)程語句 END結(jié)構(gòu)體名 第7章VHDL語言基礎(chǔ) ARCHITECTUREaOF entity nameISSIGNALsignal name STD LOGIC SIGNALsignal name STD LOGIC BEGINENDa 結(jié)構(gòu)體說明 并行處理語句 ProcessStatement ConcurrentProcedureCall ConcurrentSignalAssignment ConditionalSignalAssignment SelectedSignalAssignment ComponentInstantiationStatement GenerateStatement 35 1 結(jié)構(gòu)體命名結(jié)構(gòu)體名由設(shè)計者自行定義 OF后面的實體名指明了該結(jié)構(gòu)體所對應(yīng)的是哪個實體 由于一個設(shè)計有行為描述 數(shù)據(jù)流描述和結(jié)構(gòu)描述3種方式 一般建議用behave dataflow structure為結(jié)構(gòu)體命名 2 結(jié)構(gòu)體說明語句結(jié)構(gòu)體說明語句必須放在關(guān)鍵詞ARCHITECTURE和BEGIN之間 用于對結(jié)構(gòu)體內(nèi)部將要使用的信號 常數(shù) 數(shù)據(jù)類型 元件 函數(shù)和過程加以說明 最常見的是對內(nèi)部流動的信號的定義 但不能定義變量 實體說明中定義的信號是外部信號 而結(jié)構(gòu)體定義的信號為該結(jié)構(gòu)體的內(nèi)部信號 它只能用于這個結(jié)構(gòu)體中 結(jié)構(gòu)體中的信號定義和端口說明一樣 應(yīng)有信號名稱和數(shù)據(jù)類型定義 因為它是內(nèi)部連接用的信號 因此不需要方向說明 第7章VHDL語言基礎(chǔ) 36 3 結(jié)構(gòu)體功能描述語句結(jié)構(gòu)體功能描述語句位于BEGIN和END之間 具體地描述了構(gòu)造體的行為及其連接關(guān)系 結(jié)構(gòu)體的功能描述語句可以含有5種不同類型的并行語句 每一語句結(jié)構(gòu)內(nèi)部可以使用并行語句 也可以是順序語句 第7章VHDL語言基礎(chǔ) ENTITYhalf adderISPORT x y INSTD LOGIC s c OUTSTD LOGIC ENDhalf adder ARCHITECTUREdataflowOFhalf adderISBEGINs xxory c xandy ENDdataflow 37 并行處理語句 并行處理語句具體地描述了結(jié)構(gòu)體的行為和結(jié)構(gòu) 并行處理語句位于結(jié)構(gòu)體中begin和end之間 并行語句有五種類型 可以把它們看成結(jié)構(gòu)體的五種子結(jié)構(gòu) 這五種語句結(jié)構(gòu)本身是并行語句 但內(nèi)部可能含有并行運行的邏輯描述語句或順序運行的邏輯描述語句 如進(jìn)程內(nèi)部包含的即為順序語句 五種語句結(jié)構(gòu)分別為塊語句 進(jìn)程語句 信號賦值語句 子程序調(diào)用語句和元件例化語句 例 進(jìn)程 process 語句 進(jìn)程標(biāo)號 PROCESS 敏感信號表 is 進(jìn)程語句說明部分 BEGIN ENDPROCESS 進(jìn)程標(biāo)號 38 三 結(jié)構(gòu)體的四種描述形式 第7章VHDL語言基礎(chǔ) 1 行為描述形式2 數(shù)據(jù)流描述形式3 結(jié)構(gòu)描述形式4 混合描述形式 39 1 行為描述形式 類似于數(shù)字中的真值表 就是對系統(tǒng)數(shù)學(xué)模型的描述 常采用算術(shù)運算 關(guān)系運算和慣性延時等 主要用于系統(tǒng)數(shù)學(xué)模型的仿真或者是系統(tǒng)工作原理的仿真 其優(yōu)點是無須知道具體電路的結(jié)構(gòu) 只需要一組狀態(tài)來描述即可 即只描述所希望電路的功能或者電路行為 輸入輸出間轉(zhuǎn)換的行為 而沒有指明或涉及實現(xiàn)這些行為的硬件結(jié)構(gòu) 第7章VHDL語言基礎(chǔ) 40 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYmux21ISPORT a b INSTD LOGIC s INSTD LOGIC y OUTSTD LOGIC ENDmux21 ARCHITECTUREbehaveOFmux21ISBEGINPROCESS a b s BEGINIFs 0 THENy a ELSEy b ENDIF ENDPROCESS ENDbehave 第7章VHDL語言基礎(chǔ) 41 2 數(shù)據(jù)流描述形式 類似于數(shù)字中的邏輯表達(dá)式 也稱為寄存器傳輸描述形式 是對信號到信號的數(shù)據(jù)流的路徑形式進(jìn)行描述 因此要求設(shè)計者不但要對設(shè)計實體的功能實現(xiàn)有一定的了解 而且還需要對內(nèi)部的邏輯電路結(jié)構(gòu)有清楚的認(rèn)識 第7章VHDL語言基礎(chǔ) 42 2 數(shù)據(jù)流描述形式 類似于數(shù)字中的邏輯表達(dá)式 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYmux21ISPORT a b INSTD LOGIC s INSTD LOGIC y OUTSTD LOGIC ENDENTITYmux21 ARCHITECTUREdataflowOFmux21ISBEGINy aAND NOTs OR bANDs ENDARCHITECTUREdataflow 第7章VHDL語言基礎(chǔ) 43 第7章VHDL語言基礎(chǔ) 例 試用VHDL編寫用數(shù)據(jù)流描述結(jié)構(gòu)的全加器程序 ENTITYfull adderISPORT A B Cin INSTD LOGIC S Co OUTSTD LOGIC ENDfull adder ARCHITECTUREdataflowOFfull adderISSIGNALtmp1 tmp2 STD LOGIC BEGINtmp1 AxorB tmp2 tmp1andCin S tmp1xorCin Co tmp2or AandB ENDdataflow 44 3 結(jié)構(gòu)描述形式 類似于數(shù)字中的邏輯圖 就是在多層次的設(shè)計中 高層次的設(shè)計模塊調(diào)用低層次的設(shè)計模塊 或者直接用門電路設(shè)計單元來構(gòu)成一個復(fù)雜的邏輯電路的描述方法 具體實現(xiàn)就是在多層次的設(shè)計中 通過調(diào)用庫中的元件或者是已經(jīng)設(shè)計好的模塊來描述元件 或模塊 和元件 或模塊 之間的互連關(guān)系 就像網(wǎng)表一樣 注意 當(dāng)引用庫中不存在的元件時 必須首先進(jìn)行元件的創(chuàng)建 然后放在工作庫中 通過調(diào)用工作庫來引用元件 同時在引用元件時 要先在結(jié)構(gòu)體的說明部分進(jìn)行元件的說明 然后在使用元件時進(jìn)行元件例化 第7章VHDL語言基礎(chǔ) 45 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYand21ISPORT i0 i1 INSTD LOGIC q OUTSTD LOGIC ENDENTITYand21 ARCHITECTUREoneOFand21ISBEGINq i0ANDi1 ENDARCHITECTUREone 第7章VHDL語言基礎(chǔ) 46 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYor21ISPORT i0 i1 INSTD LOGIC q OUTSTD LOGIC ENDENTITYor21 ARCHITECTUREoneOFor21ISBEGINq i0ORi1 ENDARCHITECTUREone 第7章VHDL語言基礎(chǔ) 47 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYinv21ISPORT i0 INSTD LOGIC q OUTSTD LOGIC ENDENTITYinv21 ARCHITECTUREoneOFinv21ISBEGINq NOTi0 ENDARCHITECTUREone 第7章VHDL語言基礎(chǔ) 48 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYmux21ISPORT a b INSTD LOGIC s INSTD LOGIC y OUTSTD LOGIC ENDmux21 第7章VHDL語言基礎(chǔ) 49 ARCHITECTUREstructOFmux21ISCOMPONENTand21PORT i0 i1 INSTD LOGIC q OUTSTD LOGIC ENDCOMPONENT COMPONENTor21PORT i0 i1 INSTD LOGIC q OUTSTD LOGIC ENDCOMPONENT COMPONENTinv21PORT i0 INSTD LOGIC q OUTSTD LOGIC ENDCOMPONENT 第7章VHDL語言基礎(chǔ) 50 SIGNALtmp1 tmp2 tmp3 STD LOGIC BEGINu1 and21PORTMAP b s tmp1 u2 inv21PORTMAP s tmp2 u3 and21PORTMAP a tmp2 tmp3 u4 or21PORTMAP tmp1 tmp3 y ENDARCHITECTUREstruct 第7章VHDL語言基礎(chǔ) 51 4 混合描述方式就是指上述3種描述方式的任意組合 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYxor21ISPORT i0 i1 INSTD LOGIC q OUTSTD LOGIC ENDENTITYxor21 ARCHITECTUREbehaveOFxor21ISBEGINq i0XORi1 ENDARCHITECTUREbehave 第7章VHDL語言基礎(chǔ) 52 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYhalf adderISPORT a b INSTD LOGIC c s OUTSTD LOGIC ENDENTITYhalf adder ARCHITECTUREmixOFhalf adderISCOMPONENTxor21ISPORT i0 i1 INSTD LOGIC q OUTSTD LOGIC ENDCOMPONENT BEGINc aANDb u1 xor21PORTMAP a b s ENDARCHITECTUREmix 第7章VHDL語言基礎(chǔ) 53 在VHDL中 設(shè)計的實體和結(jié)構(gòu)體中定義的數(shù)據(jù)類型 常量 子程序說明和元件說明等部分只能在該設(shè)計實體中使用 而對其他設(shè)計實體是不可見的 程序包說明像C語言中include語句一樣 用來單純地羅列VHDL中所要用到的信號定義 常量定義 數(shù)據(jù)類型 子程序說明和元件說明等 是一個可編譯的設(shè)計單元 要使用程序包中的某些說明和定義 要用use語句說明 各種VHDL編譯系統(tǒng)都含有多個標(biāo)準(zhǔn)程序包 如Std Logic 1164和Standard程序包 用戶也可已自行設(shè)計程序包 保存到WORK下 7 3 4VHDL程序的程序包 54 程序包由兩個獨立的單元組成 程序包說明部分和程序包包體部分構(gòu)成 1 程序包說明部分的一般格式 PACKAGE程序包名IS說明語句END 程序包名 其中說明語句為 數(shù)據(jù)類型說明 常量說明 子程序說明 信號定義及元件說明等 2 程序包體單元的一般格式 PACKAGEBODY程序包名IS包體語句END 程序包名 第7章VHDL語言基礎(chǔ) 55 PACKAGEfunISSUBTYPEsegmentISBIT Vector 0to6 TYPEBCDISRANGE0to9 ENDfun ENTITYdecoderISPORT INPUT BCD DRIVE OUTSEGMENT ENDdecoder ARCHITECTUREartOFdecoderISBEGINWITHINPUTSELECT DRIVE B 1111110 WHEN0 B 0110000 WHEN1 B 1101101 WHEN2 B 1111001 WHEN3 B 0110011 WHEN4 B 1011011 WHEN5 B 1011111 WHEN6 B 1110000 WHEN7 B 1111111 WHEN8 B 1111011 WHEN9 B 0000000 WHENOTHERS ENDart 例 在現(xiàn)行WORK庫中定義程序包并立即使用實例 第7章VHDL語言基礎(chǔ) 56 幾種應(yīng)用較廣的程序包 1 Standard預(yù)先在std庫中編譯 主要定義了布爾類型 bit類型 character類型 出錯級別 實數(shù)類型 整數(shù)類型 時間類型 延遲長度子類型 自然數(shù)子類型 正整數(shù)子類型 string類型 bit vector子類型 文件打開方式類型和文件打開狀態(tài)類型 對所有設(shè)計模塊可見 2 textio預(yù)先在std庫中編譯 定義了line類型 text類型 side類型 操作寬度width子類型 文件input 文件output readline過程 對應(yīng)于不同數(shù)據(jù)類型的read過程 writeline過程和對應(yīng)于不同數(shù)據(jù)類型的write過程 對所有設(shè)計模塊都不可見 使用時要進(jìn)行說明 第7章VHDL語言基礎(chǔ) 57 3 std logic 1164預(yù)先在ieee庫中編譯 是使用最廣泛的程序包 定義了設(shè)計人員長采用的一些數(shù)據(jù)類型和函數(shù) 定義了std ulogic類型 std ulogic vector類型 std logic子類型 std logic vector類型 決斷函數(shù)resolved X01Z子類型 UX01子類型 UX01Z子類型 對應(yīng)于不同數(shù)據(jù)類型的and nand or nor xor xnor not函數(shù) 對應(yīng)于不同數(shù)據(jù)類型的To bot To bitvector To stdulogic To stdlogicvector To stdulogicvector To X01 To X01Z To UX01轉(zhuǎn)換函數(shù) 上升沿函數(shù)rising edge 下降沿函數(shù)falling edge和對應(yīng)于不同類型的Is X函數(shù) 對所有設(shè)計模塊都不可見 使用時要進(jìn)行說明 第7章VHDL語言基礎(chǔ) 58 4 numeric std已被定義為標(biāo)準(zhǔn)程序包 定義了用于綜合的數(shù)據(jù)類型和算術(shù)函數(shù) 定義了兩種數(shù)據(jù)類型 unsigned和signed 其中unsigned表示無符號的位矢量 signed表示帶符號的位矢量 其最左端是最高位 還含有所有unsigned和signed類型的重載算術(shù)運算 還含有一些有用的類型轉(zhuǎn)換函數(shù) 時鐘檢測函數(shù)和其他一些使用的函數(shù) 5 numeric bit與程序包numeric std基本相同 不同之處在于它的基本元素類型是bit 而不是std logic 第7章VHDL語言基礎(chǔ) 59 配置語句用于描述各種設(shè)計實體和元件之間的連接關(guān)系以及設(shè)計實體和結(jié)構(gòu)體之間的連接關(guān)系 設(shè)計者可以利用這種配置語句來選擇不同的結(jié)構(gòu)體 使其與要設(shè)計的實體相對應(yīng) 仿真某一時實體時 可以利用配置來選擇不同的結(jié)構(gòu)體 進(jìn)行性能對比實驗以得到性能最佳的結(jié)構(gòu)體 例如 要設(shè)計一個二輸入四輸出的譯碼器 如果一種結(jié)構(gòu)中的基本元件采用反相器和三輸入與門 而另一種結(jié)構(gòu)中的基本元件都采用與非門 它們各自的結(jié)構(gòu)體是不一樣的 并且放在各自不同的庫中 要設(shè)計譯碼器就可以利用配置語句實現(xiàn)對兩種不同的結(jié)構(gòu)體的選擇 7 3 4配置 第7章VHDL語言基礎(chǔ) 60 1 默認(rèn)配置配置語句的基本格式 Configurationofis 語句說明 End 配置語句根據(jù)不同的情況 其說明語句有簡有繁 最簡單的缺省配置格式 ConfigurationofisForEndfor End 教材中128頁例題 默認(rèn)配置只能用來選擇不含有任何塊語句和元件的結(jié)構(gòu)體 第7章VHDL語言基礎(chǔ) 61 Libraryieee Useieee std logic 1164 all Entityexampleisport a b instd logic y outstd logic Endexample Architectureand2 arcofexampleisBeginprocess a b variablecomb std vector 1downto0 Begincomb a Architectureor2 arcofexampleisBeginprocess a b variablecomb std vector 1downto0 Begincomb a 第7章VHDL語言基礎(chǔ) 62 Architecturexor2 arcofexampleisBeginprocess a b variablecomb std vector 1downto0 Begincomb a Architecturenor2 arcofexampleisBeginprocess a b variablecomb std vector 1downto0 Begincomb a 第7章VHDL語言基礎(chǔ) 63 Architecturenand2 arcofexampleisBeginprocess a b variablecomb std vector 1downto0 Begincomb a 第7章VHDL語言基礎(chǔ) 64 Configurationcfg1ofexampleisforand2 arcendfor Endcfg1 Configurationcfg2ofexampleisforor2 arcendfor Endcfg2 Configurationcfg3ofexampleisfornand2 arcendfor Endcfg3 Configurationcfg4ofexampleisfornor2 arcendfor Endcfg4 Configurationcfg5ofexampleisforxor2 arcendfor Endcfg5 配置語句cfg1將進(jìn)行邏輯與操作的結(jié)構(gòu)體配置給實體 配置語句cfg2將進(jìn)行邏輯或操作的結(jié)構(gòu)體配置給實體 第7章VHDL語言基礎(chǔ) 65 2 元件配置 為了避免混淆 需要給出所說明元件屬于哪一個設(shè)計庫里的哪一個設(shè)計實體 以及設(shè)計實體所對應(yīng)的是哪一個結(jié)構(gòu)體 低級的配置實體 結(jié)構(gòu)體對的配置 第7章VHDL語言基礎(chǔ) 66 基本書寫結(jié)構(gòu) CONFIGURATION配置名OF實體名ISFOR選配結(jié)構(gòu)體名FOR元件例化標(biāo)號名 元件名USECONFIGURATION庫名 元件配置名 ENDFOR FOR元件例化標(biāo)號名 元件名USECONFIGURATION庫名 元件配置名 ENDFOR ENDFOREND配置名 注意 所規(guī)定的低級配置一定要在當(dāng)前配置庫中已經(jīng)存在時才能編譯 低級的配置 第7章VHDL語言基礎(chǔ) 67 ARCHITECTUREstructureOFfull adderISCOMPONENTor2PORT a b INstd logic c OUTstd logic ENDCOMPONENT COMPONENTand2PORT a b INstd logic c OUTstd logic ENDCOMPONENT COMPONENTxor2PORT a b INstd logic c OUTstd logic ENDCOMPONENT SIGNALtmp1 tmp2 tmp3 std logic BEGINU1 xor2PORTMAP a b tmp1 例題 全加器的實現(xiàn)LIBRARYIEEE USEIEEE sti logic 1164 all ENTITYfull adderISPORT a b Cin INstd logic Co S OUTstd logic ENDfull adder 第7章VHDL語言基礎(chǔ) 68 U2 and2PORTMAP tmp1 Cin tmp2 U3 xor2PORTMAP tmp1 Cin S U4 and2PORTMAP a b tmp3 U5 or2PORTMAP tmp2 tmp3 Co ENDsturcture CONFIGURATIONfull adder cfgOFfull adderISFORstructureFORU1 U3 xor2USECONFIGURATIONwork xor2 cfg ENDFOR FORU2 U4 and2USECONFIGURATIONwork and2 cfg ENDFOR FORU5 or2USECONFIGURATIONwork or2 cfg ENDFOR ENDFOR Endfull adder cfg 元件例化標(biāo)名號為U1和U3所指定的是元件庫work中的設(shè)計實體xor2 其結(jié)構(gòu)體為低級配置xor2 cfg指定的結(jié)構(gòu)體 第7章VHDL語言基礎(chǔ) 69 實體 結(jié)構(gòu)體對的配置 基本書寫結(jié)構(gòu) CONFIGURATION配置名OF實體名ISFOR選配結(jié)構(gòu)體名FOR元件調(diào)用標(biāo)號名 元件名USEENTITY庫名 實體名 結(jié)構(gòu)體名 ENDFOR FOR元件調(diào)用標(biāo)號名 元件名USEENTITY庫名 實體名 結(jié)構(gòu)體名 ENDFOR ENDFOREND配置名 注意 所規(guī)定的元件實體和其對應(yīng)的結(jié)構(gòu)體一定要在當(dāng)前的配置庫中已經(jīng)存在 否則編譯會出錯 就是在配置的過程中為每一個元件直接指定實體的結(jié)構(gòu)體 而不是指定該實體的低級配置 第7章VHDL語言基礎(chǔ) 70 CONFIGURATIONfull adder cfgOFfull adderISFORstuctureFORU1 U3 xor2USEENTITYwork xor2 xor2 arc ENDFOR FORU2 U4 and2USEENTITYwork and2 and2 arc ENDFOR FORU5 or2USEENTITYwork or2 or2 arc ENDFOR ENDFOR ENDfull adder cfg 第7章VHDL語言基礎(chǔ) 71 3 塊的配置 要指明元件所在的塊 塊配置在結(jié)構(gòu)體和元件之間分出另一層次 若對某個含有塊語句的結(jié)構(gòu)體進(jìn)行文件配置時 必須指明是哪一個塊的配置 與元件配置相同 塊配置也有兩種不同的形式 低級的配置形式和實體 結(jié)構(gòu)體對的配置形式 第7章VHDL語言基礎(chǔ) 72 低級塊配置格式 CONFIGURATION配置名OF實體名ISFOR選配結(jié)構(gòu)體名FOR塊名FOR元件調(diào)用標(biāo)號名 元件名USECONFIGURATION庫名 元件配置名 ENDFOR ENDFOR FOR塊名FOR元件調(diào)用標(biāo)號名 元件名USECONFIGURATION庫名 元件配置名 ENDFOR ENDFOR ENDFOR END配置名 73 實體 結(jié)構(gòu)體對的塊配置格式 CONFIGURATION配置名OF實體名ISFOR選配結(jié)構(gòu)體名FOR塊名FOR元件調(diào)用標(biāo)號名 元件名USEENTITY庫名 實體名 結(jié)構(gòu)體名 ENDFOR ENDFOR FOR塊名FOR元件調(diào)用標(biāo)號名 元件名USEENTITY庫名 實體名 結(jié)構(gòu)體名 ENDFOR ENDFOR ENDFOR END配置名 74 BEGINsum BLOCKBEGINU1 xor2PORTMAP a b tmp1 U2 xor2PORTMAP tmp1 Cin S ENDBLOCKsum carry BLOCKBEGINU3 or2PORTMAP tmp2 tmp3 Co middle BLCOKBEGINU4 and2PORTMAP tmp1 Cin tmp2 U5 and2PORTMAP a b tmp3 ENDBLOCKmiddle ENDBLOCKcarry ENDstructure 第7章VHDL語言基礎(chǔ) 75 FORstructureFORsumFORall xor2USECONFIGURATIONwork xor2 cfg ENDFOR ENDFOR FORcarryFORU3 or2USECONFIGURATIONwork or2 cfg ENDFOR FORmiddleFORall and2USECONFIGURATIONwork and2 cfg ENDFOR ENDFOR ENDFOR ENDFOR ENDfull adder cfg CONFIGURATIONfull adder cfgOFfull adderIS 第7章VHDL語言基礎(chǔ) 76 4 結(jié)構(gòu)體的配置 結(jié)構(gòu)體配置也是對結(jié)構(gòu)體中所引用的元件進(jìn)行配置 但是這種配置與元件配置有很大的區(qū)別 元件配置是使用專門的配置語句來完成的 配置語句與元件所在的結(jié)構(gòu)體是分開的 而結(jié)構(gòu)體配置則是放在結(jié)構(gòu)體的說明語句部分 它是一種配置說明不需要與元件所在的結(jié)構(gòu)體分開的配置類型 低級配置格式 for useconfiguation 實體 結(jié)構(gòu)體對配置格式 for useentity 第7章VHDL語言基礎(chǔ)- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- VHDL 語言 程序結(jié)構(gòu)
鏈接地址:http://www.3dchina-expo.com/p-8628423.html