數(shù)控振蕩器的FPGA設(shè)計(jì)_第1頁
數(shù)控振蕩器的FPGA設(shè)計(jì)_第2頁
數(shù)控振蕩器的FPGA設(shè)計(jì)_第3頁
數(shù)控振蕩器的FPGA設(shè)計(jì)_第4頁
數(shù)控振蕩器的FPGA設(shè)計(jì)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、    數(shù)控振蕩器的FPGA設(shè)計(jì)摘 要:數(shù)控振蕩器在數(shù)字信號(hào)處理中有著廣泛的應(yīng)用。本文研究并實(shí)現(xiàn)了基于CORDIC算法的流水線型數(shù)控振蕩器。仿真和驗(yàn)證結(jié)果表明,該方法較之查找表法精度高,且結(jié)構(gòu)簡單、耗費(fèi)資源少,非常易于FPGA實(shí)現(xiàn)。引言由于具有頻率精度高、轉(zhuǎn)換時(shí)間短、頻譜純度高以及頻率相位易編程等特點(diǎn), 數(shù)控振蕩器(NCO)被廣泛應(yīng)用于軟件無線電數(shù)字上、下變頻以及各種頻率和相位數(shù)字調(diào)制解調(diào)系統(tǒng)中。NCO傳統(tǒng)的實(shí)現(xiàn)方法主要有查表法、多摘 要:數(shù)控振蕩器在數(shù)字信號(hào)處理中有著廣泛的應(yīng)用。本文研究并實(shí)現(xiàn)了基于CORDIC算法的流水線型數(shù)控振蕩器。仿真和驗(yàn)證結(jié)果表

2、明,該方法較之查找表法精度高,且結(jié)構(gòu)簡單、耗費(fèi)資源少,非常易于FPGA實(shí)現(xiàn)。引言由于具有頻率精度高、轉(zhuǎn)換時(shí)間短、頻譜純度高以及頻率相位易編程等特點(diǎn), 數(shù)控振蕩器(NCO)被廣泛應(yīng)用于軟件無線電數(shù)字上、下變頻以及各種頻率和相位數(shù)字調(diào)制解調(diào)系統(tǒng)中。NCO傳統(tǒng)的實(shí)現(xiàn)方法主要有查表法、多項(xiàng)式展開法或近似法,但這些方法在速度、精度、資源方面難以兼顧。而采用CORDIC算法來實(shí)現(xiàn)超函數(shù)時(shí),則無需使用乘法器,它只需要一個(gè)最小的查找表(LUT),利用簡單的移位和相加運(yùn)算,即可產(chǎn)生高精度的正余弦波形,尤其適合于FPGA的實(shí)現(xiàn)。數(shù)控振蕩器原理NCO的目標(biāo)是產(chǎn)生頻率可變的正、余弦波樣本,(n=0,1,2.)。式中,

3、fLO為本地振蕩頻率, fS為輸入信號(hào)的采樣頻率。如圖1 所示,NCO主要包括3個(gè)模塊:1. 相位累加器對(duì)輸入頻率控制字M不斷累加, 得到以該頻率字為步進(jìn)的數(shù)字相位。2. 相位相加器將相位寄存器中的數(shù)字相位與相位控制字相加, 得到偏移后的當(dāng)前相位。設(shè)系統(tǒng)的時(shí)鐘頻率為fc,頻率控制字為M,相位寄存器位數(shù)為N,則數(shù)控振蕩器輸出信號(hào)頻率為。根據(jù)Nyquist抽樣定理,fs最大值為1/2fc,而在實(shí)際設(shè)計(jì)中,一般不應(yīng)大于時(shí)鐘頻率的1/4。其頻率分辨率為,根據(jù)此式,在系統(tǒng)時(shí)鐘頻率不變的情況下, 相位寄存器位數(shù)N越大, 產(chǎn)生信號(hào)的頻率分辨率越高。圖1 數(shù)字控制振蕩器結(jié)構(gòu)圖3. 函數(shù)發(fā)生模塊,對(duì)當(dāng)前相位進(jìn)行

4、對(duì)應(yīng)幅度轉(zhuǎn)換后, 可以輸出任意函數(shù)的波形。函數(shù)發(fā)生模塊最直接的實(shí)現(xiàn)方法是只讀存儲(chǔ)器查找表(ROM LUT)法,將正、余弦波形的抽樣存放在ROM中,并通過一個(gè)DAC周期地進(jìn)行輸出,從而產(chǎn)生輸出波形。如輸出信號(hào)幅度位數(shù)為a,相位地址位數(shù)n所需查找表的大小為a×2n。結(jié)合上文結(jié)論可知,頻率分辨率越高,所需要的ROM越大,和n為指數(shù)增長關(guān)系。可見,ROM LUT法很難兼顧功耗、性能、成本三方面, 而CORDIC算法的應(yīng)用能夠很好地解決這一問題。CORDIC算法原理CORDIC(坐標(biāo)旋轉(zhuǎn)數(shù)字計(jì)算機(jī))算法是Jack Volder于1959年提出的,主要用于計(jì)算三角函數(shù),雙曲函數(shù)及其他的一些基本函

