嵌入式技術(shù)的工程法課件:第二章 基于Verilog HDL的電路設(shè)計(jì)_第1頁
嵌入式技術(shù)的工程法課件:第二章 基于Verilog HDL的電路設(shè)計(jì)_第2頁
嵌入式技術(shù)的工程法課件:第二章 基于Verilog HDL的電路設(shè)計(jì)_第3頁
嵌入式技術(shù)的工程法課件:第二章 基于Verilog HDL的電路設(shè)計(jì)_第4頁
嵌入式技術(shù)的工程法課件:第二章 基于Verilog HDL的電路設(shè)計(jì)_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、,第二章 基于Verilog HDL的電路設(shè)計(jì),第一節(jié) 典型組合電路設(shè)計(jì)實(shí)例,第二節(jié) 典型時(shí)序電路設(shè)計(jì)實(shí)例,第三節(jié) 基于有限狀態(tài)機(jī)的設(shè)計(jì)方法綜述,第四節(jié) 實(shí)用電路設(shè)計(jì)舉例,第一節(jié) 典型組合電路設(shè)計(jì)實(shí)例,1. 譯碼器,2-4譯碼器的描述,思考:使能低有效,輸出低有效的3-8譯碼器? 使能高有效,輸出低有效的4-10譯碼器?,2. 優(yōu)先權(quán)編碼器,當(dāng)電路的使能有效時(shí),對當(dāng)前優(yōu)先級較高的有效輸入端(事件)進(jìn)行編碼,產(chǎn)生相應(yīng)的編碼輸出并將編碼有效標(biāo)志置為有效。否則,編碼有效標(biāo)志置為無效。,例:利用if-else分支優(yōu)先級的特性,實(shí)現(xiàn)優(yōu)先權(quán)編碼器。 module encode8_3 (none_on ,

2、outcode , a , b, c , d , e , f , g ,h ) ; output none_on ; /有無編碼輸出標(biāo)志 output 2:0 outcode ; /輸入信號優(yōu)先權(quán)編碼 input a,b,c,d,e,f,g,h ; /輸入信號,高電平有效,h優(yōu)先級高 reg 3:0 outtemp ; /定義過程塊內(nèi)被賦值向量 assign none_on , outcode = outtemp ; /標(biāo)志,編碼拼接輸出 always (a or b or c or d or e or f or g or h) begin if ( h ) outtemp = 4b0111

3、; /最高優(yōu)先級 else if ( g ) outtemp = 4b0110 ; else if ( f ) outtemp = 4b0101 ; else if ( e ) outtemp = 4b0100 ; else if ( d ) outtemp = 4b0011 ; else if ( c ) outtemp = 4b0010 ; else if ( b ) outtemp = 4b0001 ; else if ( a ) outtemp = 4b0000 ; else outtemp = 4b1000 ; /無編碼輸出 end endmodule,若增加一個(gè)使能信號,應(yīng)如何描述

4、?,3. 數(shù)據(jù)選擇器,當(dāng)電路的使能有效時(shí),將選擇控制變量指向的輸入數(shù)據(jù)送到輸出端。,例:描述一個(gè)4位四選一電路,module sel_4_4_1 (en, in0, in1, in2, in3, sel, out ) ; input en ; input 3:0 in0, in1, in2, in3 ; / 4路4位輸入數(shù)據(jù) input 2:1 sel ; / 選擇控制 output 3:0 out ; / 輸出 reg 3:0 out ; always (en or in0 or in1 or in2 or in3 or sel ) if ( en=1) out = 4bzzzz ; / 使

5、能無效,輸出高阻 else case ( sel ) / 使能有效,按sel指向,選擇 2b00 : out = in0 ; / 選擇in0送到輸出 2b01 : out = in1 ; 2b10 : out = in2 ; 2b11 : out = in3 ; endcase endmodule,/用if-else語句描述4位四選一 module mux_4_4_1(out,data0,data1,data2,data3,sel); input 2:1 sel ; input 4:1 data0, data1, data2, data3 ; output 4:1 out ; reg 4:1

6、out ; always (data0 or data1 or data2 or data3 or sel) begin if (sel=2b00) out=data0 ; else if (sel=2b01) out=data1 ; else if (sel=2b10) out=data2 ; else out=data3 ; end endmodule,思考:如何添加使能描述?,4. 數(shù)據(jù)分配器,當(dāng)電路的使能有效時(shí),將輸入數(shù)據(jù)送到選擇控制變量指向的輸出端。,例:描述一個(gè)4位14數(shù)據(jù)分配器。,module fen_4_1_4 (en, in, sel, out0, out1, out2, o

7、ut3 ) ; input en ; input 3:0 in ; / 4路4位輸入數(shù)據(jù) input 2:1 sel ; / 選擇控制 output 3:0 out0, out1, out2, out3 ; / 輸出 reg 3:0 out0, out1, out2, out3 ; always ( en or in or sel ) if ( en=1) out0,out1,out2,out3 = 16hzzzz ; / 使能無效,高阻 else case ( sel ) / 使能有效,按sel指向,選擇輸出 2b00 : out0 = in ; / 選擇in送到輸出out0 2b01 :

