劉 剛,蔣偉進,董 胡,鐘新躍
(1.長沙師范學院 信息與工程系,湖南 長沙410100;2.湖南商學院 計算機與信息工程學院,湖南 長沙 410205)
數字下變頻中基于CORDIC算法的NCO設計
劉 剛1,蔣偉進2,董 胡1,鐘新躍1
(1.長沙師范學院 信息與工程系,湖南 長沙410100;2.湖南商學院 計算機與信息工程學院,湖南 長沙 410205)
在數字下變頻中傳統數字控制振蕩器(Numerically Controlled Oscillator,NCO)模塊都是基于查找表結構的,該結構在FPGA內部實現需要占用大量ROM資源,針對這一問題,提出采用坐標旋轉數字計算(Coordinate Rotation Digital Computer,CORDIC)算法進行NCO設計,相比傳統的NCO設計,該方法具有輸出信號頻譜純度高、能夠直接混頻而不需要乘法器等優點。設計中采用變象限映射方法解決CORDIC算法無法全周期覆蓋的問題,采用流水線技術解決串行迭代帶來難以實時輸出的問題。經過Modelsim仿真分析,實際輸出值與理論值之間的相對誤差在10-4~10-5數量級范圍內,滿足數字下變頻中NCO的性能需要。
數字下變頻;坐標旋轉數字計算方法;流水線;數字控制振蕩器;現場可編程門陣列
在軟件無線電接收機中,數字下變頻器是把ADC數字化后的高速數字中頻信號變為低速的基帶信號,便于后續的相關處理。數字下變頻器在這里起到前端ADC和后端通用DSP器件之間的橋梁作用,其性能的優劣會對整個軟件無線電系統的性能產生直接的影響[1]。因此,數字下變頻技術成為軟件無線電接收機的關鍵技術之一,成為制約軟件無線電性能的重要器件之一[1]。文獻[2-3]中采用基于多相濾波結構來設計實現數字下變頻器,雖然在一定程度上能夠節省FPGA內部資源和實現高速數據流下數字下變頻,但在性能上還有較大的提升空間,因為只有改進和優化數字下變頻中NCO這一核心模塊才能大幅度提高數字下變頻的性能。傳統的數字下變頻的NCO是基于查找表的形式實現的[4],這種方法雖然在FPGA內部實現起來方便簡單,但同時也存在占用大量ROM資源,需要復雜的乘法計算,以及輸出信號頻譜雜散較大而導致的精度不高等缺點。而基于CORDIC算法實現的NCO就能很好地克服上述缺點[5-6],因此本文重點研究應用于數字下變頻的CORDIC算法的設計與實現。
綜上,現階段我國體育旅游產業市場有著巨大潛力,對體育旅游專業方向的復合應用型人才有相當大的需求。為滿足龐大的市場人才需求,體育旅游專業人才的培養成為我國體育旅游產業可持續發展不容忽視的課題。
1.1 數字下變頻結構
開溝誘筍。第1次翻耕后,沿林地水平帶開溝,溝寬50 cm、深30 cm,于溝中填埋林下剩余物粉碎料,然后覆土。目的是利用有機質廢料的保濕、透氣等特點,誘導竹鞭,促其筍芽萌發生長。兩溝間隔以120~150 cm為宜。
數字下變頻采用的結構如圖1所示,該結構由混頻模塊和抽取濾波模塊組成?;祛l模塊實現的功能是把數控振蕩器NCO產生的正余弦本振信號分別與采樣信號相乘實現混頻,產生I和Q兩路信號[7]。抽取濾波模塊實現的功能是首先把混頻后的信號進行抽取降速處理,然后通過低通濾波器濾除無用的諧波分量,得到I和Q兩路數字基帶信號[8]。數字下變頻就是基于這種方式來完成對數字信號的降頻處理。

圖1 數字下變頻結構
從式(6)可以看出,每一次旋轉實現只需進行簡單的移位和相加操作,易于在FPGA內部實現。為了便于追蹤累加旋轉角度,引入角度累加器方程:
CORDIC算法原理如圖2所示。

