VHDL語(yǔ)言學(xué)習(xí)_第1頁(yè)
VHDL語(yǔ)言學(xué)習(xí)_第2頁(yè)
VHDL語(yǔ)言學(xué)習(xí)_第3頁(yè)
VHDL語(yǔ)言學(xué)習(xí)_第4頁(yè)
VHDL語(yǔ)言學(xué)習(xí)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(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)介

1、VHDL學(xué)習(xí)(本學(xué)習(xí)以MAXPLUS10為工具軟件)第一章、 VHDL程序的組成一個(gè)完整的VHDL程序是以下五部分組成的:庫(kù)(LIBRARY):儲(chǔ)存預(yù)先已經(jīng)寫(xiě)好的程序和數(shù)據(jù)的集合程序包(PACKAGE):聲明在設(shè)計(jì)中將用到的常數(shù)、數(shù)據(jù)類型、元件及子程序?qū)嶓w(ENTITY):聲明到其他實(shí)體或其他設(shè)計(jì)的接口,即定義本定義的輸入輸出端口構(gòu)造體(ARCHITECTUR):定義實(shí)體的實(shí)現(xiàn),電路的具體描述配置(CONFIGURATION):一個(gè)實(shí)體可以有多個(gè)構(gòu)造體,可以通過(guò)配置來(lái)為實(shí)體選擇其中一個(gè)構(gòu)造體1.1庫(kù)庫(kù)用于存放預(yù)先編譯好的程序包(PACKAGE)和數(shù)據(jù)集合體,可以用USE語(yǔ)句調(diào)用庫(kù)中不同的程序包

2、,以便不同的VHDL設(shè)計(jì)使用。庫(kù)調(diào)用的格式:LIRARY 庫(kù)名USE 庫(kù)名.所要調(diào)用的程序包名.ALL可以這樣理解,庫(kù)在硬盤(pán)上的存在形式是一個(gè)文件夾,比如庫(kù)IEEE,就是一個(gè)IEEE的文件夾,可以打開(kāi)MAX PLUSR安裝源文件夾,進(jìn)入VHDL93的文件夾,就可以看到一個(gè)IEEE的文件夾,這就是IEEE庫(kù),而里面的文件就是一個(gè)個(gè)對(duì)程序包或是數(shù)據(jù)的描述文件,可以用文本打開(kāi)來(lái)查看文件的內(nèi)容。例如在VHDL程序里面經(jīng)??梢钥吹健癠SE IEEE.STD_LOGIC_1164”,可以這樣解釋這句話,本序里要用到IEEE文件夾下程序包STD_LOGIC_1164,而STD_LOGIC_1164是可以在I

3、EEE文件夾的STD1164.vhd文件里面看到的,用文本打開(kāi)STD1164.vhd,可以看到有一名為“IEEE.STD_LOGIC_1164”P(pán)AKAGE定義。簡(jiǎn)單的來(lái)說(shuō),庫(kù)相當(dāng)于文件夾,而程序包和數(shù)據(jù)就相當(dāng)于文件夾里面的文件的內(nèi)容(注意:不是相當(dāng)于文件,因?yàn)槌绦虬蛿?shù)據(jù)都是在文件里面定義的,而文件名是和實(shí)體名相同的,可以說(shuō)實(shí)體相當(dāng)于文件)。到了這里就可以考慮一個(gè)問(wèn)題,“在安裝MAX PLUS時(shí)有多少個(gè)庫(kù)已經(jīng)存在的呢”,要得到這個(gè)問(wèn)題的答案,可以打開(kāi)安裝目錄下的“VHDL93”文件夾,就可以看到里面有五個(gè)文件夾,分別是ATERA、IEEE、LPM、STD、VITAL,也就是說(shuō)你看到了五個(gè)庫(kù),

4、分別是ATERA功能庫(kù):增強(qiáng)型功能部件,即IP核,包括數(shù)字信號(hào)處理、通信、PCI和其他總線接口、處理器和外設(shè)及外設(shè)的功能。IEEE庫(kù):由IEEE(美國(guó)電子電機(jī)工程師學(xué)會(huì))制定的標(biāo)準(zhǔn)庫(kù)LPM庫(kù):參數(shù)可調(diào)模塊庫(kù)STD庫(kù):符合VHDL標(biāo)準(zhǔn)的庫(kù)VITAL庫(kù):vhdl上對(duì)asic提供高精確度及高效率的仿真模型庫(kù)調(diào)用庫(kù)的表達(dá)有兩種,一是顯式表式,就是用LIBRARY和USE來(lái)調(diào)用庫(kù)里面的程序包或數(shù)據(jù),適用于那些不符合VHDL標(biāo)準(zhǔn)的庫(kù)調(diào)用,比如IEEE庫(kù);另一種是隱式表式,就是不用說(shuō)明就自動(dòng)調(diào)用的,適合于符合VHDL標(biāo)準(zhǔn)的庫(kù)調(diào)用,比如STD庫(kù),不用寫(xiě)明調(diào)用就已經(jīng)自動(dòng)調(diào)用出來(lái)了。除了上面所介紹的庫(kù)外,還有用戶

