Verilog HDL 第三章 Verilog基礎(chǔ)知識_第1頁
Verilog HDL 第三章 Verilog基礎(chǔ)知識_第2頁
Verilog HDL 第三章 Verilog基礎(chǔ)知識_第3頁
Verilog HDL 第三章 Verilog基礎(chǔ)知識_第4頁
Verilog HDL 第三章 Verilog基礎(chǔ)知識_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

VerilogHDL

第二講1第三章Verilog基礎(chǔ)知識一、基本詞法二、數(shù)據(jù)類型三、運算符2一、基本詞法VerilogHDL源文件是由一串詞法標識符組成的,一個詞法標識符包含一個或若干個字符。VerilogHDL中詞法標識符有以下幾種:間隔符注釋符算子數(shù)值字符串標識符關(guān)鍵詞31.1間隔符包括空格、制表符、換行符和換頁符。作用:在VerilogHDL中起分隔作用。與C語言一樣,在適當(dāng)?shù)牡胤讲迦肟瞻追栽黾哟a的可讀性。但是在字符串中空格和制表符被認為是有意義的字符。41.2注釋符與C語言一致單行注釋行:以“//”開始,到本行結(jié)束段注釋行:以“/*”開始,到“*/”結(jié)束段注釋不允許嵌套,在段注釋行中單行注釋符//沒有任何特殊意義51.3算子算子是由單個、兩個或三個字符組成的序列串,它且在表達式中。一元算子放在操作數(shù)的左側(cè),二元算子放在兩個操作數(shù)的中間,條件算子有兩個算子字符分隔三個操作數(shù)。62.邏輯與數(shù)字表示2.1四種邏輯狀態(tài)用數(shù)字或字符表達數(shù)字電路中的存儲或傳送的邏輯狀態(tài)。0邏輯0、邏輯非、低電平1邏輯1、邏輯正、高電平x不確定的邏輯狀態(tài)z高阻態(tài)72.2整數(shù)及其表示最常用的整數(shù)表示形式:

+/-<位寬>`<基數(shù)符號><按基數(shù)表示的數(shù)值>例:3`b10x8基數(shù)符號及其合法表示數(shù)制基數(shù)符號合法表示符二進制b或B0,1,x,X,z,Z,?,_八進制o或O0~7,x,X,z,Z,?,_十進制d或D0~9,_十六進制h或H0~9,a~f,A~F,x,X,z,Z,?,_9整數(shù)表示說明?是高阻態(tài)z的另一種表示方法_只是增加可讀性最高有效位MSB在左邊x和z的二進制位數(shù)與基數(shù)類型保持一致當(dāng)位寬被缺省時位寬為32位;當(dāng)位寬小于數(shù)值的實際位數(shù),舍去高位部分;當(dāng)位寬大于數(shù)值的實際位數(shù),高位部分填0或x或z10整數(shù)表示實例與說明數(shù)值表示位寬數(shù)制等效二進制及說明10缺省十進制0…0_1010(32位)4ac缺省十進制非法`h4ac缺省十六進制32位9`o6719位八進制110_111_0019`o-6719位八進制非法,符號位應(yīng)在最前6`hf36位十六進制11_0011,高位部分舍去6`hf6位十六進制00_1111,高位部分補03`b10x3位二進制10x12`h2x612位十六進制0010_xxxx_01106`hx6位十六進制xx_xxxx,高位部分補x112.3實數(shù)及其表示用于表示延時、負載等物理參數(shù)用10進制或指數(shù)表示小數(shù)點兩邊必須有數(shù)字例:

10.2 1.2e12 1.2e-2 2e3 12_34.56_78_e12 .12 2. .3e2123.字符串與字符變量詞法:與C語言類似作用:配合仿真工具輸出相關(guān)信息通過前導(dǎo)控制鍵引入特殊字符特殊字符意義\n換行\(zhòng)tTab鍵\\反斜杠\”引號”\dddASCII值%%字符“%”13字符處理實例moduletest_string;

reg[8*14:1]str_var; initial begin

str_var=“Helloworld”; $display(“%sisstoredas%h”,str_var,str_var);

str_var={str_var,“!!!”}; $display(“%sisstoredas%h”,str_var,str_var); end

endmodule輸出結(jié)果:Helloworldisstoredas00000048656c6c6f20776f726c64Helloworld!!!isstoredas48656c6c6f20776f726c64212121144.命名規(guī)則、系統(tǒng)命令、關(guān)鍵詞4.1命名規(guī)則標識符命名規(guī)則:

1.必須以字母或下劃線開頭,長度小于1024個字符

