<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于AD9361的簡(jiǎn)易頻譜分析儀設(shè)計(jì)與實(shí)現(xiàn)

          基于AD9361的簡(jiǎn)易頻譜分析儀設(shè)計(jì)與實(shí)現(xiàn)

          作者:王勇 時(shí)間:2016-08-29 來(lái)源:電子產(chǎn)品世界 收藏
          編者按:頻譜分析儀是用來(lái)檢測(cè)電信號(hào)頻譜特征的儀器,在通信、雷達(dá)以及電子產(chǎn)品研發(fā)等領(lǐng)域有著廣泛的應(yīng)用。本文設(shè)計(jì)了基于ZYNQ系列SoC(System on chip)和AD9361實(shí)現(xiàn)的簡(jiǎn)易頻譜分析儀,頻譜數(shù)據(jù)可以通過(guò)串口發(fā)送給上位機(jī),并在上位機(jī)中通過(guò)MATLAB進(jìn)行數(shù)據(jù)處理和分析。相比普通頻譜分析儀,該簡(jiǎn)易頻譜分析儀使用便捷,體積小,且十分便于功能擴(kuò)展。經(jīng)測(cè)試,該頻譜分析儀帶寬為40MHz,其通帶范圍為L(zhǎng)O(Local Oscillator )-20MHz到LO+20MHz,該頻譜分析儀可以較為準(zhǔn)確地分析信號(hào)功率

            地址0x005為的RFPLL Dividers寄存器,可以配置該寄存器的值,對(duì)VCO進(jìn)行分頻,得到接收通路的LO頻率信息。

          本文引用地址:http://www.ex-cimer.com/article/201608/296189.htm

          (1)

            地址0x012為的 Parallel Port Configuration寄存器,可以配置數(shù)字接口的方式,本設(shè)計(jì)中,采用LVDS的雙端口模式,因此,這里設(shè)置該寄存器的值為0x10。

            地址0x013為AD9361的ENSM Mode寄存器,可以通過(guò)配置該寄存器AD9361的FDD狀態(tài)機(jī)和TDD狀態(tài)機(jī)之間的轉(zhuǎn)換。本設(shè)計(jì)中,采用FDD模式,因此設(shè)該寄存器的值為0x01。

            AD9361的VCO頻率相關(guān)寄存器地址為0x231~0x235,該組寄存器設(shè)置的VCO值可以為6GHz~12GHz,經(jīng)過(guò)0x005寄存器所設(shè)置的值進(jìn)行分頻后,作為AD9361 RX的LO。其計(jì)算公式為:

          (2)

          (3)

            此外,ADI公司提供了基于Xilinx SDK的AD9361控制函數(shù),可以使用這些函數(shù)對(duì)AD9361進(jìn)行配置,這樣可以簡(jiǎn)化AD9361的配置過(guò)程,提高工作效率,并提高配置的準(zhǔn)確性。

          2.2 PS與AD9361的通信

             PS與AD9361采用SPI和GPIO接口進(jìn)行通信。內(nèi)包含兩個(gè)SPI控制器,可以工作在主/從模式或多主機(jī)模式下。本次設(shè)計(jì)采用ZYNQ PS中的一組SPI控制器對(duì)AD9361的相關(guān)寄存器進(jìn)行讀寫(xiě)。在ZYNQ上,我們可以通過(guò)MIO引出最多54個(gè)GPIO引腳,所有的GPIO都可以單獨(dú)配置成輸入、輸出以及中斷的功能。本設(shè)計(jì)中,采用GPIO對(duì)AD9361的TXNRX、ENABLE以及RESETB引腳進(jìn)行配置,以達(dá)到對(duì)AD9361控制的目的。

          2.3 基于ZYNQ PL的頻譜分析模塊

            頻譜分析模塊主要由時(shí)序處理模塊、加窗模塊、FFT模塊及DMA模塊完成,F(xiàn)FT的點(diǎn)數(shù)由ZYNQ PS部分通過(guò)AXI_GPIO模塊控制,圖3為ZYNQ PL頻譜分析部分的框圖。

            數(shù)字信號(hào)輸入為模擬信號(hào),經(jīng)過(guò)射頻輸入及轉(zhuǎn)換模塊后得到的數(shù)字信號(hào),該數(shù)字信號(hào)的采樣率為60MSPS,由LVDS方式通過(guò)FMC接口輸入至該模塊輸入端。

            時(shí)序處理模塊將PL中相關(guān)模塊的時(shí)序和AD9361收發(fā)機(jī)的數(shù)字接口時(shí)序進(jìn)行相互轉(zhuǎn)換,使其頻譜分析模塊可以正常工作。

            由于在使用FPGA進(jìn)行信號(hào)處理中,不可能對(duì)無(wú)限長(zhǎng)的信號(hào)進(jìn)行測(cè)量和分析,只能對(duì)信號(hào)進(jìn)行截?cái)啵?duì)截?cái)嗖糠诌M(jìn)行周期拓展并進(jìn)行處理。但這樣得到的信號(hào)會(huì)發(fā)生頻譜泄露現(xiàn)象。為了減小頻譜泄露的影響,需在計(jì)算FFT變換之前采用加窗技術(shù),常見(jiàn)的窗有:hanning窗、hamming窗以及Gaussian窗等。本設(shè)計(jì)采用8192點(diǎn)的hanning窗,以減少由于信號(hào)截?cái)嗨鶐?lái)的頻譜泄露現(xiàn)象。

            FFT模塊對(duì)輸入的數(shù)據(jù)進(jìn)行FFT或IFFT變換,得到時(shí)域數(shù)據(jù)的頻譜信息或頻域數(shù)據(jù)的時(shí)域信息。其中FFT模塊的計(jì)算點(diǎn)數(shù)為8~8192點(diǎn),F(xiàn)FT模塊使用Xilinx官方提供的IP 核。

            ZYNQ PS模塊為頻譜分析模塊提供控制信息,并接收由AXI_DMA傳輸?shù)念l譜數(shù)據(jù)。ZYNQ PS與AXI_GPIO通過(guò)AXI4協(xié)議進(jìn)行數(shù)據(jù)傳輸,與AXI_DMA通過(guò)AXI_Lite協(xié)議進(jìn)行控制信號(hào)傳輸。FFT與DMA之間使用AXI_Stream協(xié)議進(jìn)行數(shù)據(jù)傳輸。

            DMA與ZYNQ PS HP接口之間通過(guò)AXI協(xié)議進(jìn)行傳輸,這樣可以擁有很高的吞吐率和性能,但需要花費(fèi)額外的邏輯資源。

          2.4 ZYNQ與PC通信

            為了更方便地進(jìn)行頻譜分析以及對(duì)的控制,設(shè)計(jì)參考文獻(xiàn)[7]采用串口方式將得到的頻譜分析數(shù)據(jù)發(fā)送到PC端,頻譜分析首先數(shù)據(jù)經(jīng)過(guò)DMA傳輸?shù)絇S的內(nèi)存中,然后通過(guò)串口將數(shù)據(jù)發(fā)送到PC端。串口速率傳輸較慢,F(xiàn)FT轉(zhuǎn)換并不是持續(xù)轉(zhuǎn)換,一次轉(zhuǎn)換數(shù)據(jù)全部通過(guò)串口發(fā)送完畢后,再進(jìn)行下一次轉(zhuǎn)換。

          3 系統(tǒng)測(cè)試

            為了方便觀察結(jié)果,我們?cè)诠こ讨屑尤肓薎LA模塊監(jiān)視AD采集到的數(shù)據(jù),如圖4所示,在Vivado中的Hardware Manager中抓取的AD輸入數(shù)據(jù),圖5為串口收到對(duì)應(yīng)FFT后的數(shù)據(jù)。

            將AD9361的本振設(shè)置為1.9GHz,外接信號(hào)源設(shè)置為1.902GHz,且頻率為-50dBm,得到的頻譜數(shù)據(jù)經(jīng)過(guò)上位機(jī)處理后得出圖6所示的結(jié)果,其中MATLAB所計(jì)算出來(lái)的2MHz的功率值為-49.7101dBm。

            表1為利用該測(cè)試的一些數(shù)據(jù),測(cè)試時(shí)本振設(shè)置為1.9GHz。

            測(cè)試結(jié)果表明,該通帶范圍為L(zhǎng)O-20MHz到LO+20MHz,在該通帶范圍內(nèi)可以較為準(zhǔn)確地分析的信號(hào)功率為0dBm到-65dBm,平均誤差小于1.5dB。當(dāng)信號(hào)源頻率與LO頻率相差為20MHz時(shí),絕對(duì)誤差約為1dB左右。經(jīng)過(guò)分析,是AD9361內(nèi)部的模擬低通濾波器部分對(duì)信號(hào)造成了消減,因此產(chǎn)生了誤差。

          4 總結(jié)與展望

            論文采用ZedBoard平臺(tái)以及AD9361射頻收發(fā)機(jī)設(shè)計(jì)并實(shí)現(xiàn)了一款簡(jiǎn)易頻譜分析儀,該頻譜分析儀核心部件為AD9361和ZedBoard,外加一臺(tái)電腦,成本低廉,方便可靠,成品作為個(gè)人或小型團(tuán)隊(duì)使用。如果對(duì)傳輸速率有更高的要求,可以利用ZedBoard的網(wǎng)口將頻譜分析后的數(shù)據(jù)傳送到PC端。

          參考文獻(xiàn):

            [1]Harikrishnan B, Raghul R, Shibu R M, et al. All programmable based standalone SDR platform for researchers and academia[C]// Computational Systems and Communications (ICCSC), 2014 First International Conference on. IEEE, 2014:384 - 386.

            [2]陸佳華, 江舟, 馬岷. 嵌入式系統(tǒng)軟硬件協(xié)同設(shè)計(jì)實(shí)戰(zhàn)指南:基于Xilinx Zynq[M]. 北京:機(jī)械工業(yè)出版社, 2013.

            [3]Analog Devices, Inc. RF Agile Transceiver AD9361 Data Sheet[EB/OL]. http://www.analog.com/media/en/technical-documentation/data-sheets/AD9361.pdf.

            [4]Analog,Devices.AD-FMCOMMS3-EBZ-UserGuide[EB/OL].http://wiki.analog.com/resources/eval/user-guides/ad-fmcomms3-ebz.

            [5]孟憲元. Xilinx新一代FPGA設(shè)計(jì)套件Vivado應(yīng)用指南[M]. 清華大學(xué)出版社, 2014.

            [6]Louise, H. Crockett, Ross, A. Elliot, Martin, A. Enderwitz, Robert, W. Stewart. The Zynq Book Tutorials[J/OL]. http://www.zynqbook.com/downloads.html.

            [7]夏柯, 門(mén)蘭寧. 基于ZYNQ-7000 DMA控制器的UART數(shù)據(jù)傳輸?shù)脑O(shè)計(jì)與實(shí)現(xiàn)[J]. 信息系統(tǒng)工程, 2014, (9):113-114.

          本文來(lái)源于中國(guó)科技期刊《電子產(chǎn)品世界》2016年第8期第49頁(yè),歡迎您寫(xiě)論文時(shí)引用,并注明出處


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: 頻譜分析儀 AD9361 ZYNQ SOC 201609

          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();