5、自定義庫(kù)及WORK庫(kù),WORK庫(kù)是用戶的VHDL現(xiàn)行工作庫(kù),從上面的理解可知,WORK庫(kù)就是用戶當(dāng)前編輯文件所在的文件夾,文件夾里面的其他文件里面所描述包或數(shù)據(jù)的集合就是WORK庫(kù)里面的包和數(shù)據(jù)的集合。由于WORK庫(kù)自動(dòng)滿足VHDL標(biāo)準(zhǔn),因此在就應(yīng)用中不必以顯式預(yù)先說(shuō)明(比如 LIBRARY WORK這樣的定義是多余的)。1.2程序包在VHDL中,常量、數(shù)據(jù)類型與子程序可以在實(shí)體說(shuō)明部分和結(jié)構(gòu)體部分加以說(shuō)明,且實(shí)體說(shuō)明部分所定義的常量、數(shù)據(jù)類型與子程序在相應(yīng)的結(jié)構(gòu)體中是可見(jiàn)的(可以被使用的),但在一個(gè)實(shí)體的說(shuō)明部分與結(jié)構(gòu)體的部分對(duì)于其他實(shí)體的說(shuō)明部分與結(jié)構(gòu)部分是不可見(jiàn)的(注:實(shí)體相當(dāng)于一個(gè)文件

6、),程序包(PACKAGE)就是為了使一組常量說(shuō)明、數(shù)據(jù)說(shuō)明、子程序說(shuō)明和元件說(shuō)明等內(nèi)容對(duì)于多個(gè)設(shè)計(jì)實(shí)體都成為可見(jiàn)的而提供的一種結(jié)構(gòu),可以這樣理解一個(gè)實(shí)體(文件)里的PACKAGE對(duì)常量等的定義在其于的實(shí)體(文件)里是可以被使用的。程序包由包頭和包體構(gòu)成,包頭格式:PACKAGE 程序包名 IS   說(shuō)明語(yǔ)句;END 程序包名;說(shuō)明語(yǔ)句部分可為:USE語(yǔ)句、類型定義、子程序聲明(定義在包體)、常量定義、信號(hào)聲明、元件聲明等。包體格式:PACKAGE BODY 程序包名 IS說(shuō)明語(yǔ)句;END 程序包名說(shuō)明部分用于子程序的定義,注:在包中對(duì)子程序的說(shuō)明分為兩部分,子程序聲明放在

7、包頭,子程序的定義在包體。實(shí)體對(duì)于程序包不是自動(dòng)可見(jiàn)(即不是自動(dòng)就設(shè)為使用)的,為了使用程序包說(shuō)明的內(nèi)容就必須在實(shí)體的開(kāi)始加上USE語(yǔ)句(即是要用USE來(lái)調(diào)用程序包里面所說(shuō)明的東西),即使實(shí)體和程序包是在同一個(gè)文件里也要這樣調(diào)用。1.3實(shí)體實(shí)體(ENTITY)是VHDL設(shè)計(jì)中最其本的組成部分之一(另一個(gè)是結(jié)構(gòu)體),VHDL表達(dá)的所有設(shè)計(jì)均與實(shí)體有關(guān)。實(shí)體類似于原理圖中的一個(gè)部件符號(hào),它并不描述設(shè)計(jì)的具體功能,只是定義所需的全部輸入/輸出信號(hào)。實(shí)體格式如下:ENTITY 實(shí)體名 ISGENERIC(常數(shù)名:數(shù)據(jù)類型:設(shè)定值)      

8、   類屬說(shuō)明   PORT                                       端口說(shuō)明   (端口信號(hào)名1: 模式 類型;端口信號(hào)名

9、2: 模式 類型;端口信號(hào)名3: 模式 類型;端口信號(hào)名4: 模式 類型);TYPE語(yǔ)句或常量定義                       實(shí)體申明并行語(yǔ)句                  &#

10、160;                實(shí)體語(yǔ)句 END 實(shí)體名;實(shí)體名:MAXPLUSII要求實(shí)體名必須與VHDL文件名相同,否則編譯會(huì)出錯(cuò)。類屬參量:用于為設(shè)計(jì)實(shí)體和其外部環(huán)境通信的靜態(tài)信息提供通道,可以定義端口的大小、實(shí)體中元件數(shù)目及實(shí)體的定時(shí)特性等等;帶有GENERIC的實(shí)體所定義的元件叫做參數(shù)化元件,即元件的規(guī)?;蛱匦杂蒅ENERIC的常數(shù)決定,在GENERIC所定義的常數(shù)是可以在引用過(guò)程中修改的,因此利用GENERIC可以設(shè)計(jì)更加通用

11、的元件,彈性地適應(yīng)不同的應(yīng)用。端口信號(hào)名:端口信號(hào)名在實(shí)體之中必須是唯一的,信號(hào)名應(yīng)是合法的標(biāo)識(shí)符端口模式:分別有IN、OUT、INOUT、BUFFER和LINKAGE,這五種類型在后面的章節(jié)將介紹到。端口類型:常用的有INTEGER、STD_LOGIC、STD_LOGIC_VECTOR,有待后面章節(jié)介紹。實(shí)體申明:實(shí)體申明部分應(yīng)放在端口說(shuō)明的下面,實(shí)體申明部分用于定義實(shí)體接口中的公共信息,例如可以用來(lái)定義新的數(shù)據(jù)類型和常量定義等。實(shí)體語(yǔ)句:是每一設(shè)計(jì)實(shí)體接口的公共部分,實(shí)體語(yǔ)句只能由并行斷言語(yǔ)句、并行過(guò)程調(diào)用語(yǔ)句和被動(dòng)進(jìn)程語(yǔ)句,注意,這些實(shí)體語(yǔ)句部分應(yīng)該是被動(dòng)語(yǔ)句,即在語(yǔ)句中不含有信號(hào)賦值語(yǔ)