圖2 CORDIC算法原理
設有一個向量A(x0,y0)經逆時針旋轉角度θ得到向量B(x1,y1),根據極坐標變換規則可得[9]:
(1)
旋轉角度θ也可以通過經過多次旋轉小角度θn而得,則單次旋轉變化表達式為:
在這股全民P圖的浪潮中,可以看到,個體在參與該事件的過程中,完全是以一種消遣性的態度來主導政治事件的走向。而個體對政治事件的消遣性行為,消費了該事件的政治性,使得事件走向了娛樂化。無獨有偶,會理縣人民政府居然利用“懸浮照”事件,順勢推廣了縣里的旅游業,反過來消費了網民。在消費主義思潮影響下,個體和組織以消遣性態度參與政治活動,將政治事件推向了娛樂化的軌道。
(2)
由于CORDIC算法是進行多次迭代運算來完成相幅轉換的,且下一次迭代旋轉方向需根據上一次迭代后的剩余旋轉角度值來進行判斷,所以在數字下變頻中高精度NCO要求下的CORDIC算法的多次迭代會導致難以實時輸出[15]。為此本設計根據數字下變頻的需要采用流水線技術來解決上述問題。它使得每個迭代運算單元在一個時鐘周期內并行工作,雖然經過n個時鐘周期才有第一個計算值輸出[16],但后面所有的計算值都只需要一個時鐘周期輸出,相比沒有采用流水線技術的CORDIC算法在計算速度上提高了n倍[17]。
(3)
為了便于硬件實現,令θn=arctan(2-n),則式(3)可變為:
(4)
由于經過N次小角度旋轉,角度θ與單次旋轉角度θ執行結果一樣,所以利用式(4),式(1)也可等價為:
(5)

(6)
1.2 CORDIC算法的基本原理
zn+1=zn-δnθn。
(7)
當初值(x0,y0,z0)分別對應于(K,0,θ)時,經過n次迭代旋轉后,角度累加器zn+1趨于0時,對應的xn,yn就分別為cosθ和sinθ。CORDIC算法就是通過這種方式來完成正余弦計算的。
1.3 NCO基本原理
基于CORDIC算法的NCO結構如圖3所示,其主要思想是通過不斷周期性地相幅轉換來實現正余弦信號的,輸入的頻率控制字和相位控制字分別控制相位增量和初始相位,從而起到控制輸出信號的頻率和初相位的作用[11]。
賦礦層礁灰巖礁灰巖存在許多孔隙,如沉積物原生孔洞(隙)、砂(礫)之間空隙、巖石(層)之間差異收縮裂(空)隙、層間裂隙等,這些孔洞(隙)成為儲礦空間含礦。
1.2.1 一般治療 予嚴格單間隔離、心電監護、持續鼻導管吸氧、物理降溫及營養支持,烏司他丁減輕炎癥反應,丙種球蛋白增加抵抗力,喜炎平注射液及連花清瘟膠囊清熱解毒;并加用莫西沙星抗細菌治療,療程6 d;因1,3-β-D葡聚糖檢測試驗(G試驗)陽性,加用伏立康唑抗真菌治療,療程9 d。

圖3 基于CORDIC算法的NCO結構
基于CORDIC算法的NCO與傳統的NCO在結構上類似,主要區別是前者通過移位相加的方式進行相幅轉化計算,而后者是把相位累加器輸出的實時相位作為查找表的地址,而查找表中對應地址的內存單元儲存值就是該相位對應的正余弦幅度值,是通過不斷向查找表取值輸出來完成相幅轉換的。采用CORDIC算法來完成數字下變頻中的NCO模塊相比于基于查找表的NCO,除了前面提及的優點外,它還能在CORDIC模塊內與接收的輸入信號x(n)直接相乘,這樣使得其在完成NCO的同時完成了混頻的功能[13]。

