《數(shù)字電路與邏輯設(shè)計(jì)》課件第7章_第1頁(yè)
《數(shù)字電路與邏輯設(shè)計(jì)》課件第7章_第2頁(yè)
《數(shù)字電路與邏輯設(shè)計(jì)》課件第7章_第3頁(yè)
《數(shù)字電路與邏輯設(shè)計(jì)》課件第7章_第4頁(yè)
《數(shù)字電路與邏輯設(shè)計(jì)》課件第7章_第5頁(yè)
已閱讀5頁(yè),還剩272頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第7章VHDL語(yǔ)言與數(shù)字電路設(shè)計(jì)7.1電子設(shè)計(jì)自動(dòng)化(EDA)技術(shù)的發(fā)展7.2硬件描述語(yǔ)言對(duì)數(shù)字系統(tǒng)的描述7.3基于硬件描述語(yǔ)言的數(shù)字電路設(shè)計(jì)流程7.4VHDL語(yǔ)言的基本文法7.5VHDL語(yǔ)言對(duì)基本電路行為的描述方法7.6VHDL語(yǔ)言對(duì)復(fù)雜電路行為的描述方法習(xí)題

VHDL是單詞VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage的縮寫(xiě),即高速集成電路硬件描述語(yǔ)言。早在1980年,因?yàn)槊绹?guó)軍事工業(yè)需要規(guī)范電子系統(tǒng)的描述方法,美國(guó)國(guó)防部開(kāi)始進(jìn)行VHDL語(yǔ)言的開(kāi)發(fā),IBM、TI公司也參與了該項(xiàng)目。1987年,由IEEE(InstituteofElectricalandElectronicsEngineers)將VHDL制定為標(biāo)準(zhǔn),稱(chēng)為IEEE1076-1987。第二個(gè)增強(qiáng)版本是在1993年制定的,稱(chēng)為IEEE1076-1993。新增的標(biāo)準(zhǔn)包(packages)增加了數(shù)據(jù)類(lèi)型和時(shí)序的定義,含IEEE1164(datatypes)、IEEE1076.3(numeric)、IEEE1076.4(timing)。

VHDL是一種經(jīng)典的硬件描述語(yǔ)言,在學(xué)習(xí)該語(yǔ)言的具體文法和語(yǔ)法之前,我們需要解答下列問(wèn)題:硬件描述語(yǔ)言和常規(guī)的程序編程語(yǔ)言有哪些區(qū)別和聯(lián)系?硬件描述語(yǔ)言是如何提出和發(fā)展的?硬件描述語(yǔ)言對(duì)數(shù)字系統(tǒng)的設(shè)計(jì)產(chǎn)生了什么樣的影響?

7.1電子設(shè)計(jì)自動(dòng)化(EDA)技術(shù)的發(fā)展

硬件描述語(yǔ)言的產(chǎn)生和基于硬件描述語(yǔ)言的數(shù)字電路設(shè)計(jì)技術(shù)的發(fā)展,是隨著數(shù)字電路的計(jì)算機(jī)輔助設(shè)計(jì),也稱(chēng)為電子設(shè)計(jì)自動(dòng)化(EDA,

ElectronicDesignAutomatic)的發(fā)展而逐步發(fā)展起來(lái)的。

集成電路設(shè)計(jì)自動(dòng)化系統(tǒng)的發(fā)展大致可以分為三個(gè)階段:20世紀(jì)70年代的第一代EDA系統(tǒng),這一代EDA系統(tǒng)常稱(chēng)為計(jì)算機(jī)輔助設(shè)計(jì)CAD系統(tǒng);80年代的第二代EDA系

統(tǒng),常稱(chēng)為計(jì)算機(jī)輔助工程CAE系統(tǒng);90年代的第三代EDA系統(tǒng),這一代EDA系統(tǒng)的特點(diǎn)是實(shí)現(xiàn)了高層次設(shè)計(jì)的自動(dòng)化。

第一代EDA工具的特點(diǎn)是交互式圖形編輯設(shè)計(jì),硬件采用16位小型機(jī),邏輯圖輸入、邏輯模擬、電路模擬、版圖設(shè)計(jì)及版圖驗(yàn)證是分別進(jìn)行的,設(shè)計(jì)人員需要對(duì)設(shè)計(jì)內(nèi)容

進(jìn)行多次的比較和修改才能得到正確的設(shè)計(jì)

第一代CAD系統(tǒng)的引入使設(shè)計(jì)人員擺脫了繁鎖的、容易出錯(cuò)的手工畫(huà)圖的傳統(tǒng)方法,大大提高了效率,因而得到了迅速的推廣。但其缺點(diǎn)也是明顯的,主要表現(xiàn)為不能夠適應(yīng)規(guī)模較大的設(shè)計(jì)項(xiàng)目,而且設(shè)計(jì)周期長(zhǎng)、費(fèi)用高,如果在投片以后發(fā)現(xiàn)原設(shè)計(jì)存在錯(cuò)誤,則不得不返工修改,其代價(jià)是高昂的。

第二代EDA工具集邏輯圖輸入、邏輯模擬、測(cè)試碼生成、電路模擬、版圖輸入、版圖驗(yàn)證等工具于一體,構(gòu)成了一個(gè)較完整的設(shè)計(jì)系統(tǒng)。工程師以輸入電路原理圖的方式開(kāi)始設(shè)計(jì),并在32位工作站上完成全部設(shè)計(jì)工作。它支持全定制電路設(shè)計(jì),同時(shí)支持門(mén)陣列、標(biāo)準(zhǔn)單元的自動(dòng)設(shè)計(jì)。對(duì)于門(mén)陣列、標(biāo)準(zhǔn)單元等電路,系統(tǒng)可完成自動(dòng)布局、自動(dòng)布線功能,因而大大減輕了設(shè)計(jì)版圖的工作量。

第二代EDA系統(tǒng)的特點(diǎn)是支持一致性檢查和后模擬功能。一致性檢查是指在版圖與電路之間的一致性檢查,即對(duì)版圖進(jìn)行版圖參數(shù)提取,得到相應(yīng)的電路圖,并將此電路圖