12、句。1.4結(jié)構(gòu)體所有能被仿真的實(shí)體都由結(jié)構(gòu)體(ARCHITECTURE)描述,即結(jié)構(gòu)體描述實(shí)體的結(jié)構(gòu)或行為,一個(gè)實(shí)體可以有多個(gè)結(jié)構(gòu)體,每個(gè)結(jié)構(gòu)體分別代表該實(shí)體功能的不同實(shí)現(xiàn)方案。結(jié)構(gòu)體格式:ARCHITECTURE 結(jié)構(gòu)體名 OF 實(shí)體名 IS定義語(yǔ)句(元件例化);BEGIN并行處理語(yǔ)句;END 結(jié)構(gòu)體名;結(jié)構(gòu)體名是對(duì)本結(jié)構(gòu)體的命名,它是該結(jié)構(gòu)體的惟一名稱,雖然可以由設(shè)計(jì)人員自由命名,但一般都將命名和對(duì)實(shí)體的描述結(jié)合起來(lái),結(jié)構(gòu)體對(duì)實(shí)體描述有三種方式(括號(hào)中為命名):1) 行為描述(BEHAVE):反映一個(gè)設(shè)計(jì)的功能和算法,一般使用進(jìn)程PROCESS,用順序語(yǔ)句表達(dá);2) 結(jié)構(gòu)描述(STRUCT

13、):反映一個(gè)設(shè)計(jì)硬件方面的特征,表達(dá)了內(nèi)部元件間連接關(guān)系,使用元件例化來(lái)描述;3) 數(shù)據(jù)流描述(DATAFLOW):反映一個(gè)設(shè)計(jì)中數(shù)據(jù)從輸入到輸出的流向,使用并行語(yǔ)句描述。1.5配置一個(gè)實(shí)體可以用多個(gè)結(jié)構(gòu)體描述,具體綜合時(shí),選擇哪一個(gè)結(jié)構(gòu)體來(lái)綜合,由配置來(lái)確定,仿真時(shí)用配置語(yǔ)句進(jìn)行配置能節(jié)省大量時(shí)間。配置格式:CONFIGURATION 配置名 OF 實(shí)體名ISFOR 選配結(jié)構(gòu)體名;END FOR;     END CONFIGURATION; 第二章、 數(shù)據(jù)類型、算符、數(shù)據(jù)對(duì)象、屬性2.1 標(biāo)識(shí)符VHDL標(biāo)識(shí)符由大小寫(xiě)字母、數(shù)字和下劃線構(gòu)成,不區(qū)分大小

14、寫(xiě)2.2 數(shù)據(jù)對(duì)象在邏輯綜合中,VHDL常用的數(shù)據(jù)對(duì)象有信號(hào)、變量及常量。1) 信號(hào)SIGNAL,為全局變量,在程序包說(shuō)明、實(shí)體說(shuō)明、結(jié)構(gòu)體描述中使用,用于聲明內(nèi)部信號(hào),而非外部信號(hào)(外部信號(hào)為IN、OUT、INOUT、BUFFER),其在元件之間起互聯(lián)作用,可以賦值給外部信號(hào)。定義格式:SIGNAL 信號(hào)名: 數(shù)據(jù)類型:=初始值;賦值格式:目標(biāo)信號(hào)名<=表達(dá)式常在結(jié)構(gòu)體中用賦值語(yǔ)句完成對(duì)信號(hào)賦初值的任務(wù),因?yàn)榫C合器往往忽略信號(hào)聲名時(shí)所賦的值。2) 變量(VARIABLE),只在給定的進(jìn)程中用于聲明局部值或用于子程序中,變量的賦值符號(hào)為“:=”,和信號(hào)不同,信號(hào)是實(shí)際的,是內(nèi)部的一個(gè)存儲(chǔ)

15、元件(SIGNAL)或者是外部輸入(IN、OUT、INOUT、BUFFER),而變量是虛的,僅是為了書(shū)寫(xiě)方便而引入的一個(gè)名稱,常用在實(shí)現(xiàn)某種算法的賦值語(yǔ)句當(dāng)中。定義格式:VARIABLE 變量名: 數(shù)據(jù)類型:=初始值3) 常量,全局變量,在結(jié)構(gòu)體描述、程序包說(shuō)明、實(shí)體說(shuō)明、過(guò)程說(shuō)明、函數(shù)調(diào)用說(shuō)明和進(jìn)程說(shuō)明中使用,在設(shè)計(jì)中描述某一規(guī)定類型的特定值不變,如利用它可設(shè)計(jì)不同模值的計(jì)數(shù)器,模值存于一常量中,對(duì)不同的設(shè)計(jì),改變模值僅需改變此常量即可,就如上一章所說(shuō)的參數(shù)化元件。定義格式:CONSTANT 常數(shù)名:數(shù)據(jù)類型:=表達(dá)式;4) 信號(hào)和變量最大的不同在于,如果在一個(gè)進(jìn)程中多次為一個(gè)信號(hào)賦值,只有

