資源描述:
《第7章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、第7章數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例7.1半整數(shù)分頻器的設(shè)計(jì)7.2音樂(lè)發(fā)生器7.32FSK/2PSK信號(hào)產(chǎn)生器7.4實(shí)用多功能電子表7.5交通燈控制器7.6數(shù)字頻率計(jì)習(xí)題7.1半整數(shù)分頻器的設(shè)計(jì)在數(shù)字系統(tǒng)設(shè)計(jì)中,分頻器是一種基本電路。分頻器的實(shí)現(xiàn)非常簡(jiǎn)單,可采用標(biāo)準(zhǔn)的計(jì)數(shù)器,也可采用可編程邏輯器件來(lái)實(shí)現(xiàn)一個(gè)整數(shù)分頻器。分頻器通常用來(lái)對(duì)某個(gè)給定頻率進(jìn)行分頻,得到所需的頻率。在某些場(chǎng)合下,用戶所需要的頻率與頻率時(shí)鐘源不是整數(shù)倍關(guān)系,此時(shí)可采用小數(shù)分頻器進(jìn)行分頻。7.1.1小數(shù)分頻的基本原理設(shè)有一個(gè)5MHz的時(shí)鐘源,但電路中需要產(chǎn)生一
2、個(gè)2MHz的時(shí)鐘信號(hào),由于分頻比為2.5,因此整數(shù)分頻器將不能勝任。采用可編程邏輯器件實(shí)現(xiàn)分頻系數(shù)為2.5的分頻器,可采用以下方法:設(shè)計(jì)一個(gè)模3的計(jì)數(shù)器,再設(shè)計(jì)一個(gè)扣除脈沖電路,加在模3計(jì)數(shù)器輸出之后,每來(lái)兩個(gè)脈沖就扣除一個(gè)脈沖(實(shí)際上是使被扣除的脈沖變成很窄的脈沖,可由異或門實(shí)現(xiàn)),就可以得到分頻系數(shù)為2.5的小數(shù)分頻器。采用類似方法,可以設(shè)計(jì)分頻系數(shù)為任意半整數(shù)的分頻器。小數(shù)分頻的基本原理為脈沖吞吐計(jì)數(shù)法:設(shè)計(jì)兩個(gè)不同分頻比的整數(shù)分頻器,通過(guò)控制單位時(shí)間內(nèi)兩種分頻比出現(xiàn)的不同次數(shù),從而獲得所需的小數(shù)分頻值。例如
3、設(shè)計(jì)一個(gè)分頻系數(shù)為10.1的分頻器,可以將分頻器設(shè)計(jì)成9次10分頻,1次11分頻,這樣總的分頻值為(9×10+1×11)/(9+1)=10.1從這種實(shí)現(xiàn)方法的特點(diǎn)可以看出,由于分頻器的分頻值在不斷改變,因此分頻后得到的信號(hào)抖動(dòng)較大。當(dāng)分頻系數(shù)為N-0.5(N為整數(shù))時(shí),可控制扣除脈沖的時(shí)間,使輸出為一個(gè)穩(wěn)定的脈沖頻率,而不是一次N分頻,一次N-1分頻。7.1.2電路組成設(shè)需要設(shè)計(jì)一個(gè)分頻系數(shù)為N-0.5的分頻器,其電路可由一個(gè)模N計(jì)數(shù)器、一個(gè)二分頻器和一個(gè)異或門組成,如圖7-1所示。在實(shí)現(xiàn)時(shí),模N計(jì)數(shù)器可設(shè)計(jì)成帶預(yù)
4、置的計(jì)數(shù)器,這樣就可以實(shí)現(xiàn)任意分頻系數(shù)為N-0.5的分頻器。圖7-1通用半整數(shù)分頻器7.1.3VHDL程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdeccountISPORT(inclk:INSTD_LOGIC;--時(shí)鐘源preset:INSTD_LOGIC_VECTOR(3DOWNTO0);--預(yù)置分頻值Noutclk1:OUTSTD_LOGIC;outclk2:BUFFERSTD_LOGIC--輸出時(shí)
5、鐘);ENDdeccount;ARCHITECTUREdeccount_archOFdeccountISSIGNALclk,divide2:STD_LOGIC;SIGNALcount:STD_LOGIC_VECTOR(3DOWNTO0);BEGINclk<=inclkXORdivide2;--inclk與divide2異或后作為模N計(jì)數(shù)器的時(shí)鐘outclk1<=inclk;PROCESS(clk)BEGINIF(clk'eventANDclk='1')THENIF(count="0000")THENcount<=p
6、reset-1;--置整數(shù)分頻值Noutclk2<='1';ELSEcount<=count-1;--模N計(jì)數(shù)器減法計(jì)數(shù)outclk2<='0';ENDIF;ENDIF;ENDPROCESS;PROCESS(outclk2)BEGINIF(outclk2'eventANDoutclk2='1')THENdivide2<=NOTdivide2;--輸出時(shí)鐘二分頻ENDIF;ENDPROCESS;ENDdeccount_arch;圖7-2半整數(shù)分頻器外部接口以上程序?qū)崿F(xiàn)對(duì)時(shí)鐘源inclk進(jìn)行分頻系數(shù)為N-0.5的分頻,
7、得到輸出頻率outclk2。preset輸入端口是預(yù)置分頻值N,本例中preset設(shè)為4位寬的位矢量,也即分頻系數(shù)為16以內(nèi)的半整數(shù)值。若分頻系數(shù)大于16,需同時(shí)增大preset和count的位寬,兩者的位寬則要求始終一致。本設(shè)計(jì)的外部接口如圖7-2所示,程序中設(shè)置outclk1是為了方便觀察輸入信號(hào)的波形,以與輸出信號(hào)outclk2比較。7.1.4仿真結(jié)果上述半整數(shù)分頻器的仿真波形如圖7-3所示。圖7-3半整數(shù)分頻器仿真波形圖7.1.5下載驗(yàn)證鎖定引腳時(shí)將inclk連至CLK1,preset連至K0~K3,out
8、clk1連至TESTOUT1(測(cè)試1腳),outclk2連至TESTOUT2(測(cè)試2腳),綜合適配后將配置數(shù)據(jù)下載入EDA實(shí)驗(yàn)平臺(tái)(技術(shù)資料詳見(jiàn)附錄)的FPGA中(有關(guān)CLK1等引腳在FPGA芯片引腳中的序號(hào),請(qǐng)參見(jiàn)附錄的附圖1),通過(guò)改變K0~K3狀態(tài)觀察測(cè)試1腳和測(cè)試2腳上的波形,測(cè)試結(jié)果與仿真結(jié)果一致。7.2音樂(lè)發(fā)生器本設(shè)計(jì)利用可編程邏輯器件配以一個(gè)小