基于AVR和FPGA高精度數(shù)字式移相發(fā)生器的設(shè)計
1 引 言
移相信號發(fā)生器屬于信號源的一個重要組成部分,但傳統(tǒng)的模擬移相有許多不足,如移相輸出波形易受輸入波形的影響,移相角度與負(fù)載的大小和性質(zhì)有關(guān),移相精度不高,分辨率較低等。而且,傳統(tǒng)的模擬移相不能實現(xiàn)任意波形的移相,這主要是因為傳統(tǒng)的模擬移相由移相電路的幅相特性所決定,對于方波、三角波、鋸齒波等非正弦信號各次諧波的相移、幅值衰減不一致,從而導(dǎo)致輸出波形發(fā)生畸變。目前利用DDS技術(shù)產(chǎn)生信號源的方法得到了廣泛的應(yīng)用,但是專用DDS芯片由于采用特定的集成工藝,內(nèi)部數(shù)字信號抖動很小,不可以輸出高質(zhì)量的模擬信號。隨著現(xiàn)代電子技術(shù)的發(fā)展,特別是隨單片機(jī)和可編程技術(shù)的發(fā)展而興起的數(shù)字移相技術(shù)卻很好地解決了這一問題。在眾多的單片機(jī)之中,AVR 單片機(jī)是目前最新單片機(jī)系列之一,其突出的特點在于速度高、片內(nèi)硬件資源豐富等。以FPGA為核心的PLD產(chǎn)品,是近幾年集成電路中發(fā)展最快的產(chǎn)品。采用FPGA芯片,可并行處理多項任務(wù),其高速性能好(執(zhí)行速度達(dá)到納秒級),純硬件系統(tǒng)的可靠性高。利用FPCA實現(xiàn)DDS能很好地解決專用DDS芯片的諸多缺點,他可以根據(jù)需要方便地實現(xiàn)各種比較復(fù)雜的調(diào)頻、調(diào)相和調(diào)幅功能,具有良好的實用性。
本文結(jié)合AVR系列單片機(jī)ATmega16和采用FPGACyclone器件實現(xiàn)DDS的一種數(shù)字式移相信號發(fā)生器設(shè)計新方案。該方案具有靈活可變的特點,更重要的是可以和其他功能模塊組合擴(kuò)展為任意信號發(fā)生器。
2 系統(tǒng)總體方案設(shè)計及實現(xiàn)
他包括鍵盤按鍵控制部分,單片機(jī)系統(tǒng)部分,F(xiàn)PGA部分,以及幅度控制和D/A轉(zhuǎn)換電路。單片機(jī)采用ATmega16,他根據(jù)矩陣式鍵盤輸入給FPGA送出頻率控制字與相位控制字,用于設(shè)定輸出正弦波的頻率與相位。高速D/A轉(zhuǎn)換器用于正弦波的DA轉(zhuǎn)換,利用單片機(jī)的幅度控制字來控制他的參考電壓可以達(dá)到數(shù)字調(diào)幅的目的。FPGA構(gòu)成DDS的核心部分,用于接收送來的頻率字與相位字,同時給DA轉(zhuǎn)換器輸出正弦波數(shù)據(jù)。采用字符型液晶1602A顯示屏實時顯示輸出的頻率與相位。
2.1 單片機(jī)與FPGA間的通信
ATmega16的同步串行接口允許在芯片和外設(shè)之間,或幾個AVR單片機(jī)之間,以與標(biāo)準(zhǔn)SPI接口協(xié)議兼容的方式進(jìn)行高速的同步數(shù)據(jù)傳輸。本系統(tǒng)中,ATmega16只負(fù)責(zé)發(fā)送數(shù)據(jù),不需要接收數(shù)據(jù),故設(shè)置為主機(jī)工作模式。
2.2 數(shù)控移相信號發(fā)生器設(shè)計
DDS的主要思想是從相位的概念出發(fā)合成所需的波形,他的基本原理框圖如圖3所示。他采用了相位累加振蕩方法的直接數(shù)字合成系統(tǒng),把正弦波在相位上的精度定為N位,得分辨率為1/2N。用時鐘頻率fclk一次讀取數(shù)字相位圓周上各點作為地址,對出相應(yīng)ROM中的正弦波的幅度值,然后經(jīng)DAC重構(gòu)正弦波。相位累計器的作用是讀取數(shù)字相位圓周上各點時可以每隔M個點讀一個數(shù)值,從而得到輸出正弦波頻率fsin為:
基于DDS的數(shù)字移相信號發(fā)生器是整個系統(tǒng)的設(shè)計核心部分,其電路模型圖如圖4所示。這部分完全是由VHDL語言設(shè)計,并在FPGA Cyclone器件上實現(xiàn)的。電路要求能輸出2路正弦信號,由2路10位D/A實現(xiàn)波形輸出。信號頻率能通過輸入的8位頻率控制字同步控制;其中一路作為參考信號,另一路是可移相的信號,可通過輸入的8位相位控制字控制。其中“FWORD”是8位頻率控制字,控制輸出波形信號的頻移量;“PWORD”是8位相移控制字,控制輸出波形的相移量;ADDER32B及AD-DER10B分別為32位和10位加法器;SIN_ROM是存放波形數(shù)據(jù)的ROM,10位數(shù)據(jù)線,10位地址線(數(shù)據(jù)和地址線最大可以到32位),其中正弦波數(shù)據(jù)文件是后綴為mif的文件,可由C程序直接生成。REG32B和REG10B分別是32位和10位寄存器;POUT和FOUT為8位輸出,可以分別與兩個高速D/A連接,輸出參考信號和可移相波形信號。
2.3 嵌入式鎖相環(huán)的設(shè)計
當(dāng)輸出波形頻率較高時,由于采樣一個完整周期的波形數(shù)據(jù)點數(shù)減少,勢必引起波形失真,要消除波形失真,一是可以增加采樣波形數(shù)據(jù)的點數(shù),二是提高系統(tǒng)的主工作時鐘頻率。若不增加外配ROM的情況下,可以使用后一種方法。本系統(tǒng)設(shè)計時在充分利用FPGA的存儲空間的情況下,為了提高波形的輸出頻率(在不失真的條件下),還使用了Cyclone器件中的嵌入式鎖相環(huán),提高系統(tǒng)的主工作時鐘頻率,在實際工作時的主時鐘頻率達(dá)120 MHz。
3 實驗結(jié)論
通過設(shè)計和實驗,得出以下結(jié)論:
(1)本設(shè)計通過鍵盤控制波形輸出的頻率和相位,波形頻率可調(diào)范圍為:10 Hz~15 MHz,相位可調(diào)范圍為:0°~360°,頻率最小步進(jìn)值為1.795 15 Hz。
(2)波形失真度與儲存波形ROM的位數(shù)及主工作時鐘頻率有關(guān)。
(3)使用FPGA中的嵌入式鎖相環(huán)或者增加采樣波形數(shù)據(jù)的點數(shù)(此時需要外配置ROM),可以大大提高主工作時鐘的頻率,消除波形失真。采用哪種方法或同時采用兩種方法,取決于實際應(yīng)用的需要。采用VHDL語言,具有很強(qiáng)的電路描述和建模能力,能從多個層次對數(shù)字系統(tǒng)進(jìn)行建模和描述,從而大大簡化了硬件設(shè)計任務(wù),提高了設(shè)計效率和可靠性。
(4)基于FPGA和VHDL的在系統(tǒng)可重編程的特點,系統(tǒng)更新只需修改VHDL程序即可,無需重新制作系統(tǒng)。外圍電路數(shù)/模轉(zhuǎn)換器的控制也可由VHDL程序?qū)崿F(xiàn),因此數(shù)/模轉(zhuǎn)換芯片更換方便。
(5)采用ATmega16單片機(jī),可實現(xiàn)在線編程,方便靈活,提高了開發(fā)效率,同時采用串行數(shù)據(jù)傳送方式占用口線少,減少了資源的浪費。
(6)本設(shè)計中的DDS電路與專用DDS集成芯片相比,其靈活性更好,可生成任意波形,頻率分辨率高,轉(zhuǎn)換速度快,穩(wěn)定性好,精度高,且均可對頻率、相位、幅度實現(xiàn)程控,更重要的是,他如果作為IP核將具有更大的可移植性。