16、最后一個(gè)值會(huì)起作用,而當(dāng)為變量賦值時(shí),變量的值改變是立即發(fā)生的。2.3 數(shù)據(jù)類型 VHDL是一種強(qiáng)類型語(yǔ)言,對(duì)于每一個(gè)常數(shù)、變量、信號(hào)、函數(shù)及設(shè)定的各種參量的數(shù)據(jù)類型(DATA TYPES)都有嚴(yán)格要求,相同數(shù)據(jù)類型的變量才能互相傳遞和作用,標(biāo)準(zhǔn)定義的數(shù)據(jù)類型都在VHDL標(biāo)準(zhǔn)程序表STD中定義,實(shí)際使用中,不需要用USE語(yǔ)句以顯式調(diào)用。   VHDL常用的數(shù)據(jù)類型有三種:標(biāo)準(zhǔn)定義的數(shù)據(jù)類型、IEEE預(yù)定義標(biāo)準(zhǔn)邏輯位與矢量及用戶自定義的數(shù)據(jù)類型。1) 標(biāo)準(zhǔn)定義的數(shù)據(jù)類型Boolean布爾量:取值為FALSE和TRUECHARACTER字符:字符在編程時(shí)用單引號(hào)括起來(lái),如AST

17、RING字符串:雙引號(hào)括起來(lái),如“ADFBD”INTEGER整數(shù):整數(shù)范圍從-(231-1)到(231-1);REAL實(shí)數(shù):實(shí)數(shù)類型僅能在VHDL仿真器中使用,綜合器不支持BIT位:取值為0或1;TIME時(shí)間:范圍從-(231-1)到(231-1),表達(dá)方法包含數(shù)字、(空格)單位兩部分,如(10 PS);BIT_VECTOR位矢量:其于BIT數(shù)據(jù)的數(shù)組,使用矢量必須注明寬度,即數(shù)組中的元素個(gè)數(shù)和排列,如SIGNAL A: BIT_VECTOR(7 DOWNTO 0)NATUREAL自然數(shù):整數(shù)的一個(gè)POSITIVE正整數(shù):SEVRITY LEVEL錯(cuò)誤等級(jí):在VHDL仿真器中,錯(cuò)誤等級(jí)用來(lái)設(shè)計(jì)

18、系統(tǒng)的工作狀態(tài),共有四種可能的狀態(tài)值:NOTE,WARNING,ERROR和FAILURE2) IEEE預(yù)定義的標(biāo)準(zhǔn)邏輯位與矢量STD_LOGIC::工業(yè)標(biāo)準(zhǔn)的邏輯類型,取值為0、1、Z、X(強(qiáng)未知)、W(弱未知)、L(弱0)、H(弱1)、(忽略)、U(未初始化),只有前四種具有實(shí)際物理意義,其他的是為了與模擬環(huán)境相容才保留的。STD_LOGIC_VECTOR:工業(yè)標(biāo)準(zhǔn)的邏輯類型集,STD_LOGIC的組合。3) 用戶自定義的數(shù)據(jù)類型有四種,分別是枚舉類型、整數(shù)類型和實(shí)數(shù)類型、數(shù)組類型、記錄類型枚舉類型: TYPE 數(shù)據(jù)類型名 IS (枚舉文字,枚舉文字,. . . .)整數(shù)類型與實(shí)數(shù)類型是標(biāo)

19、準(zhǔn)包中預(yù)定義的整數(shù)類型的子集,由于綜合器無(wú)法綜合未限定范圍的整數(shù)類型的信號(hào)或變量,故一定要用RANGE子句為所定義整數(shù)范圍限定范圍以使綜合器能決定信號(hào)或變量的二進(jìn)制的位數(shù)。格式:   TYPE 數(shù)據(jù)類型名 IS RANGE 約束范圍;     (如-10到+10)數(shù)組類型:TYPE 數(shù)據(jù)類型名 IS ARRAY(下限 TO 上限) OF 類型名稱記錄類型:TYPE 記錄類型名 IS RECODE元素名: 數(shù)據(jù)類型名;元素名: 數(shù)據(jù)類型名;。END RECODE2.4 運(yùn)算符VHDL為構(gòu)造計(jì)算數(shù)值的表達(dá)式提供了許多預(yù)定義運(yùn)算符,可分為四

20、種類型:算術(shù)運(yùn)算符,關(guān)系運(yùn)算符,邏輯運(yùn)算符與連接運(yùn)算符。算術(shù)運(yùn)算符:+、-、*、/、*、MOD、REM、ABS關(guān)系運(yùn)算符:=、/=、<、<=、>、>=邏輯運(yùn)算符:AND、OR、NOT、NAND、NOR、XOR、NOR連接運(yùn)算符:&,將多個(gè)對(duì)象或矢量連接成維數(shù)更大的矢量2.5 VHDL屬性屬性是關(guān)于實(shí)體、結(jié)構(gòu)體、類型及信號(hào)的一些特征,有些屬性對(duì)于綜合非常有用,其一般形式均為: 對(duì)象屬性。1) 數(shù)值類屬性 用于返回?cái)?shù)組、塊或一般數(shù)據(jù)的有關(guān)值一般數(shù)據(jù)的數(shù)值屬性:LEFT,RIGHT,LOW,HIGH數(shù)組的數(shù)值屬性:LENGH塊的數(shù)值屬性:BEHAVIOR,不含有元件C

