Verilog結(jié)構(gòu)描述模塊剖析_第1頁
Verilog結(jié)構(gòu)描述模塊剖析_第2頁
Verilog結(jié)構(gòu)描述模塊剖析_第3頁
Verilog結(jié)構(gòu)描述模塊剖析_第4頁
Verilog結(jié)構(gòu)描述模塊剖析_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、Verilog HDL的結(jié)構(gòu)描述模塊從Verilog HDL的描述風(fēng)格: 結(jié)構(gòu)描述 數(shù)據(jù)流描述 行為描述 混合描述本節(jié)介紹邏輯電路的結(jié)構(gòu)描述方式。一,結(jié)構(gòu)描述的概念所謂結(jié)構(gòu)描述就是通過調(diào)用邏輯元件、描述它們之 間的連接來建立邏輯電路的Verilog HDL模型。邏輯元件一Verilog HDL內(nèi)置邏輯門、自主開發(fā)的已 有模塊、商業(yè)IP模塊。狹義理解:如何將傳統(tǒng)意義上的“邏輯原理圖”轉(zhuǎn)換為Verilog HDL的描述。結(jié)構(gòu)描述分為門級(jí)結(jié)構(gòu)描述和模塊級(jí)結(jié)構(gòu)描述,本 課程只介紹前者。二.門級(jí)結(jié)構(gòu)描述(門級(jí)建模)門級(jí)結(jié)構(gòu)描述就是利用Verilog HDL內(nèi)置的基本門級(jí) 元件以及它們之間的連接來構(gòu)筑邏輯

2、電路的模型。“基本門級(jí)元件”是一種特殊的模塊,由Verilog HDL 語言本身提供,不需要用戶定義。同學(xué)應(yīng)掌握“基本門級(jí) 元件”的分類、調(diào)用格式及其應(yīng)用。三.Verilog HDL內(nèi)置基本門元件c=> | 多輸入門只有一 個(gè)輸出與門: 與非門:或門:或非門: 異或門:異或非門:and nand or nor xor xnor元件模型:v門級(jí)元件名(v輸出:輸入輸入2,<輸入n>)=> 多輸出門關(guān)鍵字V門級(jí)元件名(V輸出1>,輸出2>,,輸出g v輸入)三態(tài)門關(guān)鍵字高電平使能緩沖器:bufifl低電平使能緩沖器:butiW高電平使能非門:notifl低電平使

3、能非門:notifl)元件模型元件名(V數(shù)據(jù)輸出,,數(shù)據(jù)輸入,控制輸入)對(duì)于高電平使能緩沖器“bufin",若控制輸入為“1”, 則輸入數(shù)據(jù)被傳送到數(shù)據(jù)輸出端;若控制輸入為“0%則數(shù) 據(jù)輸出端處于高阻狀態(tài),九對(duì)于低電平使能緩沖器“bunnr,若控制輸入為飛”, 則輸入數(shù)據(jù)被傳送到數(shù)據(jù)輸出端;若控制輸入為力”,則數(shù) 據(jù)輸出端處于高阻狀態(tài),對(duì)于高電平使能非門“notin*若控制輸入為力”,則 數(shù)據(jù)輸出端的邏輯狀態(tài)是輸入的,邏輯非”;若控制輸入為 “0”,則數(shù)據(jù)輸出端處于高阻狀態(tài)對(duì)于低電平使能非門“notim”,若控制輸入為飛”,則 數(shù)據(jù)輸出端的邏輯狀態(tài)是輸入的“邏輯非”;若控制輸入為 力

4、”,則數(shù)據(jù)輸出端處于高阻狀態(tài)四.Verilog HDL內(nèi)置基本門元件的調(diào)用門級(jí)元件實(shí)例語句的格式:v門級(jí)元件名實(shí)例名(端口連接表);應(yīng)按照各元件模型中輸出、輸入、控 制的順序描述信號(hào)的連接。當(dāng)對(duì)同一個(gè)基本門級(jí)元件進(jìn)行多次調(diào)用時(shí),可采用 F面的元件實(shí)例語句格式:v門級(jí)元件名v實(shí)例名1> (端口連接表1),v實(shí)例名2> (端口連接表2),實(shí)例名(端口連接表n);ini加2 outl門級(jí)元件實(shí)例語句及其對(duì)應(yīng)的 邏輯示意圖A1門級(jí)元件實(shí)例語句及其對(duì)應(yīng)的 邏輯示意圖bufifl BF1 (dj)us, m_data en)notifl NT 1 (out, in9 ctr);bunm BFO