與設(shè)計(jì)所依據(jù)的原電路圖進(jìn)行比較,從而檢查設(shè)計(jì)是否有錯(cuò)。后模擬是將版圖參數(shù)提取得到的版圖寄生參數(shù)引入電路圖,通過(guò)電路模擬進(jìn)一步檢查電路的時(shí)序關(guān)系和速度(在引入這些寄生參數(shù)后)是否仍符合原來(lái)設(shè)計(jì)要求。這些功能的引入有力地保證了一次投片成功。但是一致性檢查和后模擬是在設(shè)計(jì)的最后階段才加以實(shí)施的,因而一旦發(fā)現(xiàn)錯(cuò)誤,就需修改版圖或修改電路,仍然要付出相當(dāng)大的代價(jià)。

第三代EDA工具出現(xiàn)于20世紀(jì)90年代,隨著芯片的復(fù)雜程度愈來(lái)愈高,數(shù)萬(wàn)門(mén)及數(shù)十萬(wàn)門(mén)的電路設(shè)計(jì)越來(lái)越多,單是靠原理圖輸入方式已經(jīng)不堪忍受,采用硬件描述語(yǔ)言

(HDL,

HardwareDescribeLanguage)的設(shè)計(jì)方式就應(yīng)運(yùn)而生,設(shè)計(jì)工作從行為級(jí)、功能級(jí)開(kāi)始,

EDA向設(shè)計(jì)的高層次發(fā)展,這樣就出現(xiàn)了第三代EDA系統(tǒng)。

第三代EDA系統(tǒng)的特點(diǎn)是高層次設(shè)計(jì)的自動(dòng)化。該系統(tǒng)引入了硬件描述語(yǔ)言,一般采用VHDL或Verilog語(yǔ)言,同時(shí)引入了行為綜合和邏輯綜合工具。設(shè)計(jì)采用較高的抽象

層次進(jìn)行描述,并按照層次式方法進(jìn)行管理,大大提高了處理復(fù)雜設(shè)計(jì)的能力,設(shè)計(jì)所需的周期也大幅度地縮短。綜合優(yōu)化工具的采用使芯片的面積、速度、功耗獲得了優(yōu)化,第

三代EDA系統(tǒng)迅速得到了推廣應(yīng)用。

高層次設(shè)計(jì)是與具體生產(chǎn)技術(shù)無(wú)關(guān)的,亦即與工藝無(wú)關(guān)。一個(gè)HDL原碼可以通過(guò)邏輯綜合工具綜合成為一個(gè)現(xiàn)場(chǎng)可編程門(mén)陣列,既FPGA電路,也可綜合成某一工藝所支持的專(zhuān)用集成電路,即ASIC電路。HDL原碼對(duì)于FPGA和ASIC是完全一樣的,僅需要更換不同的庫(kù)重新進(jìn)行綜合。隨著工藝技術(shù)的進(jìn)步,需要采用更先進(jìn)的工藝時(shí),如從0.35μm技術(shù)轉(zhuǎn)移到0.8μm技術(shù)時(shí),可利用原來(lái)所書(shū)寫(xiě)的HDL原碼。

前兩代的CAD設(shè)計(jì)系統(tǒng)是以軟件工具為核心的,第三代EDA系統(tǒng)是一個(gè)統(tǒng)一的、協(xié)同的、集成化的、以數(shù)據(jù)庫(kù)為核心的系統(tǒng)。它具有面向目標(biāo)的各種數(shù)據(jù)模型及數(shù)據(jù)管理系統(tǒng),有一致性較好的用戶界面系統(tǒng),有基于圖形界面的設(shè)計(jì)管理環(huán)境和設(shè)計(jì)管理系統(tǒng)。在此基礎(chǔ)上,第三代EDA系統(tǒng)實(shí)現(xiàn)了操作的協(xié)同性、結(jié)構(gòu)的開(kāi)放性和系統(tǒng)的可移植性。

礎(chǔ)上,第三代EDA系統(tǒng)實(shí)現(xiàn)了操作的協(xié)同性、結(jié)構(gòu)的開(kāi)放性和系統(tǒng)的可移植性。其中操作的協(xié)同性是指可在多窗口的環(huán)境下同時(shí)運(yùn)行多個(gè)工具。例如,當(dāng)版圖編輯器完成了一個(gè)多邊形的設(shè)計(jì)時(shí),該多邊形就被存入數(shù)據(jù)庫(kù),被存入信息對(duì)版圖設(shè)計(jì)規(guī)則檢查器同樣有效。因此,允許在版圖過(guò)程中交替地進(jìn)行版圖設(shè)計(jì)規(guī)則檢查,以避免整個(gè)設(shè)計(jì)過(guò)程的反復(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í)訪問(wèn)設(shè)計(jì)過(guò)程中的多種信息,并能分享設(shè)計(jì)數(shù)據(jù)。

