verillog模塊的定義與調(diào)用_第1頁
verillog模塊的定義與調(diào)用_第2頁
verillog模塊的定義與調(diào)用_第3頁
verillog模塊的定義與調(diào)用_第4頁
verillog模塊的定義與調(diào)用_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

模塊的定義與調(diào)用一、模塊的結(jié)構(gòu)與定義1、模塊的結(jié)構(gòu)Verilog的根本設(shè)計單元就是“模塊”。它主要由兩局部構(gòu)成,一局部描述接口,另一局部描述邏輯功能。eg:moudleblock〔a,b,c,d〕;inputa,b;outputc,d;assignc=a|b;assgind=a&b;endmoudleaabcd模塊是verilog設(shè)計中的根本功能塊,這里詳細介紹模塊內(nèi)部構(gòu)成module模塊名(端口列表);端口聲明,參數(shù)聲明wire,reg和其它類型的變量聲明數(shù)據(jù)流語句〔assign)低層模塊實例always和initial塊,所有行為語句都在塊內(nèi)任務(wù)和函數(shù)

endmodule必須出現(xiàn)可選module能夠表示:物理塊,如IC或ASIC單元邏輯塊,如一個CPU設(shè)計的ALU局部整個系統(tǒng)每一個模塊的描述從關(guān)鍵詞module開始,有一個名稱〔如SN74LS74,DFF,ALU等等〕,由關(guān)鍵詞endmodule結(jié)束。module內(nèi)部的5個局部:變量聲明數(shù)據(jù)流語句低層模塊實例行為描述塊任務(wù)和函數(shù)每一局部在module內(nèi)部出現(xiàn)的順序是任意的。一個verilog源文件中可以有多個模塊,且對排列順序不做要求。端口(Terminal)模塊端口等價于芯片的管腳〔pin)模塊通過端口與外部通信

端口是模塊與外界環(huán)境交互的接口.例如IC芯片的輸入、輸出引腳就是它的端口。對于外部環(huán)境來講,模塊內(nèi)部是不可見的,對模塊的調(diào)用(實例引用)只能通過其端口進行。這種特點為設(shè)計者提供了很大的靈活性:只要接口保持不變,模塊內(nèi)部的修改并不會影響到外部環(huán)境.我們也常常將端口稱為終端(Terminal)。端口列表和端口聲明input輸入端口output輸出端口inout雙向端口端口在模塊名字后的括號中列出端口可以說明為input,output及inout端口等價于硬件的引腳(pin)端口聲明也可以采用類似ANSI

C格式來聲明端口//D觸發(fā)器moduleD_FF(inputd,clk,clr,outputregq,qb);……………………endmodulemodule

adder(cout,sum,a,b,cin);

input[2:0]a,b;

input

cin;

output

cout;

output[2:0]sum;

assign

{cout,sum}=a+b+cin;endmodule例設(shè)計三位全加器這個例子描述了一個三位的加法器。從例子中可以看出整個VerilogHDL程序是嵌套在module和endmodule聲明語句里的,只出現(xiàn)了一個assign語句。addersum[2:0]a[2:0]b[2:0]cincout模塊名端口列表端口聲明數(shù)據(jù)流語句半加器與全加器

=1&AB

C=ABABSC

CO

CO

CO

AB

ABCi

S

CO

CIAB

S

例SR觸發(fā)器模塊//SR觸發(fā)器module

SR_FF(Q,Q_n,S,R);outputQ,Q_n;//端口聲明inputS,R;nandn1(Q,S,Q_n);nandn2(Q_n,R,Q);endmodule模塊中的5個局部并沒全部出現(xiàn),只出現(xiàn)在低層次模塊實例化nand為verilog中的與非門門級原語部件D觸發(fā)器模塊//D觸發(fā)器moduleD_FF(d,clk,clr,q,qb);outputq,qb;inputd,clk,clr;regq,qb;//輸出端口q,qb值保存always@(posedgeclk)beginif(clr)q=1’b0;elseq=d;endnot(qb,q);endmodule

