電子設(shè)計(jì)自動(dòng)化lzschaper3課件_第1頁
電子設(shè)計(jì)自動(dòng)化lzschaper3課件_第2頁
電子設(shè)計(jì)自動(dòng)化lzschaper3課件_第3頁
電子設(shè)計(jì)自動(dòng)化lzschaper3課件_第4頁
電子設(shè)計(jì)自動(dòng)化lzschaper3課件_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

硬件描述語言概述目前,國際上越來越多的EDA工具都接收HDL語言作為設(shè)計(jì)輸入。硬件描述語言向著標(biāo)準(zhǔn)化、集成化的方向發(fā)展,VHDL和VerilogHDL適應(yīng)了這種趨勢的要求,先后成為IEEE標(biāo)準(zhǔn)。目前應(yīng)用最廣泛的硬件描述語言有VHDL和Verilog兩種。此外ABEL-HDL也有少量應(yīng)用。

VerilogHDL

VerilogHDL全稱為Verilog硬件描述語言,它是1983年由GDA公司的PhilMoorby首創(chuàng)的。1989年Cadence公司收購了GDA公司,并公開了VerilogHDL。基于VerilogHDL的優(yōu)越性,IEEE于1995年制訂了VerilogHDL的IEEE標(biāo)準(zhǔn),即VerilogHDL1364-1995。硬件描述語言概述硬件描述語言概述目前,國際上越來越多的EDA工具都接

VerilogHDL是專為ASIC設(shè)計(jì)而開發(fā)的。VerilogHDL較為適合算法級、寄存器傳輸級RTL、邏輯級和門級的設(shè)計(jì),它可以很容易地把完成的設(shè)計(jì)移植到不同廠家的不同芯片中去,并且對設(shè)計(jì)很容易修改。采用VerilogHDL輸入法的最大優(yōu)點(diǎn)是其與工藝的無關(guān)性,這使得設(shè)計(jì)者在功能設(shè)計(jì)、邏輯驗(yàn)證階段可不必過多考慮門級及其工藝實(shí)現(xiàn)的具體細(xì)節(jié),只需要利用系統(tǒng)設(shè)計(jì)時(shí)對芯片的要求,施加不同的約束條件,即可設(shè)計(jì)出實(shí)際電路。

VerilogHDL完全集成于MAX+plusⅡ中,它可以包含MAX+plusⅡ支持結(jié)構(gòu)的任何形式的組合,也可以包含Altera提供的元器件和宏功能模塊。利用VerilogHDL可以進(jìn)行功能描述、仿真驗(yàn)證、時(shí)序分析、邏輯綜合等。硬件描述語言概述VerilogHDL是專為ASIC設(shè)計(jì)而開發(fā)的。VVHDL

VHDL全稱為超高速集成電路硬件描述語言。它是美國國防部于20世紀(jì)80年代后期出于軍事工業(yè)的需要開發(fā)的。1987年VHDL被IEEE確定為標(biāo)準(zhǔn)化的硬件描述語言,即VHDL’87版本。1993年,IEEE對VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展了VHDL的內(nèi)容,形成了新版本的VHDL,即VHDL’93版本。

VHDL語言涵蓋面廣,抽象描述能力強(qiáng),支持硬件的設(shè)計(jì)、驗(yàn)證、綜合與測試。VHDL能在多個(gè)級別上對同一邏輯功能進(jìn)行描述,如可以在寄存器級別上對電路的組成結(jié)構(gòu)進(jìn)行描述,也可以在行為描述級別上對電路的功能與性能進(jìn)行描述。無論哪種級別的描述,都有賴于優(yōu)良的綜合器其轉(zhuǎn)化為具體的硬件結(jié)構(gòu)。硬件描述語言概述VHDLVHDL全稱為超高速集成電路硬件描述語言。利用VHDL描述設(shè)計(jì),設(shè)計(jì)者可以不懂硬件結(jié)構(gòu),也不必考慮最終實(shí)現(xiàn)的目標(biāo)器件是什么,只需用正確的語言描述系統(tǒng)的行為即可。正因?yàn)閂HDL的硬件描述與具體的工藝技術(shù)和硬件結(jié)構(gòu)無關(guān),使得VHDL設(shè)計(jì)程序的硬件實(shí)現(xiàn)目標(biāo)器件有廣闊的選擇范圍,其中包括各系列的CPLD、FPGA及各種門陣列器件。

在各種硬件描述語言中,VHDL的行為抽象描述能力是最強(qiáng)的,從而決定了它成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語言。

硬件描述語言概述利用VHDL描述設(shè)計(jì),設(shè)計(jì)者可以不懂硬件結(jié)構(gòu),也不必ABEL-HDL

ABLE-HDL是一種最基本的硬件描述語言。它支持各種行為的輸入方式,其中包括布爾方程、真值表、狀態(tài)機(jī)等邏輯表達(dá)方式。ABEL語言和Verilog同屬一種描述級別,但ABEL的特性和受支持程度遠(yuǎn)不如Verilog。

ABLE的主要優(yōu)點(diǎn)有使用靈活、格式簡潔、編譯要求寬松等。ABLE被廣泛用于可編程邏輯器件的邏輯功能設(shè)計(jì),由于其語言描述的獨(dú)立性,因而適用于各種不同規(guī)模的可編程邏輯器件的設(shè)計(jì)。雖然有不少EDA軟件支持ABEL-HDL,但提供ABEL-HDL綜合器的EDA公司僅DATAIO公司一家,描述風(fēng)格一般只用門電路級描述方式,對于復(fù)雜的設(shè)計(jì)顯得力不從心。應(yīng)用不廣,未能進(jìn)入IEEE國際標(biāo)準(zhǔn)。硬件描述語言概述ABEL-HDLABLE-HDL是一種最基本的硬件VerilogHDL與VHDL的比較

一般的硬件描述語言可在三個(gè)層次上進(jìn)行電路描述,其層次由高到低依次可分為行為級、RTL級和門電路級。VHDL語言通常更適合行為級和RTL級的描述;VerilogHDL通常只適合RTL級和門電路級的描述。因此與VerilogHDL相比,VHDL是一種高級描述語言,適用于電路高級建模,最適合描述電路的行為,即描述電路的功能,但它幾乎不能直接控制門電路,即控制電路的資源;VerilogHDL則是一種低級的描述語言,最適合于描述門級電路,易于控制電路資源。硬件描述語言概述VerilogHDL與VHDL的比較一般的硬件描任何一種語言源程序,最終都要轉(zhuǎn)換成門電路級才能被布線器或適配器所接收。VHDL語言的綜合通常要經(jīng)過行為級→RTL級→門電路級的轉(zhuǎn)化;而VerilogHDL語言的綜合過程要稍簡單些,即經(jīng)過RTL級→門電路級的轉(zhuǎn)化。

VHDL和VerilogHDL主要區(qū)別在于邏輯表達(dá)的描述級別。VHDL雖然也可以直接描述門電路,但這方面的能力卻不如VerilogHDL;相反,VerilogHDL在高級建模描述方面不如VHDL。VerilogHDL的描述風(fēng)格接近于電路原理圖,從某種意義上說,它是電路原理圖的高級文本表示方式。硬件描述語言概述任何一種語言源程序,最終都要轉(zhuǎn)換成門電路級才能被布線由于VHDL和VerilogHDL各有所長,市場占有量也相差不多。VHDL描述語言層次較高,不易控制底層電路,因而對綜合器的綜合性能要求較高。但當(dāng)設(shè)計(jì)者積累一定經(jīng)驗(yàn)后會(huì)發(fā)現(xiàn),每種綜合器一般將一定描述風(fēng)格的語言綜合成確定的電路,只要熟悉基本單元電路的描述風(fēng)格,綜合后的電路還是易于控制的。

VHDL入門相對稍難,但在熟悉以后,設(shè)計(jì)效率明顯高于VerilogHDL,生成的電路性能也與VerilogHDL的不相上下。在VHDL設(shè)計(jì)中,綜合器完成的工作量是巨大的,設(shè)計(jì)者所做的工作就相對減少了;而在VerilogHDL設(shè)計(jì)中,工作量通常比較大,因?yàn)樵O(shè)計(jì)者需要搞清楚具體電路結(jié)構(gòu)的細(xì)節(jié)。

硬件描述語言概述由于VHDL和VerilogHDL各有所長,市第三章

