版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第1010章章 Verilog操作符操作符學(xué)習(xí)內(nèi)容:學(xué)習(xí)內(nèi)容:熟悉熟悉Verilog語言的操作符語言的操作符操作符類型操作符類型下表以優(yōu)先級(jí)順序列出了下表以優(yōu)先級(jí)順序列出了Verilog操作符。注意操作符。注意“與與”操作符的優(yōu)先級(jí)總是比相同操作符的優(yōu)先級(jí)總是比相同類型的類型的“或或”操作符高。本章將對(duì)每個(gè)操作符用一個(gè)例子作出解釋。操作符高。本章將對(duì)每個(gè)操作符用一個(gè)例子作出解釋。 操作符類型操作符類型符號(hào)符號(hào)連接及復(fù)制操作符一元操作符算術(shù)操作符邏輯移位操作符關(guān)系操作符相等操作符按位操作符邏輯操作符條件操作符 ! & | * / %+ - = = = = = = != != =& | &|?:
2、最高最高最低最低優(yōu)先級(jí)優(yōu)先級(jí)Verilog中的大小中的大小(size)與符號(hào)與符號(hào)Verilog根據(jù)表達(dá)式中變量的長度對(duì)表達(dá)式的值自動(dòng)地進(jìn)行調(diào)整。根據(jù)表達(dá)式中變量的長度對(duì)表達(dá)式的值自動(dòng)地進(jìn)行調(diào)整。Verilog自動(dòng)截?cái)嗷驍U(kuò)展賦值語句中右邊的值以適應(yīng)左邊變量的長度。自動(dòng)截?cái)嗷驍U(kuò)展賦值語句中右邊的值以適應(yīng)左邊變量的長度。當(dāng)一個(gè)負(fù)數(shù)賦值給無符號(hào)變量如當(dāng)一個(gè)負(fù)數(shù)賦值給無符號(hào)變量如reg時(shí),時(shí),Verilog自動(dòng)完成二進(jìn)制補(bǔ)碼計(jì)算自動(dòng)完成二進(jìn)制補(bǔ)碼計(jì)算module sign_size; reg 3:0 a, b; reg 15:0 c; initial begin a = -1; / a是無符號(hào)數(shù),因此
3、是無符號(hào)數(shù),因此其值為其值為1111 b = 8; c= 8; / b = c = 1000 #10 b = b + a; / 結(jié)果結(jié)果10111截?cái)嘟財(cái)? b = 0111 #10 c = c + a; / c = 10111 endendmodule算術(shù)操作符算術(shù)操作符module arithops (); parameter five = 5; integer ans, int; reg 3: 0 rega, regb; reg 3: 0 num; initial begin rega = 3; regb = 4b1010; int = -3; /int = 11111111_1101
4、end initial fork #10 ans = five * int; / ans = -15 #20 ans = (int + 5)/ 2; / ans = 1 #30 ans = five/ int; / ans = -1 #40 num = rega + regb; / num = 1101 #50 num = rega + 1; / num = 0100 #60 num = int; / num = 1101 #70 num = regb % rega; / num = 1 #80 $finish;joinendmodule+加加-減減*乘乘除除%模模 將負(fù)數(shù)賦值給將負(fù)數(shù)賦值給r
5、eg或其它無符號(hào)變量或其它無符號(hào)變量使用使用2的補(bǔ)碼算術(shù)。的補(bǔ)碼算術(shù)。 如果操作數(shù)的某一位是如果操作數(shù)的某一位是x或或z,則結(jié),則結(jié)果為果為x 在整數(shù)除法中,余數(shù)舍棄在整數(shù)除法中,余數(shù)舍棄 模運(yùn)算中使用第一個(gè)操作數(shù)的符號(hào)模運(yùn)算中使用第一個(gè)操作數(shù)的符號(hào)注意integer和reg類型在算術(shù)運(yùn)算時(shí)的差別。integer是有符號(hào)數(shù),而reg是無符號(hào)數(shù)。按位操作符按位操作符module bitwise (); reg 3: 0 rega, regb, regc; reg 3: 0 num; initial begin rega = 4b1001; regb = 4b1010; regc = 4b11x0
6、; end initial fork #10 num = rega & 0; / num = 0000 #20 num = rega & regb; / num = 1000 #30 num = rega | regb; / num = 1011 #40 num = regb & regc; / num = 10 x0 #50 num = regb | regc; / num = 1110 #60 $finish; joinendmodulenot&and|orxor xnor xnor 按位操作符對(duì)矢量中相對(duì)應(yīng)位運(yùn)算。按位操作符對(duì)矢量中相對(duì)應(yīng)位運(yùn)算。 regb = 4b1 0 1 0 reg
7、c = 4b1 x 1 0num = regb & regc = 1 0 1 0 ; 位值為位值為x時(shí)不一定產(chǎn)生時(shí)不一定產(chǎn)生x結(jié)果。如結(jié)果。如#50時(shí)時(shí)的的or計(jì)算。計(jì)算。當(dāng)兩個(gè)操作數(shù)位數(shù)不同時(shí),位數(shù)少的操作數(shù)零擴(kuò)展到相同位數(shù)。a = 4b1011;b = 8b01010011;c = a | b; / a零擴(kuò)展為零擴(kuò)展為 8b00001011邏輯操作符邏輯操作符module logical (); parameter five = 5; reg ans; reg 3: 0 rega, regb, regc; initial begin rega = 4b0011; /邏輯值邏輯值為為“1”
8、regb = 4b10 xz; /邏輯值為邏輯值為“1” regc = 4b0z0 x; /邏輯值為邏輯值為“x” end initial fork #10 ans = rega & 0; / ans = 0 #20 ans = rega | 0; / ans = 1 #30 ans = rega & five; / ans = 1 #40 ans = regb & rega; / ans = 1 #50 ans = regc | 0; / ans = x #60 $finish; joinendmodule!not&and|or 邏輯操作符的結(jié)果為一位邏輯操作符的結(jié)果為一位1,0或或x。邏輯
9、操作符只對(duì)邏輯值運(yùn)算。邏輯操作符只對(duì)邏輯值運(yùn)算。如操作數(shù)為全如操作數(shù)為全0,則其邏輯值為,則其邏輯值為false如操作數(shù)有一位為如操作數(shù)有一位為1,則其邏輯值為,則其邏輯值為true若操作數(shù)若操作數(shù)只只包含包含0、x、z,則邏輯值為,則邏輯值為x邏輯反操作符將操作數(shù)的邏輯值取邏輯反操作符將操作數(shù)的邏輯值取反。例如,若操作數(shù)為全反。例如,若操作數(shù)為全0,則其邏,則其邏輯值為輯值為0,邏輯反操作值為,邏輯反操作值為1。邏輯反與位反的對(duì)比邏輯反與位反的對(duì)比module negation(); reg 3: 0 rega, regb; reg 3: 0 bit; reg log; initial be
10、gin rega = 4b1011; regb = 4b0000; end initial fork #10 bit = rega; / num = 0100 #20 bit = regb; / num = 1111 #30 log = !rega; / num = 0 #40 log = !regb; / num = 1 #50 $finish; joinendmodule! logical not 邏輯反邏輯反 bit-wise not 位反位反 邏輯反的結(jié)果為一位邏輯反的結(jié)果為一位1,0或或x。位反的結(jié)果與操作數(shù)的位數(shù)相同位反的結(jié)果與操作數(shù)的位數(shù)相同邏輯反操作符將操作數(shù)的邏輯值取邏輯反操
11、作符將操作數(shù)的邏輯值取反。例如,若操作數(shù)為全反。例如,若操作數(shù)為全0,則其邏,則其邏輯值為輯值為0,邏輯反操作值為,邏輯反操作值為1。一元?dú)w約操作符一元?dú)w約操作符module reduction(); reg val; reg 3: 0 rega, regb; initial begin rega = 4b0100; regb = 4b1111; end initial fork #10 val = & rega ; / val = 0 #20 val = | rega ; / val = 1 #30 val = & regb ; / val = 1 #40 val = | regb ; /
12、val = 1 #50 val = rega ; / val = 1 #60 val = regb ; / val = 0 #70 val = | rega; / (nor) val = 0 #80 val = & rega; / (nand) val = 1 #90 val = rega & ®b; / val = 1 $finish; joinendmodule&and|orxor xnor xnor 歸約操作符的操作數(shù)只有一個(gè)。歸約操作符的操作數(shù)只有一個(gè)。對(duì)操作數(shù)的所有位進(jìn)行位操作。對(duì)操作數(shù)的所有位進(jìn)行位操作。結(jié)果只有一位,可以是結(jié)果只有一位,可以是0, 1, X。移位操作符移位操
13、作符module shift (); reg 9: 0 num, num1; reg 7: 0 rega, regb; initial rega = 8b00001100; initial fork #10 num = rega 5 ; / num = 01_1000_0000 #10 regb = rega 5 ; / regb = 1000_0000 #20 num 3; / num = 00_0000_0001 #20 regb 3 ; / regb = 0000_0001 #30 num = 10b11_1111_0000; #40 rega = num 2; /rega = 1100
14、_0000 #40 num1 = num 2;/num1=11_1100_0000 #50 rega 2; /rega = 1111_1100 #50 num1 2;/num1=00_1111_1100 #60 $finish; joinendmodule邏輯右移邏輯左移 移位操作符對(duì)其左邊的操作數(shù)進(jìn)行移位操作符對(duì)其左邊的操作數(shù)進(jìn)行向左或向右的位移位操作。向左或向右的位移位操作。第二個(gè)操作數(shù)(移位位數(shù))是無符第二個(gè)操作數(shù)(移位位數(shù))是無符號(hào)數(shù)號(hào)數(shù)若第二個(gè)操作數(shù)是若第二個(gè)操作數(shù)是x或或z則結(jié)果為則結(jié)果為x在賦值語句中,如果右邊在賦值語句中,如果右邊(RHS)的結(jié)果的結(jié)果:位寬大于左邊,則把最高位
15、截去位寬大于左邊,則把最高位截去位寬小于左邊,則零擴(kuò)展位寬小于左邊,則零擴(kuò)展 將左邊的操作數(shù)右移右邊操將左邊的操作數(shù)右移右邊操作數(shù)指定的位數(shù)作數(shù)指定的位數(shù)左移先補(bǔ)后移左移先補(bǔ)后移右移先移后補(bǔ)右移先移后補(bǔ)建議:表達(dá)式左右位數(shù)一致建議:表達(dá)式左右位數(shù)一致關(guān)系操作符關(guān)系操作符module relationals (); reg 3: 0 rega, regb, regc; reg val; initial begin rega = 4b0011; regb = 4b1010; regc = 4b0 x10; end initial fork #10 val = regc rega ; / val =
16、 x #20 val = regb = rega ; / val = 1 #40 val = regb regc ; / val = 1 #50 $finish; joinendmodule大于=大于等于大于等于regcrega和和regc的的關(guān)系取決于關(guān)系取決于x相等操作符相等操作符 賦值操作符,將等式右邊表達(dá)式的值拷貝到左邊。賦值操作符,將等式右邊表達(dá)式的值拷貝到左邊。注意邏輯等與注意邏輯等與case等的差別等的差別= 邏輯等邏輯等= = =01xz010 xx101xxxxxxxzxxxx case等等= = = =01xz0100010100 x0010z00012b1x=2b0 x
17、值為值為0,因?yàn)椴幌嗟?,因?yàn)椴幌嗟?b1x=2b1x 值為值為x,因?yàn)榭赡懿?,因?yàn)榭赡懿幌嗟?,也可能相等相等,也可能相?b1x=2b0 x 值為值為0,因?yàn)椴幌嗤?,因?yàn)椴幌嗤?b1x=2b1x 值為值為1,因?yàn)橄嗤?,因?yàn)橄嗤琣 = 2b1x;b = 2b1x;if (a = b) $display( a is equal to b);else $display( a is not equal to b);a = 2b1x;b = 2b1x;if (a = b) $display( a is identical to b);else $display( a is not identical t
18、o b);Case等只能用于行為描述,不能用于RTL描述。相等操作符相等操作符 邏輯等邏輯等 邏輯不等邏輯不等=! =module equalities1(); reg 3: 0 rega, regb, regc; reg val; initial begin rega = 4b0011; regb = 4b1010; regc = 4b1x10; end initial fork #10 val = rega = regb ; / val = 0 #20 val = rega != regc; / val = 1 #30 val = regb != regc; / val = x #40 v
19、al = regc = regc; / val = x #50 $finish; joinendmodule 其結(jié)果是其結(jié)果是1b1、1b0或或1bx。 如果左邊及右邊為確定值并且如果左邊及右邊為確定值并且相等,則結(jié)果為相等,則結(jié)果為1。 如果左邊及右邊為確定值并且如果左邊及右邊為確定值并且不相等,則結(jié)果為不相等,則結(jié)果為0。 如果左邊及右邊有值不能確定如果左邊及右邊有值不能確定的位,但值確定的位相等,則結(jié)的位,但值確定的位相等,則結(jié)果為果為x。!=的結(jié)果與的結(jié)果與= =相反相反值確定是指所有的位為值確定是指所有的位為0或或1。不確定值是有值為不確定值是有值為x或或z的位。的位。相等操作符相等
20、操作符 相同相同(case等等) 不相同不相同(case不等不等)=! =module equalities2(); reg 3: 0 rega, regb, regc; reg val; initial begin rega = 4b0011; regb = 4b1010; regc = 4b1x10; end initial fork #10 val = rega = regb ; / val = 0 #20 val = rega != regc; / val = 1 #30 val = regb = regc; / val = 0 #40 val = regc = regc; / val
21、 = 1 #50 $finish; joinendmodule 其結(jié)果是其結(jié)果是1b1、1b0或或1bx。 如果左邊及右邊的值相同(包如果左邊及右邊的值相同(包括括x、z),則結(jié)果為,則結(jié)果為1。如果左邊及右邊的值不相同,如果左邊及右邊的值不相同,則結(jié)果為則結(jié)果為0。!=的結(jié)果與的結(jié)果與 = 相反相反綜合工具不支持綜合工具不支持條件操作符條件操作符 條件條件?:module likebufif( in, en, out); input in; input en; output out; assign out = (en = 1) ? in : bz;endmodulemodule like4t
22、o1( a, b, c, d, sel, out); input a, b, c, d; input 1: 0 sel; output out; assign out = sel = 2b00 ? a : sel = 2b01 ? b : sel = 2b10 ? c : d;endmodule如果條件值為如果條件值為x或或z,則結(jié)果可能為,則結(jié)果可能為x或或z條件操作符條件操作符條件操作符的語法為:條件操作符的語法為: = ? :registger = condition ? true_value:false_value;其意思是:其意思是:if condition is TRUE, the
23、n LHS=true_expression, else LHS = false_expression每個(gè)條件操作符必須有三個(gè)參數(shù),缺少任何一個(gè)都會(huì)產(chǎn)生錯(cuò)誤。每個(gè)條件操作符必須有三個(gè)參數(shù),缺少任何一個(gè)都會(huì)產(chǎn)生錯(cuò)誤。最后一個(gè)操作數(shù)作為缺省值。最后一個(gè)操作數(shù)作為缺省值。上式中,若上式中,若condition為真則為真則register等于等于true_value;若;若condition為假則為假則register等等于于false_value。一個(gè)很有意思的地方是,如果條件值不確定,且。一個(gè)很有意思的地方是,如果條件值不確定,且true_value和和false_value不相等,則輸出不確定值。
24、不相等,則輸出不確定值。例如:例如:assign out = (sel = 0) ? a : b;若若sel為為0則則out =a;若;若sel為為1則則out = b。如果。如果sel為為x或或z,若,若a = b =0,則,則out = 0;若;若ab,則,則out值不確定。值不確定。級(jí)聯(lián)操作符級(jí)聯(lián)操作符 級(jí)聯(lián)級(jí)聯(lián) 可以從不同的矢量中選擇位并用可以從不同的矢量中選擇位并用它們組成一個(gè)新的矢量。它們組成一個(gè)新的矢量。用于位的重組和矢量構(gòu)造用于位的重組和矢量構(gòu)造module concatenation; reg 7: 0 rega, regb, regc, regd; reg 7: 0 new
25、; initial begin rega = 8b0000_0011; regb = 8b0000_0100; regc = 8b0001_1000; regd = 8b1110_0000; end initial fork #10 new = regc 4: 3, regd 7: 5, regb 2, rega 1: 0; / new = 8b11111111 #20 $finish; joinendmodule在級(jí)聯(lián)和復(fù)制時(shí),必須指定位數(shù),在級(jí)聯(lián)和復(fù)制時(shí),必須指定位數(shù),否則將產(chǎn)生錯(cuò)誤。否則將產(chǎn)生錯(cuò)誤。下面是類似錯(cuò)誤的例子:下面是類似錯(cuò)誤的例子: a7:0 = 4 b10; b7:0 = 2 5; c3:0 = 3 b011, b0;級(jí)聯(lián)時(shí)不限定操作數(shù)的數(shù)目。在級(jí)聯(lián)時(shí)不限定操作數(shù)的數(shù)目。在操作符符號(hào)操作符符號(hào) 中,用逗號(hào)將操中,用逗號(hào)將操作數(shù)分開。例如作數(shù)分開。例如: A, B, C, D復(fù)制復(fù)制 復(fù)制復(fù)制 復(fù)制一個(gè)變量或在復(fù)制一個(gè)變量或在
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版環(huán)保技術(shù)轉(zhuǎn)移與轉(zhuǎn)化合作協(xié)議4篇
- 2025航空貨運(yùn)保險(xiǎn)及全球理賠服務(wù)合同3篇
- 二零二五年度城市綜合體物業(yè)管理合同
- 二零二五年度高端智能設(shè)備采購合同范本4篇
- 二零二五年度城市更新項(xiàng)目舊廠房改造租賃合同3篇
- 2025年物流倉儲(chǔ)中心委托經(jīng)營與服務(wù)協(xié)議3篇
- 2025版萬科地產(chǎn)商鋪買賣合同規(guī)范范本3篇
- 2025年度體育培訓(xùn)機(jī)構(gòu)教練聘用合同模板4篇
- 2025年度出租車企業(yè)資產(chǎn)重組與股權(quán)轉(zhuǎn)讓協(xié)議3篇
- 二零二五年度外墻仿石漆項(xiàng)目融資與投資合同3篇
- 國家中醫(yī)藥管理局發(fā)布的406種中醫(yī)優(yōu)勢(shì)病種診療方案和臨床路徑目錄
- 2024年全國甲卷高考化學(xué)試卷(真題+答案)
- 汽車修理廠管理方案
- 人教版小學(xué)數(shù)學(xué)一年級(jí)上冊(cè)小學(xué)生口算天天練
- (正式版)JBT 5300-2024 工業(yè)用閥門材料 選用指南
- 三年級(jí)數(shù)學(xué)添括號(hào)去括號(hào)加減簡(jiǎn)便計(jì)算練習(xí)400道及答案
- 蘇教版五年級(jí)上冊(cè)數(shù)學(xué)簡(jiǎn)便計(jì)算300題及答案
- 澳洲牛肉行業(yè)分析
- 老客戶的開發(fā)與技巧課件
- 計(jì)算機(jī)江蘇對(duì)口單招文化綜合理論試卷
- 成人學(xué)士學(xué)位英語單詞(史上全面)
評(píng)論
0/150
提交評(píng)論