EDA技術與實驗:第7課 循環語句_第1頁
EDA技術與實驗:第7課 循環語句_第2頁
EDA技術與實驗:第7課 循環語句_第3頁
EDA技術與實驗:第7課 循環語句_第4頁
EDA技術與實驗:第7課 循環語句_第5頁
已閱讀5頁,還剩11頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第3章Verilog設計基礎3.6循環語句3.6循環語句repeatloopinitialbeginfor(i=0;i<4;i=i+1)out=out+1;endinitialbeginrepeat(5)out=out+1;endinitialbegini=0;while(i<0)i=i+1;endforloopwhileloop在Verilog中存在四種類型的循環語句,用來控制語句的執行次數。這四種語句分別為:(1)forever:連續地執行語句;多用在“initial”塊中,以生成時鐘等周期性波形。(2)repeat:連續執行一條語句n次。(3)while:執行一條語句直到某個條件不滿足。(4)for:有條件的循環語句。for語句for語句的使用格式如下(同C語言):for(表達式1;表達式2;表達式3)語句;即:for(循環變量賦初值;循環結束條件;循環變量增值)執行語句;用for語句描述的七人投票表決器modulevoter7(pass,vote);outputpass;input[6:0]vote;reg[2:0]sum;integeri;regpass;always@(vote)beginsum=0;for(i=0;i<=6;i=i+1) //for語句if(vote[i])sum=sum+1;if(sum[2])pass=1; //若超過4人贊成,則pass=1else pass=0;endendmodulerepeat語句

repeat語句的使用格式為:repeat(循環次數表達式)

語句;或repeat(循環次數表達式) begin

…… end4.6編譯指示語句Verilog允許在程序中使用特殊的編譯向導(CompilerDirectives)語句,在編譯時,通常先對這些向導語句進行“預處理”,然后再將預處理的結果和源程序一起進行編譯。向導語句以符號“`”開頭,以區別于其它語句。Verilog提供了十幾條編譯向導語句,如:`define、`ifdef、`else、`endif、`restall等。比較常用的有`define,`include和`ifdef、`else、`endif等。

宏替換`define

`define語句用于將一個簡單的名字或標志符(或稱為宏名)來代替一個復雜的名字或字符串,其使用格式為:`define宏名(標志符)

字符串如:`definesumina+inb+inc+ind在上面的語句中,用簡單的宏名sum來代替了一個復雜的表達式ina+inb+inc+ind,采用了這樣的定義形式后,在后面的程序中,就可以直接用sum來代表表達式ina+inb+inc+ind了。注意:1、宏定義語句行末不加分好;2、引用宏名時,需在宏名前家“‘”。文件包含`include

`include是文件包含語句,它可將一個文件全部包含到另一個文件中。其格式為:`include“文件名”使用`include語句時應注意以下幾點:(1)一個`include語句只能指定一個被包含的文件。(2)`include語句可以出現在源程序的任何地方。被包含的文件若與包含文件不在同一個子目錄下,必須指明其路徑名。(3)文件包含允許多重包含,比如文件1包含文件2,文件2又包含文件3等。

(1)文件aaa.vmoduleaaa(a,b,out);inputa,b;outputout;wireout;assignout=a^b;endmodule(2)文件bbb.v`include"aaa.v"modulebbb(c,d,e,out);inputc,d,e;outputout;wireout_a;wireout;aaaaaa(.a(c),.b(d),.out(out_a));assignout=e&out_a;endmodule4.7任務與函數任務(task)任務定義格式:task<任務名>; //注意無端口列表端口及數據類型聲明語句;其它語句;endtask任務調用的格式為: <任務名>(端口1,端口2,……);需要注意的是:任務調用時和定義時的端口變量應是一一對應的。使用任務時,需要注意以下幾點:

任務的定義與調用須在一個module模塊內。定義任務時,沒有端口名列表,但需要緊接著進行輸入輸出端口和數據類型的說明。當任務被調用時,任務被激活。任務的調用與模塊調用一樣通過任務名調用實現,調用時,需列出端口名列表,端口名的排序和類型必須與任務定義中的相一致。一個任務可以調用別的任務和函數,可以調用的任務和函數個數不限。

函數(function)函數的目的是返回一個值,以用于表達式的計算。函數的定義格式: function<返回值位寬或類型說明>函數名; 端口聲明; 局部變量定義; 其它語句; endfunction<返回值位寬或類型說明>是一個可選項,如果缺省,則返回值為1位寄存器類型的數據。函數舉例function[7:0]get0;input[7:0]x;reg[7:0]count;integeri;begin count=0;for(i=0;i<=7;i=i+1)if(x[i]=1'b0)count=count+1;get0=count;endendfunction上面的get0函數循環核對輸入數據x的每一位,計算出x中0的個數,并返回一個適當的值。在使用函數時,需注意函數的定義與調用須在一個module模塊內。函數只允許有輸入變量且必須至少有一個輸入變量,輸出變量由函數名本身擔任,在定義函數時,需

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論