第8章 VHDL設(shè)計深入_第1頁
第8章 VHDL設(shè)計深入_第2頁
第8章 VHDL設(shè)計深入_第3頁
第8章 VHDL設(shè)計深入_第4頁
第8章 VHDL設(shè)計深入_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第8章VHDL設(shè)計深入

VHDL設(shè)計深入盡管前面我們對VHDL所涉及的語法做了比較詳細(xì)的說明及示例詮釋,但依然存在有待深入探討的問題,及系統(tǒng)性歸納闡述的必要,以便我們更好的掌握VHDL數(shù)字系統(tǒng)設(shè)計技術(shù)。28.1數(shù)據(jù)對象

8.1.1常數(shù)

常數(shù)的定義和設(shè)置主要是為了使程序更容易閱讀和修改。常數(shù)定義語句:示例:常數(shù)定義范圍:實體、結(jié)構(gòu)體、程序包、塊、進(jìn)程和子程序38.1數(shù)據(jù)對象

8.1.1常數(shù)

特點:1.全局性

在程序中,常量是一個不變的值,一旦做了數(shù)據(jù)類型和賦值定義后,在程序中就不能再改變,因而具有全局性意義。2.可視性

即常數(shù)的使用范圍取決于它被定義的位置。

程序包實體結(jié)構(gòu)體屬于此結(jié)構(gòu)體的任意單元與進(jìn)程48.1數(shù)據(jù)對象

8.1.2變量

變量的賦值是一種理想化的數(shù)據(jù)傳輸,是立即發(fā)生的,不存在任何延時行為。其主要作用是在進(jìn)程中作為臨時的數(shù)據(jù)存儲單元。變量定義語句及示例:變量賦值語句及示例:變量定義范圍(局部量):進(jìn)程、子程序5初始值非必須8.1數(shù)據(jù)對象

8.1.3信號

信號定義語句:信號賦值語句:信號的定義和使用范圍:信號是描述硬件系統(tǒng)的基本數(shù)據(jù)對象。作為一種數(shù)值的容器,不但可以容納當(dāng)前值,也可以保持歷史值。實體、結(jié)構(gòu)體、程序包。在進(jìn)程和子進(jìn)程的順序語句中不允許定義信號,但可使用,即賦值;進(jìn)程中只能將信號列入敏感表,而對變量不敏感。process(clk,en)68.1數(shù)據(jù)對象

8.1.3信號

信號的賦值可以出現(xiàn)在一個進(jìn)程中,也可以直接出現(xiàn)在結(jié)構(gòu)體的并行語句結(jié)構(gòu)中,但兩者的賦值含義是不一樣的:1.前者(進(jìn)程)屬于順序信號賦值,這時的信號賦值操作要視進(jìn)程是否已被啟動,并且允許對同一目標(biāo)信號進(jìn)行多次賦值;2.后者(結(jié)構(gòu)體)屬于并行信號賦值,其賦值操作是各自獨立并行地發(fā)生的,且不允許對同一目標(biāo)信號進(jìn)行無條件的多次賦值。示例:7√但,不同進(jìn)程中不允許對對同一信號賦值。8.1數(shù)據(jù)對象

8.1.3信號

after語句描述賦值延遲的賦值語句還可構(gòu)建在不同時間序列中對同一信號進(jìn)行賦值的語句表述。信號賦值語句:示例:

after

xns語句也僅對VHDL仿真有效,無法綜合出任何對應(yīng)的硬件電路。8初始值8.1數(shù)據(jù)對象

8.1.4進(jìn)程中的信號賦值與變量賦值

準(zhǔn)確理解和把握一個進(jìn)程中的信號和變量賦值行為的特點以及它們功能上的異同點,對利用VHDL進(jìn)行正確的電路設(shè)計十分重要。98.1數(shù)據(jù)對象

8.1.4進(jìn)程中的信號賦值與變量賦值

信號與變量適用范圍示例:兩者綜合的結(jié)果相同:變量的定義與賦值只能在進(jìn)程內(nèi)信號的定義不能在進(jìn)程內(nèi)但賦值可內(nèi)可外108.1數(shù)據(jù)對象

8.1.4進(jìn)程中的信號賦值與變量賦值

信號與變量行為特性示例:?Why?118.1數(shù)據(jù)對象

8.1.4進(jìn)程中的信號賦值與變量賦值

進(jìn)程中的賦值行為應(yīng)該注意以下三點:

1.信號的賦值需要有一個δ延時

。2.一個進(jìn)程中的所有賦值語句,包括信號賦值和變量,都必須在一個δ延時內(nèi)完成(變量在δ延時前即已完成賦值),即一個進(jìn)程的運行時間固定為一個δ延時。在進(jìn)程中的順序賦值是以并行的方式“同時”完成的,執(zhí)行賦值操作和完成賦值是兩個不同的概念。3.當(dāng)在進(jìn)程中存在同一信號有多個賦值源(即對同一信號發(fā)生多次賦值)時,實際完成賦值的信號是最接近endprocess語句的信號。128.1數(shù)據(jù)對象

