第7章數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例ppt課件_第1頁
第7章數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例ppt課件_第2頁
第7章數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例ppt課件_第3頁
第7章數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例ppt課件_第4頁
第7章數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例ppt課件_第5頁
已閱讀5頁,還剩165頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 第第7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.1 半整數(shù)分頻器的設(shè)計(jì)半整數(shù)分頻器的設(shè)計(jì) 7.2 音樂發(fā)生器音樂發(fā)生器 7.3 2FSK/2PSK信號(hào)產(chǎn)生器信號(hào)產(chǎn)生器7.4 實(shí)用多功能電子表實(shí)用多功能電子表 7.5 交通燈控制器交通燈控制器 7.6 數(shù)字頻率計(jì)數(shù)字頻率計(jì) 習(xí)題習(xí)題 第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.1 半整數(shù)分頻器的設(shè)計(jì)半整數(shù)分頻器的設(shè)計(jì) 在數(shù)字系統(tǒng)設(shè)計(jì)中,分頻器是一種基本電路。分頻器的實(shí)現(xiàn)非常簡單,可采用標(biāo)準(zhǔn)的計(jì)數(shù)器,也可采用可編程邏輯器件來實(shí)現(xiàn)一個(gè)整數(shù)分頻器。分頻器通常用來對(duì)某個(gè)給定頻率進(jìn)行分頻,得到所

2、需的頻率。在某些場合下,用戶所需要的頻率與頻率時(shí)鐘源不是整數(shù)倍關(guān)系,此時(shí)可采用小數(shù)分頻器進(jìn)行分頻。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.1.1 小數(shù)分頻的基本原理 設(shè)有一個(gè)5 MHz的時(shí)鐘源,但電路中需要產(chǎn)生一個(gè)2 MHz的時(shí)鐘信號(hào),由于分頻比為2.5,因此整數(shù)分頻器將不能勝任。 采用可編程邏輯器件實(shí)現(xiàn)分頻系數(shù)為2.5的分頻器,可采用以下方法:設(shè)計(jì)一個(gè)模3的計(jì)數(shù)器,再設(shè)計(jì)一個(gè)扣除脈沖電路,加在模3計(jì)數(shù)器輸出之后,每來兩個(gè)脈沖就扣除一個(gè)脈沖(實(shí)際上是使被扣除的脈沖變成很窄的脈沖,可由異或門實(shí)現(xiàn)),就可以得到分頻系數(shù)為2.5的小數(shù)分頻器。采用類似方法,可以設(shè)計(jì)分頻系數(shù)為任意半整數(shù)的

3、分頻器。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 小數(shù)分頻的基本原理為脈沖吞吐計(jì)數(shù)法:設(shè)計(jì)兩個(gè)不同分頻比的整數(shù)分頻器,通過控制單位時(shí)間內(nèi)兩種分頻比出現(xiàn)的不同次數(shù),從而獲得所需的小數(shù)分頻值。例如設(shè)計(jì)一個(gè)分頻系數(shù)為10.1的分頻器,可以將分頻器設(shè)計(jì)成9次10分頻,1次11分頻,這樣總的分頻值為 (910+111)/(9+1) =10.1 第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 從這種實(shí)現(xiàn)方法的特點(diǎn)可以看出,由于分頻器的分頻值在不斷改變,因此分頻后得到的信號(hào)抖動(dòng)較大。 當(dāng)分頻系數(shù)為N-0.5(N為整數(shù))時(shí),可控制扣除脈沖的時(shí)間,使輸出為一個(gè)穩(wěn)定的脈沖頻率,而不是一次N分頻,一次N-

4、1分頻。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 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ù)置的計(jì)數(shù)器,這樣就可以實(shí)現(xiàn)任意分頻系數(shù)為N-0.5的分頻器。 第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 圖7-1 通用半整數(shù)分頻器異或門模N計(jì)數(shù)器f0/(N0.5)二分頻器f0/(2N1)f0第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.1.3 VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEE

5、E.STD_LOGIC_UNSIGNED.ALL; ENTITY deccount IS PORT ( inclk: IN STD_LOGIC;-時(shí)鐘源 preset: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -預(yù)置分頻值N第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 outclk1: OUT STD_LOGIC; outclk2: BUFFER STD_LOGIC-輸出時(shí)鐘 );END deccount; ARCHITECTURE deccount_arch OF deccount ISSIGNAL clk, divide2: STD_LOGIC;SIGNAL

6、count: STD_LOGIC_VECTOR(3 DOWNTO 0);第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 BEGINclk=inclk XOR divide2; -inclk與divide2異或后作為模N計(jì)數(shù)器的時(shí)鐘outclk1=inclk;PROCESS(clk)BEGIN IF(clkevent AND clk=1) THEN IF(count=0000) THEN第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 count=preset-1;-置整數(shù)分頻值N outclk2=1; ELSE count=count-1;-模N計(jì)數(shù)器減法計(jì)數(shù) outclk2=0; END

7、IF; END IF;END PROCESS; PROCESS(outclk2)第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 BEGIN IF(outclk2event AND outclk2=1) THEN divide2=NOT divide2;-輸出時(shí)鐘二分頻 END IF;END PROCESS;END deccount_arch;第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 圖7-2 半整數(shù)分頻器外部接口INCLKPRESET3.0OUTCLK1OUTCLK2第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 以上程序?qū)崿F(xiàn)對(duì)時(shí)鐘源inclk進(jìn)行分頻系數(shù)為N-0.5的分頻,得到輸