VHDL基本概念硬件描述語言概述

VHDL程序的實(shí)體和結(jié)構(gòu)體

VHDL程序的庫和程序包

VHDL程序的配置VHDL基本概念第三章硬件描述語言概述VHDL基本概念VHDL語言的程序結(jié)構(gòu)一般結(jié)構(gòu)

VHDL程序結(jié)構(gòu)的一個(gè)顯著特點(diǎn)就是,任何一個(gè)完整的設(shè)計(jì)項(xiàng)目(或稱為設(shè)計(jì)實(shí)體,簡稱實(shí)體)都可以分為兩部分。第一部分主要用于描述電路的“外部端口”,包括器件名稱、端口的名稱、數(shù)據(jù)類型等,我們把它稱為“實(shí)體說明”;第二部分主要用于描述電路的“內(nèi)部結(jié)構(gòu)、功能及其實(shí)現(xiàn)的算法”,我們把它稱為“結(jié)構(gòu)體”。

以上兩部分是一個(gè)VHDL程序必備的兩部分,缺一不可。當(dāng)一個(gè)設(shè)計(jì)實(shí)體的內(nèi)、外兩部分都設(shè)計(jì)完成后,其他設(shè)計(jì)實(shí)體就可以像調(diào)用普通元件一樣直接調(diào)用它。

VHDL語言的程序結(jié)構(gòu)VHDL語言的程序結(jié)構(gòu)一般結(jié)構(gòu)VHDL程序結(jié)構(gòu)的一【例3-1】試用VHDL語言描述一個(gè)2輸入端的與非門。

--第一部分:“外部端口”

ENTITYnand2IS--實(shí)體說明描述,實(shí)體名稱為nand2PORT(a,b:INBIT;--a、b為輸入引腳,數(shù)據(jù)類型為BITy:OUTBIT);--y為輸出引腳,數(shù)據(jù)類型為BITENDnand2;--結(jié)束實(shí)體說明

--第二部分:“結(jié)構(gòu)體”

ARCHITECTUREaOFnand2IS--結(jié)構(gòu)體名稱為aBEGINy<=aNANDb;--a和b進(jìn)行與非運(yùn)算,結(jié)果賦給yENDa;--結(jié)束結(jié)構(gòu)體描述從上述例子可看出,VHDL的所有語句都是以“;”結(jié)束的;語句后面的“--”部分表示程序注釋。

VHDL語言的程序結(jié)構(gòu)【例3-1】試用VHDL語言描述一個(gè)2輸入端的與非門?!皩?shí)體說明”部分給出了器件nand2的外部引腳(PORT),如圖所示。a、b為輸入引腳,y為輸出引腳,數(shù)據(jù)類型均為BIT。BIT指的是1位二進(jìn)制數(shù),只有2兩種邏輯取值“0”和“1”?!敖Y(jié)構(gòu)體”部分給出了nand2的內(nèi)部功能信息。其中“NAND”是實(shí)現(xiàn)“與非”運(yùn)算的運(yùn)算符;“<=”是賦值運(yùn)算符,從電路的角度來看就是表示信號的傳輸,即將a和b“與非”運(yùn)算后的結(jié)果信號傳輸給y。

VHDL語言的程序結(jié)構(gòu)“實(shí)體說明”部分給出了器件nand2的外部引腳(PO實(shí)體實(shí)體是VHDL程序設(shè)計(jì)中最基本的模塊,可以單獨(dú)編譯和并入設(shè)計(jì)庫。實(shí)體就是設(shè)計(jì)對象(或設(shè)計(jì)項(xiàng)目),實(shí)體可代表任何電路,從一個(gè)門電路、一個(gè)芯片、一塊電路板,到一個(gè)復(fù)雜系統(tǒng)都可看成一個(gè)實(shí)體。如果在設(shè)計(jì)時(shí)采用的是自頂向下分層、劃分模塊的設(shè)計(jì)方法,那么,各層的設(shè)計(jì)模塊都可看成一個(gè)實(shí)體。頂層的系統(tǒng)模塊稱為頂層實(shí)體,低層的設(shè)計(jì)模塊稱為低層實(shí)體。在用VHDL語言描述時(shí),頂層的實(shí)體可將比它低的低層實(shí)體當(dāng)作元件來調(diào)用。至于低層實(shí)體的具體結(jié)構(gòu)和功能,在低層實(shí)體中描述。

實(shí)體實(shí)體實(shí)體是VHDL程序設(shè)計(jì)中最基本的模塊,可以單獨(dú)編實(shí)體說明實(shí)體說明的功能就是對實(shí)體與外部電路的接口進(jìn)行描述,是實(shí)體的表層設(shè)計(jì)單元,它規(guī)定了實(shí)體的輸入輸出接口信號,是實(shí)體對外的一個(gè)通信界面。

實(shí)體說明常用的語句結(jié)構(gòu)如下:

ENTITY實(shí)體名IS[GENERIC(類屬參數(shù)說明語句);][PORT(端口說明);]END實(shí)體名;實(shí)體實(shí)體說明實(shí)體說明的功能就是對實(shí)體與外部電路的2.中間方括號內(nèi)的語句描述并非必需。3.對于VHDL的編譯器和綜合器來說,程序字母的大小寫是不加區(qū)分的,但為了便于閱讀和分辨,建議將VHDL的表示符或基本語句的關(guān)鍵詞以大寫方式表示,而由設(shè)計(jì)者添加的內(nèi)容以小寫方式來表示。

實(shí)體說明中應(yīng)注意以下幾個(gè)問題:

1.實(shí)體名可由設(shè)計(jì)者自己規(guī)定,可采用英文字母“A-Z”、“a-z”,阿拉伯?dāng)?shù)字“0-9”,或底線符號“_”,但字符數(shù)不能超過32個(gè),不能以數(shù)字或“_”開頭,不能連續(xù)使用底線符號“__”,也不能以“_”結(jié)束。實(shí)體2.中間方括號內(nèi)的語句描述并非必需。3.對于VHDL的編譯器ENTITYdffISPORT(clk,d:INBIT;q,qb:OUTBIT);ENDdff;【例3-2】試編寫一個(gè)D觸發(fā)器的實(shí)體說明。

本例中:實(shí)體名:dff類屬參數(shù)說明語句:缺省(非必須)端口說明:輸入端口clk,d;輸出端口q,qb。端口類型BIT。實(shí)體ENTITYdffIS【例3-2】試編寫一個(gè)D觸發(fā)器一、類屬參數(shù)說明語句(GENERIC)

類屬參數(shù)說明語句必須放在端口說明語句之前,類屬參數(shù)的值可由實(shí)體外部提供,它通常用于設(shè)定元件內(nèi)部電路的結(jié)構(gòu)和規(guī)模,設(shè)計(jì)者可從外面通過重新設(shè)定類屬參數(shù)的值而容易地改變元件內(nèi)部電路結(jié)構(gòu)和規(guī)模。類屬參數(shù)說明語句的一般書寫格式如下:GENERIC(常數(shù)名:數(shù)據(jù)類型[:設(shè)定值];┇常數(shù)名:數(shù)據(jù)類型[:設(shè)定值]);其中的常數(shù)名由設(shè)計(jì)者定義,數(shù)據(jù)類型通常取INTEGER(整數(shù))或TIME等類型,設(shè)定值即為常數(shù)名所代表的值。但需注意,綜合器只支持整數(shù)數(shù)據(jù)類型。實(shí)體一、類屬參數(shù)說明語句(GENERIC)類屬參數(shù)說明【例3-3】試編寫一個(gè)12位二進(jìn)制計(jì)數(shù)器的實(shí)體說明。

ENTITYcounter_xISGENERIC(n:INTEGER:=12);PORT(clk:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(n-1DOWNTO0));ENDcounter_x;本例中,定義了類屬參數(shù)n的設(shè)定值為12,在后續(xù)語句中,用到n的地方均可用12代替。本例的第4行語句也可寫成

q:OUTSTD_LOGIC_VECTOR(11DOWNTO0);