(8)
式中,f0為系統輸出頻率;FW為頻率控制字的值;N為頻率控制字的二進制位寬;fs為系統的工作頻率。
NCO輸出的頻率與頻率控制字之間的關系為[12]:
回到家里,一股無名火就上來了,其實也就是一種怨氣。下面是空的,難道上面還不許往里塞東西嗎?她就大嚼了一頓黃瓜,還啃了一堆野桃子,脖子一伸一縮的,被撐得不能動彈了。紅琴仰面躺在木床上,屋子里異常地靜謐,一只烏鴉在門口的樹枝上棲息著,聒噪了兩聲,忽然展翅飛走了。它飛了一陣子,又落到了遠處的田塍上。空曠的田野上,稻子剛剛收割掉,偶爾也有幾只青蛙不甘寂寞地叫兩聲,打破這鄉野獨有的恬靜。
表1 CORDIC算法輸出端的象限映射表

最高兩位所處象限映射后角度值?正弦輸出值余弦輸出值001θcos?sin?012θ-90°-sin?cos?103θ-180°-cos?-sin?114θ-270°sin?-cos?
式中,δn為單次旋轉方向,當逆時針旋轉時,δn=1;當順時針旋轉時,δn=0。提取cosθn,式(2)也可寫為[10]:
設計采用Altera的CycloneII系列EP2C8Q208C8芯片完成設計,通過編譯后進行仿真測試,仿真結果如圖4所示。

圖4 Modelsim仿真結果
從圖4可以看出,本設計能夠實時輸出2路正余弦信號,且可通過改變頻率控制字來控制輸出信號的頻率。該仿真前面4個頻率控制字分別為h0080、h0100、h0180和h0200,當系統工作時鐘為100 MHz時,其輸出信號頻率分別對應為195.312 5 kHz、390.625 kHz、585.937 5 kHz和781.25 kHz。相幅轉換的實際值和理論值的對應關系如表2所示[7]。
表2 輸出的實際值和理論值的比較

