版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、VHDL語言的基本知識(shí)點(diǎn)羅列1VHDL語言的標(biāo)識(shí)符VHDL中的標(biāo)識(shí)符可以是常數(shù)、變量、信號(hào)、端口、子程序或參數(shù)的名字。使用標(biāo)識(shí)符要遵守如下法則:a)標(biāo)識(shí)符由字母(A-Z;az)、數(shù)字和下劃線字符組成。任何標(biāo)識(shí)符必須以英文字母開頭。末字符不能為下劃線。b)不允許出現(xiàn)兩個(gè)連續(xù)下劃線。標(biāo)識(shí)符中不區(qū)分大小寫字母。VHDL定義的保留子或稱關(guān)鍵字,不能用作標(biāo)識(shí)符。九c)VHDL中的注釋由兩個(gè)連續(xù)的短線(-)開始,直到行尾。以下是非法標(biāo)識(shí)符:-Decoder一起始不能為非英文字母3DOP一起始不能為數(shù)字Large#number"林能成為標(biāo)識(shí)符的構(gòu)成符號(hào)Data_bus不能有雙下劃線Copper_最
2、后字符不能為下劃線On一關(guān)鍵字不能用作標(biāo)識(shí)符。注:在AHDL語言中標(biāo)識(shí)符要區(qū)分大小寫,但在VHDL語言中不區(qū)分大小寫。所以寫程序時(shí),一定要養(yǎng)成良好的書寫習(xí)慣,應(yīng)用關(guān)鍵字時(shí)用大寫,自己定義的標(biāo)識(shí)符用小寫。標(biāo)識(shí)符表示的幾種數(shù)據(jù)對(duì)象的詳細(xì)說明如下:1) 常數(shù)(Constant)常數(shù)是一個(gè)固定的值,主要是為了使設(shè)計(jì)實(shí)體中的常數(shù)更容易閱讀和修改。常數(shù)一被賦值就不能在改變。一般格式:CONSTANT常數(shù)名:數(shù)據(jù)類型:=表達(dá)式;例:CONSTANTVcc:REAL:=5.0;設(shè)計(jì)實(shí)體的電源電壓指定常數(shù)所賦得值應(yīng)與定義的數(shù)據(jù)類型一致。常量的使用范圍取決于它被定義的位置。程序包中定義的常量具有最大的全局化特性,
3、可以用在調(diào)用此程序包的所有設(shè)計(jì)實(shí)體中;設(shè)計(jì)實(shí)體中某一結(jié)構(gòu)體中定義的常量只能用于此結(jié)構(gòu)體;結(jié)構(gòu)體中某一單元定義的常量,如一個(gè)進(jìn)程中,這個(gè)常量只能用在這一進(jìn)程中。2) 變量(Variable)變量是一個(gè)局部變量,它只能在進(jìn)程語句、函數(shù)語句和進(jìn)程語句結(jié)構(gòu)中使用。用作局部數(shù)據(jù)存儲(chǔ)。在仿真過程中。它不像信號(hào)那樣,到了規(guī)定的仿真時(shí)間才進(jìn)行賦值,變量的賦值是立即生效的。變量常用在實(shí)現(xiàn)某種算法的賦值語句中。一般格式:VARIABLE變量名數(shù)據(jù)類型約束條件:=表達(dá)式;例:VARIABLEx,y:INTEGER;定義x,y為整數(shù)變量VARIABLEcount:INTEGERRANGE0TO255:=10;定義計(jì)數(shù)
4、變量范圍變量的適用范圍僅限于定義了變量的進(jìn)程或子程序中。若將變量用于進(jìn)程之外,必須該值賦給一個(gè)相同的類型的信號(hào),即進(jìn)程之間傳遞數(shù)據(jù)靠的信號(hào)。變量賦值語句的語法格式如下:目標(biāo)變量:=表達(dá)式;變量賦值符號(hào)是:="。賦值語句右方的表達(dá)式必須是一個(gè)與目標(biāo)變量有相同數(shù)據(jù)類型的數(shù)值。變量不能用于硬件連線和存儲(chǔ)元件。3) 信號(hào)(Signal)信號(hào)是描述硬件系統(tǒng)的基本數(shù)據(jù)對(duì)象,它類似于連接線,它除了沒有數(shù)據(jù)流動(dòng)方向說明以外,其它性質(zhì)與實(shí)體的端口(Port)概念一致。變量的值可以傳遞給信號(hào),而信號(hào)的值不能傳遞給變量。信號(hào)通常在構(gòu)造體、包集合和實(shí)體中說明。信號(hào)說明格式為:SIGNAL信號(hào)名:數(shù)據(jù)類型;信
5、號(hào)初始值的設(shè)置不是必需的,而且初始值僅在VHDL的行為仿真中有效。1 .變量變量只能在進(jìn)程、函數(shù)和過程中使用,一旦賦值立即生效。例:VARIABLEx,y:INTEGER;VARIABLEcount:INTEGERRANGE0TO255:=10;2 .信號(hào)信號(hào)除了沒有方向的概念以外幾乎和端口概念一致。例:SIGNALsys_clk:BIT:='0';SIGNALground:BIT:='0'在程序中,信號(hào)值輸入信號(hào)時(shí)采用代入符"<=",而不是賦值符:=",同時(shí)信號(hào)可以附加延時(shí)。信號(hào)傳送語句:s1<=s2AFTER10ns
6、信號(hào)是一個(gè)全局量,可以用來進(jìn)行進(jìn)程之間的通信3 .信號(hào)與變量的區(qū)別:信號(hào)賦值可以有延遲時(shí)間,變量賦值無時(shí)間延遲;信號(hào)除當(dāng)前值外還有許多相關(guān)值,如歷史信息等,變量只有當(dāng)前值;進(jìn)程對(duì)信號(hào)敏感,對(duì)變量不敏感;信號(hào)可以是多個(gè)進(jìn)程的全局信號(hào),但變量只在定義它之后的順序域可見;信號(hào)可以看作硬件的一根連線,但變量無此對(duì)應(yīng)關(guān)系。2VHDL語言的數(shù)據(jù)類型VHDL語言提供了許多標(biāo)準(zhǔn)的數(shù)據(jù)類型,用戶也可自定義數(shù)據(jù)類型,這樣使VHDL語言的描述能力和自由度進(jìn)一步提高。但VHDL語言的數(shù)據(jù)類型的定義相當(dāng)嚴(yán)格,不同類型之間的數(shù)據(jù)不能直接代入。而且相同數(shù)據(jù)類型,但位長不同的也不能直接代入,否則EDA工具在編譯綜合時(shí)會(huì)報(bào)告類
7、型錯(cuò)。因此,為了熟練地使用VHDL語言編寫程序,必須很好的理解各種數(shù)據(jù)意義。2.1. VHDL標(biāo)準(zhǔn)的數(shù)據(jù)類型1) 整數(shù)(Integer)整數(shù)類型的數(shù)代表正整數(shù)、負(fù)整數(shù)和零,表示的范圍-(231-1)(231-1),它與算術(shù)整數(shù)相似,可進(jìn)行“+",-'",":"/等算術(shù)運(yùn)算,不能用于邏輯運(yùn)算。2) 實(shí)數(shù)(Real)實(shí)數(shù)類型也類似于數(shù)學(xué)上的實(shí)數(shù),或稱浮點(diǎn)數(shù),表示范圍為-1.0E381.0E38.3) 位(Bit)在數(shù)字系統(tǒng)中信號(hào)通常采用一個(gè)位來表示,取值值能是1獲0。4) 位矢量(Bit_Vector)位矢量是用雙引號(hào)括起來的一組位數(shù)據(jù),使用位矢量必
8、須注明位寬。例如:SIGNALa:BIT_VEVCTOR(7toO)信號(hào)a被定義為一個(gè)具有8位位寬的矢量,最左位為a(7),最右位為a(0)。5) 布爾量(Boolean)一個(gè)布爾量具有兩個(gè)狀態(tài):真”或假”。布爾量不屬于數(shù)值,因此不能用于運(yùn)算,它只能通過關(guān)系運(yùn)算符獲得。一般這一類型的數(shù)據(jù)初始值總為FALSE.6) 字符(Character)字符也是一種數(shù)據(jù)類型,字符類型通常用單引號(hào)引起來,如A'字符類型區(qū)分大小寫,如杯同于b'7) 字符串(String)字符串是由雙引號(hào)括起來的一個(gè)字符序列,也稱字符矢量或字符串?dāng)?shù)組。常用于程序的提示和說明,如“STRING等。8) 時(shí)間(Tim
9、e)時(shí)間是一個(gè)物理數(shù)據(jù)。完整的時(shí)間類型包括整數(shù)和單位兩部分;整數(shù)與單位之間至少留一個(gè)空格,如55ms,2ns。在包集合STANDARD中給除了時(shí)間的預(yù)定義,其單位為fs,ps,ns,us,ms,sec,min,hr。在系統(tǒng)仿真時(shí),時(shí)間數(shù)據(jù)很有用,可用它表示信號(hào)延時(shí),從而使模型系統(tǒng)能更逼近實(shí)際系統(tǒng)的運(yùn)行環(huán)境。9) 錯(cuò)誤等級(jí)(SeverityLevel)在VHDL仿真器中,錯(cuò)誤等級(jí)用來指示設(shè)計(jì)系統(tǒng)的工作狀態(tài),它有四種:NOTE(注意)、WARNING(警告)、ERROR(出錯(cuò))、FAILURE(失敗)。在仿真過程中,可輸出這四種狀態(tài)以提示系統(tǒng)當(dāng)前的工作狀態(tài)。10) 自然數(shù)(Natural)和正整數(shù)
10、(Positive)自然數(shù)是整數(shù)的一個(gè)子類型,非負(fù)的整數(shù),即為零和正整數(shù)。而Positive只能為正整數(shù)。2.2. IEEE預(yù)定義標(biāo)準(zhǔn)邏輯位與矢量在IEEE庫的程序包STD_LOGIC1164中,定義了兩個(gè)重要的數(shù)據(jù)類型,即標(biāo)準(zhǔn)邏輯位STD_LOGIC和標(biāo)準(zhǔn)邏輯矢量STD_LOGIC_VECTOR,使得STD_LOGIC數(shù)據(jù)可以具有如下的9種不同的值:“U”初始值“0”0-“Z”高阻“L”弱信號(hào)0“X”何“1”a“W”用信號(hào)不定“H”弱信號(hào)1“”不可能情況注意在使用該類型數(shù)據(jù)時(shí),在程序中必須寫出庫說明語句和使用包集合的說明語句。3VHDL語言的運(yùn)算操作符在VHDL語言中共用4類操作符,可以分別
11、進(jìn)行邏輯運(yùn)算(Logic)、關(guān)系運(yùn)算(Relational)、算術(shù)運(yùn)算(Arithmetic)和并置運(yùn)算(Concatenation)。被操作符所操作的對(duì)象是操作數(shù),且操作數(shù)的類型應(yīng)該和操作符所要求的類型相一致。需要注意的是,各家EDA綜合軟件對(duì)運(yùn)算操作符支持程序各不相同,使用時(shí)應(yīng)參考綜合工具說明。1) 邏輯運(yùn)算符運(yùn)算符在VHDL語言中邏輯運(yùn)算符有6種,他們分別為:NOT(非)OR(或)AND(與)NOR(或非)NAND(與非)XOR(異或)2) 關(guān)系運(yùn)算符關(guān)系運(yùn)算符它們分別是:=(等于)/二(不等于)> (小于)> =(小于等于)> (大于)> =(大于等于)3) 算
12、術(shù)運(yùn)算符+(加)/(除)SLL(邏輯左移)ROR(邏輯循環(huán)右移)-(減)MOD(求模)SRL(邏輯右移)ABS(取絕對(duì)值)*(乘)REM(取余)SLA(算術(shù)左移)4) 其他運(yùn)算符<=(信號(hào)賦值):=(信號(hào)賦值)-(負(fù))+(正)&(并置運(yùn)算符,用于位的連接)=>(并聯(lián)運(yùn)算符,在元件例化時(shí)可用于形參倒實(shí)參的映射)4VHDL語言的結(jié)構(gòu)VHDL語言主要組成構(gòu)件有設(shè)計(jì)實(shí)體(Entity)、結(jié)構(gòu)體(Architecture)、子程序(FunctionProcedure)、集合包(Package)和庫(Library),前四種稱為可編譯的設(shè)計(jì)單元。一個(gè)VHDL設(shè)計(jì)就是有這四種構(gòu)件的組成,
13、編譯之后將它們放在制定的庫中共享。其中,實(shí)體用于描述設(shè)計(jì)的接口界面信號(hào),它規(guī)定端口數(shù)目,端口方向和端口類型。它與硬件電路設(shè)計(jì)中的符號(hào)相對(duì)應(yīng)。而結(jié)構(gòu)體指定設(shè)計(jì)的真實(shí)行為,性能和結(jié)構(gòu),與硬件電路設(shè)計(jì)中的原理圖相對(duì)應(yīng)。子程序是可被調(diào)用的執(zhí)行某一特定功能算法的集合。集合包則是為了使常用的數(shù)據(jù)類型、常數(shù)和子程序?qū)τ谄渌O(shè)計(jì)塊可用而集中充放的一批設(shè)計(jì)單元和約定。4.1 設(shè)計(jì)實(shí)體實(shí)體的定義語法為:ENTITY實(shí)體名IS端口說明;END實(shí)體名;端口說明書寫格式如下:PORT(端口名,端口名:方向數(shù)據(jù)類型名;端口名,端口名:方向數(shù)據(jù)類型名);例如,一個(gè)二選一路數(shù)據(jù)選擇器的設(shè)計(jì)實(shí)體可描述如下:ENTITYsele
14、ctionISPORT(a,b,sel:INBIT;C:OUTBIT);ENDselection;4.2 構(gòu)造體用于描述系統(tǒng)內(nèi)部的結(jié)構(gòu)和行為。構(gòu)造體部分定義了設(shè)計(jì)單元的具體功能(行為)。1.構(gòu)造體句法如下:ARCHITECTURE構(gòu)造體名OF實(shí)體名IS定義t句內(nèi)部信號(hào),常數(shù),數(shù)據(jù)類型,函數(shù)等的定義;BEGIN并行處理語句;END構(gòu)造體名;例如:ARCHITECTUREdataflowOFselectionISBEGINq<=(aANDset)OR(NOTselANDd1);ENDdataflow;4.2.1構(gòu)造體的子結(jié)構(gòu)描述在規(guī)模較大的電路設(shè)計(jì)中,全部電路都用唯一的一個(gè)模塊來描述是非常不
15、方便的。為此,電路設(shè)計(jì)者總希望將整個(gè)電路分成若干個(gè)相對(duì)比較大的模塊來進(jìn)行電路的描述。這樣,一個(gè)構(gòu)造體可以用幾個(gè)子結(jié)構(gòu),既相對(duì)比較獨(dú)立的幾個(gè)模塊來構(gòu)成。VHDL語言可以有以下三種形式的子結(jié)構(gòu)描述語句:1) 子程序:VHDL提供兩種子程序:函數(shù)(FUNCTION)和過程(PROCEDURE)函數(shù)函數(shù)的定義形式如下:FUNCTION<函數(shù)名稱><接口表>RETURN<數(shù)據(jù)類型>IS定義i句;BEGIN<函數(shù)語句部分>END函數(shù)名稱;.下面是一個(gè)比較器的例子:FUNCTIONmax(a,b:INTEGER)RETURNINTEGERISBEGINIF(a
16、>=b)THENRETURNa;ELSERETURNb;ENDIF;ENDmax;一個(gè)函數(shù)定義好后,可以在其它地方調(diào)用。過程過程的定義形式如下:PROCEDURE<過程名稱><接口表ISBEGIN<過程語句部分>END過程名稱;.下面是一個(gè)比較器的例子:FUNCTIONmax(a,b,c:INTEGER)ISBEGINIF(a>=b)THENc<=a;ELSEc<=b;ENDIF;ENDmax;2) BLOCK語句采用BLOCK語句描述局部電路的書寫格式如下:塊結(jié)構(gòu)名:BLOCKBEGINENDBLOCK塊結(jié)構(gòu)名;3) 進(jìn)程語句(PROCE
17、SS)采用PROCESS語句描述局部電路的書寫格式如下:進(jìn)程名:PROCESS:(信號(hào)1,信號(hào)2)BEGINENDPROCESS4.3包集合、庫及配置除實(shí)體和構(gòu)造體外,包集合、庫及配置是VHDL語言和另外3個(gè)可以各自獨(dú)立進(jìn)行編譯的源設(shè)計(jì)單元。1. 庫(LIBRARY)一個(gè)庫中可以包含包集合,公用的設(shè)計(jì)實(shí)體和公用的機(jī)構(gòu)體等。當(dāng)需要引用一個(gè)庫時(shí),首先需要對(duì)庫名進(jìn)行說明,其格式為:LIBRARY庫名這時(shí)就可以使用庫中已經(jīng)編譯好的設(shè)計(jì)。又t庫中集合包的訪問必須再經(jīng)由USE語句才能打開。其格式為:USE程序包名IEEE庫是IEEE制定的一個(gè)VHDL的最常用標(biāo)準(zhǔn)庫,其中包括標(biāo)準(zhǔn)邏輯程序包Sed_logic
18、_1164,標(biāo)準(zhǔn)數(shù)學(xué)程序包Math等。我們可以使用它的數(shù)據(jù)類型和函數(shù)。用法:LIBRARYIEEE。STD庫也是VHDL的標(biāo)準(zhǔn)庫。2. 包集合(Package)包集合(Package)說明像C語言中的include語句一樣,用來單純的羅列VHDL語言中所要用到的信號(hào)定義、常數(shù)定義、數(shù)據(jù)類型、元件語句、函數(shù)定義和過程定義等。使用包集合時(shí)用USE語句說明。如USEIEEE.STD_logic_1164.ALL;3. 配置(Configuration)配置語句描述層于層之間的連接關(guān)系以及實(shí)體與結(jié)構(gòu)之間的連接關(guān)系。設(shè)計(jì)者可以利用這種配置語句來選擇不同的構(gòu)造體,使其與要設(shè)計(jì)的實(shí)體相對(duì)應(yīng)。配置語句的格式:
19、CONFIGURATION配置名OF實(shí)體名IS語句說明;END配置名;5VHDL常用順序語句VHDL語句是并發(fā)語言,大部分語句是并發(fā)執(zhí)行的。但在進(jìn)程、過程、塊語句和子程序(包括函數(shù))中,還有許多順序執(zhí)行語句,按出現(xiàn)的次序執(zhí)行各條語句。下面以常用的兩種語句為例,其他的語句請(qǐng)參考其他書。1. IF語句IF語句是根據(jù)所制定的條件來確定執(zhí)行那些語句的,其格式由三種:第一種IF條件THEN順序語句ENDIF第二種IF語句二選擇控制,其書寫格式為:IF條件THEN順序處理語句;ELSE順序處理語句;ENDIF;第三種IF語句的多選擇控制又稱IF語句的嵌套,其書寫格式為:IF條件THEN順序處理語句;ELS
20、E順序處理語句;ELSEIF條件THEN順序處理語句;ELSE順序處理語句;ENDIF;2. CASE語句CASE語句常用來描寫總線行為、編碼器和譯碼器的結(jié)構(gòu)。與IF語句表可讀性好,非常簡潔。其書寫格式為:CASE表達(dá)式ISWHEN條件表達(dá)式=>順序處理語句;ENDCASE;條件句中的“=>”不是操作符,只相當(dāng)于“THEN作用。6VHDL中的一些重要信號(hào)6.1. 時(shí)鐘信號(hào)和復(fù)位信號(hào)1)時(shí)鐘信號(hào)的描述* 若進(jìn)程的敏感信號(hào)是時(shí)鐘信號(hào),這時(shí)時(shí)鐘信號(hào)出現(xiàn)在PROCESS后的括號(hào)中.例:process(clock_signal)beginif(clock_edge_condition)the
21、nsignal_out<=signal_in其它語句endif;endprocess;* 在進(jìn)程中用WAITON語句等待時(shí)鐘這樣的電路沒有敏感信號(hào),進(jìn)程通常停留在WAITON語句上,只有時(shí)鐘信號(hào)到來且滿足一定條件時(shí),其余語句才能執(zhí)行.例:processbeginwaiton(clock_signal)until(clock_edge_condition)signal_out<=signal_in;其它語句endprocess;* 敏感表中只能有一個(gè)時(shí)鐘信號(hào)* waiton語句只能放在進(jìn)程的最前面或者最后面* 時(shí)鐘的邊沿描述描述時(shí)鐘一定要指明是上升沿還是下降沿上升沿到來的條件:IFclk='1'ANDclk'LAST_VALUE='0'ANDclk'EVENT下降沿到來的條件:IFclk='0'ANDclk'LAST_VALUE='1'ANDclk'EVENT關(guān)于時(shí)鐘信號(hào)的總結(jié):IFclock_signal=current_valueANDclock_signal'LASTANDclock_siganl'EVENT可以簡單寫為:IFclock_signal=clock_siganl'EVENTANDcurrent_value6.2. 復(fù)位信號(hào)*
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年農(nóng)業(yè)國際公關(guān)服務(wù)合同
- 2026年醫(yī)院古醫(yī)療云計(jì)算模型館合作合同
- 2025年全國性網(wǎng)絡(luò)安全服務(wù)平臺(tái)建設(shè)項(xiàng)目可行性研究報(bào)告
- 2025年高校在線學(xué)習(xí)平臺(tái)搭建項(xiàng)目可行性研究報(bào)告
- 2025年新型替代蛋白質(zhì)研發(fā)項(xiàng)目可行性研究報(bào)告
- 2025年健身產(chǎn)業(yè)數(shù)字化轉(zhuǎn)型項(xiàng)目可行性研究報(bào)告
- 紋身定金合同范本
- 做監(jiān)理合同協(xié)議
- 福建省百校2026屆高三上學(xué)期12月聯(lián)合測評(píng)英語試卷(含答案詳解)
- 程序設(shè)計(jì)崗位面試要點(diǎn)及參考答案
- 醫(yī)學(xué)科研誠信專項(xiàng)培訓(xùn)
- 電力通信培訓(xùn)課件
- 第五版FMEA控制程序文件編制
- 藥物致癌性試驗(yàn)必要性指導(dǎo)原則
- 軟骨肉瘤護(hù)理查房
- 高級(jí)生物化學(xué)知識(shí)要點(diǎn)詳解
- 肌電圖在周圍神經(jīng)病中的應(yīng)用
- 2025春季學(xué)期國開電大專科《理工英語1》一平臺(tái)機(jī)考真題及答案(第五套)
- GB/T 45683-2025產(chǎn)品幾何技術(shù)規(guī)范(GPS)幾何公差一般幾何規(guī)范和一般尺寸規(guī)范
- CJ/T 107-2013城市公共汽、電車候車亭
- 可靠性測試標(biāo)準(zhǔn)試題及答案
評(píng)論
0/150
提交評(píng)論