引言
在數字信息傳輸中,基帶數字信號通常要經過調制器調制,將頻率搬移到適合信息傳輸的頻段上。2FSK就是用數字信號去調制載波的頻率(移頻鍵控),由于它具有方法簡單、易于實現、抗噪聲和抗衰落性能較強等優點,因此在現代數字通信系統的低、中速數據傳輸中得到了廣泛應用。
直接數字頻率合成技術(DDS)將先進的數字處理技術與方法引入信號合成領域。DDS器件采用高速數字電路和高速D/A轉換技術,具備頻率轉換時間短、頻率分辨率高、頻率穩定度高、輸出信號頻率和相位可快速程控切換等優點,可以實現對信號的全數字式調制。
DDS芯片——AD9833的介紹
AD9833是一塊完全集成的DDS芯片,僅需要1個外部參考時鐘、1個低精度電阻器和一些解耦電容器就能產生高達12.5MHz的正弦波。除了產生射頻信號外,該電路還廣泛應用于各種調制解調方案,這些方案全都用在了數字領域。
AD9833的內部電路包括數字器件和模擬器件兩部分。主要由相位累加器(由加法器和相位寄存器組成)、ROM波形查詢表、數模轉換器DAC和低通濾波器LPF構成。AD9833的基本結構原理如圖1所示。其中M為頻率控制字、FMCLK為時鐘頻率,相位累加器在時鐘FMCLK的控制下以步長M作累加,相位寄存器的輸出與相位控制字相加后輸入到正弦查詢表地址中。正弦查詢表包含1個周期正弦波的數字幅度信息,每個地址對應正弦波中0°~360°范圍內的1個相位點。查詢表把輸入的地址相位信息映射成正弦波幅度的數字量信號S(n),經D/A轉化器變成階梯波S(t),再經低通濾波器平滑后就可得到合成的信號波形。其形狀取決于波形ROM中存放的幅碼,因此用DDS可以產生任意波形。輸出正弦波頻率為:fOUT=M(fMCK/228),其中,M為頻率控制字,由外部編程給定,其范圍為0≤M≤228-1 。
硬件電路連接
本設計用Silicon Labs公司推出的完全集成的混合信號片上系統C8051F060來控制AD9833,C8051F060有大量的數字資源需要通過4個低端I/O端口P0、P1、P2和P3才能使用。P0、P1、P2和P3的每個引腳既可定義為通用的端口I/O引腳,又可以分配給一個數字外設或功能(例如:UART0或INT1)。不管引腳被分配給一個數字外設或是作為通用I/O,總是可以通過讀相應的數據寄存器得到端口I/O引腳的狀態。
AD9833與單片機C8051F060連接時,使用單片機的3個I/O口和AD9833連接。FSYNC(控制輸入,低電平有效)與單片機的可編程管腳P0.7連接,SCLK(串行時鐘輸入)與可編程管腳P0.4連接,SDATA(串行數據輸入)與可編程管腳P0.5連接。三個可編程管腳都可用軟件編程實現數據的傳送。硬件電路連接如圖2所示,單片機產生控制信號和波形參數,通過串行接口將數據傳送到AD9833,經AD9833輸出的正弦波信號再經低通濾波后輸出。
軟件控制
寫數據到控制寄存器
單片機傳送數據到AD9833的時序如圖3所示:FSYNC引腳是使能引腳,電平觸發方式,低電平有效。進行串行數據傳輸時,FSYNC 引腳必須置低,這種情況下,16個SCLK的下降沿數據被送到AD9833的輸入移位寄存器。在第16個SCLK的下降沿FSYNC可以被置高,當然,也可以連續加載多個16位數據,僅在最后一個數據的第16個SCLK的下降沿時將FSYNC置高。需要注意的是,在FSYNC開始變為低前(即將開始寫數據時)),SCLK必須為高電平。
單片機寫16位數據到AD9833時,高位在前,低位在后。用軟件模擬時鐘信號和片選信號。傳送數據的程序如下:
SCLK =1; //時鐘信號
FSYNC=1;
Delay(100) ; 延時子程序
FSYNC=0; //片選有效
for(i=0;i<16;i++)
{ SDATA="datas"&0x8000;
SCLK=0; //時鐘信號下降沿數據送入I/O口。
Delay(50) ;
SCLK=1;
datas=datas<<1; //16位數據從高位到低位送入
}
Delay(50) ;
FSYNC=1;
SCLK=0;
數據寫入方式
設置控制寄存器中的D15D14=00,表示數據寫入控制寄存器;設置B28(D13)=1,表示28位數據可以連續寫入頻率寄存器,默認先寫入低14位頻率字,再連續寫入高14位頻率字到頻率寄存器中;設置B28(D13)=0,表示28位數據分兩次寫入頻率寄存器,此時配合 HLB 的值使用(當HLB=1時允許高14位頻率字寫入到頻率寄存器,當HLB=0時允許低14位頻率字寫入到頻率寄存器)。因此寫入到控制寄存器的數據可為:0010 0000 0000 0000,表示設置連續28位頻率字。數據寫入流程圖如圖4所示。
選擇頻率寄存器
由于AD9833片內有2個頻率寄存器,即FREQ0、FREQ1,因此要確定是將頻率控制字寫入哪一個。這可通過設置 D15D14 的值來進行選擇,當D15D14=01表示14位的頻率字將寫入FREQ0;當D15D14=10表示14位的頻率字將寫入FREQ1。以輸出頻率為7230Hz為例,介紹寫入到頻率寄存器1的頻率字。
寫入低14位數據為:1011 0110 0001 1110,表示將低14位頻率字寫入FREQ1。
寫入高14位數據為:1000 0000 0000 1011,表示將高14位頻率字寫入FREQ1。
主程序設計
首先,對C8051F060單片機初始化,這包括單片機晶振初始化、端口初始化,定義控制AD9833的I/O接口及交叉開關,接著初始化AD9833。當AD9833初始化時,為避免DAC產生虛假輸出,RESET必須置為1(RESET不會復位頻率、相位和控制寄存器),直到配置完畢,需要輸出時才將RESET置為0;RESET為0后的8-9個MCLK時鐘周期可在DAC的輸出端觀察到波形。AD9833初始化流程圖如圖5所示。然后,寫頻率寄存器0的控制字(0x2000),在進行FSK調制時,AD9833的兩個頻率寄存器裝載不同的頻率值,本實驗中,頻率寄存器0裝載低頻率6830Hz,頻率寄存器1裝載高頻率7230Hz,通過設置AD9833的控制寄存器的FSELECT位來選擇頻率寄存器。主程序流程如圖6所示。
實驗結果
在示波器上能觀測到FSK調制信號,為方便截圖,設置頻率為7230Hz的正弦信號在示波器上進行觀察,圖7是頻率為7230Hz的正弦信號經過低通濾波之后的頻譜圖。由圖7可以看出,實際輸出頻率為7.22985Hz。圖8是對應的時域圖形。
結論
本實驗中設計的FSK調制信號,在工程中有較強的實用價值,已成功應用于井下聲波傳輸系統中。