結(jié)構(gòu)的開(kāi)放性是指通過(guò)一定的編程語(yǔ)言可以訪問(wèn)統(tǒng)一的數(shù)據(jù)庫(kù),同時(shí)在此結(jié)構(gòu)框架中可嵌入第三方所開(kāi)發(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.2硬件描述語(yǔ)言對(duì)數(shù)字系統(tǒng)的描述

VHDL作為一種經(jīng)典的硬件描述語(yǔ)言,它主要包含三方面的功能:實(shí)現(xiàn)電路系統(tǒng)的文檔化描述、支持系統(tǒng)仿真和支持系統(tǒng)綜合。VHDL語(yǔ)言和常規(guī)的程序編程語(yǔ)言有哪些區(qū)別和聯(lián)系呢?

常規(guī)的程序編程語(yǔ)言主要用來(lái)實(shí)現(xiàn)數(shù)值運(yùn)算和數(shù)據(jù)處理,硬件描述語(yǔ)言則是對(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)行描述:

?開(kāi)關(guān)級(jí):描述晶體管的開(kāi)關(guān)行為。

?寄存器傳輸級(jí):描述組合電路和時(shí)序電路的邏輯結(jié)構(gòu)。

?指令級(jí)體系結(jié)構(gòu)級(jí):描述微處理器的功能行為。

綜合這些不同的角度和抽象級(jí)別,數(shù)字系統(tǒng)的描述可以用Gajski和Kuhn提出的著名的Y圖來(lái)表示,如圖7-1所示。數(shù)字系統(tǒng)設(shè)計(jì)是圍繞圖中層次化的描述而逐步展開(kāi)和細(xì)

化的,硬件描述語(yǔ)言能夠在上述不同的抽象層次上對(duì)系統(tǒng)的各個(gè)方面進(jìn)行描述。硬件描述語(yǔ)言所描述的系統(tǒng)模型能夠在不同的抽象層次之間保持良好的互操作性,一方面實(shí)現(xiàn)了設(shè)

計(jì)的工藝無(wú)關(guān)性,即模塊是可移植的;另一方面,支持設(shè)計(jì)的可重用和快速系統(tǒng)原型的實(shí)現(xiàn)。圖7-1數(shù)字系統(tǒng)設(shè)計(jì)所涵蓋的領(lǐng)域

7.3基于硬件描述語(yǔ)言的數(shù)字電路設(shè)計(jì)流程

與圖7-1相對(duì)應(yīng),基于硬件描述語(yǔ)言的數(shù)字電路設(shè)計(jì)包含高層次綜合、邏輯綜合和物理綜合三個(gè)階段的工作。

高層次綜合也稱(chēng)為行為級(jí)綜合(BehavioralSynthesis),它的任務(wù)是將一個(gè)設(shè)計(jì)的行為級(jí)描述轉(zhuǎn)換成寄存器傳輸級(jí)的結(jié)構(gòu)描述。其設(shè)計(jì)步驟是,首先翻譯和分析設(shè)計(jì)的HDL語(yǔ)言描述,在給定的一組性能、面積和功耗的條件下,確定需要哪些硬件資源,如執(zhí)行單元、存儲(chǔ)器、控制器、總線等,通常稱(chēng)這一步為資源分配(Allocation);其次確定在這一結(jié)構(gòu)中各種操作的次序,通常稱(chēng)這一步為調(diào)度(Scheduling)。同時(shí)還可通過(guò)行為級(jí)和寄存器傳輸級(jí)硬件仿真進(jìn)行驗(yàn)證。由于實(shí)現(xiàn)同一功能可以有多種硬件結(jié)構(gòu),因此高層次綜合的目的就是要在滿足目標(biāo)和約束的條件下,找到一個(gè)代價(jià)最小的硬件結(jié)構(gòu),并使設(shè)計(jì)的功能最佳。

邏輯綜合是將邏輯級(jí)的行為描述轉(zhuǎn)換成邏輯級(jí)的結(jié)構(gòu)描述,即邏輯門(mén)級(jí)網(wǎng)表。邏輯級(jí)的行為描述可以是狀態(tài)轉(zhuǎn)移圖、有限狀態(tài)機(jī),也可以是布爾方程、真值表或硬件描述語(yǔ)言。

邏輯綜合過(guò)程還包括一些優(yōu)化步驟,如資源共享、連接優(yōu)化和時(shí)鐘分配等。優(yōu)化目標(biāo)是面積最小、速度最快、功耗最低或它們之間的折衷。

邏輯綜合分成兩個(gè)階段:首先是與工藝無(wú)關(guān)的階段,此階段采用布爾操作或代數(shù)操作技術(shù)來(lái)優(yōu)化邏輯;其次是工藝映射階段,此階段根據(jù)電路的性質(zhì)(如組合型或時(shí)序型)及采

用的結(jié)構(gòu)(多層邏輯、PLD或FPGA)作出具體的映射,將與工藝無(wú)關(guān)的描述轉(zhuǎn)換成門(mén)級(jí)網(wǎng)表或PLD(或FPGA)的專(zhuān)門(mén)文件。邏輯綜合優(yōu)化完成后,還需要進(jìn)行細(xì)致的時(shí)延分析和時(shí)延優(yōu)化。此外還要進(jìn)行邏輯仿真,邏輯仿真是保證設(shè)計(jì)正確的關(guān)鍵步驟。

過(guò)去通常采用軟件模擬的方法,近年來(lái)則強(qiáng)調(diào)硬件仿真手段,如通過(guò)PLD或FPGA進(jìn)行仿真。邏輯綜合還包含測(cè)試綜合的步驟,測(cè)試綜合實(shí)現(xiàn)自動(dòng)測(cè)試圖形生成(ATPG,AutomaticTestPatternGeneration),為可測(cè)性提供高故障覆蓋率的測(cè)試圖形。測(cè)試綜合還可以消去設(shè)計(jì)中的冗余邏輯,診斷不可測(cè)試的邏輯結(jié)構(gòu),還能夠自動(dòng)插入可測(cè)性結(jié)構(gòu)。

物理綜合也稱(chēng)版圖綜合(LayoutSynthesis),它的任務(wù)是將門(mén)級(jí)網(wǎng)表自動(dòng)轉(zhuǎn)換成版圖,即完成布圖。

與傳統(tǒng)的電路設(shè)計(jì)方法相比,基于硬件描述語(yǔ)言的數(shù)字電路設(shè)計(jì)方法具有以下四方面的優(yōu)勢(shì):

(1)采用自上向下(Top-down)的設(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ì)。

第一層次是行為描述。所謂行為描述,實(shí)質(zhì)上就是對(duì)整個(gè)系統(tǒng)的數(shù)學(xué)模型的描述。在行為描述階段,并不真正考慮實(shí)際的操作和算法用什么方法來(lái)實(shí)現(xiàn),考慮更多的是系統(tǒng)結(jié)

構(gòu)及其工作過(guò)程是否能達(dá)到系統(tǒng)結(jié)構(gòu)及用戶規(guī)格的要求,通過(guò)對(duì)系統(tǒng)行為描述的仿真來(lái)發(fā)現(xiàn)設(shè)計(jì)中存在的問(wèn)題。

第二層次是RTL描述。這一層次稱(chēng)為寄存器傳輸描述(即數(shù)據(jù)流描述)。用行為方式描述的系統(tǒng)結(jié)構(gòu)的抽象程度高,很難直接映射到具體邏輯元的硬件實(shí)現(xiàn)。要想得到硬件的

具體實(shí)現(xiàn),必須將以行為方式描述的VHDL程序改寫(xiě)為以RTL方式描述的VHDL程序,才能導(dǎo)出系統(tǒng)的邏輯表達(dá)式,最終才能進(jìn)行邏輯綜合。在完成編寫(xiě)RTL方式的描述程序

以后,再用仿真工具對(duì)RTL方式描述的程序進(jìn)行仿真。如果這一步仿真通過(guò),那么就可以用邏輯綜合工具進(jìn)行綜合了。

第三層次是邏輯綜合。邏輯綜合階段是利用邏輯綜合工具將RTL方式描述的程序轉(zhuǎn)換成用基本邏輯元件表示的文件(門(mén)級(jí)網(wǎng)表),之后對(duì)門(mén)級(jí)網(wǎng)表再進(jìn)行仿真,并檢查定時(shí)關(guān)系。

如果在上述三個(gè)層次的某個(gè)層次上發(fā)現(xiàn)有問(wèn)題,都應(yīng)返回上一層,尋找和修改相應(yīng)的錯(cuò)誤,然后再向下繼續(xù)未完成的工作。

(2)采用系統(tǒng)早期仿真。從自上而下的設(shè)計(jì)過(guò)程可以看到,在系統(tǒng)設(shè)計(jì)過(guò)程中要進(jìn)行三次仿真,即行為層次仿真、RTL層次仿真和門(mén)級(jí)層次仿真,也就是進(jìn)行系統(tǒng)數(shù)學(xué)模型的仿真、系統(tǒng)數(shù)據(jù)流的仿真和系統(tǒng)門(mén)電路原理的仿真。這三級(jí)仿真貫穿系統(tǒng)硬件設(shè)計(jì)的全過(guò)程,從而可以在系統(tǒng)設(shè)計(jì)早期發(fā)現(xiàn)設(shè)計(jì)中存在的問(wèn)題。與傳統(tǒng)設(shè)計(jì)的后期仿真相比,早期仿真可大大縮短系統(tǒng)的設(shè)計(jì)周期,節(jié)約大量的人力和物力。

(3)降低硬件電路設(shè)計(jì)難度。在采用傳統(tǒng)的硬件電路設(shè)計(jì)方法時(shí),往往要求設(shè)計(jì)者寫(xiě)出該電路的邏輯表達(dá)式、真值表、時(shí)序電路的狀態(tài)表。這一工作是相當(dāng)困難和繁雜的,特

別是在系統(tǒng)比較復(fù)雜時(shí)更是如此。在用HDL語(yǔ)言設(shè)計(jì)硬件電路時(shí),就可以使設(shè)計(jì)者免除編寫(xiě)邏輯表或真值表之苦。

(4)主要設(shè)計(jì)文件使用HDL語(yǔ)言編寫(xiě)的源程序。HDL語(yǔ)言的源程序作為歸檔文件有很多好處,其一是資料良好,便于保存;其二是可繼承性好。當(dāng)設(shè)計(jì)其他硬件電路時(shí),可以

使用文件中的某些硬件電路的工作原理和邏輯關(guān)系,而閱讀原理圖,推知其工作原理卻需要較多的硬件知識(shí)和經(jīng)驗(yàn),并且看起來(lái)也不那么一目了然。

7.4VHDL語(yǔ)言的基本文法

7.4.1基本語(yǔ)言要素

1.注釋

VHDL中的注釋由兩個(gè)連續(xù)的短線(--)開(kāi)始,直到行尾。

2.標(biāo)識(shí)符

VHDL中的標(biāo)識(shí)符可以是常數(shù)、變量、信號(hào)、端口、子程序或參數(shù)的名字。使用標(biāo)識(shí)符要遵守如下法則:

(1)標(biāo)識(shí)符由字母(A~Z;a~z)、數(shù)字和下劃線字符組成。

(2)必須以英文字母開(kāi)頭。

(3)末字符不能為下劃線。

(4)不允許出現(xiàn)兩個(gè)連續(xù)下劃線。

(5)不區(qū)分大小寫(xiě)字母。

(6)VHDL定義的保留字(或稱(chēng)關(guān)鍵字)不能用作標(biāo)識(shí)符。

3.數(shù)據(jù)對(duì)象

數(shù)據(jù)對(duì)象有三種:信號(hào)、變量和常量。信號(hào)表示電路接線上的邏輯信號(hào);變量表示數(shù)據(jù)值,用于行為模型中的計(jì)算;常數(shù)是一個(gè)固定的值,作用是使設(shè)計(jì)實(shí)體中的常數(shù)更容易

閱讀和修改。常數(shù)只要被賦值就不能再改變。

4.數(shù)據(jù)類(lèi)型

1)位(Bit)和位矢量(Bit_Vector)