8、出頻率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 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.1.4 仿真結(jié)果 上述半整數(shù)分頻器的仿真波形如圖7-3所示。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 圖7-3 半整數(shù)分頻器仿真波形圖 第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.1.5 下載

9、驗(yàn)證 鎖定引腳時(shí)將inclk連至CLK1,preset連至K0K3,outclk1連至TESTOUT1(測試1腳),outclk2連至TESTOUT2(測試2腳),綜合適配后將配置數(shù)據(jù)下載入EDA實(shí)驗(yàn)平臺(tái)(技術(shù)資料詳見附錄)的FPGA中(有關(guān)CLK1等引腳在FPGA芯片引腳中的序號(hào), 請參見附錄的附圖1),通過改變K0K3狀態(tài)觀察測試1腳和測試2腳上的波形,測試結(jié)果與仿真結(jié)果一致。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.2 音音 樂樂 發(fā)發(fā) 生生 器器 本設(shè)計(jì)利用可編程邏輯器件配以一個(gè)小揚(yáng)聲器設(shè)計(jì)了一個(gè)音樂發(fā)生器,其結(jié)構(gòu)如圖7-4所示。本例產(chǎn)生的音樂選自“梁祝片段。第第7 7章章

10、 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 圖7-4 音樂產(chǎn)生器原理框圖預(yù)置計(jì)數(shù)器初始計(jì)數(shù)值樂譜產(chǎn)生器二分頻音名譯揚(yáng)聲器數(shù)碼管4 MHz4 Hz第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.2.1 音名與頻率的關(guān)系 音樂的十二平均率規(guī)定:每兩個(gè)八度音(如簡譜中的中音1與高音1)之間的頻率相差一倍。在兩個(gè)八度音之間,又可分為十二個(gè)半音,每兩個(gè)半音的頻率比為。另外,音名A(簡譜中的低音6)的頻率為440 Hz,音名B到C之間、E到F之間為半音,其余為全音。由此可以計(jì)算出簡譜中從低音1至高音1之間每個(gè)音名的頻率如表7-1所示。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 表7-1 簡譜中的音名與

11、頻率的關(guān)系音名頻率/Hz音名頻率/Hz音名頻率/Hz低音1261.63中音1523.25高音11046.50低音2293.67中音2587.33高音21174.66低音3329.63中音3659.25高音31318.51低音4349.23中音4698.46高音41396.92低音5391.99中音5783.99高音51567.98低音6440中音6880高音61760低音7493.88中音7987.76高音71975.52第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 由于音階頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),故必須將計(jì)算得到的分頻數(shù)四舍五入取整。若基準(zhǔn)頻率過低,則由于分頻系數(shù)過小,四

12、舍五入取整后的誤差較大。若基準(zhǔn)頻率過高,雖然誤碼差變小,但分頻結(jié)構(gòu)將變大。實(shí)際的設(shè)計(jì)應(yīng)綜合考慮兩方面的因素,在盡量減小頻率誤差的前提下取合適的基準(zhǔn)頻率。本例中選取4 MHz的基準(zhǔn)頻率。若無4 MHz的時(shí)鐘頻率,則可以先分頻得到4 MHz或換一個(gè)新的基準(zhǔn)頻率。實(shí)際上,只要各個(gè)音名間的相對(duì)頻率關(guān)系不變,C作1與D作1演奏出的音樂聽起來都不會(huì)“走調(diào)”。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 本例需要演奏的是“梁祝片段,此片段內(nèi)各音階頻率及相應(yīng)的分頻比如表7-2所示。為了減小輸出的偶次諧波分量,最后輸出到揚(yáng)聲器的波形應(yīng)為對(duì)稱方波,因此在到達(dá)揚(yáng)聲器之前,有一個(gè)二分頻的分頻器。表7-2中的分頻比

13、就是從4 MHz頻率二分頻得到的2 MHz頻率基礎(chǔ)上計(jì)算得出的。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 表7-2 各音階頻率對(duì)應(yīng)的分頻值 音名分頻系數(shù)初始值音名分頻系數(shù)初始值低音360672124中音234054786低音551023089中音330345157低音645453646中音525515640低音740504141中音622735918中音138224369高音119116280第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 由于最大的分頻系數(shù)為6067,故采用13位二進(jìn)制計(jì)數(shù)器已能滿足分頻要求。在表7-2中,除給出了分頻比以外,還給出了對(duì)應(yīng)于各個(gè)音階頻率時(shí)計(jì)數(shù)器不同的

14、初始值。對(duì)于不同的分頻系數(shù),只要加載不同的初始值即可。采用加載初始值而不是將分頻輸出譯碼反饋,可以有效地減少本設(shè)計(jì)占用可編程邏輯器件的資源,這也是同步計(jì)數(shù)器的一個(gè)常用設(shè)計(jì)技巧。 對(duì)于樂曲中的休止符,只要將分頻系數(shù)設(shè)為0,即初始值為213-1=8191即可,此時(shí)揚(yáng)聲器將不會(huì)發(fā)聲。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.2.2 音長的控制 本例演奏的“梁祝片段,最小的節(jié)拍為1/4拍。將1拍的時(shí)長定為1秒,則只需要再提供一個(gè)4 Hz的時(shí)鐘頻率即可產(chǎn)生1/4拍的時(shí)長。演奏的時(shí)間控制通過記譜來完成,對(duì)于占用時(shí)間較長的節(jié)拍(一定是1/4拍的整數(shù)倍),如2/4拍,只需將該音名連續(xù)記錄兩次即可。

