VHDL語(yǔ)言的程序結(jié)構(gòu).ppt
《VHDL語(yǔ)言的程序結(jié)構(gòu).ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《VHDL語(yǔ)言的程序結(jié)構(gòu).ppt(76頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1 7 2VHDL語(yǔ)言的程序結(jié)構(gòu) 第7章VHDL語(yǔ)言基礎(chǔ) 2 1 USE定義區(qū) 定義元件庫(kù) 2 PACKAGE定義區(qū) 定義使用哪些自定義元件庫(kù) 3 ENTITY定義區(qū) 定義電路實(shí)體的外觀 I O接口的規(guī)格 4 ARCHITECTRUE定義區(qū) 描述電路內(nèi)部的功能 說(shuō)明電路執(zhí)行什么動(dòng)作或功能 5 CONFIGURATION定義區(qū) 描述各種設(shè)計(jì)實(shí)體和元件之間的連接關(guān)系以及設(shè)計(jì)實(shí)體和結(jié)構(gòu)體之間的連接關(guān)系 第7章VHDL語(yǔ)言基礎(chǔ) 3 VHDL基本結(jié)構(gòu) 第7章VHDL語(yǔ)言基礎(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說(shuō)明 自定義元件庫(kù) 定義一個(gè)實(shí)體 描述輸入輸出 信號(hào) 結(jié)構(gòu)體說(shuō)明 4 1 庫(kù) Library 庫(kù)是經(jīng)編譯后的數(shù)據(jù)的集合 存放包集合定義 實(shí)體定義 結(jié)構(gòu)體定義和配置定義 庫(kù)的功能類似于UNIX和MS DOS操作系統(tǒng)中的目錄 庫(kù)中存放設(shè)計(jì)的數(shù)據(jù) 在VHDL中 庫(kù)的說(shuō)明總放在設(shè)計(jì)單元的最前面 庫(kù)中的各個(gè)設(shè)計(jì)單元可以用作進(jìn)行其他設(shè)計(jì)的資源 一個(gè)設(shè)計(jì)可以使用多個(gè)庫(kù)中的設(shè)計(jì)單元 7 2 1庫(kù) 第7章VHDL語(yǔ)言基礎(chǔ) 5 1 庫(kù)的使用首先在設(shè)計(jì)的開頭說(shuō)明要引用的庫(kù) 然后使用use子句指明要使用庫(kù)中的哪一個(gè)設(shè)計(jì)單元 其書寫格式為 Library庫(kù)名 Use庫(kù)名 程序包名 all 其中 程序包名就是實(shí)際設(shè)計(jì)要使用的庫(kù)中的設(shè)計(jì)單元 all表示使用程序包中的所有項(xiàng)目 第7章VHDL語(yǔ)言基礎(chǔ) 6 引用庫(kù)和程序包中的說(shuō)明語(yǔ)句有以下4種形式 假定設(shè)計(jì)實(shí)體中的信號(hào)類型為std logic 其類型說(shuō)明在ieee庫(kù)的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 庫(kù)說(shuō)明 程序包 數(shù)據(jù)類型 第7章VHDL語(yǔ)言基礎(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語(yǔ)言基礎(chǔ) 8 引用庫(kù)和程序包中的說(shuō)明語(yǔ)句有以下4種形式 假定設(shè)計(jì)實(shí)體中的信號(hào)類型為std logic 其類型說(shuō)明在ieee庫(kù)的std logic 1164程序包中定義 形式4 Libraryieee Useieee std logic 1164 std logic Entityand2isPort a instd logic b instd logic c outstd logic Endand2 第7章VHDL語(yǔ)言基礎(chǔ) 9 2 庫(kù)的種類VHDL提供的庫(kù)可分為兩大類 設(shè)計(jì)庫(kù) 對(duì)當(dāng)前設(shè)計(jì)是永遠(yuǎn)可見的 不需在程序開頭對(duì)它們進(jìn)行說(shuō)明 一般包括std庫(kù)和work庫(kù) 資源庫(kù) 用來(lái)存放常規(guī)元件和常用模塊的庫(kù) 在使用時(shí)要進(jìn)行說(shuō)明 資源庫(kù)的內(nèi)容與廠商直接相關(guān) 現(xiàn)在的VHDL廠商和EDA工具廠商都有自己的資源庫(kù) 其中含有廠商自定義的程序包 應(yīng)用最廣泛的資源庫(kù)是ieee庫(kù) vital庫(kù)和用戶自定義的庫(kù) 第7章VHDL語(yǔ)言基礎(chǔ) 10 1 std庫(kù)是VHDL的標(biāo)準(zhǔn)庫(kù) 包含程序包standard和textio 程序包standard中定義了bit bit vector character和time等數(shù)據(jù)類型 程序包textio主要包含了對(duì)文本文件進(jìn)行讀寫操作的過(guò)程和函數(shù) 注意 使用程序包textio時(shí)要對(duì)庫(kù)和程序包進(jìn)行說(shuō)明 Librarystd Usestd textio all 使用程序包standard時(shí) 由于VHDL規(guī)定standard程序包總是可見的 因此不必進(jìn)行說(shuō)明 第7章VHDL語(yǔ)言基礎(chǔ) 11 2 work庫(kù) 是VHDL的工作庫(kù) 在編譯一VHDL的時(shí)候 默認(rèn)其保存在work庫(kù)中 因此work庫(kù)可以用來(lái)臨時(shí)保存設(shè)計(jì)人員以前編譯過(guò)的元件和模塊 也可以通過(guò)該庫(kù)來(lái)使用其中的元件和模塊 VHDL標(biāo)準(zhǔn)中規(guī)定了work庫(kù)也是永遠(yuǎn)可見的 因此在使用work庫(kù)的時(shí)候不需要對(duì)它進(jìn)行說(shuō)明 第7章VHDL語(yǔ)言基礎(chǔ) 12 3 ieee庫(kù) 是應(yīng)用最廣泛的資源庫(kù) 主要包括程序包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等 雖沒(méi)得到ieee標(biāo)準(zhǔn)化組織的認(rèn)可 但仍然定義在ieee庫(kù)中 使用ieee庫(kù)時(shí)必須進(jìn)行說(shuō)明 Libraryieee Useieee std logic 1164 all 第7章VHDL語(yǔ)言基礎(chǔ) 13 4 vital庫(kù) 是應(yīng)用比較廣泛的資源庫(kù) 主要包括程序包vital timing和vital primitives 其中vital timing是一個(gè)時(shí)序程序包 vital primitives是一個(gè)基本元件程序包 它們可以提高VHDL門級(jí)時(shí)序模擬精度 5 用戶自定義庫(kù) 用來(lái)存放設(shè)計(jì)中共用的一些程序包 這是設(shè)計(jì)人員自己建立的資源庫(kù) 可以提高設(shè)計(jì)的靈活性 在VHDL的開頭要對(duì)庫(kù)進(jìn)行說(shuō)明 第7章VHDL語(yǔ)言基礎(chǔ) 14 第7章VHDL語(yǔ)言基礎(chǔ) VHDL設(shè)計(jì)中的基本單元就是設(shè)計(jì)實(shí)體 它用以描述完整系統(tǒng) 電路板 芯片 邏輯單元或門電路 設(shè)計(jì)實(shí)體的組成部分 實(shí)體說(shuō)明 EntityDeclaration 描述一個(gè)設(shè)計(jì)的外貌 即對(duì)外的輸入輸出接口以及一些用于結(jié)構(gòu)體的參數(shù)定義 結(jié)構(gòu)體或構(gòu)造體 ArchitectureBody 描述的是設(shè)計(jì)的行為和結(jié)構(gòu) 指定輸入和輸出之間的行為 7 2 2VHDL程序的實(shí)體 15 設(shè)計(jì)實(shí)體 實(shí)體說(shuō)明和結(jié)構(gòu)體之間的關(guān)系 設(shè)計(jì)實(shí)體 結(jié)構(gòu)體1 結(jié)構(gòu)體2 第7章VHDL語(yǔ)言基礎(chǔ) 例 一個(gè)二輸入門電路的VHDL描述 Entityand gateisPort a inbit b inbit c outbit Endand gate Architecturebehaveofand gateisBeginc aandb Endbehave 保留字 實(shí)體名 實(shí)體說(shuō)明 結(jié)構(gòu)體 說(shuō)明 VHDL是不區(qū)分大小寫的 可根據(jù)習(xí)慣書寫 17 2 一般格式ENTITY實(shí)體名IS GENERIC 類型表 PORT 端口表 實(shí)體說(shuō)明部分 BEGIN實(shí)體語(yǔ)句部分 END ENTITY 實(shí)體名 一 實(shí)體說(shuō)明 ENTITYor gateISGENERIC delay time 1ns PORT a inbit b inbit c outbit ENDor gate 第7章VHDL語(yǔ)言基礎(chǔ) 1 功能 描述設(shè)計(jì)模塊的輸入 輸出信號(hào)或引腳 并給出設(shè)計(jì)模塊與外界的接口 實(shí)體類似一個(gè) 黑盒 實(shí)體描述了 黑盒 的輸入輸出口 18 實(shí)體名實(shí)際上是器件名 最好根據(jù)相應(yīng)的電路功能確定 如4位2進(jìn)制計(jì)數(shù)器用counter4b 8位加法器用add8b 3 8譯碼器用ym 38 實(shí)體名必須與文件名相同 否則無(wú)法編譯 實(shí)體名不能用工具庫(kù)中定義好的元件名 實(shí)體名不能用中文 也不能用數(shù)字開頭 實(shí)體名 第7章VHDL語(yǔ)言基礎(chǔ) 19 二 類型說(shuō)明 1 作用為設(shè)計(jì)實(shí)體和其外部環(huán)境通信的靜態(tài)信息提供通道 可以定義端口的大小 實(shí)體中元件的數(shù)目以及實(shí)體的定時(shí)特性等 2 一般格式GENERIC CONSTANT 名字表 IN 子類型標(biāo)識(shí) 靜態(tài)表達(dá)式 第7章VHDL語(yǔ)言基礎(chǔ) ENTITYnand2ISGENERIC t rise time 1ns t fall time 1ns PORT a inbit b inbit c outbit ENDnand2 20 使用類屬參數(shù)說(shuō)明語(yǔ)句易于使設(shè)計(jì)具有通用性 ENTITYand gateISGENERIC delay time PORT a inbit b inbit c outbit ENDand gate ARCHITECTUREbehaveOFand gateISBEGINc aandbafter delay ENDbehave 第7章VHDL語(yǔ)言基礎(chǔ) 例 在電路中多次使用二輸入與門電路 但延遲時(shí)間不同 二輸入與門電路的VHDL程序 現(xiàn)在要求實(shí)現(xiàn)這樣一個(gè)設(shè)計(jì) 由三個(gè)二輸入與門電路組成下圖所示的四輸入與門功能 要求門1的延遲時(shí)間為5ns 門2的延遲時(shí)間為6ns 門2的延遲時(shí)間為7ns 在設(shè)計(jì)過(guò)程中通常遇到一些參數(shù)不確定的情況 參數(shù)是待定的 在模擬時(shí) 只要用GENERICMAP語(yǔ)句將待定參數(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語(yǔ)言基礎(chǔ) 23 三 端口說(shuō)明 1 作用是對(duì)設(shè)計(jì)實(shí)體與外部接口的描述 是設(shè)計(jì)實(shí)體和外部環(huán)境動(dòng)態(tài)通信的通道 其功能對(duì)應(yīng)于電路圖符號(hào)的一個(gè)引腳 2 一般格式PORT 端口名 端口模式數(shù)據(jù)類型 端口名 端口模式數(shù)據(jù)類型 第7章VHDL語(yǔ)言基礎(chǔ) 24 三 端口說(shuō)明 1 端口名稱是端口的標(biāo)識(shí)符 是賦予每個(gè)外部引腳的名稱由字母 數(shù)字和下劃線組成 其命名規(guī)則為 1 第一個(gè)字符必須是字母 2 下劃線不能連用 3 最后一個(gè)字符不能是下劃線 4 不區(qū)分大小寫 5 命名不能與保留字相同 如 不合法的例子 clk 8mclk data bus buffer data 第7章VHDL語(yǔ)言基礎(chǔ) 25 輸入IN 輸入信號(hào)的驅(qū)動(dòng)源由外部向該設(shè)計(jì)實(shí)體內(nèi)進(jìn)行 主要用于時(shí)鐘輸入 控制輸入和單向的數(shù)據(jù)輸入 輸出OUT 允許數(shù)據(jù)流從實(shí)體內(nèi)部輸出 用于計(jì)數(shù)輸出 單方向數(shù)據(jù)輸出 設(shè)計(jì)實(shí)體產(chǎn)生的控制其他實(shí)體的信號(hào)等 緩沖BUFFER 允許內(nèi)部引用該端口的信號(hào) 既能用于輸出 也可用于反饋 只能連接內(nèi)部信號(hào)和具有緩沖模式的端口 雙向模式INOUT 可以代替IN OUT BUFFER 第7章VHDL語(yǔ)言基礎(chǔ) 2 端口模式 用來(lái)說(shuō)明數(shù)據(jù) 信號(hào)通過(guò)該端口的傳輸方向 模式有IN OUT BUFFER INOUT 26 說(shuō)明 1 雙向模式可以代替輸入 輸出和緩沖模式的任何一種 2 out 和 buffer 都可以定義輸出端口 圖 a 只能用于輸出 圖 b 構(gòu)造體內(nèi)部也要使用該信號(hào)時(shí) 只能定義成 buffer 其區(qū)別 3 數(shù)據(jù)類型 布爾型 boolean 位型 bit 位矢量型 bit vector 整數(shù)型 integer 枚舉型 物理類型等10種數(shù)據(jù)類型 在邏輯電路中用到兩種 bit 位 和bit vector 位向量 1 bit 為位邏輯數(shù)據(jù)類型 信號(hào)取值是邏輯值 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è)計(jì)人員常使用的數(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è)計(jì)實(shí)體接口中的公共信息 比如定義新的數(shù)據(jù)類型和常量定義等 四 實(shí)體說(shuō)明部分 五 實(shí)體語(yǔ)句部分 是設(shè)計(jì)實(shí)體接口的共同部分 只能由如下并行語(yǔ)句構(gòu)成 并行斷言語(yǔ)句 并行過(guò)程調(diào)用語(yǔ)句和被動(dòng)進(jìn)程語(yǔ)句等 這些語(yǔ)句應(yīng)該是被動(dòng)語(yǔ)句 即在語(yǔ)句中不含有信號(hào)賦值 第7章VHDL語(yǔ)言基礎(chǔ) ENTITYexampleISPORT a b INSTD LOGIC c OUTSTD LOGIC TYPEcolourISARRAY 6downto0 ofSTD LOGIC ENDexample 實(shí)體舉例 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)容的實(shí)體代碼 端口D為12位輸入總線 端口OE和CLK都是1位輸入 端口AD為12位雙向總線 端口A為12位輸出總線 端口INT是1位輸出 端口AS是一位輸出同時(shí)被用作內(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è)計(jì)單元 實(shí)體 的結(jié)構(gòu) 行為 元件及內(nèi)部連接關(guān)系 也就是說(shuō)它定義了設(shè)計(jì)實(shí)體的功能 規(guī)定了設(shè)計(jì)實(shí)體的數(shù)據(jù)流程 制定了實(shí)體內(nèi)部元件的連接關(guān)系 通過(guò)若干并行語(yǔ)句來(lái)描述設(shè)計(jì)實(shí)體的邏輯功能 行為描述 或內(nèi)部電路結(jié)構(gòu) 結(jié)構(gòu)描述 從而建立設(shè)計(jì)實(shí)體輸出與輸入之間的關(guān)系 一個(gè)設(shè)計(jì)實(shí)體可以有多個(gè)結(jié)構(gòu)體 7 3 3VHDL程序的結(jié)構(gòu)體 第7章VHDL語(yǔ)言基礎(chǔ) 33 二 結(jié)構(gòu)體的一般格式 ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS定義語(yǔ)句 內(nèi)部信號(hào) 常數(shù) 數(shù)據(jù)類型 函數(shù)定義BEGIN 并行處理語(yǔ)句 進(jìn)程語(yǔ)句 END結(jié)構(gòu)體名 第7章VHDL語(yǔ)言基礎(chǔ) ARCHITECTUREaOF entity nameISSIGNALsignal name STD LOGIC SIGNALsignal name STD LOGIC BEGINENDa 結(jié)構(gòu)體說(shuō)明 并行處理語(yǔ)句 ProcessStatement ConcurrentProcedureCall ConcurrentSignalAssignment ConditionalSignalAssignment SelectedSignalAssignment ComponentInstantiationStatement GenerateStatement 35 1 結(jié)構(gòu)體命名結(jié)構(gòu)體名由設(shè)計(jì)者自行定義 OF后面的實(shí)體名指明了該結(jié)構(gòu)體所對(duì)應(yīng)的是哪個(gè)實(shí)體 由于一個(gè)設(shè)計(jì)有行為描述 數(shù)據(jù)流描述和結(jié)構(gòu)描述3種方式 一般建議用behave dataflow structure為結(jié)構(gòu)體命名 2 結(jié)構(gòu)體說(shuō)明語(yǔ)句結(jié)構(gòu)體說(shuō)明語(yǔ)句必須放在關(guān)鍵詞ARCHITECTURE和BEGIN之間 用于對(duì)結(jié)構(gòu)體內(nèi)部將要使用的信號(hào) 常數(shù) 數(shù)據(jù)類型 元件 函數(shù)和過(guò)程加以說(shuō)明 最常見的是對(duì)內(nèi)部流動(dòng)的信號(hào)的定義 但不能定義變量 實(shí)體說(shuō)明中定義的信號(hào)是外部信號(hào) 而結(jié)構(gòu)體定義的信號(hào)為該結(jié)構(gòu)體的內(nèi)部信號(hào) 它只能用于這個(gè)結(jié)構(gòu)體中 結(jié)構(gòu)體中的信號(hào)定義和端口說(shuō)明一樣 應(yīng)有信號(hào)名稱和數(shù)據(jù)類型定義 因?yàn)樗莾?nèi)部連接用的信號(hào) 因此不需要方向說(shuō)明 第7章VHDL語(yǔ)言基礎(chǔ) 36 3 結(jié)構(gòu)體功能描述語(yǔ)句結(jié)構(gòu)體功能描述語(yǔ)句位于BEGIN和END之間 具體地描述了構(gòu)造體的行為及其連接關(guān)系 結(jié)構(gòu)體的功能描述語(yǔ)句可以含有5種不同類型的并行語(yǔ)句 每一語(yǔ)句結(jié)構(gòu)內(nèi)部可以使用并行語(yǔ)句 也可以是順序語(yǔ)句 第7章VHDL語(yǔ)言基礎(chǔ) ENTITYhalf adderISPORT x y INSTD LOGIC s c OUTSTD LOGIC ENDhalf adder ARCHITECTUREdataflowOFhalf adderISBEGINs xxory c xandy ENDdataflow 37 并行處理語(yǔ)句 并行處理語(yǔ)句具體地描述了結(jié)構(gòu)體的行為和結(jié)構(gòu) 并行處理語(yǔ)句位于結(jié)構(gòu)體中begin和end之間 并行語(yǔ)句有五種類型 可以把它們看成結(jié)構(gòu)體的五種子結(jié)構(gòu) 這五種語(yǔ)句結(jié)構(gòu)本身是并行語(yǔ)句 但內(nèi)部可能含有并行運(yùn)行的邏輯描述語(yǔ)句或順序運(yùn)行的邏輯描述語(yǔ)句 如進(jìn)程內(nèi)部包含的即為順序語(yǔ)句 五種語(yǔ)句結(jié)構(gòu)分別為塊語(yǔ)句 進(jìn)程語(yǔ)句 信號(hào)賦值語(yǔ)句 子程序調(diào)用語(yǔ)句和元件例化語(yǔ)句 例 進(jìn)程 process 語(yǔ)句 進(jìn)程標(biāo)號(hào) PROCESS 敏感信號(hào)表 is 進(jìn)程語(yǔ)句說(shuō)明部分 BEGIN ENDPROCESS 進(jìn)程標(biāo)號(hào) 38 三 結(jié)構(gòu)體的四種描述形式 第7章VHDL語(yǔ)言基礎(chǔ) 1 行為描述形式2 數(shù)據(jù)流描述形式3 結(jié)構(gòu)描述形式4 混合描述形式 39 1 行為描述形式 類似于數(shù)字中的真值表 就是對(duì)系統(tǒng)數(shù)學(xué)模型的描述 常采用算術(shù)運(yùn)算 關(guān)系運(yùn)算和慣性延時(shí)等 主要用于系統(tǒng)數(shù)學(xué)模型的仿真或者是系統(tǒng)工作原理的仿真 其優(yōu)點(diǎn)是無(wú)須知道具體電路的結(jié)構(gòu) 只需要一組狀態(tài)來(lái)描述即可 即只描述所希望電路的功能或者電路行為 輸入輸出間轉(zhuǎn)換的行為 而沒(méi)有指明或涉及實(shí)現(xiàn)這些行為的硬件結(jié)構(gòu) 第7章VHDL語(yǔ)言基礎(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語(yǔ)言基礎(chǔ) 41 2 數(shù)據(jù)流描述形式 類似于數(shù)字中的邏輯表達(dá)式 也稱為寄存器傳輸描述形式 是對(duì)信號(hào)到信號(hào)的數(shù)據(jù)流的路徑形式進(jìn)行描述 因此要求設(shè)計(jì)者不但要對(duì)設(shè)計(jì)實(shí)體的功能實(shí)現(xiàn)有一定的了解 而且還需要對(duì)內(nèi)部的邏輯電路結(jié)構(gòu)有清楚的認(rèn)識(shí) 第7章VHDL語(yǔ)言基礎(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語(yǔ)言基礎(chǔ) 43 第7章VHDL語(yǔ)言基礎(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è)計(jì)中 高層次的設(shè)計(jì)模塊調(diào)用低層次的設(shè)計(jì)模塊 或者直接用門電路設(shè)計(jì)單元來(lái)構(gòu)成一個(gè)復(fù)雜的邏輯電路的描述方法 具體實(shí)現(xiàn)就是在多層次的設(shè)計(jì)中 通過(guò)調(diào)用庫(kù)中的元件或者是已經(jīng)設(shè)計(jì)好的模塊來(lái)描述元件 或模塊 和元件 或模塊 之間的互連關(guān)系 就像網(wǎng)表一樣 注意 當(dāng)引用庫(kù)中不存在的元件時(shí) 必須首先進(jìn)行元件的創(chuàng)建 然后放在工作庫(kù)中 通過(guò)調(diào)用工作庫(kù)來(lái)引用元件 同時(shí)在引用元件時(shí) 要先在結(jié)構(gòu)體的說(shuō)明部分進(jìn)行元件的說(shuō)明 然后在使用元件時(shí)進(jìn)行元件例化 第7章VHDL語(yǔ)言基礎(chǔ) 45 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYand21ISPORT i0 i1 INSTD LOGIC q OUTSTD LOGIC ENDENTITYand21 ARCHITECTUREoneOFand21ISBEGINq i0ANDi1 ENDARCHITECTUREone 第7章VHDL語(yǔ)言基礎(chǔ) 46 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYor21ISPORT i0 i1 INSTD LOGIC q OUTSTD LOGIC ENDENTITYor21 ARCHITECTUREoneOFor21ISBEGINq i0ORi1 ENDARCHITECTUREone 第7章VHDL語(yǔ)言基礎(chǔ) 47 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYinv21ISPORT i0 INSTD LOGIC q OUTSTD LOGIC ENDENTITYinv21 ARCHITECTUREoneOFinv21ISBEGINq NOTi0 ENDARCHITECTUREone 第7章VHDL語(yǔ)言基礎(chǔ) 48 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYmux21ISPORT a b INSTD LOGIC s INSTD LOGIC y OUTSTD LOGIC ENDmux21 第7章VHDL語(yǔ)言基礎(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語(yǔ)言基礎(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語(yǔ)言基礎(chǔ) 51 4 混合描述方式就是指上述3種描述方式的任意組合 LIBRARYIEEE USEIEEE STD LOGIC 1164 ALL ENTITYxor21ISPORT i0 i1 INSTD LOGIC q OUTSTD LOGIC ENDENTITYxor21 ARCHITECTUREbehaveOFxor21ISBEGINq i0XORi1 ENDARCHITECTUREbehave 第7章VHDL語(yǔ)言基礎(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語(yǔ)言基礎(chǔ) 53 在VHDL中 設(shè)計(jì)的實(shí)體和結(jié)構(gòu)體中定義的數(shù)據(jù)類型 常量 子程序說(shuō)明和元件說(shuō)明等部分只能在該設(shè)計(jì)實(shí)體中使用 而對(duì)其他設(shè)計(jì)實(shí)體是不可見的 程序包說(shuō)明像C語(yǔ)言中include語(yǔ)句一樣 用來(lái)單純地羅列VHDL中所要用到的信號(hào)定義 常量定義 數(shù)據(jù)類型 子程序說(shuō)明和元件說(shuō)明等 是一個(gè)可編譯的設(shè)計(jì)單元 要使用程序包中的某些說(shuō)明和定義 要用use語(yǔ)句說(shuō)明 各種VHDL編譯系統(tǒng)都含有多個(gè)標(biāo)準(zhǔn)程序包 如Std Logic 1164和Standard程序包 用戶也可已自行設(shè)計(jì)程序包 保存到WORK下 7 3 4VHDL程序的程序包 54 程序包由兩個(gè)獨(dú)立的單元組成 程序包說(shuō)明部分和程序包包體部分構(gòu)成 1 程序包說(shuō)明部分的一般格式 PACKAGE程序包名IS說(shuō)明語(yǔ)句END 程序包名 其中說(shuō)明語(yǔ)句為 數(shù)據(jù)類型說(shuō)明 常量說(shuō)明 子程序說(shuō)明 信號(hào)定義及元件說(shuō)明等 2 程序包體單元的一般格式 PACKAGEBODY程序包名IS包體語(yǔ)句END 程序包名 第7章VHDL語(yǔ)言基礎(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庫(kù)中定義程序包并立即使用實(shí)例 第7章VHDL語(yǔ)言基礎(chǔ) 56 幾種應(yīng)用較廣的程序包 1 Standard預(yù)先在std庫(kù)中編譯 主要定義了布爾類型 bit類型 character類型 出錯(cuò)級(jí)別 實(shí)數(shù)類型 整數(shù)類型 時(shí)間類型 延遲長(zhǎng)度子類型 自然數(shù)子類型 正整數(shù)子類型 string類型 bit vector子類型 文件打開方式類型和文件打開狀態(tài)類型 對(duì)所有設(shè)計(jì)模塊可見 2 textio預(yù)先在std庫(kù)中編譯 定義了line類型 text類型 side類型 操作寬度width子類型 文件input 文件output readline過(guò)程 對(duì)應(yīng)于不同數(shù)據(jù)類型的read過(guò)程 writeline過(guò)程和對(duì)應(yīng)于不同數(shù)據(jù)類型的write過(guò)程 對(duì)所有設(shè)計(jì)模塊都不可見 使用時(shí)要進(jìn)行說(shuō)明 第7章VHDL語(yǔ)言基礎(chǔ) 57 3 std logic 1164預(yù)先在ieee庫(kù)中編譯 是使用最廣泛的程序包 定義了設(shè)計(jì)人員長(zhǎng)采用的一些數(shù)據(jù)類型和函數(shù) 定義了std ulogic類型 std ulogic vector類型 std logic子類型 std logic vector類型 決斷函數(shù)resolved X01Z子類型 UX01子類型 UX01Z子類型 對(duì)應(yīng)于不同數(shù)據(jù)類型的and nand or nor xor xnor not函數(shù) 對(duì)應(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和對(duì)應(yīng)于不同類型的Is X函數(shù) 對(duì)所有設(shè)計(jì)模塊都不可見 使用時(shí)要進(jìn)行說(shuō)明 第7章VHDL語(yǔ)言基礎(chǔ) 58 4 numeric std已被定義為標(biāo)準(zhǔn)程序包 定義了用于綜合的數(shù)據(jù)類型和算術(shù)函數(shù) 定義了兩種數(shù)據(jù)類型 unsigned和signed 其中unsigned表示無(wú)符號(hào)的位矢量 signed表示帶符號(hào)的位矢量 其最左端是最高位 還含有所有unsigned和signed類型的重載算術(shù)運(yùn)算 還含有一些有用的類型轉(zhuǎn)換函數(shù) 時(shí)鐘檢測(cè)函數(shù)和其他一些使用的函數(shù) 5 numeric bit與程序包numeric std基本相同 不同之處在于它的基本元素類型是bit 而不是std logic 第7章VHDL語(yǔ)言基礎(chǔ) 59 配置語(yǔ)句用于描述各種設(shè)計(jì)實(shí)體和元件之間的連接關(guān)系以及設(shè)計(jì)實(shí)體和結(jié)構(gòu)體之間的連接關(guān)系 設(shè)計(jì)者可以利用這種配置語(yǔ)句來(lái)選擇不同的結(jié)構(gòu)體 使其與要設(shè)計(jì)的實(shí)體相對(duì)應(yīng) 仿真某一時(shí)實(shí)體時(shí) 可以利用配置來(lái)選擇不同的結(jié)構(gòu)體 進(jìn)行性能對(duì)比實(shí)驗(yàn)以得到性能最佳的結(jié)構(gòu)體 例如 要設(shè)計(jì)一個(gè)二輸入四輸出的譯碼器 如果一種結(jié)構(gòu)中的基本元件采用反相器和三輸入與門 而另一種結(jié)構(gòu)中的基本元件都采用與非門 它們各自的結(jié)構(gòu)體是不一樣的 并且放在各自不同的庫(kù)中 要設(shè)計(jì)譯碼器就可以利用配置語(yǔ)句實(shí)現(xiàn)對(duì)兩種不同的結(jié)構(gòu)體的選擇 7 3 4配置 第7章VHDL語(yǔ)言基礎(chǔ) 60 1 默認(rèn)配置配置語(yǔ)句的基本格式 Configurationofis 語(yǔ)句說(shuō)明 End 配置語(yǔ)句根據(jù)不同的情況 其說(shuō)明語(yǔ)句有簡(jiǎn)有繁 最簡(jiǎn)單的缺省配置格式 ConfigurationofisForEndfor End 教材中128頁(yè)例題 默認(rèn)配置只能用來(lái)選擇不含有任何塊語(yǔ)句和元件的結(jié)構(gòu)體 第7章VHDL語(yǔ)言基礎(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語(yǔ)言基礎(chǔ) 62 Architecturexor2 arcofexampleisBeginprocess a b variablecomb std vector 1downto0 Begincomb a Architecturenor2 arcofexampleisBeginprocess a b variablecomb std vector 1downto0 Begincomb a 第7章VHDL語(yǔ)言基礎(chǔ) 63 Architecturenand2 arcofexampleisBeginprocess a b variablecomb std vector 1downto0 Begincomb a 第7章VHDL語(yǔ)言基礎(chǔ) 64 Configurationcfg1ofexampleisforand2 arcendfor Endcfg1 Configurationcfg2ofexampleisforor2 arcendfor Endcfg2 Configurationcfg3ofexampleisfornand2 arcendfor Endcfg3 Configurationcfg4ofexampleisfornor2 arcendfor Endcfg4 Configurationcfg5ofexampleisforxor2 arcendfor Endcfg5 配置語(yǔ)句cfg1將進(jìn)行邏輯與操作的結(jié)構(gòu)體配置給實(shí)體 配置語(yǔ)句cfg2將進(jìn)行邏輯或操作的結(jié)構(gòu)體配置給實(shí)體 第7章VHDL語(yǔ)言基礎(chǔ) 65 2 元件配置 為了避免混淆 需要給出所說(shuō)明元件屬于哪一個(gè)設(shè)計(jì)庫(kù)里的哪一個(gè)設(shè)計(jì)實(shí)體 以及設(shè)計(jì)實(shí)體所對(duì)應(yīng)的是哪一個(gè)結(jié)構(gòu)體 低級(jí)的配置實(shí)體 結(jié)構(gòu)體對(duì)的配置 第7章VHDL語(yǔ)言基礎(chǔ) 66 基本書寫結(jié)構(gòu) CONFIGURATION配置名OF實(shí)體名ISFOR選配結(jié)構(gòu)體名FOR元件例化標(biāo)號(hào)名 元件名USECONFIGURATION庫(kù)名 元件配置名 ENDFOR FOR元件例化標(biāo)號(hào)名 元件名USECONFIGURATION庫(kù)名 元件配置名 ENDFOR ENDFOREND配置名 注意 所規(guī)定的低級(jí)配置一定要在當(dāng)前配置庫(kù)中已經(jīng)存在時(shí)才能編譯 低級(jí)的配置 第7章VHDL語(yǔ)言基礎(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 例題 全加器的實(shí)現(xiàn)LIBRARYIEEE USEIEEE sti logic 1164 all ENTITYfull adderISPORT a b Cin INstd logic Co S OUTstd logic ENDfull adder 第7章VHDL語(yǔ)言基礎(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)名號(hào)為U1和U3所指定的是元件庫(kù)work中的設(shè)計(jì)實(shí)體xor2 其結(jié)構(gòu)體為低級(jí)配置xor2 cfg指定的結(jié)構(gòu)體 第7章VHDL語(yǔ)言基礎(chǔ) 69 實(shí)體 結(jié)構(gòu)體對(duì)的配置 基本書寫結(jié)構(gòu) CONFIGURATION配置名OF實(shí)體名ISFOR選配結(jié)構(gòu)體名FOR元件調(diào)用標(biāo)號(hào)名 元件名USEENTITY庫(kù)名 實(shí)體名 結(jié)構(gòu)體名 ENDFOR FOR元件調(diào)用標(biāo)號(hào)名 元件名USEENTITY庫(kù)名 實(shí)體名 結(jié)構(gòu)體名 ENDFOR ENDFOREND配置名 注意 所規(guī)定的元件實(shí)體和其對(duì)應(yīng)的結(jié)構(gòu)體一定要在當(dāng)前的配置庫(kù)中已經(jīng)存在 否則編譯會(huì)出錯(cuò) 就是在配置的過(guò)程中為每一個(gè)元件直接指定實(shí)體的結(jié)構(gòu)體 而不是指定該實(shí)體的低級(jí)配置 第7章VHDL語(yǔ)言基礎(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語(yǔ)言基礎(chǔ) 71 3 塊的配置 要指明元件所在的塊 塊配置在結(jié)構(gòu)體和元件之間分出另一層次 若對(duì)某個(gè)含有塊語(yǔ)句的結(jié)構(gòu)體進(jìn)行文件配置時(shí) 必須指明是哪一個(gè)塊的配置 與元件配置相同 塊配置也有兩種不同的形式 低級(jí)的配置形式和實(shí)體 結(jié)構(gòu)體對(duì)的配置形式 第7章VHDL語(yǔ)言基礎(chǔ) 72 低級(jí)塊配置格式 CONFIGURATION配置名OF實(shí)體名ISFOR選配結(jié)構(gòu)體名FOR塊名FOR元件調(diào)用標(biāo)號(hào)名 元件名USECONFIGURATION庫(kù)名 元件配置名 ENDFOR ENDFOR FOR塊名FOR元件調(diào)用標(biāo)號(hào)名 元件名USECONFIGURATION庫(kù)名 元件配置名 ENDFOR ENDFOR ENDFOR END配置名 73 實(shí)體 結(jié)構(gòu)體對(duì)的塊配置格式 CONFIGURATION配置名OF實(shí)體名ISFOR選配結(jié)構(gòu)體名FOR塊名FOR元件調(diào)用標(biāo)號(hào)名 元件名USEENTITY庫(kù)名 實(shí)體名 結(jié)構(gòu)體名 ENDFOR ENDFOR FOR塊名FOR元件調(diào)用標(biāo)號(hào)名 元件名USEENTITY庫(kù)名 實(shí)體名 結(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語(yǔ)言基礎(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語(yǔ)言基礎(chǔ) 76 4 結(jié)構(gòu)體的配置 結(jié)構(gòu)體配置也是對(duì)結(jié)構(gòu)體中所引用的元件進(jìn)行配置 但是這種配置與元件配置有很大的區(qū)別 元件配置是使用專門的配置語(yǔ)句來(lái)完成的 配置語(yǔ)句與元件所在的結(jié)構(gòu)體是分開的 而結(jié)構(gòu)體配置則是放在結(jié)構(gòu)體的說(shuō)明語(yǔ)句部分 它是一種配置說(shuō)明不需要與元件所在的結(jié)構(gòu)體分開的配置類型 低級(jí)配置格式 for useconfiguation 實(shí)體 結(jié)構(gòu)體對(duì)配置格式 for useentity 第7章VHDL語(yǔ)言基礎(chǔ)- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- VHDL 語(yǔ)言 程序結(jié)構(gòu)
鏈接地址:http://m.appdesigncorp.com/p-8628423.html