位的取值是0或1;位矢量是用雙引號(hào)括起來(lái)的一組位數(shù)據(jù),使用位矢量必須注明位寬。

2)標(biāo)準(zhǔn)邏輯位(STD_LOGIC)和標(biāo)準(zhǔn)邏輯矢量(STD_LOGIC_VECTOR)在IEEE庫(kù)的程序包STD_LOGIC1164中,定義了兩個(gè)重要的數(shù)據(jù)類(lèi)型,即標(biāo)準(zhǔn)邏輯位STD_LOGIC和標(biāo)準(zhǔn)邏輯矢量STD_LOGIC_VECTOR,該數(shù)據(jù)類(lèi)型可以更精確地表示實(shí)際電路的信號(hào)值。STD_LOGIC數(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)值。

3)整數(shù)(INTEGER)

整數(shù)類(lèi)型的數(shù)代表正整數(shù)、負(fù)整數(shù)和零,表示的范圍為-(231

-1)~(231

-1),它與算術(shù)整數(shù)相似,可進(jìn)行“+”、“-”、“*”、“/”等算術(shù)運(yùn)算,不能用于邏輯運(yùn)算。

4)布爾量(BOOLEAN)

一個(gè)布爾量具有兩個(gè)狀態(tài):“真”或“假”。布爾量不屬于數(shù)值,因此不能用于運(yùn)算,它只能通過(guò)關(guān)系運(yùn)算符獲得。

5)枚舉類(lèi)型

用戶通過(guò)枚舉類(lèi)型可以定義數(shù)據(jù)對(duì)象所有可能的取值。其文法表示是:TYPEidentifierIS(value1,

value2,…);

6)陣列類(lèi)型

用戶通過(guò)陣列類(lèi)型可以將同一類(lèi)型的單個(gè)數(shù)據(jù)對(duì)象組織成為一維或多維的陣列。其文法表示是:

TYPEidentifierISARRAY(range)OFtype;

7)子類(lèi)型

子類(lèi)型是某一個(gè)類(lèi)型的子集。其文法表示是:

SUBTYPEidentifierIStypeRANGErange;

5.數(shù)據(jù)對(duì)象操作運(yùn)算操作符

在VHDL語(yǔ)言中共用四類(lèi)操作符,可以分別進(jìn)行邏輯運(yùn)算(Logic)、關(guān)系運(yùn)算(Relational)、算術(shù)運(yùn)算(Arithmetic)和并置運(yùn)算(Concatenation)。被操作符所操作的對(duì)象是操作數(shù),操作數(shù)的類(lèi)型應(yīng)該和操作符所要求的類(lèi)型相一致。