15、 本例要求演奏時(shí)能循環(huán)進(jìn)行,因此需另外設(shè)置一個(gè)時(shí)長計(jì)數(shù)器,當(dāng)樂曲演奏完成時(shí),保證能自動(dòng)從頭開始演奏。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.2.3 演奏時(shí)音名的動(dòng)態(tài)顯示 如果有必要,可以通過一個(gè)數(shù)碼管或LED來顯示樂曲演奏時(shí)對(duì)應(yīng)的音符。如用三個(gè)數(shù)碼管,分別顯示本例中的高、中、低音名,就可實(shí)現(xiàn)演奏的動(dòng)態(tài)顯示,且十分直觀。本設(shè)計(jì)通過三個(gè)數(shù)碼管來動(dòng)態(tài)顯示演奏時(shí)的音名,其中HIGH顯示為高音區(qū)音階(僅高音1),MED2.0顯示的是中音區(qū)音階(中音6, 5, 3, 2, 1),LOW2.0顯示的是低音區(qū)音階(低音7, 6, 5, 3)。數(shù)碼管顯示的七段譯碼電路在此不作專門討論。需要說明的是

16、,七段譯碼電路輸入為4位,而將HIGH、MED、LOW用作輸入時(shí),不足4位的高位均為低電平“0”。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 圖7-5 音樂產(chǎn)生器外部接口CLK_4 MHzCLK_4 HzDIGIT6.0ZERO4.0SPEAKER第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.2.4 VHDL程序 本設(shè)計(jì)的外部接口如圖7-5所示,程序中定義了一個(gè)5位寬的zero4.0,這是由于實(shí)驗(yàn)平臺(tái)上連向數(shù)碼管的引腳在不賦值的情況下為高電平,這將導(dǎo)致顯示音名錯(cuò)誤,設(shè)置zero4.0就是要將沒用到的引腳(高音的高3位、中音的高1位和低音的高1位)賦一個(gè)低電平,從而避免顯示錯(cuò)誤。第

17、第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY song IS PORT( clk_4MHz,clk_4Hz: IN STD_LOGIC; -預(yù)置計(jì)數(shù)器和樂譜產(chǎn)生器的時(shí)鐘第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 digit: BUFFER STD_LOGIC_VECTOR(6 DOWNTO 0); -高、中、低音數(shù)碼管指示 zero:OUT STD_LOGIC_VECTOR(4 DOWNTO 0); -用于數(shù)碼管高位置低 spe

18、aker: out STD_LOGIC -揚(yáng)聲器 );END song;ARCHITECTURE song_arch OF song IS第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 SIGNALdivider,origin:STD_LOGIC_VECTOR(12 DOWNTO 0); -13位計(jì)數(shù)值和預(yù)置值SIGNAL counter:integer range 0 to 140; -7位計(jì)數(shù)器SIGNAL count:STD_LOGIC_VECTOR(1 DOWNTO 0); -記錄1/4拍SIGNAL carrier:STD_LOGIC;BEGINzero=00000;PROCESS

19、(clk_4MHz)第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 BEGIN IF(clk_4MHzevent AND clk_4MHz=1) THEN IF(divider=1111111111111) THEN carrier=1; divider=origin; ELSE divider=divider+1; carrier=0; END IF; END IF;END PROCESS;第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 PROCESS(carrier)BEGIN IF(carrierevent AND carrier=1) THEN count=count+1;-輸出時(shí)

20、鐘四分頻 IF count=00 THEN speaker=1; ELSE speaker=0; END IF; END IF;END PROCESS;第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 PROCESS(clk_4Hz)BEGIN IF(clk_4Hzevent AND clk_4Hz=1) THEN IF(counter=140) THEN counter=0; ELSE counterdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdi

21、gitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdi

22、gitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdi

23、gitdigitoriginoriginoriginoriginoriginoriginoriginoriginoriginoriginorigin=1111111111111;-8191第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 END CASE; END PROCESS;END song_arch;第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.2.5 仿真結(jié)果音樂發(fā)生器的仿真波形如圖7-6所示。圖7-6 音樂發(fā)生器仿真波形圖 第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.2.6 下載驗(yàn)證 鎖定引腳時(shí)將clk_4 MHz和clk_4 Hz分別連至CLK1和CLK2,sp

24、eaker接揚(yáng)聲器,zero4.2、digit6接一個(gè)數(shù)碼管,zero1、digit5.3接一個(gè)數(shù)碼管,zero0、digit2.0接另一個(gè)數(shù)碼管。綜合適配后將配置數(shù)據(jù)下載入EDA實(shí)驗(yàn)平臺(tái)(技術(shù)資料詳見附錄)的FPGA中(有關(guān)CLK1等引腳在FPGA芯片引腳中的序號(hào),請參見附錄的附圖1),揚(yáng)聲器短接線短路(接入揚(yáng)聲器),即可聽到MIDI音樂。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.3 2FSK/2PSK信號(hào)產(chǎn)生器信號(hào)產(chǎn)生器 7.3.1 2FSK基本原理 在通信領(lǐng)域中,為了傳送信息,一般都將原始的信號(hào)進(jìn)行某種變換變成適合于通信傳輸?shù)男盘?hào)形式。在數(shù)字通信系統(tǒng)中,一般將原始信號(hào)(圖像、

25、聲音等)經(jīng)過量化編碼變成二進(jìn)制碼流,稱為基帶信號(hào)。 第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 但數(shù)字基帶信號(hào)一般不適合于直接傳輸。例如,通過公共電話網(wǎng)絡(luò)傳輸數(shù)字信號(hào)時(shí),由于電話網(wǎng)絡(luò)的帶寬為4 kHz以下,因此數(shù)字信號(hào)不能直接在其上傳輸。此時(shí)可將數(shù)字信號(hào)進(jìn)行調(diào)制,F(xiàn)SK即為一種常用的數(shù)字調(diào)制方式,由FSK調(diào)制的波形如圖7-7示。 第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 FSK又稱移頻鍵控, 它利用載頻頻率的變化來傳遞數(shù)字信息。數(shù)字調(diào)頻信號(hào)可以分為相位離散和相位連續(xù)兩種。若兩個(gè)載頻由不同的獨(dú)立振蕩器提供,它們之間相位互不相關(guān),就稱相位離散的數(shù)字調(diào)頻信號(hào);若兩個(gè)頻率由同一振蕩信號(hào)源

