版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 數(shù)據(jù)流建模 內(nèi)容:v連續(xù)賦值語(yǔ)句(assign)v表達(dá)式與操作數(shù)v運(yùn)算符v數(shù)據(jù)流建模v賦值延時(shí)與線網(wǎng)延時(shí)v舉例數(shù)據(jù)流建模模塊定義module(port list)時(shí)序特性timig specifications端口說(shuō)明port declarations輸入input雙向inout輸出output數(shù)據(jù)類(lèi)型說(shuō)明data type declarations線網(wǎng)類(lèi)型net參數(shù)parameter寄存器類(lèi)型register電路功能描述電路功能描述circuit functionality子程序subprograms任務(wù)task函數(shù)function系統(tǒng)任務(wù)和函數(shù)system task& funct
2、ion編譯指令compiler directives連續(xù)賦值連續(xù)賦值continuousassignment賦值語(yǔ)句賦值語(yǔ)句assign過(guò)程塊proceduralblocks過(guò)程塊語(yǔ)句initial blockalways block模塊實(shí)例模塊實(shí)例instantiation連續(xù)賦值語(yǔ)句(assign)v連續(xù)賦值語(yǔ)句將值賦給線網(wǎng)信號(hào)線網(wǎng)信號(hào)(連續(xù)賦值不能為寄存器信號(hào)賦值),它的格式如下(簡(jiǎn)單形式): assign net_value = expression(表達(dá)式);v例:wire 3:0 z, preset, clear; / 線網(wǎng)說(shuō)明 assign z = preset & cl
3、ear ; /連續(xù)賦值語(yǔ)句v連續(xù)賦值的簡(jiǎn)化形式: assign mux = (s = = 0)? a : bz, mux = (s = = 1)? b : bz, = mux = (s = = 2)? c : bz, mux = (s = = 3)? d : bz;assign mux = (s = = 0)? a : bz;assign mux = (s = = 1)? b : bz; assign mux = (s = = 2)? c : bz;assign mux = (s = = 3)? d : bz;四個(gè)語(yǔ)句并行執(zhí)行表達(dá)式與操作數(shù)v 表達(dá)式由操作數(shù)和運(yùn)算符組成。v 操作數(shù)可以是以下類(lèi)
4、型中的一種: 1) 常數(shù): 35,4b10_11, 8h0a; 2) 參數(shù): parameter load = 4d12 ; 3) 線網(wǎng)信號(hào)(變量): wire clk; 4) 寄存器信號(hào)(變量) :reg 3:0 state; 5) 位選擇信號(hào)(變量) : state2; 6) 部分選擇信號(hào)(變量) :state2:1; 7) 存儲(chǔ)器單元信號(hào)(變量) :reg 7:0 mem255:0; 8) 函數(shù)調(diào)用值: $time;運(yùn)算符 運(yùn)算符分類(lèi)運(yùn)算符分類(lèi)所含運(yùn)算符所含運(yùn)算符算術(shù)運(yùn)算符算術(shù)運(yùn)算符+,-,*,/,%,*位運(yùn)算符位運(yùn)算符,&,|,()縮位運(yùn)算符縮位運(yùn)算符&,&,|
5、,|,()邏輯運(yùn)算符邏輯運(yùn)算符!,&,|關(guān)系運(yùn)算符關(guān)系運(yùn)算符,=相等與全等運(yùn)算符相等與全等運(yùn)算符=,!=,=,!=邏輯移位運(yùn)算符邏輯移位運(yùn)算符連接與復(fù)制運(yùn)算符連接與復(fù)制運(yùn)算符 條件運(yùn)算符條件運(yùn)算符? :運(yùn)算符優(yōu)先級(jí) 符號(hào)優(yōu)先級(jí)別單目運(yùn)算乘、除、取模+ - ! * / %最高加、減移位+ -關(guān)系等價(jià) =,!=,=,!=縮減邏輯& & | |& |條件運(yùn)算符? :最低算術(shù)運(yùn)算符v+,- :一元或二元加、減。 一元加、減:+5, -4。用于表示操作數(shù)正負(fù)。 二元加、減:a+b; 3+2; 6-1;v無(wú)符號(hào)數(shù)加減: wire、reg信號(hào)和基數(shù)格式的整數(shù)是無(wú)符號(hào)數(shù)。例:w
6、ire 4:0 a,b,sum,sub; assign a=4b1001; assign b=4b0100; assign sum=a+b; / 和sum=4b1101; assign sub=a-b; / 差sub=4b0101;算術(shù)運(yùn)算符v有符號(hào)數(shù)加減: integer、real變量和十進(jìn)制整數(shù)、實(shí)數(shù)是有符號(hào)數(shù)。例 integer a,b,sum,sub; real d1,d; reg 5:0 bar; initial begin a=10; b=-3; d1=3.5; sum= a+b; / sum=7 sub= a-b; / sub=13 d= d1-2.3; / d=1.2 bar=
7、 -4d12; / bar=6b110100。-12的補(bǔ)碼 end算術(shù)運(yùn)算符v *, / , % , * 乘、除、取模和乘方運(yùn)算與c語(yǔ)言相似,但 / , % , *運(yùn)算只能用于仿真,目前還不能用于電路設(shè)計(jì)。v :取模運(yùn)算結(jié)果為余數(shù),結(jié)果符號(hào)與第一運(yùn)算符保持一致。 例:103,結(jié)果為1; 103,結(jié)果為1v 例:integer a,b,sum,sub; real d1,d,m; reg 5:0 bar; initial begin a=10; b=-3; d1=3.5; sum= a*b; / sum=-30 sub= a/b; / 結(jié)果取整,sub=-3 d= d1*2.3; / d=8.05
8、 bar= d/2; / 4.025取整; bar=6b000100。 m= d1*2; / m=12.25 end算術(shù)運(yùn)算符v運(yùn)算符中有不定態(tài),則一般結(jié)果也為不定。 例: assign sum = 4b101x +4b1010; 計(jì)算結(jié)果為 sum = 4bxxxxv算術(shù)表達(dá)式結(jié)果的長(zhǎng)度由最長(zhǎng)的操作數(shù)決定。 例:例:reg 3:0 arc, bar4b1000, crt=4b1100; reg 5:0 frx; arc = bar + crt; /arc=4b0100, 結(jié)果的長(zhǎng)度為4位,溢出丟棄 frx = bar + crt; / frx=6b010100, 結(jié)果的長(zhǎng)度為6位,溢出存 /
9、 在frx4位運(yùn)算符v按操作數(shù)的對(duì)應(yīng)位運(yùn)算。 :按位取反運(yùn)算。例:4b1010 - 4b0101 & :按位與運(yùn)算。 例: 3b110 & 3b10 x - 3b100 | :按位或運(yùn)算。 例: 3b110 | 3b10 x - 3b11x :按位異或運(yùn)算。例: 3b110 3b10 x - 3b01x :按位異或非。例: 3b110 3b10 x - 3b10 xv 二個(gè)操作數(shù)不等長(zhǎng)時(shí),運(yùn)算結(jié)果按長(zhǎng)操作數(shù)補(bǔ)0或x。 例: 4b0110 | 3b10 x - 4b011x縮位(歸約)運(yùn)算符v單目運(yùn)算符。對(duì)操作數(shù)逐位運(yùn)算,運(yùn)算結(jié)果是一位邏輯。v運(yùn)算符:與(&),或(|),
10、異或(),及其非操作&, |, ,運(yùn)算規(guī)則同位運(yùn)算符v例: a=4b0110; &a等效于(0 & 1 & 1 & 0) &a = 0 ; &a = 1 |a = 1 ; |a = 0 a = 0 ; a = 1邏輯運(yùn)算符v表示邏輯關(guān)系的:“真”(1)與“假”(0)。v &:邏輯與。v |: 邏輯或。v ?。哼壿嫹恰若操作數(shù)不為0,是邏輯真或邏輯1;若操作數(shù)為0,則是邏輯假或邏輯0。v如果任意一個(gè)操作數(shù)包含x x,結(jié)果也為x x。v 注意區(qū)別: a&b 和 a&b 。(a、b為1bit數(shù)時(shí)等效,其它情況運(yùn)算結(jié)果可
11、能不同)關(guān)系運(yùn)算符v比較兩個(gè)操作數(shù)的大小關(guān)系。v結(jié)果是一位的邏輯值,邏輯值1表示關(guān)系成立,邏輯值0表示關(guān)系不成立。v :大于。v=:大于等于。v如果任意一個(gè)操作數(shù)包含x x,結(jié)果也為x x。相等與全等運(yùn)算符v 逐位比較兩個(gè)操作數(shù)。 v :相等運(yùn)算符。每一位的確定值(0或1)都相等時(shí),關(guān)系為真(1),否則為假(0)。只要中間存在高阻態(tài)(z)或不定態(tài)(x),則關(guān)系為不定(x)。v != : 不等運(yùn)算符。與相等運(yùn)算相反v :全等運(yùn)算符。 把不定態(tài)(x)和高阻態(tài)(z)看作邏輯狀態(tài)進(jìn)行比較, 比較結(jié)果不存在不定態(tài),一定是1或0。v !=:不全等運(yùn)算符,與全等運(yùn)算符相反。v 例:a=b=4b0100, c
12、=d=4b10 x0,則: a=b 為1 ; a=b 為1 ;c=d為x; c=d為1邏輯移位運(yùn)算符v : 邏輯左移、邏輯右移v 邏輯移位運(yùn)算后,空出部分均用0填充。v : 算術(shù)左移、算術(shù)右移v 算術(shù)右移運(yùn)算后,空出部分填充1。v 例: 邏輯左移: (8b1101_1001 8b01_1001_00 邏輯右移: (8b1101_10012) - 8b00_1101_10 算術(shù)左移: (-10 -20; 6b110110-6b101100 算術(shù)右移: (-31) - -2; 3b101-3b110連接與復(fù)制運(yùn)算符v連接運(yùn)算是將多組信號(hào)用大括號(hào)括起來(lái),拼接成一組新信號(hào)。v例: a=1b1; b=4
13、hf; c=3d4; a,b,c,3b101 - 11b1_1111_100_101v復(fù)制運(yùn)算是重復(fù)信號(hào)的拼接方法,例: a,3b,2c,d -a,b,b,b,c,d,c,d條件運(yùn)算符vverilog hdl中唯一的三目運(yùn)算符。v表達(dá)式: ?:v 例: assign tri_bus=(drv_enble) ? data : 16hzzzz;v若條件表達(dá)式為不定態(tài),則結(jié)果為后兩個(gè)表達(dá)式的按位操作結(jié)果。按位操作的值: 相同不變,其余情況為x x。 例 (x) ? 3b010 : 3b011 - 3b01x數(shù)據(jù)流建模v 結(jié)構(gòu)建模主要用于模塊間的互連和少量邏輯門(mén)的電路描述。v 復(fù)雜電路常用行為描述建模
14、。行為建模重點(diǎn)關(guān)注模塊的輸入、輸出的功能(行為)描述,對(duì)具體的實(shí)現(xiàn)電路細(xì)節(jié)不去過(guò)多關(guān)注,用于仿真或留待綜合工具處理。v數(shù)據(jù)流建模是基于數(shù)據(jù)在寄存器間的流動(dòng)和處理的思想來(lái)描述電路。v連續(xù)賦值語(yǔ)句用于數(shù)據(jù)流行為建模主要描述組合邏輯電路。組合邏輯行為描述組合邏輯行為描述寄存器寄存器數(shù)據(jù)流方式描述一位全加器v 一位全加器: module fa _ df (a, b, cin, sum, cout ) ; input a, b, cin; output sum, cout ; assign sum = a b cin; assign cout = (a & cin) | (b & cin
15、) | (a & b) ; endmodulev 兩個(gè)連續(xù)賦值語(yǔ)句是并發(fā)執(zhí)行的,與其書(shū)寫(xiě)的順序無(wú)關(guān)。v 只要連續(xù)賦值語(yǔ)句右端表達(dá)式中操作數(shù)的值變化(即有事件發(fā)生), 連續(xù)賦值語(yǔ)句即被執(zhí)行。v 例如,a變化,則兩個(gè)連續(xù)賦值都被計(jì)算,即同時(shí)對(duì)右端表達(dá)式求值,并將結(jié)果賦給左端目標(biāo)。數(shù)據(jù)流方式描述4選1多路選擇器module mux4x1 (z , d0 , d1 , d2 , d3 , s0 , s1) ; output z; /端口說(shuō)明 input d0 , d1 , d2 , d3 , s0 , s1; /端口說(shuō)明 assign z = ( s1 = =1b0 ) ? ( (s0 = =
16、1b1 ) ? d1 : d0 ) : ( (s0 = =1b1 ) ? d3 : d2 ) ;endmodule s1 s0 z 0 0d0 0 1d1 1 0d2 1 1d3真值表:數(shù)據(jù)流方式描述4位全加器 module fulladd4( sum, c_out, a, b, c_in); input 3:0 a, b; input c_int; output 3:0 sum; output c_out; assign c_out,sum= a + b + c_in;/ 左端用連接運(yùn)算符 endmodule例:1 0 0 1 a 0 1 1 0 b + 1 c_in 1 0 0 0 0線網(wǎng)
17、說(shuō)明賦值v連續(xù)賦值可作為線網(wǎng)說(shuō)明本身的一部分。這樣的賦值被稱(chēng)為線網(wǎng)說(shuō)明賦值。例如: wire 3:0 sum = 4b0; wire clear = b1; wire a_gt_b = a b, b_gt_a= b a;v線網(wǎng)說(shuō)明賦值與連續(xù)賦值等效: wire clear ; assign clear = b1;賦值延時(shí)與線網(wǎng)延時(shí)v 如果在連續(xù)賦值語(yǔ)句中沒(méi)有定義延時(shí),如前面的例子,則右端表達(dá)式的值立即賦給左端表達(dá)式, 延時(shí)為。v 帶延時(shí)定義的連續(xù)賦值語(yǔ)句格式: assign #delay net_value = expression;例:assign #6 ask = quiet | late
18、;/規(guī)定右邊表達(dá)式結(jié)果的計(jì)算到其賦給左邊目標(biāo)需經(jīng)過(guò)6個(gè)時(shí)間單位延時(shí)。賦值延時(shí)v如果右端在傳輸給左端之前變化,會(huì)發(fā)生什么呢? 例:assign #4 cab = drm;v 慣性時(shí)延行為:右端值變化在能夠傳播到左端前必須至少保持延時(shí)間隔;如果在延時(shí)間隔內(nèi)右端值變化,則前面的值不能傳輸?shù)捷敵觥Yx值延時(shí)v 對(duì)于每個(gè)時(shí)延定義,總共能夠指定三類(lèi)時(shí)延值:1) 上升時(shí)延2) 下降時(shí)延3) 關(guān)閉時(shí)延v 這三類(lèi)時(shí)延的語(yǔ)法如下:assign # (rise, fall, turn-off) net_value = expression;v 三類(lèi)時(shí)延的實(shí)例:assign #4 ask = quiet | late;
19、 / one delay value.assign # (4,8) ask = quick ; / two delay values.assign # (4,8,6) arb = & databus; / three delay values.assign bus = memaddr7:4; / no delay value.線網(wǎng)延時(shí)v 延時(shí)也可以在線網(wǎng)說(shuō)明中定義,稱(chēng)線網(wǎng)延時(shí),如:wire #5 arb;/定義線網(wǎng)arb帶5個(gè)單位延時(shí)v 帶線網(wǎng)延時(shí)的賦值語(yǔ)句:assign #2 arb = bod & cap;v 賦值語(yǔ)句應(yīng)在2個(gè)時(shí)間單位后賦值給arb,即時(shí)刻12。但是因?yàn)槎x
20、了線網(wǎng)延時(shí),實(shí)際對(duì)arb的賦值發(fā)生在時(shí)刻17(=10+2+5)。例:帶參數(shù)定義的數(shù)值比較器數(shù)據(jù)流建模module comparator( a, b, agtb, aeqb, altb );parameter bus = 7;parameter eq_delay = 4, lt_delay = 8, gt_delay = 6;input bus:0 a, b;output agtb, aeqb, altb;assign #eq_delay aeqb = (a = b);assign #gt_delay agtb = (a b);assign #lt_delay altb= (a b 0 1 0a
21、b 0 0 1真值表:數(shù)值比較器仿真驗(yàn)證module test_comparator;reg 3:0 a, b;wire agb, aeb, alb;comparator #(.bus(3) test_u( .a(a), .b(b), .agtb(agb), .aeqb(aeb), .altb(alb) );initial /輸入激勵(lì)信號(hào)begin a=0; b=0; #20 a=4d0; b=4d0; #20 a=4d0; b=4d15; #20 a=4d15; b=4d15; #20 a=4d15; b=4d0; #20 a=4d10; b=4d5; #20 a=4d10; b=4d10; #20 a=4d5; b=4d10; #20 a=4d5; b=4d5;endendmodule測(cè)試激勵(lì)信號(hào)(test_comparator.v)被測(cè)模塊(comparator.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版家居裝修項(xiàng)目審計(jì)保密合同2篇
- 2025年桶裝水品牌形象設(shè)計(jì)與廣告宣傳合同3篇
- 2025年度鋁合金門(mén)窗智能制造生產(chǎn)線合作合同4篇
- 2025年健身體驗(yàn)課程合同
- 2025年海釣團(tuán)體船只租賃協(xié)議
- 2025年健康食品配送合同
- 2025年度馬鈴薯種植與農(nóng)業(yè)科技園區(qū)合作開(kāi)發(fā)合同3篇
- 2025年地下車(chē)庫(kù)通風(fēng)與照明系統(tǒng)協(xié)議
- 2025年押證不押車(chē)汽車(chē)抵押貸款擔(dān)保服務(wù)協(xié)議3篇
- 2025年度琉璃工藝品品牌授權(quán)與加盟連鎖經(jīng)營(yíng)合同3篇
- 輸電線路基礎(chǔ)知識(shí)輸電線路組成與型式
- 三年級(jí)數(shù)字加減法巧算
- GB/T 9755-2001合成樹(shù)脂乳液外墻涂料
- GB/T 10609.3-1989技術(shù)制圖復(fù)制圖的折疊方法
- GB 4053.2-2009固定式鋼梯及平臺(tái)安全要求第2部分:鋼斜梯
- 通力電梯培訓(xùn)教材:《LCE控制系統(tǒng)課程》
- 佛山市內(nèi)戶口遷移申請(qǐng)表
- 品管圈PDCA持續(xù)質(zhì)量改進(jìn)提高靜脈血栓栓塞癥規(guī)范預(yù)防率
- 一次函數(shù)單元測(cè)試卷(含答案)
- 陜西省榆林市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會(huì)明細(xì)
- 天車(chē)設(shè)備維護(hù)檢修標(biāo)準(zhǔn)設(shè)備維護(hù)檢修規(guī)程
評(píng)論
0/150
提交評(píng)論