輸入角度/(°)余弦實際值余弦理論值相對誤差3056754567563.524×10-54546336463411.079×10-4200-61582-615843.248×10-5260-11373-113806.151×10-432050209502031.195×10-4
從表2中比較分析看出,輸出結果與理論值之間相對誤差在10-4~10-5數量級范圍內,基本上滿足數字下變頻模塊中的NCO的需要。
本文采用基于CORDIC算法在FPGA內部設計實現數字下變頻中的NCO模塊,通過對CORDIC算法理論分析,采用變象限和流水線方法對其進行優化改進,并運用Verilog語言在FPGA內部實現。通過對該設計進行Modelsim仿真分析,其結果滿足設計需要,解決了傳統基于查找表結構的NCO在FPGA內部占用大量的ROM資源的問題,并具有較高的精度和速度。
“啊,嘴巴再張大一點……”醫生檢查完妍妍的扁桃體,又拿起聽診器,仔細地聽了又聽。妍妍一聲不響,乖巧地聽醫生指揮。收起聽診器,醫生一邊拿起筆飛快地在病歷卡上寫診斷書,一邊慢悠悠地抬起頭,對妍妍說:“小朋友,以后要多吃米飯,多吃水果和蔬菜,這樣你才會長得更高!”頓了頓,然后又說,“不用開藥?!卞牬罅搜劬?,不可思議地看著醫生。
[1] 李漢波.基于FPGA平臺數字信道化接收機的開發與研制[D].西安:西安電子科技大學,2009.
[2] 陶杰,李駿,張水興,等.DMR系統中數字下變頻技術分析[J].無線電工程,2014,44(8):34-37.
[3] 劉二平,劉曉杰.基于多相濾波的高效數字下變頻設計[J].無線電工程,2016,46(8):23-26.
[4] 楊豪,顏青,馬舜堯.基于進位鏈優化方法的高速NCO設計[J].無線電工程,2014,44(1):72-74,80.
[5] 王頂,劉太君,葉焱.基于改進CORDIC算法的數字預失真實現[J].無線電通信技術,2014,40(3):68-71.
[6] 顧明超,李倩.寬帶數字下變頻器的FPGA實現[J].無線電通信技術,2014,40(5):69-72.
[7] 郭勇,梅大成,邢丹.基于CORDIC算法數字下變頻器設計[J].計算機與信息技術,2007(11):15-18.
[8] 許彥輝,年夫順,許建華,等.基于CORDIC算法實現數字下變頻[J].信息系統工程,2011(4):15-18.
[9] 祁艷杰,劉章發.基于Parallel_CORDIC的高精度高速度直接數字頻率合成器的FPGA實現[J].電子學報,2014,42(7):1392-1397.
[10] 張朝柱,韓吉南,燕慧智.高速高精度固定角度旋轉CORDIC算法的設計與實現[J].電子學報,2016,44(2):485-490.
[11] 侯武威,袁安民,趙穎輝.基于CORDIC算法的數字下變頻技術設計與實現[J].電子設計工程,2012,20(9):35-37.
[12] 閆溫合,胡永輝,李瑾琳,等.應用于數字下變頻中CORDIC算法的FPGA實現[J].時間頻率學報,2014,37(1):34-40.
[13] 郭連平,田書林,王志剛,等.并行數字下變頻中的NCO實現研究[J].儀器儀表學報,2012,33(5):998-1004.
[14] 任小西,沈建龍.低時延-消耗的CORDIC算法及結構的研究[J].計算機科學,2014,41(8):25-29.
[15] 吉煒寰,鄒玉煒,黃磊.基于全流程并行加速的改進數字下變頻器設計[J].電子器件,2017,40(1):142-146.
[16] 謝建華,阮圓,孫鋒.基于CORDIC算法的流水線型DDS設計[J].微計算機信息,2008,(29):286-287.
[17] 王佳琪,熊先越.基于FPGA的流水線CORDIC算法的DDFS設計[J].光通信技術,2012,36(4):61-62.
DesignofNCOBasedonCORDICAlgorithminDigitalDown-conversion
LIU Gang1,JIANG Wei-jin2,DONG Hu1,ZHONG Xin-yue1
(1.DepartmentofInformationandEngineering,ChangshaNormalUniversity,ChangshaHu’nan410100,China; 2.CollegeofComputerandInformationEngineering,HUNANUniversityofCommerce,ChangshaHu’nan410205,China)
In digital down conversion,the traditional NCO module is based on look-up table structure,which takes up a large amount of ROM resources in FPGA.In order to solve this problem,this paper uses the Coordinate Rotation Digital Computer (CORDIC) algorithm for NCO design.Compared to the traditional NCO design,this method has high spectral purity,can be directly mixing without multiplier.In the design,a variable quadrant mapping method is adopted to solve the problem that CORDIC algorithm can not be covered by full cycle.The pipeline technology is used to solve the problem that the serial iteration is difficult to output in real time.The results of Modelsim simulation analysis show that the relative error between the actual output value and the theoretical value is 10-4-10-5,which satisfies the performance requirement of NCO in digital down-conversion.
digital down-conversion;CORDIC algorithm;pipeline;NCO;FPGA
10.3969/j.issn.1003-3106.2017.12.16
劉剛,蔣偉進,董胡,等.彈性拓撲控制技術研究[J].無線電工程,2017,47(12):71-74.[LIU Gang,JIANG Weijin,DONG Hu,et al.Design of NCO Based on CORDIC Algorithm in Digital Down-conversion[J].Radio Engineering,2017,47(12):71-74.]
TN911
A
1003-3106(2017)12-0071-04
2017-03-27
國家部委基金資助項目。
劉剛男,(1981—),碩士,講師。主要研究方向:基于FPGA的軟件無線電和5G通信。
蔣偉進男,(1965—),碩士,教授。主要研究方向:計算社會學、管理系統模擬、復雜系統建模和仿真、信息系統安全、云計算與大數據技術研究。