8、out1 = in ; 2b10 : out2 = in ; 2b11 : out3 = in ; endcase endmodule,5. 奇偶檢驗(yàn)位發(fā)生器,奇(偶)校驗(yàn)碼 = n位信息位 + 奇(偶)校驗(yàn)位,奇校驗(yàn)規(guī)則:校驗(yàn)碼中“1”的個(gè)數(shù)為奇數(shù)。,校驗(yàn)位= ! (Dn:1),偶校驗(yàn)規(guī)則:校驗(yàn)碼中“1”的個(gè)數(shù)為偶數(shù)。,校驗(yàn)位= Dn:1,/奇偶校驗(yàn)位發(fā)生器 module parity_bit ( d, flag, p_bit ) ; input 7:1 d ; input flag ; / “1”奇;“0”偶 output p_bit ; assign p_bit = ( flag=1 )

9、 ? ! (d) : d ; endmodule,6. 七段數(shù)碼管字形發(fā)生器,七段數(shù)碼管字形發(fā)生器,共陰驅(qū)動? 共陽驅(qū)動?,七段數(shù)碼管字形發(fā)生器原理根據(jù)輸入8421碼,給出對應(yīng)十進(jìn)制數(shù)字符號的七段字形輸出,以驅(qū)動數(shù)碼管顯示該數(shù)字符號。對于共陰極數(shù)碼管,字形輸出應(yīng)為高有效;對于共陽極數(shù)碼管,字形輸出應(yīng)為低有效。,module decode47(a,b,c,d,e,f,g,d8,d4,d2,d1,en); output a, b, c, d, e, f, g ; input d8, d4, d2, d1, en ; reg a, b, c, d, e, f, g ; always(d8 or d4

10、 or d2 or d1 or en) if (en=0) a,b,c,d,e,f,g = 7b0000000 ; / 使能無效,滅 else case ( d8, d4, d2, d1 ) 4d0: a,b,c,d,e,f,g = 7b1111110 ; 4d1: a,b,c,d,e,f,g = 7b0110000 ; 4d2: a,b,c,d,e,f,g = 7b1101101 ; 4d3: a,b,c,d,e,f,g = 7b1111001 ; 4d4: a,b,c,d,e,f,g = 7b0110011 ; 4d5: a,b,c,d,e,f,g = 7b1011011 ; 4d6: a

11、,b,c,d,e,f,g = 7b1011111 ; 4d7: a,b,c,d,e,f,g = 7b1110000 ; 4d8: a,b,c,d,e,f,g = 7b1111111 ; 4d9: a,b,c,d,e,f,g = 7b1111011 ; default: a,b,c,d,e,f,g = 7b0000000 ; endcase endmodule,7. 比較器,比較器原理根據(jù)數(shù)據(jù)A、B的比較結(jié)果,給出相應(yīng) 的標(biāo)志信號。,/行為描述,比較器,有參數(shù)定義 module compare_1 (agb, aeb, alb, a, b) ; parameter size = 1 ; inpu

12、t size:1 a, b ; output agb,aeb,alb ; reg agb,aeb,alb ; always (a or b) if (ab) begin agb=1 ; aeb=0 ; alb=0 ; end else if (a=b) begin agb=0 ; aeb=1 ; alb=0 ; end else if (ab) begin agb=0 ; aeb=0 ; alb=1 ; end endmodule,8. 代碼轉(zhuǎn)換電路,常用:自然碼、8421碼、余3碼、2421碼、循環(huán)碼 之間的轉(zhuǎn)換。,/ 8421碼轉(zhuǎn)換成余3碼 module T_8421_y3 ( in, e

13、n, out ) ; input 3:1 in ; output 3:1 out ; input en ; reg 3:1 out ; always ( in or en ) if ( en=1 ) out = 4bzzzz ; / 使能無效 else if ( in4d9 ) out = 4bzzzz ; / 偽碼 else out = = in + 4b0011 ; endmodule,第二節(jié) 典型時(shí)序電路電路設(shè)計(jì)實(shí)例,1. 寄存器,/ 8位讀、寫寄存器的描述 module reg_8bit ( clk, din, cs, rd, wr, qout ) ; input clk, cs, r

