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