5、 (a, b, c);notifO NTO (addr, a bus, s映sa busNTO五.Verilog HDL門級(jí)結(jié)構(gòu)描述模塊的設(shè)計(jì)模型六.Verilog HDL門級(jí)建模舉例例:對(duì)下列邏輯電路進(jìn)行Verik唱HDL門級(jí)建模。六.Verilog HDL門級(jí)建模舉例例:對(duì)下列邏輯電路進(jìn)行Verik唱HDL門級(jí)建模。or xorinput wire and ,定義三個(gè)內(nèi) 部連線變量module fulloutput_adder (cout, sout, a, b, cin) cout, sout;a9 b, cin; wl, w2, w3;A1 ( w1, a, b ), A2 ( w2,

6、 b, cin ), A3 ( w3, a, cin );01 ( cout, w1, w2, w3 );X1 ( sout, a, b, cin );endmodule門級(jí)建模描述的是電路結(jié)構(gòu),看起來 比較復(fù)雜。如果閱讀一個(gè)門級(jí)建模程序, 很難分析其所描述的功能。第四節(jié)Verilog HDL的數(shù)據(jù)流描述模塊一數(shù)據(jù)流描述根據(jù)信號(hào)(變量)之間的邏輯關(guān)系,采用持續(xù)賦值 語句描述邏輯電路的方式,稱為數(shù)據(jù)流描述。狹義理解:將傳統(tǒng)意義上的“邏輯表達(dá)式“,運(yùn)用 Verilog HDL中的運(yùn)算符,改變成持續(xù)賦值語句 (assign語句)中的表達(dá)式。二.Verilog HDL數(shù)據(jù)流描述模塊的設(shè)計(jì)模型modul

7、e模塊名(端口列表);端口定義input輸入端口output堆出端口數(shù)據(jù)類型說明 wireVerilog 數(shù)據(jù)流 描述模 塊基本 結(jié)構(gòu)邏輯功能定義 assign v邏輯表達(dá)式 assign邏輯表達(dá)式n;endmodule三.持續(xù)賦值語句(assign語句)assign連線型變量名=賦值表達(dá)式;wire型變量4用Verilog HDL運(yùn)算符構(gòu)成的合法表達(dá)式wire型變量沒有數(shù)據(jù)保持能力,只有被連續(xù)驅(qū)動(dòng)后,才 能取得確定值。(而寄存器型變量只要在某時(shí)刻得到過一次 過程賦值,就能一直保持該值,直到下一次過程賦值。)若一個(gè)連線型變量沒有得到任何連續(xù)驅(qū)動(dòng),它的取值將 是不定態(tài)“武。assign連續(xù)賦值語

8、句就是實(shí)現(xiàn)對(duì)連線型變量進(jìn)行連續(xù)驅(qū) 動(dòng)的一種方法。進(jìn)一步講,assign持續(xù)賦值語句對(duì)wire型變量賦值 后,始終監(jiān)視賦值表達(dá)式中的每一個(gè)操作數(shù),只要賦值表 達(dá)式中任一操作數(shù)發(fā)生變化,立即對(duì)wire型變量進(jìn)行更新 操作,以保持對(duì)wire型變量的連續(xù)驅(qū)動(dòng)。體現(xiàn)了組合邏輯 電路的特征任何輸入的變化,立即影響輸出。所以, 可根據(jù)組合電路的邏輯表達(dá)式,用assign持續(xù)賦值語句進(jìn) 行描述。持續(xù)賦值語句應(yīng)用舉例nmodule assignment ( z 9 x , y );根據(jù)端口信號(hào)類型的隱input 3:0 x , y ;含特性,此句可省。output 3:0 z ;1wire 3:0 z, x,

9、y ;assign z = x & v ;一這里,已不是傳統(tǒng)意義上的endmodule . 、單變量與運(yùn)算,而是兩個(gè)相同位寬向量的按位與運(yùn)算。對(duì)應(yīng)的邏輯原理圖?z1J 1J 1J 1J 1J 0 1 2 3 0 1 2 3 rL rL fl X X X X y y y y1J 1J o 1 rL rL z z21z思考:若上述模塊中的assign z = x & y ;改為 assign z = x && y ;將如何?實(shí)際應(yīng)用中,持續(xù)賦值語句的賦值目標(biāo)可以是如下幾種:變量(標(biāo)量) wire a , b ;assign a = b ;向量wire 7:0 a ,

10、 b ;assign a = b ;向量中某一位 wire 7:0 a , b ; assign a3 = b3;向量中某幾位wire 7:0J a , b ; assign a3:2 = b3:2;拼接wire a 9 b ;wire 12:1 c ;assign a 9 b) = c ;四.數(shù)據(jù)流描述舉例例:請(qǐng)用Verilog HDL數(shù)據(jù)流描述方式描述F = AB CD 的邏輯功能。module ff_1(A,B,C,D,F); input A,B,C,D;所有assign語句并 發(fā)執(zhí)行,和程序中 的位置無關(guān)。output F;wire w1,w2;assign w1=A&B;as

