景標(biāo) 邢維巍 張燕琴
摘 要: 正交型數(shù)字鎖相放大器中正交信號(hào)參考源對(duì)于數(shù)字鎖相放大器的性能有著重要的影響,根據(jù)CORDIC算法在FPGA 上設(shè)計(jì)數(shù)字正交信號(hào)源,實(shí)現(xiàn)了直接數(shù)字頻率合成(DDS)技術(shù)中的相位/幅度轉(zhuǎn)換模塊,可輸出高精度的正交參考信號(hào),避免了用ROM實(shí)現(xiàn)相幅轉(zhuǎn)換時(shí)硬件開銷過大及處理速度受限制的問題。首先介紹了DDS的工作原理,同時(shí)對(duì)基于 CORDIC 算法的相幅變換方法進(jìn)行了詳細(xì)敘述,利用CORDIC算法計(jì)算正余弦值,最后對(duì)整體模塊進(jìn)行了仿真和實(shí)驗(yàn)測(cè)試,輸出中心頻率可調(diào)的正交信號(hào),實(shí)現(xiàn)了高精度的正交信號(hào)源。
關(guān)鍵詞: 正交信號(hào); FPGA; CORDIC; DDS
中圖分類號(hào): TN911.23?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2016)07?0057?03
Abstract: The quadrature signal reference source has the significant impact on the performance of the quadrature digital lock?in amplifier. According to CORDIC algorithm, the digital quadrature signal source was designed on FPGA. The phase/amplitude transformation module in DDS technology was realized, which can output the high precision quadrature reference signal, and solve the problems of large hardware cost and limited processing speed when ROM is used to realize phase/amplitude transformation. The DSS working principle is introduced. The phase/amplitude transformation method based on CORDIC algorithm is described in detail, in which the CORDIC algorithm is used to calculate the sine and cosine values. The simulation and experimental test for the entire module are conducted, it can output the quadrature signal with adjustable center frequency. The high precision quadrature signal source is realized.
Keywords: quadrature signal; FPGA; CORDIC; DDS
0 引 言
在微弱信號(hào)檢測(cè)領(lǐng)域,鎖相放大是微弱信號(hào)檢測(cè)的一種有效方法,數(shù)字鎖相放大器在科學(xué)研究和工程的各個(gè)領(lǐng)域都得到廣泛的應(yīng)用。而信號(hào)參考源的設(shè)計(jì)是數(shù)字鎖相放大器中的一項(xiàng)關(guān)鍵技術(shù)。高精度正交信號(hào)源產(chǎn)生兩路正交的正弦信號(hào),作為正交型數(shù)字鎖相放大器[1]的參考信號(hào)源,信號(hào)源的精度以及噪聲雜散程度對(duì)數(shù)字鎖相放大器的性能有很大的影響。
一般數(shù)字信號(hào)源的基本原理是利用ROM表查找法實(shí)現(xiàn)DDS技術(shù)[2]的相位/幅度轉(zhuǎn)換,用這種方法會(huì)造成相位截?cái)?,?duì)DDS產(chǎn)生波形的純度造成比較大的影響。而且因?yàn)镽OM的存儲(chǔ)能力比較有限,數(shù)據(jù)位數(shù)不夠深,在輸出的頻率信號(hào)的頻譜中,幅度量化的存在會(huì)引入新的雜散成份。而CORDIC[3]算法則能較好的解決傳統(tǒng)方法的問題。
1 CORDIC算法實(shí)現(xiàn)過程
CORDIC算法是由J.volder等人于1959年首次提出的,它是一種用來計(jì)算經(jīng)常使用的基本運(yùn)算函數(shù)(比如三角函數(shù))和算術(shù)操作的循環(huán)迭代算法,CORDIC算法幾乎沒有相位截?cái)?。其基本思想是用一系列只與運(yùn)算基數(shù)相關(guān)的角度的不斷偏擺從而逼近所需旋轉(zhuǎn)的角度[4]。
如果在使用CORDIC算法前先計(jì)算出系數(shù)[cosθn,]就可以通過預(yù)先存儲(chǔ)系數(shù)來實(shí)現(xiàn)在CORDIC計(jì)算中削去系數(shù),旋轉(zhuǎn)運(yùn)算就被簡化成簡單的加法和移位。
CORDIC算法是一種用于計(jì)算一些常用的基本運(yùn)算函數(shù)和算術(shù)操作的循環(huán)迭代算法。由于其用一系列與運(yùn)算基數(shù)相關(guān)的角度的不斷偏擺來逼近所需旋轉(zhuǎn)的角度,而這些固定的角度與計(jì)算基數(shù)有關(guān),運(yùn)算只有移位和加/減。若用傳統(tǒng)的乘、除等計(jì)算方法,需要占用大量的硬件資源,甚至算法是難以實(shí)現(xiàn)的。
CORDIC算法僅在硬件電路用到了移位和加減運(yùn)算,而移位和加減運(yùn)算正是FPGA的強(qiáng)項(xiàng),大大節(jié)約了硬件資源,使得這些算法在硬件上可以得到較好的實(shí)現(xiàn)。
2 正交信號(hào)源的設(shè)計(jì)
2.1 CORDIC基本單元設(shè)計(jì)
最底層部分是CORDIC算法基本單元,它代替了傳統(tǒng)DDS結(jié)構(gòu)中的ROM正弦表的核心基本單元,通過移位和加減運(yùn)算計(jì)算出正交信號(hào)對(duì)應(yīng)的正余弦值。CORDIC算法基本單元如圖3所示。
2.2 CORDIC流水線設(shè)計(jì)
考慮到FPGA硬件的特點(diǎn)以及算法的精度,CORDIC 算法的實(shí)現(xiàn)一般需要使用由多個(gè)算法基本單元組成的流水線結(jié)構(gòu)[6],CORDIC算法的精度受到流水線級(jí)數(shù)的影響,只有增加流水線級(jí)數(shù)才能提高算法的精度,而增加流水線級(jí)數(shù)之后速度也會(huì)相應(yīng)降低,因此必須選取合適的流水線級(jí)數(shù)。
在這里選擇16級(jí)的并行流水線結(jié)構(gòu)完成信號(hào)的相位幅度轉(zhuǎn)換。同時(shí)由于每次迭代計(jì)算都需要輸入旋轉(zhuǎn)角度的正切值,這里就直接在程序中預(yù)先存儲(chǔ)包含16個(gè)角度的正切值。16級(jí)流水線單元封裝后如圖4所示,僅僅保留了時(shí)鐘與相位輸入,正余弦輸出接口。
2.3 正交信號(hào)源總體設(shè)計(jì)
頂層設(shè)計(jì)以CORDIC流水線模塊為核心,以AD9767芯片為最終輸出端口,編寫AD9767驅(qū)動(dòng)模塊,在輸出之前加入了編碼轉(zhuǎn)換模塊,因?yàn)锳D9767以原碼輸入而DDS_CORDIC模塊以偏移二進(jìn)制碼分兩路分別輸出正弦與余弦信號(hào)的數(shù)字編碼,正交信號(hào)源總體設(shè)計(jì)如圖5所示。
3 仿真實(shí)驗(yàn)結(jié)果
在軟件設(shè)計(jì)完成后,在ModelSim中進(jìn)行了功能仿真[7],驗(yàn)證算法是否正確,如圖6所示。
在仿真通過后,需要在硬件電路中實(shí)現(xiàn)正交信號(hào)源的功能。設(shè)計(jì)輸出1 MHz的正交余弦信號(hào),以50 MHz頻率作為系統(tǒng)的時(shí)鐘基準(zhǔn),通過計(jì)算在Quartus Ⅱ中輸入頻率控制字,進(jìn)行編譯完成[8]。
下載編譯完成的程序到FPGA硬件電路中,將電路輸出到示波器中,得到FPGA硬件電路輸出波形如圖7所示。從圖7可以看到輸出的實(shí)際波形與理論相符合,在硬件上實(shí)現(xiàn)了正交信號(hào)源。
4 結(jié) 語
正交信號(hào)源在正交信號(hào)解調(diào)[9]以及數(shù)字鎖相放大器參考信號(hào)等方面具有非常實(shí)際的應(yīng)用需求,而CORDIC算法能夠解決ROM表的存儲(chǔ)容量限制給DDS性能提高帶來的瓶頸,提高DDS相位截?cái)嗪蟮谋A糇珠L,減小雜散噪聲。同時(shí)根據(jù)FPGA的特點(diǎn),采用流水線結(jié)構(gòu),保證了程序的運(yùn)行速度與精度。
本文在FPGA硬件平臺(tái)上實(shí)現(xiàn)了基于CORDIC算法的正交信號(hào)源,對(duì)于需要應(yīng)用正交信號(hào)源的地方具有較強(qiáng)的實(shí)用價(jià)值。
參考文獻(xiàn)
[1] 陳宇澤,邢維巍,樊尚春.基于DSP Builder的正交矢量型數(shù)字鎖相放大器實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2015,38(1):62?65.
[2] 王永,劉志強(qiáng),劉碩.DDS在任意波形發(fā)生器中的應(yīng)用[J].儀表技術(shù),2001(4):22?23.
[3] 胡國榮,孫允恭.CORDIC算法及其應(yīng)用[J].信號(hào)處理,1991(4):229?242.
[4] 鄭立崗,呂幼新,向敬成,等.一種基于CORDIC算法的數(shù)字鑒頻方法[J].信號(hào)處理,2003(1):6?10.
[5] 謝亮.基于FPGA的ROM數(shù)據(jù)定制的幾種方法[J].科技廣場(chǎng),2008(10):160?161.
[6] 李旭.基于FPGA的流水線技術(shù)應(yīng)用研究[J].電子測(cè)量技術(shù),2007(2):131?132.
[7] 李壽強(qiáng).MATLAB和ModelSim聯(lián)合仿真在FPGA開發(fā)中的應(yīng)用[J].電子制作,2013(12):77.
[8] 袁博,宋萬杰,吳順君.基于FPGA的MATLAB與QuartusⅡ聯(lián)合設(shè)計(jì)技術(shù)研究[J].電子工程師,2007(1):6?8.
[9] 周之麗,孟令軍,王曉丹,等.基于FPGA與Matlab的數(shù)字正交解調(diào)器的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2015(1):294?296.