26、提供,只是對(duì)其中一個(gè)載頻進(jìn)行分頻,這樣產(chǎn)生的兩個(gè)載頻就是相位連續(xù)的數(shù)字調(diào)頻信號(hào)。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 圖7-7 FSK調(diào)制的波形 tttt0011110信碼0載頻f1輸入0載頻f2輸入0合路后輸出fO0第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.3.2 2FSK信號(hào)產(chǎn)生器 由于FSK為模擬信號(hào),而FPGA只能產(chǎn)生數(shù)字信號(hào),因此需對(duì)正弦信號(hào)采樣并經(jīng)模數(shù)變換來得到所需的FSK信號(hào)。本例由FPGA產(chǎn)生正弦信號(hào)的采樣值。FSK信號(hào)發(fā)生器框圖如圖7-8所示,整個(gè)系統(tǒng)共分為分頻器、m序列產(chǎn)生器、跳變檢測、2:1數(shù)據(jù)選擇器、正弦波信號(hào)產(chǎn)生器和DAC數(shù)模變換器等6部分,其

27、中前5部分由FPGA器件完成。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 圖7-8 FSK調(diào)制信號(hào)發(fā)生器框圖 分頻器2:1數(shù)據(jù)選擇器120 kHz240 kHzm 序列產(chǎn)生器正弦波信號(hào)產(chǎn)生器1.2 kHz跳變檢測DAC時(shí)鐘輸入12 MHz輸出第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 1分頻器 本實(shí)例中數(shù)據(jù)速率為1.2 kHz,要求產(chǎn)生1.2 kHz和2.4 kHz兩個(gè)正弦信號(hào)。對(duì)正弦信號(hào)每周期取100個(gè)采樣點(diǎn),因此要求能產(chǎn)生3個(gè)時(shí)鐘信號(hào):1.2 kHz(數(shù)據(jù)速率)、120 kHz(產(chǎn)生1.2 kHz正弦信號(hào)的輸入時(shí)鐘)和240 kHz(產(chǎn)生2.4 kHz正弦信號(hào)的輸入時(shí)鐘)?;鶞?zhǔn)

28、時(shí)鐘由一個(gè)12 MHz的晶振提供。設(shè)計(jì)中要求一個(gè)50分頻(產(chǎn)生240 kHz信號(hào)),再2分頻(產(chǎn)生120 kHz信號(hào))和100分頻(產(chǎn)生1.2 kHz信號(hào)),共有三個(gè)分頻值。 第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 2m序列產(chǎn)生器 m序列是偽隨機(jī)序列的一種,它的顯著特點(diǎn)是:隨機(jī)特性,預(yù)先可確定性,循環(huán)特性。正因?yàn)檫@些特性,使得m序列產(chǎn)生器在通信領(lǐng)域得到了廣泛的應(yīng)用。 本例用一種帶有兩個(gè)反饋抽頭的3級(jí)反饋移位寄存器,得到一串“1110010循環(huán)序列,并采取措施防止進(jìn)入全“0形狀。通過更換時(shí)鐘頻率可以方便地改變輸入碼元的速率。m序列產(chǎn)生器的電路結(jié)構(gòu)如圖7-9所示。第第7 7章章 數(shù)字系統(tǒng)

29、設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 圖7-9 m序列產(chǎn)生器電路結(jié)構(gòu)或門CLKDQCLKDQCLKDQ或非門異或門1.2 kHz時(shí)鐘信號(hào)第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 3跳變檢測 將跳變檢測引入正弦波的產(chǎn)生中,可以使每次基帶碼元上升沿或下降沿到來時(shí),對(duì)應(yīng)輸出波形位于正弦波形的sin0處。引入跳變檢測主要是為了便于觀察,確保示波器上顯示為一個(gè)連續(xù)的波形。 基帶信號(hào)的跳變檢測可以有很多方法,圖7-10為一種便于在可編程邏輯器件中實(shí)現(xiàn)的方案。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 圖7-10 信號(hào)跳變檢測電路CLKDQ異或門時(shí)鐘信號(hào)基帶碼跳變輸出第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系

