![ch6VerilogHDL語法與要素_第1頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/31/c078e2c3-8cd2-4f1c-a660-25809063b66f/c078e2c3-8cd2-4f1c-a660-25809063b66f1.gif)
![ch6VerilogHDL語法與要素_第2頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/31/c078e2c3-8cd2-4f1c-a660-25809063b66f/c078e2c3-8cd2-4f1c-a660-25809063b66f2.gif)
![ch6VerilogHDL語法與要素_第3頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/31/c078e2c3-8cd2-4f1c-a660-25809063b66f/c078e2c3-8cd2-4f1c-a660-25809063b66f3.gif)
![ch6VerilogHDL語法與要素_第4頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/31/c078e2c3-8cd2-4f1c-a660-25809063b66f/c078e2c3-8cd2-4f1c-a660-25809063b66f4.gif)
![ch6VerilogHDL語法與要素_第5頁](http://file1.renrendoc.com/fileroot_temp2/2020-12/31/c078e2c3-8cd2-4f1c-a660-25809063b66f/c078e2c3-8cd2-4f1c-a660-25809063b66f5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、Verilog HDL 語法與要素,延 邊 大 學 工 學 院 電 子 信 息 通 信 學 科 許 一 男,可編輯ppt,2,Verilog HDL的注釋語句有兩種形式: (1)單行注釋。用符號“/”表示注釋的開始,從這個符號開始到本行的結(jié)束都被認為是注釋,而且它只能注釋到本行結(jié)束。,6.1 Verilog HDL語言要素(注 釋 語 句 ),可編輯ppt,3,(2)多行注釋。以起始符“/*”開始,到終止符“*/”結(jié)束,可以跨越多行,在一對起始符與終止符之間的所有內(nèi)容都被認為是注釋。,注 釋 語 句,可編輯ppt,4,標識符是用戶定義的各種名稱,可以是模塊、端口、寄存器、線網(wǎng)、實例和程序塊等元
2、素的名稱,比如語句“module adder;”就定義了一個標識符adder,而語句“reg abc;”則定義了標識符abc。標識符可以是字母、數(shù)字和下劃線“_”等符號的任意組合序列,但首字符不能是數(shù)字,而且單個標識符的總字符數(shù)不能多于1024。 關鍵詞是語言的保留字,有其特定的和專有的語法作用,用戶不能再對這些關鍵詞做新的定義。Verilog HDL共有102個關鍵詞。 注意:關鍵詞必須是小寫的,如“module”是關鍵詞,而“Module”不是。,標識符和關鍵詞,可編輯ppt,5,Verilog HDL提供了豐富的數(shù)據(jù)類型,本章把Verilog HDL的數(shù)據(jù)分為常量和變量兩類,并分別介紹其
3、特點和使用方法。 表達式是操作符、操作數(shù)和標點符號序列,其目的是用來說明一個計算過程。程序中的大部分語句是由表達式構成的,因此表達式是Verilog HDL的重要部分。,數(shù)據(jù)類型與表達式,可編輯ppt,6,在程序運行過程中,其值不能被改變的量稱為常量。 Verilog HDL有整型、實數(shù)型、字符串型3種常量。 在整型或?qū)崝?shù)型常量的任意位置可以隨意插入下劃線“_”(但是不能當作首符號),這些下劃線對數(shù)本身并沒有意義,但是當數(shù)字很長時使用下劃線可以提高可讀性。,6.2 常 量 (constants),可編輯ppt,7,Verilog HDL有4種基本值: 0 表示邏輯0或“假”; 1 表示邏輯1或
4、“真”; x 表示未知; z 表示高阻。 注意:x值和z值都是不分大小寫的,也就是說,值0 x1z與值0X1Z相同。(盡量統(tǒng)一使用小寫) Verilog HDL的常量是由以上這4種基本值組成的。,可編輯ppt,8,整型常量即整數(shù),Verilog HDL的整數(shù)有兩種書寫格式: 十進制數(shù)格式, 基數(shù)格式。 (1)十進制數(shù)格式是一個可以帶正負號的數(shù)字序列,代表一個有符號數(shù), 如下例: 32 /十進制數(shù)32 -15 /十進制數(shù)-15,(1) 整形常量,可編輯ppt,9,(2)基數(shù)格式的數(shù)通常是無符號數(shù),形式如下: sizebase value size定義常量的位數(shù)(長度),這是可選項; base是基
5、數(shù),規(guī)定這個數(shù)據(jù)的進制,可以是o或O(表示八進制),b或B(表示二進制),d或D(表示十進制),h或H(表示十六進制)之一; value是一個數(shù)字序列,其形式應與base定義的形式相符。這個數(shù)字序列中出現(xiàn)的值x和z以及十六進制中的af不區(qū)分大小寫,“?”字符可以代替值z。,可編輯ppt,10,下面給出一些典型書寫方法,有正確的也有錯誤的。 5O37 /5位八進制數(shù) 4D2 /4位十進制數(shù) 4B1x_01 /4位二進制數(shù) 7Hx /7位x(擴展的x), 即xxxxxxx 4hZ /4位z(擴展的z) , 即zzzz 2h1? /2位十六進制數(shù),與2h1z相同 8h 2 A /在位數(shù)和字符之間,以
6、及基數(shù)和數(shù)值之間允許出現(xiàn)空格 4d-4 /非法:數(shù)值不能為負 3 b001 /非法:和基數(shù)b之間不允許出現(xiàn)空格 (2+3)b10 /非法:位數(shù)不能夠為表達式,可編輯ppt,11,如果沒有定義常量的位數(shù),那么這個數(shù)的長度就是相應值的位數(shù),例如: o721 /9位八進制數(shù) hAF /8位十六進制數(shù) 如果定義的長度大于數(shù)字序列的實際長度,通常在數(shù)據(jù)序列的高位(左側(cè))補0。但是如果這個數(shù)字序列最左邊一位為x或z,就用x或z在左邊補位,例如: 10b10 /左邊補0, 0000000010 10bx0 x1 /左邊補x, xxxxxxx0 x1 如果定義的長度小于數(shù)字序列的實際長度,這個數(shù)字序列最左邊超
7、出的位將被截斷,例如: 3b1001_0011 /與3b011相等 5H0FFF /與5H1F相等,可編輯ppt,12,在Verilog HDL中,實數(shù)就是浮點數(shù),實數(shù)的定義方式有兩種: (1)十進制格式,由數(shù)字和小數(shù)點組成(必須有小數(shù)點),例如: 2.0 5.678 11572.12 0.1 2. / 非法:小數(shù)點右側(cè)必須有數(shù)字,(2) 實數(shù)型常量,可編輯ppt,13,2)指數(shù)格式,由數(shù)字和字符e(E)組成,e(E)的前面必須要有數(shù)字而且后面必須為整數(shù), 例如: 23_5.1e2 /其值為23510.0,忽略下劃線 3.6E2 /其值為360.0 ( e與E相同) 5E4 /其值為0.000
8、5,可編輯ppt,14,字符串常量是由一對雙引號括起來的字符序列。出現(xiàn)在雙引號內(nèi)的任何字符(包括空格和下劃線)都將被作為字符串的一部分。如下例: INTERNAL ERROR“ R E A C H E D H E R E /空格出現(xiàn)在雙引號內(nèi),所以是字符串的組成部分 12345_6789_0 /下劃線出現(xiàn)在雙引號內(nèi),所以是字符串的組成部分,(3) 字符串型常量,可編輯ppt,15,實際上,字符都會被轉(zhuǎn)換成二進制數(shù),而且這種二進制數(shù)是按特定規(guī)則編碼的?,F(xiàn)在普遍都采用ASCII碼,這種代碼把每個字符用一個字節(jié)(8位)的二進制數(shù)表示。所以字符串實際就是若干個8位ASCII碼的序列。例如字符串“INT
9、ERNAL ERROR”共有14個字符,存儲這個字符串的變量就需要8*14位的存儲空間,如下: reg 1:8*14 Message; /定義變量Message并分配存儲空 Message = INTERNAL ERROR /給變量Message賦值為字符串常量,可編輯ppt,16,Verilog HDL有線網(wǎng)和寄存器兩種類型的變量,每種類型都有其在電路中的實際意義。 1線網(wǎng)型變量 線網(wǎng)表示元件之間的物理連線,它不能存儲數(shù)據(jù)。線網(wǎng)是被“驅(qū)動”的,可以用連續(xù)賦值或把元件的輸出連接到線網(wǎng)等方式給線網(wǎng)提供“驅(qū)動”,給線網(wǎng)提供驅(qū)動的賦值和元件就是“驅(qū)動源”,線網(wǎng)的值由驅(qū)動源決定。如果沒有驅(qū)動源連接到線
10、網(wǎng),線網(wǎng)的缺省值為z。,6.3 數(shù) 據(jù) 類 型,可編輯ppt,17,Verilog HDL共有11種線網(wǎng)類型:wire、tri、wor、trior、wand、triand、trireg、tri1、tri0、supply0、supply1。 線網(wǎng)的聲明語法形式如下: net_kind msb:lsb net1, net2, . . . , netN; net_kind是線網(wǎng)類型;msb:lsb定義線網(wǎng)寬度的最高位和最低位,這一項是可選的,如果沒有定義寬度,那么認為線網(wǎng)寬度是1位;net1,net2netN是線網(wǎng)變量的名稱。,可編輯ppt,18,可以在同一個定義中聲明多個變量,例如: wire R
11、dy, Start; /Rdy和Start是2個1位的連線 wand 2:0 Addr; /Addr是3位線與型線網(wǎng) 線網(wǎng)可以有多個驅(qū)動源(多條語句對同一個線網(wǎng)進行賦值),每個驅(qū)動源都會給線網(wǎng)賦值,出現(xiàn)這種情況時,線網(wǎng)的取值由線網(wǎng)類型決定。,可編輯ppt,19,wor Rde; /定義Rde為線或類型的線網(wǎng) assign Rde = Blt /第二個連續(xù)賦值語句是Rde的第2個驅(qū)動源 本例中,Rde有兩個驅(qū)動源,它們分別來自于兩個連續(xù)賦值語句。由于Rde是“線或”類型的線網(wǎng),所以Rde的有效值由驅(qū)動源的值(右邊表達式的值)的線或表決定,具體做法是:把這兩個驅(qū)動源賦給線網(wǎng)的兩個值作為索引去線或表
12、中查詢,就可以得到線網(wǎng)真正的有效值。,可編輯ppt,20,在這11種線網(wǎng)中,經(jīng)常用到的是前6種,下面給出其詳細的 (1)wire和tri線網(wǎng) wire 連線。 tri 三態(tài)線。 wire和tri型線網(wǎng)都是用于連接單元的連線,是最常見的線網(wǎng)類型。二者語法和語義一致,不同的是三態(tài)線可以用于描述多個驅(qū)動源驅(qū)動同一根線的線網(wǎng)類型。,可編輯ppt,21,下面是定義這兩種線網(wǎng)的實例: wire Reset; /1位連線Reset wire 3:2 Cla, Pla, Sla; /Cla,Pla和Sla都是2位連線 tri MSB1:LSB+1 Art; /三態(tài)線Art,位寬由表達式確定,可編輯ppt,22
13、,(1)wire(tri) 真值表,如果多個驅(qū)動源驅(qū)動一個連線(或三態(tài)線網(wǎng)), 這個線網(wǎng)的有效值由下列表決定,可編輯ppt,23,例子: assign Cla = Pla /第2個驅(qū)動源 在這個例子中,Cla有兩個驅(qū)動源。兩個驅(qū)動源的值用于在上表中進行索引,以便決定Cla的有效值。Cla是一個向量,在查表確定其有效值時應按位操作。例如,如果第1個驅(qū)動源的值為01x,第2個驅(qū)動源的值為11z,那么Cla的有效值是x1x(兩個值的第一位0和1在表中索引到x,第2位1和1在表中索引到1,第3位x和z在表中索引到x)。,可編輯ppt,24,wor 線或。 trior 三態(tài)線或。 線或的含義是只要這類線
14、網(wǎng)的某個驅(qū)動源值是1,那么線網(wǎng)的值就是1。線或和三態(tài)線或在語法和功能上是一致的。例如: wor MSB:LSB Art; trior MAX1: MIN1 Rdx, Sdx, Bdx;,(2)wor和trior線網(wǎng),可編輯ppt,25,wor和trior真值表,如果多個驅(qū)動源驅(qū)動這類線網(wǎng), 其有效值由下列表決定,可編輯ppt,26,wand 線與。 triand 三態(tài)線與。 線與的含義是只要這類線網(wǎng)的某個驅(qū)動源值是0,那么線網(wǎng)的值就是0。線與和三態(tài)線與在語法和功能上是一致的。例如: wand -7:0 Dbus; triand Reset, Clk;,(3)wand和triand線網(wǎng),可編輯p
15、pt,27,wand和triand真值表,如果這類線網(wǎng)存在多個驅(qū)動源, 線網(wǎng)的有效值由下列表決定,可編輯ppt,28,trireg 三態(tài)寄存器。 這種線網(wǎng)可以存儲數(shù)值(類似于寄存器),可用于電容節(jié)點的建模。當沒有驅(qū)動源時,三態(tài)寄存器線網(wǎng)的缺省初始值為x。當它的所有驅(qū)動源都處于高阻態(tài)(值都為z)時,三態(tài)寄存器保存的值是作用在該線網(wǎng)上的最后一個值。例如:,(4)trireg線網(wǎng),可編輯ppt,29,tri0 三態(tài)0。 tri1 三態(tài)1。 這兩類線網(wǎng)可以用于線邏輯的建模,即線網(wǎng)有多于一個驅(qū)動源。tri0(tri1)線網(wǎng)的特征是,若無驅(qū)動源驅(qū)動,它的值為0(tri0)或1(tri1)。例如: tri0
16、 3:3 GndBus; tri1 0 :5 OtBus, ItBus;,(5)tri0和tri1線網(wǎng),可編輯ppt,30,tri0和tri1真值表,在有多個驅(qū)動源情況下, tri0和tri1的有效值有下列表得到,可編輯ppt,31,supply0用于對“地”建模,即低電平0。 supply1用于對電源建模,即高電平1。 例如: supply0 Gnd, ClkGnd; supply1 2:0 Vcc;,(6)supply0和supply1線網(wǎng),可編輯ppt,32,在Verilog HDL中,可以不必聲明某種線網(wǎng)的類型。在這樣的情況下,缺省線網(wǎng)類型為1位連線(wire)。wire是Verilo
17、g HDL內(nèi)置的默認線網(wǎng)類型,可以使用編譯器指令default_nettype改變這一默認線網(wǎng)類型。使用方法如下: default_nettype net_kind 這里的net_kind就成為系統(tǒng)默認的線網(wǎng)類型,例如: default_nettype wand 帶有這條編譯器指令的程序中,任何未被說明類型的線網(wǎng)都被設置為1位線與。,(7)未說明的線網(wǎng),可編輯ppt,33,scalared 標量線網(wǎng)。 vectored 向量線網(wǎng)。 scalared和vectored是聲明線網(wǎng)時的可選項。如果沒有定義這一項,那么缺省值是標量線網(wǎng)(scalared),前面所有程序中的線網(wǎng)都是這樣的。如果某個線網(wǎng)聲
18、明時使用了vectored,那么就不允許對該線網(wǎng)做位選擇(只選擇線網(wǎng)值中的1位)和部分選擇(選擇線網(wǎng)值中的部分位),必須對線網(wǎng)整體賦值。,(8)scalared線網(wǎng)和vectored線網(wǎng),可編輯ppt,34,例如: wire vectored3:1 Grb; / /使用了vectored不允許位選擇(如Grb2)和部分選擇(如Grb3:2) wor scalared 4:0 Best; / /使用了scalared,效果與“wor 4:0 Best;”相同,允許位選擇(如Best2)和部分選擇(如Best3:1),可編輯ppt,35,程序中經(jīng)常多次出現(xiàn)某些數(shù)字,如延遲時間或變量的寬度,有時(如
19、調(diào)用任務或?qū)嵗K時)可能要改變這些值,這種情況下經(jīng)常要用到參數(shù)。參數(shù)一經(jīng)聲明,就視其為一個常量,在整個仿真過程中不再改變。其聲明形式如下: parameter 參數(shù)名1=表達式1, param2 = const_expr2, ., paramN = const_exprN; parameter是用于聲明參數(shù)的關鍵詞;param1、param2paramN是標識符;const_expr1、const_expr2const_exprN分別是標識符要代表的數(shù)字,它們可以不僅僅是數(shù)字,也可以是計算表達式。,6.4 參 數(shù) (parameter),可編輯ppt,36,。下面是3條參數(shù)聲明語句: pa
20、rameter LINELENGTH=132, ALL_X_S=16bx; parameter BIT=1, BYTE=8, PI=3.14; parameter STROBE_DELAY=(BYTE + BIT)/2; 使用參數(shù)可以提高程序的可讀性,也利于修改,尤其是延遲時間和變量寬度這些在調(diào)試中可能經(jīng)常修改的值。,可編輯ppt,37,6.5 向 量,向量: 線寬大于1位的變量 MSB(Most Significant Bit):最高有效位 LSB (Lease Significant Bit): 最底有效位 msb :lsb reg 3:0 canos; wire 5:0 bus;,可編輯
21、ppt,38,位選擇和域選擇,A : 1位 B: 7位 A = B4; assign c=a2 域選擇,6,5,4,3,2,1,0,可編輯ppt,39,表達式的操作數(shù)可以是線網(wǎng)或寄存器的某個位,即位選擇。位選擇是從線網(wǎng)(或寄存器)中選擇特定的某個位。形式如下: net_or_reg_vector bit_select_expr 其中,net_or_reg_vector是向量線網(wǎng)或寄存器名,bit_select_expr是要選擇位的編號。例如: State1 /*定義了一個8位寄存器Ack和一個有64個8位寄存器組成的存儲器*/ . . . Ack = Dram 60; /把存儲器Dram的編號
22、為60的存儲單元的值賦給Ack 注意,雖然存儲器單元就是寄存器,但不允許對存儲器單元做位選擇或部分選擇。例如: Dram 60 2 /位選擇不允許 Dram 60 2:4 /部分選擇也不允許,可編輯ppt,45,如果想從存儲器中讀取一個位或部分位,可以先把存儲器單元賦值給某個寄存器變量,然后對該寄存器變量進行位選擇或部分選擇操作。如在上例中做了Ack=Dram60之后,Ack 2和Ack 2:4就能夠取出存儲器單元Dram60的某個位或部分位。,可編輯ppt,46,Verilog HDL的操作符有如下9種類型: 算術操作符 關系操作符 相等操作符 邏輯操作符 按位操作符 歸約操作符 移位操作符
23、 條件操作符 連接和復制操作符,6.6 運算符,可編輯ppt,47,操作符的優(yōu)先級和名稱,可編輯ppt,48,其中,除條件操作符從右向左關聯(lián)外,其余所有操作符均自左向右關聯(lián)。如表達式: A + B - C 等價于: (A + B ) - C /自左向右 而表達式: A ? B : C ? D : F 等價于: A ? B : (C ? D : F) /從右向左 通過使用圓擴號可以改變優(yōu)先級的順序,如下例: (A ? B : C) ? D : F /改變了條件操作符的優(yōu)先級,可編輯ppt,49,算術操作符有如下5種: (加法操作符) (減法操作符) * (乘法操作符) / (除法操作符) %(模
24、操作符,或稱求余操作符,兩側(cè)都應為整型數(shù)據(jù)),1算術操作符,可編輯ppt,50,注意: 整數(shù)除法將截斷所有小數(shù)部分,如7/4 結(jié)果為1; 模操作符將求出與第一個操作數(shù)符號相同的余數(shù),如7%4結(jié)果為3,而-7%4結(jié)果為-3; 如果算術操作符的操作數(shù)中出現(xiàn)x或z,那么整個算術操作的運算結(jié)果為x。例如:b10 x1 + b01111 的結(jié)果為不確定數(shù) bxxxxx。,可編輯ppt,51,進行算術操作時,表達式中操作數(shù)的長度可能不一致,這時運算結(jié)果的長度由最長的操作數(shù)決定。在賦值語句中,算術操作結(jié)果的長度由操作符左端的賦值目標長度決定。例如: reg 0:3 Arc, Bar, Crt; reg 0:
25、5 Frx; Arc = Bar + Crt; /長度由Bar,Crt和Arc長度決定,長度為4位 Frx = Bar + Crt; /長度由Frx的長度決定(Frx、Bat 和Crt 中的最長長度),長度為6位,(1)算術操作結(jié)果的長度,可編輯ppt,52,在第一個賦值中,加法操作的溢出部分被丟棄;而在第二個賦值中,任何溢出的位存儲在結(jié)果位Frx 1中。在較大的表達式中,中間結(jié)果的長度應取最大操作數(shù)的長度(賦值時此規(guī)則也包括左端賦值目標)。例如: wire 4:1 Box, Drt; wire 1:5 Cfg; wire 1:6 Peg; wire 1:8 Adt; . . . assign
26、 Adt = (Box + Cfg) + (Drt + Peg) ; /賦值語句,可編輯ppt,53,賦制語句表達式右端的操作數(shù)最長為6(Peg),但是表達式左端操作數(shù)的長度為8(Adt),所以所有的加操作都使用8位,所以Box與Cfg相加的結(jié)果和Drt與Peg相加結(jié)果的長度都是8位。,可編輯ppt,54,執(zhí)行算術操作和賦值時,要注意哪些操作數(shù)是無符號數(shù)、哪些操作數(shù)是有符號數(shù)。無符號數(shù)存儲在線網(wǎng)、一般寄存器和基數(shù)格式表示形式的整數(shù)中。有符號數(shù)存儲在整數(shù)寄存器和十進制形式的整數(shù)中。,(2)無符號數(shù)和有符號數(shù),可編輯ppt,55,例如: reg 0:5 Bar; integer Tab; . .
27、. Bar = -4d12; /*Bar是普通寄存器類型變量,只能存儲無符號數(shù),而右端表達式的值為 b110100(12的二進制補碼),因此在賦值后,Bar存儲十進制值52 */,可編輯ppt,56,在上面兩種情況下,位向量存儲內(nèi)容相同,但是在Bar中,位向量被視為無符號數(shù),而在Tab中,位向量被視為有符號數(shù)。 下面再給出幾組例子。 Bar = - 4d12/4; / Bar被賦于十進制值61(位向量為1111 01) Tab = - 4d12 /4; / Tab被賦于與十進制1073741821(位值為0011 . . . 11101) Bar = - 12/4 / Bar被賦予與第一個賦值
28、相同的值,是因為Bar只存儲無符號數(shù) Tab = - 12/4 / Bar被賦于十進制值3,可編輯ppt,57,Bar = 4 - 6; / Bar被賦于十進制值62(2的二進制補碼) Tab = 4 - 6; / Tab被賦于十進制值2(位向量為11111 0) Bar = -2 + (-4); / Bar被賦于十進制值58(位向量為111010) Tab = -2 + (-4); / Tab被賦于十進制值6(位向量為111010),可編輯ppt,58,關系操作符是對兩個操作數(shù)進行比較,如果比較結(jié)果為真則結(jié)果為1,如果比較結(jié)果為假則結(jié)果為0,關系操作符多用于條件判斷。 關系操作符有如下4種:
29、 (大于) =(不小于) =(不大于),2關系操作符,可編輯ppt,59,如果操作數(shù)中有x或z出現(xiàn),那么結(jié)果為x。例如: 23 45 /結(jié)果為假(0) 52= b01110 /結(jié)果為假(0) 操作時給左側(cè)操作數(shù)高位添0,等價于: b01000 = b01110 /結(jié)果為假(0),可編輯ppt,60,與關系操作符類似,相等操作符也是對兩個操作數(shù)進行比較,如果比較結(jié)果為假,則結(jié)果為0,否則結(jié)果為1。 相等操作符有如下4種: =(邏輯相等) !=(邏輯不等) =(全等) !=(非全等),3相等操作符,可編輯ppt,61,其中,“=”和“!=”是把兩個操作數(shù)的邏輯值做比較,由于操作數(shù)中某些位可能是x或
30、z,所以比較結(jié)果也有可能是x。 而 “=”和“!=”是按位進行比較,即便在兩個操作數(shù)中某些位出現(xiàn)了x或z,只要它們出現(xiàn)在相同的位,那么就認為二者是相同的,比較結(jié)果為1,否則為0,而不會出現(xiàn)結(jié)果為x的情況。,可編輯ppt,62,例如: Data = b11x0; Addr = b11x0; 那么: Data = Addr /為真,也就是說值為1,因為全等操作嚴格按位比較 Data = Addr /這是邏輯比較,操作數(shù)中出現(xiàn)了x,所以結(jié)果為x,可編輯ppt,63,如果操作符兩端操作數(shù)的長度不相等,長度較小的操作數(shù)在高位添0補位,例如: 2b10 = 4b0010 /結(jié)果為真(1) 與下面的表達式相
31、同: 4b0010 = 4b0010 /結(jié)果為真(1),可編輯ppt,64,邏輯操作符是對操作數(shù)做與、或、非運算,操作結(jié)果為0或1。邏輯操作符有3種: /Crd是邏輯0 Dgs = b1; /Dgs是邏輯1 那么: Crd /A_Bus不是0向量,被當作邏輯1 B_Bus = b0100; /B_Bus不是0向量,被當作邏輯1 那么: A_Bus | B_Bus /結(jié)果為1 A_Bus B = b0100; 那么: A | B /結(jié)果為0110 A B = b0100; 那么: |B /結(jié)果為1,因為B中有1 MyReg /結(jié)果為x,說明操作數(shù)MyReg中包含x,可編輯ppt,71,移位操作符
32、是把操作數(shù)向左或向右移位若干位。移位操作符有2種: (右移) 移位操作符有兩個操作數(shù),左側(cè)操作數(shù)是要被執(zhí)行移位的數(shù),右側(cè)操作數(shù)表示要移位的次數(shù)。完成移位之后,因為移位而在操作數(shù)左端(右移)或右端(左移)出現(xiàn)的空位添0。如果右側(cè)操作數(shù)的值為x或z,移位操作的結(jié)果為x。,7移位操作符,可編輯ppt,72,例如: reg 0:7 Qreg; /8位寄存器 . . . Qreg = 4b0111; /Oreg的值是0000_0111 那么: Qreg 2 /右移結(jié)果是8b0000_0001,因為右移而出現(xiàn)的左側(cè)空位補0,可編輯ppt,73,二進制數(shù)左移1位相當于乘以2,右移1位相當于除以2,所以建模時,可以使用移位操作符實現(xiàn)乘除。Verilog HDL中沒有指數(shù)操作符,而移位操作符可用于支持部分指數(shù)操作。比如要計算2的N次方的值,可以使用移位操作實現(xiàn),如下: 32b1 N /N必須小于32 另外,可以使用移位操作給2-4解碼器建模,如: wire 0:3 DecodeOut = 4b1 Address 0:1 ; Address0:1可取值0、1、2和3,與之相應,移位操作后DecodeOut就可以取值4b0001、4b0010、4b0100和4b1000,從而實現(xiàn)解碼器建模
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度新能源汽車充電樁設備采購合同協(xié)議書
- 2024婦女節(jié)活動中班(6篇)
- 2025年江西省高三語文2月統(tǒng)一調(diào)研聯(lián)考試卷附答案解析
- 河北省高職單招2024年數(shù)學真題仿真卷
- 2025年全球貿(mào)易合同樣式
- 2025年車載高壓空壓機組項目提案報告模范
- 2025年鐵礦石采選項目立項申請報告模范
- 2025年勞動力輸入安全保障協(xié)議
- 2025年上饒年終合同樣本
- 2025年中外著作權許可使用合同樣本
- 中央企業(yè)人工智能應用場景案例白皮書(2024年版)-中央企業(yè)人工智能協(xié)同創(chuàng)新平臺
- 《會務的組織和管理》課件
- 《倒虹吸管安全評價導則》
- 2025年中國濕度傳感器行業(yè)深度分析、投資前景、趨勢預測報告(智研咨詢)
- 人民調(diào)解知識課件
- 《儒林外史》(第13-30回)-初中整本書閱讀系列之《儒林外史》
- 污水處理中的應急預案與處置措施考核試卷
- 甘肅省蘭州市蘭煉一中2025屆數(shù)學高一上期末統(tǒng)考試題含解析
- 期末試卷(試題)-2024-2025學年三年級上冊數(shù)學冀教版
- “小學英語對話教學”研究課題方案
- 城市地下管網(wǎng)建設工程投標書(范文)
評論
0/150
提交評論