14、d, wr ; input 7:0 din ; output 7:0 qout ; reg 7:0 qout, temp; always ( posedge clk ) if ( cs=1 end endmodule,思考:如何增加同步清零或異步清零描述?,2. 寄存器組的讀寫控制,/ 8位4寄存器組的讀、寫描述 module reg_8bit ( clk, din, cs, rd, wr, addr, qout ) ; input clk, cs, rd, wr ; input 2:1 addr ; input 7:0 din ; output 7:0 qout ; reg 7:0 qout

15、 ; reg 7:0 temp 3:0 ; / 定義寄存器組 always ( posedge clk ) if ( cs=1 endmodule,0 0 保持,0 1 右移,1 0 左移,1 1 置數(shù),右移輸出,左移輸出,異 步 清 零,3. 移位寄存器,四位雙向移位寄存器的Verilog HDL模型,module my_194 ( clr, clk, data, Rin, Lin, sel, Qout ) ; input clr, clk, Rin, Lin; input 1:0 sel; input 3:0 data; output 3:0 Qout; reg 3:0 Qout; alw

16、ays ( posedge clk or negedge clr ) if ( !clr ) Qout 1;Qout3=Rin;end 2b10 : begin Qout=Qout1;Qout0=Lin;end 2b11 : Qout=data; endcase endmodule,4. 計(jì)數(shù)器,對輸入脈沖進(jìn)行編碼計(jì)數(shù)的電路,脈沖,自然編碼,000 001 010 011 100 101 110 111 000 ,格雷碼,000 001 011 010 110 111 101 100 000 ,余3碼,0011 0100 0101 0110 0111 1000 1001 1010 0011 ,

17、module counter_M ( clrn, clk, enp, ent, ldn, din, qout, rco ) ; parameter din_width = d6; parameter qout_width = d6; parameter counter_size = d60; input clrn, clk, ent, enp, ldn ; input din_width-1 : 0 din ; output qout_width-1 : 0 qout ; output rco ; reg qout_width-1 : 0 qout ; always ( posedge clk

18、 ) begin if ( clrn ) qout = 0 ; else if ( !ldn ) qout = din; else if ( enp endmodule,基于Verilog HDL的任意模數(shù)計(jì)數(shù)器?,參數(shù)化設(shè)計(jì),M=60,計(jì)數(shù)狀態(tài): 0 counter_size-1,如何實(shí)現(xiàn)? din counter_size-1,同時(shí)實(shí)現(xiàn)?,在Quartus中形成參數(shù)化的計(jì)數(shù)器模塊,調(diào)整參數(shù)設(shè)計(jì)一個(gè)模100的計(jì)數(shù)器:,5. 移位型計(jì)數(shù)器,(1)環(huán)形計(jì)數(shù)器,若復(fù)位時(shí),寄存器為1000,則右移循環(huán)“1”;,若復(fù)位時(shí),寄存器為0111,則右移循環(huán)“0”;,同理,可構(gòu)成左移結(jié)構(gòu),/ 四位右移循環(huán)“1

19、”的描述之一 module huan_1 ( clk, rst, q ) ; input clk,rst ; output 3:0 q ; reg 3:0 q ; always ( posedge clk or negedge rst ) if ( ! rst ) q=4b1000; else case ( q ) 4b1000 : q=4b0100; 4b0100 : q=4b0010; 4b0010 : q=4b0001; 4b0001 : q=4b1000; default : q=4b1000; endcase endmodule,/ 四位右移循環(huán)“1”的描述之二 module hua

20、n_1 ( clk, rst, q ) ; input clk,rst ; output 3:0 q ; reg 3:0 q ; always ( posedge clk or negedge rst ) if ( ! rst ) q1 ; q3 = q0 ; end endmodule,(2)扭環(huán)形計(jì)數(shù)器,同理,可構(gòu)成左移結(jié)構(gòu),以三位為例,復(fù)位時(shí)000,則有:,0 0 0 1 0 0 1 1 0 1 1 1 0 1 1 0 0 1,也稱:步進(jìn)碼計(jì)數(shù)器,特點(diǎn):可靠性編碼,/ 四位右移扭環(huán)計(jì)數(shù)器的描述 module huan_1 ( clk, rst, q ) ; input clk,rst ; output 3:0 q ; reg 3:0 q ; always ( posedge clk or negedge rst ) if ( ! rst ) q1 ; q3 = q0 ; end endmodule,6. 節(jié)拍(脈沖)發(fā)生器,一般計(jì)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論