畢業(yè)設(shè)計(論文)-基于DDS芯片AD9951的信號發(fā)生器_第1頁
畢業(yè)設(shè)計(論文)-基于DDS芯片AD9951的信號發(fā)生器_第2頁
畢業(yè)設(shè)計(論文)-基于DDS芯片AD9951的信號發(fā)生器_第3頁
畢業(yè)設(shè)計(論文)-基于DDS芯片AD9951的信號發(fā)生器_第4頁
畢業(yè)設(shè)計(論文)-基于DDS芯片AD9951的信號發(fā)生器_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、基于DDS芯片AD9951的精密信號發(fā)生器設(shè)計 摘 要直接數(shù)字頻率合成(Direct Digital Frequency Synthesis簡稱DDS)是近年來迅速發(fā)展起來的一種新的頻率合成方法。而AD9951是美國模擬器件公司(ADI)最新推出的高集成度DDS芯片。本設(shè)計采用該芯片,以AT89S52單片機為控制,采用AT24C02來存儲重要的系統(tǒng)數(shù)據(jù),由1602點陣式字符型液晶顯示模塊作為顯示器,并加上一個小鍵盤構(gòu)成了精密信號發(fā)生器。要求其輸出頻率范圍為0160MHz、最小步進為10Hz或者1Hz、輸出信號幅度大于0.3Vp-p、雜散小、有掉電數(shù)據(jù)保持功能。文中詳細介紹了DDS的工作原理以及

2、該信號發(fā)生器的軟、硬件設(shè)計方案,并給出了具體的程序設(shè)計。指標關(guān)鍵詞:直接數(shù)字頻率合成(DDS)、AD9951、AT89S52、信號發(fā)生器、頻率控制字直接數(shù)字頻率合成(Direct Digital Frequency Synthesis簡稱DDS)是近年來迅速發(fā)展起來的一種新的頻率合成方法,廣泛應(yīng)用于通訊、導(dǎo)航、雷達、遙控遙測、電子對抗以及現(xiàn)代化的儀器儀表工業(yè)等領(lǐng)域。而AD9951是美國模擬器件公司(ADI)最新推出的高品質(zhì)、高集成度DDS芯片。本設(shè)計采用該DDS芯片作為核心元件, 以AT89S52單片機為主控器件、并輔以AT24C02存儲重要的系統(tǒng)數(shù)據(jù)、1602點陣式字符型液晶顯示模塊作為顯示

3、器,構(gòu)成了一種精密的DDS信號發(fā)生器。文中詳細介紹了DDS的工作原理以及該精密信號發(fā)生器的軟、硬件設(shè)計方法,并給出了具體的程序設(shè)計方案。設(shè)計出的信號發(fā)生器,輸出頻率范圍為0160MHz、最小步進為10Hz或者1Hz、輸出信號幅度大于0.3Vp-p、雜散小。關(guān)鍵詞:直接數(shù)字頻率合成(DDS)、AD9951、AT89S52、信號發(fā)生器、頻率控制字該芯片能以早期DDS 1/10的功耗提供速度高達400 MHz 的內(nèi)部時鐘,而合成頻率高達160 MHz。掌握直接數(shù)字頻率合成(DDS)芯片AD9951/9952的工作原理和管腳功能,設(shè)計一個由AT89S52單片機、

4、AD9951/9952芯片、1602點陣式字符型液晶顯示模塊和小鍵盤構(gòu)成的精密信號發(fā)生器。要求電路簡潔、人機界面友好且有一定容錯性、輸出穩(wěn)定、抗干擾能力強、有掉電數(shù)據(jù)保持功能、輸出頻率范圍為0.5MHz160MHz連續(xù)輸出、最小步進為10Hz或者1Hz、輸出信號幅度大于0.3Vp-p、雜散小。An exact signal generator base on ofthe MicroController Unit and the DDS chip-AD9951AbstractAD9951 is the newest product of ADI Corporation. The device i

5、s a 400 MSPS direct digital synthesizer (DDS) product that can generating a resultant frequency of up to 160 MHZ ,while dissipating <200 mw.The exact signal generator introduces the AD9951,together with the MicroController Unit of AT89S52 as controller.In addition,this design adopts the 1602 of L

6、CD as display screen and a keyboard. In this text,I have explained and recommended the design scheme of software and hardware of the product in detail,providing the specific program.Keyword: DDS AD9951 Control-register Frequency tuning word Transmissible format of data 1、前言信號源作為一種基本電子設(shè)備,無論是在教學(xué)、還是在科學(xué)

7、技術(shù)研究中,都有著廣泛的使用。隨著科學(xué)技術(shù)的發(fā)展和測量技術(shù)的進步,對信號源的要求越來越高,普通的信號發(fā)生器已無法滿足目前日益發(fā)展的數(shù)字技術(shù)領(lǐng)域科研和教學(xué)的需要。這就要求設(shè)計信號發(fā)生器要解決怎樣獲得穩(wěn)定,準確,連續(xù)可調(diào)的頻率輸出的問題,解決這一問題的一個較好的方法就是使用頻率合成技術(shù)。頻率合成一般有三種方法:直接模擬合成法、鎖相環(huán)合成法和直接數(shù)字合成法。直接模擬合成法設(shè)備復(fù)雜、體積大、功耗大,且步進不易控制,目前已基本不被采用;鎖相環(huán)合成法存在高分辨率和快轉(zhuǎn)換速度之間的矛盾,一般只能用于大步進頻率合成技術(shù)中;直接數(shù)字頻率合成(Direct Digital Frequency Synthesis簡

8、稱DDS)是近年來迅速發(fā)展起來的一種新的頻率合成方法。該技術(shù)是一種新興的頻率合成技術(shù),他具有頻率分辨率極高、頻率切換速度快、切換相位連續(xù)、輸出信號相位噪聲低、可編程、全數(shù)字化易于集成、體積小、重量輕等優(yōu)點。隨著微電子技術(shù)的迅速發(fā)展,直接數(shù)字頻率合成器得到了飛速的發(fā)展,它以有別于其它頻率合成方法的優(yōu)越性能和特點成為現(xiàn)代頻率合成技術(shù)中的姣姣者?,F(xiàn)已廣泛應(yīng)用于通訊、導(dǎo)航、雷達、遙控遙測、電子對抗以及現(xiàn)代化的儀器儀表工業(yè)等領(lǐng)域。目前生產(chǎn)單片DDS集成芯片的廠家很多,但市場上主要是以美國Analog Devices公司和Motorola公司的產(chǎn)品為主。特別是Analog Devices公司生產(chǎn)的AD98

