




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(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)描述分為門級結(jié)構(gòu)描述和模塊級結(jié)構(gòu)描述,本 課程只介紹前者。二.門級結(jié)構(gòu)描述(門級建模)門級結(jié)構(gòu)描述就是利用Verilog HDL內(nèi)置的基本門級 元件以及它們之間的連接來構(gòu)筑邏輯
2、電路的模型。“基本門級元件”是一種特殊的模塊,由Verilog HDL 語言本身提供,不需要用戶定義。同學(xué)應(yīng)掌握“基本門級 元件”的分類、調(diào)用格式及其應(yīng)用。三.Verilog HDL內(nèi)置基本門元件c=> | 多輸入門只有一 個輸出與門: 與非門:或門:或非門: 異或門:異或非門:and nand or nor xor xnor元件模型:v門級元件名(v輸出:輸入輸入2,<輸入n>)=> 多輸出門關(guān)鍵字V門級元件名(V輸出1>,輸出2>,,輸出g v輸入)三態(tài)門關(guān)鍵字高電平使能緩沖器:bufifl低電平使能緩沖器:butiW高電平使能非門:notifl低電平使
3、能非門:notifl)元件模型元件名(V數(shù)據(jù)輸出,,數(shù)據(jù)輸入,控制輸入)對于高電平使能緩沖器“bufin",若控制輸入為“1”, 則輸入數(shù)據(jù)被傳送到數(shù)據(jù)輸出端;若控制輸入為“0%則數(shù) 據(jù)輸出端處于高阻狀態(tài),九對于低電平使能緩沖器“bunnr,若控制輸入為飛”, 則輸入數(shù)據(jù)被傳送到數(shù)據(jù)輸出端;若控制輸入為力”,則數(shù) 據(jù)輸出端處于高阻狀態(tài),對于高電平使能非門“notin*若控制輸入為力”,則 數(shù)據(jù)輸出端的邏輯狀態(tài)是輸入的,邏輯非”;若控制輸入為 “0”,則數(shù)據(jù)輸出端處于高阻狀態(tài)對于低電平使能非門“notim”,若控制輸入為飛”,則 數(shù)據(jù)輸出端的邏輯狀態(tài)是輸入的“邏輯非”;若控制輸入為 力
4、”,則數(shù)據(jù)輸出端處于高阻狀態(tài)四.Verilog HDL內(nèi)置基本門元件的調(diào)用門級元件實例語句的格式:v門級元件名實例名(端口連接表);應(yīng)按照各元件模型中輸出、輸入、控 制的順序描述信號的連接。當(dāng)對同一個基本門級元件進行多次調(diào)用時,可采用 F面的元件實例語句格式:v門級元件名v實例名1> (端口連接表1),v實例名2> (端口連接表2),實例名(端口連接表n);ini加2 outl門級元件實例語句及其對應(yīng)的 邏輯示意圖A1門級元件實例語句及其對應(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門級結(jié)構(gòu)描述模塊的設(shè)計模型六.Verilog HDL門級建模舉例例:對下列邏輯電路進行Verik唱HDL門級建模。六.Verilog HDL門級建模舉例例:對下列邏輯電路進行Verik唱HDL門級建模。or xorinput wire and ,定義三個內(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門級建模描述的是電路結(jié)構(gòu),看起來 比較復(fù)雜。如果閱讀一個門級建模程序, 很難分析其所描述的功能。第四節(jié)Verilog HDL的數(shù)據(jù)流描述模塊一數(shù)據(jù)流描述根據(jù)信號(變量)之間的邏輯關(guān)系,采用持續(xù)賦值 語句描述邏輯電路的方式,稱為數(shù)據(jù)流描述。狹義理解:將傳統(tǒng)意義上的“邏輯表達式“,運用 Verilog HDL中的運算符,改變成持續(xù)賦值語句 (assign語句)中的表達式。二.Verilog HDL數(shù)據(jù)流描述模塊的設(shè)計模型modul
7、e模塊名(端口列表);端口定義input輸入端口output堆出端口數(shù)據(jù)類型說明 wireVerilog 數(shù)據(jù)流 描述模 塊基本 結(jié)構(gòu)邏輯功能定義 assign v邏輯表達式 assign邏輯表達式n;endmodule三.持續(xù)賦值語句(assign語句)assign連線型變量名=賦值表達式;wire型變量4用Verilog HDL運算符構(gòu)成的合法表達式wire型變量沒有數(shù)據(jù)保持能力,只有被連續(xù)驅(qū)動后,才 能取得確定值。(而寄存器型變量只要在某時刻得到過一次 過程賦值,就能一直保持該值,直到下一次過程賦值。)若一個連線型變量沒有得到任何連續(xù)驅(qū)動,它的取值將 是不定態(tài)“武。assign連續(xù)賦值語
8、句就是實現(xiàn)對連線型變量進行連續(xù)驅(qū) 動的一種方法。進一步講,assign持續(xù)賦值語句對wire型變量賦值 后,始終監(jiān)視賦值表達式中的每一個操作數(shù),只要賦值表 達式中任一操作數(shù)發(fā)生變化,立即對wire型變量進行更新 操作,以保持對wire型變量的連續(xù)驅(qū)動。體現(xiàn)了組合邏輯 電路的特征任何輸入的變化,立即影響輸出。所以, 可根據(jù)組合電路的邏輯表達式,用assign持續(xù)賦值語句進 行描述。持續(xù)賦值語句應(yīng)用舉例nmodule assignment ( z 9 x , y );根據(jù)端口信號類型的隱input 3:0 x , y ;含特性,此句可省。output 3:0 z ;1wire 3:0 z, x,
9、y ;assign z = x & v ;一這里,已不是傳統(tǒng)意義上的endmodule . 、單變量與運算,而是兩個相同位寬向量的按位與運算。對應(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 ;將如何?實際應(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ù)流描述舉例例:請用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è)重于表示一個電路由哪些基本元 件組成,以及這些基本元件的相互連接關(guān)系。邏輯電路的數(shù)據(jù)流描述側(cè)重于邏輯表達式以及Verilog HDL中運算符的靈活運用。行為描述關(guān)注邏輯電路輸入、輸出的因果關(guān)系(行為特 性),即在何種輸入條件下,產(chǎn)生何種輸出(操作),并不 關(guān)心電路的內(nèi)部結(jié)構(gòu)。EDA的綜合工具能自動將行為描述轉(zhuǎn) 換成電路結(jié)構(gòu),形成網(wǎng)表文件。顯然,當(dāng)電路的規(guī)模較大或時序關(guān)系較復(fù)雜時,通常采 用行為描述方式進行設(shè)計.二.Verilog HD
12、L行為描述模塊的設(shè)計模型Verilog 行為描述 模塊基本 結(jié)構(gòu)module模塊名 (端口列表);端口定義input 輸入端口output輸出端口數(shù)據(jù)類型說明regparameter邏輯功能定義always (敏感事件列表)begin阻塞、非阻塞、if-else. case、for等行為語句 endendmodule三.行為描述中的always進程應(yīng)用模板|always (v敏感信號表達式)begin/過程賦值語句/if-else, case, casex, casez選擇語句/for循環(huán)語句end一般情況下,always進程帶有觸發(fā)條件,這些觸發(fā)條 件列在敏感信號表達式中,只有當(dāng)觸發(fā)條件滿足
13、時, beginend塊語句才被執(zhí)行。在一個Verilog HDL模塊中可以有多個always進程, 它們是并發(fā)執(zhí)行的。敏感信號表達式又稱敏感事件列表。當(dāng)該表達式中任意一個信號(變量) 的值改變時,就會引發(fā)塊內(nèi)語句的執(zhí)行。因此,應(yīng)將所有影響 塊內(nèi)取值的信號(變量)列入.多個敏感信號用“or”連接。例如: ( a ) 當(dāng)信號a的值發(fā)生改變時 (a or b) 當(dāng)信號a或信號b的值發(fā)生改變時這里a和b稱為電平敏感型信號,代表的觸發(fā)事件是,信 號除了保持穩(wěn)定狀態(tài)以外的任意一種變化過程。這種電平敏感型信號列表常用在組合邏輯的描述中,以 體現(xiàn)輸入隨時影響輸出的組合邏輯特性。再例如: ( posedge
14、clock )當(dāng)clock的上升沿到來時 ( negedge clock )當(dāng)clock的下降沿到來時 ( posedge clock or negedge reset)當(dāng)clock的上升沿到來或當(dāng)reset的下降沿到來時這里的clock和reset信號稱為邊沿敏感型信號,posedge 描述對信號的上升沿敏感;negedge描述對信號的下降沿敏感。 顯然,這種邊沿敏感型信號列表適合描述同步時序電路,以體 現(xiàn)同步時序電路的特點在統(tǒng)一時鐘作用下改變電路的狀態(tài)。posedge 代表的觸發(fā)事件是,信號發(fā)生了正跳變。 0-x ,0-z , 0-*1 , X-1 , z-*1negedge一代表的觸發(fā)事
15、件是,信號發(fā)生了負(fù)跳變。 1-x , 1-*z ,1-0, x-0 , z-0在每一個always過程語句中,最好只使用一種類型 的敏感信號列表,不要混合使用。以避免使用不同的綜合 工具時發(fā)生錯誤。四.串行塊由關(guān)鍵字beginend界定的一組語句。begin語句1語句2end串行塊的特點: 一般情況下,塊內(nèi)語句順序執(zhí)行,前面一條語句執(zhí)行畢 后,才開始執(zhí)行下一條語句。模塊運行時,遇到串行塊,塊內(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整個串行塊執(zhí)行時間等于塊內(nèi)各條語句執(zhí)行時間的總和。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七器算機、,w1=A&B;順序執(zhí)行:w2=(C&D);一( /F=w1|w2;end endmodule五.過程賦值語句過程賦值語句必須放在always進程中,分為阻塞型 和非阻塞型,其基本格式為:(被賦值變量)(賦值操作符(賦值表達式過程賦
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í)行過程:先計算賦值表達式”的 值,然后立即賦值給”左邊的“被賦值變量”。特點:在b4iii.eiig串行塊語句中,各條非阻塞過程賦值
18、語句對應(yīng)的 “賦值表達式”同時開始計算。在過程塊結(jié)束時,才將結(jié)果賦值給各個“被賦值變量可理解為先同時采樣,最后一起賦值。beginA<=B; /SI -B<= A; Z/S2 end這里,SI、S2語句均為非阻塞賦 值,立即開始計算B和A值(上 次的值)。在過程塊結(jié)束時,進 行賦值操作,將計算得到的B,A 的值賦給變量A.B。(實現(xiàn)A,B交 換)如果不能很好地理解阻塞賦值與非阻塞賦值的區(qū)別, 往往給設(shè)計帶來麻煩,特別是在可綜合邏輯模塊中,不易 把握reg型變量的賦值過程。建議同學(xué)在編寫模塊時,只 采用一種過程賦值方式,并且最好不要將輸出再次作為輸 入使用。觀察下面的示例。例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 為上個時鐘周期b的值。結(jié)果:b、c都更新為a的值。為了更好地理解阻塞賦值與非阻塞賦值的區(qū)別,我們這兩個程序進行邏
20、輯綜合后的結(jié)果如下:六.條件語句if-else條件分支語句高級程序語句|、case分支控制語句6.1 ifelse條件分支語句,兩路分支格式1if (條件表達式,)語句或語句塊;為型L格式2if (v條件表達式)語句或語句塊1 ;.else語句或語句塊2;|多路分支格式3 if(v條件表達式1 > )語句或語句塊1else if (v條件表達式2> )語句或語句塊2:else if (v條件表達式n> )語句或語句塊n;else語句或語句塊n+1 ;三種格式中的條件表達式A,一般為邏輯表達式或關(guān) 系表達式,也可以是一位的變量。系統(tǒng)對V條件表達式的值進行判斷,若為0、X、z,
21、按“假”處理;若為1 ,按“真”處理,執(zhí)行指定語句。語句 可以是單句,也可以是多句,多句時用begin-end括起來。為了清晰表達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)先級關(guān)系。排在前面的 分支項指定的操作具有較高優(yōu)先級。 例:11時,執(zhí)行q=a,不是q=b.6.2 case分支控制語句相對ifelse語句只有兩個分支而言,case語句是一 種多分支語句。所以,常用來描述譯碼器、多路數(shù)據(jù)選 擇器、微處理器的指令譯碼和有限狀態(tài)機。全等比較分支控制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í)行時,控制表 達式和分支項表達式之間進 行的是按位全等比較,只有 對應(yīng)每一位都相等,才認(rèn)為 控制表達式和分支項表達式 是相等的。顯然,這種比較 包含了信號的0、1、x、 z四種狀態(tài)。根據(jù)按位全等比較的特點,要求case語句中的控制 表達式和分支項表達式必須具有相同的位寬。當(dāng)各個分 支項表達式以常數(shù)形式給出時,必須明確標(biāo)明位寬,否 則編譯器默認(rèn)為與機器字長相同的位寬(例如32位)。能不能忽略信號的X和Z邏輯狀態(tài)的比較?這就引出了 “局部比較”分支控制的casex和casez語句。利用控制表達式和分支項 表達式中某些位的比較結(jié) 果控制程序流向。
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《單片機技術(shù)應(yīng)用》 課件
- 節(jié)能環(huán)保居間服務(wù)合同范例
- 道路交通規(guī)劃方案介紹
- 低空經(jīng)濟行業(yè)報告
- 醫(yī)院裝修大包合同參考范本
- 投資可行性分析報告包括哪些內(nèi)容
- 低空經(jīng)濟涉及的行業(yè)
- 汽車租賃股權(quán)轉(zhuǎn)讓居間合同
- 建筑節(jié)能工程施工方案
- 互聯(lián)網(wǎng)產(chǎn)品立項報告
- 2024年江蘇醫(yī)藥職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫完整
- qc工作崗位職責(zé)
- 【體能大循環(huán)】聚焦體能循環(huán)-探索運動奧秘-幼兒園探究體能大循環(huán)有效開展策略課件
- 采購人員廉潔從業(yè)課件培訓(xùn)
- 2024年單招計算機試題題庫及答案
- XX藥業(yè)公司受試者日記卡
- 多組學(xué)數(shù)據(jù)的整合與分析
- 小學(xué)安全教育《平安校園 拒絕欺凌》劉偉【省級】優(yōu)質(zhì)課
- 靜脈輸液的不良反應(yīng)及處理原則考核試題及答案
- 水利設(shè)施維護投標(biāo)方案(技術(shù)標(biāo))
- 《建筑概論》期末考試試卷附答案
評論
0/150
提交評論