版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
VHDL語言要素標(biāo)識符(Identifiers)數(shù)據(jù)對象數(shù)據(jù)類型VHDL屬性運(yùn)算符第三講要點回顧有效標(biāo)識符變量信號的區(qū)別三種數(shù)據(jù)類型三類屬性四種操作符標(biāo)識符標(biāo)識符(Identifiers)由英文字母“a”到“z”、“A”到“Z”、數(shù)字“0”到“9”以及下劃線“_”組成使用時注意:1、VHDL不區(qū)分大小寫2、標(biāo)識符一定要以字母開頭3、下劃線不能放在結(jié)尾4、下劃線不能連用5、保留字(關(guān)鍵字)不能做標(biāo)識符標(biāo)識符有效的標(biāo)識符A_h_1show_new_stateCOUNTER-Adecode3_8counter非法的標(biāo)識符A%h_1show-new-stateCOUNTER_T__13_8decoderISDOWNTO數(shù)據(jù)對象常量(CONSTANT)變量(VARIABLE)信號(SIGNAL)常量常量是一個在仿真/綜合過程中固定不變的值,可通過標(biāo)識符來引用。與C語言中的常量的意義完全相同。使用常量的主要目的是增加設(shè)計文件的可讀性和可維護(hù)性。常量是全局量,在結(jié)構(gòu)體、程序包說明、實體說明、過程說明、函數(shù)調(diào)用說明和進(jìn)程說明中使用變量variablecount:std_logic(7downto0);variablecou:std_logic_vector(15downto0):="0000000000001011";目標(biāo)變量名:=表達(dá)式a:=b+c;a:=(NOTb)AND(NOTC);信號信號是全局量,在實體說明、結(jié)構(gòu)體描述和程序包說明中使用。SIGNAL用于聲明內(nèi)部信號,信號除了沒有方向的概念以外幾乎和端口概念一致。
作用:在元件之間起互聯(lián),代表電路內(nèi)部各元件之間的連接線,可以賦值給外部信號。信號信號的描述格式:SIGNAL信號名:數(shù)據(jù)類型[:=初始值]例:SIGNALsys_clk:BIT:=’0’;SIGNALground:BIT:=’0’
signalaa:std_logic_vector(7downto0);signalaa:std_logic_vector(3downto0):=“1010”;信號信號賦值語句語法格式目標(biāo)信號名<=表達(dá)式;q<=count;irq<='0';aa<=dx1;bb<=dx2;s1<=s2AFTER10ns
indata<=bb(7downto0)&aa(7downto0);賦初值注意建議在結(jié)構(gòu)體中用賦值語句完成對信號賦初值的任務(wù),因為綜合器往往回忽略信號聲明時所賦初值。信號與變量區(qū)別信號賦值可以有延遲時間,變量賦值無時間延遲信號除當(dāng)前值外還有許多相關(guān)值,如歷史信息等,變量只有當(dāng)前值進(jìn)程對信號敏感,對變量不敏感信號可以是多個進(jìn)程的全局信號,但變量只在定義它之后的順序域可見信號可以看作硬件的一根連線,但變量無此對應(yīng)關(guān)系賦值的形式不同;聲明的位置不同數(shù)據(jù)類型標(biāo)準(zhǔn)數(shù)據(jù)類型用戶自定義的數(shù)據(jù)類型IEEE預(yù)定義標(biāo)準(zhǔn)邏輯與矢量標(biāo)準(zhǔn)數(shù)據(jù)類型1、整數(shù)(INTEGER)范圍:-2147483547---21474836462、實數(shù)(REAL)范圍:-1.0E38---1.0E38(綜合器不支持)書寫時一定要有小數(shù)。3、位(BIT)在數(shù)字系統(tǒng)中,信號經(jīng)常用位的值表示,位的值用帶單引號的‘1’和‘0’來表示標(biāo)準(zhǔn)數(shù)據(jù)類型4、位矢量(BIT_VECTOR)
位矢量是用雙引號括起來的一組位數(shù)據(jù)“010101”5、布爾量(BOOLEAN)只有“真”和“假”兩個狀態(tài),可以進(jìn)行關(guān)系運(yùn)算6、字符(CHARACTER)
字符量通常用單引號括起來,對大小寫敏感明確說明1是字符時:CHARACTER‘(‘1’)
標(biāo)準(zhǔn)數(shù)據(jù)類型7、字符串(STRING)
字符串是雙引號括起來的由字母、數(shù)字或@、%、$組成的一串字符。區(qū)分大小寫“l(fā)aksdklakld”“1010101010”8、時間(TIME)時間的單位:fs,ps,ns,ms,sec,min,hr例:10ns整數(shù)數(shù)值和單位之間應(yīng)有空格標(biāo)準(zhǔn)數(shù)據(jù)類型9、錯誤等級(SEVERITYLEVEL)在VHDL仿真器中,錯誤等級用來表示系統(tǒng)的狀態(tài),它共有4種:NOTE(注意)WARNING(警告)ERROR(錯誤)FAILURE(失?。?biāo)準(zhǔn)數(shù)據(jù)類型10、自然數(shù)(NATURAL)正整數(shù)(POSITIVE)自然數(shù)是整數(shù)的一個子類型,包括0和正整數(shù);正整數(shù)也是整數(shù)的一個子類型。只能是正整數(shù)數(shù)據(jù)除定義類型外,有時還需要定義約束范圍。
INTEGERRANGE100DOWNTO0BIT_VECTOR(3DOWNTO0)REALRANGE2.0TO30.0IEEE定義的邏輯位與矢量在IEEE的程序包std_logic_1164中定義了兩個非常重要的數(shù)據(jù)類型:1、std_logic取值:0,1,Z,X,W,L,H
Z:高阻X:不定W:弱信號不定
L:弱信號0H:弱信號12、Std_logic_vector注意1、在使用“std_logic”和“std_logic_vector”時,在程序中必須聲明庫及程序包說明語句,即LIBRARYieee和std_logic_1164.ALL這兩句在程序中必不可少。2、std_logic有多個取值,與BIT不同,在編程時應(yīng)特別注意,需要考慮全所有情況。用戶自定義的數(shù)據(jù)類型1、枚舉類型格式:TYPE數(shù)據(jù)類型名IS(元素、元素、…);
TYPESTD_LOGICIS(‘U’,’X’,’0’,’1’,’Z’,’W’,’L’,’H’,’-‘);TYPEweekIS(Sun,Mon,Tue,wed,Thu,Fri,Sat);TYPEcolorIS(red,green,yellow,blue)TYPElift_stateIS(stopon1,doorpeen,doorclose,doorwait1,doorwait2,doorwait3,doorwait4,doorwait5,up,down,stop)枚舉類型的聲明TYPEcolorIS(red,green,yellow,blue);VARIABLEA:COLOR;SIGNALB:COLOR;A:=RED;B<=YELLOW;TYPEleverIS(‘0’,’1’,’z’);SIGNALV:lever;V<=‘1’;用戶自定義的數(shù)據(jù)類型2、整數(shù)(INTEGER)格式:TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義約束范圍例TYPEdigitISINTEGERRANGE0TO9
VARIABLEA:DIGIT;A:=5;A:=28;用戶自定義的數(shù)據(jù)類型3、實數(shù)(REAL)格式:TYPE數(shù)據(jù)類型名IS數(shù)據(jù)類型定義約束范圍TYPEcurrentISREALRANGE-1E4TO1E4
VARIABLEA:CURRENT;A:=1E3;A:=1E10;用戶自定義的數(shù)據(jù)類型4、數(shù)組(ARRAY)格式:TYPE數(shù)據(jù)類型名ISARRAY范圍OF原數(shù)據(jù)類型名;例:TYPEwordISARRAY(1TO8)OFSTD_LOGIC;TYPEwordISARRAY(INTEGER1TO8)OFSTD_LOGIC;數(shù)組常在總線、ROM和RAM中使用。用戶自定義的數(shù)據(jù)類型5、記錄(RECODE)
類型將不同的數(shù)據(jù)類型放在一塊,就是記錄類型數(shù)據(jù)格式:TYPE記錄類型名ISRECORD
元素名:數(shù)據(jù)類型名;元素名:數(shù)據(jù)類型名;::ENDRECORD[記錄類型名];
記錄(RECODE)
類型例:TYPEbankISRECORDaddr0:STD_LOGIC_VECTOR(7DOWNTO0);addr1:STD_LOGIC_VECTOR(7DOWNTO0);r0:INTEGER;ENDRECORD;
記錄(RECODE)
類型例:CONSTANTLEN:integer:=100;TYPEarraylogicISARRAY(99downto0)OFSTD_LOGIC_VECTOR(7DOWNTO0)TYPEtableISRECORDa:arraylogic;b:STD_LOGIC_VECTOR(7DOWNTO0);c:integerRANGE0tolen;ENDRECORD;
數(shù)據(jù)類型的轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換函數(shù)有VHDL語言的包提供例如:STD_LOGIC_1164,STD_LOGIC_ARITHSTD_LOGIC_UNSIGNED等等
函數(shù)說明STD_LOGIC_1164包TO_STDLOGIC_VECTOR(A)TO_BITVECTOR(A)TO_LOGIC(A)TO_BIT(A)由BIT_VECTOR轉(zhuǎn)換成STD_LOGIC_VECTOR由STD_LOGIC_VECTOR轉(zhuǎn)換成BIT_VECTOR由BIT轉(zhuǎn)換成STD_LOGIC由STD_LOGIC轉(zhuǎn)換成BITSTD_LOGIC_ARITH包CONV_STD_LOGIC_VECTOR(A,位長)CONV_INTEGER(A)由INTEGER,UNSIGNED和SIGNED轉(zhuǎn)換成STD_LOGIC_VECTOR由UNSIGNED和SIGNED轉(zhuǎn)換成INTEGERSTD_LOGIC_UNSIGNED包CONV_INTEGER(A)
STD_LOGIC_VECTOR轉(zhuǎn)換成INTEGERVHDL屬性
VHDL沒有一般程序語言中的那些運(yùn)算類標(biāo)準(zhǔn)函數(shù),取而代之的是多種能反映和影響硬件行為的屬性。屬性在描述時序電路的VHDL設(shè)計文件中幾乎處處可見,如檢測上升沿、下降沿,知道前一次發(fā)生的事件。VHDL屬性屬性指的是關(guān)于實體、結(jié)構(gòu)體、類型及信號的一些特征。有的屬性對綜合(設(shè)計)非常有用。VHDL的屬性可分為數(shù)值類屬性、函數(shù)類屬性、范圍類屬性、信號類屬性、類型類屬性。其引用的一般形式為:對象’屬性。數(shù)值類屬性數(shù)值類屬性用于返回數(shù)組、塊或一般數(shù)據(jù)的有關(guān)值,如邊界、數(shù)組長度等信息。對一般的數(shù)據(jù)有4種數(shù)值類屬性:對象類型的左邊界、右邊界、上邊界、下邊界,對應(yīng)的關(guān)鍵字是:LEFT、RIGHT、HIGH、LOW。數(shù)組在加一個長度屬性LENGTH。數(shù)值類屬性sdown:INstd_logic_vector(8DOWNTO0);sup:INstd_logic-vector(0to8);這兩個信號的各屬性值如下:sdown’left=8;sdown’right=0;sdown’low=0;sdown’high=8;sdown’length=9;sup’left=0;sup’right=8;sup’low=0;sup’high=8;sup’length=9;數(shù)值類屬性TYPEbit32ISARRAY(63DOWNTO32)OFBITVARIABLE:left_range,right_range,up_range,low_range,len:INTEGER;BEGINleft-range:=bit32’LEFT;--return63right-range:=bit32’RIGHT;--return32up-range:=bit32’HIGH;--return63low-range:=bit32’LOW;--return32len:=bit32’LENGTH;--return32函數(shù)類屬性信號屬性函數(shù)屬于函數(shù)類屬性,用來返回有關(guān)信號行為功能的信息。共有5種信號屬性函數(shù),分別是:’EVENT(事件);’ACTIVE(活躍);’LAST_EVENT(最近一次事件到現(xiàn)在經(jīng)過多少時間);’LAST_ACTIVE(最近一次活躍到現(xiàn)在經(jīng)過多少時間);’LAST_VALUE(信號變化前的取值是什么)EVENT
EVENT:它的值為布爾型,取值為TRUE或FALSE;
如果剛好有事件發(fā)生在該屬性所附著的信號上(即信號有變化),取值為TRUE。
利用此屬性可決定時鐘邊沿是否有效,即時鐘是否發(fā)生。EVENTSIGNALclk:INstd_logic;clk’EVENTANDclk=‘1’clk=‘1’ANDclk’EVENTclk’EVENTANDclk=‘0’clk=‘0’ANDclk’EVENTrising_edge(clk)falling_edge(clk)EVENT和ACTIVE
EVENT要求信號值發(fā)生變化;1到0、0到1ACTIVE信號值的任何變化,1到1,1到0,0到1,0到0;所有的事件都是活躍,但并非所有的活躍都是事件范圍類屬性
’RANGE屬性,其生成一個限制性數(shù)據(jù)對象的范圍。例SIGNALdata_bus:std_logic_vector(15DOWNTO0);data_bus’RANGE=15downto0運(yùn)算符
VHDL與其他的高級語言十分相似,具有豐富的運(yùn)算操作符以滿足不同描述功能的需要。在VHDL中共有4類操作符,可以分別進(jìn)行邏輯運(yùn)算(Logical)、關(guān)系運(yùn)算(Relational)、算術(shù)運(yùn)算(Arithmetic)、并置運(yùn)算(Concatenation)邏輯運(yùn)算符要求運(yùn)算符左右的數(shù)據(jù)類型必須相同,AND邏輯與OR邏輯或NAND與非NOT邏輯非NOR或非XOR異或NOR同或邏輯運(yùn)算符例:x<=(aANDb)OR(NOTcANDd);x<=bANDaANDdANDe;x<=((aNORb)NORc)NORd;x<=bORcORdORe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省佛山市普通高中高三教學(xué)質(zhì)量檢測(一)語文試題(含答案)
- 礦山生態(tài)修復(fù)合同(2篇)
- 2025年冀教版八年級歷史下冊月考試卷
- 智慧城市資源共享合同(2篇)
- 2025年冀少新版八年級地理下冊月考試卷含答案
- 2025年外研版七年級歷史下冊階段測試試卷
- 2025年廣東亞視演藝職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年山西水利職業(yè)技術(shù)學(xué)院高職單招語文2018-2024歷年參考題庫頻考點含答案解析
- 2025年安徽工業(yè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 2025年天津電子信息職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024歷年頻考點試題含答案解析
- 電力溝施工組織設(shè)計-電纜溝
- 《法律援助》課件
- SLT824-2024 水利工程建設(shè)項目文件收集與歸檔規(guī)范
- 鍋爐本體安裝單位工程驗收表格
- 一種基于STM32的智能門鎖系統(tǒng)的設(shè)計-畢業(yè)論文
- 妊娠合并強(qiáng)直性脊柱炎的護(hù)理查房
- 2024年山東鐵投集團(tuán)招聘筆試參考題庫含答案解析
- 兒童10歲生日-百日宴-滿月酒生日會成長相冊展示(共二篇)
- 《繪本閱讀與指導(dǎo)》課程教學(xué)大綱
- 員工離職登記表(范本模板)
- 2023人教版(PEP)小學(xué)英語(三、四、五、六年級)詞匯及常用表達(dá)法(課本同步)
評論
0/150
提交評論