21、OMPONENT例化信息時(shí)返回TRUE;STRUCTURE含有元件實(shí)例化或有被動(dòng)進(jìn)程時(shí),則返回TURE。(注:被動(dòng)進(jìn)程定義是在進(jìn)程定義中沒(méi)有代入語(yǔ)句)2) 函數(shù)類屬性 以函數(shù)的形式,使設(shè)計(jì)人員得到有關(guān)數(shù)據(jù)類型、數(shù)組、信號(hào)的某些信息。數(shù)據(jù)類型屬性函數(shù):POS(X)得到輸入X值的位置序號(hào)、VAL(x)得到輸入位置序號(hào)的X值,SUSS(x),PRED(x),LEFTOF(x),RIGHTOF(x)數(shù)組屬性函數(shù):LEFT(n),RIGHT(n),HIGH(n),LOW(n)3) 數(shù)據(jù)類型屬性,這類屬性類函數(shù)僅一個(gè),即BASE4) 數(shù)據(jù)區(qū)間類的屬性,RANGE(N)和REVERS_RANGE(N)用戶自

22、定義的屬性,格式   ATTRIBUTE 屬性名 OF 目標(biāo)名:目標(biāo)集合 IS表達(dá)式以函數(shù)的形式,使設(shè)計(jì)人員得到有關(guān)數(shù)據(jù)類型、第三章、 順序語(yǔ)句與并行語(yǔ)句順序語(yǔ)句和并行語(yǔ)句是程序設(shè)計(jì)中兩大基本描述語(yǔ)句系列。.1順序語(yǔ)句順序語(yǔ)句的特點(diǎn)從仿真的角度來(lái)看是每一條語(yǔ)句的執(zhí)行按書(shū)寫(xiě)順序進(jìn)行,順序語(yǔ)句只能出現(xiàn)在塊語(yǔ)句、進(jìn)程和子程序內(nèi)部,順序控制方式有兩種,一是條件控制(IF和CASE語(yǔ)句),一是迭代控制(LOOP語(yǔ)句和ASSERT語(yǔ)句),有10種基本類型) 賦值語(yǔ)句賦值語(yǔ)句分為變量賦值和信號(hào)賦值,它們的賦值是有區(qū)別的。首先在格式上,變量賦值格式為“變量名:=表達(dá)式”,而信號(hào)的賦值格式為

23、“信號(hào)名<=表達(dá)式”;其次體現(xiàn)在所用的地方,變量說(shuō)明和使用都只能在順序語(yǔ)句中(進(jìn)程、函數(shù)、過(guò)程和塊模塊),而信號(hào)的說(shuō)明只能在同步語(yǔ)句中,但可以在順序語(yǔ)句和同步語(yǔ)句中使用;再次體現(xiàn)在賦值過(guò)程,變量的賦值是立即的,而信號(hào)的賦值的執(zhí)行和信號(hào)值的更新至少要延時(shí)DELTA延時(shí),只有延時(shí)后信號(hào)才能得到新值,否則將保持原值,在進(jìn)程中,信號(hào)賦值在結(jié)束時(shí)起作用。) WAIT語(yǔ)句WAIT語(yǔ)句屬于敏感信號(hào)激勵(lì)信號(hào),一個(gè)進(jìn)程語(yǔ)句含有敏感信號(hào)時(shí),進(jìn)程中不能出現(xiàn)WAIT等待語(yǔ)句;當(dāng)進(jìn)程語(yǔ)句不含有敏感信號(hào)時(shí),進(jìn)程語(yǔ)句必須含有其他形態(tài)的敏感信號(hào)激勵(lì)。WAIT語(yǔ)句有五種形式:WAIT   無(wú)限等待;W

24、AIT ON (敏感信號(hào)1,敏感信號(hào)2,敏感信號(hào)N) 敏感信號(hào)變化,表中的信號(hào)產(chǎn)生變化時(shí)才往下運(yùn)行;WAIT UNTIL 布爾表達(dá)式 為T(mén)RUE時(shí),進(jìn)程啟動(dòng),為FARLSE是等待WAIT FOR 時(shí)間表達(dá)式 到時(shí)進(jìn)程才會(huì)啟動(dòng)WAIT UNTIL 布爾表達(dá)式 ON (敏感信號(hào)1,敏感信號(hào)2,敏感信號(hào)N) FOR 時(shí)間表達(dá)式 多條件等待語(yǔ)句,注意在多條件等待語(yǔ)句的表達(dá)式中,至少應(yīng)有一個(gè)信號(hào)量,因?yàn)樘幱诘却M(jìn)程中的變量是不可改變的。) IF語(yǔ)句這種語(yǔ)句在其他編程語(yǔ)言也有,不用多講,其完整的書(shū)寫(xiě)格式IF標(biāo)號(hào): IF <條件> THEN<順序處理語(yǔ)句>ELSIF <條件&g