5、數(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)得到迭代方程組:(1)且累積后最終結(jié)果為(2)通過選擇tan(qi)=±2-i可以得到,x和y的方程現(xiàn)在可以利用一個(gè)簡單的管狀移位器和一個(gè)算術(shù)邏輯單元(ALU)來實(shí)現(xiàn)。此外,只需要使用一個(gè)相對(duì)簡單的、事先計(jì)算好的反正切表,即可消除超函數(shù)的計(jì)算。圖2 CORDIC 算法原理示意圖同時(shí)還要判斷旋轉(zhuǎn)的方向,以滿足Z變量由初始值逐步趨于零,需要通過下式來引入和

6、估計(jì)一個(gè)簡單的符號(hào)變量d:di=sgn(zi)。 (3)經(jīng)過上面2步,得到如下迭代方程:(4)最后確定初始條件(5)則當(dāng)N 時(shí),迭代后結(jié)果為:(xi,yi)(cos(q),sin(q)。綜合以上推導(dǎo)可見,只要選取合適的N,計(jì)算出相應(yīng)的初始值(x0,y0),以及相對(duì)應(yīng)的反正切值,就可以利用簡單的移位加法操作和流水線結(jié)構(gòu)實(shí)現(xiàn)上述的迭代方程式,計(jì)算出已知角度Z的正、余弦值,且這樣的電路結(jié)構(gòu)非常易于FPGA實(shí)現(xiàn)。應(yīng)用MATLAB進(jìn)行功能仿真和參數(shù)設(shè)計(jì)FPGA設(shè)計(jì)流程中,應(yīng)先利用MATLAB進(jìn)行功能仿真,按照系統(tǒng)要求,以先驗(yàn)的方式確定系統(tǒng)參數(shù),測試系統(tǒng)性能是非常必要的,可以有效提高FPGA硬件設(shè)計(jì)的效率

7、和電路質(zhì)量,避免不必要的重復(fù)勞動(dòng)。本系統(tǒng)采用40M的晶振,要求輸出9.7M的正、余弦波,輸出幅值為18位二進(jìn)制數(shù)。在實(shí)際系統(tǒng)中,由于有限的相位字長和有限的量化電平,相位和量化誤差總是存在的,而且這些誤差會(huì)導(dǎo)致雜散噪聲出現(xiàn)在頻譜中期望的分量之間,這些靠近期望分量的雜散信號(hào)會(huì)降低數(shù)字合成器的無雜散動(dòng)態(tài)范圍(SFDR)。本系統(tǒng)要求輸出波形SFDR大于90dB。因此還需要確定兩個(gè)系統(tǒng)參數(shù)。第一個(gè)參數(shù)是CORDIC迭代次數(shù)N。顯然,迭代次數(shù)N 越大,精度越高,資源消耗也越多,所以要選取合適的N值。另一個(gè)參數(shù)是當(dāng)前相位Z的范圍。在實(shí)現(xiàn)過程中可以利用三角函數(shù)的一些對(duì)稱性質(zhì)對(duì)相位進(jìn)行象限轉(zhuǎn)換,將當(dāng)前相位統(tǒng)一到

8、更小的范圍內(nèi),例如1/2圓,1/4圓,甚至1/8圓,配合少量LUT,達(dá)到用較少迭代次數(shù)實(shí)現(xiàn)更高精度的目的,代價(jià)是電路的復(fù)雜度將會(huì)增加。通過將CORDIC迭代過程、相位計(jì)算,以及相位截?cái)唷⒘炕珠L等的誤差等因素引入MATLAB仿真程序中,能夠準(zhǔn)確仿真出實(shí)際數(shù)字電路的輸出波形。采用不同的參數(shù),多次仿真后,確定選取迭代次數(shù)N=16,相位Z的范圍為(-90,90),是一個(gè)很好的平衡點(diǎn)。仿真結(jié)果如圖3所示,信號(hào)的頻譜在9.7M達(dá)到峰值,說明生成的正弦波形其頻率為9.7M,且最大信號(hào)幅度的有效值與最大雜散分量有效值分貝差接近100dB,即SFDR>90dB??梢?,該結(jié)果完全符合NCO的系統(tǒng)設(shè)計(jì)要求,

