音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

基于cordic算法的數(shù)控振蕩器的FPGA設(shè)計

出處:www.eaw.com.cn    發(fā)布于:2011-06-14 15:12:19

  數(shù)控振蕩器(NCO)因具有頻率高、轉(zhuǎn)換時間短、頻譜純度高以及頻率相位易編程等特點,而被廣泛應(yīng)用于軟件無線電數(shù)字上、下變頻以及各種頻率和相位數(shù)字調(diào)制解調(diào)系統(tǒng)中。

  NCO是正交數(shù)字混頻器的部分,它具有頻率分辨率高、頻率變化速度快、相位可連續(xù)線性變化和生成的正弦P余弦信號正交特性好等特點。而且NCO 的相位、幅度均已數(shù)字化,可以直接進行高的數(shù)字調(diào)制解調(diào)。隨著數(shù)字通信的發(fā)展,傳送的數(shù)據(jù)速率越來越高。如何得到一個可數(shù)控的高頻載波信號是實現(xiàn)高速數(shù)字通信系統(tǒng)必須解決的問題。

  NCO傳統(tǒng)的實現(xiàn)方法主要有查表法、多項式展開法或近似法,但這些方法在速度、、資源方面難以兼顧。而采用CORDIC算法來實現(xiàn)超函數(shù)時,則無需使用乘法器,它只需要一個的查找表(LUT),利用簡單的移位和相加運算,即可產(chǎn)生高的正余弦波形,尤其適合于FPGA的實現(xiàn)。

  數(shù)控振蕩器原理

  數(shù)控振蕩器的作用是產(chǎn)生正交的正弦和余弦樣本。 傳統(tǒng)方法是采用查表法(LUT) , 即事先根據(jù)各個正余弦波相位計算好相位的正余弦值, 并按相位角度作為地址存儲該相位的正余弦值, 構(gòu)成一個幅度P相位轉(zhuǎn)換電路(即波形存儲器) . 在系統(tǒng)時鐘的控制下, 由相位累加器對輸入頻率字不斷累加, 得到以該頻率字為步進的數(shù)字相位, 再通過相位相加模塊進行初始相位偏移, 得到要輸出的當(dāng)前相位, 將該值作為取樣地址值送入幅度P相位轉(zhuǎn)換電路, 查表獲得正余弦信號樣本。

  NCO的目標(biāo)是產(chǎn)生頻率可變的正、余弦波樣本,,(n=0,1,2...)。式中,fLO為本地振蕩頻率, fS為輸入信號的采樣頻率。

  如圖1 所示,NCO主要包括3個模塊:

  1. 相位累加器對輸入頻率控制字M不斷累加, 得到以該頻率字為步進的數(shù)字相位。

  2. 相位相加器將相位寄存器中的數(shù)字相位與相位控制字相加, 得到偏移后的當(dāng)前相位。

  設(shè)系統(tǒng)的時鐘頻率為fc,頻率控制字為M,相位寄存器位數(shù)為N,則數(shù)控振蕩器輸出信號頻率為。根據(jù)Nyquist抽樣定理,fs值為1/2fc,而在實際設(shè)計中,一般不應(yīng)大于時鐘頻率的1/4。其頻率分辨率為根據(jù)此式,在系統(tǒng)時鐘頻率不變的情況下, 相位寄存器位數(shù)N越大, 產(chǎn)生信號的頻率分辨率越高。

  

  圖1 數(shù)字控制振蕩器結(jié)構(gòu)圖

  3. 函數(shù)發(fā)生模塊,對當(dāng)前相位進行對應(yīng)幅度轉(zhuǎn)換后, 可以輸出任意函數(shù)的波形。

  對于一個相位位數(shù)為n,輸出信號幅度位數(shù)為M 的數(shù)控振蕩器,所需查找表大小為M ×2n。為了提高數(shù)控振蕩器的頻率分辨率,往往需要擴大波形存儲器的容量,造成存儲資源的大量消耗。而且當(dāng)需要外掛RAM 來存儲波形時,由于受到RAM讀取速度的影響,數(shù)控振蕩器的輸出速率必然受到制約。因此,當(dāng)需要設(shè)計高速、高的數(shù)控振蕩器時,不宜采用查表法;而CORDIC算法的應(yīng)用能夠很好地解決這一問題。

  CORDIC算法原理

  CORDIC(坐標(biāo)旋轉(zhuǎn)數(shù)字計算機)算法是Jack Volder于1959年提出的,主要用于計算三角函數(shù),雙曲函數(shù)及其他的一些基本函數(shù)。J.Walther于1971年提出了統(tǒng)一的CORDIC形式。該算法的具體原理如下:如圖2所示,初始向量a(x0,y0) (注意y0=0)經(jīng)n次旋轉(zhuǎn)后得到向量b(xN,yN)qi。設(shè)第i次旋轉(zhuǎn)的角度為qi,根據(jù)J.Walther的推導(dǎo)得到迭代方程組:

  通過選擇tan(qi)=±2-i可以得到,x和y的方程現(xiàn)在可以利用一個簡單的管狀移位器和一個算術(shù)邏輯單元(ALU)來實現(xiàn)。此外,只需要使用一個相對簡單的、事先計算好的反正切表,即可消除超函數(shù)的計算。

  