25、t; THEN<順序處理語(yǔ)句>.ELSE<順序處理語(yǔ)句>END IF IF標(biāo)號(hào)) CASE語(yǔ)句CASE語(yǔ)句是另一種形式的流程控制語(yǔ)句,可讀性比IF的強(qiáng),格式如下CASE 條件表達(dá)式 ISWHEN 條件取值 =>順序處理語(yǔ)句;WHEN 條件取值 =>順序處理語(yǔ)句;WHEN 條件取值 =>順序處理語(yǔ)句;WHEN   OTHERS =>順序處理語(yǔ)句;END CASE;上面的條件取值有三種格式可選條件表達(dá)式取值條件表達(dá)式取值|條件表達(dá)式取值|條件表達(dá)式取值|條件表達(dá)式取值 TO 條件表達(dá)式取值) LOOP循環(huán)語(yǔ)句LOOP語(yǔ)句與其他高級(jí)

26、編程語(yǔ)言中的循環(huán)語(yǔ)句一樣,可以使程序進(jìn)行有規(guī)律的循環(huán),循環(huán)的次數(shù)受迭代算法的控制,一個(gè)LOOP語(yǔ)句可包含要重復(fù)執(zhí)行的一組順序語(yǔ)句,它可以執(zhí)行多次或是零次。LOOP格式LOOP 標(biāo)號(hào): 重復(fù)模式LOOP順序處理語(yǔ)句;END LOOP LOOP標(biāo)號(hào);重復(fù)模式有兩種,F(xiàn)OR模式和WHILE模式。FOR模式的LOOP語(yǔ)句格式:LOOP標(biāo)號(hào): FOR 循環(huán)變量 IN 離散范圍 LOOP順序處理語(yǔ)句;END LOOP LOOP標(biāo)號(hào);WHILE模式的LOOP語(yǔ)句格式:LOOP標(biāo)號(hào): WHILE條件LOOP順序處理語(yǔ)句;END LOOPLOOP標(biāo)號(hào);) NEXT和EXIT語(yǔ)句這兩種語(yǔ)句都是用于跳出LOOP循環(huán)

27、的,NEXT語(yǔ)句是用來(lái)跳出本次循環(huán)的,而EXIT語(yǔ)句是用于跳出全部循環(huán)的。格式NEXT或EXIT LOOP標(biāo)號(hào) WHEN條件) NULL空操作語(yǔ)句,書(shū)寫(xiě)格式為“NULL;”,唯一的作用是使程序流程運(yùn)行到下一個(gè)語(yǔ)句,常用于CASE語(yǔ)句當(dāng)中) RETURN語(yǔ)句用在一段子程序結(jié)束后,用來(lái)返回到主程序的控制語(yǔ)句,一般情況之下,有兩種書(shū)寫(xiě)格式,分別是RETURN;   只能用于進(jìn)程返回RETURN 表達(dá)式;只能用于函數(shù)返回在實(shí)際的應(yīng)用中,一般的VHDL綜合工具要求函數(shù)中只能包含一個(gè)RETURN,并規(guī)定這條RETURN語(yǔ)句只能寫(xiě)在函數(shù)末尾,但一些VHDL綜合工具允許函數(shù)中出現(xiàn)多個(gè)RET

28、URN語(yǔ)句。) ASSERT斷言語(yǔ)句主要用于程序仿真、調(diào)試中的人機(jī)對(duì)話,它可以給出一個(gè)文字串作為警告和錯(cuò)誤信息,基本書(shū)寫(xiě)格式如下:ASSERT條件REPORT輸出信號(hào)   字符串SEVERITY錯(cuò)誤級(jí)別;有四種NOTE、WARNING、ERROR和FAILURE如果程序在仿真或調(diào)試過(guò)程中出現(xiàn)問(wèn)題,斷方語(yǔ)句就會(huì)給出一個(gè)文字串作為提示信息,當(dāng)程序執(zhí)行到斷言語(yǔ)句時(shí),就會(huì)對(duì)ASSERT條件表達(dá)式進(jìn)行判斷,如果返回值為T(mén)RUE則斷言語(yǔ)句不做任何操作,程序向下執(zhí)行,如果返回值為FALSE,則輸出指定的提示信息和出錯(cuò)級(jí)別。斷言語(yǔ)句可以分為順序斷言語(yǔ)句和并行斷言語(yǔ)句。) REPORT語(yǔ)句報(bào)

29、告語(yǔ)句是93版VHDL標(biāo)準(zhǔn)提供的一種新的順序語(yǔ)句,該語(yǔ)句沒(méi)有增加任何功能,只是提供了某些形式的順序斷言語(yǔ)句的短格式,也算是ASSERT語(yǔ)句的一個(gè)精簡(jiǎn),格式如下:REPORT 輸出信息SEVERITY出錯(cuò)級(jí)別.2并行語(yǔ)句并行語(yǔ)句在結(jié)構(gòu)體中的執(zhí)行都是同時(shí)進(jìn)行的,即它們的執(zhí)行順序與語(yǔ)句的書(shū)寫(xiě)無(wú)關(guān),這種并行性是由硬件本身并行性決定的,即一旦電路接通電路,它的各部分就會(huì)按照事先設(shè)計(jì)好的方案同時(shí)工作,VHDL有六種并行語(yǔ)句) 并行信號(hào)賦值語(yǔ)句信號(hào)賦值語(yǔ)句相當(dāng)于一個(gè)進(jìn)程(用于單個(gè)信號(hào)賦值)的簡(jiǎn)化形式,用在結(jié)構(gòu)體中并行執(zhí)行,信號(hào)賦值語(yǔ)句提供了三種賦值方式,用來(lái)代替進(jìn)程可令程序代碼大大簡(jiǎn)化。注:這里要注意,信號(hào)