30、統(tǒng)設(shè)計(jì)實(shí)例 42:1數(shù)據(jù)選擇器 2:1數(shù)據(jù)選擇器用于選擇正弦波產(chǎn)生器的兩個(gè)輸入時(shí)鐘。一個(gè)時(shí)鐘的頻率為120 kHz,此時(shí)正弦波產(chǎn)生器產(chǎn)生一個(gè)1.2 kHz的正弦波,代表數(shù)字信號(hào)“0”;另一個(gè)時(shí)鐘的頻率為240 kHz,此時(shí)產(chǎn)生一個(gè)2.4 kHz的正弦波信號(hào),代表數(shù)字信號(hào)“1”。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 5正弦信號(hào)的產(chǎn)生 用數(shù)字電路和DAC變換器可以產(chǎn)生要求的模擬信號(hào)。根據(jù)抽樣定理可知,當(dāng)用模擬信號(hào)最大頻率兩倍以上的速率對(duì)該模擬信號(hào)采樣時(shí),便可將原模擬信號(hào)不失真地恢復(fù)出來。本例要求得到的是兩個(gè)不同頻率的正弦信號(hào),實(shí)驗(yàn)中對(duì)正弦波每個(gè)周期采樣100個(gè)點(diǎn),即采樣速率為原正弦信號(hào)

31、頻率的100倍,因此完全可以在接收端將原正弦信號(hào)不失真地恢復(fù)出來,從而可以在接收端對(duì)FSK信號(hào)正確地解調(diào)。經(jīng)DAC轉(zhuǎn)換后,可以在示波器上觀察到比較理想的波形。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 本實(shí)驗(yàn)中每個(gè)采樣點(diǎn)采用8位量化編碼,即8位分辨率。采樣點(diǎn)的個(gè)數(shù)與分辨率的大小主要取決于CPLD/FPGA器件的容量,其中分辨率的高低還與DAC的位數(shù)有關(guān)。實(shí)驗(yàn)表明,采用8位分辨率和每周期100個(gè)采樣點(diǎn)可以達(dá)到相當(dāng)不錯(cuò)的效果。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 具體的正弦信號(hào)產(chǎn)生器可以用狀態(tài)機(jī)來實(shí)現(xiàn)。按前面的設(shè)計(jì)思路,本實(shí)現(xiàn)方案共需100個(gè)狀態(tài),分別為s1s100。同時(shí)設(shè)計(jì)一個(gè)

32、異步復(fù)位端,保證當(dāng)每個(gè)“1或“0到來時(shí)其調(diào)制信號(hào)正好位于坐標(biāo)原點(diǎn),即sin0處。狀態(tài)機(jī)共有8位輸出(Q7Q0),經(jīng)DAC變換為模擬信號(hào)輸出。為得到一個(gè)純正弦波形,應(yīng)在DAC的輸出端加上一個(gè)低通濾波器,由于本例僅觀察FSK信號(hào),因此省去了低通濾波器。 本設(shè)計(jì)中,數(shù)字基帶信號(hào)與FSK調(diào)制信號(hào)的對(duì)應(yīng)關(guān)系為“0對(duì)應(yīng)1.2 kHz,“1對(duì)應(yīng)2.4 kHz,此二載波的頻率可以方便地通過軟件修改。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 圖7-11 2FSK/2PSK信號(hào)產(chǎn)生器外部接口CLOCKDOUT7.0CODE第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.3.3 2FSK/2PSK信號(hào)

33、產(chǎn)生器 在2FSK的基礎(chǔ)上,可以較容易地設(shè)計(jì)出2PSK信號(hào)產(chǎn)生器,其接口如圖7-11所示。在檢測到基帶碼元的上升沿或下降沿時(shí),使輸出波形位于sin處,即可使波形倒相,產(chǎn)生2PSK信號(hào)。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 在設(shè)計(jì)的最后,應(yīng)考慮選用DAC器件將波形數(shù)據(jù)轉(zhuǎn)換為模擬波形輸出。本實(shí)驗(yàn)箱上選用8位并行DAC器件TLC7528,將8位數(shù)據(jù)輸出連至DAC器件的8位數(shù)據(jù)輸入端,即可觀察到產(chǎn)生的2FSK/2PSK波形。為了觀察波形的方便,我們將TLC7528連接成電壓輸出的方式(器件本身是電流輸出方式),后面跟一個(gè)射隨器以增強(qiáng)帶載能力。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例

34、 7.3.4 2FSK信號(hào)產(chǎn)生器的VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fsk ISPORT(clock: IN STD_LOGIC;-正弦波發(fā)生器時(shí)鐘 第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 dout: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -并行數(shù)據(jù)DATA code: BUFFER STD_LOGIC -輸出m序列 ); END fsk;第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 ARCHITECTURE fs

35、k_arch OF fsk ISSIGNAL count100: STD_LOGIC_VECTOR (6 DOWNTO 0);-記錄100個(gè)狀態(tài)SIGNAL count50: STD_LOGIC_VECTOR (5 DOWNTO 0);SIGNAL sinclk1: STD_LOGIC;SIGNAL sinclk, coderate: STD_LOGIC;SIGNAL temp, jump_ high: STD_LOGIC;SIGNAL m: STD_LOGIC_VECTOR(2 DOWNTO 0);-m序列第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 BEGINPROCESS(clock

36、)BEGIN IF(clockevent AND clock=1) THEN -產(chǎn)生FSK所需的另一個(gè)頻率sinclk1=clock/2 sinclk1=NOT sinclk1; END IF;END PROCESS;第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 PROCESS(sinclk1) -sinclk1 100分頻得到coderate碼元速率BEGIN IF(sinclk1event AND sinclk1=1) THEN IF(count50=110001) THEN count50=000000; coderate=NOT coderate; ELSE count50= co