9、XX系列和AD99XX系列產(chǎn)品。在本設(shè)計中為了獲得低成本,高性能的信號發(fā)生器,采用了直接數(shù)字頻率合成技術(shù),用一片Analog Devices公司的單DDS集成芯片和微控制器組合進行設(shè)計,達到了預(yù)期的設(shè)計效果。2、DDS的結(jié)構(gòu)及原理2.1、DDS的結(jié)構(gòu)及工作原理直接數(shù)字頻率合成是采用數(shù)字化技術(shù),通過控制相位的變化速度,直接產(chǎn)生各種不同頻率信號的一種頻率合成的方法。DDS的結(jié)構(gòu)原理圖如圖所示,它由相位累加器、正弦表、轉(zhuǎn)換器等組成。參考時鐘r由一個穩(wěn)定的晶體振蕩器產(chǎn)生,用它來同步整個合成器的各個組成部分。相位累加器由位加法器與位相位寄存器級聯(lián)構(gòu)成,類似于一個簡單的加法器。每來一個時鐘脈沖,加法器就將

10、頻率控制字與相位寄存器輸出的累加相位數(shù)據(jù)相加,然后把相加后的結(jié)果送至相位累加器的數(shù)據(jù)輸入端。相位寄存器就將加法器在上一個時鐘作用后產(chǎn)生的新相位數(shù)據(jù)反饋到加法器的輸入端,以使加法器在下一個時鐘的作用下繼續(xù)將相位數(shù)據(jù)與頻率控制字相加。這樣,相位累加器在參考時鐘的作用下進行線性相位累加。當(dāng)相位累加器累加滿量時,就會產(chǎn)生一次溢出,完成一個周期性的動作,這個周期就是合成信號的一個周期,累加器的溢出頻率也就是DDS的合成信號的頻率。 DDS的工作原理:DDS的基本原理是利用采樣定量,通過查表法產(chǎn)生波形,在參考時鐘r的控制下,頻率控制字由累加器累加以得到相應(yīng)的相位數(shù)據(jù),把此數(shù)據(jù)作為取樣地址,來尋址正弦表進行

11、相位幅度變換,輸出不同的幅度編碼;再經(jīng)過轉(zhuǎn)換器得到相應(yīng)的階梯波;最后經(jīng)低通濾波器對階梯波進行平滑處理,即可得到由頻率控制字決定的連續(xù)變化的輸出正弦波。 DDS的輸出頻率0、參考時鐘頻率r、相位累加器長度以及頻率控制字之間的關(guān)系為:DDS的頻率分辨率為:在理想情況下,DDS等效電路如下圖所示,圖中假設(shè)DDS相位累加器至波形存儲器間無截斷(累加器輸出與波形存儲器地址寬度相等)、波形存儲器容量無限、DAC和LPF都是完全理想的。這樣DDS就等效為一個完全理想的采樣保持電路。 其時域輸出為:對其做傅氏變換得到頻域響應(yīng):由上式看出,理想DDS輸出頻譜中只有采樣時鐘及輸入頻率的混合產(chǎn)物,其主要雜波分量遵循

12、Nyquist抽樣定理,雜波分量出現(xiàn)在參考頻率與輸出頻率的組合處,即:Nfc±fo(N=0,±1,±2,)處。在fo處的信號最強,距輸出頻率最近的雜波分量為fefo(見圖3所示),而無新增頻率分量,在DAC之后只要接入一高性能低通濾波器,就可得到期望的輸出頻率。 fo 2.2、新一代DDS芯片的性能新一代的直接數(shù)字頻率合成器采用全數(shù)字的方式實現(xiàn)頻率合成,與傳統(tǒng)的頻率合成技術(shù)相比,具有以下特點:(1)頻率轉(zhuǎn)換快。直接數(shù)字頻率合成是一個開環(huán)系統(tǒng),無任何反饋環(huán)節(jié),其頻率轉(zhuǎn)換時間主要由頻率控制字狀態(tài)改變所需的時間及各電路的延時時間所決定,轉(zhuǎn)換時間很短。(2)頻率分辨率高、

13、頻點數(shù)多。DDS輸出頻率的分辨率和頻點數(shù)隨相位累加器的位數(shù)的增長而呈指數(shù)增長,分辨率高達。(3)相位連續(xù)。DDS在改變頻率時只需改變頻率控制字(即累加器累加步長),而不需改變原有的累加值,故改變頻率時相位是連續(xù)的。(4)相位噪聲小。DDS的相位噪聲主要取決于參考源的相位噪聲。(5)控制容易、穩(wěn)定可靠、性價比極高。目前生產(chǎn)新一代單片DDS集成芯片技術(shù)比較成熟的主要是美國模擬器件公司(Analog Devices)和摩托羅拉公司(Motorola)兩大公司的產(chǎn)品。在國內(nèi)使用得比較多的是美國模擬器件公司的產(chǎn)品,因為該公司的產(chǎn)品品種齊全,更新快,且向下兼容,設(shè)計人員可以按不同的要求選用不同的型號。本設(shè)

