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