8.1.4進(jìn)程中的信號賦值與變量賦值

執(zhí)行賦值與完成賦值示例:

e1在5ns+δ被執(zhí)行賦值,在5ns+

2δ完成賦值(即更新)c1的執(zhí)行賦值與完成賦值時間都是5ns+δ。δ138.1數(shù)據(jù)對象

8.1.4進(jìn)程中的信號賦值與變量賦值

信號與變量的差別示例:4選1多路選擇器的錯誤描述:此三行并行執(zhí)行根據(jù)進(jìn)程中信號的賦值規(guī)則,只有第三行中的muxval得到更新,但由于muxval<=0并未完成賦值,故紅框內(nèi)的muxval始終是個未知數(shù),這就導(dǎo)致了仿真時序的不正確。錯誤的仿真結(jié)果:148.1數(shù)據(jù)對象

8.1.4進(jìn)程中的信號賦值與變量賦值

信號與變量的差別示例:4選1多路選擇器的正確描述:正確的仿真結(jié)果:i0i2i1i3158.2含高阻輸出的電路設(shè)計8.2.1三態(tài)門設(shè)計(知識回顧)

概述:三態(tài)指其輸出既可以是一般二值邏輯電路的正常的高電平(邏輯1)或低電平(邏輯0),又可以保持特有的高阻抗?fàn)顟B(tài)(Z)。處于高阻抗?fàn)顟B(tài)時,輸出電阻很大,相當(dāng)于開路,沒有任何邏輯控制功能。高阻態(tài)的意義在于實際電路中不可能斷開電路。

三態(tài)電路的輸出邏輯狀態(tài)的控制,是通過一個輸入引腳實現(xiàn)的。舉例:內(nèi)存里面的一個存儲單元,讀寫控制線處于低電位時,存儲單元被打開,可以向里面寫入;當(dāng)處于高電位時,可以讀出。但是不讀不寫,就要用高電阻態(tài),此時的節(jié)點處于懸空(不被拉到VDD或者GND)的狀態(tài),沒有電路驅(qū)動他。應(yīng)用:如果你的設(shè)備端口要掛在一個總線上,必須通過三態(tài)緩沖器。因為在一個總線上同時只能有一個端口作輸出,這時其他端口必須在高阻態(tài),同時可以輸入這個輸出端口的數(shù)據(jù)。

168.2含高阻輸出的電路設(shè)計8.2.1三態(tài)門設(shè)計

實例:8位三態(tài)控制門電路:必須大寫:IEEE庫中對數(shù)據(jù)類型std_logic的預(yù)定義已經(jīng)將高阻態(tài)確定為大寫’Z’。178.2含高阻輸出的電路設(shè)計8.2.2雙向端口的設(shè)計方法

用Inout端口模式設(shè)計雙向端口也必須考慮三態(tài)的使用,因為雙向端口的設(shè)計與三態(tài)端口的設(shè)計十分相似,都必須考慮端口的三態(tài)控制。

由于雙向端口在完成輸入功能時,必須使原來呈輸出模式的端口呈高阻態(tài),否則,待輸入的的外部數(shù)據(jù)勢必會與端口處原有電平發(fā)生“線與”,導(dǎo)致無法將外部數(shù)據(jù)正確地讀入。188.2含高阻輸出的電路設(shè)計8.2.2雙向端口的設(shè)計方法

雙向端口的錯誤描述:錯誤的仿真結(jié)果:不完整:沒有體現(xiàn)q的輸出功能。導(dǎo)致:1.q的仿真符號僅為輸出符號2.鎖存器的產(chǎn)生198.2含高阻輸出的電路設(shè)計8.2.2雙向端口的設(shè)計方法

雙向端口的正確描述:前者體現(xiàn)q的輸出功能;后者體現(xiàn)q的輸入功能。產(chǎn)生正確的仿真結(jié)果:1.q為輸入輸出符號2.消除了鎖存器208.2含高阻輸出的電路設(shè)計8.2.3三態(tài)總線電路設(shè)計

三態(tài)總線設(shè)計示例:8位4通道的三態(tài)總線驅(qū)動器錯誤描述:四個順序完成的IF語句,為什么會綜合出錯誤的結(jié)果呢?這是因為在進(jìn)程中,順序等價的語句,包括賦值語句和if語句等,當(dāng)它們列于同一進(jìn)程敏感表中的信號同時變化時,只可能對進(jìn)程結(jié)束前的那一條賦值語句進(jìn)行賦值操作,而忽略其上的所有等價語句。產(chǎn)生錯誤的仿真結(jié)果:除input0外,其余三個8位輸入端都懸空,沒能用上。218.2含高阻輸出的電路設(shè)計8.2.3三態(tài)總線電路設(shè)計

三態(tài)總線設(shè)計示例:8位4通道的三態(tài)總線驅(qū)動器正確描述:四個并列的when-else并行語句綜合出正確的電路結(jié)構(gòu):這是因為在結(jié)構(gòu)體中,每一條并行語句都等同于一個獨立運行的進(jìn)程,它們的地位是平等的,它們獨立且不沖突第監(jiān)視各并行語句中作為敏感信號的輸入值ctl。即當(dāng)ctl變化時,四條when-else語句始終有一條語句被執(zhí)行。產(chǎn)生正確的RTL電路(見設(shè)計文件)及仿真結(jié)果:228.3順序語句歸納