14、計選用的是美國模擬器件公司的單片DDS集成器件AD9851。表1-1列出新一代DDS系列AD99X性能參數(shù): 表1-1美國模擬器件公司(ADI)最新發(fā)布的直接數(shù)字合成器AD995x系列產(chǎn)品,采用已申請專利的算法和0.18微米工藝,比以往版本的產(chǎn)品功耗降低90%。這些新系列芯片能以早期DDS 1/10的功耗提供速度高達400 MHz 的內(nèi)部時鐘。AD995x系列為:AD9951、AD9952、AD9953、AD9954。這個系列的產(chǎn)品均是以1.8V 單電源供電。這些新型的DDS組件為業(yè)界首款產(chǎn)生400MSPS時鐘產(chǎn)品,在功率消耗低于200 mW下,合成頻率還高達160MHz。該DDS系列包括一個

15、集成的14位數(shù)模轉(zhuǎn)換器(DAC)、片內(nèi)125位隨機存儲器(RAM)、相位與幅度控制以及多芯片同步控制的功能。AD9951板帶14位D/A;AD9952包含一個高速比較器;AD9953具有用于非線性相位/頻率掃描的RAM;AD9954則含一個高速比較器、RAM和自動線性頻率掃描功能。AD995X系列的典型應(yīng)用包括衛(wèi)星通信、寬帶網(wǎng)、雷達、測試和測量和儀器儀表。3. AD9951芯片介紹3.1 引腳與寄存器介紹采用48腳TQFP/EP封裝,其引腳定義和設(shè)置見硬件設(shè)計部分,它有6個寄存器,分別是控制寄存器CFR1、控制寄存器CFR2、幅度大小控制寄存器ASF、幅度斜率控制寄存器ARR、頻率控制寄存器F

16、TW、相位控制寄存器POW,其內(nèi)部寄存器每一位設(shè)置見附錄,AD9951芯片如圖3-1。 圖3-13.2.AD9951芯片的性能特性:AD9951是采用先進的DDS技術(shù)開發(fā)的高集成度DDS器件。它內(nèi)置高速、高性能D/A轉(zhuǎn)換器,可用為數(shù)字編程控制的頻率合成器,能產(chǎn)生160MHz的模擬正弦波。通過AD9951的串行I/O口輸入控制字可實現(xiàn)快速變頻且具有良好的頻率分辨率。其主要特性如下:內(nèi)置400MSPS時鐘;內(nèi)含14位DAC;相位、幅度可編程;有32位頻率控制字、相位偏移字可用串行I/O控制;采用1.8V電源供電;可420倍倍頻;支持大多數(shù)數(shù)字輸入中的5V輸入電平;可實現(xiàn)多片同步。 AD9951芯片

17、的內(nèi)部框圖如圖3-2所示。圖3-2 AD9951內(nèi)部結(jié)構(gòu)圖4.系統(tǒng)硬件設(shè)計:硬件總體框圖如圖4-1所示:圖4-1整個系統(tǒng)上電后,單片機啟動DDS、對LCD進行初始化,預(yù)置完畢后向單片機發(fā)出一應(yīng)答.接著單片機讀取存儲芯片中作為系統(tǒng)緩存器的數(shù)據(jù),送到LCD顯示,并把LCD顯示的內(nèi)容轉(zhuǎn)換為DDS的頻率數(shù)據(jù),送到已經(jīng)啟動DDS芯片中,輸出相應(yīng)的頻率。然后進入鍵盤掃描程序,判斷鍵盤按下,若有效鍵按下則單片機執(zhí)行相應(yīng)的功能模塊后,再返回鍵盤掃描程序處于等候狀態(tài)。 4.1 單片機控制電路4.1.1 AT89S52單片機介紹本系統(tǒng)的微處理控制器選用的是AT89S52,它是美國Atmel公司生產(chǎn)新一代的51系列

18、芯片。Atmel公司對89S51/2在工藝上進行了改進,采用0.35新工藝,成本降低,而且將功能提升,增加了競爭力。89CXX與89SXX可以兼容。更重要的是AT89SXX支持在線編程,非常方便。AT89S52具有如下特點:40個引腳,8k Bytes Flash片內(nèi)程序存儲器,256 bytes的隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時鐘振蕩器。此外,AT89S52設(shè)計和配置了振蕩頻率可為0Hz并可通過軟件設(shè)置省電模式??臻e模式下,CPU暫停工作,而RAM

19、定時計數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。主要功能特性: l 兼容MCS-51指令系統(tǒng)l 2個雙向I/O口 l 3個16位可編程定時/計數(shù)器l 全雙工UART串行中斷口線l 2個外部中斷源l 中斷喚醒省電模式l 看門狗(WDT)電路l 靈活的ISP字節(jié)和分頁編程l 4.5-5.5V工作電壓l 時鐘頻率0-33MHzl 256x8bit內(nèi)部RAMl 低功耗空閑和省電模式l 3級加密位l 軟件設(shè)置空閑和省電功能l 雙數(shù)據(jù)寄存器指針l 8k

