基于51單片機(jī)、EDA技術(shù)的波形發(fā)生器的設(shè)計(jì)
該波形發(fā)生器以單片機(jī)(MCS8031)為中心控制單元,由鍵盤輸入模塊、數(shù)碼管顯示模塊、D/A波形發(fā)生模塊、幅值調(diào)整模塊組成。采用DDFS技術(shù),先將要求的波形數(shù)據(jù)存儲(chǔ)于EEPROM中,這樣可以保證掉電以后波形數(shù)據(jù)不丟失。
為了達(dá)到所要求的高速度,采用FPGA(ALTEAR 公司的 EPF10K10LC84-4, 晶振頻率可達(dá) 40MHz)來實(shí)現(xiàn)波形的發(fā)生,通過DDFS技術(shù)(直接數(shù)字頻率合成技術(shù))、VHDL語言和單片機(jī)匯編語言編程技術(shù)的完美結(jié)合實(shí)現(xiàn)了對(duì)正弦波、方波和三角波三種波形的頻率、幅值的設(shè)置和發(fā)生。
隨著深亞微米半導(dǎo)體技術(shù)的進(jìn)步,可編程邏輯器件及EDA技術(shù)的應(yīng)用已經(jīng)相當(dāng)普及?;诳删幊踢壿嬈骷母哳l性質(zhì)和單片機(jī)強(qiáng)大的數(shù)據(jù)處理功能,二者結(jié)合的技術(shù)也有相當(dāng)?shù)挠绊懥?。本設(shè)計(jì)中涉及到單片機(jī)匯編語言、VHDL語言的運(yùn)用,充分地利用了二者的優(yōu)點(diǎn),制作了一套波形發(fā)生系統(tǒng)。
1 系統(tǒng)設(shè)計(jì)
整體設(shè)計(jì)由三大模塊組成:?jiǎn)纹瑱C(jī)控制部分、可編程邏輯器件(FPGA)部分、模擬電路部分。其系統(tǒng)方框原理圖如下所示:
波形發(fā)生采用DDS技術(shù),可以很方便地產(chǎn)生各種高質(zhì)量的波形,DDS的基本原理是:先將要產(chǎn)生的波形數(shù)據(jù)存入波形發(fā)生器,然后通過改變參考脈沖的頻率,將波形數(shù)據(jù)傳送給D/A轉(zhuǎn)換器,濾波處理后便可以輸出光滑的合成波形。為了提高所產(chǎn)生的波形頻率,采用高頻率特性的FPGA(ALTERA公司的 EPF10K10LC84-4),后級(jí)電路采用有較高的轉(zhuǎn)換速度的DAC0832作為D/A轉(zhuǎn)換。
1.1 單片機(jī)部分
在設(shè)計(jì)中,采用MCS8031為處理器,P2.7作為8279的片選端,P2.6作為FPGA的片選端, P2.5為DAC0832(a)的片選端。P0口作為三者的低8位地址和數(shù)據(jù)線。單片機(jī)控制DAC0832(a),使其輸出為0~5V可變電壓,作為 DAC0832(b)的參考電壓,于是可控制輸出波形的幅值。由于采用7位數(shù)據(jù)控制,精度可達(dá)到0.039V。
1.2 FPGA模塊
設(shè)計(jì)中我使用了ALTRA公司的MAXPLUSⅡ 10.0系統(tǒng),采用原理圖和VHDL語言編程相結(jié)合的形式,充分地發(fā)揮了FPGA的高速和現(xiàn)場(chǎng)可編程的能力。
在FPGA中通過編程片內(nèi)實(shí)現(xiàn)比例乘法器(cc14527),在單片機(jī)的控制下,F(xiàn)PGA接收單片機(jī)傳送過來的用戶要求的波形數(shù)據(jù)及其頻率數(shù)據(jù),并送到比例乘法器以產(chǎn)生所需要的輸出頻率值。頂層圖如下:
其中:P20作為FPGA的片選端,低電平有效,高電平時(shí)保持現(xiàn)有狀態(tài),與單片機(jī)的P2.6相連。WR為FPGA的寫信號(hào),與單片機(jī)的寫端口相連。當(dāng)P20為低電平時(shí),單片機(jī)可向FPGA寫數(shù)據(jù),以達(dá)到傳送命令以及數(shù)據(jù)的目的。ALE為輸入信號(hào),與單片機(jī)的ALE信號(hào)相連,用于FPGA片內(nèi)鎖存地址,配合WR信號(hào)進(jìn)行單片機(jī)與FPGA的通訊。P0[7..0]共8條數(shù)據(jù)線,為單片機(jī)P0口的接口,用于地址和數(shù)據(jù)的傳送。CLK為FPGA的基準(zhǔn)頻率(16MHz)。WR0832用于控制DAC0832(b),與其WR端相連,在其下跳沿時(shí)DAC0832(b)可以取到存儲(chǔ)器中相應(yīng)給定地址的數(shù)據(jù)。 CE:用于控制EEPROM28C64,與其片選端CE相連。CE1用于控制DAC0832(b),與其片選端CE相連。ADDRESS[9..0]為 EEPROM28C64的地址信號(hào),用于取址。
EEPROM28C64中存有波形數(shù)據(jù),單片機(jī)通過控制FPGA使其輸出的頻率為用戶所需頻率的128倍,用于控制EEPROM28C64的輸出值的頻率,于是DAC0832(b)的輸出波形頻率也相應(yīng)地改變。在FPGA內(nèi)主要完成比例乘法器的功能,用于頻率的控制。
單片機(jī)與FPGA通訊接口原理如下圖所示:
其中:SEL信號(hào),用于控制波形的形狀,共有三種波形(正弦波、方波、三角波)。Q0[3..0]~Q5[3..0]用于6級(jí)級(jí)聯(lián)比例乘法器的置數(shù)輸入。ST為級(jí)聯(lián)比例乘法器的片選端,低有效。
FPGA片內(nèi)實(shí)現(xiàn)寄存器,可對(duì)單片機(jī)傳輸?shù)臄?shù)據(jù)和命令進(jìn)行寄存,具體如下:
?、琶罴拇嫫?/P>
入口地址:FFH 命令字:FFH(ST有效),00H(ST無效)
入口地址:00H 命令字:E0H(顯示正弦波,sel為00),E1H(顯示方波,sel為01),E2H(顯示三角波,sel為10)。
?、?數(shù)據(jù)寄存器
入口地址:01H,02H,03H分別存儲(chǔ)單片機(jī)傳送的6位10進(jìn)制數(shù)。這些數(shù)據(jù)是用戶要求的頻率數(shù)通過單片機(jī)乘8處理后傳送過來的,為乘法器提供頻率數(shù)據(jù)。
FPGA對(duì)DAC0832及EEPROM28C64控制接口如下圖所示:
WR0832為DAC0832讀信號(hào),下跳沿讀取數(shù)據(jù)。CE、CE1分別為DAC0832、EEPROM28C64片選端。ADDRESS[9..0]為 EEPROM28C64地址信號(hào)。ADDRESS[9..0]的高兩位為SEL[1..0],時(shí)鐘信號(hào)CLK上升沿時(shí)ADDRESS[6..0]:自增 1,EEPROM28C64輸出相應(yīng)的波形數(shù)據(jù)。同時(shí)CLK下降沿時(shí),DAC0832讀取波形數(shù)據(jù)。
3 模擬部分
DAC0832與單片機(jī)采用單緩沖方式接口電路,由于DAC0832內(nèi)部含有鎖存器,具有鎖存功能,所以不必通過373鎖存。DAC0832的模擬電壓輸出電路如下:
濾波部分采用帶通濾波,使低于1HZ的頻率信號(hào)和高于100KHZ的頻率信號(hào)被濾掉,增加波形的平滑度。
評(píng)論