版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、1西安理工大學電子工程西安理工大學電子工程系系2if_else語句語句 if語句是用來判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種兩種操作之一 。Verilog 語言提供了三種形式的if語句: if (表達式) 語句1; if (表達式) 語句1; else 語句2; if(表達式1) 語句1; else if(表達式2) 語句2; else if(表達式3) 語句3; . else if(表達式m) 語句m; else 語句n;3if_else語句語句六點說明 :l三種形式的if語句中在if后面都有“表達式”,一般為邏輯表達式或關(guān)系表達式。系統(tǒng)對表達式的值進行判斷,若
2、為0,x,z,按“假”處理,若為1,按“真”處理,執(zhí)行指定的語句。l第二、第三種形式的if語句中,在每個else前面有一分號,整個語句結(jié)束處有一分號。 else子句不能作為語句單獨使用,它必須是if語句的一部分,與if配對使用。 各 有 一 個 分 號 If (ab) out1 =int1;else out1 b) begin out1=int1; out2=int2;endelsebegin out1=int2; out20)for(i=0; i0)begin $display(.); memoryi=0;endelse $display(error-indexiszero);if(inde
3、x0) beginfor(i=0; i0)begin $display(.); memoryi=0;end endelse $display(error-indexiszero);7從從if語句推導出語句推導出鎖存器 a l w a y s ( a l o r d ) b e g i n i f ( a l ) q = d ; e n d 有 鎖 存 器 a l w a y s ( a l o r d ) b e g i n i f ( a l ) q = d ; e l s e q = 0 e n d 無 鎖 存 器 If語句使用不當生成了并不想要的鎖存器。8從從if語句推導出語句推導出鎖存
4、器9從從if語句推導出語句推導出鎖存器10If/else優(yōu)先級編碼 If-else語句實際上具有隱含的優(yōu)先級。FBSel0Sel1Sel2Sel3ACDE優(yōu)先級別依次為:E D C B A11case語句是一種多分支選擇語句 .case (敏感表達式) 分支表達式1:語句1; 分支表達式2:語句2; 分支表達式n:語句n; default: 語句n+1;endcase12case括弧內(nèi)的表達式稱為控制表達式(也稱為敏感表達式),case分支項中的表達式稱為分支表達式??刂票磉_式通常表示為控制信號的某些位,分支表達式則用這些控制信號的具體狀態(tài)值來表示:分支表達式是常量表達分支表達式是常量表達式式
5、。case語句的行為如同一個嵌套的語句的行為如同一個嵌套的if語句語句。當控制表達式的值與分支表達式的值相等時,就執(zhí)行分支表達式后面的語句。如果所有的分支表達式的值都沒有與控制表達式的值相匹配的,就執(zhí)行default后面的語句。default項可有可無,一個case語句里只準有一個default項。13case語句通常用于微處理器的指令譯碼語句通常用于微處理器的指令譯碼,case語句的行為如同一語句的行為如同一個嵌套的個嵌套的if語句語句。1415 case, casez和casexcase語句逐位比較case表達式和分支表達式中的0、1、x、z值,值x和z只從字面上解釋,即作為x和z值;ca
6、sez語句中,值z被認為是無關(guān)值,z也可以寫成“?”。casex語句中,值x和z都被認為是無關(guān)位。casez語句用來處理不考慮高阻值z的比較過程,casex語句則將高阻值z和不定值都視為不必關(guān)心的情況。所謂不必關(guān)心的情況,即在表達式進行比較時,不將該位的狀態(tài)考慮在內(nèi)。這樣在case語句表達式進行比較時,就可以靈活地設置以對信號的某些位進行比較。1617casez語句18casex語句19case語句時生成鎖存器的例子case語句時生成鎖存器的例子 a l w a y s ( s e l 1 : 0 o r a o r b ) c a s e ( s e l 1 : 0 ) 2 b 0 0 :
7、q = a ; 2 b 1 1 : q = b ; e n d c a s e 有 鎖 存 器 a l w a y s ( s e l 1 : 0 o r a o r b ) c a s e ( s e l 1 : 0 ) 2 b 0 0 : q = a ; 2 b 1 1 : q = b ; d e f a u l t : q = b 0 ; e n d c a s e 無 鎖 存 器 20case語句時生成鎖存器的例子21case語句時生成鎖存器的例子輸出信號為復數(shù)時,如果不將所有條件寫全輸出信號為復數(shù)時,如果不將所有條件寫全Always (A) begin case (A) 3b000
8、: begin DATA1 = 1b1; DATA2= 1b0; end 3b001 : begin DATA1 = 1b0; DATA3= 1b1; end 3b010 : begin DATA1 = 1b0; DATA2= 1b1; end 3b101 : begin DATA1 = 1b1; end default : begin DATA1 = 1b0; DATA2= 1b0; DATA3= 1b0; endEndcaseend沒有DATA3的描述沒有DATA2的描述22輸出信號為復數(shù)時,針對每一個條件應將輸出寫全輸出信號為復數(shù)時,針對每一個條件應將輸出寫全Always (A) beg
9、in case (A) 3b000 : begin DATA1 = 1b1; DATA2= 1b0; DATA3= 1bx; end 3b001 : begin DATA1 = 1b0; DATA2= 1bx; DATA3= 1b1; end 3b010 : begin DATA1 = 1b0; DATA2= 1b1; DATA3= 1bx; end 3b101 : begin DATA1 = 1b1; DATA2= 1bx; DATA3= 1bx; end default : begin DATA1 = 1b0; DATA2= 1b0; DATA3= 1b0; endEndcaseendca
10、se語句時生成鎖存器的例子23Always (A) begin DATA1 = 1bx; DATA1= 1bx; DATA2= 1bx; case (A) 3b000 : begin DATA1 = 1b1; DATA2= 1b0; end 3b001 : begin DATA1 = 1b0; DATA3= 1b1; end 3b010 : begin DATA1 = 1b0; DATA2= 1b1; end 3b101 : begin DATA1 = 1b1; end default : begin DATA1 = 1b1; DATA1= 1b1; DATA2= 1b0; end初始值描述方
11、式24Case分支的全列舉如果沒有在case表達式所有可能的取值情況下都對變量賦值,則該變量就會被推導成鎖存器。但是,如果設計者知道case表達式不會取case分支項中未列出的任何其他值,則可以使用綜合指令:full_case.綜合工具在case語句中遇到這樣的綜合指令時就會認為:case表達式所有可能的取值都已經(jīng)羅列出來了,不存在其他可能的取值。這樣變量就在case語句的所有分支中都被賦值了,因而不會推導成鎖存器。25使用綜合指令:full_case/Synthesis full_case26并行Case分支Case語句的verilog語義表明了選取case分支的優(yōu)先級順序。Case表達式首
12、先與第一個分支項進行比較,如果不相同,則再與下一個分支項比較,依此類推。Case語句暗示了檢查分支項的優(yōu)先級順序。如果設計者知道所有的分支項相互排斥,希望把case控制邏輯綜合成譯碼器,而不是優(yōu)先級邏輯,可以使用綜合指令:parallel_case。27使用綜合指令:parallel_case28function 范圍范圍 函數(shù)名函數(shù)名; begin . endendfunctionassign x = sign_extend(a); / function 調(diào)用調(diào)用29函數(shù)的定義蘊含聲明了與函數(shù)同名的、函數(shù)內(nèi)部的變量。如在函數(shù)的聲明語句中為缺省,則這個變量是一位的,否則是與函數(shù)定義中一致的變量
13、。定義函數(shù)時至少要有一個輸入?yún)⒘?。在函?shù)的定義中必須有一條賦值語句給函數(shù)中的一個內(nèi)部變量賦以函數(shù)的結(jié)果值,該內(nèi)部變量具有和函數(shù)名相同的名字:函數(shù)返回值函數(shù)返回值被賦予函數(shù)同名的內(nèi)部變量。被賦予函數(shù)同名的內(nèi)部變量。 assign x = sign_extend(a); / function 調(diào)用調(diào)用30 using ANSI C Style argumentsfunction calc_parity (input 31:0 address); begin /Return the xor of all address bits. calc_parity = address; endendfunct
14、ion31Ex: assign o=a&b; assign o=(sel)?a:b;32module 41sel( in, sel, out );input 3:0 in;input 1:0 sel;output out;function select;input 3:0 a;input 1:0 b;case( b)2h0 : select = a0;2h1 : select = a1;2h2 : select =a2;2h3 : select = a3;endcaseendfunctionassign out = select( in, sel ); / function selec
15、t調(diào)用調(diào)用endmodule 復數(shù)位選擇器復數(shù)位選擇器function、case語句描述語句描述in0in1in2in3sel1:0out334 to 1selectmodule 41sel( in, sel, out );input 3:0 in;input 1:0 sel;outputout;function select;input 3:0 in;input 1:0 sel;case( sel )2h0 : select = in0;2h1 : select = in1;2h2 : select = in2;2h3 : select = in3;endcaseendfunctionass
16、ign out = select( in, sel ); endmodule module 41sel( in, sel, out );input 3:0 in;input 1:0 sel;outputout;function select;input 3:0 in;input 1:0 sel;if( sel = 2h0 )select = in0;else if( sel = 2h1 )select = in1;else if( sel = 2h2 )select = in2;elseselect = in3; endfunctionassign out = select( in, sel
17、); endmodule343 to 1selectmodule 31sel( in, sel, out );input 2:0 in;input 1:0 sel;outputout;function select;input 2:0 in;input 1:0 sel;case( sel )2h0 : select = in0;2h1 : select = in1;default :select = in2;endcaseendfunctionassign out = select( in, sel ); endmodulemodule 31sel( in, sel, out );input
18、2:0 in;input 1:0 sel;outputout;function select;input 2:0 in;input 1:0 sel;if( sel = 2h0 )select = in0;else if( sel = 2h1 )select = in1;elseselect = in2;endfunctionassign out = select( in, sel ); endmodule35循環(huán)語句循環(huán)語句 在Verilog HDL中存在著四種類型的循環(huán)語句,用來控制執(zhí)行語句的執(zhí)行次數(shù)。forever 連續(xù)的執(zhí)行語句。repeat 連續(xù)執(zhí)行一條語句 n 次。while 執(zhí)行一
19、條語句直到某個條件不滿足。如果一開始條件即 不滿足(為假),則語句一次也不能被執(zhí)行。for for語句通過以下三個步驟來決定語句的循環(huán)執(zhí)行。 先給控制循環(huán)次數(shù)的變量賦初值。 判定控制循環(huán)的表達式的值,如為假則跳出循環(huán)語句,如為真則執(zhí)行指定的語句后,轉(zhuǎn)到第三步。 執(zhí)行一條賦值語句來修正控制循環(huán)變量次數(shù)的變量的值,然后返回第二步。36forever語句語句forever語句的格式如下:forever語句; 或foreverbegin多條語句 end此循環(huán)語句連續(xù)執(zhí)行過程語句。同時,在過程語句中必須使用某種形式的時序控制,否則, forever循環(huán)將在0時延后永遠循環(huán)下去。 initialbegin
20、clk = 0;#5 forever #10 clk = clk;end這一實例產(chǎn)生時鐘波形;時鐘首先初始化為0,并一直保持到第5個時間單位。此后每隔10個時間單位,clk反相一次。Forever不可綜合,一般用來產(chǎn)生仿真波形。37repeat語句語句 repeat語句的格式如下:repeat(表達式) 語句在repeat語句中,其表達式通常為常量表達式。38while語句while語句的格式如下: while(表達式) 語句39for語句語句 for語句的一般形式為: for(表達式1;表達式2;表達式3) 語句執(zhí)行過程如下:1) 先求解表達式1;2) 求解表達式2,若其值為真(非0),則執(zhí)
21、行for語句中指定的內(nèi)嵌語句,然后執(zhí)行下面的第3步。若為假(0),則結(jié)束循環(huán),轉(zhuǎn)到第5步。3) 若表達式為真,在執(zhí)行指定的語句后,求解表達式3。4) 轉(zhuǎn)回上面的第2步驟繼續(xù)執(zhí)行。執(zhí)行for語句下面的語句。for語句最簡單的應用形式是很易理解的,其形式如下: for(循環(huán)變量賦初值;循環(huán)結(jié)束條件;循環(huán)變量增值) 執(zhí)行語句40for語句語句 for循環(huán)語句實際上相當于采用while循環(huán)語句建立以下的循環(huán)結(jié)構(gòu):begin循環(huán)變量賦初值;while(循環(huán)結(jié)束條件)begin 執(zhí)行語句 循環(huán)變量增值;endend41for語句語句for循環(huán)語句是典型的可以綜合的循環(huán)語句,循環(huán)語句是典型的可以綜合的循環(huán)語
22、句,for循環(huán)的綜合是通過循環(huán)的綜合是通過展開來實現(xiàn)的。展開來實現(xiàn)的。也就是說,復制for循環(huán)中的所有語句,對循環(huán)變量每一個可能的取值復制一次.需要對循環(huán)邊界加以限制,保證循環(huán)邊界都是常量。42always語句語句格式如下: always always語句是重復執(zhí)行的,只有和一定的時序控制結(jié)合在一起才有用。如果一個always語句沒有時序控制,則這個always語句將會生成一個仿真死鎖。 always areg = areg; 此語句將在0時刻無限循環(huán),形成仿真死鎖。行為建模:使用行為建模:使用always語句語句43兩種時序控制方式1) 時延控制 always #half_period cl
23、k = clk; 這個例子生成了一個周期為:period(=2*half_period) 的無限延續(xù)的信號波形,常用這種方法來描述時鐘信號,作為激勵信號來測試所設計的電路 。2) 事件控制 在事件控制中,always的過程語句基于事件執(zhí)行。 符號“ ”被用來指明事件控制(event control)。 always 的事件可以控制是沿觸發(fā),也可以是電平觸發(fā),可以單個信號,也可以多個信號。如果是多個信號,則信號名之間需要有關(guān)鍵字 or。44事件控制always (posedge clock or negedge reset) /由兩個沿觸發(fā)的always塊 begin end在在Verilog
24、HDLVerilog HDL中中posedgeposedge和和negedgenegedge是表示正沿和負沿的關(guān)鍵字是表示正沿和負沿的關(guān)鍵字 always ( a or b or c ) /由多個電平觸發(fā)的always塊 begin end always ( a,b,c ) /由多個電平觸發(fā)的always塊 begin end45always語句沿觸發(fā)的always塊常常描述時序邏輯,如果符合可綜合風格要求可用綜合工具自動轉(zhuǎn)換為表示時序邏輯的寄存器組和門級邏輯電平觸發(fā)的always塊常常用來描述組合邏輯和帶鎖存器的組合邏輯,如果符合可綜合風格要求可轉(zhuǎn)換為表示組合邏輯的門級邏輯或帶鎖存器的組合邏輯。一個模塊中可以有多個always塊,它們都是并行運行的。46always (靈敏度表靈敏度表) 賦值描述賦值描述 其中,靈敏度表內(nèi)元素可以為:其中,靈敏度表內(nèi)元素可以為:posedge 信號(多數(shù)為時鐘信號及復位)信號(多數(shù)為時鐘信號及復位) negedge 信號(多數(shù)為時鐘信號及復位)信號(多數(shù)為時鐘信號及復位)用用reg、wire定義的變量及信號定義的變量及信號各信號之間用各信號之
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版桶裝水電商銷售與物流配送合作協(xié)議3篇
- AAA 玻璃有限公司煙氣余熱發(fā)電項目可行性研究報告
- 酒店行業(yè)助理的工作概述
- 幼兒園工作總結(jié)愛心傳遞溫馨舒適
- 二零二五年度:我國行政合同中優(yōu)益權(quán)在公共服務領域的應用論文3篇
- 2025版物業(yè)糾紛調(diào)解與法律服務合作協(xié)議2篇
- 二零二五年度個人版權(quán)保護與維權(quán)服務合同2篇
- 2025版食材配送與餐飲加盟合作合同模板3篇
- 二零二五年度能源合同能源管理服務協(xié)議范本2篇
- 聚氨酯發(fā)泡保溫施工方案
- 2017年江蘇南京中考滿分作文《無情歲月有味詩》5
- 2024-2030年中國智慧水務行業(yè)應用需求分析發(fā)展規(guī)劃研究報告
- 2024年中國南水北調(diào)集團新能源投資限公司抽水蓄能項目崗位公開招聘高頻考題難、易錯點模擬試題(共500題)附帶答案詳解
- 中國2型糖尿病運動治療指南 (2024版)
- 基礎構(gòu)成設計全套教學課件
- 城市道路交通安全評價標準 DG-TJ08-2407-2022
- 統(tǒng)編版高中政治選擇性必修2《法律與生活》知識點復習提綱詳細版
- 急腹癥的診斷思路
- 2024小說推文行業(yè)白皮書
- 研究性成果及創(chuàng)新性成果怎么寫(通用6篇)
- 特殊感染手術(shù)管理考試試題及答案
評論
0/150
提交評論