20、可反復(fù)擦寫(>1000次)ISP4.1.2 鍵盤說明系統(tǒng)中的鍵盤接P1口,鍵盤的定義如表 4-1。P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7校準保存選擇左移右移減一加一確定表 4-14.1.3、單片機與串行EEPROM芯片AT24C02的接口電路本系統(tǒng)中,關(guān)機斷電時的數(shù)據(jù)在下次開機時要重新調(diào)用,以及用戶認為有用的頻率,為方便重新調(diào)用而保存下來的頻率信號(本系統(tǒng)中支持20通道的頻率信號的重復(fù)保存和調(diào)用);另外,系統(tǒng)的輸出頻率信號的精度和穩(wěn)定度,很大程度上取決于DDS所采用的時鐘源(本例中用外接晶振),而實際使用的晶振源是有一定誤差的,應(yīng)允許用戶根據(jù)實際情況進行校正并保

21、存以供系統(tǒng)調(diào)用合成所需的信號。因此,系統(tǒng)有關(guān)參數(shù)的斷電保存非常重要。所以,我們在本系統(tǒng)中,選擇了I2C總線標準的AT24C02存儲芯片。該芯片是美國ATMEL公司生產(chǎn)的低功耗CMOS串行EEPROM,內(nèi)含256×8位存儲空間,具有工作電壓寬(2.55.5V)、擦寫次數(shù)多(大于10000次)、寫入速度快(小于10ms)等特點。I2C總線是一種用于IC器件之間連接的二線制總線。它通過SDA(串行數(shù)據(jù)線)及SCL(串行時鐘線)兩根線在連到總線上的器件之間傳送信息,并根據(jù)地址識別每個器件,單片機就是通過這兩根線對24C02控制的。其引腳排列如圖4-2所示。圖4-2 AT24C02引腳排列如圖

22、AT24C02 的各引腳功能如下VCC : 電源GND : 地A1、A2 : 頁地址A3 : 器件地址SDL : 串行數(shù)據(jù)輸入端SCL :串行時鐘輸入端WP :寫保護I2C的按頁寫編程操作如圖4-3所示 圖4-3 PAGE WRITEI2C的從當(dāng)前地址讀編程操作如圖4-4所示圖4-4 Current Address ReadI2C的任意地址讀編程操作如圖4-5所示圖4-5 Random ReadI2C的連續(xù)讀編程操作如圖4-6所示(連續(xù)讀操作可以是以當(dāng)前地址讀或任意地址讀開始的之后操作)圖4-6 Sequential ReadAT24C02的1、2、3腳是三條地址線,用于確定芯片的硬件地址。在

23、本應(yīng)用電路中它們都接地,第8腳和第4腳分別為正、負電源。第5腳SDA為串行數(shù)據(jù)輸入/輸出,數(shù)據(jù)通過這條雙向I2C總線串行傳送,SDA和單片機的P0.0連接。第6腳SCL為串行時鐘輸入線,它和單片機的P0.1連接。SDA和SCL都需要和正電源間各接一個5.1K的電阻上拉。第7腳需要接地。4.1.4 字符型液晶顯示模塊 系統(tǒng)中選用的 1602帶有背光的液晶模塊,是5x7點陣圖形顯示字符的液晶顯示器,它顯示的容量為2行16個字,具有簡單而功能較強的指令集,可實現(xiàn)字符移動/閃爍等功能。與MCU的傳輸可采用8位并行傳輸或4位并行傳輸兩種方式。液晶顯示器由于體積小、重量輕、功耗低等優(yōu)點,日漸成為各種便攜式

24、電子產(chǎn)品的理想顯示器。從液晶顯示器顯示內(nèi)容來分,可分為段式、字符式和點陣式三種。其中字符式液晶顯示器以其價廉、顯示內(nèi)容豐富、美觀、無須定制、使用方便等特點成為LED顯示器的理想替代品。字符型液晶顯示器專門用于顯示數(shù)字、字母、圖形符號并可顯示少量自定義符號。這類顯示器把LCD控制器、點陣驅(qū)動器、字符存貯器等做在一塊板上,再與液晶屏一起組成一個顯示模塊,因此,這類顯示器安裝與使用都較簡單。其微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧的諸多優(yōu)點,使它得到越來越廣泛的應(yīng)用。數(shù)據(jù)線被連到P1口,P3.7接RS端,P3.6接RW端,P3.5接E端表4-2是1602字符型液晶模塊引腳配置及功能說明。表4-2單片

25、機整機控制電路如圖4-7圖4-74.2 AD9951應(yīng)用電路4.2.1 AD9951外圍引腳電路配置說明 電路圖如圖4-8所示:圖4-8注:凡是AD9951芯片注明是DGND的引腳接數(shù)字地、注明是AGND的引腳接模擬地、注明是DVDD的引腳接數(shù)字電壓,但對于接數(shù)字電壓的引腳而言有的接3.3V的數(shù)字電壓有的接1.8V的數(shù)字電壓,取決于不同的引腳說明,第43引腳(DVDD-I/O)能夠由1.8V和3.3V的數(shù)字電壓供電,本電路圖中的此引腳用3.3V數(shù)字電壓,而第2、34引腳(DVDD)則只能用1.8V的數(shù)字電壓.第1引腳(I/O UPDATE),在該引腳的上升沿可把內(nèi)部緩沖存儲器中的內(nèi)容送到I/O

26、寄存器中。引腳電平的建立和保持與SYNC-CLK輸出信號有關(guān),所以該引腳也作為一根控制引線接到單片機P2.5,由單片機控制。第11引腳(CLKMODESELECT)振蕩器模式選擇控制,當(dāng)此引腳為高電平時,選擇內(nèi)部振蕩源,并在REFCLK和REFCLKB(就是引腳8和9)接一個晶振,由引腳10(CYRSTAL OUT)輸出,當(dāng)此引腳為低電平時,選擇外部振蕩源,在不使用的引腳(8)串接0.1UF的電容和1.8V模擬電壓,在第9(OSC)腳接外部振蕩源,引腳10(CYRSTAL OUT)不用懸空,本電路采用外部振蕩源。第12引腳(LOOP_FILTER)應(yīng)與AVDD間串聯(lián)一個1k電阻和一個0.1F電