11、sign w2=-(C&D);assign F=w1|w2; endmodule第五節(jié)Verilog HDL的行為描述模塊一,行為描述邏輯電路的結(jié)構(gòu)描述側(cè)重于表示一個(gè)電路由哪些基本元 件組成,以及這些基本元件的相互連接關(guān)系。邏輯電路的數(shù)據(jù)流描述側(cè)重于邏輯表達(dá)式以及Verilog HDL中運(yùn)算符的靈活運(yùn)用。行為描述關(guān)注邏輯電路輸入、輸出的因果關(guān)系(行為特 性),即在何種輸入條件下,產(chǎn)生何種輸出(操作),并不 關(guān)心電路的內(nèi)部結(jié)構(gòu)。EDA的綜合工具能自動(dòng)將行為描述轉(zhuǎn) 換成電路結(jié)構(gòu),形成網(wǎng)表文件。顯然,當(dāng)電路的規(guī)模較大或時(shí)序關(guān)系較復(fù)雜時(shí),通常采 用行為描述方式進(jìn)行設(shè)計(jì).二.Verilog HD

12、L行為描述模塊的設(shè)計(jì)模型Verilog 行為描述 模塊基本 結(jié)構(gòu)module模塊名 (端口列表);端口定義input 輸入端口output輸出端口數(shù)據(jù)類型說明regparameter邏輯功能定義always (敏感事件列表)begin阻塞、非阻塞、if-else. case、for等行為語句 endendmodule三.行為描述中的always進(jìn)程應(yīng)用模板|always (v敏感信號(hào)表達(dá)式)begin/過程賦值語句/if-else, case, casex, casez選擇語句/for循環(huán)語句end一般情況下,always進(jìn)程帶有觸發(fā)條件,這些觸發(fā)條 件列在敏感信號(hào)表達(dá)式中,只有當(dāng)觸發(fā)條件滿足

13、時(shí), beginend塊語句才被執(zhí)行。在一個(gè)Verilog HDL模塊中可以有多個(gè)always進(jìn)程, 它們是并發(fā)執(zhí)行的。敏感信號(hào)表達(dá)式又稱敏感事件列表。當(dāng)該表達(dá)式中任意一個(gè)信號(hào)(變量) 的值改變時(shí),就會(huì)引發(fā)塊內(nèi)語句的執(zhí)行。因此,應(yīng)將所有影響 塊內(nèi)取值的信號(hào)(變量)列入.多個(gè)敏感信號(hào)用“or”連接。例如: ( a ) 當(dāng)信號(hào)a的值發(fā)生改變時(shí) (a or b) 當(dāng)信號(hào)a或信號(hào)b的值發(fā)生改變時(shí)這里a和b稱為電平敏感型信號(hào),代表的觸發(fā)事件是,信 號(hào)除了保持穩(wěn)定狀態(tài)以外的任意一種變化過程。這種電平敏感型信號(hào)列表常用在組合邏輯的描述中,以 體現(xiàn)輸入隨時(shí)影響輸出的組合邏輯特性。再例如: ( posedge

14、clock )當(dāng)clock的上升沿到來時(shí) ( negedge clock )當(dāng)clock的下降沿到來時(shí) ( posedge clock or negedge reset)當(dāng)clock的上升沿到來或當(dāng)reset的下降沿到來時(shí)這里的clock和reset信號(hào)稱為邊沿敏感型信號(hào),posedge 描述對(duì)信號(hào)的上升沿敏感;negedge描述對(duì)信號(hào)的下降沿敏感。 顯然,這種邊沿敏感型信號(hào)列表適合描述同步時(shí)序電路,以體 現(xiàn)同步時(shí)序電路的特點(diǎn)在統(tǒng)一時(shí)鐘作用下改變電路的狀態(tài)。posedge 代表的觸發(fā)事件是,信號(hào)發(fā)生了正跳變。 0-x ,0-z , 0-*1 , X-1 , z-*1negedge一代表的觸發(fā)事