1)邏輯運(yùn)算符

NOT(非)

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)右移)

6.實(shí)體(ENTITY)

實(shí)體定義電路模塊的名字和接口,其中接口部分包含了該電路模塊的輸入和輸出信號(hào)。其文法表示是:

ENTITY實(shí)體名IS

PORT(端口名和類(lèi)型);

END實(shí)體名;

7.結(jié)構(gòu)體(ARCHITECTURE)

結(jié)構(gòu)體描述電路模塊的具體實(shí)現(xiàn)。結(jié)構(gòu)體的文法因設(shè)計(jì)者所采用的電路模塊描述方法的不同而不同,通??梢圆捎脭?shù)據(jù)流(dataflow)模型、行為(behavioral)模型和結(jié)構(gòu)(struc-

tural)模型描述法。

1)針對(duì)數(shù)據(jù)流模型的結(jié)構(gòu)體文法表示

ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS

[內(nèi)部信號(hào)定義];

BEGIN

[并行賦值語(yǔ)句];

END結(jié)構(gòu)體名;

其中并行賦值語(yǔ)句是并行執(zhí)行的。

2)針對(duì)行為模型的結(jié)構(gòu)體文法表示

ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS

[內(nèi)部信號(hào)定義];

[函數(shù)定義];

[子程序定義];

BEGIN

[進(jìn)程模塊];

[并行賦值語(yǔ)句];

END結(jié)構(gòu)體名;

其中,進(jìn)程模塊內(nèi)部的語(yǔ)句是串行執(zhí)行的,而進(jìn)程模塊之間及進(jìn)程模塊和并行賦值語(yǔ)句之間是并行執(zhí)行的。

3)針對(duì)結(jié)構(gòu)模型的結(jié)構(gòu)體文法表示

ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS

[元器件定義];

[內(nèi)部信號(hào)定義];

BEGIN

[元器件實(shí)例化語(yǔ)句];

[并行賦值語(yǔ)句];

END結(jié)構(gòu)體名;

8.包(PACKAGE)

包將電路模塊描述中所用到的信號(hào)定義、常數(shù)定義、數(shù)據(jù)類(lèi)型、元件語(yǔ)句、函數(shù)定義和過(guò)程定義等集合到一起,以便于在描述中統(tǒng)一引用。包結(jié)構(gòu)本身包含一個(gè)包聲明和一個(gè)

包體。

1)包聲明和包體

包聲明中包含了所有被實(shí)體ENTITY共享的相關(guān)定義項(xiàng),即這些定義項(xiàng)對(duì)實(shí)體ENTITY是可見(jiàn)的。包體中的內(nèi)容就是包聲明中所涉及的函數(shù)和子程序的具體實(shí)現(xiàn)。

包聲明部分的文法是:

PACKAGE包名IS

[類(lèi)型定義];

[子類(lèi)型定義];

[信號(hào)定義];

[變量定義];

[常量定義];

[元器件聲明];

[函數(shù)聲明];

[子程序聲明];

END包名;

包體部分的文法是:

PACKAGEBODY包名IS

[函數(shù)實(shí)現(xiàn)];

[子程序?qū)崿F(xiàn)];

END包名;

2)包的使用

可以通過(guò)LIBRARY和USE語(yǔ)句來(lái)使用一個(gè)包。對(duì)應(yīng)的文法是:

LIBRARY庫(kù)名;

USE庫(kù)名.包名.ALL;

7.4.2數(shù)據(jù)流模型中的并行語(yǔ)句

數(shù)據(jù)流模型中的并行語(yǔ)句是并行執(zhí)行的,因此這些語(yǔ)句的前后順序?qū)?zhí)行的結(jié)果沒(méi)有影響。

1.并行信號(hào)賦值語(yǔ)句

并行信號(hào)賦值語(yǔ)句將一個(gè)值或一個(gè)表達(dá)式的計(jì)算結(jié)果賦值給一個(gè)信號(hào)。并行信號(hào)賦值語(yǔ)句能夠轉(zhuǎn)入執(zhí)行的條件是計(jì)算表達(dá)式中的信號(hào)發(fā)生了變化,同時(shí)被賦值信號(hào)的變化需要

一定的延遲才能實(shí)現(xiàn),信號(hào)賦值不是立刻發(fā)生的。其對(duì)應(yīng)的文法是:

信號(hào)<=計(jì)算表達(dá)式;

2.條件信號(hào)賦值語(yǔ)句

條件信號(hào)賦值語(yǔ)句按照不同的條件對(duì)信號(hào)賦予不同的值。該語(yǔ)句轉(zhuǎn)入執(zhí)行的條件是計(jì)

算表達(dá)式中的信號(hào)值或條件發(fā)生了變化。其對(duì)應(yīng)的文法是:

信號(hào)<=值1WHEN條件ELSE

值2WHEN條件ELSE

?

值3;

3.選擇信號(hào)賦值語(yǔ)句

選擇信號(hào)賦值語(yǔ)句根據(jù)選擇表達(dá)式對(duì)信號(hào)賦予不同的值。該語(yǔ)句轉(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á)式中所有可能的取值??梢杂藐P(guān)鍵字OTHERS來(lái)表示所有剩余的條件選擇。

7.4.3行為模型中的串行語(yǔ)句

在行為模型的描述中,可以采用和常規(guī)計(jì)算機(jī)程序類(lèi)似的串行執(zhí)行的語(yǔ)句。串行語(yǔ)句支持多種標(biāo)準(zhǔn)語(yǔ)句結(jié)構(gòu),例如變量賦值、if-then-else和loops

1.進(jìn)程(PROCESS)

在進(jìn)程模塊中包含的語(yǔ)句都是串行執(zhí)行的,而進(jìn)程語(yǔ)句自身是一個(gè)并行語(yǔ)句,即多個(gè)進(jìn)程語(yǔ)句之間是并行執(zhí)行的。多個(gè)進(jìn)程模塊可以和并行語(yǔ)句組合在一起使用。其對(duì)應(yīng)的文

法是:

進(jìn)程名:PROCESS(敏感信號(hào)表)

[變量定義];

BEGIN

[串行語(yǔ)句];

ENDPROCESS進(jìn)程名;