37、unt50+1; END IF; END IF; END PROCESS;第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 m_sequence_form: -產(chǎn)生 1110010 m序列PROCESS(coderate)BEGIN IF(coderateevent AND coderate=1) THEN m(0)=m(1); m(1)=m(2); END IF;END PROCESS;第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 PROCESS(coderate)BEGIN IF(coderateevent AND coderate=1) THEN m(2)=(m(1) XOR m(0

38、) OR (NOT (m(0) OR m(1) or m(2); END IF;END PROCESS; 第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 code=m(0); PROCESS(sinclk1,clock,code)BEGIN IF(code=0) THEN sinclk=sinclk1; ELSE sinclk=clock; -選擇正弦波產(chǎn)生器的時(shí)鐘頻率 END IF;END PROCESS; 第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 jump_high=(not temp) AND code; -0到1跳變PROCESS(sinclk)-2FSK跳變的不同處理BEG

39、IN IF(sinclkevent AND sinclk=1) THEN temp=code; IF(count100=1100011) OR (jump_high=1) THEN count100=0000000; ELSE count100doutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdo

40、utdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutnull; END CASE; END PROCESS; END fsk_arch;第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.3.5 2PSK信

41、號(hào)產(chǎn)生器的VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY psk ISPORT (clock: IN STD_LOGIC;-正弦波發(fā)生器時(shí)鐘 第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 dout: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -并行數(shù)據(jù)DATA code: BUFFER STD_LOGIC -輸出m序列 );END psk;第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 ARCHITECTURE psk_arch OF p

42、sk ISSIGNAL count100: STD_LOGIC_VECTOR (6 DOWNTO 0); -記錄100個(gè)狀態(tài)SIGNAL count50: STD_LOGIC_VECTOR (5 DOWNTO 0);SIGNAL sinclk1: STD_LOGIC;SIGNAL sinclk, coderate: STD_LOGIC;SIGNAL temp,jump_low, jump_high: STD_LOGIC;SIGNAL m: STD_LOGIC_VECTOR(2 DOWNTO 0); -m序列第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 BEGINPROCESS(clock)

43、BEGIN IF(clockevent AND clock=1) THEN -產(chǎn)生FSK所需的另一個(gè)頻率sinclk1=clock/2 sinclk1=NOT sinclk1; END IF;END PROCESS;PROCESS(sinclk1) -sinclk1 100分頻得到coderate碼元速率第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 BEGIN IF(sinclk1event AND sinclk1=1) THEN IF(count50=110001) THEN count50=000000; coderate=NOT coderate; ELSE count50= cou

44、nt50+1; END IF; END IF; END PROCESS;m_sequence_form:-產(chǎn)生 1110010 m序列PROCESS(coderate)第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 BEGIN IF(coderateevent AND coderate=1) THEN m(0)=m(1); m(1)=m(2); END IF;END PROCESS; PROCESS(coderate)BEGIN IF(coderateevent AND coderate=1) THEN m(2)=(m(1) XOR m(0) OR (NOT (m(0) OR m(1) OR

45、 m(2); END IF; END PROCESS; 第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 code=m(0);jump_low=(not code) AND temp;-0到1跳變jump_high=(not temp) AND code; -1到0跳變PROCESS(clock)-2PSK對(duì)跳變的不同處理BEGIN IF(clockevent AND clock=1) THEN第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 temp=code; IF(jump_low=1) THEN count100=0110010; ELSIF(jump_high=1) THEN cou

46、nt100=0000000; E L S I F ( c o u n t 1 0 0 = 1 1 0 0 0 1 1 ) T H E N count100=0000000; ELSE count100doutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout

47、doutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutnull; END CASE; END PROCESS; END psk_arch;第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.3.6 仿真結(jié)果 2FSK信號(hào)產(chǎn)生器的仿真波形如圖7-12所示

48、;2PSK信號(hào)產(chǎn)生器的仿真波形如圖7-13所示。 第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 圖7-12 2FSK信號(hào)產(chǎn)生器仿真波形圖 clockcodedout7dout6dout5dout4dout3dout2dout1dout0第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 圖7-13 2PSK信號(hào)產(chǎn)生器仿真波形圖 clockcodedout7dout6dout5dout4dout3dout2dout1dout0第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.3.7 下載驗(yàn)證 鎖定引腳時(shí)將clock連至CLK1,dout連至DA輸入端,code連至TESTOUT1(測試1腳

49、)。綜合適配后將配置數(shù)據(jù)下載入EDA實(shí)驗(yàn)平臺(tái)(技術(shù)資料詳見附錄)的FPGA中(有關(guān)CLK1等引腳在FPGA芯片引腳中的序號(hào), 請參見附錄的附圖1),即可用雙蹤示波器同時(shí)觀察m序列及其對(duì)應(yīng)的2FSK或2PSK波形。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.4 實(shí)用多功能電子表實(shí)用多功能電子表 7.4.1 功能描述 多功能電子表共有5種功能:功能1為數(shù)字鐘;功能2為數(shù)字跑表;功能3為調(diào)時(shí);功能4為鬧鐘設(shè)置;功能5為日期設(shè)置。除調(diào)時(shí)功能以外,電子表處于其他功能狀態(tài)下時(shí)并不影響數(shù)字鐘的運(yùn)行。使用數(shù)字鐘功能時(shí),還可以通過按鍵快速查看當(dāng)前的鬧鐘設(shè)置時(shí)間和當(dāng)前日期。該電子表利用EDA實(shí)驗(yàn)平臺(tái)的揚(yáng)

50、聲器整點(diǎn)報(bào)時(shí)和定時(shí)報(bào)時(shí),設(shè)置3個(gè)按鍵分別作為功能鍵和調(diào)整鍵。實(shí)用多功能電子表外部接口如圖7-14所示。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 圖7-14 實(shí)用多功能電子表外部接口 CLK_1HzMODE3.0CLK_1kHzFUNC_KEYKEY1KEY2HOUR7.0MINUTE7.0SECOND7.0ALARM第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 1輸入 (1) func_key:功能鍵,控制電子表的功能號(hào)。 (2) key1:調(diào)整key1,功能1時(shí)按下可顯示鬧鐘設(shè)置時(shí)間;功能2時(shí)用作跑表暫停鍵;功能3、4時(shí)分別用于調(diào)數(shù)字鐘和鬧鐘的小時(shí)數(shù);功能5時(shí)用于調(diào)日期的月份。

51、(3) key2:調(diào)整key2,功能1時(shí)按下可顯示當(dāng)前日期;功能2時(shí)用作跑表清零鍵;功能3、4時(shí)分別用于調(diào)數(shù)字鐘和鬧鐘的分鐘數(shù);功能5時(shí)用于調(diào)日期的日期數(shù)。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 (4) clk_1 Hz:數(shù)字鐘時(shí)鐘(1 Hz)輸入。 (5) clk_1 kHz:1 kHz時(shí)鐘,是整點(diǎn)報(bào)時(shí)和定點(diǎn)報(bào)時(shí)所需的頻率。另外,10分頻后還可得到100 Hz頻率信號(hào)作為數(shù)字跑表時(shí)鐘輸入。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 2輸出 (1) mode:顯示電子表的功能號(hào)15。 (2) hour:功能1、3和4時(shí)顯示小時(shí)數(shù);功能2時(shí)顯示跑表的分鐘數(shù);功能5時(shí)顯示月份。 (

52、3) minute:功能1、3和4時(shí)顯示分鐘數(shù);功能2時(shí)顯示跑表的秒數(shù);功能5時(shí)顯示日期數(shù)。 (4) second:功能1時(shí)顯示秒數(shù);功能2時(shí)顯示1%秒;功能3、4和5時(shí)均顯示0。 (5) alarm:連至揚(yáng)聲器,用于整點(diǎn)報(bào)時(shí)及鬧鐘報(bào)時(shí)。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.4.2 電路組成 在明確電子表的功能后,可對(duì)電子表進(jìn)行模塊劃分得到電子表設(shè)計(jì)的結(jié)構(gòu)框圖,如圖7-15所示。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 圖7-15 實(shí)用多功能電子表結(jié)構(gòu)框圖 數(shù)字鐘與調(diào)時(shí)clk_跑表模塊clk_鬧鐘設(shè)置模塊clk_key2日期設(shè)置模塊clk_key3clk_key4clk

53、_key1顯示模塊數(shù)碼管功能號(hào)指示分頻模塊按鍵切換乒乓開關(guān)琴鍵開關(guān)1 kHz100 Hz500 Hz報(bào)時(shí)模塊揚(yáng)聲器第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 從結(jié)構(gòu)框圖中可以看出,模塊劃分與功能劃分存在不同之處。下面分別對(duì)幾個(gè)模塊加以說明。 1數(shù)字鐘與調(diào)時(shí)模塊 由于調(diào)時(shí)功能改變的就是數(shù)字鐘的時(shí)和分,因此應(yīng)將這兩個(gè)功能合在同一模塊中。這是因?yàn)樵赩HDL和Verilog HDL中都不允許兩個(gè)進(jìn)程對(duì)同一信號(hào)進(jìn)行賦值(即多重驅(qū)動(dòng))。此模塊的輸入有下面3個(gè)。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 (1) clk_1:時(shí)鐘輸入。當(dāng)處在數(shù)字鐘功能時(shí),clk_1應(yīng)為1 Hz的時(shí)鐘信號(hào);當(dāng)處在調(diào)

54、時(shí)功能時(shí),clk_1應(yīng)為按key1和key2調(diào)整鍵產(chǎn)生的adjust_key1和adjust_key2脈沖信號(hào)。因此可描述clk_1為clk_1=(clk_1 Hz&mode!=3)|(mode=3&(adjust_key1|adjust_key2);即當(dāng)不處于功能3時(shí)為1 Hz時(shí)鐘信號(hào),處于功能3時(shí)為adjust_key1或adjust_key2脈沖信號(hào)。這樣,當(dāng)將電子表調(diào)整到數(shù)字鐘功能外的其他功能時(shí)將不會(huì)影響數(shù)字鐘的運(yùn)行。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 (2) adjust_key1和adjust_key2:在EDA實(shí)驗(yàn)平臺(tái)上實(shí)現(xiàn)時(shí),key1(KEY2)和

55、key2(KEY3)兩個(gè)調(diào)整鍵是乒乓開關(guān),即每按動(dòng)一次,相應(yīng)引腳上的電平就翻轉(zhuǎn)一次。這里需將其變?yōu)榍冁I開關(guān),即每按動(dòng)一次將產(chǎn)生一個(gè)上跳脈沖,從而啟動(dòng)進(jìn)程的運(yùn)行。有關(guān)乒乓開關(guān)和琴鍵開關(guān)的說明請參見附錄。 此模塊的輸出為6位時(shí)、7位分和7位秒,采用BCD碼表示。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 2跑表模塊 跑表的設(shè)計(jì)與數(shù)字鐘的設(shè)計(jì)基本相同,不同的是其輸入時(shí)鐘應(yīng)為100 Hz的信號(hào),同時(shí)還應(yīng)增加暫停鍵(key1)和清零鍵(key2)。因此其時(shí)鐘clk_2應(yīng)描述為 clk_2=clk_100 Hz&mode=2&!key1; 即當(dāng)電子表處于功能2時(shí)啟動(dòng)跑表模塊運(yùn)行,時(shí)鐘

56、為100 Hz,key1(乒乓開關(guān))則作為時(shí)鐘使能信號(hào),也即作為跑表的暫停鍵。 跑表模塊的輸出為7位分、7位秒和8位1%秒,采用BCD碼顯示。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 3鬧鐘設(shè)置模塊 鬧鐘設(shè)置模塊的輸入為兩個(gè)調(diào)整鍵clk_key1和clk_key2,分別描述為 clk_key1=adjust_key1 & mode=4; clk_key2=adjust_key2 & mode=4; 表示在鬧鐘功能時(shí)key1和key2分別作為調(diào)時(shí)鍵和調(diào)分鍵。鬧鐘的輸出為6位時(shí)和7位分,采用BCD碼顯示。 第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 4日期設(shè)置模塊 日

57、期設(shè)置模塊輸入為兩個(gè)調(diào)整鍵clk_key3和clk_key4,分別描述為 clk_key3=adjust_key1 & mode=5; clk_key4=adjust_key2 & mode=5; 表示日期設(shè)置功能時(shí)key2和key3分別作為調(diào)月鍵和調(diào)日鍵。日期設(shè)置的輸出為5位月(共12月)和6位日(共30日),采用BCD碼顯示。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 5顯示模塊 由于EDA實(shí)驗(yàn)平臺(tái)上已為數(shù)碼管顯示制作了譯碼和驅(qū)動(dòng)電路,因此在其上設(shè)計(jì)數(shù)碼管顯示電路時(shí)將無須編寫譯碼電路。 本設(shè)計(jì)顯示模塊的作用是根據(jù)不同的功能號(hào),將相應(yīng)功能的輸出連至數(shù)碼管上并輸出。第第7

58、 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 時(shí)、分和秒的顯示分別用8位表示,實(shí)際上,時(shí)、分和秒的最大值分別為23、59和59,對(duì)應(yīng)的BCD碼表示分別為6、7和7位。選用8位表示是因?yàn)閷?shí)驗(yàn)平臺(tái)上懸空的引腳均為高電平,如果不將高位懸空引腳通過程序置為低電平,將導(dǎo)致顯示錯(cuò)誤。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 6報(bào)時(shí)模塊 報(bào)時(shí)模塊控制在整點(diǎn)或鬧鐘時(shí)間到時(shí)將1 kHz或500 Hz的方波信號(hào)送至實(shí)驗(yàn)平臺(tái)上的揚(yáng)聲器發(fā)聲。 7分頻模塊 分頻模塊將1 kHz的方波信號(hào)分頻至500 Hz(整點(diǎn)報(bào)時(shí)用)和100 Hz(跑表時(shí)鐘)。 8功能號(hào)指示 通過按功能鍵選擇不同的功能號(hào)(15),將功能號(hào)送往其

59、他模塊使用并通過數(shù)碼管顯示出來。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 9按鍵切換 在EDA實(shí)驗(yàn)平臺(tái)上,func_key(KEY1)、key1(KEY2)和key2(KEY3)均為乒乓開關(guān),需將其轉(zhuǎn)換為琴鍵開關(guān)func_key、adjust_key1和adjust_key2,這樣在用KEY1、KEY2和KEY3鍵調(diào)整功能號(hào)或調(diào)時(shí)、調(diào)分時(shí),每按一次便會(huì)產(chǎn)生一個(gè)上升沿脈沖,啟動(dòng)相應(yīng)進(jìn)程的運(yùn)行。第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 7.4.3 Verilog-HDL程序module clock(clk_1 Hz, clk_1 kHz, func_key, key1, key2,

60、 mode, hour, minute, second, alarm);input clk_1 Hz ;/1Hz時(shí)鐘,供數(shù)字鐘使用input clk_1 kHz ;/1 kHz時(shí)鐘, 分成500 Hz供鬧鐘和整點(diǎn)報(bào)時(shí)使用, 分頻100 Hz供跑表使用input func_key ;/功能鍵, 1表示數(shù)字鐘, 2表示跑表, 3表示調(diào)時(shí), 4表示設(shè)置鬧鐘,5表示日/期設(shè)置第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 input key1 ;/功能1時(shí)顯示鬧鐘時(shí)間, 功能2時(shí)暫停, 功能3、4時(shí)調(diào)小時(shí), 功能5時(shí)調(diào) /月份input key2 ;/功能1時(shí)顯示日期, 功能2時(shí)清零, 功能3、4時(shí)調(diào)分, 功能5時(shí)調(diào)日output 3:0 mode;/功能號(hào)指示output 7:0 hour ;/功能1、3和4時(shí)顯示小時(shí), 功能2時(shí)顯示分鐘, 功能5時(shí)顯示月份output 7:0 minute;/功能1、3和4時(shí)顯示分鐘, 功能2時(shí)顯示秒, 功能5時(shí)顯示日期第第7 7章章 數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例數(shù)字系統(tǒng)設(shè)計(jì)實(shí)例 output 7:0 second;/功能1時(shí)顯示秒, 功能2時(shí)顯示

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論