




版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 速凝劑考試題及答案
- 公司法務(wù)面試題及答案
- 江西團(tuán)考試題及答案
- 卷煙營(yíng)銷(xiāo)試題及答案
- 通信工程安全員考試試題及答案
- 上海一注考試試題及答案
- 臨床藥學(xué)招聘考試題及答案2025版
- 工地制圖基礎(chǔ)知識(shí)培訓(xùn)課件
- 數(shù)據(jù)結(jié)構(gòu)(Java語(yǔ)言描述)(第2版)課件 5.4 圖的遍歷
- 2025年體育教育專(zhuān)業(yè)事業(yè)單位招聘考試教師招聘體育學(xué)科專(zhuān)業(yè)知識(shí)試卷
- 2025內(nèi)蒙古森工集團(tuán)招聘工勤技能人員3100人筆試參考題庫(kù)附帶答案詳解析集合
- 登銷(xiāo)記以及運(yùn)統(tǒng)46系統(tǒng)運(yùn)用21課件
- 中小學(xué)教師招聘《教育綜合知識(shí)》完整筆記及復(fù)習(xí)重點(diǎn)(附答案)
- 無(wú)形資產(chǎn)轉(zhuǎn)讓協(xié)議書(shū)
- 車(chē)輛段平面布置設(shè)計(jì)
- HY/T 112-2008超濾膜及其組件
- GB/T 4669-2008紡織品機(jī)織物單位長(zhǎng)度質(zhì)量和單位面積質(zhì)量的測(cè)定
- GB/T 31315-2014機(jī)械結(jié)構(gòu)用冷拔或冷軋精密焊接鋼管
- 騰訊云TCA云架構(gòu)工程師考試真題
- 獸醫(yī)產(chǎn)科學(xué)之公畜科學(xué)課件
- 動(dòng)物育種學(xué)第四章生產(chǎn)性能測(cè)定
評(píng)論
0/150
提交評(píng)論