敏感信號(hào)表中包含一組由逗號(hào)隔開(kāi)的信號(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)部的全部串行語(yǔ)句后,進(jìn)程將被掛起,

等待敏感表中的信號(hào)有新的變化發(fā)生。

2.串行信號(hào)賦值語(yǔ)句

串行信號(hào)賦值語(yǔ)句的結(jié)構(gòu)和并行賦值語(yǔ)句是一樣的,只是它的執(zhí)行機(jī)制是串行執(zhí)行的。其對(duì)應(yīng)的文法是:

信號(hào)<=計(jì)算表達(dá)式;

3.變量賦值語(yǔ)句

變量賦值語(yǔ)句將一個(gè)值或計(jì)算表示式的結(jié)果賦值給一個(gè)變量。變量賦值語(yǔ)句對(duì)變量的賦值操作是立刻執(zhí)行的,不存在延遲。變量只能在進(jìn)程模塊內(nèi)部定義。其對(duì)應(yīng)的文法是:

變量:=計(jì)算表達(dá)式;

4.WAIT語(yǔ)句

如果一個(gè)進(jìn)程的敏感表不為空,則在執(zhí)行完進(jìn)程中的最后一條語(yǔ)句后,進(jìn)程被掛起。也可以利用WAIT語(yǔ)句來(lái)掛起一個(gè)進(jìn)程。對(duì)應(yīng)的文法是:

WAITUNTIL條件表達(dá)式;

5.IFTHENELSE語(yǔ)句

IFTHENELSE語(yǔ)句的文法是:

IF條件THEN

[串行語(yǔ)句1];

ELSE

[串行語(yǔ)句2];

ENDIF;

IF條件1THEN

[串行語(yǔ)句1];

ELSEIF條件2THEN

[串行語(yǔ)句2];

?

ELSE

[串行語(yǔ)句3];

6.CASE語(yǔ)句

CASE語(yǔ)句的文法是:

CASE條件表達(dá)式IS

WHEN條件選擇=>[串行語(yǔ)句];

WHEN條件選擇=>[串行語(yǔ)句];

?

WHENOTHERS=>[串行語(yǔ)句];

ENDCASE;

7.NULL語(yǔ)句

NULL語(yǔ)句代表一個(gè)空操作語(yǔ)句,它的執(zhí)行不會(huì)引起任何操作。它的文法是:

NULL;

8.FOR語(yǔ)句

FOR語(yǔ)句的文法是:

FOR標(biāo)識(shí)符IN起始值[TO|DOWNTO]終止值LOOP

[串行語(yǔ)句];

ENDLOOP;

循環(huán)范圍值必須是一個(gè)靜態(tài)值。FOR語(yǔ)句中的標(biāo)識(shí)符是一個(gè)隱式定義的變量,不需要做專(zhuān)門(mén)的說(shuō)明。例如:

sum:=0;

FORcountIN1TO10LOOP

sum:=sum+count;

ENDLOOP

9.WHILE語(yǔ)句

WHILE語(yǔ)句的文法是:

WHILE條件表達(dá)式LOOP

[串行語(yǔ)句];

ENDLOOP;

10.LOOP語(yǔ)句

LOOP語(yǔ)句的文法是:

LOOP

[串行語(yǔ)句];

EXITWHEN條件表達(dá)式;

ENDLOOP;

11.EXIT語(yǔ)句

EXIT語(yǔ)句只能在LOOP語(yǔ)句的循環(huán)結(jié)構(gòu)中使用,它的執(zhí)行將使內(nèi)部循環(huán)被中斷。它的文法表示是:

EXITWHEN條件表達(dá)式;

12.NEXT語(yǔ)句

NEXT語(yǔ)句只能在LOOP語(yǔ)句的循環(huán)結(jié)構(gòu)中使用,它的執(zhí)行將使當(dāng)前循環(huán)直接跳到循環(huán)底部并開(kāi)始下一輪的循環(huán)。NEXT語(yǔ)句通常和FOR語(yǔ)句搭配使用,它的文法表示是:

NEXTWHENcondition;

使用舉例:

sum:=0;

FORcountIN1TO10LOOP

NEXTWHENcount=3;

sum:=sum+count;

ENDLOOP;

13.函數(shù)(FUNCTION)

函數(shù)聲明的文法是:

FUNCTION函數(shù)名(參數(shù)表)RETURN返回值類(lèi)型;

函數(shù)定義的文法是:

FUNCTION函數(shù)名(參數(shù)表)RETURN返回值類(lèi)型IS

BEGIN

[串行語(yǔ)句];

END函數(shù)名;

函數(shù)調(diào)用的文法是:

函數(shù)名(實(shí)際參數(shù)值);

需要說(shuō)明的是,參數(shù)表中的參數(shù)是輸入的信號(hào)或變量。

14.子程序(PROCEDURE)

子程序聲明的文法是:

PROCEDURE子程序名(參數(shù)表);

子程序定義的文法是:

PROCEDURE子程序名(參數(shù)表)IS

BEGIN

[串行語(yǔ)句];

END子程序名;

子程序調(diào)用的文法是:

子程序名(實(shí)際參數(shù)值);

需要說(shuō)明的是,參數(shù)表中的參數(shù)可以是輸入、輸出或雙向的變量。

7.4.4結(jié)構(gòu)化模型的描述語(yǔ)句

在結(jié)構(gòu)化模型的描述中,多個(gè)電路元器件通過(guò)信號(hào)的互連來(lái)構(gòu)成一個(gè)更高層的模塊。這些元器件在被引用前,首先必須有它們自己的實(shí)體(ENTITY)和結(jié)構(gòu)體(ARCHITEC-

TURE)的完整描述,這些描述可以放在同一個(gè)文件中,也可以安排在各自獨(dú)立的文件中。在高層模塊中,需要引用的元器件首先通過(guò)元器件聲明(COMPONENT)語(yǔ)句進(jìn)行聲明,

然后通過(guò)端口映射(PORTMAP)語(yǔ)句進(jìn)行元器件的實(shí)例化。

1.元器件聲明語(yǔ)句(COMPONENT)

元器件聲明語(yǔ)句對(duì)元器件的名字和接口信號(hào)進(jìn)行聲明,每一個(gè)元器件都有相應(yīng)的實(shí)體(ENTITY)和結(jié)構(gòu)體