優(yōu)點(diǎn):當(dāng)在某個(gè)實(shí)體內(nèi)大量使用某個(gè)參數(shù)時(shí),可把該參數(shù)定義成類屬參數(shù)。當(dāng)設(shè)計(jì)者需改變該參數(shù)的值時(shí),只需在類屬參數(shù)語句中改寫一次即可。從EDA工具綜合的結(jié)果來看,將大大地影響設(shè)計(jì)結(jié)果的硬件規(guī)模。實(shí)體【例3-3】試編寫一個(gè)12位二進(jìn)制計(jì)數(shù)器的實(shí)體說明。二、端口說明(PORT)

端口說明對設(shè)計(jì)實(shí)體與外部電路的接口通道進(jìn)行了說明,包括對每一接口的輸入輸出模式和數(shù)據(jù)類型進(jìn)行了定義。端口說明的一般書寫格式如下:PORT(端口名,{端口名}:端口模式數(shù)據(jù)類型;┇

端口名,{端口名}:端口模式數(shù)據(jù)類型);實(shí)體二、端口說明(PORT)端口說明對設(shè)計(jì)實(shí)體與(1)端口名。端口名是設(shè)計(jì)者賦給每個(gè)對外通道的名字,它與原理圖中元件符號上的管腳名相類似。對端口的命名可采用英文字母“A-Z”、“a-z”,阿拉伯?dāng)?shù)字“0-9”,或底線符號“_”,但字符數(shù)不能超過32個(gè),不能以數(shù)字或“_”開頭,不能連續(xù)使用底線符號“__”,也不能以“_”結(jié)束。每個(gè)端口名在同一實(shí)體中必須是唯一的,不能有重復(fù)現(xiàn)象。(2)端口模式。端口模式用來說明端口上的數(shù)據(jù)流動(dòng)方向。端口模式包括IN、OUT、INOUT、BUFFER四種類型。實(shí)體(1)端口名。端口名是設(shè)計(jì)者賦給每個(gè)對外通道的名字,它與原理

1)IN。定義的端口為輸入端口,可以通過此端口將外部的其他信號讀入設(shè)計(jì)實(shí)體中。

2)OUT。定義的端口為輸出端口,通過此端口可將信號從設(shè)計(jì)實(shí)體輸出到外部。

3)INOUT。定義的端口為輸入輸出雙向端口,即實(shí)體可以通過該端口輸入外部信號,又可以通過該端口把實(shí)體內(nèi)的信號輸出到外部。實(shí)體1)IN。定義的端口為輸入端口,可以通過此端口將外部

4)BUFFER。定義的端口為具有數(shù)據(jù)讀入功能的輸出端口。它與INOUT的區(qū)別是,INOUT是雙向端口,即可以輸入信號,也可以輸出信號;而BUFFER也可以輸出實(shí)體信號到外部,但作為輸入時(shí),信號不是由外部輸入,而是在實(shí)體內(nèi)由輸出信號反饋得到,即BUFFER模式的端口在信號輸出實(shí)體的同時(shí),也可以被實(shí)體本身讀入。(3)數(shù)據(jù)類型。數(shù)據(jù)類型是指端口信號的取值類型。

1)BIT。二進(jìn)制位類型,其取值是一個(gè)1位的二進(jìn)制數(shù),取值只能是0或1。

2)BIT_VECTOR。位向量數(shù)據(jù)類型,其取值是一組二進(jìn)制數(shù),常用來描述總線等端口,如data:INBIT_VECTOR(3DOWNTO0),定義了一個(gè)具有4位位寬的輸入數(shù)據(jù)總線端口。

實(shí)體4)BUFFER。定義的端口為具有數(shù)據(jù)讀入功能的輸出

3)STD_LOGIC。工業(yè)標(biāo)準(zhǔn)邏輯類型,取值有0、1、Z(高阻)、X(未知)等9種,該數(shù)據(jù)類型由IEEE庫中的STD_LOGIC_1164程序包定義。

4)STD_LOGIC_VECTOR。工業(yè)標(biāo)準(zhǔn)邏輯向量類型,是STD_LOGIC的組合,也常用來描述總線等端口。

5)INTEGER。整數(shù)類型,可用作循環(huán)的指針或常數(shù),通常不用作I/O信號。

6)BOOLEAN。布爾類型,取值有FALSE(假)、TRUE(真)兩種。

3)STD_LOGIC。工業(yè)標(biāo)準(zhǔn)邏輯類型,取值有0、1、關(guān)鍵字說明BOOLEAN布爾類型,取值有FALSE、TURE兩種BIT二進(jìn)制位類型,取值有0、1BIT_VECTOR位向量類型,表示一組二進(jìn)制數(shù)STD_LOGIC工業(yè)標(biāo)準(zhǔn)的邏輯類型,取值0、1、X、ZSTD_LOGIC_VECTOR工業(yè)標(biāo)準(zhǔn)的邏輯向量類型,是STD_LOGIC的組合INTEGER整數(shù)類型,可用做循環(huán)的指針或常數(shù)常用端口數(shù)據(jù)類型實(shí)體關(guān)鍵字說明BOOLEAN布爾類型,取值有FALSE、TURE結(jié)構(gòu)體對一個(gè)設(shè)計(jì)實(shí)體而言,實(shí)體說明部分描述的是實(shí)體的對外接口,并不考慮實(shí)體內(nèi)部的具體細(xì)節(jié)。實(shí)體的內(nèi)部結(jié)構(gòu)與行為由結(jié)構(gòu)體來描述。

結(jié)構(gòu)體是實(shí)體的一個(gè)重要組成部分,主要用來描述實(shí)體內(nèi)的硬件結(jié)構(gòu)、元件之間的連接、實(shí)體所完成的邏輯功能以及數(shù)據(jù)的傳輸和變換等方面的內(nèi)容。一個(gè)實(shí)體可以有一個(gè)或多個(gè)結(jié)構(gòu)體,每個(gè)結(jié)構(gòu)體可分別描述該實(shí)體功能的不同實(shí)現(xiàn)方案。

結(jié)構(gòu)體一般由兩大部分組成:對數(shù)據(jù)類型、常數(shù)、信號、子程序和元器件等因素的說明;描述實(shí)體邏輯行為的功能描述語句,包括各種順序語句和并行語句。

結(jié)構(gòu)體結(jié)構(gòu)體對一個(gè)設(shè)計(jì)實(shí)體而言,實(shí)體說明部分描述的是一、結(jié)構(gòu)體的一般書寫格式

ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS[說明語句]BEGIN[功能描述語句]END結(jié)構(gòu)體名;在書寫格式上需注意,結(jié)構(gòu)體中“實(shí)體名”必須與實(shí)體說明中的“實(shí)體名”相一致,而“結(jié)構(gòu)體名”可由設(shè)計(jì)者自己選擇,但當(dāng)一個(gè)實(shí)體具有多個(gè)結(jié)構(gòu)體時(shí),各結(jié)構(gòu)體名不可重復(fù)。說明語句必須放在關(guān)鍵詞“ARCHITECTURE”和“BEGIN”之間,結(jié)構(gòu)體必須以“END結(jié)構(gòu)體名;”作為結(jié)束句。

結(jié)構(gòu)體一、結(jié)構(gòu)體的一般書寫格式ARCHITECTURE二、結(jié)構(gòu)體的說明語句

結(jié)構(gòu)體中的說明語句是對結(jié)構(gòu)體的功能描述語句中要用到的信號(SIGNAL)、數(shù)據(jù)類型(TYPE)、常數(shù)(CONSTANT)、元件(COMPONENT)、函數(shù)(FUNCTION)和過程(PROCEDURE)等加以說明。結(jié)構(gòu)體信號定義和端口說明一樣,應(yīng)有信號名稱和數(shù)據(jù)類型定義,因是內(nèi)部連接用的信號不需說明方向。需要注意的是,在一個(gè)結(jié)構(gòu)體中說明和定義的數(shù)據(jù)類型、常數(shù)、元件、函數(shù)和過程只能用于該結(jié)構(gòu)體中。如果希望這些定義也能用于其他的實(shí)體或結(jié)構(gòu)體中,需要將其作為程序包來處理。結(jié)構(gòu)體二、結(jié)構(gòu)體的說明語句結(jié)構(gòu)體中的說明語句是對結(jié)構(gòu)體的三、功能描述語句

功能描述語句含有五種不同類型且以并行方式工作的語句結(jié)構(gòu),這可以看成是結(jié)構(gòu)體的五個(gè)子結(jié)構(gòu)。而在每一子結(jié)構(gòu)的內(nèi)部也可能含有順序運(yùn)行的邏輯描述語句。這就是說雖然五個(gè)子結(jié)構(gòu)本身是并行語句,但每個(gè)子結(jié)構(gòu)內(nèi)所包含的語句并不一定是并行語句。