2.后續(xù)部分還可以有數(shù)字0~9、$ 3.以反斜杠開頭,以后可以是任意字符,以空白符結(jié)束15命名舉例_bus1\~(a+b)34neta*b_net164.2系統(tǒng)命令輸出控制:$display,$write,$monitor模擬時標:$time,$realtime進程控制:$finish,$stop文件讀寫:$readmem174.3關(guān)鍵詞(保留詞)常用保留詞alwaysassignbegincasecmos

defaultedgeelseendendmoduleforifinitialinoutinputintegernand

negedgenornotoroutputposedge

reg

waitwhilewor

xnor等18二、數(shù)據(jù)類型是對硬件電路中的信號連線和寄存器等物理量的描述,而不是一般計算機語言的整型、實形等。VerilogHDL中兩種數(shù)據(jù)類型:連線(線網(wǎng))類型和寄存器類型,區(qū)別:驅(qū)動方式(賦值方式)保持方式硬件實現(xiàn)191.連線類型反映硬件電路中的物理連接特性驅(qū)動方式連到門或模塊的輸出,或連續(xù)賦值語句assign賦值,連線賦值不能出現(xiàn)在過程語句(initial或always)中無驅(qū)動時,通常認為處于高阻狀態(tài)z(trireg除外)保持方式?jīng)]有電荷保持作用(trireg除外)硬件實現(xiàn)物理信號的連線20連線類型連線類型功能說明wire,tri標準連線,缺省類型wor,trior多重驅(qū)動,線或特性wand,triand多重驅(qū)動,線與特性trireg電荷保持特性tri1上拉電阻(pullup)tri0下拉電阻(pulldown)supply1電源線,邏輯1supply0地線,邏輯021應(yīng)用說明連線類型主要出現(xiàn)在結(jié)構(gòu)描述中缺省時,被認為是1bit的wire類型trireg具有電荷保持作用的連線,主要為描述DRAM等(柵電容電荷保持)222.寄存器類型反映具有狀態(tài)保持作用的硬件電路元件驅(qū)動方式過程賦值語句實現(xiàn),與C語言的變量賦值類似過程賦值只能出現(xiàn)在過程語句(initial和always)后未賦值前,認為處于不定狀態(tài)x保持方式在下一次過程賦值前保持不變硬件實現(xiàn)觸發(fā)器和鎖存器等(reg類)23寄存器類型寄存器類型功能說明reg行為級、RTL描述中,過程賦值integer32位帶符號整型變量real64位帶符號實型time64位無符號時間變量24應(yīng)用說明均有寄存性必須說明,無缺省狀態(tài)必須出現(xiàn)在過程賦值語句initial和always后的過程塊中integer、real和time均為過程塊中數(shù)學(xué)描述,不對應(yīng)具體硬件電路integer:循環(huán)變量控制real:延時時間計算等time:模擬時間的存儲與計算處理25舉例:MUX結(jié)構(gòu)描述modulemux_str(out,a,b,sel); outputout; Inputa,b,sel; not gate1(net1,sel); andgate2(net2,a,net1); andgate3(net3,b,sel); orgate4(out,net2,net3);endmodulenot、and、or為VerilogHDL的基本門級元件,gatex為單元電路(門)名稱,netx為電路內(nèi)部連線名稱。Gate1Gate4Gate2Gate3aoutnet3net2net1selb26舉例:對MUX模塊的測試moduletest_for_mux;

reg

a,b,sel;

mux_strmux1(out,a,b,s); initial begin a=0;b=1;s=0; #10 a=1; #10 b=0; #10 s=1; #10 b=1; #10 a=0; #10 $finish end initial $monitor($time,”a=%bb=%bs=%bout=%b”,a,b,s,out);endmodule273.標量、矢量、標量類矢量、矢量類矢量、存儲器的表示標量線寬為1的連線類,或位寬為1的寄存器類wirea,b,c;regd,e,f;矢量線寬大于1的連線類,或位寬大于1的寄存器類wire[7:0]bus_a,bus_b;reg[15:0]reg_d,reg_e;規(guī)定左邊最高位MSB,右邊最低位LSB28標量類矢量、矢量類矢量標量類矢量可按位賦值的矢量,加入關(guān)鍵詞scalaredreg

scalared[7:0]reg_a;scalared可被缺省矢量類矢量不可按位賦值的矢量,加入關(guān)鍵詞vectoredregvectored[31:0]bus32;vectored不可被缺省一般說矢量即指標量類矢量,應(yīng)用最多29存儲器定義看作由一組寄存器組成的陣列,一個二維的寄存器類有存儲容量的定義一般有字長的定義例:parameterwordsize=16,memsize=1024;reg[wordsize-1:0]mem_ram[memsize-1:0],write_reg;write_reg=8’b0001_1010;write_reg[2]=1’b1; //對第2位賦值 write_reg[2:0]=3’b101;mem_ram[2]=8’b1000_1011;//對第2存儲單元賦值30注意區(qū)別reg[7:0]a;regb[7:0];31三、參數(shù)定義、宏替換及時間定標1.參數(shù)定義用文本來替代數(shù)字量格式parameter<參數(shù)定義表項>;例parametermsb=7,lsb=0,delay=2;方便閱讀,可參數(shù)化設(shè)計322.宏替換用文本(宏名)替換verilog描述內(nèi)容結(jié)束無分號“;”引用中宏名前加“`”宏名習(xí)慣用大寫格式`define<宏名><被替換內(nèi)容>例