27、容接到1.8V的模擬電壓。第20引腳(/IOUT)信號輸出端,使用時應(yīng)接一個電阻到AVDD,第21引腳(IOUT)信號輸出端,應(yīng)接一個電阻到AVDD,并通過低通濾波后輸出。第23引腳(DACBP)為DAC去耦端,使用時應(yīng)接一個0.01F的旁路電容。第24引腳(DAC_RSET),DAC復(fù)位端,使用時應(yīng)通過一個3k的電阻接至AGND端。第35引腳(PWRDWNCTL)為外部電源掉電控制輸入引腳,此處應(yīng)用電路將該引腳接地。第36腳(RESET)芯片復(fù)位端 ,高電平復(fù)位。圖中三極管有電平轉(zhuǎn)化的作用。第37腳(IOSYNC)為異步串行端口控制復(fù)位引腳;為1時,當(dāng)前I/O操作立即停止;為0時開始新的I/

28、O操作;不用時,此引腳必須接地;應(yīng)用電路圖中將此腳接地。第38腳(SDO),采用3線串口操作時,SDO為串行數(shù)據(jù)輸出端。采用2線串口操作時,SDO不用,可以不連,本應(yīng)用電路圖中此腳懸空不用,采用2線串口操作。第39腳(CS)為片選端,低電平有效,允許多芯片共用I/O總線,本應(yīng)用電路將此腳接地。第40引腳(SCLK)I/O操作的串行數(shù)據(jù)時鐘輸入端,電路中AD9951通過一個電阻串接到單片機的P2.3口線,通過對這個控制口線的編程操作,模擬控制時序,通過SDIO送入指令和數(shù)據(jù)到AD9951的內(nèi)部緩沖存儲器。第41腳(SDIO)采用3線串口操作時,SDIO為串行數(shù)據(jù)輸入端,采用2線操作時,SDIO為

29、雙向串行數(shù)據(jù)端。電路中AD9951通過一個電阻串接到單片機P2.4,作為串行數(shù)據(jù)輸入端。第45腳 (SYNC_CLK)時鐘輸出腳,為內(nèi)部時鐘的1/4,可用作外圍硬件同步,本電路不用故懸空。第44腳(SYNC_IN)為同步多片AD9951輸入信號,使用時與主AD9951的SYNC_CLK的輸出相連,應(yīng)用電路只需要單個AD9951,因此此腳懸空。第46引腳(OSK)接地,OSK不能被編程。本電路圖將此腳接地。4.2.2.晶振電路AD9951 時鐘輸入,可以選擇內(nèi)部振蕩源,也可以選擇外部振蕩源,在本設(shè)計中,選擇外部振蕩源,需要在AD9951的OSC引腳接一個外部晶振,此晶振電路圖如圖4-9:圖4-9

30、4.2.3.濾波緩沖放大電路由于AD9951采用全數(shù)字結(jié)構(gòu),不可避免地引入了雜散。其來源主要有三個:相位舍位誤差造成的雜散;幅度量化誤差(由存儲器有限字長引起)造成的雜散和DAC非理想特性造成的雜散。必須對AD9951輸出的頻率進行濾波處理,同時AD9951輸出頻率上限值為160MHZ,對高于此值的頻率也必須進行濾波處理;而且為了使濾波后衰減的信號放大,需要用放大電路。其電路圖如圖4-10所示。由于考慮到濾波緩沖放大電路與已有的 DDS的PCB板之間的電路的接口可能會帶來較大的干擾,所以該部分電路就沒有加入了該系統(tǒng)中了,等到以后有時間的時候再將所有模塊都做到一個板上的時候,就可以毫無顧忌的加上

31、該部分電路了!圖4-104.3 電源電路其中包括9V電源、+5V和3.3V電源、1.8V數(shù)字電源和1.8V模擬電源模塊,在此應(yīng)用電路中利用9V電源級接產(chǎn)生+5V的電壓輸出,而3.3V的電壓是由R2/(R1+R2)×5V所得。得到的+5V電壓一方面可以供給第三級產(chǎn)生1.8V的數(shù)字電壓和模擬電壓;另一方面,可以提供給單片機系統(tǒng),包括為LCD、AT24C02及上拉電阻提供電壓。3.3V、1.8V則是AD9951芯片對電平的要求而設(shè)計。電平的要求是:第43引腳(DVDD-I/O)由1.8V或3.3V的數(shù)字電壓供電,第2、34引腳(DVDD)則只能用1.8V的數(shù)字電壓. 電源電路圖如圖4-11

32、。 圖4-11 5.系統(tǒng)軟件設(shè)計該系統(tǒng)軟件采用混合語言在KEILC軟件下編寫。計算頻率控制字的函數(shù)由匯編語言編寫,其他的用C語言編寫。程序模塊主要包括:負責(zé)各種初始化工作和循環(huán)判鍵工作的主程序。負責(zé)用戶輸入所需各種頻率的鍵盤中斷管理程序。負責(zé)掉電數(shù)據(jù)保存的I2C通信程序。以及LCD顯示程序,計算頻率控制字程序等。每個模塊由單獨的一個文件來完成。整個系統(tǒng)的程序結(jié)構(gòu)框圖如圖5-1所示。主程序鍵盤中斷管理程序計算控制字程序LCD顯示程序IIC通信程序圖5-1 系統(tǒng)的程序結(jié)構(gòu)框圖5.1、主程序主程序主要完成系統(tǒng)的上電初始化工作,包括單片機資源的初始化、LCD顯示屏的初始化、AD9851 的初始化和循環(huán)

