![西安電子科大【數(shù)字電路與邏輯設(shè)計(jì)】第7章_第1頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/24/6ec66571-e6ac-4ec6-9cda-21b06fc0327a/6ec66571-e6ac-4ec6-9cda-21b06fc0327a1.gif)
![西安電子科大【數(shù)字電路與邏輯設(shè)計(jì)】第7章_第2頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/24/6ec66571-e6ac-4ec6-9cda-21b06fc0327a/6ec66571-e6ac-4ec6-9cda-21b06fc0327a2.gif)
![西安電子科大【數(shù)字電路與邏輯設(shè)計(jì)】第7章_第3頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/24/6ec66571-e6ac-4ec6-9cda-21b06fc0327a/6ec66571-e6ac-4ec6-9cda-21b06fc0327a3.gif)
![西安電子科大【數(shù)字電路與邏輯設(shè)計(jì)】第7章_第4頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/24/6ec66571-e6ac-4ec6-9cda-21b06fc0327a/6ec66571-e6ac-4ec6-9cda-21b06fc0327a4.gif)
![西安電子科大【數(shù)字電路與邏輯設(shè)計(jì)】第7章_第5頁](http://file2.renrendoc.com/fileroot_temp3/2021-10/24/6ec66571-e6ac-4ec6-9cda-21b06fc0327a/6ec66571-e6ac-4ec6-9cda-21b06fc0327a5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第7章VHDL語言與數(shù)字電路設(shè)計(jì) 第第7章章VHDL語言與數(shù)字電路設(shè)計(jì)語言與數(shù)字電路設(shè)計(jì) 7.1電子設(shè)計(jì)自動(dòng)化(電子設(shè)計(jì)自動(dòng)化(EDA)技術(shù)的發(fā)展)技術(shù)的發(fā)展 7.2硬件描述語言對(duì)數(shù)字系統(tǒng)的描述硬件描述語言對(duì)數(shù)字系統(tǒng)的描述 7.3基于硬件描述語言的數(shù)字電路設(shè)計(jì)流程基于硬件描述語言的數(shù)字電路設(shè)計(jì)流程 7.4VHDL語言的基本文法語言的基本文法 7.5VHDL語言對(duì)基本電路行為的描述方法語言對(duì)基本電路行為的描述方法 7.6VHDL語言對(duì)復(fù)雜電路行為的描述方法語言對(duì)復(fù)雜電路行為的描述方法 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 7.1電子設(shè)計(jì)自動(dòng)化(電子設(shè)計(jì)自動(dòng)化(EDA)技術(shù)的發(fā)展)技術(shù)的發(fā)展 硬件描述
2、語言的產(chǎn)生和基于硬件描述語言的數(shù)字電路設(shè)計(jì)技術(shù)的發(fā)展, 是隨著數(shù)字電路的計(jì)算機(jī)輔助設(shè)計(jì), 也稱為電子設(shè)計(jì)自動(dòng)化(EDA, Electronic Design Automatic)的發(fā)展而逐步發(fā)展起來的。 集成電路設(shè)計(jì)自動(dòng)化系統(tǒng)的發(fā)展大致可以分為三個(gè)階段: 20世紀(jì)70年代的第一代EDA系統(tǒng),這一代EDA系統(tǒng)常稱為計(jì)算機(jī)輔助設(shè)計(jì)CAD系統(tǒng);80年代的第二代EDA系統(tǒng),常稱為計(jì)算機(jī)輔助工程CAE系統(tǒng); 90年代的第三代EDA系統(tǒng), 這一代EDA系統(tǒng)的特點(diǎn)是實(shí)現(xiàn)了高層次設(shè)計(jì)的自動(dòng)化。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 第一代EDA工具的特點(diǎn)是交互式圖形編輯設(shè)計(jì), 硬件采用16位小型機(jī),邏輯圖輸入、邏
3、輯模擬、 電路模擬、 版圖設(shè)計(jì)及版圖驗(yàn)證是分別進(jìn)行的, 設(shè)計(jì)人員需要對(duì)設(shè)計(jì)內(nèi)容進(jìn)行多次的比較和修改才能得到正確的設(shè)計(jì)。 第一代CAD系統(tǒng)的引入使設(shè)計(jì)人員擺脫了繁鎖的、 容易出錯(cuò)的手工畫圖的傳統(tǒng)方法, 大大提高了效率, 因而得到了迅速的推廣。 但其缺點(diǎn)也是明顯的, 主要表現(xiàn)為不能夠適應(yīng)規(guī)模較大的設(shè)計(jì)項(xiàng)目, 而且設(shè)計(jì)周期長、 費(fèi)用高, 如果在投片以后發(fā)現(xiàn)原設(shè)計(jì)存在錯(cuò)誤, 則不得不返工修改, 其代價(jià)是高昂的。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 第二代EDA系統(tǒng)的特點(diǎn)是支持一致性檢查和后模擬功能。 一致性檢查是指在版圖與電路之間的一致性檢查, 即對(duì)版圖進(jìn)行版圖參數(shù)提取, 得到相應(yīng)的電路圖, 并將此電路
4、圖與設(shè)計(jì)所依據(jù)的原電路圖進(jìn)行比較, 從而檢查設(shè)計(jì)是否有錯(cuò)。 后模擬是將版圖參數(shù)提取得到的版圖寄生參數(shù)引入電路圖, 通過電路模擬進(jìn)一步檢查電路的時(shí)序關(guān)系和速度(在引入這些寄生參數(shù)后)是否仍符合原來設(shè)計(jì)要求。 這些功能的引入有力地保證了一次投片成功率。 但是一致性檢查和后模擬是在設(shè)計(jì)的最后階段才加以實(shí)施的, 因而一旦發(fā)現(xiàn)錯(cuò)誤, 就需修改版圖或修改電路, 仍然要付出相當(dāng)大的代價(jià)。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 第三代EDA工具出現(xiàn)于20世紀(jì)90年代, 隨著芯片的復(fù)雜程度愈來愈高, 數(shù)萬門及數(shù)十萬門的電路設(shè)計(jì)越來越多, 單是靠原理圖輸入方式已經(jīng)不堪忍受, 采用硬件描述語言(HDL, Hardwar
5、e Describe Language)的設(shè)計(jì)方式就應(yīng)運(yùn)而生, 設(shè)計(jì)工作從行為級(jí)、 功能級(jí)開始,EDA向設(shè)計(jì)的高層次發(fā)展, 這樣就出現(xiàn)了第三代EDA系統(tǒng)。第三代EDA系統(tǒng)的特點(diǎn)是高層次設(shè)計(jì)的自動(dòng)化。 該系統(tǒng)引入了硬件描述語言, 一般采用VHDL或Verilog語言, 同時(shí)引入了行為綜合和邏輯綜合工具。 設(shè)計(jì)采用較高的抽象層次進(jìn)行描述, 并按照層次式方法進(jìn)行管理, 大大提高了處理復(fù)雜設(shè)計(jì)的能力, 設(shè)計(jì)所需的周期也大幅度地縮短。 綜合優(yōu)化工具的采用使芯片的面積、 速度、 功耗獲得了優(yōu)化, 第三代EDA系統(tǒng)迅速得到了推廣應(yīng)用。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 高層次設(shè)計(jì)是與具體生產(chǎn)技術(shù)無關(guān)的, 亦
6、即與工藝無關(guān)。 一個(gè)HDL原碼可以通過邏輯綜合工具綜合成為一個(gè)現(xiàn)場(chǎng)可編程門陣列, 既FPGA電路, 也可綜合成某一工藝所支持的專用集成電路,即ASIC電路。 HDL原碼對(duì)于FPGA和ASIC是完全一樣的,僅需要更換不同的庫重新進(jìn)行綜合。 隨著工藝技術(shù)的進(jìn)步,需要采用更先進(jìn)的工藝時(shí), 如從0.35 m技術(shù)轉(zhuǎn)移到0.18 m技術(shù)時(shí), 可利用原來所書寫的HDL原碼。第7章VHDL語言與數(shù)字電路設(shè)計(jì) 前兩代的CAD設(shè)計(jì)系統(tǒng)是以軟件工具為核心的, 第三代EDA系統(tǒng)是一個(gè)統(tǒng)一的、 協(xié)同的、 集成化的、 以數(shù)據(jù)庫為核心的系統(tǒng)。 它具有面向目標(biāo)的各種數(shù)據(jù)模型及數(shù)據(jù)管理系統(tǒng),有一致性較好的用戶界面系統(tǒng), 有基于
7、圖形界面的設(shè)計(jì)管理環(huán)境和設(shè)計(jì)管理系統(tǒng)。 在此基礎(chǔ)上, 第三代EDA系統(tǒng)實(shí)現(xiàn)了操作的協(xié)同性、 結(jié)構(gòu)的開放性和系統(tǒng)的可移植性。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 其中操作的協(xié)同性是指可在多窗口的環(huán)境下同時(shí)運(yùn)行多個(gè)工具。 例如,當(dāng)版圖編輯器完成了一個(gè)多邊形的設(shè)計(jì)時(shí), 該多邊形就被存入數(shù)據(jù)庫, 被存入信息對(duì)版圖設(shè)計(jì)規(guī)則檢查器同樣有效。 因此, 允許在版圖過程中交替地進(jìn)行版圖設(shè)計(jì)規(guī)則檢查, 以避免整個(gè)設(shè)計(jì)過程的反復(fù)。再如, 當(dāng)在邏輯窗口中對(duì)該邏輯圖的某個(gè)節(jié)點(diǎn)進(jìn)行檢查時(shí), 在版圖窗口可同時(shí)看到該節(jié)點(diǎn)所對(duì)應(yīng)的版圖區(qū)域。 這種協(xié)同操作的并行設(shè)計(jì)環(huán)境使設(shè)計(jì)者可同時(shí)訪問設(shè)計(jì)過程中的多種信息,并能分享設(shè)計(jì)數(shù)據(jù)。結(jié)構(gòu)
8、的開放性是指通過一定的編程語言可以訪問統(tǒng)一的數(shù)據(jù)庫,同時(shí)在此結(jié)構(gòu)框架中可嵌入第三方所開發(fā)的設(shè)計(jì)軟件。系統(tǒng)的可移植性是指整個(gè)軟件系統(tǒng)可安裝到不同的硬件平臺(tái)上, 這樣可組成一個(gè)由不同型號(hào)工作站所組成的設(shè)計(jì)系統(tǒng), 從而共享同一設(shè)計(jì)數(shù)據(jù)。 也可由低價(jià)的個(gè)人計(jì)算機(jī)和高性能的工作站共同組成一個(gè)系統(tǒng)。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 7.2硬件描述語言對(duì)數(shù)字系統(tǒng)的描述硬件描述語言對(duì)數(shù)字系統(tǒng)的描述 VHDL作為一種經(jīng)典的硬件描述語言, 它主要包含三方面的功能: 實(shí)現(xiàn)電路系統(tǒng)的文檔化描述、 支持系統(tǒng)仿真和支持系統(tǒng)綜合。 VHDL語言和常規(guī)的程序編程語言有哪些區(qū)別和聯(lián)系呢?常規(guī)的程序編程語言主要用來實(shí)現(xiàn)數(shù)值運(yùn)算
9、和數(shù)據(jù)處理, 硬件描述語言則是對(duì)一個(gè)電路系統(tǒng)進(jìn)行描述。 電路系統(tǒng)可以從不同的角度進(jìn)行描述: 行為級(jí): 系統(tǒng)執(zhí)行什么樣的操作和處理。結(jié)構(gòu)級(jí): 系統(tǒng)是如何構(gòu)成的。功能特性: 系統(tǒng)如何與外界進(jìn)行連接與交互。物理特性: 系統(tǒng)的處理速度如何。同時(shí), 系統(tǒng)也可以按照不同的抽象級(jí)別進(jìn)行描述: 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 同時(shí), 系統(tǒng)也可以按照不同的抽象級(jí)別進(jìn)行描述:開關(guān)級(jí):描述晶體管的開關(guān)行為。寄存器傳輸級(jí): 描述組合電路和時(shí)序電路的邏輯結(jié)構(gòu)。指令級(jí)體系結(jié)構(gòu)級(jí): 描述微處理器的功能行為。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 綜合這些不同的角度和抽象級(jí)別, 數(shù)字系統(tǒng)的描述可以用Gajski和Kuhn提出的
10、著名的Y圖來表示, 如圖71所示。 數(shù)字系統(tǒng)設(shè)計(jì)是圍繞圖中層次化的描述而逐步展開和細(xì)化的, 硬件描述語言能夠在上述不同的抽象層次上對(duì)系統(tǒng)的各個(gè)方面進(jìn)行描述。 硬件描述語言所描述的系統(tǒng)模型能夠在不同的抽象層次之間保持良好的互操作性, 一方面實(shí)現(xiàn)了設(shè)計(jì)的工藝無關(guān)性, 即模塊是可移植的; 另一方面, 支持設(shè)計(jì)的可重用和快速系統(tǒng)原型的實(shí)現(xiàn)。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 圖71 數(shù)字系統(tǒng)設(shè)計(jì)所涵蓋的領(lǐng)域第7章VHDL語言與數(shù)字電路設(shè)計(jì) 7.3基于硬件描述語言的數(shù)字電路設(shè)計(jì)流程基于硬件描述語言的數(shù)字電路設(shè)計(jì)流程與圖71相對(duì)應(yīng), 基于硬件描述語言的數(shù)字電路設(shè)計(jì)包含高層次綜合、 邏輯綜合和物理綜合三個(gè)階
11、段的工作。 高層次綜合也稱為行為級(jí)綜合(Behavioral Synthesis), 它的任務(wù)是將一個(gè)設(shè)計(jì)的行為級(jí)描述轉(zhuǎn)換成寄存器傳輸級(jí)的結(jié)構(gòu)描述。 其設(shè)計(jì)步驟是, 首先翻譯和分析設(shè)計(jì)的HDL語言描述, 在給定的一組性能、 面積和功耗的條件下, 確定需要哪些硬件資源, 如執(zhí)行單元、 存儲(chǔ)器、 控制器、總線等, 通常稱這一步為資源分配(Allocation);其次確定在這一結(jié)構(gòu)中各種操作的次序, 通常稱這一步為調(diào)度(Scheduling)。 同時(shí)還可通過行為級(jí)和寄存器傳輸級(jí)硬件仿真進(jìn)行驗(yàn)證。 由于實(shí)現(xiàn)同一功能可以有多種硬件結(jié)構(gòu), 因此高層次綜合的目的就是要在滿足目標(biāo)和約束的條件下, 找到一個(gè)代價(jià)
12、最小的硬件結(jié)構(gòu), 并使設(shè)計(jì)的功能最佳。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 邏輯綜合是將邏輯級(jí)的行為描述轉(zhuǎn)換成邏輯級(jí)的結(jié)構(gòu)描述, 即邏輯門級(jí)網(wǎng)表。 邏輯級(jí)的行為描述可以是狀態(tài)轉(zhuǎn)移圖、 有限狀態(tài)機(jī),也可以是布爾方程、 真值表或硬件描述語言。 邏輯綜合過程還包括一些優(yōu)化步驟,如資源共享、 連接優(yōu)化和時(shí)鐘分配等。 優(yōu)化目標(biāo)是面積最小、速度最快、 功耗最低或它們之間的折衷。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 邏輯綜合分成兩個(gè)階段: 首先是與工藝無關(guān)的階段, 此階段采用布爾操作或代數(shù)操作技術(shù)來優(yōu)化邏輯; 其次是工藝映射階段, 此階段根據(jù)電路的性質(zhì)(如組合型或時(shí)序型)及采用的結(jié)構(gòu)(多層邏輯、 PLD或FPG
13、A)作出具體的映射, 將與工藝無關(guān)的描述轉(zhuǎn)換成門級(jí)網(wǎng)表或PLD(或FPGA)的專門文件。 邏輯綜合優(yōu)化完成后, 還需要進(jìn)行細(xì)致的時(shí)延分析和時(shí)延優(yōu)化。此外還要進(jìn)行邏輯仿真, 邏輯仿真是保證設(shè)計(jì)正確的關(guān)鍵步驟。 過去通常采用軟件模擬的方法,近年來則強(qiáng)調(diào)硬件仿真手段, 如通過PLD或FPGA進(jìn)行仿真。 邏輯綜合還包含測(cè)試綜合的步驟, 測(cè)試綜合實(shí)現(xiàn)自動(dòng)測(cè)試圖形生成(ATPG, Automatic Test Pattern Generation), 為可測(cè)性提供高故障覆蓋率的測(cè)試圖形。 測(cè)試綜合還可以消去設(shè)計(jì)中的冗余邏輯, 診斷不可測(cè)試的邏輯結(jié)構(gòu), 還能夠自動(dòng)插入可測(cè)性結(jié)構(gòu)。 第7章VHDL語言與數(shù)字電
14、路設(shè)計(jì) 物理綜合也稱版圖綜合(LayoutSynthesis),它的任務(wù)是將門級(jí)網(wǎng)表自動(dòng)轉(zhuǎn)換成版圖,即完成布圖。與傳統(tǒng)的電路設(shè)計(jì)方法相比,基于硬件描述語言的數(shù)字電路設(shè)計(jì)方法具有以下四方面的優(yōu)勢(shì):(1)采用自上向下(Topdown)的設(shè)計(jì)方法。所謂自上向下的設(shè)計(jì)方法,就是從系統(tǒng)總體要求出發(fā),自上而下地逐步將設(shè)計(jì)內(nèi)容細(xì)化,最后完成系統(tǒng)硬件的整體設(shè)計(jì)。在利用HDL的硬件設(shè)計(jì)方法中,設(shè)計(jì)由自上而下分成三個(gè)層次對(duì)系統(tǒng)硬件進(jìn)行設(shè)計(jì)。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 第一層次是行為描述。所謂行為描述,實(shí)質(zhì)上就是對(duì)整個(gè)系統(tǒng)的數(shù)學(xué)模型的描述。在行為描述階段,并不真正考慮實(shí)際的操作和算法用什么方法來實(shí)現(xiàn),考慮更
15、多的是系統(tǒng)結(jié)構(gòu)及其工作過程是否能達(dá)到系統(tǒng)結(jié)構(gòu)及用戶規(guī)格的要求,通過對(duì)系統(tǒng)行為描述的仿真來發(fā)現(xiàn)設(shè)計(jì)中存在的問題。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 第二層次是RTL描述。這一層次稱為寄存器傳輸描述(即數(shù)據(jù)流描述)。用行為方式描述的系統(tǒng)結(jié)構(gòu)的抽象程度高,很難直接映射到具體邏輯元的硬件實(shí)現(xiàn)。要想得到硬件的具體實(shí)現(xiàn),必須將以行為方式描述的VHDL程序改寫為以RTL方式描述的VHDL程序,才能導(dǎo)出系統(tǒng)的邏輯表達(dá)式,最終才能進(jìn)行邏輯綜合。在完成編寫RTL方式的描述程序以后,再用仿真工具對(duì)RTL方式描述的程序進(jìn)行仿真。如果這一步仿真通過,那么就可以用邏輯綜合工具進(jìn)行綜合了。第三層次是邏輯綜合。邏輯綜合階段是
16、利用邏輯綜合工具將RTL方式描述的程序轉(zhuǎn)換成用基本邏輯元件表示的文件(門級(jí)網(wǎng)表),之后對(duì)門級(jí)網(wǎng)表再進(jìn)行仿真,并檢查定時(shí)關(guān)系。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) (2)采用系統(tǒng)早期仿真。從自上而下的設(shè)計(jì)過程可以看到,在系統(tǒng)設(shè)計(jì)過程中要進(jìn)行三次仿真,即行為層次仿真、RTL層次仿真和門級(jí)層次仿真,也就是進(jìn)行系統(tǒng)數(shù)學(xué)模型的仿真、系統(tǒng)數(shù)據(jù)流的仿真和系統(tǒng)門電路原理的仿真。這三級(jí)仿真貫穿系統(tǒng)硬件設(shè)計(jì)的全過程,從而可以在系統(tǒng)設(shè)計(jì)早期發(fā)現(xiàn)設(shè)計(jì)中存在的問題。與傳統(tǒng)設(shè)計(jì)的后期仿真相比,早期仿真可大大縮短系統(tǒng)的設(shè)計(jì)周期,節(jié)約大量的人力和物力。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) (3)降低硬件電路設(shè)計(jì)難度。在采用傳統(tǒng)的
17、硬件電路設(shè)計(jì)方法時(shí),往往要求設(shè)計(jì)者寫出該電路的邏輯表達(dá)式、真值表、時(shí)序電路的狀態(tài)表。這一工作是相當(dāng)困難和繁雜的,特別是在系統(tǒng)比較復(fù)雜時(shí)更是如此。在用HDL語言設(shè)計(jì)硬件電路時(shí),就可以使設(shè)計(jì)者免除編寫邏輯表或真值表之苦。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) (4)主要設(shè)計(jì)文件使用HDL語言編寫的源程序。HDL語言的源程序作為歸檔文件有很多好處,其一是資料良好,便于保存;其二是可繼承性好。當(dāng)設(shè)計(jì)其他硬件電路時(shí),可以使用文件中的某些硬件電路的工作原理和邏輯關(guān)系,而閱讀原理圖,推知其工作原理卻需要較多的硬件知識(shí)和經(jīng)驗(yàn),并且看起來也不那么一目了然。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 7.4VHDL語言的基本
18、文法語言的基本文法7.4.1基本語言要素基本語言要素1.注釋注釋VHDL中的注釋由兩個(gè)連續(xù)的短線()開始,直到行尾。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 2.標(biāo)識(shí)符標(biāo)識(shí)符VHDL中的標(biāo)識(shí)符可以是常數(shù)、變量、信號(hào)、端口、子程序或參數(shù)的名字。使用標(biāo)識(shí)符要遵守如下法則:(1)標(biāo)識(shí)符由字母(AZ;az)、數(shù)字和下劃線字符組成。(2)必須以英文字母開頭。(3)末字符不能為下劃線。(4)不允許出現(xiàn)兩個(gè)連續(xù)下劃線。(5)不區(qū)分大小寫字母。(6)VHDL定義的保留字(或稱關(guān)鍵字)不能用作標(biāo)識(shí)符。第7章VHDL語言與數(shù)字電路設(shè)計(jì) 3.數(shù)據(jù)對(duì)象數(shù)據(jù)對(duì)象數(shù)據(jù)對(duì)象有三種:信號(hào)、變量和常量。信號(hào)表示電路接線上的邏輯信號(hào);
19、變量表示數(shù)據(jù)值,用于行為模型中的計(jì)算;常數(shù)是一個(gè)固定的值,作用是使設(shè)計(jì)實(shí)體中的常數(shù)更容易閱讀和修改。常數(shù)只要被賦值就不能再改變。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 4.數(shù)據(jù)類型數(shù)據(jù)類型1)位(Bit)和位矢量(Bit_Vector)位的取值是0或1;位矢量是用雙引號(hào)括起來的一組位數(shù)據(jù),使用位矢量必須注明位寬。2)標(biāo)準(zhǔn)邏輯位(STD_LOGIC)和標(biāo)準(zhǔn)邏輯矢量(STD_LOGIC_VECTOR)在IEEE庫的程序包STD_LOGIC1164中,定義了兩個(gè)重要的數(shù)據(jù)類型,即標(biāo)準(zhǔn)邏輯位STD_LOGIC和標(biāo)準(zhǔn)邏輯矢量STD_LOGIC_VECTOR,該數(shù)據(jù)類型可以更精確地表示實(shí)際電路的信號(hào)值。STD
20、_LOGIC數(shù)據(jù)可以包含如下九種不同取值: 第7章VHDL語言與數(shù)字電路設(shè)計(jì) (1)“0”正常0。(2)“1”正常1。(3)“Z”高阻。(4)“_”不可能情況。(5)“L”弱信號(hào)0。(6)“H”弱信號(hào)1。(7)“U”未初始化值。(8)“X”未知值。(9)“W”弱未知信號(hào)值。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 3)整數(shù)(整數(shù)(INTEGER)整數(shù)類型的數(shù)代表正整數(shù)、負(fù)整數(shù)和零,表示的范圍為-(231-1)(231-1),它與算術(shù)整數(shù)相似,可進(jìn)行“+”、“-”、“*”、“/”等算術(shù)運(yùn)算,不能用于邏輯運(yùn)算。4)布爾量(布爾量(BOOLEAN)一個(gè)布爾量具有兩個(gè)狀態(tài):“真”或“假”。布爾量不屬于數(shù)值,
21、因此不能用于運(yùn)算,它只能通過關(guān)系運(yùn)算符獲得。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 5)枚舉類型用戶通過枚舉類型可以定義數(shù)據(jù)對(duì)象所有可能的取值。其文法表示是:TYPEidentifierIS(value1,value2,);6)陣列類型用戶通過陣列類型可以將同一類型的單個(gè)數(shù)據(jù)對(duì)象組織成為一維或多維的陣列。其文法表示是:TYPEidentifierISARRAY(range)OFtype; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 7)子類型子類型是某一個(gè)類型的子集。其文法表示是:SUBTYPEidentifierIStypeRANGErange; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 1)邏輯運(yùn)算符NOT(非
22、)OR(或)AND(與)NOR(或非)NAND(與非)XOR(異或)2)算術(shù)運(yùn)算符(加)(減)*(乘)/(除)MOD(求模)REM(取余)ABS(取絕對(duì)值)*(乘方)&(并置)ABS(取絕對(duì)值)3)關(guān)系運(yùn)算符=(等于)/=(不等)(小于)(大于) =(大于等于)4)移位運(yùn)算符SLL(邏輯左移)SRL(邏輯右移)SLA(算術(shù)左移)SRA(算術(shù)右移)ROL(循環(huán)左移)ROR(循環(huán)右移) 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 6.實(shí)體(實(shí)體(ENTITY)實(shí)體定義電路模塊的名字和接口,其中接口部分包含了該電路模塊的輸入和輸出信號(hào)。其文法表示是:ENTITY實(shí)體名ISPORT(端口名和類型);END實(shí)體名
23、; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 7.結(jié)構(gòu)體(結(jié)構(gòu)體(ARCHITECTURE)結(jié)構(gòu)體描述電路模塊的具體實(shí)現(xiàn)。結(jié)構(gòu)體的文法因設(shè)計(jì)者所采用的電路模塊描述方法的不同而不同,通??梢圆捎脭?shù)據(jù)流(dataflow)模型、行為(behavioral)模型和結(jié)構(gòu)(structural)模型描述法。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 1)針對(duì)數(shù)據(jù)流模型的結(jié)構(gòu)體文法表示ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS內(nèi)部信號(hào)定義;BEGIN并行賦值語句;END結(jié)構(gòu)體名;其中并行賦值語句是并行執(zhí)行的。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 2)針對(duì)行為模型的結(jié)構(gòu)體文法表示ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名
24、IS內(nèi)部信號(hào)定義;函數(shù)定義;子程序定義;BEGIN進(jìn)程模塊;并行賦值語句;END結(jié)構(gòu)體名;其中,進(jìn)程模塊內(nèi)部的語句是串行執(zhí)行的,而進(jìn)程模塊之間及進(jìn)程模塊和并行賦值語句之間是并行執(zhí)行的。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 3)針對(duì)結(jié)構(gòu)模型的結(jié)構(gòu)體文法表示ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS元器件定義;內(nèi)部信號(hào)定義;BEGIN元器件實(shí)例化語句;并行賦值語句;END結(jié)構(gòu)體名; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 8.包(包(PACKAGE)包將電路模塊描述中所用到的信號(hào)定義、常數(shù)定義、數(shù)據(jù)類型、元件語句、函數(shù)定義和過程定義等集合到一起,以便于在描述中統(tǒng)一引用。包結(jié)構(gòu)本身包含一個(gè)包聲明和一個(gè)包
25、體。1)包聲明和包體包聲明中包含了所有被實(shí)體ENTITY共享的相關(guān)定義項(xiàng),即這些定義項(xiàng)對(duì)實(shí)體ENTITY是可見的。包體中的內(nèi)容就是包聲明中所涉及的函數(shù)和子程序的具體實(shí)現(xiàn)。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 包聲明部分的文法是:PACKAGE包名IS類型定義;子類型定義;信號(hào)定義;變量定義;常量定義;元器件聲明;函數(shù)聲明;子程序聲明;END包名;包體部分的文法是:PACKAGEBODY包名IS函數(shù)實(shí)現(xiàn);子程序?qū)崿F(xiàn);END包名; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 2)包的使用可以通過LIBRARY和USE語句來使用一個(gè)包。對(duì)應(yīng)的文法是:LIBRARY庫名;USE庫名.包名.ALL; 第7章VHDL
26、語言與數(shù)字電路設(shè)計(jì) 7.4.2數(shù)據(jù)流模型中的并行語句數(shù)據(jù)流模型中的并行語句數(shù)據(jù)流模型中的并行語句是并行執(zhí)行的,因此這些語句的前后順序?qū)?zhí)行的結(jié)果沒有影響。1.并行信號(hào)賦值語句并行信號(hào)賦值語句并行信號(hào)賦值語句將一個(gè)值或一個(gè)表達(dá)式的計(jì)算結(jié)果賦值給一個(gè)信號(hào)。并行信號(hào)賦值語句能夠轉(zhuǎn)入執(zhí)行的條件是計(jì)算表達(dá)式中的信號(hào)發(fā)生了變化,同時(shí)被賦值信號(hào)的變化需要一定的延遲才能實(shí)現(xiàn),信號(hào)賦值不是立刻發(fā)生的。其對(duì)應(yīng)的文法是:信號(hào)=計(jì)算表達(dá)式;第7章VHDL語言與數(shù)字電路設(shè)計(jì) 2.條件信號(hào)賦值語句條件信號(hào)賦值語句條件信號(hào)賦值語句按照不同的條件對(duì)信號(hào)賦予不同的值。該語句轉(zhuǎn)入執(zhí)行的條件是計(jì)算表達(dá)式中的信號(hào)值或條件發(fā)生了變化。
27、其對(duì)應(yīng)的文法是:信號(hào)=值1WHEN條件ELSE 值2WHEN條件ELSE 值3; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 3.選擇信號(hào)賦值語句選擇信號(hào)賦值語句選擇信號(hào)賦值語句根據(jù)選擇表達(dá)式對(duì)信號(hào)賦予不同的值。該語句轉(zhuǎn)入執(zhí)行的條件是計(jì)算表達(dá)式中的信號(hào)值或條件發(fā)生了變化。其對(duì)應(yīng)的文法是:WITH條件表達(dá)式SELECT信號(hào)=值1WHEN條件1, 值2WHEN條件2, 值4WHEN條件4;應(yīng)注意的是,需要列舉出條件表達(dá)式中所有可能的取值。可以用關(guān)鍵字OTHERS來表示所有剩余的條件選擇。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 7.4.3行為模型中的串行語句行為模型中的串行語句在行為模型的描述中,可以采用和常規(guī)計(jì)
28、算機(jī)程序類似的串行執(zhí)行的語句。串行語句支持多種標(biāo)準(zhǔn)語句結(jié)構(gòu),例如變量賦值、ifthenelse和loops。1.進(jìn)程(進(jìn)程(PROCESS)在進(jìn)程模塊中包含的語句都是串行執(zhí)行的,而進(jìn)程語句自身是一個(gè)并行語句,即多個(gè)進(jìn)程語句之間是并行執(zhí)行的。多個(gè)進(jìn)程模塊可以和并行語句組合在一起使用。其對(duì)應(yīng)的文法是: 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 進(jìn)程名:PROCESS(敏感信號(hào)表)變量定義;BEGIN串行語句;ENDPROCESS進(jìn)程名; 敏感信號(hào)表中包含一組由逗號(hào)隔開的信號(hào),當(dāng)且僅當(dāng)敏感信號(hào)表中的信號(hào)發(fā)生了變化時(shí),進(jìn)程轉(zhuǎn)入執(zhí)行。當(dāng)進(jìn)程順序執(zhí)行完進(jìn)程模塊內(nèi)部的全部串行語句后,進(jìn)程將被掛起,等待敏感表中的信號(hào)
29、有新的變化發(fā)生。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 2.串行信號(hào)賦值語句串行信號(hào)賦值語句串行信號(hào)賦值語句的結(jié)構(gòu)和并行賦值語句是一樣的,只是它的執(zhí)行機(jī)制是串行執(zhí)行的。其對(duì)應(yīng)的文法是:信號(hào)串行語句;WHEN條件選擇=串行語句;WHENOTHERS=串行語句;ENDCASE; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 7.NULL語句語句NULL語句代表一個(gè)空操作語句,它的執(zhí)行不會(huì)引起任何操作。它的文法是:NULL; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 8.FOR語句語句FOR語句的文法是:FOR標(biāo)識(shí)符IN起始值TO|DOWNTO終止值LOOP串行語句;ENDLOOP;循環(huán)范圍值必須是一個(gè)靜態(tài)值。FOR語句中
30、的標(biāo)識(shí)符是一個(gè)隱式定義的變量,不需要做專門的說明。例如:sum:=0; FORcountIN1TO10LOOP sum:=sum+count; ENDLOOP;第7章VHDL語言與數(shù)字電路設(shè)計(jì) 9.WHILE語句語句WHILE語句的文法是:WHILE條件表達(dá)式LOOP串行語句;ENDLOOP; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 10.LOOP語句語句LOOP語句的文法是:LOOP串行語句;EXITWHEN條件表達(dá)式;ENDLOOP; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 11.EXIT語句語句EXIT語句只能在LOOP語句的循環(huán)結(jié)構(gòu)中使用,它的執(zhí)行將使內(nèi)部循環(huán)被中斷。它的文法表示是:EXITWHE
31、N條件表達(dá)式; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 12.NEXT語句語句NEXT語句只能在LOOP語句的循環(huán)結(jié)構(gòu)中使用,它的執(zhí)行將使當(dāng)前循環(huán)直接跳到循環(huán)底部并開始下一輪的循環(huán)。NEXT語句通常和FOR語句搭配使用,它的文法表示是:NEXTWHENcondition;使用舉例:sum:=0; FORcountIN1TO10LOOP NEXTWHENcount=3;sum:=sum+count;ENDLOOP; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 13.函數(shù)(函數(shù)(FUNCTION)函數(shù)聲明的文法是:FUNCTION函數(shù)名(參數(shù)表)RETURN返回值類型;函數(shù)定義的文法是:FUNCTION函數(shù)名(參
32、數(shù)表)RETURN返回值類型ISBEGIN串行語句;END函數(shù)名;函數(shù)調(diào)用的文法是:函數(shù)名(實(shí)際參數(shù)值);需要說明的是,參數(shù)表中的參數(shù)是輸入的信號(hào)或變量。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 14.子程序(子程序(PROCEDURE)子程序聲明的文法是:PROCEDURE子程序名(參數(shù)表);子程序定義的文法是:PROCEDURE子程序名(參數(shù)表)ISBEGIN串行語句;END子程序名;子程序調(diào)用的文法是:子程序名(實(shí)際參數(shù)值);需要說明的是,參數(shù)表中的參數(shù)可以是輸入、輸出或雙向的變量。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 7.4.4結(jié)構(gòu)化模型的描述語句結(jié)構(gòu)化模型的描述語句在結(jié)構(gòu)化模型的描述中,多個(gè)
33、電路元器件通過信號(hào)的互連來構(gòu)成一個(gè)更高層的模塊。這些元器件在被引用前,首先必須有它們自己的實(shí)體(ENTITY)和結(jié)構(gòu)體(ARCHITECTURE)的完整描述,這些描述可以放在同一個(gè)文件中,也可以安排在各自獨(dú)立的文件中。在高層模塊中,需要引用的元器件首先通過元器件聲明(COMPONENT)語句進(jìn)行聲明,然后通過端口映射(PORTMAP)語句進(jìn)行元器件的實(shí)例化。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 1.元器件聲明語句(元器件聲明語句(COMPONENT)元器件聲明語句對(duì)元器件的名字和接口信號(hào)進(jìn)行聲明,每一個(gè)元器件都有相應(yīng)的實(shí)體(ENTITY)和結(jié)構(gòu)體(ARCHITECTURE)描述。元器件聲明語句中
34、的元器件名字和接口信號(hào)必須與實(shí)體語句中的實(shí)體名和接口信號(hào)嚴(yán)格地一一對(duì)應(yīng)。它的文法表示是:COMPONENT元器件名ISPORT(端口名字和類型列表);ENDCOMPONENT; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 2.端口映射語句(端口映射語句(PORTMAP)端口映射語句通過定義元器件在系統(tǒng)中的實(shí)際互連關(guān)系來實(shí)現(xiàn)元器件的實(shí)例化。它的文法表示是:標(biāo)號(hào):元器件名PORTMAP(實(shí)際連接信號(hào)列表);其中,實(shí)際連接信號(hào)列表的描述可以有位置映射和名字映射兩種方式。位置映射的例子是:SIGNALx0,x1,y0,y1,c0,c1,c2,s0,s1:BIT;U1:half_adderPORTMAP(x0,y
35、0,c0,c1,s0);U2:half_adderPORTMAP(x1,y1,c1,c2,s1); 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 名字映射的例子是:SIGNALx0,x1,y0,y1,c0,c1,c2,s0,s1:BIT;U1:half_adderPORTMAP(cout=c1,si=s0,cin=c0, xi=x0,yi=y0);U2:half_adderPORTMAP(cin=c1,xi=x1,yi=y1, cout=c2,si=s1); 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 3.連接的斷開(連接的斷開(OPEN)在端口映射語句(PORTMAP)的實(shí)際連接信號(hào)列表中,沒有使用或沒有連接的端
36、口可以用關(guān)鍵字OPEN來表示,例如:U1:half_adderPORTMAP(x0,y0,c0,OPEN,s0); 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 4.生成語句(生成語句(GENERATE)生成語句(GENERATE)的作用類似于宏擴(kuò)展,它可以描述同一元器件的多次實(shí)例化。它的文法表示是:標(biāo)號(hào):FOR標(biāo)識(shí)符IN起始值TO|DOWNTO終止值GENERATE端口映射語句;ENDGENERATE標(biāo)號(hào); 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 7.5VHDL語言對(duì)基本電路行為的描述方法語言對(duì)基本電路行為的描述方法1.VHDL語言的語言的ENTITY結(jié)構(gòu)對(duì)電路接口的描述結(jié)構(gòu)對(duì)電路接口的描述一個(gè)半加器的電路結(jié)
37、構(gòu)如圖72所示,它的輸入接口信號(hào)是a、b,輸出接口信號(hào)是sum、carry。一個(gè)電路模塊的接口是全部端口(PORT)的集合,在VHDL語言中每一個(gè)端口作為一個(gè)信號(hào),具有類型定義,如BIT;同時(shí)具有輸入/輸出方向定義,如IN、OUT、INOUT(雙向)。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 圖72半加器的電路結(jié)構(gòu) 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 半加器的ENTITY描述如下:ENTITYhalfadderIS PORT(a,b:INBIT; sum,carry:OUTBIT);ENDENTITYhalfadder; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) VHDL支持四種基本的對(duì)象類型:變量(VARI
38、ABLE)、常量(CONSTANT)、信號(hào)(SIGNAL)和文件(FILE)。其中,變量和常量類型和傳統(tǒng)的編程語言定義一致,而信號(hào)類型是針對(duì)數(shù)字系統(tǒng)的描述而定義的,與變量類型的區(qū)別在于信號(hào)值是與時(shí)間相聯(lián)系的,信號(hào)的內(nèi)部表示是一個(gè)時(shí)間值的序列,該序列常被稱為信號(hào)的驅(qū)動(dòng)序列。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 2.VHDL的的ARCHITECTURE結(jié)構(gòu)對(duì)電路行為的描述:結(jié)構(gòu)對(duì)電路行為的描述:圖72中的半加器電路的完整描述如下:ENTITYhalfadderISPORT(a,b:INBIT;sum,carry:OUTBIT);ENDENTITYhalfadder;ARCHITECTUREbehav
39、ioralOFhalfadderISBEGINsum=aXORb;carry=aANDb;ENDARCHITECTUREbehavioral 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 如上面的代碼段所示,在VHDL描述中是將數(shù)字系統(tǒng)的接口與內(nèi)部的具體實(shí)現(xiàn)分離開來的,一個(gè)ENTITY可以有多個(gè)不同的ARCHITECTURE,通過CONFIGURATIONS(配置)將ENTITY和一個(gè)特定的ARCHITECTURE對(duì)應(yīng)起來。在上面的代碼段中是遵循綁定規(guī)則,即以默認(rèn)和直接定義的方式,將ENTITY和ARCHITECTURE對(duì)應(yīng)起來。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) VHDL程序由基本設(shè)計(jì)單元和次級(jí)設(shè)計(jì)單元
40、組成。其中,基本設(shè)計(jì)單元包含:-ENTITY-CONFIGURATION-PACKAGE聲明 這些都是獨(dú)立于其他設(shè)計(jì)單元的部分。次級(jí)設(shè)計(jì)單元包含:-PACKAGE體-ARCHITECTURE 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 3.一個(gè)完整的全加器的一個(gè)完整的全加器的VHDL描述描述一個(gè)完整的全加器的電路結(jié)構(gòu)如圖73所示,對(duì)應(yīng)的完整的VHDL描述如下:LIBRARYIEEE;USEIEEE.std_logic_1164.all;ENTITY full-adder ISPORT(in1,in2,c_in:INSTD_LOGIC; sum,c_out:OUTSTD_LOGIC);END ENTITY
41、 full-adder; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) ARCHITECTUREdataflowOFfulladderISSIGNALs1,s2,s3:STD_LOGIC;CONSTANT gate_delay:Time:=5ns;BEGINL1:s1=(in1XORin2)AFTERgate_delay;L2:s2=(c_inANDs1)AFTERgate_delay;L3:s3=(in1ANDin2)AFTERgate_delay;L4:sum=(s1XORc_in)AFTERgate_delay;L5:c_out=(s2ORs3)AFTERgate_delay;END ARCHITE
42、CTURE dataflow; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 圖73一個(gè)完整的全加器的電路結(jié)構(gòu) 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 在上述完整的VHDL描述中,有幾點(diǎn)需要注意:(1)在程序段的頭兩行,在使用IEEE1164賦值系統(tǒng)之前需要加入LIBRARY和PACKAGE聲明語句。LIBRARY中包含了映射到實(shí)際文件目錄的邏輯單元,PACKAGE是類型定義、子程序和函數(shù)的集合,也包括用戶定義的PACKAGE和系統(tǒng)PACKAGE。(2)在ARCHITECTURE中,電路門延遲被定義為一個(gè)常數(shù)類型,常數(shù)值在VHDL程序中是不能改變的。(3)在ARCHITECTURE中,用來連接實(shí)際電路元件的內(nèi)部
43、信號(hào)s1、s2和s3被定義為信號(hào)類型。第7章VHDL語言與數(shù)字電路設(shè)計(jì) 對(duì)于ARCHITECTURE中的簡單信號(hào)賦值語句的執(zhí)行機(jī)制,下列幾點(diǎn)是關(guān)鍵性的定義:(1)一條語句能夠轉(zhuǎn)入執(zhí)行的前提條件是表達(dá)式敏感表中的信號(hào)有事件(EVENT)發(fā)生。(2)信號(hào)賦值語句和電路中的信號(hào)存在一一對(duì)應(yīng)的關(guān)系。(3)文本中的語句順序和實(shí)際的語句執(zhí)行順序沒有必然的聯(lián)系,信號(hào)賦值語句的執(zhí)行順序是由電路中的信號(hào)事件(EVENT)的傳播來決定的。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 4.條件信號(hào)賦值語句條件信號(hào)賦值語句對(duì)于我們熟知的多路選擇器,一個(gè)四選一電路的VHDL描述如下:LIBRARYIEEE;USEIEEE.std
44、_logic_1164.all;ENTITYmux4ISPORT(in0,in1,in2,in3:INSTD_LOGIC;sel:INSTD_LOGIC_VECTOR(1DOWNTO0);z:OUTSTD_LOGIC);ENDENTITYmux4; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) ARCHITECTUREbehavioralOFmux4ISBEGINz=in0 WHEN sel=00ELSEin1WHENsel=01ELSEin2WHENsel=10ELSEin3WHENsel=11ELSEin0;ENDARCHITECTURE dataflow; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 在上述條
45、件選擇中,第一個(gè)為真的表達(dá)式?jīng)Q定了輸出值。如果所有的條件都不滿足,則輸出信號(hào)為in0。另一種條件信號(hào)賦值語句的寫法如下:LIBRARYIEEE;USEIEEE.std_logic_1164.all;ENTITYmux4ISPORT(in0,in1,in2,in3:INSTD_LOGIC;sel:INSTD_LOGIC_VECTOR(1DOWNTO0);z:OUTSTD_LOGIC);ENDENTITYmux4; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) ARCHITECTURE behavioral OF mux4 ISBEGINWITHselSELECTz=in0 when00,in1 WHEN01
46、,in2 WHEN0,in3 WHEN11,in0 WHEN Others;END ARCHITECTURE dataflow; 其中的“WHENOthers”子句可以用來保證所有的情況都被覆蓋到了。第7章VHDL語言與數(shù)字電路設(shè)計(jì) 7.6VHDL語言對(duì)復(fù)雜電路行為的描述方法語言對(duì)復(fù)雜電路行為的描述方法在上述例子中的并行信號(hào)賦值語句可以方便地描述數(shù)字系統(tǒng)中組合電路的門級(jí)行為,但更高層的電路部件有著更復(fù)雜的行為,這些行為已經(jīng)難以用并行信號(hào)賦值語句來描述,或者描述中需要引入狀態(tài)信息,或者需要引入復(fù)雜數(shù)據(jù)結(jié)構(gòu),為此我們需要引入功能更強(qiáng)的描述結(jié)構(gòu)。第7章VHDL語言與數(shù)字電路設(shè)計(jì) 1.進(jìn)程(進(jìn)程(PR
47、OCESS)語句的特點(diǎn))語句的特點(diǎn)用PROCESS語句來描述上面的四選一電路,代碼如下:LIBRARYIEEE;USEIEEE.std_logic_1164.all;ENTITYmux4ISPORT(in0,in1,in2,in3:INSTD_LOGIC;sel:INSTD_LOGIC_VECTOR(1DOWNTO0);z:OUTSTD_LOGIC);ENDENTITYmux4; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) ARCHITECTUREbehavioralOFmux4ISBEGINPROCESS(sel,in0,in1,in2,in3)Variablezout:std_logic;BEGIN
48、IF(sel=00)THENzoutJX-*2/9:JX*2/9=in0;ELSEIF(sel=01)THENzoutJX-*2/9:JX*2/9=in1;ELSEIF(sel=10)THENzoutJX-*2/9:JX*2/9=in2;ELSEzout:=in3;ENDIF;z=zout;ENDPROCESS;ENDARCHITECTUREdataflow; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 對(duì)于ARCHITECTURE中的PROCESS進(jìn)程的執(zhí)行機(jī)制,下列幾點(diǎn)是關(guān)鍵性的定義:(1)進(jìn)程中的語句是順序執(zhí)行的,進(jìn)程中可以包含信號(hào)賦值語句。(2)進(jìn)程體的結(jié)構(gòu)和常規(guī)C語言的函數(shù)非常相似,它們都對(duì)變
49、量作聲明和引用,都采用IFTHEN、IFTHENELSE、CASE、FOR和WHILE語句。(3)進(jìn)程和其他并行信號(hào)賦值語句的關(guān)系是并行執(zhí)行的。(4)進(jìn)程之間是并行執(zhí)行的。(5)進(jìn)程之間通過信號(hào)來通信。(6)一個(gè)進(jìn)程在仿真中的執(zhí)行時(shí)間是0秒,進(jìn)程的執(zhí)行將產(chǎn)生未來的事件。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) (7)以將一個(gè)進(jìn)程等價(jià)地看做一個(gè)復(fù)雜的信號(hào)賦值語句,進(jìn)程的外部行為和一個(gè)并行信號(hào)賦值語句是完全相同的,進(jìn)程描述了更加復(fù)雜的事件產(chǎn)生和處理的操作。(8)變量和信號(hào)在進(jìn)程中的運(yùn)用是不同的,信號(hào)與硬件電路中的連線相對(duì)應(yīng),變量用于標(biāo)識(shí)進(jìn)程中運(yùn)算的中間值。將圖73中的全加器采用等價(jià)的兩個(gè)半加器結(jié)構(gòu)構(gòu)成,
50、得到的電路結(jié)構(gòu)如圖74所示,對(duì)應(yīng)的VHDL代碼如下: 第7章VHDL語言與數(shù)字電路設(shè)計(jì) LIBRARYIEEE;USEIEEE.std_logic_1164.all;ENTITYfulladderISPORT(in1,in2,c_in:INSTD_LOGIC; sum,c_out:OUTSTD_LOGIC);END ENTITYfulladder;ARCHITECTUREdataflowOFfulladderISSIGNALs1,s2,s3:STD_LOGIC;CONSTANTgate_delay:Time:=5ns;BEGIN 第7章VHDL語言與數(shù)字電路設(shè)計(jì) HA1:PROCESS(in1
51、,in2)ISBEGINs1=(in1XORin2)AFTER gate_delay;s2=(c_inANDs1)AFTER gate_delay;ENDPROCESSHA1;HA2:PROCESS(s1,c_in)ISBEGINs3=(in1 AND in2)AFTER gate_delay;sum=(s1 XOR c_in)AFTER gate_delay;END PROCESSHA2;OR1:PROCESS(s2,s3)ISBEGINc_out=(s2ORs3)AFTERgate_delay;ENDPROCESSOR1;END ARCHITECTURE dataflow; 第7章VHDL
52、語言與數(shù)字電路設(shè)計(jì) 圖74含兩個(gè)半加器的全加器 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 2.乘法器的描述乘法器的描述利用PROCESS進(jìn)程內(nèi)部語句串行執(zhí)行的特點(diǎn),可以方便地對(duì)復(fù)雜的算法進(jìn)行描述。一個(gè)3232位的乘法器的VHDL描述如下:LIBRARY IEEE;USEIEEE.std_logic_1164.all;ENTITY mult32 ISPORT(multiplicand,multiplier:INSTD_LOGIC_VECTOR(31DOWNTO0);product:OUTSTD_LOGIC_VECTOR(63DOWNTO0);ENDENTITYmult32; ARCHITECTUREbe
53、havioralOFmult32ISBEGIN 第7章VHDL語言與數(shù)字電路設(shè)計(jì) Mult_process:PROCESS(multiplicand,multiplier)ISVARIABLEproduct_register:STD_LOGIC_VECTOR(63DOWNTO0):=X0000000000000000;VARIABLEmultiplicand_register:STD_LOGIC_VECTOR(31DOWNTO0):=X00000000;BEGINmultiplicand_register:=multiplicand;product_register:=X00000000&mu
54、ltiplier;FORindexIN1TO32LOOPIF product_register(0)=1THEN 第7章VHDL語言與數(shù)字電路設(shè)計(jì) product_register(63DOWNTO32):=product_register(63DOWNTO32)+multiplicand_register;ENDIF;product_register:=0&product_register(63downto1);ENDLOOP;product=product_register;ENDPROCESSMult_process;ENDARCHITECTUREbehavioral; 第7章VHDL語
55、言與數(shù)字電路設(shè)計(jì) 該算法完全模擬了筆算求乘積的過程,逐位相乘,然后做部分積累加。在上面的進(jìn)程語句中,采用了循環(huán)語句。常用的循環(huán)語句有FOR循環(huán)語句和WHILE循環(huán)語句。對(duì)于FOR循環(huán)語句,循環(huán)次數(shù)控制是直接在語句中定義的,F(xiàn)OR循環(huán)語句的循環(huán)次數(shù)控制僅局限在FOR語句中有效,在FOR語句之外是無效的。對(duì)于WHILE循環(huán)語句,退出循環(huán)的條件是由布爾表達(dá)式來決定的,一種典型的用法如下: 第7章VHDL語言與數(shù)字電路設(shè)計(jì) WHILEJ32LOOPJ:=J+1;ENDLOOP; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 3.D觸發(fā)器的描述觸發(fā)器的描述如前所述,PROCESS進(jìn)程語句的引入可以方便狀態(tài)存儲(chǔ)電路的
56、描述。一個(gè)帶異步清零和置位的D觸發(fā)器的電路圖如圖75所示,其PROCESS描述如下:LIBRARYIEEE;USEIEEE.std_logic_1164.all;ENTITYdffISPORT(R,S,clk,D:INSTD_LOGIC; Q,Qbar:OUTSTD_LOGIC);ENDENTITYdff; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) ARCHITECTUREbehavioralOFdffISBEGINPROCESS(R,S,clk)ISBEGINIF(R=0)THENQ=0;Qbar=1;ELSEIF(S=0)THENQ=1;Qbar=0;ELSEIF(rising_edge(clk)
57、THENQ=D;QbarIF x=0THENnext_state=state1;z=1;ELSE next_state=state0;zIFx=1THEN next_state=state0;z=0;ELSE next_state=state1;z=1; END IF 第7章VHDL語言與數(shù)字電路設(shè)計(jì) END CASE;END PROCESSComb_process;Clk_process:PROCESS(reset,clk)ISBEGINIF(reset=1)THENstate=state0;ELSEIF(rising_edge(clk)THENstate=next_state;END IF
58、END PROCESSClk_process;END ARCHITECTURE behavioral; 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 圖77有限狀態(tài)機(jī)的狀態(tài)圖 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 5.自動(dòng)售貨機(jī)的描述自動(dòng)售貨機(jī)的描述自動(dòng)售貨機(jī)作為一個(gè)較為復(fù)雜的有限狀態(tài)機(jī)設(shè)計(jì),它的VHDL描述具有一定的代表性。設(shè)計(jì)的功能描述是:某自動(dòng)售貨機(jī)中僅有一種飲料可以出售,此飲料的售價(jià)為2.5元;此自動(dòng)售貨機(jī)可以識(shí)別1元、2元和5角等三種貨幣;如果投入金額總值等于或超過2元就可以將飲料放出,并具有相應(yīng)的找零錢功能。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 解決方案是可以使用有限自動(dòng)機(jī)實(shí)現(xiàn)自動(dòng)售貨機(jī)的控制。該自
59、動(dòng)機(jī)的輸入包括y1(表示投入1元),y2(表示投入2元)和j5(表示投入5角)。這三個(gè)信號(hào)在有相應(yīng)貨幣輸入時(shí)保持一個(gè)周期的有效,并且最多只有一個(gè)信號(hào)為有效。此外,該自動(dòng)機(jī)還必須有時(shí)鐘clk和復(fù)位信號(hào)rst輸入。該自動(dòng)機(jī)的輸出信號(hào)有三個(gè):cola_out,有效時(shí)表示輸出一罐飲料;j5_out,有效時(shí)表示找5角的零錢;y1_out,有效時(shí)表示找1元的零錢。 該有限自動(dòng)機(jī)的狀態(tài)轉(zhuǎn)移圖如圖78所示。 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 圖78自動(dòng)售貨機(jī)的總體結(jié)構(gòu)和有限狀態(tài)自動(dòng)機(jī) 第7章VHDL語言與數(shù)字電路設(shè)計(jì) 上述自動(dòng)機(jī)的狀態(tài)轉(zhuǎn)移圖看似復(fù)雜,卻非常有規(guī)律。其中,每個(gè)狀態(tài)表示了當(dāng)前已經(jīng)投入的金額,5表示已經(jīng)投入5角,10表示已經(jīng)投入1元,等等;系統(tǒng)復(fù)位后的初始狀態(tài)為0,表示未有錢幣投入。對(duì)于從020的五個(gè)狀態(tài),由于已經(jīng)投入的錢幣還沒有達(dá)到2.5元,因此系統(tǒng)還能接收新的錢幣。所以,這些狀態(tài)的輸出均有三條不同的路徑。以狀態(tài)20為例,此時(shí)已經(jīng)接收了2元,如果繼續(xù)投入5角則進(jìn)入25狀態(tài),表示接收了2.5元;如果繼續(xù)投入1元?jiǎng)t進(jìn)入35狀態(tài),表示已經(jīng)接收了3.5元;如果繼續(xù)投入2元,則進(jìn)入40狀態(tài),表示已經(jīng)接收了4元。第7章VHDL語言與數(shù)字電路設(shè)計(jì) 對(duì)于25、30、35和40等狀態(tài),由于輸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年手賬裝飾膠帶行業(yè)深度調(diào)研及發(fā)展戰(zhàn)略咨詢報(bào)告
- 大傾角有機(jī)工質(zhì)分液冷凝流動(dòng)換熱特性及氣液分離特性研究
- 水通道蛋白MdTIP1.3和MdTIP1.4參與蘋果砧木M26抗旱分子機(jī)理研究
- 公共資源交易平臺(tái)運(yùn)行優(yōu)化研究
- 山東黃金ESG實(shí)踐對(duì)其企業(yè)績效的影響研究
- 新型的自組裝材料和空穴傳輸材料調(diào)節(jié)劑應(yīng)用于鈣鈦礦太陽能電池
- 群舞《開花調(diào)》人物性格塑造的二度創(chuàng)作研究
- 環(huán)保費(fèi)改稅的大氣污染減排效應(yīng)研究
- 基于輕量化CNN的滾動(dòng)軸承故障診斷與壽命預(yù)測(cè)
- 多核銅(Ⅱ)、鋅(Ⅱ)、錳(Ⅲ)、鈷(Ⅲ)和鎘(Ⅱ)Salamo型配合物構(gòu)筑、性質(zhì)及理論研究
- 濰坊市人民醫(yī)院招聘真題
- 銷售人員薪資提成及獎(jiǎng)勵(lì)制度
- 2017年江蘇南京中考滿分作文《無情歲月有味詩》5
- 2023年宏觀經(jīng)濟(jì)學(xué)考點(diǎn)難點(diǎn)
- 2024-2030年中國智慧水務(wù)行業(yè)應(yīng)用需求分析發(fā)展規(guī)劃研究報(bào)告
- 黑龍江申論真題2021年(鄉(xiāng)鎮(zhèn))
- 山體排險(xiǎn)合同模板
- 醫(yī)保專(兼)職管理人員的勞動(dòng)合同(2篇)
- 特殊感染手術(shù)的配合與術(shù)后處理課件
- 檢驗(yàn)科生物安全工作總結(jié)
- 《金屬與石材幕墻工程技術(shù)規(guī)范》jgj1332001-2021112401384
評(píng)論
0/150
提交評(píng)論