該模塊內(nèi)包括always行為塊語句always塊行為描述語句4位存放器設(shè)計moduleD_FF(d,clk,clr,q,qb);....endmodulemoduleREG4(d,clk,clr,q,qb);output[3:0]q,qb;input[3:0]d;inputclk,clr;D_FFd0(d[0],clk,clr,q[0],qb[0]);D_FFd1(d[1],clk,clr,q[1],qb[1]);D_FFd2(d[2],clk,clr,q[2],qb[2]);D_FFd3(d[3],clk,clr,q[3],qb[3]);endmodule模塊中只出現(xiàn)在低層次模塊實例化可以將模塊的實例通過端口連接起來構(gòu)成一個大的系統(tǒng)或元件。在上面的例子中,REG4有模塊DFF的四個實例。注意,每個實例都有自己的名字(d0,d1,d2,d3)。實例名是每個對象唯一的標記,通過這個標記可以查看每個實例的內(nèi)部。實例中端口的次序與模塊定義的次序相同。模塊實例化與調(diào)用程序不同。每個實例都是模塊的一個完全的拷貝,相互獨立、并行。模塊實例化(moduleinstances).端口與外部信號的連接在調(diào)用模塊時,可以用順序連接和按名連接把模塊定義的端口與外部信號連接起來順序連接:需要連接的信號需要與模塊聲明的端口列表一致;按名連接:端口和外部信號按名字連接在一起.D_FFd0(d[0],clk,clr,q[0],qb[0]);D_FFd1(d[1],clk,clr,q[1],qb[1]);D_FFd2(d[2],clk,clr,q[2],qb[2]);D_FFd3(d[3],clk,clr,q[3],qb[3]);當(dāng)設(shè)計大規(guī)模系統(tǒng)時,端口太多,記住端口順序不大可能,可以采用按名連接方法。不需要連接的端口直接忽略掉即可D_FFd0(.d(d[0]),.clk(clk),.clr(clr),.q(q[0]),.qb(qb[0]));

D_FFd0(.d(d[0]),.clk(clk),.clr(clr),.q(q[0]));

2、模塊的定義〔1〕端口定義在模塊被引用的時候,有些信號要輸入到被引用的模塊中,有的信號需要從被引用的模塊中取出來。在引用模塊的時候其端口可以直接用兩種方法連接:〔a〕在引用的時候,嚴格按照模塊定義的端口順序來連接,不用標明原模塊定義時規(guī)定的端口名,比方說:模塊名〔連接端口1信號名,連接端口2信號名,連接端口3信號名,……〕;〔b〕在引用的時候,可以用“.”符號來標明原模塊是定義時的端口名,比方:模塊名〔.端口1名〔連接信號1名〕,端口2名〔連接端口2名〕,……〕;moudletristl(sout,sin,ena);outputsout;inputsin,ena;mytritri_inst(.out(sout),.in(sin),.enable(ena));endmoudlemoudlemytri(out,in,enable);outputout;input

in,enable;

assignout=enable?in:’bz;endmoudletri_insttrist1sinenainenableoutsoutmytri3、順序執(zhí)行在用verilog模塊實現(xiàn)一定的功能時,應(yīng)該了解一下哪些是同時發(fā)生,哪些是順序發(fā)生的,“assgin”語句、實例元件和“always”,這三個在同一個verilog模塊里面,它們的順序不會影響功能的實現(xiàn)。它們?nèi)検酵瑫r執(zhí)行的,也就是并發(fā)的。但是,在“always”模塊內(nèi),邏輯是按照指定的順序執(zhí)行的,不過多個“always”之間卻是并行執(zhí)行的。tips:〔1〕在verilog模塊中所有過程塊〔如:initial塊,always塊〕、連續(xù)賦值語句、實例引用都是并行的;〔2〕模塊之間的連接是通過變量名互相連接起來的;〔3〕在同一模塊中,“always”塊,實例元件,“assign”塊,這三個常用的語句申明出現(xiàn)的先后順序沒有關(guān)系;〔4〕不過只有連續(xù)賦值語句assign和實例引用語句獨立于過程快而存在于模塊的功能定義局部。順序塊和并行塊1、順序塊順序塊,也叫過程塊,關(guān)鍵字begin_end用于將多條語句組成順序塊。特點:〔1〕當(dāng)中的語句是一條接一條,按照順序執(zhí)行的,只有前邊的語句執(zhí)行完成以后才能執(zhí)行后面的語句〔除了帶有內(nèi)嵌套的非阻塞賦值語句〕;〔2〕如果語句包括延遲或時間控制,那么延遲總是相對于前面那條語句執(zhí)行完成的仿真時間的。eg(1):regx,y;reg[1:0]z,w;initialbeginx=1’b0;y=1’b1;z={x,y};w={y,x};end

eg(2)regx,y;reg[1:0]z,w;initialbeginx=1’b0;#5y=1b’1;#10z={x,y};#20w={y,x};end2、并行塊并行塊由關(guān)鍵字fork_join申明,它具有以下特點:〔1〕塊內(nèi)的語句是并發(fā)執(zhí)行的;〔2

溫馨提示

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

評論

0/150

提交評論