文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.175047
中文引用格式: 張步高,馬希直. 基于AD9910的信號源實時顯示系統設計[J].電子技術應用,2018,44(8):94-97,101.
英文引用格式: Zhang Bugao,Ma Xizhi. Design of signal source real-time display system based on AD9910[J]. Application of Electronic Technique,2018,44(8):94-97,101.
0 引言
隨著電子技術的發展,要求信號的頻率越來越高且準確穩定。MAX038芯片僅可以滿足一些低頻率的需求,晶體振蕩器雖然具有高準確度和高穩定度,但其頻率變化范圍很小且頻率值不高,這些都很難滿足在通信、測控等電子系統的需求[1-3]。而AD9910是一款采用ADI公司的DDS(Direct Digital Synthesizer)專利技術的直接數字頻率合成器芯片,它集成了14位數/模轉換(DAC),可以形成數字可編程、高頻模擬輸出的頻率合成器,能夠產生頻率為400 MHz的正弦波形。用戶可以訪問用于控制DDS的信號控制參數:頻率、相位和幅度。這款DDS使用32位累加器,可提供快速跳頻和頻率調節分辨率。其采樣率為1 GS/s,調節分辨率為0.23 Hz[4]。
1 系統方案設計
整個系統由STM32F103RCT6模塊、AD9910模塊、12864顯示模塊、按鍵模塊等構成,如圖1所示。
下面分別對各個模塊功能進行說明:STM32F103RCT6模塊,該模塊主要接收按鍵模塊輸入,控制AD9910產生所需頻率和12864實時顯示頻率;AD9910模塊,產生準確穩定的正弦波;按鍵模塊,通過按鍵輸入實現頻率調整;12864模塊,實時顯示AD9910產生的頻率,方便用戶查看。
2 硬件設計
該系統電路原理圖和PCB圖都通過Altium Designer14軟件繪制,下面分別對各個模塊的硬件設計進行說明。
2.1 STM32F103RCT6模塊
STM32F103RCT6是意法半導體公司基于ARM CM3內核的STM32系列中的一個產品,目前性價比很高。基于STM32F103RCT6芯片的控制模塊包括最小系統(電源電路、時鐘電路、復位電路、啟動電路和JTAG下載電路)、與其他模塊的接口電路和調試顯示電路等,這里主要給出該模塊與其他模塊的接口部分,如圖2所示。
2.2 AD9910模塊
AD9910支持4種工作模式:單頻調制模式、RAM調制模式、數字斜坡調制模式、并行數據端口調制模式。對于本系統,采用單頻調制模式即可達到要求。依據單頻調制模式,AD9910芯片的主要外圍電路為:電源分組、參考時鐘、單頻控制接口、外部環路濾波器、輸出低通濾波器。除電源分組以及其他一些無連接引腳和電源引腳外,相關電路如圖3所示[5-6]。
需要說明一點的是,圖3去掉了后續電路,
與IOUT為互補輸出,若想要其輸出,其后續電路與IOUT后續電路完全一樣。
下面分別對各部分進行說明:
(1)電源分組:對于典型應用,具體可分為4類:3.3 V數字、3.3 V模擬、1.8 V數字和1.8 V模擬。本文選擇了常用的AMS117系列兩個1.8 V芯片和一個3.3 V芯片,都通過5 V進行轉化得到所需電壓。其中兩個1.8 V芯片分別為1.8 V數字和1.8 V模擬,3.3 V芯片為3.3 V模擬,通過10 μH電感得到3.3 V數字。且數字地與電源地相連,模擬地通過10 μH電感與電源地相連。對于有較高性能要求的應用可能需要增加電源隔離元件。
(2)參考時鐘:由DDS的原理可知,整個DDS系統在一個統一的時鐘信號即采樣時鐘下工作,該時鐘的質量決定了最終輸出波形頻率的精度、穩定度以及輸出信號的相噪[7]。由于有源晶振比無源晶振信號質量好,更加穩定,故選擇40 MHz的有源晶振。值得注意的是,有源晶振輸出端要根據需要串聯一個阻值合適的電阻,一是為了減少諧波,二是為了阻抗匹配。如在調試過程中發現無必要串聯電阻,可用0 ?贅電阻代替。使用有源晶振輸入對于AD9910來說屬于單端信號源輸入,由AD9910官方資料進一步得知,REF_CLK/兩個輸入引腳前端都要接一個0.1 μF電容,且
還要接地。
(3)單頻控制接口:實現單頻控制需要的引腳很少,相關引腳如下所述:
①MASTER_RESET引腳:該引腳為主機復位引腳,高電平有效。即在編程時對AD9910初始化時要進行一段時間的復位。
②串行I/O引腳:其中SCLK為串行時鐘,CS為片選信號,SDIO為串行數據輸入/輸出。主要實現配置AD9910寄存器的作用。
③I/O_UPDATE引腳:該引腳為輸入/輸出更新引腳。主要用于將I/O端口緩沖器中寫入的數據傳輸到有效寄存器。
④PROFILE[2:0]引腳:Profile是一個包含DDS信號控制參數的獨立寄存器,AD9910共有8個Profile寄存器,每個Profile都能單獨訪問。即利用3個外部引腳(PROFILE[2:0])可選擇想要的profile。
(4)外部環路濾波器:該部分主要是確定圖3的R10、C32和C33這3個參數,在AD9910官方資料中提供了相關計算公式,但計算公式是建立在已知反饋分配系數(N)、鑒相器增益(KD)以及VCO增益(KV)的基礎上,再由目標開環帶寬(fOL)和相位余量來得出濾波器元件值。這樣會帶來一個問題就是求得的元件值可能不是常用值,無法購得。可以利用ADI提供的PLL環路濾波器工具[8]來進行選擇。
在該工具中,R37、C13和C15分別對應圖3的R10、C32和C33。由于本文選擇的是40 MHz的晶振,想要達到1 GHz的系統時鐘,故倍頻因子為25。相位余量與ICP編程值(該值等于鑒相器增益KD)根據需要進行下拉選取。在DESIGN中選擇相關參數后,CUSTOM中對應位置自動顯示DESIGN參數或由其參數計算出的其他參數。然后選擇R37、C13和C15參數,該工具中內置了一些參數可以下拉選擇。本文選擇R37為1 kΩ,C13為680 pF,C15為22 pF。這些數值在圖3中都有所體現。
(5)輸出低通濾波器:為了過濾高頻干擾信號,需要在AD9910輸出端接一個低通濾波器,可以利用濾波器設計軟件Filter Solution設計出400 MHz的低通濾波器,在實際調試中發現使用低通濾波器后,輸出波形更加平滑穩定。
2.3 12864模塊與按鍵模塊
12864模塊為晶聯訊液晶模塊,本文在PCB設計中將12864模塊和按鍵模塊與STM32F103RCT6模塊集成在一起,AD9910模塊單獨為一塊PCB,并且為了節省空間,將STM32F103RCT6芯片放在12864模塊下面。12864模塊與按鍵模塊原理圖分別如圖4、圖5所示。
3 軟件設計
軟件設計總體思路是先對各個模塊初始化,輸出顯示初始頻率,然后讀取鍵值,由鍵值確定下一步輸出頻率,再控制12864實時顯示。軟件流程圖如圖6所示。
3.1 AD9910串行編程
由于本設計采用的是單頻模式,本文僅對本系統涉及的AD9910寄存器進行說明,如下所述:
控制功能寄存器1(CFR1)-地址0x00:將反Sinc濾波器使能位置1。
控制功能寄存器3(CFR3)-地址0x02:根據需求配制7位REFCLK PLL反饋分步器的分頻模數,即N[7:1];PLL使能位置1;3位選取REFCLK PLL的電荷泵電流值(詳見表1),即ICP[21:19];3位選取REFCLK PLL VCO的頻段,即VCO SEL[26:24]。
單頻寄存器Profile 0-地址0x0E:該寄存器涉及AD9910輸出正弦波振幅、相位偏移以及頻率參數的配置。
AD9910的一個串行通信周期可分為兩個階段。第一個階段是指令階段,將指令字節寫入AD9910。指令字節包含要訪問的寄存器地址以及定義即將進行的數據傳輸是讀操作還是寫操作,對本系統來說,全部為寫操作。第二個階段寫入周期指從串行端口控制器向串行端口緩沖器傳輸數據。傳輸的字節數取決于訪問的寄存器。具體一個串行通信周期程序如下程序所示:
片選信號CS要在通信周期開始前拉低,結束后拉高。但要注意的是,寫入周期結束后,編程數據駐留在串行端口緩沖器中,處于無效狀態,需要輸入/輸出更新引腳I/O_UPDATE產生一個上升沿將端口緩沖器中寫入的數據傳輸到有效寄存器,且脈沖寬度必須大于1個SYNC_CLK周期,其中SYNC_CLK由四分頻電路對系統時鐘分頻后獲得。從IO_UPDATE=0到IO_UPDATE=1,即實現上升沿效果。由于STM32F103RCT6最大時鐘頻率為72 MHz,故可以直接將I/O_UPDATE拉低。AD9910串行端口支持最高有效位(MSB)優先和最低有效位(LSB優先)兩種數據格式,此功能由控制寄存器1(0x00)中的位0控制,默認格式是MSB優先,一般不做修改。由串行I/O時序得出其寫入數據程序,如下程序所示:
其中SID代表SDIO。
基于發送函數和一個完整串行通信周期,便可對AD9910的寄存器進行配置,本文將控制寄存器1中的反Sinc濾波器使能位置1,以避免頻譜失真。控制寄存器2中全部取缺省值。將控制寄存器3中的PLL使能位置1,啟動AD9910內部鎖相環。控制寄存器3中的VCO SEL[26:24]等于PLL環路濾波器工具中的VCO Band Seclection值,ICP[21:19]等于PLL環路濾波器工具的Icp值在表1中的對應值,N[7:1]等于PLL環路濾波器工具中的Frequency Multiplication Factor值。其中VCO SEL[26:24]使用PLL_Loop_Filter_Tool.xls工具會自動幫助選取合適頻段,按給定值配置即可。在配置寄存器和查看寄存器內部值時可以使用ADI公司的AD9910 Evaluation Software軟件來輔助設計。
在配置了控制寄存器后,需要將初始振幅比例因子、相位偏移字、頻率調諧字寫入Profile0,進行初始輸出波形振幅、相位以及頻率的設置。其中振幅比例因子越大,輸出振幅越大。本系統中相位偏移字設置為0,即無相位偏移。頻率調諧字由以下公式計算得到:
得到頻率調諧字后轉化為對應字節數據發送到寄存器Profile0即可輸出所需要的頻率。需要說明的是,AD9910支持多種模式,由于其他模式未進行配置,在AD9910數據源優先級的機制下自動選擇有效的Profile寄存器。
3.2 按鍵與12864軟件設計
按鍵處理的特別之處在于采用一種新型按鍵掃描程序[9],無死循環延時等待機制。經過對該算法的研究,發現該算法可以同時適用分散引腳以及上拉、下拉兩種方式的按鍵,且支持長按模式。下面僅列出其核心算法:
12864LCD顯示的中英文字符點陣取自字庫芯片GT20L16S1Y,具體顯示時根據AD9910實時頻率以及編輯位置取相關字符點陣進行顯示。
4 實物系統驗證
基于上述硬件設計與軟件設計,設計出該信號源系統,為了驗證該信號源所產生的信號實際效果,通過示波器采集其輸出波形數據,其中示波器最大采樣率為1 GSa/s,帶寬為100 MHz。如圖7的50 MHz波形和圖8的100 MHz波形,輸出波形準確穩定,達到預期效果。
5 結論
本文通過對AD9910信號源實時顯示系統硬件設計與軟件設計的分析,設計出了準確穩定的信號源系統,并且方便調節和擴展,讀者可根據需要配置相關寄存器即可實現調幅、調相以及其他模式的波形輸出。本文在調試過程中進行過雙頻頻移鍵控的擴展,得到的效果很好。該系統實現的可調高頻信號源可以滿足大部分的工程應用,具有較高的實用價值。
參考文獻
[1] 曾興雯,劉乃安,陳建,等.高頻電子電路[M].北京:高等教育出版社,2009.
[2] 李俊,譚秋林,崔永俊,等.基于AD9910的高頻多模式信號發生器的設計[J].電視技術,2012,36(9):51-54.
[3] 孫偉超,汪定國,吳忠德.基于AD9910的調頻信號發生器設計[J].國外電子測量技術,2011,30(10):76-79.
[4] Analog Devices Inc.AD9910 datasheet[EB/OL].(2017-02-23)[2017-12-10].http://www.analog.com/media/en/tech-nical-do-cumentation/data-sheets/AD9910.pdf.
[5] 楊小勇,毛瑞娟,許林華.基于FPGA的AD9910控制設計[J].電子設計工程,2011,19(2):150-153.
[6] 黃智偉.鎖相環與頻率合成器電路設計[M].西安:西安電子科技大學出版社,2008.
[7] 時慧.基于AD9910的線性調頻信號發生技術[J].科技信息,2010(17):423-426.
[8] Analog Devices Inc.AD9910[EB/OL].[2017-12-10].http://www.analog.com/cn/products/rf-microwave/direct-digital-synthesis/ad9910.html#product-overview.
[9] LoriQian.新型的按鍵掃描程序[EB/OL].(2012-06-30)[2017-12-10].http://www.doc88.com/p-9992776518685.html.
作者信息:
張步高,馬希直
(南京航空航天大學 機電學院,江蘇 南京210016)