圖2 CORDIC 算法原理示意圖

  同時還要判斷旋轉(zhuǎn)的方向,以滿足Z變量由初始值逐步趨于零,需要通過下式來引入和估計一個簡單的符號變量:

  經(jīng)過上面2步,得到如下迭代方程:

  則當(dāng)N→ 時,迭代后結(jié)果為:(xi,yi)→(cos(q),sin(q))。

  綜合以上推導(dǎo)可見,只要選取合適的N,計算出相應(yīng)的初始值(x0,y0),以及相對應(yīng)的反正切值,就可以利用簡單的移位加法操作和流水線結(jié)構(gòu)實現(xiàn)上述的迭代方程式,計算出已知角度Z的正、余弦值,且這樣的電路結(jié)構(gòu)非常易于FPGA實現(xiàn)。

  應(yīng)用MATLAB進行功能仿真和參數(shù)設(shè)計

  FPGA設(shè)計流程中,應(yīng)先利用MATLAB進行功能仿真,按照系統(tǒng)要求,以先驗的方式確定系統(tǒng)參數(shù),測試系統(tǒng)性能是非常必要的,可以有效提高FPGA硬件設(shè)計的效率和電路質(zhì)量,避免不必要的重復(fù)勞動。

  本系統(tǒng)采用40M的晶振,要求輸出9.7M的正、余弦波,輸出幅值為18位二進制數(shù)。在實際系統(tǒng)中,由于有限的相位字長和有限的量化電平,這些靠近期望分量的雜散信號會降低數(shù)字合成器的無雜散動態(tài)范圍(SFDR)。本系統(tǒng)要求輸出波形SFDR大于90dB。

  通過將CORDIC迭代過程、相位計算,以及相位截斷、量化字長等的誤差等因素引入MATLAB仿真程序中,能夠準(zhǔn)確仿真出實際數(shù)字電路的輸出波形。采用不同的參數(shù),多次仿真后,確定選取迭代次數(shù)N=16,相位Z的范圍為(-90,90),是一個很好的平衡點。

  仿真結(jié)果如圖3所示,信號的頻譜在9.7M達(dá)到峰值,說明生成的正弦波形其頻率為9.7M,且信號幅度的有效值與雜散分量有效值分貝差接近100dB,即SFDR>90dB??梢姡摻Y(jié)果完全符合NCO的系統(tǒng)設(shè)計要求,可以按照此設(shè)計參數(shù)進入到下一步FPGA數(shù)字電路實現(xiàn)。

  

 圖3 基于CORDIC算法的NCO輸出正旋信號頻譜圖

  基于CORDIC的NCO的FPGA實現(xiàn)和驗證

  這一階段的設(shè)計過程采用Verilog HDL編程,用Xilinx公司的FPGA設(shè)計工具實現(xiàn)。具體電路設(shè)計可分為兩個部分。

  部分為CORDIC迭代前模塊,終目的是輸出當(dāng)前相位,主要功能是進行相位累加、截斷,以及按照上文的設(shè)計參數(shù)轉(zhuǎn)換相位至(-90,90)之間,并給出相應(yīng)的控制信號。圖4中左邊個模塊anglepro即完成了上述功能。系統(tǒng)采用了32位的累加器,M值可由公式計算得到。下面只需進行相位的轉(zhuǎn)換工作,對相位地址的高兩位進行異或運算,當(dāng)結(jié)果為0時,說明當(dāng)前相位已經(jīng)在設(shè)計區(qū)間(-90,90)之間;結(jié)果為1時則做簡單的象限轉(zhuǎn)換,將第二象限折入象限,第三象限折入第四象限,并輸出控制信號t對終輸出的COS幅值取負(fù)。

  

  圖4 Synplify Pro編譯綜合后RTL仿真圖(局部)

  第二部分為整個CORDIC算法的迭代過程,根據(jù)仿真結(jié)果,系統(tǒng)采取了16級迭代,X迭代初始值可由公式(5)算出K=0.6073,量化為18位二進制數(shù)后,得到幅值約為79600。在本次設(shè)計中,并沒有將這些反正切角度量化值存入統(tǒng)一的LUT中,而是分別固化在每的迭代模塊中,簡化了數(shù)字電路結(jié)構(gòu)。

  圖4中cord_2是迭代過程中的一個典型迭代模塊,其他15個迭代模塊的結(jié)構(gòu)與cord_2完全相同。如圖5所示,流水線結(jié)構(gòu)中,每一個模塊(級)接受來自上迭代的Z角度值、X值、Y值,通過判斷Z的符號對X、Y、Z做移位加減操作,其迭代的部分只需要3個加減法器和2個移位器。

  

  圖5 CORDIC流水線結(jié)構(gòu)圖

  采用這樣的流水線結(jié)構(gòu),級級直接相連,每移位長度和反正切角度值的固化,也大大節(jié)省了FPGA實現(xiàn)時的寄存器數(shù)量?,F(xiàn)實中只需要17個時鐘周期的建立時間,就可輸出個正、余弦值,然后連續(xù)輸出波形的離散數(shù)值。

  通過ModelSim仿真后,得到仿真波形如圖6所示。

  

  圖6 modelsim 仿真波形圖

  為了驗證輸出波形是否正確,本文采用了將量化后幅值還原與理想值比較的方法。如,個幅值對應(yīng)的實際余弦值為131068/(2^17)≈0.99997。余弦值。取其中幾組數(shù)據(jù)進行比較,如表1所示。

  對比發(fā)現(xiàn)電路仿真后輸出值與理想值很接近,得到了預(yù)期的正、余弦離散波形,驗證了程序本身的正確性。

  結(jié)語

  采用CORDIC算法設(shè)計數(shù)控振蕩器可以生成高數(shù)控振蕩器而無需大容量的查找表,節(jié)省了大量的ROM資源,降低了功耗,僅采用移位寄存器和加法器結(jié)合流水線結(jié)構(gòu)就可實現(xiàn)迭代過程。CORDIC算法所能達(dá)到的與所選取的迭代次數(shù)和操作數(shù)位寬密切相關(guān),利用三角函數(shù)的對稱特性,配合少量LUT或邏輯電路,可以進一步設(shè)計出更高的數(shù)控振蕩器。

  參考文獻(xiàn):

  1. Jeffrey H.Reed 著。 陳強譯。 軟件無線電——無線電工程的現(xiàn)代方法[M]. 人民郵電出版社。 2004

  2. Uwe Meyer-Baese 著。 劉 凌, 胡永生譯。 數(shù)字信號處理的FPGA 實現(xiàn)[M]. 清華大學(xué)出版社, 2003

  3. Walter J S. A Unified Algorithm for Elementary Functions[A]. AFIPS Spring Joint Computer Conf [C]. 1997, 38,379~3853

  4. ROM datasheet http://m.58mhw.cn/datasheet/ROM_1188413.html.

關(guān)鍵詞:基于cordic算法的數(shù)控振蕩器的FPGA設(shè)計

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!