1 AD9850簡介
隨著數字技術的飛速發(fā)展,用數字控制方法從一個參考頻率源產生多種頻率的技術,即直接數字頻率合成(DDS)技術異軍突起。美國AD公司推出的高集成度頻率合成器AD9850便是采用DDS技術的典型產品之一。
AD9850 采用先地蝗CMOS工藝,其功耗在3.3V供電時僅為155mW,擴展工業(yè)級溫度范圍為-40~80℃,采用28腳SSOP表面封裝形式。AD9850的引腳排列如圖1所示,圖2為其組成框圖。圖2中層虛線內是一個完整的可編程DDS系統(tǒng),外層虛線內包含了AD9850的主要組成部分。
AD9850 內含可編程DDS系統(tǒng)和高速比較器,能實現全數字編程控制的頻率合成。可編程DDS系統(tǒng)的核心是相位累加器,它由一個加法器和一個N位相位寄存器組成,N 一般為24~32。每來一個外部參考時鐘,相位寄存器便以步長M遞加。相位寄存器的輸出與相位控制字相加后可輸入到正弦查詢表地址上。正弦查詢表包含一個正弦波周期的數字幅度信息,每一個地址對應正弦波中0°~360°范圍的一個相位點。查詢表把輸入地址的相位信息映射成正弦波幅度信號,然后驅動DAC以輸出模式量。
相位寄存器每過2N/M個外部參考時鐘后返回到初始狀態(tài)一次,相位地正弦查詢表每消費品一個循環(huán)也回到初始位置,從而使整個DDS系統(tǒng)輸出一個正弦波。輸出的正弦波周期To=Tc2N/M,頻率fout=Mfc/2N,Tc、fc分別為外部參考時鐘的周期和頻率。
AD9850 采用32位的相位累加器將信號截斷成14位輸入到正弦查詢表,查詢表的輸出再被截斷成10位后輸入到DAC,DAC再輸出兩個互補的電流。DAC滿量程輸出電流通過一個外接電阻RSET調節(jié),調節(jié)關系為ISET=32(1.148V/RSET),RSET的典型值是3.9kΩ。將DAC的輸出經低通濾波后接到AD9850內部的高速比較器上即可直接輸出一個抖動很小的方波。其系統(tǒng)功能如圖3所示。
AD9850 在接上精密時鐘源和寫入頻率相位控制字之間后就可產生一個頻率和相位都可編程控制的模擬正弦波輸出,此正弦波可直接用作頻率信號源或經內部的高速比較器轉換為方波輸出。在125MHz的時鐘下,32位的頻率控制字可使AD9850的輸出頻率分辨率達0.0291Hz;并具有5位相位控制位,而且允許相位按增量180°、90°、45°、22.5°、11.25°或這些值的組合進行調整。
2 AD9850的控制字與控制時序
AD9850 有40位控制字,32位用于頻率控制,5位用于相位控制。1位用于電源休眠(Power down)控制,2位用于選擇工作方式。這40位控制字可通過并行方式或串行方式輸入到AD9850,圖4是控制字并行輸入的控制時序圖,在并行裝入方式中,通過8位總線A0…D7將可數據輸入到寄存器,在重復5次之后再在FQ-UD上升沿把40位數據從輸入寄存器裝入到頻率/相位數據寄存器(更新DDS 輸出頻率和相位),同時把地址指針復位到第一個輸入寄存器。接著在W-CLK的上升沿裝入8位數據,并把指針指向下一個輸入寄存器,連續(xù)5個W-CLK上升沿后,W-CLK的邊沿就不再起作用,直到復位信號或FQ-UD上升沿把地址指針復位到第一個寄存器。在串行輸入方式,W-CLK上升沿把25引腳的一位數據串行移入,當移動40位后,用一個FQ-UD脈沖即可更新輸出頻率和相位。圖5是相應的控制字串行輸入的控制時序圖。
AD9850的復位(RESET)信號為高電平有效,且脈沖寬度不小于5個參考時鐘周期。AD9850的參考時鐘頻率一般遠高于單片機的時鐘頻率,因此AD9850的復位(RESET)端可與單片機的復位端直接相連。
值得一提的是:用于選擇工作方式的兩個控制位,無論并行還是串行最好都寫成00,并行時的10、01和串行時的10、01、11都是工廠測試用的保留控制字,不慎使用可能導致難以預料的后果。
3 單片機與AD9850的接口
AD9850 有兩種與微機并行打印口相連的評估版,并配有Windows下運行的軟件,可以作為應用參考,但運用單片機實現對DDS的控制與微機實現的控制相比,具有編程控制簡便、接口簡單、成本低,容易實現系統(tǒng)小型化等優(yōu)點,因此普遍采用MCS51單片機作為控制核心來向AD9850發(fā)送控制字。
單片機與AD9850的接口既要客商用并行方式,也可采用串行方式,但為了充分發(fā)揮芯片的高速性能,應在單片機資源允許的情況下盡可能選擇并行方式,本文重點介紹其并行方式的接口。
3.1 I/O方式并行接口
I/O方式的并行接口電路比較簡單,但占用單片機資源相對較多,圖8是I/O方式并行接口的電路圖,AD9850的數據線D0~D7與P1口相連,FQ-UD和W-CLK分別與P3.0(10引腳)和P3.1(11引腳)相連,所有的時序關系均可通過軟件控制實現。
將DDS控制字從高至低存放于30H至34H中,發(fā)送控制字的程序清單如下:
MOV R0,#05H
MOV R1,#30H
DD:MOV P1,@R1
SETB P3.1
CLR P3.1
INC R1
DJNZ R0,DD
SETB P3.0
CLR P3.0
END
在程序中,每將一字節(jié)的數據送到P1口后,必須將P3.1(W-CLK)置高。在其上升沿,AD9850接收到P1口相連的數據線上的數據,然后將 P3.1 置低,并準備下一字節(jié)的發(fā)送,連續(xù)發(fā)送5個字節(jié)后,須將P3.0(FQ-UD)再次置高,以使AD9850根據則輸入的控制字更改頻率和相位輸出,隨后再置P3.0為低,準備下一組發(fā)送。單片機的P3.0、P3.1引腳為串行口,當被占用時,W-CLK和FQ-UD引腳也可與其它I/O腳相連,這時需要修改相應的發(fā)送程序。
3.2 總線方式并行接口
總線方式并行接口占用的單片機資源較少,在這種方式下,AD9850僅作為一擴展芯片而占用RAM的一段地址,必須時也可以只占用一個地址。圖7是總線方式并行接口的電路原理圖。同樣將DDS控制字從高至低存放于30H至34H中,發(fā)送控制字的程序清單如下:
MOV R0,#05H
MOV R1,#30H
MOV DPTR,#0700H
DD:MOV A,@R1
MOVX @DPTR,A
INC R1
DJNZ R0,DD
MOVX A,@DPTR
END
AD9850 的W-CLK和FQ-UD信號都是上升沿有效,用MOVX @DPTR,A指令向AD9850傳送控制字時,由74F138將高八位地址的低三位譯碼,其輸出經反相并與反相后的信號相與得到一上升沿送至 AD9850的W-CLK腳,此時已送到總線上的數據將被AD9850接收,連續(xù)五次將40位的控制字全部發(fā)送以后,用MOVA A,@DPTR指令產生FQ-UD信號,使AD9850更改輸出頻率和相位,此時讀入到單片機內的數據實際上無任何意義。圖7中AD9850的地址為 0700H。
上述兩種接口方式經實際應用證明:工作可靠,效果良好。單片機與AD9850的串行接口可參照有關資料進行設計。上述接口電路和程序也適用于與 AD9850 腳對腳兼容的AD9851,值得注意的是:AD9851的控制字與AD9850控制遼中別位的定義稍有區(qū)別,編程時應予以注意。