結(jié)構(gòu)體三、功能描述語句功能描述語句含有五種不同類型右圖給出了結(jié)構(gòu)體的一般構(gòu)造圖。可以看出結(jié)構(gòu)體包含說明語句和功能描述語句。有關(guān)常用的子結(jié)構(gòu)基本組成和語句描述將在后續(xù)內(nèi)容中介紹。結(jié)構(gòu)體右圖給出了結(jié)構(gòu)體的一般構(gòu)造圖。結(jié)構(gòu)體四、結(jié)構(gòu)體描述方法

(1)行為描述法:采用進(jìn)程語句,順序描述被稱設(shè)計(jì)實(shí)體的行為。(2)數(shù)據(jù)流描述法:采用進(jìn)程語句順序描述數(shù)據(jù)流在控制流作用下被加工、處理、存儲(chǔ)的全過程。(3)結(jié)構(gòu)描述法,采用并行處理語句描述設(shè)計(jì)實(shí)體內(nèi)的結(jié)構(gòu)組織和元件互連關(guān)系。

結(jié)構(gòu)體四、結(jié)構(gòu)體描述方法(1)行為描述法:采用進(jìn)程語句,順序描

【例3-4】試用VHDL語言描述下圖所示電路。

VHDL語言的程序結(jié)構(gòu)【例3-4】試用VHDL語言描述下圖所示電路。VH

--實(shí)體說明

ENTITYxor2IS--實(shí)體名為xor2PORT(A,B:INBIT;--A、B為輸入引腳,數(shù)據(jù)類型BITY:OUTBIT);--Y為輸出引腳,數(shù)據(jù)類型BITENDxor2;--結(jié)構(gòu)體

ARCHITECTUREaOFxor2IS--結(jié)構(gòu)體名為aSIGNALtemp1,temp2,temp3:BIT;--類屬參數(shù)說明語句

BEGIN--開始結(jié)構(gòu)體描述

temp1<=ANANDB;--A和B與非運(yùn)算,結(jié)果賦給temp1temp2<=ANANDtemp1;--A和temp1與非運(yùn)算給temp2temp3<=BNANDtemp1;--B和temp1與非運(yùn)算給temp3Y<=temp2NANDtemp3;ENDa;--結(jié)束結(jié)構(gòu)體描述VHDL語言的程序結(jié)構(gòu)--實(shí)體說明VHDL語言的程序結(jié)構(gòu)在上述例子中,temp1、temp2、temp3和Y這四條賦值語句之間是并行運(yùn)行的關(guān)系,即它們的執(zhí)行是同步的。只要某個(gè)信號發(fā)生變化,都會(huì)立即引起相應(yīng)的語句被執(zhí)行,產(chǎn)生相應(yīng)的輸出,而不管該語句的書寫先后順序。這一點(diǎn)和傳統(tǒng)的程序設(shè)計(jì)語言的順序執(zhí)行情況是不同的,但它和硬件電路的工作情況相一致,這種并行的執(zhí)行方式是VHDL與傳統(tǒng)程序語言的最顯著區(qū)別。VHDL語言的程序結(jié)構(gòu)在上述例子中,temp1、temp2、temp3和Y第三章

VHDL基本概念硬件描述語言概述

VHDL程序的實(shí)體和結(jié)構(gòu)體

VHDL程序的庫和程序包

VHDL程序的配置VHDL基本概念第三章硬件描述語言概述VHDL基本概念一、庫

(LIBRARY)

庫是經(jīng)編譯后數(shù)據(jù)的集合,它可以是預(yù)先定義好的數(shù)據(jù)類型,也可以是已編譯過的設(shè)計(jì)單元(包括實(shí)體說明、結(jié)構(gòu)體、程序包等)。因此可以把庫看成是用于存放預(yù)先完成的數(shù)據(jù)類型和源設(shè)計(jì)單元的倉庫。如果在一項(xiàng)VHDL設(shè)計(jì)中要用到庫中的信息,就必須在這項(xiàng)設(shè)計(jì)中預(yù)先打開這個(gè)庫。在綜合過程中,每當(dāng)綜合器遇到庫語言,就可將庫指定的源文件讀入,并參與綜合。庫的語句書寫格式如下:

LIBRARY庫名;

VHDL的庫一、庫(LIBRARY)庫是經(jīng)編譯后數(shù)據(jù)的集合,1.IEEE庫。IEEE庫是VHDL設(shè)計(jì)中最常用的庫,它包含了IEEE標(biāo)準(zhǔn)的程序包和其他一些支持工業(yè)標(biāo)準(zhǔn)的程序包。IEEE庫中主要包括STD_LOGIC_1164、STD_LOGIC_UNSIGNED、STD_LOGIC_SIGNED等標(biāo)準(zhǔn)程序包,其中的STD_LOGIC_1164是最重要和最常用的程序包。使用IEEE庫時(shí)必須先用語句LIBRARYIEEE聲明。

2.STD庫。STD庫是VHDL的標(biāo)準(zhǔn)庫。在利用VHDL進(jìn)行設(shè)計(jì)時(shí),可以自動(dòng)使用這個(gè)庫,而不必像IEEE庫那樣需首先聲明。因此類似“LIBRARYSTD;”的語句是不必要的。

庫的分類VHDL的庫1.IEEE庫。IEEE庫是VHDL設(shè)計(jì)中最常用的庫,它包含3.WORK庫。WORK庫是VHDL設(shè)計(jì)的現(xiàn)行工作庫,用于存放用戶設(shè)計(jì)和定義的一些設(shè)計(jì)單元和程序包。因此它自動(dòng)滿足VHDL標(biāo)準(zhǔn),在實(shí)際調(diào)用時(shí)不必預(yù)先聲明,所以像“LIBRARYWORK;”的語句也是不必要的。

在PC或工作站上利用VHDL進(jìn)行項(xiàng)目設(shè)計(jì)時(shí),不允許在根目錄下進(jìn)行,而必須為此設(shè)定一個(gè)文件夾,用于保存此項(xiàng)目的設(shè)計(jì)文件。VHDL綜合器將此文件夾默認(rèn)為WORK庫。必須注意,工作庫并非文件夾的名稱,而是一個(gè)邏輯名,綜合器將指向該文件夾的路徑。4.用戶自定義庫。用于為自身設(shè)計(jì)需要所開發(fā)的共用程序包河實(shí)體等,也可以匯集在一起定義成一個(gè)庫。VHDL的庫3.WORK庫。WORK庫是VHDL設(shè)計(jì)的現(xiàn)行工作庫,用于存在一個(gè)庫中往往有很多可使用的資源,這些資源通常存放在不同的程序包中。使用時(shí),除了聲明所在的庫外,還要說明使用的是該庫中的哪個(gè)程序包。說明書寫格式如下。

LIBRARY庫名;

USE庫名.程序包名.使用的范圍;例如要使用IEEE庫的STD_LOGIC_1164程序包中的所有內(nèi)容,可如下書寫。

LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;注意:庫說明語句的作用范圍從一個(gè)實(shí)體說明開始到它所屬的結(jié)構(gòu)體、配置為止。當(dāng)一個(gè)源程序中出現(xiàn)多個(gè)實(shí)體時(shí),庫說明語句應(yīng)在每個(gè)設(shè)計(jì)實(shí)體說明語句之前重復(fù)書寫。VHDL的庫在一個(gè)庫中往往有很多可使用的資源,這些資源通常二、程序包

在實(shí)體中定義的各種數(shù)據(jù)類型、數(shù)據(jù)對象等信息只能局限在該實(shí)體內(nèi)調(diào)用,其他實(shí)體是不可用的。為了使這些信息能夠被其他設(shè)計(jì)實(shí)體所使用,需要把這些信息收集在一個(gè)VHDL程序包中并入庫,這些信息就成為公共信息,其他設(shè)計(jì)實(shí)體就可以使用這些公共信息。程序包一般由程序包首和程序包體兩部分組成。其語句書寫格式如下。

--程序包首

PACKAGE程序包名IS[說明語句]END程序包名;程序包二、程序包在實(shí)體中定義的各種數(shù)據(jù)類型、數(shù)據(jù)對象等信