33、判鍵工作。用戶可以通過兩種方法輸入所需頻率:用數(shù)字鍵輸入或者用加一、減一、移位功能鍵輸入。當(dāng)用數(shù)字鍵輸入時要配合OK鍵使用。狀態(tài)鍵是用來進行狀態(tài)切換,即正常模式和晶振校正模式之間的切換。當(dāng)切換到晶振校正模式后數(shù)字鍵就無效,只能用功能鍵進行晶振的校正操作。其流程圖見圖 5-2 所示,完整程序見附件1 main.c文件。初始化單片機初始化LCD初始化AD9951循環(huán)判鍵校準鍵保存鍵選擇鍵左移鍵右移鍵減一鍵加一鍵確定鍵圖5-2 主程序流程圖其程序的結(jié)構(gòu)組織如下:void main(void) dog_eat(); /開看門狗 beep=0; /關(guān)蜂鳴器 read_lcd1(0x20); /從AT24

34、C02取上次掉電時的數(shù)據(jù)送LCD osc=ChangeBin_OSC(0x10); /本振計算 dog_eat(); /喂狗 trans_FTW(); /算頻率控制字 lcd_init(); /LCD顯示初始化 lcd_xie(lcd1); /LCD顯示 trans_ad9951(); /初始化AD9951 dog_eat(); /喂狗 posi_mark=0xcb; lcd_mark(posi_mark); 光標定位 while(1) key_port=0xff; key=key_port; /判斷按鍵/-/校準 保存 選擇 左移 右移 - + 確定/- switch(key) case 0

35、xfe: xiaozhun();delay5ms(10);break; /校準鍵程序 case 0xfd: save();delay5ms(10);break; /保存鍵程序 case 0xfb: choose();delay5ms(10);break; /選擇鍵程序 case 0xf7: move_left();break; /左移鍵程序 case 0xef: move_right();break; /右移鍵程序 case 0xdf: data_sub();break; /減一鍵程序 case 0xbf: data_add();break; /加一鍵程序 case 0x7f: make_su

36、re();delay5ms(10);break; /確定鍵程序 default:dog_eat();break; 5.2 6個寄存器設(shè)置由于設(shè)計只對輸出頻率進行控制,使AD9951輸出相應(yīng)的頻率。對相位、幅度不作相應(yīng)的控制要求,所以對相位幅度的設(shè)置采用默認狀態(tài),以下是在本設(shè)計中對AD9951內(nèi)部寄存器的相關(guān)設(shè)置??刂萍拇嫫?的設(shè)置:對于本應(yīng)用電路來說,先傳高位則設(shè)CFR1<8>0;不存在多片AD9951級連的情況,故涉及到多片同步問題的控制位都可以用默認值0,具體見附錄中關(guān)于控制寄存器1的設(shè)置;為了使頻率控制字加載時本電路選擇當(dāng)前相位累加器狀態(tài)不改變的工作方式,則設(shè)置CFR1<

37、;13>0且設(shè)置CFR1<10>0相位累加器以普通方式工作;振幅、角度變換采用余弦函數(shù),則設(shè)置CFR1<12>0;允許時鐘輸入電路工作,則設(shè)置CFR1<4>0;SDIO引腳可進行輸入輸出雙向串行操作,則設(shè)置CFR1<9>0;不對OSK引腳編程來控制幅度與時間斜率,則設(shè)置CFR1<25>=0,此時CFR1<24>不用,設(shè)為0即可;涉及到省電模式的都可用默認0,故本應(yīng)用電路寫入到控制寄存器CFR1的32位數(shù)據(jù)為00 00 00 00 H. 控制寄存器2的設(shè)置:對于進行多片同步設(shè)置的,我們都可以在此應(yīng)用電路圖中采用默認值0

38、,比如,設(shè)置CFR2<11>0,高速同步步進關(guān)閉;設(shè)置CFR2<10>0。硬件手動同步功能無效;由于采用外部振蕩源則設(shè)置CFR2<9>0 ,CRYSTAL OUT引腳不工作;采用外部晶振30MHZ,為了將芯片工作頻率接近最大工頻400MHZ,設(shè)置CFR2<7:3>為01101,即設(shè)置倍頻數(shù)為13;為了使VCO 操作范圍250MHZ400MHZ,則設(shè)置CFR2<2>=1;對于工作電流選擇最大工頻所需要的電流值150 UA,CFR2<1:0>=11。故送入CFR2的數(shù)據(jù)是,00 00 6F H。ASF寄存器的設(shè)置:本應(yīng)用電路O

39、SK不被編程操作故采用ASF寄存器默認輸出,可設(shè)置為00 00 H。ARR寄存器的設(shè)置:本應(yīng)用電路由于不對幅度做特殊要求,故可以設(shè)置為00 00H。頻率控制寄存器FTW0的設(shè)置:應(yīng)用中采用外部振蕩源,外部晶振為30MHZ,AD9951工作頻率可達400MHZ,輸出頻率一般只為工作頻率的40%,最大輸出頻率達160MHZ,為了能輸出盡量高的頻率,所設(shè)的倍頻數(shù)是13,那么fs=13×30MHZ,這樣開機初始化時要輸出fo=10MHZ的頻率, 可算得FTW=110127367,轉(zhuǎn)換成16進制就是06906907H。頻率轉(zhuǎn)換程序算法就是基于FTW= 232fo /fs這個表達式的。初始化可以

