閆溫合,胡永輝,李瑾琳,何在民,吳成英,趙坤娟
?
應用于數(shù)字下變頻中CORDIC算法的FPGA實現(xiàn)
閆溫合1,2,3,胡永輝1,2,李瑾琳4,何在民1,2,吳成英5,趙坤娟1,2,3
(1. 中國科學院國家授時中心,西安 710600;2. 中國科學院精密導航定位與定時技術重點實驗室,西安 710600; 3. 中國科學院大學,北京 100049;4. 湖北省電力公司信息通信分公司,武漢 430077;5. 湖北民族學院,恩施 445000)
正余弦信號在GNSS接收終端的數(shù)字下變頻中有著重要的應用,CORDIC算法是實現(xiàn)正余弦信號的最重要方法。立足于DDS與CORDIC算法的基本原理,針對CORDIC算法實現(xiàn)主要存在的3個問題,結合變象限法、流水線技術及相幅量化數(shù)據(jù)格式,在FPGA上通過實現(xiàn)CORDIC算法可在一個時鐘周期內計算出正余弦信號幅值。仿真結果表明:與傳統(tǒng)CORDIC算法實現(xiàn)相比,本文實現(xiàn)的正余弦信號精度高且速度快,并能滿足GNSS接收終端數(shù)字下變頻對正余弦信號的需求。
CORDIC算法;流水線結構;正余弦信號;數(shù)字下變頻(DDS)
在GNSS(global navigation satellite systems)接收終端中,數(shù)字下變頻器(digital down-converter,DDC)主要實現(xiàn)的功能是將A/D采樣后的數(shù)字信號從中頻信號變成基帶信號,它是用本地的同相載波和正交載波分別與接收中頻信號相乘,這樣可以剝離載波并在后續(xù)電路中差分解調時利用同相和正交2個分量消除相差的影響[1]。由于下變頻混頻器位于接收系統(tǒng)的前端,它的性能對整個接收系統(tǒng)的性能影響很大,所以需要快速和精準地進行正余弦函數(shù)的計算,傳統(tǒng)的乘、除等計算方法在FPGA中實現(xiàn)時需要占用大量的片內資源,并且三角函數(shù)的運算很難實現(xiàn)。早期的硬件實現(xiàn)方法是采用查表法,多項式展開或近似的方法,這些方法在速度、精度、資源方面不能很好兼顧。CORDIC(the coordinate rotational digital computer)算法是J. E. Volder于1959年在美國航空控制系統(tǒng)的設計中提出的一種用于計算一些常用的基本運算函數(shù)和算術操作的循環(huán)迭代算法[2]。1971年J. S. Walther 提出改進的統(tǒng)一CORDIC算法[3],他把圓周運算、雙曲旋轉和直線旋轉統(tǒng)一到一個CORDIC迭代方程里,為統(tǒng)一的硬件實現(xiàn)提供了理論基礎。該方法是用一系列與運算基數(shù)相關的角度不斷偏擺從而逼近所需旋轉的角度,從廣義上講它是一個數(shù)值性計算逼近的方法,由于這些固定的角度與計算基數(shù)有關,運算只有移位和加減。與傳統(tǒng)的查表法相比,CORDIC實現(xiàn)節(jié)約了大量的ROM資源,可以滿足GNSS接收終端數(shù)字下變頻對正余弦信號產生精度和速度的需求。
直接數(shù)字頻率合成技術(direct digital synthesis,DDS)是美國學者J. Tierney,C. M. Resder和B. Gold于1973年首先在論文《A Digital Frequency Synthesizer》中提出的。與其他的頻率合成技術相比較,這種方法具有輸出頻率可調、頻率切換時間短、輸出相位連續(xù)、分辨率高、相對帶寬寬和易于調制等許多優(yōu)點[4],傳統(tǒng)的基于查表法的DDS典型結構如圖1所示,由圖1可見DDS主要包含以下單元:相位累加器、正弦查表RAM、D/A轉換器以及一個低通濾波器。
圖1 傳統(tǒng)的DDS工作原理
傳統(tǒng)的DDS實現(xiàn)簡單,但是隨著精度的提高,F(xiàn)PGA實現(xiàn)時RAM模塊占用存儲器單元呈指數(shù)增長,這不僅使設計對硬件資源的要求過高,而且降低了系統(tǒng)的處理速度,因而不能滿足節(jié)省資源的要求。
圖2 CORDIC算法原理示意圖
由式(7)可知,是一個增益因子,實現(xiàn)的時候可以單獨處理,而無需每一次運算時都重新計算,具體的作法是將增益存儲在ROM中,需要用到的時候查表即可,于是可以得到組合迭代方程為
于是經過次迭代之后,CORDIC輸出變?yōu)?/p>
從以上的分析可以看出,CORDIC算法在圓周系統(tǒng)的旋轉模式下可以用來計算一個輸入角的正弦、余弦和正切。
現(xiàn)場可編程邏輯器件(FPGA)是在專用集成電路(ASIC)的基礎上發(fā)展起來的一種新型邏輯器件,其特點是用戶可以完全通過軟件進行配置和編程,完成某特定的功能,并且它可以反復擦寫[6]。在本設計中選用的FPGA芯片是Altera公司開發(fā)的CyclonII系列中的EP2C70F896C6器件,使用Verilog語言完成電路描述,在QuartusII11.1軟件平臺上進行編譯,仿真部分使用Model公司的硬件仿真工具Modelsim6.5b。
CORDIC算法的FPGA設計主要存在3個問題[7]。1)旋轉角度覆蓋范圍為
因此只能達到[-99.88°,+99.88°],無法覆蓋整個周期;2)CORDIC算法在一次角度運算中必須使用多次迭代,而每次迭代方向都必須根據(jù)上一次迭代的結果確定,即每次迭代必須在上次完成以后進行,從而導致速度減慢;3)數(shù)據(jù)格式問題,包括角度和計算數(shù)值的數(shù)據(jù)格式。
綜合考慮上面提到的問題,在FPGA設計中本文采用變象限法,單步流水線技術和相幅量化數(shù)據(jù)格式這3種技術,圖3為CORDIC算法相/幅轉化原理框圖。
圖3 CORDIC算法相幅轉換原理圖
CORDIC算法的基本原理是:通過相位累加器輸入一個16 bits的二進制數(shù),取其中高2位用來分辨收到相位所在的象限,隨后分別將高2位發(fā)送給前處理單元和延遲單元,前處理單元根據(jù)接收到的數(shù)據(jù)進行處理,處理結果送入CORDIC算法單元,即流水線結構。延遲單元和CORDIC算法單元同步輸出結果,保存輸入數(shù)據(jù)高2位用于恢復結果到原來象限,并輸出結果。
1)前處理單元基本原理
前處理單元是負責將相位值變換到第1象限并把高2位送入延遲單元,并送入CORDIC算法模塊進行迭代計算。
①當高2位為“00”時,輸入相位為第1象限,相位值不變,直接傳給CORDIC模塊;
②當高2位為“01”時,輸入相位為第2象限,相位值減去16d16384(90°),同時傳給CORDIC模塊;
③當高2位為“10”時,輸入相位為第3象限,相位值減去16d32768(180°),接著傳給CORDIC模塊;
④當高2位為“11”時,輸入相位為第4象限,相位值減去16d49152(270°),同樣傳給CORDIC模塊。
2)后處理單元基本原理
①當接收到的高2位是“00”,表示第1象限,輸出的正余弦值都不變:
②當接收到的高2位是“01”,表示第2象限,輸出結果做如下變換:
③當接收到的高2位是“10”,表示第3象限,輸出結果做如下變換:
④當接收到的高2位是“11”,表示第4象限,輸出結果做如下變換:
3)CORDIC算法流水線結構
圖4 n級CORDIC算法流水線結構
從以上分析可知,運用流水線結構可以大大提高算法的實時性,其在處理速度上的優(yōu)勢是CORDIC算法用移位和加法代替乘法運算產生的。本設計采用的是16級流水線結構,只需等待16個時鐘周期后就開始輸出有效運算結果值,且在其后的每個時鐘周期都會輸出一個結果值,大大地提高了運算的效率。圖5所示的是使用QuartusⅡ11.1實現(xiàn)的部分RTL級結構(包括2次迭代結構Cordic_interation[])。
圖5 FPGA實現(xiàn)的部分RTL級結構
下面2圖是仿真產生的一個角度輸出結果(圖6)和正余弦結果(圖7),其中輸入時鐘_Clk頻率為100 MHz,輸出正余弦頻率為1 MHz,Accum_Reg是頻率控制字FCW,sin和cos為輸出正余弦信號。
圖6 仿真輸入一個角度輸入結果
圖7 仿真得到的正余弦結果
由以上仿真結果可知,CORDIC運算模塊是經過16個周期延遲后開始連續(xù)地輸出正弦結果,其與實際計算的正余弦值誤差分析見表1。
表1 結果誤差
表1表明,由這些具有代表性的仿真結果來看,實際值與理論值存在一定的偏差,但輸入角度在一定范圍內正弦函數(shù)的絕對誤差很小,其精度非常高,而且可以隨著結果位數(shù)的增加無限接近真實值,因此可以滿足GNSS接收終端數(shù)字下變頻的要求[10]。
本文簡單介紹了傳統(tǒng)DDS系統(tǒng)的原理與結構和應用廣泛的CORDIC算法,并結合變象限法、流水線技術及相幅量化數(shù)據(jù)格式針對CORDIC算法實現(xiàn)了正余弦信號的硬件設計,并能夠在1個時鐘周期內連續(xù)計算出函數(shù)值,通過對仿真結果分析可以得到所要求頻率的正余弦波形,結果表明速度和精度都符合數(shù)字下變頻對正余弦的要求,并且這個結構可以在現(xiàn)代電子系統(tǒng)設備及頻率源設計中使用,具有較廣泛的應用價值。
[1] 謝崗. GPS原理與接收機設計[M]. 北京: 電子工業(yè)出版社, 2009: 181-286 .
[2] VOLDER J E, CONVAER A D, FORT W. The CORDIC trigonometric computing technique[J]. IEEE Transactions on Electronic Computers, 1959, 8(3): 334-334.
[3] WALTHER J S, PALO ALTO. A unified algorithm for elementary functions[J]. Spring Joint Computer Conference, 1971: 379-385.
[4] 李俊, 張曉東. 基于VB的串行通信在控制系統(tǒng)中的應用[J]. 機械電子, 2008, (10): 29-31, 32.
[5] 高澤溪, 高成. 直接數(shù)字頻率合成器(DDS)及其性能分析[J]. 北京航空航天大學學報, 1998, 24(5): 615-618.
[6] 張正, 董少武, 張敏. 一種基于FPGA的多種波形發(fā)生器的設計[J]. 時間頻率學報, 2008, 31(2): 133-137.
[7] 姚亞峰, 付東兵, 楊曉非. 高速CORDIC 算法的電路設計與實現(xiàn)[J]. 半導體技術, 2008, 33(4): 346-348.
[8] 耿丹. CORDIC算法研究與實現(xiàn)[J]. 遙測遙控, 2007, 28(S1): 39-42.
[9] 楊宏, 李國輝, 劉立新. 基于FPGA的CORDIC算法的實現(xiàn)[J]. 西安郵電學院學報, 2008, 13(1): 75-77.
[10] 何在民, 胡永輝, 武建鋒. BPSK-R信號與BOC信號碼跟蹤性能分析及比較[J]. 時間頻率學報, 2012, 35(2): 112-119.
FPGA implementation of CORDIC algorithm applied to digital down conversion
YAN Wen-he1,2,3, HU Yong-hui1,2, LI Jin-lin4, HE Zai-min1,2, WU Cheng-ying5, ZHAO Kun-juan1,2,3
(1. National Time Service Center, Chinese Academy of Sciences, Xi′an 710600, China;2. Key Laboratory of Precision Navigation and Timing Technology, National Time Service Center,Chinese Academy of Science, Xi′an 710600, China;3. University of Chinese Academy of Sciences, Beijing 100049, China;4.Information and Communication Branch of Hubei Electric Power Company, Wuhan 430077, China;5. Hubei University for Nationalities, Enshi 445000, China)
The sine and cosine signals are used in digital down conversion of GNSS receiver with important sense and the CORDIC algorithm is the most important way to implement the sine and cosine signals. According to the basic principle of DDS and CORDIC algorithm, aiming at the three existing problems in implementation of CORDIC algorithm, and combining the variable quadrant method, pipeline structure technique and phase/ amplitude quantization data format, we have realized the CORDIC algorithm with FPGA and thus the amplitude values of sine and cosine signals can be calculated in one clock cycle. The simulation results show that compared with the traditional CORDIC algorithm implementation the implementation presented in this paper is characteristic of a higher accuracy of the sine and cosine signals and a higher speed, meeting the needs of the digital down conversion of GNSS receiving terminal.
CORDIC algorithm; pipeline structure; sine and cosine signals; DDS(digital down-conversion)
P127.1
A
1674-0637(2014)01-0034-07
2013-03-08
中國科學院“西部之光”人才培養(yǎng)計劃“西部博士資助項目”(Y307YR6601)
閆溫合,男,碩士研究生,主要從事衛(wèi)星導航定位與時間同步研究。