--程序包體

PACKAGEBODY程序包名IS[程序包體說明語句]END程序包名;為了方便設(shè)計(jì),VHDL提供了一些標(biāo)準(zhǔn)的程序包,如STANDARD,它定義了若干數(shù)據(jù)類型、子類型和函數(shù)。另外,在IEEE庫中還有一些常用的程序包,這些程序包已編譯過,在使用時(shí),只需聲明庫和使用的程序包即可。程序包--程序包體為了方便設(shè)計(jì),VHDL提供了一些標(biāo)準(zhǔn)庫名程序包名包中預(yù)定義的內(nèi)容STDSTANDARDVHDL類型,如BIT,BIT_VECTORIEEESTD_LOGIC_1164定義了STD_LOGIC,STD_LOGIC_VECTOR等數(shù)據(jù)類型IEEESTD_LOGIC_UNSIGNED定義了基于STD_LOGIC與STD_LOGIC_VECTOR類型上的無符號的算術(shù)運(yùn)算IEEESTD_LOGIC_SIGNED定義了基于STD_LOGIC與STD_LOGIC_VECTOR類型上的有符號的算術(shù)運(yùn)算IEEESTD_LOGIC_ARITH定義了有符號與無符號類型,及基于這些類型上的算術(shù)運(yùn)算VHDL標(biāo)準(zhǔn)程序包庫名程序包名包中預(yù)定義的內(nèi)容STDSTANDARDVHDL第三章

VHDL基本概念硬件描述語言概述

VHDL程序的實(shí)體和結(jié)構(gòu)體

VHDL程序的庫和程序包

VHDL程序的配置VHDL基本概念第三章硬件描述語言概述VHDL基本概念配置配置在一般的VHDL程序設(shè)計(jì)中,元器件的結(jié)構(gòu)體與該元器件同名的實(shí)體相連接,配置可以把特定的結(jié)構(gòu)體關(guān)聯(lián)到(指定給)一個(gè)確定的實(shí)體。

VHDL提供配置語句用于描述各種設(shè)計(jì)實(shí)體和元器件之間連接關(guān)系,以及設(shè)計(jì)實(shí)體和結(jié)構(gòu)體之間的連接關(guān)系。配置配置在一般的VHDL程序設(shè)計(jì)中,元器件的默認(rèn)配置默認(rèn)配置是最簡單形式的配置,不含任何塊語句和元器件的模塊用這種配置。默認(rèn)配置語句的一般格式如下。CONFIGURATION配置名OF實(shí)體名ISFOR選配結(jié)構(gòu)體名

ENDFOR;END配置名;配置默認(rèn)配置默認(rèn)配置是最簡單形式的配置,不含任何結(jié)構(gòu)體的配置結(jié)構(gòu)體的配置主要用來對結(jié)構(gòu)體中引用的元器件進(jìn)行配置。結(jié)構(gòu)體的配置書寫格式如下。FOR元器件例化標(biāo)號:元器件名USEENTITY庫名.實(shí)體名;配置結(jié)構(gòu)體的配置結(jié)構(gòu)體的配置主要用來對結(jié)構(gòu)體中引習(xí)題1.什么是Top-Down設(shè)計(jì)方式?2.EDA設(shè)計(jì)流程包含哪幾個(gè)主要步驟?3.CPLD和FPGA的區(qū)別是什么?4.簡述CPLD/FPGA的設(shè)計(jì)流程,并解釋其中的主要概念。5.什么是時(shí)序仿真?什么是功能仿真?6.VHDL語言有什么特點(diǎn)?它的基本結(jié)構(gòu)分成幾個(gè)部分?試簡要說明每一部分的功能和格式。

第一次作業(yè)題:習(xí)題1.什么是Top-Down設(shè)計(jì)方式?第一次作業(yè)題:硬件描述語言概述目前,國際上越來越多的EDA工具都接收HDL語言作為設(shè)計(jì)輸入。硬件描述語言向著標(biāo)準(zhǔn)化、集成化的方向發(fā)展,VHDL和VerilogHDL適應(yīng)了這種趨勢的要求,先后成為IEEE標(biāo)準(zhǔn)。目前應(yīng)用最廣泛的硬件描述語言有VHDL和Verilog兩種。此外ABEL-HDL也有少量應(yīng)用。

VerilogHDL

VerilogHDL全稱為Verilog硬件描述語言,它是1983年由GDA公司的PhilMoorby首創(chuàng)的。1989年Cadence公司收購了GDA公司,并公開了VerilogHDL。基于VerilogHDL的優(yōu)越性,IEEE于1995年制訂了VerilogHDL的IEEE標(biāo)準(zhǔn),即VerilogHDL1364-1995。硬件描述語言概述硬件描述語言概述目前,國際上越來越多的EDA工具都接

VerilogHDL是專為ASIC設(shè)計(jì)而開發(fā)的。VerilogHDL較為適合算法級、寄存器傳輸級RTL、邏輯級和門級的設(shè)計(jì),它可以很容易地把完成的設(shè)計(jì)移植到不同廠家的不同芯片中去,并且對設(shè)計(jì)很容易修改。采用VerilogHDL輸入法的最大優(yōu)點(diǎn)是其與工藝的無關(guān)性,這使得設(shè)計(jì)者在功能設(shè)計(jì)、邏輯驗(yàn)證階段可不必過多考慮門級及其工藝實(shí)現(xiàn)的具體細(xì)節(jié),只需要利用系統(tǒng)設(shè)計(jì)時(shí)對芯片的要求,施加不同的約束條件,即可設(shè)計(jì)出實(shí)際電路。

VerilogHDL完全集成于MAX+plusⅡ中,它可以包含MAX+plusⅡ支持結(jié)構(gòu)的任何形式的組合,也可以包含Altera提供的元器件和宏功能模塊。利用VerilogHDL可以進(jìn)行功能描述、仿真驗(yàn)證、時(shí)序分析、邏輯綜合等。硬件描述語言概述VerilogHDL是專為ASIC設(shè)計(jì)而開發(fā)的。VVHDL

VHDL全稱為超高速集成電路硬件描述語言。它是美國國防部于20世紀(jì)80年代后期出于軍事工業(yè)的需要開發(fā)的。1987年VHDL被IEEE確定為標(biāo)準(zhǔn)化的硬件描述語言,即VHDL’87版本。1993年,IEEE對VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展了VHDL的內(nèi)容,形成了新版本的VHDL,即VHDL’93版本。

VHDL語言涵蓋面廣,抽象描述能力強(qiáng),支持硬件的設(shè)計(jì)、驗(yàn)證、綜合與測試。VHDL能在多個(gè)級別上對同一邏輯功能進(jìn)行描述,如可以在寄存器級別上對電路的組成結(jié)構(gòu)進(jìn)行描述,也可以在行為描述級別上對電路的功能與性能進(jìn)行描述。無論哪種級別的描述,都有賴于優(yōu)良的綜合器其轉(zhuǎn)化為具體的硬件結(jié)構(gòu)。硬件描述語言概述VHDLVHDL全稱為超高速集成電路硬件描述語言。利用VHDL描述設(shè)計(jì),設(shè)計(jì)者可以不懂硬件結(jié)構(gòu),也不必考慮最終實(shí)現(xiàn)的目標(biāo)器件是什么,只需用正確的語言描述系統(tǒng)的行為即可。正因?yàn)閂HDL的硬件描述與具體的工藝技術(shù)和硬件結(jié)構(gòu)無關(guān),使得VHDL設(shè)計(jì)程序的硬件實(shí)現(xiàn)目標(biāo)器件有廣闊的選擇范圍,其中包括各系列的CPLD、FPGA及各種門陣列器件。

在各種硬件描述語言中,VHDL的行為抽象描述能力是最強(qiáng)的,從而決定了它成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語言。

硬件描述語言概述利用VHDL描述設(shè)計(jì),設(shè)計(jì)者可以不懂硬件結(jié)構(gòu),也不必ABEL-HDL

ABLE-HDL是一種最基本的硬件描述語言。它支持各種行為的輸入方式,其中包括布爾方程、真值表、狀態(tài)機(jī)等邏輯表達(dá)方式。ABEL語言和Verilog同屬一種描述級別,但ABEL的特性和受支持程度遠(yuǎn)不如Verilog。

