![數(shù)字系統(tǒng)設計(課程設計)_第1頁](http://file4.renrendoc.com/view/962dd70e79f3c75963befa2c94ba91c3/962dd70e79f3c75963befa2c94ba91c31.gif)
![數(shù)字系統(tǒng)設計(課程設計)_第2頁](http://file4.renrendoc.com/view/962dd70e79f3c75963befa2c94ba91c3/962dd70e79f3c75963befa2c94ba91c32.gif)
![數(shù)字系統(tǒng)設計(課程設計)_第3頁](http://file4.renrendoc.com/view/962dd70e79f3c75963befa2c94ba91c3/962dd70e79f3c75963befa2c94ba91c33.gif)
![數(shù)字系統(tǒng)設計(課程設計)_第4頁](http://file4.renrendoc.com/view/962dd70e79f3c75963befa2c94ba91c3/962dd70e79f3c75963befa2c94ba91c34.gif)
![數(shù)字系統(tǒng)設計(課程設計)_第5頁](http://file4.renrendoc.com/view/962dd70e79f3c75963befa2c94ba91c3/962dd70e79f3c75963befa2c94ba91c35.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第7章 數(shù)字系統(tǒng)設計實例 7.1 多功能數(shù)字鐘的設計7.2 直流電機PWM調速與測速控制器的設計7.3 自動樂曲演奏電路的設計7.4 點陣式LED顯示控制器的設計7.5字符型LCD驅動電路的設計7.6交通燈控制器的設計7.7UART控制器的設計 直流電機PWM調速與測速控制器的設計直流電機PWM調速的原理:7.4LED顯示控制器的設計7.4.1 點陣式LED顯示器模塊顯示原理 如圖所示為8X8點陣式單色LED顯示模塊,當行信號輸出為為11111110(稱行掃描信號),列信號為10101010(數(shù)據信號)時,第一行 LED7,LED5,LED3,LED1燈亮.如果行(掃描信號) 對應列(數(shù)據線)
2、循環(huán)順序輸出如表一數(shù)據,LED模塊顯示8X8點陣漢字”王” 行(掃描輸出) 列(數(shù)據輸出)0111111100000000011111110101111110211111011000110003111101110001100041110111101111110511011111000110061011111100011000701111111111111117.4LED顯示控制器的設計7.4.1 點陣式LED顯示器模塊顯示原理由于光的延遲作用,人眼的視覺停留,當每秒循環(huán)掃描大于30次,人眼已經無法分辨出每行的斷續(xù).如果數(shù)據位為8位,8*8點陣掃描頻率 F30*8=240HZ 多塊8*8LED可
3、以實現(xiàn)多點顯示.如圖 2塊LED顯示16*8和8*16點陣 7.4LED顯示控制器的設計如果想顯示64*32點陣,需要32塊LED8*8點陣模塊,若數(shù)據位為16位,則F30*128=3840HZ思考一下:如果800*640點顯示刷新速度為100,數(shù)據位為8位,F ?7.4.2驅動電路的設計發(fā)光二極管是功率器件,特別是同時點亮多只發(fā)光二極管時,需要考慮功率驅動問題假設每只發(fā)光管平均電流為10ma,若同時點亮16只,則I=160ma,I/O無法提供這么大的拉電流/灌電流,I/O需加驅動.(1)采用驅動器驅動 如圖A(2)采用三極管驅動電路如圖B(3)采用MOS管驅動如圖C(4)恒流驅動:為保持亮度
4、均衡,點陣LED顯示常采用恒流驅動.避免電壓波動造成的亮度偏差. 如圖D:7.4.2 驅動電路的設計7.4LED顯示控制器的設計7.4.3 點陣式LED顯示器控制器的設計1.掃描信號的產生 EP1C3目標板上有20MHZ有源晶體產生20MHZ時鐘信號,將時鐘選擇短連選在INT,則EP1C3的CLK0(芯片16腳)與20MHZ連接,該信號分頻產生所需的掃描信號2.循環(huán)顯示電路的設計方法一: 以掃描信號作為N進制計數(shù)器計數(shù)脈沖.在每個計數(shù)值順序輸出相應的行選信號和數(shù)據信號.圖7-4 LED顯示器控制器的原理框圖7.4LED顯示控制器的設計方法二:也可以將顯示數(shù)據順序存放在ROM中,計數(shù)器的結果作為
5、ROM的地址線, ROM的數(shù)據線作為顯示數(shù)據輸出.圖7-4 LED顯示器控制器的原理框圖7.4LED顯示控制器的設計方法三: 采用雙口RAM,一個端口接收外部來的顯示更新數(shù)據,另外一個端口提供顯示數(shù)據的讀取內部計數(shù)器的結果作為RAM的地址線, RAM的數(shù)據線作為顯示數(shù)據輸出.圖7-4 LED顯示器控制器的原理框圖 7.4.4 8*8點陣式LED顯示器控制器VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;- 7.4.4 8*8點陣式LED顯示器控制器的實體-ENTITY Dspled I
6、S PORT(;-輸入時鐘 clk_20MHz: IN STD_LOGIC coladress : OUT STD_LOGIC_VECTOR( 7 DOWNTO 0);-行掃描輸出信號 rowdata: OUT STD_LOGIC_VECTOR( 7 DOWNTO 0) -列輸出顯示數(shù)據 );END ENTITY Dspled;- 8*8點陣式LED顯示器控制器VHDL程序的結構體-ARCHITECTURE arch OF Dspled IS-說明語句部分-SIGNAL divider:STD_LOGIC_VECTOR(15 DOWNTO 0);-15位計數(shù)值和預置值SIGNAL count0
7、 : STD_LOGIC_VECTOR( 2 DOWNTO 0);SIGNAL carrier: STD_LOGIC;BEGIN-數(shù)控分頻器的設計(產生各音階頻率) 16位計數(shù)長度 -產生掃描信號 輸入:20KHZ 輸出800HZ 每秒中刷新100次-P0:PROCESS(clk_20MHz)BEGIN IF(clk_20MHzevent AND clk_20MHz=1) THEN IF(divider=1111111111111111) THEN carrier=1; divider=“1001111001010111”; -(65535-20000000/800) ELSE divider
8、=divider+1; carrier=0; END IF; END IF;END PROCESS P0;-能循環(huán)掃描顯示,因此需N進制計數(shù)器-P2:PROCESS(carrier)BEGINIF(carrier event AND carrier =1) THEN count0 coladress t=“11111110; rowdata coladress t=“11111101; rowdata coladress t=“11111011; rowdata coladress t=“11110111; rowdata coladress t=“11101111; rowdata cola
9、dress t=“11011111; rowdata coladress t=“10111111; rowdata coladress t=“01111111; rowdata=“11111111”;End case;End process p3;思考題1.采用ROM存儲顯示漢字字模庫,顯示16*16點陣數(shù)據如何顯示一個漢字”華”?2.設計一個模塊,驅動32*16點陣LED,循環(huán)顯示”校訓”3.設計一個模塊,驅動128*64點陣LED,通過并行接口,接收(其他設備發(fā)送的)顯示數(shù)據,以每秒100次刷新速率顯示數(shù)據,如何設計?7.4 自動樂曲演奏電路的設計任務與要求:1.具有高中低3個8度音發(fā)生器
10、2.具有樂曲自動循環(huán)播放功能*3.可以在一個ROM裝上多首歌曲,可手動或自動選擇歌曲。*4.具有簡易電子琴的功能 本設計利用可編程邏輯器件配以一個小揚聲器設計了一個音樂發(fā)生器,其結構如圖7-4所示。本例產生的音樂選自”莫斯科郊外的晚上”。圖7-4 音樂產生器原理框圖 7.2.1 音名與頻率的關系 音樂的十二平均率規(guī)定:每兩個八度音(如簡譜中的中音1與高音1)之間的頻率相差一倍。在兩個八度音之間,又可分為十二個半音。另外,音名A(簡譜中的低音6)的頻率為440 Hz,音名B到C之間、E到F之間為半音,其余為全音。由此可以計算出簡譜中從低音1至高音1之間每個音名的頻率如表7-1所示。表7-1 簡譜
11、中的音名與頻率的關系音名頻率/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 由于音階頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),故必須將計算得到的分頻數(shù)四舍五入取整。 本例中選取4 MHz的基準頻率。若無4 MHz的時鐘頻率,則可以先分頻得到
12、4 MHz或換一個新的基準頻率。實際上,只要各個音名間的相對頻率關系不變,C作1與D作1演奏出的音樂聽起來都不會“走調”。思考? 選用4MHZ或40MHZ做基準頻率,各自優(yōu)缺點? 本例需要演奏的是“莫斯科郊外的晚上”,各音階頻率及相應的分頻比如表7-2所示。 為了減小輸出的偶次諧波分量,最后輸出到揚聲器的波形應為對稱方波,因此在到達揚聲器之前,有一個二分頻的分頻器。 表7-2中的分頻比就是從4 MHz頻率二分頻得到的2 MHz頻率基礎上計算得出的。表7-2 各音階頻率對應的分頻值 音名分頻系數(shù)初始值音名分頻系數(shù)初始值音名分頻系數(shù)初始值低音17644547中音138224369高音1191162
13、80低音268081383中音234044787高音217026489低音360682123中音330345157高音315176674低音457282463中音428645327高音414326759低音551003091中音525505640高音512756916低音645443647中音622725919高音611367055低音740484151中音720246167高音710127179 由于最大的分頻系數(shù)為7644,故采用13位二進制計數(shù)器已能滿足分頻要求。在表7-2中,除給出了分頻比以外,還給出了對應于各個音階頻率時計數(shù)器不同的初始值。對于不同的分頻系數(shù),只要加載不同的初始值即可
14、。采用加載初始值而不是將分頻輸出譯碼反饋,可以有效地減少本設計占用可編程邏輯器件的資源,這也是同步計數(shù)器的一個常用設計技巧。 對于樂曲中的休止符,只要將分頻系數(shù)設為0,即初始值為8191即可,此時揚聲器將不會發(fā)聲。 7.2.2 音長的控制 本例演奏的“莫斯科郊外的晚上” ,最小的節(jié)拍為1/4拍。將1拍的時長定為1秒,則只需要再提供一個4 Hz的時鐘頻率即可產生1/4拍的時長。演奏的時間控制通過記譜來完成,對于占用時間較長的節(jié)拍(一定是1/4拍的整數(shù)倍),如2/4拍,只需將該音名連續(xù)記錄兩次即可。 本例要求演奏時能循環(huán)進行,因此需另外設置一個時長計數(shù)器,當樂曲演奏完成時,保證能自動從頭開始演奏。
15、 7.2.3 演奏時音名的動態(tài)顯示 如果有必要,可以通過一個數(shù)碼管或LED來顯示樂曲演奏時對應的音符。如用三個數(shù)碼管,分別顯示本例中的高、中、低音名,就可實現(xiàn)演奏的動態(tài)顯示,且十分直觀。本設計通過三個數(shù)碼管來動態(tài)顯示演奏時的音名.圖7-5 音樂產生器外部接口 7.2.4 VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY song IS PORT(-預置計數(shù)器和樂譜產生器的時鐘 clk_4MHz,clk_4Hz : IN STD_LOGIC digH, digM, digL
16、: OUT STD_LOGIC_VECTOR( 6 DOWNTO 0);-數(shù)碼管指示 speaker : OUT STD_LOGIC -揚聲器 );END song;- 自動樂曲演奏電路的結構體-ARCHITECTURE song_arch OF song IS-說明語句部分-SIGNAL divider,origin:STD_LOGIC_VECTOR(12 DOWNTO 0);-13位計數(shù)值和預置值SIGNAL digit : STD_LOGIC_VECTOR( 8 DOWNTO 0);SIGNAL counter: integer range 0 to 255;-8位計數(shù)器(譜長度)SIG
17、NAL count: STD_LOGIC -2分頻 輸出占空比50%方波SIGNAL carrier: STD_LOGIC;BEGIN -數(shù)控分頻器的設計(產生各音階頻率) 13位計數(shù)長度-因為輸出還要經過二分頻,預置初置計算為4MHZ/2-P0:PROCESS(clk_4MHz)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 PRO
18、CESS P0;- 為了減小輸出的偶次諧波分量,最后輸出到揚聲器的波形應為對稱方波,- 因此在到達揚聲器之前,有一個二分頻的分頻器。-輸出時鐘二分頻P1:PROCESS(carrier)BEGIN IF(carrierevent AND carrier=1) THEN count=NOT count; END IF; speaker = count;END PROCESS P1;-演奏時能循環(huán)進行,因此需另外設置一個時長計數(shù)器,-當樂曲演奏完成時,保證能自動從頭開始演奏-P2:PROCESS(clk_4Hz)BEGINIF(clk_4Hzevent AND clk_4Hz=1) THEN IF
19、(counter=140) THEN -該長度因不同樂曲長度而不同 counter=0; ELSE counterdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdig
20、itdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdig
21、itdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitdigitorigin=“0001000100011;-547 digH= “1111111” -滅digM= “1111111”; -滅digLorigin=“0010101100111;-1383digH= “1111111” -滅digM= “1111111”; -滅digLor
22、igin=“0100001001011;-2123digH= “1111111” -滅digM= “1111111”; -滅digLorigin=“0100110011111;-2463digH= “1111111” -滅digM= “1111111”; -滅digLorigin=“0110000010011;- 3091digH= “1111111” -滅digM= “1111111”; -滅digLorigin=“0111000111111;- 3647digH= “1111111” -滅digM= “1111111”; -滅digLorigin=“1000000110111;- 4151
23、digH= “1111111” -滅digM= “1111111”; -滅digLorigin=“1000100010001;- 4369digH= “1111111” -滅digL= “1111111”; -滅digMorigin=“1001010110011;- 4787digH= “1111111” -滅digL= “1111111”; -滅digMorigin=“1010000100101;- 5157digH= “1111111” -滅digL= “1111111”; -滅digMorigin=“1010011001111;- 5327digH= “1111111” -滅digL=
24、“1111111”; -滅digMorigin=“1011000001000;- 5640digH= “1111111” -滅digL= “1111111”; -滅digMorigin=“1011100011111;- 5919digH= “1111111” -滅digL= “1111111”; -滅digMorigin=“1100000010111;-6167digH= “1111111” -滅digL= “1111111”; -滅digM origin=“1100010001000;-6280digM= “1111111” -滅digL= “1111111”; -滅digH origin=
25、1100101011001;-6489digM= “1111111” -滅digL= “1111111”; -滅digH origin=“1101000010010;-6674digM= “1111111” -滅digL= “1111111”; -滅digH origin=1101001100111;-6759digM= “1111111” -滅digL= “1111111”; -滅digH origin=“1101100000100;-6916digM= “1111111” -滅digL= “1111111”; -滅digH origin=1101110001111;-7055digM= “
26、1111111” -滅digL= “1111111”; -滅digH origin=“1110000001011;-7179digM= “1111111” -滅digL= “1111111”; -滅digHorigin=1111111111111;-8191 END CASE;END PROCESS P4;END song_arch;7.2.5 仿真結果音樂發(fā)生器的仿真波形如圖7-6所示。圖7-6 音樂發(fā)生器仿真波形圖 7.2.6 下載驗證 鎖定引腳時將clk_20MHz和clk_4 Hz分別連至CLK0(16),speaker外接揚聲器, digH 、 digM和 digL分別接數(shù)碼管,即可
27、聽到音樂。7.3 2FSK/2PSK信號產生器 7.3.1 2FSK基本原理 在通信領域中,為了傳送信息,一般都將原始的信號進行某種變換變成適合于通信傳輸?shù)男盘栃问?。在?shù)字通信系統(tǒng)中,一般將原始信號(圖像、聲音等)經過量化編碼變成二進制碼流,稱為基帶信號。 但數(shù)字基帶信號一般不適合于直接傳輸。例如,通過公共電話網絡傳輸數(shù)字信號時,由于電話網絡的帶寬為4 kHz以下,因此數(shù)字信號不能直接在其上傳輸。此時可將數(shù)字信號進行調制,F(xiàn)SK即為一種常用的數(shù)字調制方式,由FSK調制的波形如圖7-7示。 FSK又稱移頻鍵控, 它利用載頻頻率的變化來傳遞數(shù)字信息。數(shù)字調頻信號可以分為相位離散和相位連續(xù)兩種。若兩
28、個載頻由不同的獨立振蕩器提供,它們之間相位互不相關,就稱相位離散的數(shù)字調頻信號;若兩個頻率由同一振蕩信號源提供,只是對其中一個載頻進行分頻,這樣產生的兩個載頻就是相位連續(xù)的數(shù)字調頻信號。圖7-7 FSK調制的波形 7.3.2 2FSK信號產生器 由于FSK為模擬信號,而FPGA只能產生數(shù)字信號,因此需對正弦信號采樣并經模數(shù)變換來得到所需的FSK信號。本例由FPGA產生正弦信號的采樣值。FSK信號發(fā)生器框圖如圖7-8所示,整個系統(tǒng)共分為分頻器、m序列產生器、跳變檢測、2:1數(shù)據選擇器、正弦波信號產生器和DAC數(shù)模變換器等6部分,其中前5部分由FPGA器件完成。圖7-8 FSK調制信號發(fā)生器框圖
29、1分頻器 本實例中數(shù)據速率為1.2 kHz,要求產生1.2 kHz和2.4 kHz兩個正弦信號。對正弦信號每周期取100個采樣點,因此要求能產生3個時鐘信號:1.2 kHz(數(shù)據速率)、120 kHz(產生1.2 kHz正弦信號的輸入時鐘)和240 kHz(產生2.4 kHz正弦信號的輸入時鐘)?;鶞蕰r鐘由一個12 MHz的晶振提供。設計中要求一個50分頻(產生240 kHz信號),再2分頻(產生120 kHz信號)和100分頻(產生1.2 kHz信號),共有三個分頻值。 2m序列產生器 m序列是偽隨機序列的一種,它的顯著特點是:隨機特性,預先可確定性,循環(huán)特性。正因為這些特性,使得m序列產生
30、器在通信領域得到了廣泛的應用。 本例用一種帶有兩個反饋抽頭的3級反饋移位寄存器,得到一串“1110010”循環(huán)序列,并采取措施防止進入全“0”狀態(tài)。通過更換時鐘頻率可以方便地改變輸入碼元的速率。m序列產生器的電路結構如圖7-9所示。圖7-9 m序列產生器電路結構 3跳變檢測 將跳變檢測引入正弦波的產生中,可以使每次基帶碼元上升沿或下降沿到來時,對應輸出波形位于正弦波形的sin0處。引入跳變檢測主要是為了便于觀察,確保示波器上顯示為一個連續(xù)的波形。 基帶信號的跳變檢測可以有很多方法,圖7-10為一種便于在可編程邏輯器件中實現(xiàn)的方案。圖7-10 信號跳變檢測電路 42:1數(shù)據選擇器 2:1數(shù)據選擇
31、器用于選擇正弦波產生器的兩個輸入時鐘。一個時鐘的頻率為120 kHz,此時正弦波產生器產生一個1.2 kHz的正弦波,代表數(shù)字信號“0”;另一個時鐘的頻率為240 kHz,此時產生一個2.4 kHz的正弦波信號,代表數(shù)字信號“1”。 5正弦信號的產生 用數(shù)字電路和DAC變換器可以產生要求的模擬信號。根據抽樣定理可知,當用模擬信號最大頻率兩倍以上的速率對該模擬信號采樣時,便可將原模擬信號不失真地恢復出來。本例要求得到的是兩個不同頻率的正弦信號,實驗中對正弦波每個周期采樣100個點,即采樣速率為原正弦信號頻率的100倍,因此完全可以在接收端將原正弦信號不失真地恢復出來,從而可以在接收端對FSK信號
32、正確地解調。經DAC轉換后,可以在示波器上觀察到比較理想的波形。 本實驗中每個采樣點采用8位量化編碼,即8位分辨率。采樣點的個數(shù)與分辨率的大小主要取決于CPLD/FPGA器件的容量,其中分辨率的高低還與DAC的位數(shù)有關。實驗表明,采用8位分辨率和每周期100個采樣點可以達到相當不錯的效果。 具體的正弦信號產生器可以用狀態(tài)機來實現(xiàn)。按前面的設計思路,本實現(xiàn)方案共需100個狀態(tài),分別為s1s100。同時設計一個異步復位端,保證當每個“1”或“0”到來時其調制信號正好位于坐標原點,即sin0處。狀態(tài)機共有8位輸出(Q7Q0),經DAC變換為模擬信號輸出。為得到一個純正弦波形,應在DAC的輸出端加上一
33、個低通濾波器,由于本例僅觀察FSK信號,因此省去了低通濾波器。 本設計中,數(shù)字基帶信號與FSK調制信號的對應關系為“0”對應1.2 kHz,“1”對應2.4 kHz,此二載波的頻率可以方便地通過軟件修改。圖7-11 2FSK/2PSK信號產生器外部接口 7.3.3 2FSK/2PSK信號產生器 在2FSK的基礎上,可以較容易地設計出2PSK信號產生器,其接口如圖7-11所示。在檢測到基帶碼元的上升沿或下降沿時,使輸出波形位于sin處,即可使波形倒相,產生2PSK信號。 在設計的最后,應考慮選用DAC器件將波形數(shù)據轉換為模擬波形輸出。本實驗箱上選用8位并行DAC器件TLC7528,將8位數(shù)據輸出
34、連至DAC器件的8位數(shù)據輸入端,即可觀察到產生的2FSK/2PSK波形。為了觀察波形的方便,我們將TLC7528連接成電壓輸出的方式(器件本身是電流輸出方式),后面跟一個射隨器以增強帶載能力。7.3.4 2FSK信號產生器的VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fsk ISPORT(clock: IN STD_LOGIC;-正弦波發(fā)生器時鐘 dout: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-并行數(shù)據DATA code: BUFFER
35、 STD_LOGIC-輸出m序列 ); END fsk; ARCHITECTURE fsk_arch OF fsk ISSIGNAL count100: STD_LOGIC_VECTOR (6 DOWNTO 0);-記錄100個狀態(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序
36、列BEGINPROCESS(clock)BEGIN IF(clockevent AND clock=1) THEN-產生FSK所需的另一個頻率sinclk1=clock/2 sinclk1=NOT sinclk1; END IF;END PROCESS;PROCESS(sinclk1) -sinclk1 100分頻得到coderate碼元速率BEGIN IF(sinclk1event AND sinclk1=1) THEN IF(count50=110001) THEN count50=000000; coderate=NOT coderate; ELSE count50= count50+1
37、; END IF; END IF; END PROCESS;m_sequence_form: -產生 1110010 m序列PROCESS(coderate)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 m(2); END IF;END PROCESS; code
38、=m(0);PROCESS(sinclk1,clock,code)BEGIN IF(code=0) THEN sinclk=sinclk1; ELSE sinclk=clock; -選擇正弦波產生器的時鐘頻率 END IF;END PROCESS; jump_high=(not temp) AND code; -0到1跳變PROCESS(sinclk)-2FSK跳變的不同處理BEGIN IF(sinclkevent AND sinclk=1) THEN temp=code; IF(count100=1100011) OR (jump_high=1) THEN count100=0000000;
39、 ELSE count100doutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdo
40、utdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutnull; END CASE; END PROCESS; END fsk_arch;7.3.5 2PSK信號產生器的VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY psk ISPORT (clock: IN STD_LOGIC;-正弦波發(fā)生器時鐘
41、dout: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -并行數(shù)據DATA code: BUFFER STD_LOGIC -輸出m序列 END psk; ARCHITECTURE psk_arch OF psk ISSIGNAL count100: STD_LOGIC_VECTOR (6 DOWNTO 0); -記錄100個狀態(tài)SIGNAL count50: STD_LOGIC_VECTOR (5 DOWNTO 0);SIGNAL sinclk1: STD_LOGIC;SIGNAL sinclk, coderate: STD_LOGIC;SIGNAL temp,jump
42、_low, jump_high: STD_LOGIC;SIGNAL m: STD_LOGIC_VECTOR(2 DOWNTO 0); -m序列BEGINPROCESS(clock)BEGIN IF(clockevent AND clock=1) THEN -產生FSK所需的另一個頻率sinclk1=clock/2 sinclk1=NOT sinclk1; END IF;END PROCESS; PROCESS(sinclk1)-sinclk1 100分頻得到coderate碼元速率BEGIN IF(sinclk1event AND sinclk1=1) THEN IF(count50=1100
43、01) THEN count50=000000; coderate=NOT coderate; ELSE count50= count50+1; END IF; END IF; END PROCESS;m_sequence_form:-產生 1110010 m序列PROCESS(coderate)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)=
44、(m(1) XOR m(0) OR (NOT (m(0) OR m(1) OR m(2); END IF; END PROCESS; code=m(0);jump_low=(not code) AND temp;-0到1跳變jump_high=(not temp) AND code;-1到0跳變PROCESS(clock)-2PSK對跳變的不同處理BEGIN IF(clockevent AND clock=1) THEN temp=code; IF(jump_low=1) THEN count100=0110010; ELSIF(jump_high=1) THEN count100=00000
45、00; ELSIF(count100=1100011) THEN count100=0000000; ELSE count100doutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdout
46、doutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutdoutnull; END CASE; END PROCESS; END psk_arch; 7.3.6 仿真結果 2FSK信號產生器的仿真波形如圖7-12所示;2PSK信號產生器的仿真波形如圖7-13所示。圖7-12 2FSK信號產生器仿真波形圖 圖7-13 2PSK信號產生器
47、仿真波形圖 7.3.7 下載驗證 鎖定引腳時將clock連至CLK1,dout連至DA輸入端,code連至TESTOUT1(測試1腳)。綜合適配后將配置數(shù)據下載入EDA實驗平臺(技術資料詳見附錄)的FPGA中(有關CLK1等引腳在FPGA芯片引腳中的序號, 請參見附錄的附圖1),即可用雙蹤示波器同時觀察m序列及其對應的2FSK或2PSK波形。7.1 實用多功能電子表 7.1.1 功能描述 多功能電子表共有5種功能:功能1為數(shù)字鐘;功能2為調時;功能3為鬧鐘設置;功能4為數(shù)字跑表; *功能5為日期設置。除調時功能以外,電子表處于其他功能狀態(tài)下時并不影響數(shù)字鐘的運行。使用數(shù)字鐘功能時,還可以通過按
48、鍵快速查看當前的鬧鐘設置時間和當前日期。該電子表利用EDA實驗平臺的揚聲器整點報時和定時報時,設置3個按鍵分別作為功能鍵和調整鍵。實用多功能電子表外部接口如圖7-14所示。圖7-14 實用多功能電子表外部接口 1輸入 (1) func_key:功能鍵,控制電子表的功能號。 (2) key1:調整key1,功能1時按下可顯示鬧鐘設置時間;功能2時用作跑表暫停鍵;功能3、4時分別用于調數(shù)字鐘和鬧鐘的小時數(shù);功能5時用于調日期的月份。 (3) key2:調整key2,功能1時按下可顯示當前日期;功能2時用作跑表清零鍵;功能3、4時分別用于調數(shù)字鐘和鬧鐘的分鐘數(shù);功能5時用于調日期的日期數(shù)。 (4)
49、clk_1 Hz:數(shù)字鐘時鐘(1 Hz)輸入。 (5) clk_1 kHz:1 kHz時鐘,是整點報時和定點報時所需的頻率。另外,10分頻后還可得到100 Hz頻率信號作為數(shù)字跑表時鐘輸入。 2輸出 (1) mode:顯示電子表的功能號15。 (2) hour:功能1、3和4時顯示小時數(shù);功能2時顯示跑表的分鐘數(shù);功能5時顯示月份。 (3) minute:功能1、3和4時顯示分鐘數(shù);功能2時顯示跑表的秒數(shù);功能5時顯示日期數(shù)。 (4) second:功能1時顯示秒數(shù);功能2時顯示1%秒;功能3、4和5時均顯示0。 (5) alarm:連至揚聲器,用于整點報時及鬧鐘報時。 7.1.2 電路組成
50、在明確電子表的功能后,可對電子表進行模塊劃分得到電子表設計的結構框圖,如圖7-15所示。圖7-15 實用多功能電子表結構框圖 從結構框圖中可以看出,模塊劃分與功能劃分存在不同之處。下面分別對幾個模塊加以說明。 1數(shù)字鐘與調時模塊 由于調時功能改變的就是數(shù)字鐘的時和分,因此應將這兩個功能合在同一模塊中。這是因為在VHDL和Verilog HDL中都不允許兩個進程對同一信號進行賦值(即多重驅動)。此模塊的輸入有下面3個。 (1) clk_1:時鐘輸入。當處在數(shù)字鐘功能時,clk_1應為1 Hz的時鐘信號;當處在調時功能時,clk_1應為按key1和key2調整鍵產生的adjust_key1和adj
51、ust_key2脈沖信號。因此可描述clk_1為clk_1=(clk_1 Hz&mode!=3)|(mode=3&(adjust_key1|adjust_key2);即當不處于功能3時為1 Hz時鐘信號,處于功能3時為adjust_key1或adjust_key2脈沖信號。這樣,當將電子表調整到數(shù)字鐘功能外的其他功能時將不會影響數(shù)字鐘的運行。 (2) adjust_key1和adjust_key2:在EDA實驗平臺上實現(xiàn)時,key1(KEY2)和key2(KEY3)兩個調整鍵是乒乓開關,即每按動一次,相應引腳上的電平就翻轉一次。這里需將其變?yōu)榍冁I開關,即每按動一次將產生一個上跳脈沖,從而啟動進
52、程的運行。有關乒乓開關和琴鍵開關的說明請參見附錄。 此模塊的輸出為6位時、7位分和7位秒,采用BCD碼表示。 2跑表模塊 跑表的設計與數(shù)字鐘的設計基本相同,不同的是其輸入時鐘應為100 Hz的信號,同時還應增加暫停鍵(key1)和清零鍵(key2)。因此其時鐘clk_2應描述為 clk_2=clk_100 Hz&mode=2&!key1; 即當電子表處于功能2時啟動跑表模塊運行,時鐘為100 Hz,key1(乒乓開關)則作為時鐘使能信號,也即作為跑表的暫停鍵。 跑表模塊的輸出為7位分、7位秒和8位1%秒,采用BCD碼顯示。 3鬧鐘設置模塊 鬧鐘設置模塊的輸入為兩個調整鍵clk_key1和clk
53、_key2,分別描述為 clk_key1=adjust_key1 & mode=4; clk_key2=adjust_key2 & mode=4; 表示在鬧鐘功能時key1和key2分別作為調時鍵和調分鍵。鬧鐘的輸出為6位時和7位分,采用BCD碼顯示。 4日期設置模塊 日期設置模塊輸入為兩個調整鍵clk_key3和clk_key4,分別描述為 clk_key3=adjust_key1 & mode=5; clk_key4=adjust_key2 & mode=5; 表示日期設置功能時key2和key3分別作為調月鍵和調日鍵。日期設置的輸出為5位月(共12月)和6位日(共30日),采用BCD碼顯
54、示。 5顯示模塊 由于EDA實驗平臺上已為數(shù)碼管顯示制作了譯碼和驅動電路,因此在其上設計數(shù)碼管顯示電路時將無須編寫譯碼電路。 本設計顯示模塊的作用是根據不同的功能號,將相應功能的輸出連至數(shù)碼管上并輸出。 6報時模塊 報時模塊控制在整點或鬧鐘時間到時將1 kHz或500 Hz的方波信號送至實驗平臺上的揚聲器發(fā)聲。 7分頻模塊 分頻模塊將1 kHz的方波信號分頻至500 Hz(整點報時用)和100 Hz(跑表時鐘)。 8功能號指示 通過按功能鍵選擇不同的功能號(15),將功能號送往其他模塊使用并通過數(shù)碼管顯示出來。 9按鍵切換 在EDA實驗平臺上,func_key(KEY1)、key1(KEY2)
55、和key2(KEY3)均為乒乓開關,需將其轉換為琴鍵開關func_key、adjust_key1和adjust_key2,這樣在用KEY1、KEY2和KEY3鍵調整功能號或調時、調分時,每按一次便會產生一個上升沿脈沖,啟動相應進程的運行。7.1.3 Verilog-HDL程序module clock(clk_1 Hz, clk_1 kHz, func_key, key1, key2, mode, hour, minute, second, alarm);input clk_1 Hz ; /1Hz時鐘,供數(shù)字鐘使用input clk_1 kHz ; /1 kHz時鐘, 分成500 Hz供鬧鐘和整
56、點報時使用, 100 Hz供跑表使用input func_key ; /功能鍵, 1表示數(shù)字鐘, 2表示跑表, 3表示調時, 4表示設置鬧鐘, /5表示日期設置input key1 ; /功能1時顯示鬧鐘時間, 功能2時暫停, 功能3、4時調小時, 功能5時調月份input key2 ;/功能1時顯示日期, 功能2時清零, 功能3、4時調分, 功能5時調日output 3:0 mode;/功能號指示output 7:0 hour ;/功能1、3和4時顯示小時, 功能2時顯示分鐘, 功能5時顯示月份output 7:0 minute;/功能1、3和4時顯示分鐘, 功能2時顯示秒, 功能5時顯示日
57、期output 7:0 second;/功能1時顯示秒, 功能2時顯示1/100秒, 其余時固定顯示0output alarm ;/連至揚聲器, 整點報時及鬧鐘reg3:0 mode;/功能號指示(15)reg7:0 hour,minute,second;reg2:0 divide;/1 kHz信號10分頻得100 Hz, 先5分頻,再2分頻reg clk_100 Hz;/100 Hz供跑表用reg clk_500 Hz;/500 Hz供準點報時時用reg temp1,temp2,temp3;wire funckey,adjust_key1,adjust_key2;always(posedge
58、 clk_1 kHz)begin clk_500 Hz=clk_500 Hz;/由1 kHz分頻得500 Hz時鐘信號,整點報時使用 temp1=func_key; temp2=key1; temp3=key2; If(divide=3b101)/由1 kHz分頻得到100 Hz信號,用作跑表的時鐘 begin divide=0;clk_100 Hz=clk_100 Hz; end else divide=divide+1;endassign funckey=func_keytemp1;/將func_key(乒乓開關)轉換為琴鍵開關assign adjust_key1=key1temp2;/將
59、key1(乒乓開關)轉換為琴鍵開關assign adjust_key2=key2temp3;/將key2(乒乓開關)轉換為琴鍵開關always(posedge funckey)begin if(mode2&mode0) mode2=0;/功能號在15之間變化 else mode=mode+1;end/功能1與功能3:數(shù)字鐘及時間設置, 功能3以外其他功能將不影響數(shù)字鐘的運行reg5:0 h1;/功能1(數(shù)字鐘)的時、分、秒reg6:0 m1,s1;wire clk_1;/數(shù)字鐘時為1 Hz時鐘, 時間設置時為按調整鍵產生的脈沖Assign clk_1=(clk_1 Hz&mode!=3)|(m
60、ode=3&(adjust_key1|adjust_key2);always(posedge clk_1)begin if(mode!=3)/數(shù)字鐘 begin/23:59:59時變?yōu)?0:00:00if(h15&h11&h10&m16&m14&m13&m10&s16&s14&s13&s10) h1,m1,s1=0; else if(h13&h10&m16&m14&m13&m10&s16&s14&s13&s10) begin/*9:59:59時小時加7,分、秒變?yōu)? h1=h1+7;m1=0;s1=0; end else if(m16&m14&m13&m10&s16&s14&s13&s10)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 書購銷協(xié)議合同范本
- 2025年度建筑工程質量檢測合作施工合同規(guī)范文本
- 企業(yè)銷售培訓合同范本
- 2025年度快遞企業(yè)間貨物運輸委托合同(新版)
- 住房申請書 范文
- 2025年對硫磷項目可行性研究報告
- 入團申請書800字左右
- 個人工資申請書
- 中國物理農業(yè)行業(yè)市場發(fā)展監(jiān)測及投資前景展望報告
- 2025年度智能物聯(lián)網系統(tǒng)解決方案技術服務合同
- 新能源整車裝配工藝培訓的資料課件
- 房車露營地的研究課件
- 園藝療法共課件
- DB33T 628.1-2021 交通建設工程工程量清單計價規(guī)范 第1部分:公路工程
- 醫(yī)院-9S管理共88張課件
- 設立登記通知書
- 2022醫(yī)學課件前列腺炎指南模板
- MySQL數(shù)據庫項目式教程完整版課件全書電子教案教材課件(完整)
- 藥品生產質量管理工程完整版課件
- 《網絡服務器搭建、配置與管理-Linux(RHEL8、CentOS8)(微課版)(第4版)》全冊電子教案
- 職業(yè)衛(wèi)生教學課件生物性有害因素所致職業(yè)性損害
評論
0/150
提交評論