15、件是,信號(hào)發(fā)生了負(fù)跳變。 1-x , 1-*z ,1-0, x-0 , z-0在每一個(gè)always過程語句中,最好只使用一種類型 的敏感信號(hào)列表,不要混合使用。以避免使用不同的綜合 工具時(shí)發(fā)生錯(cuò)誤。四.串行塊由關(guān)鍵字beginend界定的一組語句。begin語句1語句2end串行塊的特點(diǎn): 一般情況下,塊內(nèi)語句順序執(zhí)行,前面一條語句執(zhí)行畢 后,才開始執(zhí)行下一條語句。模塊運(yùn)行時(shí),遇到串行塊,塊內(nèi)第一條語句即開始執(zhí)行, 最后一條執(zhí)行完畢,串行塊結(jié)束。module ff 1(A,B,C,D,F); input A,B,C,D;output F;wire w1,w2;assign w1=A&B

16、;assign w2=(C&D);assign F=w1|w2;endmodule整個(gè)串行塊執(zhí)行時(shí)間等于塊內(nèi)各條語句執(zhí)行時(shí)間的總和。module ff_1(A,B,C,D,F); input A,B,C,D;output F; reg F, w1,w2;, always (A or B or C or D) 串行塊只應(yīng)用在beain七器算機(jī)、,w1=A&B;順序執(zhí)行:w2=(C&D);一( /F=w1|w2;end endmodule五.過程賦值語句過程賦值語句必須放在always進(jìn)程中,分為阻塞型 和非阻塞型,其基本格式為:(被賦值變量)(賦值操作符(賦值表達(dá)式過程賦

17、值語句的目標(biāo)變量形式rega;reg 7:0 b;integer i;always (敏感事件列表)begina = 0;i =356;b2 = 1' bl ;h|3:0| = 4/ bllll ;a,b = 9' blOlllOHO;end在前面討論中,用到的賦值語句都是阻塞型過程賦值語句串行塊(begin.end )內(nèi)各條阻塞型過程賦值語句按順序 依次執(zhí)行。下一條語句的執(zhí)行被阻塞,等本條語句的賦值 操作完成后,才開始執(zhí)行。阻塞型過程賦值語句的執(zhí)行過程:先計(jì)算賦值表達(dá)式”的 值,然后立即賦值給”左邊的“被賦值變量”。特點(diǎn):在b4iii.eiig串行塊語句中,各條非阻塞過程賦值

18、語句對(duì)應(yīng)的 “賦值表達(dá)式”同時(shí)開始計(jì)算。在過程塊結(jié)束時(shí),才將結(jié)果賦值給各個(gè)“被賦值變量可理解為先同時(shí)采樣,最后一起賦值。beginA<=B; /SI -B<= A; Z/S2 end這里,SI、S2語句均為非阻塞賦 值,立即開始計(jì)算B和A值(上 次的值)。在過程塊結(jié)束時(shí),進(jìn) 行賦值操作,將計(jì)算得到的B,A 的值賦給變量A.B。(實(shí)現(xiàn)A,B交 換)如果不能很好地理解阻塞賦值與非阻塞賦值的區(qū)別, 往往給設(shè)計(jì)帶來麻煩,特別是在可綜合邏輯模塊中,不易 把握reg型變量的賦值過程。建議同學(xué)在編寫模塊時(shí),只 采用一種過程賦值方式,并且最好不要將輸出再次作為輸 入使用。觀察下面的示例。例1:非阻

19、塞賦值module n_block(c,b,a,clk);output c, b ;input elk, a ;reg b, c;always (posedge elk)beginb<=a;c<=b;end endmodule例2:阻塞賦值module block(c,b,a,clk);output c, b ;input elk, a;reg b, c ;always (posedge elk)beginb=a;c=b;endendmodule結(jié)果:b更新為a的值,c 為上個(gè)時(shí)鐘周期b的值。結(jié)果:b、c都更新為a的值。為了更好地理解阻塞賦值與非阻塞賦值的區(qū)別,我們這兩個(gè)程序進(jìn)行邏

20、輯綜合后的結(jié)果如下:六.條件語句if-else條件分支語句高級(jí)程序語句|、case分支控制語句6.1 ifelse條件分支語句,兩路分支格式1if (條件表達(dá)式,)語句或語句塊;為型L格式2if (v條件表達(dá)式)語句或語句塊1 ;.else語句或語句塊2;|多路分支格式3 if(v條件表達(dá)式1 > )語句或語句塊1else if (v條件表達(dá)式2> )語句或語句塊2:else if (v條件表達(dá)式n> )語句或語句塊n;else語句或語句塊n+1 ;三種格式中的條件表達(dá)式A,一般為邏輯表達(dá)式或關(guān) 系表達(dá)式,也可以是一位的變量。系統(tǒng)對(duì)V條件表達(dá)式的值進(jìn)行判斷,若為0、X、z,

21、按“假”處理;若為1 ,按“真”處理,執(zhí)行指定語句。語句 可以是單句,也可以是多句,多句時(shí)用begin-end括起來。為了清晰表達(dá)if和else的匹配關(guān)系,建議最好用 begin-end將“指定語句”括起來。ifelse條件分支語句應(yīng)用舉例module sel-from-three (q,sela,selb,a,b,c);input sela,selb,a,b,c ;output q ;regq ;語句q=cq=bq=aq=aalways (sela or selb or a or b or c) beginsela selb000110if (sela) q=a ;else if (selb

22、) q=b ;else q=c;endendmodule注意隱含的優(yōu)先級(jí)關(guān)系。排在前面的 分支項(xiàng)指定的操作具有較高優(yōu)先級(jí)。 例:11時(shí),執(zhí)行q=a,不是q=b.6.2 case分支控制語句相對(duì)ifelse語句只有兩個(gè)分支而言,case語句是一 種多分支語句。所以,常用來描述譯碼器、多路數(shù)據(jù)選 擇器、微處理器的指令譯碼和有限狀態(tài)機(jī)。全等比較分支控制case分支控制語句有三種形式: case casex casez局部比較 分支控制按位全等比較case語句示例case (op_code)v_2' b00 : out = a | b X 2f b01 : out = a & b ;

23、2f b10 : out = (a & b);2' b11 : out = a A b ; default: out = 0 ;endcasecase語句在執(zhí)行時(shí),控制表 達(dá)式和分支項(xiàng)表達(dá)式之間進(jìn) 行的是按位全等比較,只有 對(duì)應(yīng)每一位都相等,才認(rèn)為 控制表達(dá)式和分支項(xiàng)表達(dá)式 是相等的。顯然,這種比較 包含了信號(hào)的0、1、x、 z四種狀態(tài)。根據(jù)按位全等比較的特點(diǎn),要求case語句中的控制 表達(dá)式和分支項(xiàng)表達(dá)式必須具有相同的位寬。當(dāng)各個(gè)分 支項(xiàng)表達(dá)式以常數(shù)形式給出時(shí),必須明確標(biāo)明位寬,否 則編譯器默認(rèn)為與機(jī)器字長相同的位寬(例如32位)。能不能忽略信號(hào)的X和Z邏輯狀態(tài)的比較?這就引出了 “局部比較”分支控制的casex和casez語句。利用控制表達(dá)式和分支項(xiàng) 表達(dá)式中某些位的比較結(jié) 果控制程序流向。

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論