8.3.1進(jìn)程語句格式

一個結(jié)構(gòu)體中,允許放置任意多個進(jìn)程語句結(jié)構(gòu),而每一進(jìn)程的內(nèi)部都是由一系列順序語句構(gòu)成的。VHDL中的順序僅是程序上的,并不意味著綜合后的硬件邏輯行為也具有順序性。1.一個結(jié)構(gòu)體中可以含有多個Process結(jié)構(gòu);2.每一個Process結(jié)構(gòu)對于其敏感信號參數(shù)表中定義的任一敏感參量的變化,可在任

何時刻被激活或稱為啟動;3.所有被激活的進(jìn)程都是并行運行的;4.必須以endprocess結(jié)束進(jìn)程,[is][進(jìn)程標(biāo)號]…可缺省。238.3順序語句歸納

8.3.2進(jìn)程結(jié)構(gòu)組成

1.進(jìn)程說明部分:

主要定義一些除信號和共享變量外的局部變量,如數(shù)據(jù)類型、常數(shù)、變量、屬性、子程序等。

2.順序描述部分:

信號賦值語句、變量賦值語句、進(jìn)程啟動語句(敏感信號參數(shù)表或wait語句)、子程序調(diào)用語句、順序描述語句(if、case、loop等)、進(jìn)程跳出語句(next、exit等)。

3.多數(shù)VHDL綜合器要求敏感信號表必須列出本進(jìn)程中所有輸入信號名。

248.3順序語句歸納

8.3.3進(jìn)程要點

Process為一無限循環(huán)語句

進(jìn)程只有兩種狀態(tài):執(zhí)行和等待。

2.進(jìn)程中的順序語句具有明顯的順序和并行雙重性

在同一process中,10條語句和1000條語句的執(zhí)行時間是一樣的。這和軟件語言是有本質(zhì)區(qū)別的。3.信號可以是多個進(jìn)程間的通信線

結(jié)構(gòu)體中多個進(jìn)程之所以能并行同步運行,一個很重要原因是進(jìn)程之間的通信是通過具有全局特性的信號來實現(xiàn)的。4.一個進(jìn)程中只允許描述對應(yīng)于一個時鐘信號的同步時序邏輯

時序電路必須由進(jìn)程中的順序語句描述,而此順序語句必須由不完全條件語句構(gòu)成。盡管在同一個進(jìn)程中可順序放置多個條件語句(如if語句),但是推薦只放置一個含有時鐘邊沿檢測語句的條件語句。258.4并行賦值語句討論并行語句并不等同于總是并行且同時被執(zhí)行。例如進(jìn)程,除非幾個進(jìn)程都是擁有完全相同的敏感信號,否則不可能出現(xiàn)完全并行運行的情況。這兩個語句雖然屬于并行語句,但絕大多數(shù)情況下并不可能同時執(zhí)行,除非a、b、c嚴(yán)格同時發(fā)生變化。并行賦值語句也包含了類似進(jìn)程的順序語句特性:

假設(shè)在某一穩(wěn)態(tài)條件下s0=0,s1=0;a、b、c、d均為0,此時x=0?,F(xiàn)在假設(shè)a發(fā)生了一個事件,變?yōu)?,這時上面select賦值語句并不會被執(zhí)行,因為此句并不對a敏感。這時只會執(zhí)行紅框內(nèi)語句,因為只有其對a敏感,這時x將從原來的0變?yōu)?268.5IF語句概述

IF語句是VHDL設(shè)計中最重要和最常用的順序條件語句,可分為以下四類:1.非完整條件語句多用來產(chǎn)生時序電路2.完整條件語句多用來產(chǎn)生組合電路3.嵌套式條件語句組合、時序電路均可產(chǎn)生4.多分支條件語句組合、時序電路均可產(chǎn)生具有向上邏輯相與的功能?278.5IF語句概述

實例:利用多分支向上邏輯相與的功能實現(xiàn)8-3線優(yōu)先編碼器。288.6仿真延時8.6.1固有延時(信號的持續(xù)時間)8.6.2傳輸延時(并不考慮信號持續(xù)的時間,它僅表示信號傳輸推遲或延遲了一個時間段。)8.6.3仿真理解:綜合器不支持延時語句,干脆給并行語句和順序語句一個

的統(tǒng)一延時解決客觀存在的問題。延時是VHDL仿真需要的重要特性,為設(shè)計而建立的精確的延時模型,可以使用VHDL仿真器得到接近實際的精確結(jié)果。VHDL中有兩類延時模型能用于行為仿真建模:固有延時和傳輸延時298.7VHDL的描述風(fēng)格

VHDL的模塊結(jié)構(gòu)具有描述整個設(shè)計實體的邏輯功能,對于所希望的電路功能行為,可以在模塊中用不同的語句類型和描述方

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論