9、可以按照此設(shè)計(jì)參數(shù)進(jìn)入到下一步FPGA數(shù)字電路實(shí)現(xiàn)。圖3 基于CORDIC算法的NCO輸出正旋信號(hào)頻譜圖基于CORDIC的NCO的FPGA實(shí)現(xiàn)和驗(yàn)證這一階段的設(shè)計(jì)過程采用Verilog HDL編程,用Xilinx公司的FPGA設(shè)計(jì)工具實(shí)現(xiàn)。具體電路設(shè)計(jì)可分為兩個(gè)部分。第一部分為CORDIC迭代前模塊,最終目的是輸出當(dāng)前相位,主要功能是進(jìn)行相位累加、截?cái)啵约鞍凑丈衔牡脑O(shè)計(jì)參數(shù)轉(zhuǎn)換相位至(-90,90)之間,并給出相應(yīng)的控制信號(hào)。圖4中左邊第一個(gè)模塊anglepro即完成了上述功能。系統(tǒng)采用了32位的累加器,M值可由公式計(jì)算得到。CLK接FPGA外部40M時(shí)鐘,每來一個(gè)上升沿,累加器以M為步進(jìn)進(jìn)

10、行一次累加。在精度允許的條件下,對(duì)相位地址進(jìn)行截?cái)嘀?8位,將此18位2進(jìn)制數(shù)看成是數(shù)的補(bǔ)碼形式,其范圍為(0,(217-1)(-217,-1),對(duì)應(yīng)到圓周上可以看成是(0,p)(-p,0)。下面只需進(jìn)行相位的轉(zhuǎn)換工作,對(duì)相位地址的高兩位進(jìn)行異或運(yùn)算,當(dāng)結(jié)果為0時(shí),說明當(dāng)前相位已經(jīng)在設(shè)計(jì)區(qū)間(-90,90)之間;結(jié)果為1時(shí)則做簡單的象限轉(zhuǎn)換,將第二象限折入第一象限,第三象限折入第四象限,并輸出控制信號(hào)t對(duì)最終輸出的COS幅值取負(fù)。圖4 Synplify Pro編譯綜合后RTL仿真圖(局部)第二部分為整個(gè)CORDIC算法的迭代過程,根據(jù)仿真結(jié)果,系統(tǒng)采取了16級(jí)迭代,X迭代初始值可由公式(5)算

11、出K=0.6073,量化為18位二進(jìn)制數(shù)后,得到幅值約為79600。同樣,迭代過程中所需要的反正切角度值,也根據(jù)角度比例對(duì)應(yīng)量化為18位二進(jìn)制相位參數(shù)。在本次設(shè)計(jì)中,并沒有將這些反正切角度量化值存入統(tǒng)一的LUT中,而是分別固化在每一級(jí)的迭代模塊中,簡化了數(shù)字電路結(jié)構(gòu)。圖4中cord_2是迭代過程中的一個(gè)典型迭代模塊,其他15個(gè)迭代模塊的核心結(jié)構(gòu)與cord_2完全相同。如圖5所示,流水線結(jié)構(gòu)中,每一個(gè)模塊(級(jí))接受來自上一次迭代的Z角度值、X值、Y值,通過判斷Z的符號(hào)對(duì)X、Y、Z做移位加減操作,其迭代的核心部分只需要3個(gè)加減法器和2個(gè)移位器。在本次設(shè)計(jì)中,進(jìn)一步用更為簡單的符號(hào)位擴(kuò)展和對(duì)應(yīng)賦值取

12、代了移位器,使得電路結(jié)構(gòu)更為簡單。圖5 CORDIC流水線結(jié)構(gòu)圖采用這樣的流水線結(jié)構(gòu),級(jí)級(jí)直接相連, 省去了中間的多位寄存器, 每一級(jí)移位長度和反正切角度值的固化,也大大節(jié)省了FPGA實(shí)現(xiàn)時(shí)的寄存器數(shù)量。實(shí)際工作時(shí),只需要17個(gè)時(shí)鐘周期的建立時(shí)間,就可以輸出第一個(gè)正、余弦值,進(jìn)而連續(xù)輸出波形的離散數(shù)值。通過ModelSim仿真后,得到仿真波形如圖6所示。圖6 modelsim 仿真波形圖為了驗(yàn)證輸出波形是否正確,本文采用了將量化后幅值還原與理想值比較的方法。如,第一個(gè)幅值對(duì)應(yīng)的實(shí)際余弦值為131068/(217)0.99997。同時(shí),算得理論相角步進(jìn)為87.3°,進(jìn)一步算出理想的正弦、余弦值。取其中幾組數(shù)據(jù)進(jìn)行比較,如表1、表2所示。通過對(duì)比,可以發(fā)現(xiàn)電路仿真后輸出值與理想值很接近,得到了預(yù)期的正、余弦離散波形,驗(yàn)證了程序本身的正確性,也可以肯定,前文基于CORDIC的NCO功能仿真和參數(shù)設(shè)計(jì)已經(jīng)成功地在FPGA電路中實(shí)現(xiàn)。目前,該設(shè)計(jì)已成功應(yīng)用在Xilinx Spartan XC3S500芯片上。結(jié)語采用CORDIC算法設(shè)計(jì)數(shù)控振蕩

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論