ARCHITECTURE)描述。元器件聲明語(yǔ)句中的元器件名字和接口信號(hào)必須與實(shí)體語(yǔ)句中的實(shí)體名和接口信號(hào)嚴(yán)格地一一對(duì)應(yīng)。它的文法表示是:

COMPONENT元器件名IS

PORT(端口名字和類(lèi)型列表);

ENDCOMPONENT;

2.端口映射語(yǔ)句(PORTMAP)

端口映射語(yǔ)句通過(guò)定義元器件在系統(tǒng)中的實(shí)際互連關(guān)系來(lái)實(shí)現(xiàn)元器件的實(shí)例化。它的文法表示是:

標(biāo)號(hào):元器件名PORTMAP(實(shí)際連接信號(hào)列表);

其中,實(shí)際連接信號(hào)列表的描述可以有位置映射和名字映射兩種方式。位置映射的例子是:

3.連接的斷開(kāi)(OPEN)

在端口映射語(yǔ)句(PORTMAP)的實(shí)際連接信號(hào)列表中,沒(méi)有使用或沒(méi)有連接的端口可以用關(guān)鍵字OPEN來(lái)表示,例如:

U1:half_adderPORTMAP(x0,y0,

c0,

OPEN,

s0);

4.生成語(yǔ)句(GENERATE)

生成語(yǔ)句(GENERATE)的作用類(lèi)似于宏擴(kuò)展,它可以描述同一元器件的多次實(shí)例化。它的文法表示是:

標(biāo)號(hào):FOR標(biāo)識(shí)符IN起始值[TO|DOWNTO]終止值GENERATE

[端口映射語(yǔ)句];

ENDGENERATE標(biāo)號(hào);

7.5VHDL語(yǔ)言對(duì)基本電路行為的描述方法

如前所述,

VHDL語(yǔ)言主要是對(duì)設(shè)計(jì)對(duì)象進(jìn)行描述,按自上向下的層次,這些對(duì)象包括系統(tǒng)、芯片、邏輯模塊和寄存器。就每一個(gè)具體設(shè)計(jì)對(duì)象而言,需要描述的內(nèi)容包括:接口,即設(shè)計(jì)實(shí)體對(duì)外部的連接關(guān)系;功能,即設(shè)計(jì)實(shí)體所進(jìn)行的操作。

1.VHDL語(yǔ)言的ENTITY結(jié)構(gòu)對(duì)電路接口的描述

一個(gè)半加器的電路結(jié)構(gòu)如圖7-2所示,它的輸入接口信號(hào)是a、b,輸出接口信號(hào)是sum、carry。一個(gè)電路模塊的接口是全部端口(PORT)的集合,在VHDL語(yǔ)言中每一個(gè)端口作為一個(gè)信號(hào),具有類(lèi)型定義,如BIT;同時(shí)具有輸入/輸出方向定義,如IN、OUT、INOUT(雙向)。圖7-2半加器的電路結(jié)構(gòu)

半加器的ENTITY描述如下:

ENTITYhalf-adderIS

PORT(a,

b:INBIT;

sum,

carry:OUTBIT);

ENDENTITYhalf-adder;

VHDL支持四種基本的對(duì)象類(lèi)型:變量(VARIABLE)、常量(CONSTANT)、信號(hào)(SIGNAL)和文件(FILE)。其中,變量和常量類(lèi)型和傳統(tǒng)的編程語(yǔ)言定義一致,而信號(hào)類(lèi)型是針對(duì)數(shù)字系統(tǒng)的描述而定義的,與變量類(lèi)型的區(qū)別在于信號(hào)值是與時(shí)間相聯(lián)系的,信號(hào)的內(nèi)部表示是一個(gè)時(shí)間值的序列,該序列常被稱(chēng)為信號(hào)的驅(qū)動(dòng)序列。

2.VHDL的ARCHITECTURE結(jié)構(gòu)對(duì)電路行為的描述:

圖7-2中的半加器電路的完整描述如下:

如上面的代碼段所示,在VHDL描述中是將數(shù)字系統(tǒng)的接口與內(nèi)部的具體實(shí)現(xiàn)分離開(kāi)來(lái)的,一個(gè)ENTITY可以有多個(gè)不同的ARCHITECTURE,通過(guò)ONFIGURATIONS

(配置)將ENTITY和一個(gè)特定的ARCHITECTURE對(duì)應(yīng)起來(lái)。在上面的代碼段中是遵循綁定規(guī)則,即以默認(rèn)和直接定義的方式,將ENTITY和ARCHITECTURE對(duì)應(yīng)起來(lái)。

VHDL程序由基本設(shè)計(jì)單元和次級(jí)設(shè)計(jì)單元組成。其中,基本設(shè)計(jì)單元包含:

-ENTITY

-CONFIGURATION

-PACKAGE聲明

這些都是獨(dú)立于其他設(shè)計(jì)單元的部分。次級(jí)設(shè)計(jì)單元包含:

-PACKAGE體

-ARCHITECTURE

3.一個(gè)完整的全加器的VHDL描述

一個(gè)完整的全加器的電路結(jié)構(gòu)如圖7-3所示,對(duì)應(yīng)的完整的VHDL描述如下:圖7-3一個(gè)完整的全加器的電路結(jié)構(gòu)

在上述完整的VHDL描述中,有幾點(diǎn)需要注意:

(1)在程序段的頭兩行,在使用IEEE1164賦值系統(tǒng)之前需要加入LIBRARY和PACKAGE聲明語(yǔ)句。LIBRARY中包含了映射到實(shí)際文件目錄的邏輯單元,PACKAGE是類(lèi)型定義、子程序和函數(shù)的集合,也包括用戶定義的PACKAGE和系統(tǒng)PACKAGE。

(2)在ARCHITECTURE中,電路門(mén)延遲被定義為一個(gè)常數(shù)類(lèi)型,常數(shù)值在VHDL程序中是不能改變的。

(3)在ARCHITECTURE中,用來(lái)連接實(shí)際電路元件的內(nèi)部信號(hào)s1、s2和s3被定義為信號(hào)類(lèi)型。

對(duì)于ARCHITECTURE中的簡(jiǎn)單信號(hào)賦值語(yǔ)句的執(zhí)行機(jī)制,下列幾點(diǎn)是關(guān)鍵性的定義:

(1)一條語(yǔ)句能夠轉(zhuǎn)入執(zhí)行的前提條件是表達(dá)式敏感表中的信號(hào)有事件(EVENT)發(fā)生。