ABLE的主要優(yōu)點(diǎn)有使用靈活、格式簡潔、編譯要求寬松等。ABLE被廣泛用于可編程邏輯器件的邏輯功能設(shè)計(jì),由于其語言描述的獨(dú)立性,因而適用于各種不同規(guī)模的可編程邏輯器件的設(shè)計(jì)。雖然有不少EDA軟件支持ABEL-HDL,但提供ABEL-HDL綜合器的EDA公司僅DATAIO公司一家,描述風(fēng)格一般只用門電路級描述方式,對于復(fù)雜的設(shè)計(jì)顯得力不從心。應(yīng)用不廣,未能進(jìn)入IEEE國際標(biāo)準(zhǔn)。硬件描述語言概述ABEL-HDLABLE-HDL是一種最基本的硬件VerilogHDL與VHDL的比較

一般的硬件描述語言可在三個(gè)層次上進(jìn)行電路描述,其層次由高到低依次可分為行為級、RTL級和門電路級。VHDL語言通常更適合行為級和RTL級的描述;VerilogHDL通常只適合RTL級和門電路級的描述。因此與VerilogHDL相比,VHDL是一種高級描述語言,適用于電路高級建模,最適合描述電路的行為,即描述電路的功能,但它幾乎不能直接控制門電路,即控制電路的資源;VerilogHDL則是一種低級的描述語言,最適合于描述門級電路,易于控制電路資源。硬件描述語言概述VerilogHDL與VHDL的比較一般的硬件描任何一種語言源程序,最終都要轉(zhuǎn)換成門電路級才能被布線器或適配器所接收。VHDL語言的綜合通常要經(jīng)過行為級→RTL級→門電路級的轉(zhuǎn)化;而VerilogHDL語言的綜合過程要稍簡單些,即經(jīng)過RTL級→門電路級的轉(zhuǎn)化。

VHDL和VerilogHDL主要區(qū)別在于邏輯表達(dá)的描述級別。VHDL雖然也可以直接描述門電路,但這方面的能力卻不如VerilogHDL;相反,VerilogHDL在高級建模描述方面不如VHDL。VerilogHDL的描述風(fēng)格接近于電路原理圖,從某種意義上說,它是電路原理圖的高級文本表示方式。硬件描述語言概述任何一種語言源程序,最終都要轉(zhuǎn)換成門電路級才能被布線由于VHDL和VerilogHDL各有所長,市場占有量也相差不多。VHDL描述語言層次較高,不易控制底層電路,因而對綜合器的綜合性能要求較高。但當(dāng)設(shè)計(jì)者積累一定經(jīng)驗(yàn)后會(huì)發(fā)現(xiàn),每種綜合器一般將一定描述風(fēng)格的語言綜合成確定的電路,只要熟悉基本單元電路的描述風(fēng)格,綜合后的電路還是易于控制的。

VHDL入門相對稍難,但在熟悉以后,設(shè)計(jì)效率明顯高于VerilogHDL,生成的電路性能也與VerilogHDL的不相上下。在VHDL設(shè)計(jì)中,綜合器完成的工作量是巨大的,設(shè)計(jì)者所做的工作就相對減少了;而在VerilogHDL設(shè)計(jì)中,工作量通常比較大,因?yàn)樵O(shè)計(jì)者需要搞清楚具體電路結(jié)構(gòu)的細(xì)節(jié)。

硬件描述語言概述由于VHDL和VerilogHDL各有所長,市第三章

VHDL基本概念硬件描述語言概述

VHDL程序的實(shí)體和結(jié)構(gòu)體

VHDL程序的庫和程序包

VHDL程序的配置VHDL基本概念第三章硬件描述語言概述VHDL基本概念VHDL語言的程序結(jié)構(gòu)一般結(jié)構(gòu)

VHDL程序結(jié)構(gòu)的一個(gè)顯著特點(diǎn)就是,任何一個(gè)完整的設(shè)計(jì)項(xiàng)目(或稱為設(shè)計(jì)實(shí)體,簡稱實(shí)體)都可以分為兩部分。第一部分主要用于描述電路的“外部端口”,包括器件名稱、端口的名稱、數(shù)據(jù)類型等,我們把它稱為“實(shí)體說明”;第二部分主要用于描述電路的“內(nèi)部結(jié)構(gòu)、功能及其實(shí)現(xiàn)的算法”,我們把它稱為“結(jié)構(gòu)體”。

以上兩部分是一個(gè)VHDL程序必備的兩部分,缺一不可。當(dāng)一個(gè)設(shè)計(jì)實(shí)體的內(nèi)、外兩部分都設(shè)計(jì)完成后,其他設(shè)計(jì)實(shí)體就可以像調(diào)用普通元件一樣直接調(diào)用它。

VHDL語言的程序結(jié)構(gòu)VHDL語言的程序結(jié)構(gòu)一般結(jié)構(gòu)VHDL程序結(jié)構(gòu)的一【例3-1】試用VHDL語言描述一個(gè)2輸入端的與非門。

--第一部分:“外部端口”

ENTITYnand2IS--實(shí)體說明描述,實(shí)體名稱為nand2PORT(a,b:INBIT;--a、b為輸入引腳,數(shù)據(jù)類型為BITy:OUTBIT);--y為輸出引腳,數(shù)據(jù)類型為BITENDnand2;--結(jié)束實(shí)體說明

--第二部分:“結(jié)構(gòu)體”

ARCHITECTUREaOFnand2IS--結(jié)構(gòu)體名稱為aBEGINy<=aNANDb;--a和b進(jìn)行與非運(yùn)算,結(jié)果賦給yENDa;--結(jié)束結(jié)構(gòu)體描述從上述例子可看出,VHDL的所有語句都是以“;”結(jié)束的;語句后面的“--”部分表示程序注釋。

VHDL語言的程序結(jié)構(gòu)【例3-1】試用VHDL語言描述一個(gè)2輸入端的與非門。“實(shí)體說明”部分給出了器件nand2的外部引腳(PORT),如圖所示。a、b為輸入引腳,y為輸出引腳,數(shù)據(jù)類型均為BIT。BIT指的是1位二進(jìn)制數(shù),只有2兩種邏輯取值“0”和“1”?!敖Y(jié)構(gòu)體”部分給出了nand2的內(nèi)部功能信息。其中“NAND”是實(shí)現(xiàn)“與非”運(yùn)算的運(yùn)算符;“<=”是賦值運(yùn)算符,從電路的角度來看就是表示信號的傳輸,即將a和b“與非”運(yùn)算后的結(jié)果信號傳輸給y。

VHDL語言的程序結(jié)構(gòu)“實(shí)體說明”部分給出了器件nand2的外部引腳(PO實(shí)體實(shí)體是VHDL程序設(shè)計(jì)中最基本的模塊,可以單獨(dú)編譯和并入設(shè)計(jì)庫。實(shí)體就是設(shè)計(jì)對象(或設(shè)計(jì)項(xiàng)目),實(shí)體可代表任何電路,從一個(gè)門電路、一個(gè)芯片、一塊電路板,到一個(gè)復(fù)雜系統(tǒng)都可看成一個(gè)實(shí)體。如果在設(shè)計(jì)時(shí)采用的是自頂向下分層、劃分模塊的設(shè)計(jì)方法,那么,各層的設(shè)計(jì)模塊都可看成一個(gè)實(shí)體。頂層的系統(tǒng)模塊稱為頂層實(shí)體,低層的設(shè)計(jì)模塊稱為低層實(shí)體。在用VHDL語言描述時(shí),頂層的實(shí)體可將比它低的低層實(shí)體當(dāng)作元件來調(diào)用。至于低層實(shí)體的具體結(jié)構(gòu)和功能,在低層實(shí)體中描述。

實(shí)體實(shí)體實(shí)體是VHDL程序設(shè)計(jì)中最基本的模塊,可以單獨(dú)編實(shí)體說明實(shí)體說明的功能就是對實(shí)體與外部電路的接口進(jìn)行描述,是實(shí)體的表層設(shè)計(jì)單元,它規(guī)定了實(shí)體的輸入輸出接口信號,是實(shí)體對外的一個(gè)通信界面。

實(shí)體說明常用的語句結(jié)構(gòu)如下:

ENTITY實(shí)體名IS[GENERIC(類屬參數(shù)說明語句);][PORT(端口說明);]END實(shí)體名;實(shí)體實(shí)體說明實(shí)體說明的功能就是對實(shí)體與外部電路的2.中間方括號內(nèi)的語句描述并非必需。3.對于VHDL的編譯器和綜合器來說,程序字母的大小寫是不加區(qū)分的,但為了便于閱讀和分辨,建議將VHDL的表示符或基本語句的關(guān)鍵詞以大寫方式表示,而由設(shè)計(jì)者添加的內(nèi)容以小寫方式來表示。

實(shí)體說明中應(yīng)注意以下幾個(gè)問題:

1.實(shí)體名可由設(shè)計(jì)者自己規(guī)定,可采用英文字母“A-Z”、“a-z”,阿拉伯?dāng)?shù)字“0-9”,或底線符號“_”,但字符數(shù)不能超過32個(gè),不能以數(shù)字或“_”開頭,不能連續(xù)使用底線符號“__”,也不能以“_”結(jié)束。實(shí)體2.中間方括號內(nèi)的語句描述并非必需。3.對于VHDL的編譯器ENTITYdffISPORT(clk,d:INBIT;q,qb:OUTBIT);ENDdff;【例3-2】試編寫一個(gè)D觸發(fā)器的實(shí)體說明。