40、設(shè)置為06906907H對相位偏置寄存器POW0的設(shè)置:本應(yīng)用電路選擇的是相位零偏移 故可設(shè)POW=0,因此=0,設(shè)置送入到此寄存器的數(shù)據(jù)是:00 00 H。5.3 AD9951寫入控制時序時序圖如圖5-3:圖5-3AD9951的控制數(shù)據(jù)格式:1、給出要寫入的寄存器的地址;2、把要寫入該寄存器的內(nèi)容送出;3、UPDATA發(fā)一個脈沖,把數(shù)據(jù)打入寄存器AD9951共有6個控制寄存器,可以通過設(shè)置這些寄存器的內(nèi)容完成多種功能。對于只關(guān)心頻率參數(shù)的應(yīng)用場合,可以只簡單地對控制寄存器2(CFR2)和頻率控制寄存器(FTW0)進行設(shè)置即可。而CFR2的0-7位控制著內(nèi)部倍頻模塊的倍頻數(shù),其他位可以忽略不用

41、管他(使用其默認值)。CFR2寄存器的地址為0x01H。頻率控制寄存器(FTW0)的地址為0x04H,長度為32位,負責(zé)設(shè)置輸出信號的頻率值。在這種應(yīng)用場合,AD9951的控制數(shù)據(jù)格式為:1、送出CFR2寄存器的地址0x01H;2、送出要寫入CFR2寄存器的內(nèi)容(倍頻數(shù));3、UPDATA發(fā)一個脈沖, 把數(shù)據(jù)打入寄存器;4、送出頻率控制寄存器(FTW0)的地址0x04H;5、送出32位頻率控制字。6、發(fā)一個UPDATA脈沖,把數(shù)據(jù)打入寄存器;在送數(shù)給AD9951的每個通信周期中,SCLK的前8個上升沿用于往AD9951中寫入指令字。SCLK剩下的上升沿是留給通信周期第二個階段的。階段二是在AD

42、9951和系統(tǒng)控制器間傳輸數(shù)據(jù)的。階段二傳輸?shù)淖止?jié)數(shù)與即將訪問的寄存器密切相關(guān)。比如說:訪問的是寄存器二(CFR2),就是3個字節(jié)的寬度,此時就傳輸3個字節(jié);如若傳輸?shù)氖穷l率控制字,則要傳4個字節(jié)。傳完所有數(shù)字字節(jié)后,一個通信周期完成。在AD9951的串行操作中,指令字節(jié)用來指定讀/寫操作和寄存器地址。由于串行操作是在寄存器級別上發(fā)生的,因此串行端口控制器應(yīng)能識別指令字節(jié)寄存器地址和自動產(chǎn)生適當(dāng)?shù)募拇嫫髯止?jié)地址。在串行操作指令階段和通信階段,一般先傳送指令階段的指令字,指令階段對應(yīng)于SCLK的前8個上升沿,其對應(yīng)的指令字(8比特)包含的信息如表5-1所示:MSBD6D5D4D3D2D1LSBR

43、/WBXXA4A3A2A1A0表5-1其中R/W位用于決定指令字后的操作是讀還是寫,高電平為讀出,低電平為寫入;6、5位的電平高低與操作無關(guān);40位則對應(yīng)于A4A0,表示操作串行寄存器地址,該地址信息同時包含了與該指令字所在指令段對應(yīng)的通信段的傳送字節(jié)數(shù)。指令階段后接著是通訊階段,傳送對應(yīng)于字節(jié)數(shù)的幾個通信周期。通信周期完成后,AD9951的串口控制器即認為接下來的8個SCLK的上升沿對應(yīng)的是下一個通信周期的指令字。IOSYNC引腳為高時將立即終止當(dāng)前的通信周期,而當(dāng)IOSYNC引腳狀態(tài)回到低電平時,AD9951串口控制器即認為接下來的8個系統(tǒng)時鐘的上升沿對應(yīng)的是下一個通信周期的指令字,從而保

44、持通信的同步。5.4、頻率控制字計算程序合成信號的頻率可由公式(1) F = Fm* Fc/ 2n可以得到計算頻率控制字的公式如下:Fm=F*2n/Fc (3)可見,計算頻率控制字的公式實際上是一個多位數(shù)除法程序。以輸出頻率F=90MHz計算,F(xiàn)*2n=5 5D 4A 80 00 00 00 00。先不考慮晶振誤差,以系統(tǒng)時鐘為180MHz = A BA 95 00來計算,則被除數(shù)是一個8字節(jié)數(shù),除數(shù)是一個4字節(jié)數(shù)。當(dāng)然,如果系統(tǒng)時鐘剛好是180MHz則被除數(shù)和除數(shù)可以去掉一個字節(jié),可以加快運算速度。但是,在實際運用時晶振是有誤差的,即系統(tǒng)時鐘不可能是非常準確的180MHz,如果在計算時約掉了

45、一個字節(jié),則在進行晶振校正時的校正步進變大,會造成晶振校正不準。因此,在這里要做一個8字節(jié)除以4字節(jié)的除法程序。如果這個程序采用C語言來完成,則運算速度慢,生成的代碼大。所以改用匯編語言編寫該函數(shù)。 在KEILC里在C代碼中調(diào)用匯編代碼的方法很多,常用的有用預(yù)編譯指令#pragma asm 和#pragma endasm 來在線插入,或者用函數(shù)來完成。即在C代碼中生成一個空函數(shù)(只聲明,不定義),然后用匯編語言編寫該函數(shù)的功能并單獨用一文件保存,再把該文件加入工程文件即可??梢姡迷摲椒ǜ夏K化編程思想,但用該方法要注意的是匯編文件的文件名要和C中該函數(shù)名相同。匯編子程序名和函數(shù)名的對應(yīng)規(guī)