(2)信號(hào)賦值語(yǔ)句和電路中的信號(hào)存在一一對(duì)應(yīng)的關(guān)系。

(3)文本中的語(yǔ)句順序和實(shí)際的語(yǔ)句執(zhí)行順序沒(méi)有必然的聯(lián)系,信號(hào)賦值語(yǔ)句的執(zhí)行順序是由電路中的信號(hào)事件(EVENT)的傳播來(lái)決定的。

4.條件信號(hào)賦值語(yǔ)句

對(duì)于我們熟知的多路選擇器,一個(gè)四選一電路的VHDL描述如下:

在上述條件選擇中,第一個(gè)為真的表達(dá)式?jīng)Q定了輸出值。如果所有的條件都不滿足,則輸出信號(hào)為in0。另一種條件信號(hào)賦值語(yǔ)句的寫(xiě)法如下:

其中的“WHENOthers”子句可以用來(lái)保證所有的情況都被覆蓋到了。

7.6VHDL語(yǔ)言對(duì)復(fù)雜電路行為的描述方法

在上述例子中的并行信號(hào)賦值語(yǔ)句可以方便地描述數(shù)字系統(tǒng)中組合電路的門(mén)級(jí)行為,但更高層的電路部件有著更復(fù)雜的行為,這些行為已經(jīng)難以用并行信號(hào)賦值語(yǔ)句來(lái)描述,或者描述中需要引入狀態(tài)信息,或者需要引入復(fù)雜數(shù)據(jù)結(jié)構(gòu),為此我們需要引入功能更強(qiáng)的描述結(jié)構(gòu)。

1.進(jìn)程(PROCESS)語(yǔ)句的特點(diǎn)

用PROCESS語(yǔ)句來(lái)描述上面的四選一電路,代碼如下:

對(duì)于ARCHITECTURE中的PROCESS進(jìn)程的執(zhí)行機(jī)制,下列幾點(diǎn)是關(guān)鍵性的定義:

(1)進(jìn)程中的語(yǔ)句是順序執(zhí)行的,進(jìn)程中可以包含信號(hào)賦值語(yǔ)句。

(2)進(jìn)程體的結(jié)構(gòu)和常規(guī)C語(yǔ)言的函數(shù)非常相似,它們都對(duì)變量作聲明和引用,都采用IF-THEN、IF-THEN-ELSE、CASE、FOR和WHILE語(yǔ)句。

(3)進(jìn)程和其他并行信號(hào)賦值語(yǔ)句的關(guān)系是并行執(zhí)行的。

(4)進(jìn)程之間是并行執(zhí)行的。

(5)進(jìn)程之間通過(guò)信號(hào)來(lái)通信。

(6)一個(gè)進(jìn)程在仿真中的執(zhí)行時(shí)間是0秒,進(jìn)程的執(zhí)行將產(chǎn)生未來(lái)的事件。

(7)以將一個(gè)進(jìn)程等價(jià)地看做一個(gè)復(fù)雜的信號(hào)賦值語(yǔ)句,進(jìn)程的外部行為和一個(gè)并行信號(hào)賦值語(yǔ)句是完全相同的,進(jìn)程描述了更加復(fù)雜的事件產(chǎn)生和處理的操作。

(8)變量和信號(hào)在進(jìn)程中的運(yùn)用是不同的,信號(hào)與硬件電路中的連線相對(duì)應(yīng),變量用于標(biāo)識(shí)進(jìn)程中運(yùn)算的中間值。

將圖7-3中的全加器采用等價(jià)的兩個(gè)半加器結(jié)構(gòu)構(gòu)成,得到的電路結(jié)構(gòu)如圖7-4所示,對(duì)應(yīng)的VHDL代碼如下:

對(duì)比前面簡(jiǎn)單賦值語(yǔ)句的描述,可以更好地體會(huì)這兩種表示方法的特點(diǎn)。圖7-4含兩個(gè)半加器的全加器

2.乘法器的描述

利用PROCESS進(jìn)程內(nèi)部語(yǔ)句串行執(zhí)行的特點(diǎn),可以方便地對(duì)復(fù)雜的算法進(jìn)行描述。一個(gè)32×32位的乘法器的VHDL描述如下:

該算法完全模擬了筆算求乘積的過(guò)程,逐位相乘,然后做部分積累加。

在上面的進(jìn)程語(yǔ)句中,采用了循環(huán)語(yǔ)句。常用的循環(huán)語(yǔ)句有FOR循環(huán)語(yǔ)句和WHILE循環(huán)語(yǔ)句。對(duì)于FOR循環(huán)語(yǔ)句,循環(huán)次數(shù)控制是直接在語(yǔ)句中定義的,

FOR循環(huán)語(yǔ)句的循環(huán)次數(shù)控制僅局限在FOR語(yǔ)句中有效,在FOR語(yǔ)句之外是無(wú)效的。對(duì)于WHILE循環(huán)語(yǔ)句,退出循環(huán)的條件是由布爾表達(dá)式來(lái)決定的,一種典型的用法如下:

WHILEJ<32LOOP

?

J:=J+1;

ENDLOOP;

3.D觸發(fā)器的描述

如前所述,

PROCESS進(jìn)程語(yǔ)句的引入可以方便狀態(tài)存儲(chǔ)電路的描述。一個(gè)帶異步清零和置位的D觸發(fā)器的電路圖如圖7-5所示,其PROCESS描述如下:圖7-5帶異步清零和置位的D觸發(fā)器

4.有限狀態(tài)機(jī)的描述方法

一個(gè)典型的有限狀態(tài)機(jī)的電路結(jié)構(gòu)如圖7-6所示。從圖中可知,有限狀態(tài)機(jī)可以分為組合邏輯和時(shí)序邏輯兩部分,組合邏輯部分用于實(shí)現(xiàn)輸出計(jì)算和下一狀態(tài)的計(jì)算,而時(shí)序

邏輯部分則用于狀態(tài)存儲(chǔ)。與該電路結(jié)構(gòu)相對(duì)應(yīng),有限狀態(tài)機(jī)的描述也可以利用兩個(gè)PROCESS進(jìn)程來(lái)實(shí)現(xiàn),一個(gè)ROCESS描述其中的組合邏輯,另一個(gè)PROCESS描述時(shí)

序邏輯部分。圖7-6有限狀態(tài)機(jī)的電路結(jié)構(gòu)

一個(gè)簡(jiǎn)單的有

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論