30、賦值語(yǔ)句在順序語(yǔ)句里面也有,順序語(yǔ)句里可以給信號(hào)賦值也可以給變量賦值,而順序語(yǔ)句里只能對(duì)變量說(shuō)明,不能對(duì)信號(hào)說(shuō)明;并行語(yǔ)句剛好相反。思考:什么變量不能在并行語(yǔ)句里面說(shuō)明呢?為什么信號(hào)不能在順序語(yǔ)句里面說(shuō)明呢?因?yàn)樾盘?hào)是全局的,變量是局部的,用來(lái)保存中間變量的賦值方式一并發(fā)信號(hào)賦值語(yǔ)句,格式“信號(hào)名<=表達(dá)式”,等效于進(jìn)程語(yǔ)句,表達(dá)式中的信號(hào)就是進(jìn)程語(yǔ)句中的敏感激勵(lì)信號(hào)(注:進(jìn)程必須含有敏感激勵(lì)信號(hào),請(qǐng)看下面章節(jié)介紹)賦值方式二條件信號(hào)賦值語(yǔ)句,格式如下目標(biāo)信號(hào)<=表達(dá)式1   WHEN 條件1 ELSE表達(dá)式2   WHEN 條件2 ELSE

31、表達(dá)式3   WHEN 條件3 ELSE表達(dá)式4  注:條件賦值語(yǔ)句與IF語(yǔ)句不同之處1、 以上條件賦值語(yǔ)句不能進(jìn)行嵌套,而IF是可以的2、 由于條件信號(hào)賦值語(yǔ)句是并行語(yǔ)句,必須用在結(jié)構(gòu)體中的進(jìn)程之外(進(jìn)程是用順序語(yǔ)句來(lái)編寫(xiě)的),而IF是順序語(yǔ)句3、 條件信號(hào)賦值語(yǔ)句ELSE是必須有的,而IF可沒(méi)有4、 條件信號(hào)賦值語(yǔ)句與實(shí)際的硬件電路十分接近,因此使用該語(yǔ)句要求設(shè)計(jì)人員具有硬件電路知識(shí),而IF一般用來(lái)進(jìn)行硬件電路的高級(jí)描述,它不要求太多的硬件電路知識(shí)。5、 一般情況下很少用條件賦值語(yǔ)句,只有當(dāng)用進(jìn)程語(yǔ)句、IF語(yǔ)句和CASE語(yǔ)句難以對(duì)路進(jìn)行描述時(shí)才用賦值

32、方式三選擇信號(hào)賦值語(yǔ)句,格式如下WITH 選擇條件表達(dá)式 SELECT目標(biāo)信號(hào)<=信號(hào)表達(dá)式1   WITH 選擇條件1信號(hào)表達(dá)式2   WITH 選擇條件2信號(hào)表達(dá)式3 WITH 選擇條件3信號(hào)表達(dá)式4   WITH OTHERS注:選擇信號(hào)賦值語(yǔ)句是一種并行語(yǔ)句,不能在結(jié)構(gòu)體中的進(jìn)程內(nèi)部使用) 塊語(yǔ)句在VHDL語(yǔ)言設(shè)計(jì)中,塊語(yǔ)句常常用來(lái)對(duì)比較復(fù)雜的結(jié)構(gòu)體作結(jié)構(gòu)化描述,格式如下塊標(biāo)號(hào): BLOCK 衛(wèi)式表達(dá)式類屬子句;端口子句;塊說(shuō)明部分;BEGIN<塊語(yǔ)句說(shuō)明部分;>END BLOCK塊標(biāo)號(hào);衛(wèi)式表達(dá)式:是一個(gè)布

33、爾條件表達(dá)式,只有當(dāng)這個(gè)表達(dá)式為T(mén)URE時(shí),BLOCK語(yǔ)句才被執(zhí)行;類屬子句:塊的屬性說(shuō)明塊說(shuō)明部分:用于定義USE、子程序、數(shù)據(jù)類型、子類型、常量、信號(hào)和元件塊語(yǔ)句說(shuō)明部分:用于描述塊的具體功能,可以包含結(jié)構(gòu)塊中的任何并行語(yǔ)句結(jié)構(gòu)。注:塊語(yǔ)句的作用就是將一個(gè)大的結(jié)構(gòu)劃成一塊一塊小的結(jié)構(gòu)。) 進(jìn)程語(yǔ)句進(jìn)程語(yǔ)句是一種應(yīng)用廣泛的并行語(yǔ)句,一個(gè)結(jié)構(gòu)體中可以包括一個(gè)或者多個(gè)進(jìn)程語(yǔ)句,結(jié)構(gòu)體中的進(jìn)程語(yǔ)句是并發(fā)關(guān)系,即各個(gè)進(jìn)程是同時(shí)處理的、并行執(zhí)行的;但在第一個(gè)進(jìn)程語(yǔ)句結(jié)構(gòu)中,組成進(jìn)程的各個(gè)語(yǔ)句都是順序執(zhí)行,在進(jìn)程語(yǔ)句中是不能用并行語(yǔ)句的。格式進(jìn)程標(biāo)號(hào):PROCESS 敏感信號(hào)表 IS進(jìn)程語(yǔ)句說(shuō)明部分;B