本例中:實(shí)體名:dff類屬參數(shù)說明語句:缺省(非必須)端口說明:輸入端口clk,d;輸出端口q,qb。端口類型BIT。實(shí)體ENTITYdffIS【例3-2】試編寫一個(gè)D觸發(fā)器一、類屬參數(shù)說明語句(GENERIC)

類屬參數(shù)說明語句必須放在端口說明語句之前,類屬參數(shù)的值可由實(shí)體外部提供,它通常用于設(shè)定元件內(nèi)部電路的結(jié)構(gòu)和規(guī)模,設(shè)計(jì)者可從外面通過重新設(shè)定類屬參數(shù)的值而容易地改變元件內(nèi)部電路結(jié)構(gòu)和規(guī)模。類屬參數(shù)說明語句的一般書寫格式如下:GENERIC(常數(shù)名:數(shù)據(jù)類型[:設(shè)定值];┇常數(shù)名:數(shù)據(jù)類型[:設(shè)定值]);其中的常數(shù)名由設(shè)計(jì)者定義,數(shù)據(jù)類型通常取INTEGER(整數(shù))或TIME等類型,設(shè)定值即為常數(shù)名所代表的值。但需注意,綜合器只支持整數(shù)數(shù)據(jù)類型。實(shí)體一、類屬參數(shù)說明語句(GENERIC)類屬參數(shù)說明【例3-3】試編寫一個(gè)12位二進(jìn)制計(jì)數(shù)器的實(shí)體說明。

ENTITYcounter_xISGENERIC(n:INTEGER:=12);PORT(clk:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(n-1DOWNTO0));ENDcounter_x;本例中,定義了類屬參數(shù)n的設(shè)定值為12,在后續(xù)語句中,用到n的地方均可用12代替。本例的第4行語句也可寫成

q:OUTSTD_LOGIC_VECTOR(11DOWNTO0);

優(yōu)點(diǎn):當(dāng)在某個(gè)實(shí)體內(nèi)大量使用某個(gè)參數(shù)時(shí),可把該參數(shù)定義成類屬參數(shù)。當(dāng)設(shè)計(jì)者需改變該參數(shù)的值時(shí),只需在類屬參數(shù)語句中改寫一次即可。從EDA工具綜合的結(jié)果來看,將大大地影響設(shè)計(jì)結(jié)果的硬件規(guī)模。實(shí)體【例3-3】試編寫一個(gè)12位二進(jìn)制計(jì)數(shù)器的實(shí)體說明。二、端口說明(PORT)

端口說明對設(shè)計(jì)實(shí)體與外部電路的接口通道進(jìn)行了說明,包括對每一接口的輸入輸出模式和數(shù)據(jù)類型進(jìn)行了定義。端口說明的一般書寫格式如下:PORT(端口名,{端口名}:端口模式數(shù)據(jù)類型;┇

端口名,{端口名}:端口模式數(shù)據(jù)類型);實(shí)體二、端口說明(PORT)端口說明對設(shè)計(jì)實(shí)體與(1)端口名。端口名是設(shè)計(jì)者賦給每個(gè)對外通道的名字,它與原理圖中元件符號上的管腳名相類似。對端口的命名可采用英文字母“A-Z”、“a-z”,阿拉伯?dāng)?shù)字“0-9”,或底線符號“_”,但字符數(shù)不能超過32個(gè),不能以數(shù)字或“_”開頭,不能連續(xù)使用底線符號“__”,也不能以“_”結(jié)束。每個(gè)端口名在同一實(shí)體中必須是唯一的,不能有重復(fù)現(xiàn)象。(2)端口模式。端口模式用來說明端口上的數(shù)據(jù)流動(dòng)方向。端口模式包括IN、OUT、INOUT、BUFFER四種類型。實(shí)體(1)端口名。端口名是設(shè)計(jì)者賦給每個(gè)對外通道的名字,它與原理

1)IN。定義的端口為輸入端口,可以通過此端口將外部的其他信號讀入設(shè)計(jì)實(shí)體中。

2)OUT。定義的端口為輸出端口,通過此端口可將信號從設(shè)計(jì)實(shí)體輸出到外部。

3)INOUT。定義的端口為輸入輸出雙向端口,即實(shí)體可以通過該端口輸入外部信號,又可以通過該端口把實(shí)體內(nèi)的信號輸出到外部。實(shí)體1)IN。定義的端口為輸入端口,可以通過此端口將外部

4)BUFFER。定義的端口為具有數(shù)據(jù)讀入功能的輸出端口。它與INOUT的區(qū)別是,INOUT是雙向端口,即可以輸入信號,也可以輸出信號;而BUFFER也可以輸出實(shí)體信號到外部,但作為輸入時(shí),信號不是由外部輸入,而是在實(shí)體內(nèi)由輸出信號反饋得到,即BUFFER模式的端口在信號輸出實(shí)體的同時(shí),也可以被實(shí)體本身讀入。(3)數(shù)據(jù)類型。數(shù)據(jù)類型是指端口信號的取值類型。

1)BIT。二進(jìn)制位類型,其取值是一個(gè)1位的二進(jìn)制數(shù),取值只能是0或1。

2)BIT_VECTOR。位向量數(shù)據(jù)類型,其取值是一組二進(jìn)制數(shù),常用來描述總線等端口,如data:INBIT_VECTOR(3DOWNTO0),定義了一個(gè)具有4位位寬的輸入數(shù)據(jù)總線端口。

實(shí)體4)BUFFER。定義的端口為具有數(shù)據(jù)讀入功能的輸出

3)STD_LOGIC。工業(yè)標(biāo)準(zhǔn)邏輯類型,取值有0、1、Z(高阻)、X(未知)等9種,該數(shù)據(jù)類型由IEEE庫中的STD_LOGIC_1164程序包定義。

4)STD_LOGIC_VECTOR。工業(yè)標(biāo)準(zhǔn)邏輯向量類型,是STD_LOGIC的組合,也常用來描述總線等端口。

5)INTEGER。整數(shù)類型,可用作循環(huán)的指針或常數(shù),通常不用作I/O信號。

6)BOOLEAN。布爾類型,取值有FALSE(假)、TRUE(真)兩種。

3)STD_LOGIC。工業(yè)標(biāo)準(zhǔn)邏輯類型,取值有0、1、關(guān)鍵字說明BOOLEAN布爾類型,取值有FALSE、TURE兩種BIT二進(jìn)制位類型,取值有0、1BIT_VECTOR位向量類型,表示一組二進(jìn)制數(shù)STD_LOGIC工業(yè)標(biāo)準(zhǔn)的邏輯類型,取值0、1、X、ZSTD_LOGIC_VECTOR工業(yè)標(biāo)準(zhǔn)的邏輯向量類型,是STD_LOGIC的組合INTEGER整數(shù)類型,可用做循環(huán)的指針或常數(shù)常用端口數(shù)據(jù)類型實(shí)體關(guān)鍵字說明BOOLEAN布爾類型,取值有FALSE、TURE結(jié)構(gòu)體對一個(gè)設(shè)計(jì)實(shí)體而言,實(shí)體說明部分描述的是實(shí)體的對外接口,并不考慮實(shí)體內(nèi)部的具體細(xì)節(jié)。實(shí)體的內(nèi)部結(jié)構(gòu)與行為由結(jié)構(gòu)體來描述。

