生器硬件設(shè)計(jì)與掃頻實(shí)現(xiàn))
簡(jiǎn)介基于AD9910的波形發(fā)生器工程包面向?qū)W習(xí)STM32與DDS技術(shù)的嵌入式開發(fā)者和電子競(jìng)賽選手覆蓋1Hz-400MHz正弦波輸出、1mV-650mV幅度調(diào)節(jié)初始化后為500mV、上下限頻率與步進(jìn)可調(diào)的掃頻模式以及通過(guò)RAM調(diào)制產(chǎn)生方波等功能可作為信號(hào)源類項(xiàng)目或課程設(shè)計(jì)的完整參考。壓縮包共72個(gè)文件包含31個(gè)C源碼、31個(gè)頭文件、8個(gè)啟動(dòng)文件、1個(gè)Keil工程文件和1份開發(fā)文檔共約303KB按CMSIS、APP、Mydrivers等目錄分層組織便于快速定位AD9910驅(qū)動(dòng)、方波產(chǎn)生、掃頻控制等模塊。已有2874人學(xué)習(xí)下載。讀者可借助DDS開發(fā)文檔理清初始化與配置流程并直接參考main.c、AD9910驅(qū)動(dòng)等核心代碼進(jìn)行二次開發(fā)同時(shí)還能學(xué)習(xí)STM32工程搭建與DDS功能裁剪思路其中涉及的掃頻、方波等模塊均可直接復(fù)用是快速上手DDS波形發(fā)生器設(shè)計(jì)的高性價(jià)比資料。1. 項(xiàng)目整體思路與方案選型1.1 為什么選AD9910而不是DDS方案做波形發(fā)生器很多人第一反應(yīng)是用單片機(jī)內(nèi)置DAC直接查表輸出正弦波或者用現(xiàn)成的函數(shù)發(fā)生器芯片比如MAX038、AD9833。這些方案在低頻段確實(shí)夠用但一旦頻率往上走問(wèn)題馬上暴露——單片機(jī)查表方式在幾十kHz以上就明顯吃力波形失真和相位噪聲都很難看而且頻率穩(wěn)定性受溫度影響很大。我這次選AD9910最核心的原因是它屬于直接數(shù)字頻率合成DDS架構(gòu)內(nèi)置14位DAC最高支持1GSPS的采樣率理論上可以輸出400MHz以上的信號(hào)。對(duì)于電賽常見的“多種波形發(fā)生器”題目來(lái)說(shuō)這個(gè)性能余量非常充裕甚至有點(diǎn)“殺雞用牛刀”的意思但正是因?yàn)橛嗔繅虼笞龀鰜?lái)的系統(tǒng)穩(wěn)定性和波形質(zhì)量才讓人放心。AD9910還有一個(gè)非常實(shí)用的特性——內(nèi)置獨(dú)立的調(diào)制功能包括頻率調(diào)制、相位調(diào)制和幅度調(diào)制。配合它的并行數(shù)據(jù)端口可以實(shí)現(xiàn)非常快速的掃頻輸出。比如題目要求輸出從1kHz到10MHz的線性掃頻信號(hào)用ADI的評(píng)估板手冊(cè)里的標(biāo)準(zhǔn)配置配合外部地址累加器可以在微秒級(jí)別完成掃頻更新這是傳統(tǒng)DAC方案做不到的。1.2 系統(tǒng)整體架構(gòu)與核心設(shè)計(jì)目標(biāo)這個(gè)項(xiàng)目的整體架構(gòu)可以概括為“四板斧”電源系統(tǒng)、時(shí)鐘系統(tǒng)、AD9910模擬輸出鏈路、MCU控制接口。電源系統(tǒng)要解決的第一個(gè)問(wèn)題是多電壓軌。AD9910的核心模擬和數(shù)字部分需要1.8V而IO接口為了兼容外部MCU通常設(shè)計(jì)為3.3V。另外參考時(shí)鐘如果有源晶振通常需要5V或3.3V供電。這就意味著輸入電源至少要有一顆5V主電源再經(jīng)過(guò)多路LDO轉(zhuǎn)換為1.8V和3.3V。很多新手在這里犯的錯(cuò)是直接用AMS1117-1.8給模擬部分供電結(jié)果輸出波形底噪特別大。正確做法是模擬電源和數(shù)字電源分開至少用磁珠或0歐電阻在PCB上做單點(diǎn)連接。時(shí)鐘系統(tǒng)是整個(gè)DDS的“心臟”。AD9910的SYSCLK直接決定了輸出頻率的上限和頻率分辨率。我在這個(gè)項(xiàng)目里用的是有源溫補(bǔ)晶振TCXO配上專用的時(shí)鐘整形電路而不是直接用普通有源晶振。因?yàn)锳D9910對(duì)時(shí)鐘抖動(dòng)的敏感度非常高時(shí)鐘相位噪聲會(huì)直接映射到輸出信號(hào)的相位噪聲上。如果你測(cè)試時(shí)發(fā)現(xiàn)正弦波兩側(cè)出現(xiàn)明顯的“裙邊”大概率就是參考時(shí)鐘的抖動(dòng)問(wèn)題。ADI手冊(cè)里提到參考時(shí)鐘的上升沿抖動(dòng)應(yīng)盡量控制在1ps以內(nèi)實(shí)際測(cè)試時(shí)我選了一顆10MHz的TCXO再通過(guò)內(nèi)部的PLL倍頻到1GHz實(shí)測(cè)效果比直接接1GHz信號(hào)源還要好因?yàn)門CXO本身的低頻相位噪聲很低??刂平涌谶@里我沒(méi)有選用復(fù)雜的USB或以太網(wǎng)方案就用最簡(jiǎn)單的四線SPI和一塊常見的STM32F103最小系統(tǒng)板。一方面是因?yàn)殡娰惉F(xiàn)場(chǎng)時(shí)間緊張SPI配置簡(jiǎn)單直接另一方面AD9910的寄存器配置量其實(shí)不大核心就是頻率轉(zhuǎn)換字FTW、幅度比例因子ASF和輸出使能這些關(guān)鍵寄存器。SPI速率跑個(gè)10MHz完全夠用實(shí)測(cè)刷新頻率字到波形穩(wěn)定輸出的時(shí)間在微秒級(jí)別人眼完全無(wú)感。如果后續(xù)打算做上位機(jī)控制也可以把SPI通過(guò)W5500或CH340轉(zhuǎn)出去但這次項(xiàng)目先不做那么復(fù)雜。2. 核心硬件電路設(shè)計(jì)與實(shí)操2.1 參考時(shí)鐘電路TCXO的選型與接入方式時(shí)鐘電路里有個(gè)很多人忽視的細(xì)節(jié)AD9910參考時(shí)鐘輸入引腳COSC和IOSC內(nèi)部經(jīng)過(guò)比較器可以直接接正弦波信號(hào)但輸入電平不能隨手亂給。手冊(cè)給出的典型輸入范圍是0.8V到1.2V峰峰值過(guò)大會(huì)導(dǎo)致內(nèi)部比較器飽和過(guò)小則無(wú)法正常觸發(fā)。我第一版設(shè)計(jì)圖省事直接用一個(gè)5V邏輯輸出的有源晶振去接結(jié)果完全鎖不上PLL芯片輸出全是亂碼。后來(lái)查手冊(cè)才發(fā)現(xiàn)要加一個(gè)分壓電阻網(wǎng)絡(luò)把信號(hào)電平壓到1Vpp左右再進(jìn)去才行。如果你的系統(tǒng)里有現(xiàn)成的FPGA或MCU時(shí)鐘輸出也可以直接引過(guò)來(lái)但要注意先經(jīng)過(guò)一個(gè)施密特觸發(fā)器整形再通過(guò)交流耦合電容接入。直流偏置的問(wèn)題一定要想清楚因?yàn)锳D9910內(nèi)部比較器已經(jīng)帶了偏置外部只要提供交流信號(hào)就夠了。用TCXO時(shí)建議先經(jīng)過(guò)一個(gè)低通濾波器濾掉高頻雜散再送入能有效減少PLL帶內(nèi)的噪聲基底。2.2 電源樹設(shè)計(jì)模擬與數(shù)字的切分電源樹設(shè)計(jì)這塊我踩過(guò)的坑最多。一開始我為了省PCB面積把1.8V和3.3V都用一顆雙路LDO搞定輸出接了一大堆0.1uF退耦電容以為萬(wàn)事大吉。結(jié)果做頻譜測(cè)試時(shí)發(fā)現(xiàn)在100MHz附近的輸出信號(hào)旁邊總有幾個(gè)不隨頻率移動(dòng)的固定雜散峰后來(lái)定位到是數(shù)字電源的開關(guān)噪聲通過(guò)地平面耦合到了模擬輸出。正確做法是主電源進(jìn)來(lái)后先經(jīng)過(guò)一顆低噪聲LDO得到3.3V的數(shù)字IO電源再?gòu)?.3V單獨(dú)分支出一路經(jīng)過(guò)第二顆LDO得1.8V給AD9910的模擬和數(shù)字內(nèi)核供電。關(guān)鍵在于1.8V這一路上模擬部分AVDD和數(shù)字部分DVDD要分別接磁珠再進(jìn)入芯片引腳形成兩個(gè)內(nèi)部電源島。地平面也是同理模擬地和數(shù)字地在芯片下方的散熱焊盤處匯合不要像有些參考設(shè)計(jì)那樣把地割得支離破碎反而引出更多回流問(wèn)題。另外AD9910的DAC輸出IOUT和IOUTB是需要外部電阻接到電源的這個(gè)電阻的值直接決定了輸出滿幅電流。手冊(cè)給出了一個(gè)可調(diào)范圍典型設(shè)計(jì)是接到AVDD并通過(guò)一個(gè)電阻接地通過(guò)軟件控制滿幅電流寄存器。我按手冊(cè)推薦用了一個(gè)精密電阻網(wǎng)絡(luò)實(shí)測(cè)輸出幅度可以精確到幾個(gè)mV級(jí)別對(duì)后面的信號(hào)調(diào)理電路很有幫助。2.3 輸出調(diào)理電路從差分電流到標(biāo)準(zhǔn)信號(hào)AD9910的DAC輸出本質(zhì)上是一個(gè)電流源輸出的是差分電流信號(hào)不是電壓。要讓信號(hào)變成標(biāo)準(zhǔn)的50歐姆系統(tǒng)里用的電壓信號(hào)必須經(jīng)過(guò)I/V轉(zhuǎn)換和濾波。我用的方案是IOUT和IOUTB分別通過(guò)一個(gè)49.9歐姆電阻接到地或者接到AVDD看手冊(cè)選擇把差分電流轉(zhuǎn)成差分電壓再通過(guò)一顆寬帶變壓器比如Mini-Circuits的TC1-1-13M轉(zhuǎn)成單端信號(hào)。變壓器的好處是天然實(shí)現(xiàn)了差分到單端的轉(zhuǎn)換還能提供一定的隔離頻率響應(yīng)可以到幾百M(fèi)Hz完全覆蓋AD9910的輸出范圍。如果你根本不需要超過(guò)幾十MHz用一個(gè)高速運(yùn)放做差分轉(zhuǎn)單端也可以但要注意運(yùn)放的帶寬和壓擺率指標(biāo)AD8009這類電流反饋運(yùn)放是不錯(cuò)的選擇。在變壓器輸出端我加了一級(jí)低通濾波器截止頻率大概設(shè)在100MHz左右。這個(gè)濾波器非常重要因?yàn)镈DS的輸出天然帶有采樣率和鏡像頻率的雜散。比如你把SYSCLK設(shè)為1GHz輸出10MHz信號(hào)時(shí)在990MHz和1010MHz位置會(huì)有很強(qiáng)的鏡像頻率如果不濾掉后續(xù)放大器會(huì)把這些雜散一起放大整個(gè)輸出頻譜就廢了。濾波器我用的是7階橢圓濾波器通帶損耗不到1dB阻帶抑制可以到60dB以上能有效把鏡像頻率壓到噪底以下。2.4 多種波形的硬件生成思路題目要求“多種波形”在AD9910平臺(tái)上主要靠?jī)煞N思路實(shí)現(xiàn)一是直接利用DDS的模式比如輸出正弦波、三角波、鋸齒波二是通過(guò)比較器把正弦波整形為方波再配合可編程分頻器得到不同頻率的方波。AD9910本身沒(méi)有專用的方波輸出引腳所以方波必須外置比較器。我用的比較器是ADCMP601帶寬足夠到幾百M(fèi)Hz邊沿抖動(dòng)很小。連接方式很簡(jiǎn)單從DAC輸出的單端正弦波進(jìn)比較器正端負(fù)端接一個(gè)可調(diào)閾值電壓用數(shù)字電位器控制輸出就是標(biāo)準(zhǔn)的方波。通過(guò)調(diào)整比較器閾值還能順便實(shí)現(xiàn)占空比調(diào)節(jié)這是普通DDS芯片做不到的。三角波和鋸齒波倒是可以利用AD9910內(nèi)部的“部分功率輸出”和幅度調(diào)制功能配合外部積分器實(shí)現(xiàn)但說(shuō)實(shí)話操作復(fù)雜度高、線性度也一般。我在項(xiàng)目里更推薦的做法是三角波和鋸齒波就用DDS輸出正弦波配合過(guò)零比較器驅(qū)動(dòng)一個(gè)積分電路來(lái)做雖然需要額外運(yùn)放電路但波形線性度和幅度穩(wěn)定性都更容易控制。以下是兩種方案的簡(jiǎn)單對(duì)比方案頻率范圍波形純度硬件復(fù)雜度實(shí)測(cè)效果AD9910直接輸出正弦波1Hz~100MHz優(yōu)秀雜散經(jīng)濾波后可接受低波形干凈頻譜純凈正弦波比較器整形方波1Hz~50MHz邊沿抖動(dòng)小占空比可調(diào)中方波上升沿約1ns正弦波積分器做三角波1Hz~10MHz線性度優(yōu)良中高三角波線性度1%AD9910內(nèi)部調(diào)制外置整形1Hz~400MHz需要大量校準(zhǔn)高不推薦新手使用3. 軟件控制與頻率計(jì)算實(shí)戰(zhàn)3.1 寄存器配置從復(fù)位到正常輸出AD9910的寄存器配置可以看作是幾個(gè)固定步驟。首先上電后先給芯片一個(gè)硬件復(fù)位拉低RESET引腳然后再拉高這時(shí)所有寄存器恢復(fù)默認(rèn)值。接著配置數(shù)字IO口的工作模式我要用的是標(biāo)準(zhǔn)的SPI四線模式所以把SYNC_IN和SYNC_OUT引腳處理好然后通過(guò)SPI讀取寄存器確認(rèn)通信正常。第一步是配置PLL倍頻系數(shù)。我在項(xiàng)目里SYSCLK設(shè)為1GHz參考時(shí)鐘輸入10MHz所以PLL倍頻系數(shù)就是100倍。AD9910的PLL倍頻范圍有限一般是4到100倍實(shí)際我用的是40倍然后再經(jīng)過(guò)內(nèi)部倍頻更穩(wěn)。這里有一個(gè)容易出現(xiàn)的坑PLL的VCO頻率范圍和環(huán)路濾波器參數(shù)必須配套。如果用10MHz參考想直接倍頻到1GHz手冊(cè)里的VCO選擇表有好幾擋選錯(cuò)了鎖不住。我建議在調(diào)試階段先用一個(gè)簡(jiǎn)單的倍頻系數(shù)比如20倍輸出200MHz SYSCLK確認(rèn)系統(tǒng)能工作再往上調(diào)。第二步是配置輸出通道的模式。AD9910有一個(gè)“輸出模式選擇”寄存器可以選擇單頻模式、掃頻模式或者調(diào)制模式。我用的是單頻模式配合手動(dòng)改FTW的方式生成不同頻率。另外要開啟“DAC輸出校準(zhǔn)”功能這是AD9910的一個(gè)特色功能它能自動(dòng)校準(zhǔn)DAC的線性度和失調(diào)校準(zhǔn)完成后輸出波形的SFDR無(wú)雜散動(dòng)態(tài)范圍明顯改善實(shí)測(cè)改善幅度可以達(dá)到6dB左右。第三步就是設(shè)置FTW頻率轉(zhuǎn)換字和幅度控制。FTW的計(jì)算公式很簡(jiǎn)單FTW 期望輸出頻率 × 2^32 / SYSCLK比如輸出10MHzSYSCLK1GHz那FTW就等于10e6 × 2^32 / 1e9 42949673。直接用這個(gè)值寫入頻率寄存器芯片就會(huì)在IOUT上輸出10MHz的正弦波。注意FTW是32位的低端頻率時(shí)FTW很小也沒(méi)問(wèn)題對(duì)應(yīng)的高頻則要注意輸出不能超過(guò)奈奎斯特頻率的一半否則信號(hào)會(huì)折疊回來(lái)。3.2 掃頻功能的軟件實(shí)現(xiàn)掃頻是電賽題目里??嫉墓δ?。AD9910支持線性掃頻用內(nèi)部的頻率累加器控制但配置起來(lái)比較繞需要同時(shí)設(shè)置起始頻率、終止頻率、掃頻步進(jìn)和掃頻速率。另一種更通用也更簡(jiǎn)單的方法是在MCU里建立一個(gè)定時(shí)器中斷每次中斷里修改FTW值同時(shí)通過(guò)并口或SPI寫入新頻率。SPI模式下更新頻率字需要大約50ns的建立時(shí)間實(shí)際測(cè)下來(lái)極限更新速率約10MHz/s這個(gè)速度對(duì)于音頻范圍掃頻完全夠用但對(duì)射頻段來(lái)說(shuō)就偏慢了。如果你要做高速掃頻建議把AD9910配置成并行數(shù)據(jù)模式直接把FTW的某幾位接在MCU或FPGA的IO口上通過(guò)并行口刷新頻率速度可以到幾十MHz/s。我在項(xiàng)目中采用的是SPI定時(shí)器的折中方案。MCU的定時(shí)器中斷設(shè)置為20kHz每次中斷計(jì)算出當(dāng)前掃頻點(diǎn)的FTW值并寫入。比如要從1MHz掃到10MHz步進(jìn)100kHz總共90個(gè)頻率點(diǎn)按20kHz的刷新率一遍掃完只需要4.5ms。輸出用頻譜儀觀察掃頻軌跡干凈連貫沒(méi)有明顯的跳變毛刺。如果對(duì)掃頻的線性度有更高要求誤差主要來(lái)自MCU中斷的抖動(dòng)用STM32的定時(shí)器做主中斷20kHz基本能控制在幾十納秒內(nèi)對(duì)絕大多數(shù)應(yīng)用來(lái)說(shuō)都足夠。3.3 幅度控制與功率校準(zhǔn)AD9910的幅度控制是通過(guò)14位的ASF幅度比例因子寄存器實(shí)現(xiàn)的。手冊(cè)給出的公式是IOUT (ASF / 2^14) × IOUT_MAX當(dāng)ASF設(shè)為0x3FFF時(shí)輸出滿幅電流此時(shí)配合外部I/V電阻大約可以得到等效的0dBm輸出電平。調(diào)整幅度有兩種方式一是直接改ASF寄存器這是數(shù)字域調(diào)整精度高但會(huì)改變DAC的有效位數(shù)太低時(shí)波形量化噪聲變大二是改變外部I/V電阻的阻值這是硬件域的調(diào)整精度不高但不會(huì)影響DAC信噪比。我在項(xiàng)目里用了兩級(jí)數(shù)字域ASF做主調(diào)步進(jìn)1dB硬件I/V電阻做粗調(diào)用來(lái)設(shè)置系統(tǒng)的基準(zhǔn)輸出電平。校準(zhǔn)的步驟比較繁瑣但值得做。先把ASF設(shè)為滿幅用功率計(jì)測(cè)量R50負(fù)載上的實(shí)際輸出功率然后按-1dB的步進(jìn)逐級(jí)減小ASF記錄每個(gè)點(diǎn)對(duì)應(yīng)的實(shí)測(cè)功率做成一個(gè)查找表存到MCU的Flash里。這樣使用的時(shí)候就可以直接輸入目標(biāo)功率比如-10dBmMCU通過(guò)查表得到對(duì)應(yīng)的ASF值配合一次插值計(jì)算輸出功率的誤差可以控制在0.2dB以內(nèi)。這個(gè)校準(zhǔn)過(guò)程當(dāng)然用頻譜儀或功率計(jì)最準(zhǔn)沒(méi)有的話用一個(gè)帶RMS檢波的萬(wàn)用表也能湊合只是低頻段和高頻段的校準(zhǔn)結(jié)果差別比較大建議分頻段做多組查找表。3.4 SPI通信的穩(wěn)定性處理AD9910的SPI通信有幾個(gè)細(xì)節(jié)容易踩坑。首先AD9910支持兩種SPI模式MSB優(yōu)先和LSB優(yōu)先默認(rèn)是MSB大部分MCU也是MSB這個(gè)沒(méi)問(wèn)題。其次AD9910的寄存器地址是8位但數(shù)據(jù)是變長(zhǎng)的有的寄存器16位有的32位。SPI幀格式和常規(guī)的8位寄存器的外設(shè)不一樣你需要按手冊(cè)里“寄存器映射表”逐個(gè)確認(rèn)讀寫的數(shù)據(jù)位數(shù)。我遇到的另一個(gè)問(wèn)題是SPI的極性和相位。AD9910手冊(cè)明確規(guī)定CPOL1CPHA1也就是SPI Mode 3這個(gè)和很多MCU默認(rèn)的Mode 0剛好相反。如果你不配好讀出來(lái)的寄存器數(shù)據(jù)會(huì)錯(cuò)位或者亂碼。我的排查方法是先通過(guò)SPI讀芯片的版本號(hào)寄存器0x00如果能讀到預(yù)期的0x09說(shuō)明通信正常不行就檢查模式配置。這個(gè)步驟建議放在初始化代碼第一步作為自檢流程。另外SPI的走線長(zhǎng)度和地線回流也要注意。如果MCU和AD9910在同一個(gè)PCB上間距短隨便連都能通如果中間有排線或者連接器最好加終端電阻了。實(shí)測(cè)用20cm杜邦線連接時(shí)SPI速率跑到10MHz以上就會(huì)出現(xiàn)偶發(fā)的誤碼改為2.5MHz以后就沒(méi)問(wèn)題了。對(duì)絕大多數(shù)控制指令來(lái)說(shuō)2.5MHz的速率完全夠用畢竟每次只需要發(fā)不到10個(gè)字節(jié)。4. 常見問(wèn)題與排查技巧實(shí)錄4.1 輸出信號(hào)頻率不對(duì)這個(gè)可以說(shuō)是DDS調(diào)試?yán)镒畛R姷膯?wèn)題了。頻率輸出值總是比期望值高或者低一些通常原因有兩類一是SYSCLK不對(duì)也就是PLL沒(méi)鎖定或者倍頻系數(shù)配錯(cuò)了二是FTW計(jì)算時(shí)用了錯(cuò)誤的SYSCLK值。排查思路很簡(jiǎn)單先用示波器看IOUT的輸出頻率和期望值的比例關(guān)系如果差10倍那就是PLL根本沒(méi)倍頻到位如果差一個(gè)常數(shù)比例比如1.043倍那就是參考時(shí)鐘頻率和你以為的不一樣。你可以通過(guò)讀AD9910的PLL鎖定狀態(tài)寄存器確認(rèn)PLL是否鎖定如果沒(méi)鎖定則檢查參考時(shí)鐘是否有效輸入以及外部環(huán)路濾波電容的取值是否合適。4.2 輸出波形上有毛刺毛刺問(wèn)題要區(qū)分兩種情況隨機(jī)毛刺和周期毛刺。隨機(jī)毛刺多半是電源紋波或者地彈引入的檢查一下電源的示波器波形和DAC輸出毛刺是否同步如果同步重點(diǎn)查L(zhǎng)DO的響應(yīng)速度、磁珠的直流電阻和退耦電容的布置。周期毛刺主要集中在DAC的更新時(shí)鐘或數(shù)字時(shí)鐘上可以用頻譜儀看毛刺是否為固定頻率間隔分布出現(xiàn)這種情況時(shí)建議打開AD9910的數(shù)字輸出時(shí)鐘邊沿調(diào)節(jié)功能稍微調(diào)整數(shù)據(jù)時(shí)鐘的相位毛刺會(huì)明顯減小。4.3 高頻段幅度衰減嚴(yán)重DDS輸出高頻信號(hào)時(shí)幅度衰減是正?,F(xiàn)象因?yàn)镈AC的Sinc包絡(luò)響應(yīng)會(huì)隨著頻率升高而下陷。比如在400MHz輸出時(shí)信號(hào)幅度可能比低頻段低3dB以上這是DDS固有的特性不是故障。解決辦法是做幅度補(bǔ)償也就是在軟件查表的時(shí)候根據(jù)輸出頻率對(duì)ASF做正補(bǔ)償。你需要先實(shí)測(cè)整段頻率范圍內(nèi)輸出幅度的變化曲線然后反推出補(bǔ)償表。這個(gè)工作最好用頻譜儀的“跡線”功能配合GPIB控制自動(dòng)完成手工做太累。4.4 芯片發(fā)熱嚴(yán)重發(fā)熱一般是因?yàn)殡娫措妷哼^(guò)高或負(fù)載太重。AD9910正常工作電流大約500mA左右如果你用線性穩(wěn)壓器供1.8V但輸入直接接5V壓差3.2V、電流500mA穩(wěn)壓器上就要消耗1.6W功率發(fā)熱非常明顯。解決辦法是改用低功耗LDO或者增加散熱措施。同時(shí)檢查DAC輸出的匹配電阻是否過(guò)小如果IOUT對(duì)地電阻太小DAC的輸出電流會(huì)偏大芯片功耗也會(huì)增加。4.5 常見問(wèn)題速查表現(xiàn)象可能原因排查方法解決方案無(wú)輸出或輸出為直流SPI配置未生效或電源電壓不對(duì)檢查SPI通信狀態(tài)、電源指示燈重新復(fù)位并逐條檢查寄存器寫入輸出頻率偏差PLL未鎖定時(shí)鐘或SYSCLK選錯(cuò)讀鎖定寄存器、測(cè)參考時(shí)鐘頻率檢查PLL配置和參考信號(hào)幅度信號(hào)有周期毛刺數(shù)字時(shí)鐘對(duì)模擬輸出的耦合用頻譜儀確認(rèn)毛刺頻率間隔開啟數(shù)據(jù)時(shí)鐘邊沿調(diào)節(jié)檢查接地處理高頻幅度下降Sinc包絡(luò)效應(yīng)用頻譜儀測(cè)不同頻率幅度軟件查表做幅度補(bǔ)償失真度偏大濾波器截止太低或輸出電平過(guò)低查看頻譜是否有明顯雜散峰更換濾波器或調(diào)整信號(hào)調(diào)理電路方波上升沿過(guò)緩比較器帶寬不夠或驅(qū)動(dòng)能力弱查看上升沿時(shí)間換用更高帶寬的比較器如ADCMP6014.6 一個(gè)容易被忽略的坑斷電順序AD9910對(duì)電源的上電時(shí)序沒(méi)有嚴(yán)格要求但強(qiáng)烈建議數(shù)字電源先于模擬電源上電因?yàn)槿绻M部分先上電而數(shù)字尚未復(fù)位內(nèi)部可能出現(xiàn)不可預(yù)測(cè)的狀態(tài)。實(shí)際調(diào)試時(shí)我發(fā)現(xiàn)一個(gè)更實(shí)用的經(jīng)驗(yàn)每次上電后都做一次完整的軟件復(fù)位然后延時(shí)至少10ms再做寄存器配置這樣能避開電源穩(wěn)定過(guò)程中的毛糙期。這個(gè)延時(shí)也方便示波器抓取上電瞬間的波形排障時(shí)很有用。5. 工具準(zhǔn)備與調(diào)試環(huán)境搭建5.1 需要的儀器和設(shè)備做這個(gè)項(xiàng)目必要的儀器有幾樣。示波器至少要200MHz帶寬最好能到500MHz因?yàn)橐^察波形細(xì)節(jié)和上升沿頻譜儀最好能到1GHz以上用來(lái)測(cè)試輸出信號(hào)的諧波、雜散和幅度平坦度頻率計(jì)可以用來(lái)精確測(cè)量輸出頻率當(dāng)然一臺(tái)可調(diào)直流電源也是必須的。如果沒(méi)有頻譜儀也可以用示波器的FFT功能勉強(qiáng)代替但動(dòng)態(tài)范圍差太多很多雜散峰看不到測(cè)試結(jié)果會(huì)誤導(dǎo)你的判斷。調(diào)試初期建議先用低頻小信號(hào)驗(yàn)證整個(gè)鏈路比如設(shè)置輸出1MHz、幅度-10dBm確認(rèn)波形和頻率都準(zhǔn)確后再逐步往上加頻率。這就像寫代碼先跑通hello world一樣基礎(chǔ)鏈路確認(rèn)了后續(xù)查問(wèn)題才有參照系。我在做這個(gè)項(xiàng)目時(shí)第一版板子回來(lái)直接就上100MHz測(cè)試結(jié)果毫無(wú)意外地各種問(wèn)題疊加根本無(wú)法定位后來(lái)老老實(shí)實(shí)從1MHz開始逐步驗(yàn)證才把問(wèn)題一個(gè)個(gè)抓住并解決。6. 個(gè)人經(jīng)驗(yàn)總結(jié)做這個(gè)基于AD9910的波形發(fā)生器前前后后改了三版硬件。第一版是照著數(shù)據(jù)手冊(cè)的參考電路直接畫能出聲但不穩(wěn)定輸出頻譜里總有幾個(gè)固定的雜散峰第二版優(yōu)化了電源布局和參考時(shí)鐘雜散問(wèn)題基本解決但幅度平坦度還是不行高頻衰減很嚴(yán)重第三版加了數(shù)字域的幅度補(bǔ)償和完整的校準(zhǔn)流程才算真正達(dá)到我想要的“儀器級(jí)”輸出質(zhì)量。整個(gè)過(guò)程里最深的體會(huì)是DDS系統(tǒng)百分之七十的功夫在下游模擬鏈路芯片本身反而是最省心的部分——只要供電、時(shí)鐘和SPI配置對(duì)了它就能按預(yù)期工作真正的難點(diǎn)在于如何把DAC輸出的微弱電流信號(hào)變成干凈、穩(wěn)定、幅度可控的標(biāo)準(zhǔn)電壓信號(hào)。如果這個(gè)項(xiàng)目后續(xù)還要擴(kuò)展我建議可以加一個(gè)完整的GUI上位機(jī)通過(guò)USB或串口控制掃頻、調(diào)幅、調(diào)相等功能再配合一個(gè)鍵盤和LCD顯示屏做成一個(gè)便攜式的獨(dú)立儀器。或者在輸出端加一級(jí)可編程增益放大器用繼電器切換衰減網(wǎng)絡(luò)獲得更大的動(dòng)態(tài)范圍。這些都是順著現(xiàn)有架構(gòu)自然生長(zhǎng)出來(lái)的方向難度不高但實(shí)用價(jià)值很大。本文還有配套的精品資源點(diǎn)擊獲取