34、EGIN<順序語(yǔ)句部分>END PROCESS進(jìn)程標(biāo)號(hào);注:1、 敏感信號(hào)表列出了進(jìn)程語(yǔ)句敏感的所有信號(hào),每當(dāng)其中的一個(gè)信號(hào)發(fā)生變化時(shí),就會(huì)引起其他語(yǔ)句的執(zhí)行,如果敏感信號(hào)表不寫(xiě),那么在PROCESS里面必須有WAIT語(yǔ)句,由WAIT語(yǔ)句來(lái)產(chǎn)生對(duì)信號(hào)的敏感;而當(dāng)敏感信號(hào)表存在時(shí),就不能在PROCESS里再有WAIT語(yǔ)句;2、 IS可有可無(wú),是由93版規(guī)定的3、 進(jìn)程語(yǔ)句說(shuō)明部分是進(jìn)程語(yǔ)句的一個(gè)說(shuō)明區(qū),它主要用來(lái)定義進(jìn)程語(yǔ)句所需要的局部數(shù)據(jù)環(huán)境,包括數(shù)據(jù)類型說(shuō)明、子程序說(shuō)明和變量說(shuō)明。4、 進(jìn)程語(yǔ)句有兩種存在狀態(tài),一是等待,當(dāng)敏感信號(hào)沒(méi)有發(fā)生變化時(shí);一是執(zhí)行,當(dāng)敏感信號(hào)變化時(shí)。) 子

35、程序調(diào)用語(yǔ)句子程序分為函數(shù)和過(guò)程,它們的定義屬于說(shuō)明語(yǔ)句,均可在順序語(yǔ)句和并行語(yǔ)句里面使用,它們的調(diào)用方法不一樣。函數(shù)只有一個(gè)返回值,用于賦值,可以說(shuō)在信號(hào)賦值的時(shí)候就是對(duì)函數(shù)的調(diào)用;過(guò)程有很多個(gè)返回值,用于進(jìn)行處理,準(zhǔn)確的來(lái)說(shuō)子程序調(diào)用語(yǔ)句就是過(guò)程調(diào)用語(yǔ)句。) 參數(shù)傳遞語(yǔ)句參數(shù)傳遞語(yǔ)句即在實(shí)體中定義的GENERIC,可以描述不由材料和不同工藝構(gòu)成的相同元件或模塊的性能參數(shù)(如延時(shí)),在定義了GENERIC的實(shí)體叫參數(shù)化實(shí)體,由參數(shù)化實(shí)體形成的元件在例化時(shí)具有很大的適應(yīng)性,在不同的環(huán)境下,只須用GENERIC MAP來(lái)修改參數(shù)就可以了,使用時(shí),在對(duì)元件例化時(shí)加在里面就可,比如已經(jīng)定義了一個(gè)AN

36、D2的實(shí)體,要在EXAMPLE里面使用AND2,要先對(duì)AND2進(jìn)行元件聲明,再將AND2例化,如下:u0: AND2 GENERIC MAP(參數(shù)值1,參數(shù)值2)           PORT MAP(參數(shù)表) 元件例化語(yǔ)句一個(gè)實(shí)體就相當(dāng)于元件,元件名就相當(dāng)于實(shí)體名,元件要實(shí)現(xiàn)的功能在實(shí)體里面就已經(jīng)描述好,比如,同一個(gè)文件夾下已經(jīng)有一個(gè)名為A.VHD的文件,如果要在另一個(gè)文件B.VHD里面用到A.VHD里面定義的功能,那么可以在B.VHD文件里面通過(guò)元件聲明和元件例化來(lái)調(diào)用A這個(gè)元件,總的來(lái)說(shuō)調(diào)

37、用元件過(guò)程就是“建立元件-元件聲明-元件例化”,元件調(diào)用時(shí)不用USE語(yǔ)句的,這和調(diào)用程序或類據(jù)不同。注:元件聲明語(yǔ)句屬說(shuō)明語(yǔ)句,不是同步語(yǔ)句,以下對(duì)元聲的說(shuō)明是為了更好地了解元件的調(diào)用,元件的實(shí)例化之前必須要有元件聲明元件聲明語(yǔ)句格式COMPONENT <元件名>         元件名就是文件名,即是實(shí)體名GENERIC <參數(shù)說(shuō)明>;       這就是所產(chǎn)的元件參數(shù)PORT<端口說(shuō)明>;END COMPONENT;元件例化格式:元件符:元件名 GENERIC MAP (參數(shù)表)               PORT MAP(端口表) 生成語(yǔ)句生成語(yǔ)句通常又稱為GENERATE語(yǔ)句,它是一種可以建立重復(fù)結(jié)構(gòu)或者是在多個(gè)模塊的表示形式之間進(jìn)行選擇的語(yǔ)句,格式如下:生成語(yǔ)句標(biāo)號(hào): < 模式選擇>GENERATE< 并行處理語(yǔ)句>;END GENE

溫馨提示

  • 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)論