`defineMSB7 `defineLSB0 `definedelay_andand#1

reg[`MSB:`LSB]a; `delay_anda1(x,y,z);333.模擬時間定標對模擬器的時間單位和時間計算精度進行定標格式`timescale<計時單位>/<計時精度>計時單位:模擬器的模擬單位時間計時精度:模擬過程中的延時量計時精度結(jié)束無“;”合法的整數(shù):1,10,100合法的單位:s,ms,us,ps,fs計時單位和計時精度搭配恰當(dāng),在模擬耗時和模擬精度之間選擇重復(fù)定義時將按最小計時單位和精度模擬34四、運算符

表示物理量間的相互作用關(guān)系,反映硬件電路的物理特性。運算符的分類:運算符分類所含運算符算術(shù)運算符+,-,*,/,%位運算符~,&,|,^,^~(~^)縮位運算符&,~&,|,~|,^,^~(~^)邏輯運算符!,&&,||關(guān)系運算符<,>,<=,>=相等與全等運算符==,!=,===,!==邏輯移位運算符<<,>>連接運算符{}條件運算符?:35運算符的優(yōu)先級!,~ 最高優(yōu)先級*,/,%+,-<<,>><,<=,>,>===,!=,===,!==&,~&^,~^|,~|&&||?: 最低優(yōu)先級361.算術(shù)運算符+,-,*,/,%“/”:整型數(shù)除法舍去小數(shù)部分“%”:取模運算,結(jié)果符號與第一運算符保持一致,例:-10%3,結(jié)果為-110%-3,結(jié)果為1運算符中有不定態(tài),則一般結(jié)果也為不定態(tài)372.位運算符按位運算二個操作數(shù)不等長時,運算結(jié)果按長操作數(shù)補0或x38~:按位取反運算&:按位與運算0&x1&x|:按位或運算0|x1|x^:按位異或運算0^x1^x~^(^~):按位同或運算

39舉例a=4’b0100,b=4’b1111;~a 1011~b 0000a&b 0100a|b 1111a^b 1011a~^b 010040縮位運算符單目運算符對操作數(shù)逐位運算,運算結(jié)果是一位邏輯值運算符:與(&),或(|),異或(^),及其非操作~&,~|,~^運算規(guī)則同位運算符例:a=4’b0110&a 0 ~&a 1|a 1 ~|a 0^a 0 ~^a 1414.邏輯運算符表示運算關(guān)系的:“真”(1)與“假”(0)&&:邏輯與||:邏輯或!:邏輯非若操作數(shù)中只要有一位邏輯1,整體就看作邏輯真或邏輯1;若操作數(shù)每一位都為0,則是邏輯假或邏輯0若操作數(shù)中存在不定態(tài),則結(jié)果為不定態(tài)注意區(qū)別:a&&ba&&b42舉例a=4’b0010,b=4’b0000!a 0!b 1a&&b 0a||b 1435.關(guān)系運算符比較兩個操作數(shù)的大小關(guān)系結(jié)果是一位的邏輯值,邏輯值1表示關(guān)系成立,邏輯值0表示關(guān)系不成立<:小于>:大于<=:小于等于>=:大于等于44注意算式的優(yōu)先級關(guān)系邏輯運算符的優(yōu)先級高低是:!,&&,||關(guān)系運算符的優(yōu)先級相等關(guān)系運算優(yōu)先級高于邏輯運算優(yōu)先級例:(a>b)&&(x>y) 等價于a>b&&x>y(!a)||(a>b) 等價于!a||a>ba=4`b0100,b=4`b1010a<b 1 a>b 0a<=b 1 a>=b 0456.相等與全等運算符逐位比較兩個操作數(shù)==:相等運算符每一位的確定值(0或1)都相等時,關(guān)系為真(1),否則為假(0)只要中間存在高阻態(tài)(z)或不定態(tài)(x),則關(guān)系為不定(x)!=:不等運算符與相等運算相反46全等與不全等運算符===:全等運算符把不定態(tài)(x)和高阻態(tài)(z)看作邏輯狀態(tài)進行比較比較結(jié)果不存在不定態(tài),一定是1或0!==:不全等運算符,與全等運算符相反例:a=b=4`b0100,c=d=4`b10x0a==b1 a!=b 0 a===b1 a!==b0c==dx c!=d

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論