版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
3節(jié)VerilogHDL語言的數據類型和運算符VerilogHDLVerilogHDL標志符標志符可以是一組字母、數字、_下劃線和$符號的組合,且標志符的第一個字符必須是字母或者下劃線。另外,標志符是區(qū)別大小寫的。下面給出標志符的幾個例子:Clk_100MHzdiag_state_ceP_o1_02HDL定義了一系列保留字,叫作關鍵字,具體資料可查閱相關標準。只有小寫的關鍵字才是保留字,因此在實際開發(fā)中,建議將不確定是否是保留字的if(關鍵字)IF是不同的。數據類型VerilogHDL19種4regmemoryparameter型,其他類型將在后續(xù)章節(jié)中逐步介紹。wire型wireassignVerilog程序模塊中輸入、wire型。wire“assign”語句或者實例元件的輸出。wire型信號的定義格式如下:wire[n-1:0]數據名1,數據名2,……數據名N;這里,總共定義了N條線,每條線的位寬為n。下面給出幾個例子:wire[9:0]a,b,c;//a,b,c都是位寬為10的wire型信號wired;reg型reg是寄存器數據類型的關鍵字。寄存器是數據存儲單元的抽象,通過賦值語句可以改變regalways模塊內的指定信號,代表觸發(fā)器。通常在設計中要由alwaysalways塊內被賦值的每一個信號都必須定義為reg型,即賦值操作reg型。reg型信號的定義格式如下:reg[n-1:0]數據名1,數據名2,……數據名N;這里,總共定義了N個寄存器變量,每條線的位寬為reg[9:0]a,b,c;//a,b,c10的寄存器regd;regreg型數據可以為正值或負值。但當一個reg型數據是一個表達式中的操作數時,它的值被當作無符號值,即正值。如果一個4reg型數據-1+15。reg型和wire型的區(qū)別在于:reg型保持最后一次的賦值,而wire型則需要持續(xù)的驅動。3.memory型VerilogregRAMROM存儲器和寄存memoryreg型數據的地址范圍來達到二維數組的效果,其定義的格式如下:reg[n-1:0]存儲器名[m-1:0];n位位[m-1:0]的寄存器。例如:reg[15:0]ROMA[7:0];16位,存儲深度為80。需要注意的是:對存儲器進行地址索引的表達式必須是常數表達式。盡管memory型和reg型數據的定義比較接近,但二者還是有很大區(qū)別的。例如,一個由n個1位寄存器構成的存儲器是不同于一個n位寄存器的。reg[n-1:0]rega;//一個n位的寄存器regmemb[n-1:0];//一個由n1位寄存器構成的存儲器組一個n位的寄存器可以在一條賦值語句中直接進行賦值,而一個完整的存儲器則不行。rega=0;//合法賦值memb=0;//非法賦值memorymemb[0]=1;//memeb0。reg[3:0]Xrom[4:1];Xrom[1]=4’h0;Xrom[2]=4’ha;Xrom[3]=4’h9;Xrom[4]=4’hf;4.parameter型VerilogHDLparameterparameter來定義一個標志符表示一個常數。采用該類型可以提高程序的可讀性和可維護性。parameter型信號的定義格式如下:parameter1=1;下面給出幾個例子:parameters1=1;parameter[3:0]S0=4'h0,S1=4'h1,S2=4'h2,S3=4'h3,模塊端口模塊端口是指模塊與外界交互信息的接口,包括3種類型:input:模塊從外界讀取數據的接口,在模塊內不可寫。output:模塊往外界送出數據的接口,在模塊內不可讀。inout:可讀取數據也可以送出數據,數據可雙向流動。常量集合VerilogHDL4種基本的數值:00或“假”11或“真”x:未知z:高阻其中x、z是不區(qū)分大小寫的。VerilogHDL中的數字由這四類基本數值表示。VerilogHDL3可以隨意5_6。整數整數型可以按如下兩種方式書寫:簡單的十進制數格式以及基數格式。簡單的十進制格式或十進制形式整數的例子。4545-46-46例如,32610000070100000,這里最05100011表示符號位,在6位1100011為符號擴展位?;鶖当硎靖袷交鶖蹈袷降恼麛蹈袷綖椋篬長度]'基數數值長度是常量的位長,基數可以是二進制、十進制、十六進制之一。數值是基于基數的數字序列,且數值不能為負數。下面是一些具體實例:6'b96位二進制數5'o95位八進制數9'd69位十進制數實數實數可以用下列兩種形式定義:十進制計數法,例如:2.016539.236科學計數法這種形式的實數舉例如下,其中eE235.12e2235125e-40.0005根據Verilog語言的定義,實數通過四舍五入隱式地轉換為最相近的整數。字符串字符串是雙引號內的字符序列。字符串不能分成多行書寫。例如:“counter”8ASCII值表示的字符可看作是無符號整數,因此字符串是8ASCII值的序列。“counte變量需要位。reg[1:8*7]Char;Char=''counter'';運算符和表達式在VerilogHDL語言中運算符所帶的操作數是不同的,按其所帶操作數的個數可以分為三種:單目運算符:帶一個操作數,且放在運算符的右邊。雙目運算符:帶兩個操作數,且放在運算符的兩邊。三目運算符:帶三個操作數,且被運算符間隔開。VerilogHDL語言參考了C9類:基本算術運算符在VerilogHDL中,算術運算符又稱為二進制運算符,有下列5種:+5;-5;*s1*5;s1/5;%s1%2;在進行整數除法時,結果值要略去小數部分。在取模運算時,結果的符號位和模運算第一個操作數的符號位保持一致。例如:運算表達式結果說明12.5/344,小數部分省去12%400-15%2-1-113/-31結果取第一個數的符號,所以余數為1注意XX。賦值運算符賦值運算分為連續(xù)賦值和過程賦值兩種。連續(xù)賦值連續(xù)賦值語句和過程塊一樣也是一種行為描述語句,有的文獻中將其稱為數據流描述形式,但本書將其視為一種行為描述語句。連續(xù)賦值語句只能用來對線網型變量進行賦值,而不能對寄存器變量進行賦值,其基本的語法格式為:線網型變量類型[線網型變量位寬]線網型變量名;assign#()線網型變量名=例如:wirea;assigna=1'b1;一個線網型變量一旦被連續(xù)賦值語句賦值之后,賦值語句右端賦值表達式的值將持續(xù)對被賦值變量產生連續(xù)驅動。只要右端表達式任一個操作數的值發(fā)生變化,就會立即觸發(fā)對被賦值變量的更新操作。在實際使用中,連續(xù)賦值語句有下列幾種應用:對標量線網型賦值wirea,b;assigna=b;wire[7:0]a,b;assigna=b;對矢量線網型中的某一位賦值wire[7:0]a,b;assigna[3]=b[1];對矢量線網型中的某幾位賦值wire[7:0]a,b;assigna[3:0]=b[3:0];對任意拼接的線網型賦值wirea,b;wire[1:0]c;assignc={a,b};過程賦值過程賦值主要用于兩種結構化模塊always模塊)中的賦值語句。在過程塊中只能使用過程賦值語句(不能在過程塊中出現連續(xù)賦值語句),也只能用在過程賦值模塊中。過程賦值語句的基本格式為:<被賦值變量><賦值操作符><賦值表達式>是或“<=”3.5.1節(jié)對阻塞賦值和非阻塞賦值操作進行了詳細解釋。過程賦值語句只能對寄存器類型的變量integerreal和time)進行操作,經過賦值后,上面這些變量的取值將保持不變,直到另一條賦值語句對變量重新賦值為止。過程賦值操作的具體目標可以是:reg、integer、realtime型變量(矢量和標量);上述變量的一位或幾位;操作符所組成的矢量;2-2給出一個過程賦值的例子。regc;always@(a)beginc=1'b0;end關系運算符關系運算符總共有以下8種:>大于>=大于等于<小于<=小于等于 ==邏輯相等!=邏輯不相等 ===實例相等!==實例不相等在進行關系運算符時,如果操作數之間的關系成立,返回值為1;關系不成立,則返回值為0;若某一個操作數的值不定,則關系是模糊的,返回的是不定值X。實例算子“===”和“!==”可以比較含有X和Z的操作數,在模塊的功能仿真中有著廣泛的應用。所有的關系運算符有著相同優(yōu)先級,但低于算術運算符的優(yōu)先級。邏輯運算符VerilogHDL中有3類邏輯運算符:&&邏輯與||邏輯或!邏輯非其中“&&“|作數?!?&“|表2-2邏輯運算符的真值表條件運算符條件運算符的格式如下:y=x?a:b;3y=xTruea,否則返回第三個操作數b。如:wirey;assigny=(s1==1)?a:b;嵌套的條件運算符可以實現多路選擇。如:wire[1:0]s;assigns=(a>=2)?1:(a<0)?2:0;//當a>=2時,s=1;當a<0時,s=2;在其余情況,s=0。位運算符作為一種針對數字電路的硬件描述語言VerilogHD7~非&與|或^異或^~同或~&~|或非“~s1&s2的含義就是s1s2較短的數高位補零,然后進行對應位運算,使輸出結果的長度與位寬較長的操作數長度保持一致。例如:s1=~s1;var=ce1&ce2;移位運算符移位運算符只有兩種:“<<”(左移)和“>>”(右移),左移一位相當于乘2,右移一位相當于除2。其使用格式為:s1<<N;或s1>>Ns1(右N0來填補移出的空位。20=16+4s1<<4+s1<<2來實現。拼接運算符拼接運算符可以將兩個或更多個信號的某些位并接起來進行運算操作。其使用格式為:{s1,s2,…,sn}將某些信號的某些位詳細地列出來,中間用逗號隔開,最后用一個大括號表示一個整體信號。2-3Verilog實例reg[15:0]shiftreg;always@(posedgeclk)shiftreg[15:0]<={shiftreg[14:0],data_in};
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能新能源汽車分期付款貸款協議書3篇
- 2025版?zhèn)€人房產買賣合同風險評估范本2篇
- 2025版?zhèn)€人房產買賣合同附土地使用協議
- 2025版托育中心拖育綜合服務中心改造項目合同3篇
- 2025版數據錄入與云端數據同步維護服務協議3篇
- 2025-2030全球微電腦注藥泵行業(yè)調研及趨勢分析報告
- 2025年度個人對個人短期投資借款合同
- 2024年民法典知識競賽題庫及參考答案解析(共50題)
- 2025年度水電工程安全監(jiān)督與管理承包協議4篇
- 2025年度鋼材原材料采購質量控制合同樣本
- 2024年蘇州工業(yè)園區(qū)服務外包職業(yè)學院高職單招職業(yè)適應性測試歷年參考題庫含答案解析
- 人教版初中語文2022-2024年三年中考真題匯編-學生版-專題08 古詩詞名篇名句默寫
- 2024-2025學年人教版(2024)七年級(上)數學寒假作業(yè)(十二)
- 山西粵電能源有限公司招聘筆試沖刺題2025
- ESG表現對企業(yè)財務績效的影響研究
- 醫(yī)療行業(yè)軟件系統應急預案
- 使用錯誤評估報告(可用性工程)模版
- 《精密板料矯平機 第2部分:技術規(guī)范》
- 2023-2024年同等學力經濟學綜合真題及參考答案
- 農村集體土地使用權轉讓協議
- 2024年高考全國甲卷英語試卷(含答案)
評論
0/150
提交評論