46、則與有無參數(shù)傳遞,及是否是可重入函數(shù)有關(guān),其關(guān)系如下表所示。另外還需要注意的是參數(shù)的傳遞及返回規(guī)則,在KEILC中函數(shù)的參數(shù)和返回值傳遞規(guī)則如下表所示。函數(shù)名的轉(zhuǎn)換關(guān)系:說明符號名解釋Void func(void)FUNC無參數(shù)傳遞或不含寄存器參數(shù)的函數(shù)名不作改變轉(zhuǎn)如目標文件中名字不作改變。Void func(char)_FUNC帶寄存器參數(shù)的函數(shù)加上“_”字符前綴以示區(qū)別Voidfunc(void) reentrant_?FUNC可重入函數(shù)加上“_?”字符前綴以示區(qū)別參數(shù)傳遞規(guī)則:參數(shù)序號CharIntLong,float通用指針1R7R6、R7R4、R5、R6、R7R1、R2、R32R6R

47、4、R53R5R3、R2函數(shù)返回值規(guī)則:返回值類型寄存器BitC(標志位)Char/unsigned char(1Byte指針)R7Int/unsigned int (2Byte指針)R5、R7Long/unsigned longR4、R5、R6、R7FloatR4、R5、R6、R7通用指針R1、R2、R3當(dāng)函數(shù)的傳遞參數(shù)超過以上數(shù)目時,KEILC將在RAM中開辟一個默認段來傳遞剩余的參數(shù)。在該計算頻率控制字程序中,要傳遞的參數(shù)為2個 long 型數(shù)據(jù)。一個是輸入頻率參數(shù),另一個為系統(tǒng)校正的晶振頻率。由于KEILC在當(dāng)前寄存器中只能傳遞一個long型參數(shù),所以另外一個long型參數(shù)只能采用絕對

48、存儲變量來傳遞,即用 _at_關(guān)鍵字來聲明一個全局變量,因為為它分配了一個固定的地址,所以在匯編程序中只要從該地址中把校正晶振頻率數(shù)據(jù)取出即可。該子程序返回一個long型的頻率控制字數(shù)據(jù)。計算頻率控制字的多位數(shù)除法程序可以分解為一系列的移位相減運算。我們知道,任何一個數(shù)都可以用2的N次方來表示,該算法就是用一個N層循環(huán)以2的N次方來累加商的,當(dāng)?shù)谝淮窝h(huán)完,用差值代替被除數(shù)繼續(xù)循環(huán)。直至做到被除數(shù)(差值)小于除數(shù)為止。該除法程序用軟件模擬,在24MHZ晶振下該子程序需要花幾個ms的計算時間。其算法流程 圖5-4所示,完整程序見附件2 count_f.asm文件。入口參數(shù)傳遞商、商緩存清零C=1

49、C=1存商返回C=1累加商被除數(shù)除數(shù)商緩存加一余數(shù)除數(shù)除以2被除數(shù)除數(shù)乘以2商緩存乘以2除數(shù)除以2用被除數(shù)除數(shù)覆蓋被除數(shù)商加一N YY NYN 圖5-4計算控制字算法流程圖其部分程序如下:;-;從C中調(diào)用匯編子程序的標準程序段COUNT_F即為C中的函數(shù)名;-PUBLIC_COUNT_F MOVEPSEGMENTCODERSEGMOVEP_COUNT_F: ;-;傳遞入口除數(shù);在C中用_at_關(guān)鍵字申明的晶振頻率變量ulong data osc _at_ 0x6a;-MOVR0,6DH MOVR1,6CHMOVR2, 6BHMOVR3, 6AH;-;傳遞入口被除數(shù);四個字節(jié)的二進制頻率參數(shù)乘以

50、232次方;-MUL_24: MOV57H, R4MOV56H, R5MOV55H, R6MOV54H,R7MOV53H,#0MOV52H,#0MOV51H,#0MOV50H,#0;-; 商、商緩存清零;-DIV8_4:MOV68H,#0; 外循環(huán)計數(shù)器清零MOV60H,#0MOV61H#0MOV62H,#0MOV63H,#0MOV64H,#0MOV65H,#0MOV66H,#0MOV67H,#0END5.5、LCD顯示程序因為LCD與單片機是采用直接連接的方式連接的,所以要用軟件的方法來模擬讀寫LCD的時序。以下給出了對LCD的復(fù)位過程和幾個訪問LCD的關(guān)鍵函數(shù)的說明。詳細的代碼見附件ad9

51、951.c文件。對其初使化過程是:1、LCD開機復(fù)位,寫入指令38H,功能設(shè)定為8位,2行,5*7點陣;2、寫入指令08H,LCD關(guān)閉,寫入指令01H,清屏;3、寫入指令06H,AC遞減,設(shè)置成從地低位址往高位地址顯示;4、寫入指令0dH,LCD光標不顯示、光標閃爍;與LCD有關(guān)的幾個函數(shù)說明如下:void Delay5Ms(void) 延時為5Ms的延時函數(shù);void lcd_wait(void) 用于檢測LCD是否忙,忙的話就等待;void lcd_writer(void) 向LCD寫數(shù)據(jù);void lcd_enable(void) LCD寫控制,LCD允許void lcd_init(void) 完成LCD初始化工作參數(shù)void lcd_mark(unsigned char position) 光標定位于position地址;void lcd_xiebit(unsigned char position,unsigned char xiedata) LCD寫位,且光標停置,用于改變某一顯示地址上的數(shù)據(jù)的;void lcd_xie(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論