結(jié)構(gòu)體是實(shí)體的一個(gè)重要組成部分,主要用來描述實(shí)體內(nèi)的硬件結(jié)構(gòu)、元件之間的連接、實(shí)體所完成的邏輯功能以及數(shù)據(jù)的傳輸和變換等方面的內(nèi)容。一個(gè)實(shí)體可以有一個(gè)或多個(gè)結(jié)構(gòu)體,每個(gè)結(jié)構(gòu)體可分別描述該實(shí)體功能的不同實(shí)現(xiàn)方案。

結(jié)構(gòu)體一般由兩大部分組成:對數(shù)據(jù)類型、常數(shù)、信號、子程序和元器件等因素的說明;描述實(shí)體邏輯行為的功能描述語句,包括各種順序語句和并行語句。

結(jié)構(gòu)體結(jié)構(gòu)體對一個(gè)設(shè)計(jì)實(shí)體而言,實(shí)體說明部分描述的是一、結(jié)構(gòu)體的一般書寫格式

ARCHITECTURE結(jié)構(gòu)體名OF實(shí)體名IS[說明語句]BEGIN[功能描述語句]END結(jié)構(gòu)體名;在書寫格式上需注意,結(jié)構(gòu)體中“實(shí)體名”必須與實(shí)體說明中的“實(shí)體名”相一致,而“結(jié)構(gòu)體名”可由設(shè)計(jì)者自己選擇,但當(dāng)一個(gè)實(shí)體具有多個(gè)結(jié)構(gòu)體時(shí),各結(jié)構(gòu)體名不可重復(fù)。說明語句必須放在關(guān)鍵詞“ARCHITECTURE”和“BEGIN”之間,結(jié)構(gòu)體必須以“END結(jié)構(gòu)體名;”作為結(jié)束句。

結(jié)構(gòu)體一、結(jié)構(gòu)體的一般書寫格式ARCHITECTURE二、結(jié)構(gòu)體的說明語句

結(jié)構(gòu)體中的說明語句是對結(jié)構(gòu)體的功能描述語句中要用到的信號(SIGNAL)、數(shù)據(jù)類型(TYPE)、常數(shù)(CONSTANT)、元件(COMPONENT)、函數(shù)(FUNCTION)和過程(PROCEDURE)等加以說明。結(jié)構(gòu)體信號定義和端口說明一樣,應(yīng)有信號名稱和數(shù)據(jù)類型定義,因是內(nèi)部連接用的信號不需說明方向。需要注意的是,在一個(gè)結(jié)構(gòu)體中說明和定義的數(shù)據(jù)類型、常數(shù)、元件、函數(shù)和過程只能用于該結(jié)構(gòu)體中。如果希望這些定義也能用于其他的實(shí)體或結(jié)構(gòu)體中,需要將其作為程序包來處理。結(jié)構(gòu)體二、結(jié)構(gòu)體的說明語句結(jié)構(gòu)體中的說明語句是對結(jié)構(gòu)體的三、功能描述語句

功能描述語句含有五種不同類型且以并行方式工作的語句結(jié)構(gòu),這可以看成是結(jié)構(gòu)體的五個(gè)子結(jié)構(gòu)。而在每一子結(jié)構(gòu)的內(nèi)部也可能含有順序運(yùn)行的邏輯描述語句。這就是說雖然五個(gè)子結(jié)構(gòu)本身是并行語句,但每個(gè)子結(jié)構(gòu)內(nèi)所包含的語句并不一定是并行語句。

結(jié)構(gòu)體三、功能描述語句功能描述語句含有五種不同類型右圖給出了結(jié)構(gòu)體的一般構(gòu)造圖??梢钥闯鼋Y(jié)構(gòu)體包含說明語句和功能描述語句。有關(guān)常用的子結(jié)構(gòu)基本組成和語句描述將在后續(xù)內(nèi)容中介紹。結(jié)構(gòu)體右圖給出了結(jié)構(gòu)體的一般構(gòu)造圖。結(jié)構(gòu)體四、結(jié)構(gòu)體描述方法

(1)行為描述法:采用進(jìn)程語句,順序描述被稱設(shè)計(jì)實(shí)體的行為。(2)數(shù)據(jù)流描述法:采用進(jìn)程語句順序描述數(shù)據(jù)流在控制流作用下被加工、處理、存儲(chǔ)的全過程。(3)結(jié)構(gòu)描述法,采用并行處理語句描述設(shè)計(jì)實(shí)體內(nèi)的結(jié)構(gòu)組織和元件互連關(guān)系。

結(jié)構(gòu)體四、結(jié)構(gòu)體描述方法(1)行為描述法:采用進(jìn)程語句,順序描

【例3-4】試用VHDL語言描述下圖所示電路。

VHDL語言的程序結(jié)構(gòu)【例3-4】試用VHDL語言描述下圖所示電路。VH

--實(shí)體說明

ENTITYxor2IS--實(shí)體名為xor2PORT(A,B:INBIT;--A、B為輸入引腳,數(shù)據(jù)類型BITY:OUTBIT);--Y為輸出引腳,數(shù)據(jù)類型BITENDxor2;--結(jié)構(gòu)體

ARCHITECTUREaOFxor2IS--結(jié)構(gòu)體名為aSIGNALtemp1,temp2,temp3:BIT;--類屬參數(shù)說明語句

BEGIN--開始結(jié)構(gòu)體描述

temp1<=ANANDB;--A和B與非運(yùn)算,結(jié)果賦給temp1temp2<=ANANDtemp1;--A和temp1與非運(yùn)算給temp2temp3<=BNANDtemp1;--B和temp1與非運(yùn)算給temp3Y<=temp2NANDtemp3;ENDa;--結(jié)束結(jié)構(gòu)體描述VHDL語言的程序結(jié)構(gòu)--實(shí)體說明VHDL語言的程序結(jié)構(gòu)在上述例子中,temp1、temp2、temp3和Y這四條賦值語句之間是并行運(yùn)行的關(guān)系,即它們的執(zhí)行是同步的。只要某個(gè)信號發(fā)生變化,都會(huì)立即引起相應(yīng)的語句被執(zhí)行,產(chǎn)生相應(yīng)的輸出,而不管該語句的書寫先后順序。這一點(diǎn)和傳統(tǒng)的程序設(shè)計(jì)語言的順序執(zhí)行情況是不同的,但它和硬件電路的工作情況相一致,這種并行的執(zhí)行方式是VHDL與傳統(tǒng)程序語言的最顯著區(qū)別。VHDL語言的程序結(jié)構(gòu)在上述例子中,temp1、temp2、temp3和Y第三章

VHDL基本概念硬件描述語言概述

VHDL程序的實(shí)體和結(jié)構(gòu)體

VHDL程序的庫和程序包

VHDL程序的配置VHDL基本概念第三章硬件描述語言概述VHDL基本概念一、庫

(LIBRARY)

庫是經(jīng)編譯后數(shù)據(jù)的集合,它可以是預(yù)先定義好的數(shù)據(jù)類型,也可以是已編譯過的設(shè)計(jì)單元(包括實(shí)體說明、結(jié)構(gòu)體、程序包等)。因此可以把庫看成是用于存放預(yù)先完成的數(shù)據(jù)類型和源設(shè)計(jì)單元的倉庫。如果在一項(xiàng)VHDL設(shè)計(jì)中要用到庫中的信息,就必須在這項(xiàng)設(shè)計(jì)中預(yù)先打開這個(gè)庫。在綜合過程中,每當(dāng)綜合器遇到庫語言,就可將庫指定的源文件讀入,并參與綜合。庫的語句書寫格式如下:

LIBRARY庫名;

VHDL的庫一、庫(LIBRARY)庫是經(jīng)編譯后數(shù)據(jù)的集合,1.IEEE庫。IEEE庫是VHDL設(shè)計(jì)中最常用的庫,它包含了IEEE標(biāo)準(zhǔn)的程序包和其他一些支持工業(yè)標(biāo)準(zhǔn)的程序包。IEEE庫中主要包括STD_LOGIC_1164、STD_LOGIC_UNSIGNED、STD_LOGIC_SIGNED等標(biāo)準(zhǔn)程序包

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論