基于FPGA的數控振蕩器的設計與實(shí)現

發(fā)布時(shí)間:2010-7-24 21:07    發(fā)布者:lavida
關(guān)鍵詞: FPGA , 數控振蕩器
本文介紹一種利用矢量旋轉的CORDIC(COordination Rotation DIgital Computer)算法實(shí)現正交數字混頻器中的數控振蕩器(NCO)的方法。推導了CORDIC算法產(chǎn)生正余弦信號的實(shí)現過(guò)程,給出了在FPGA 中設計數控振蕩器的頂層電路結構,并根據算法特點(diǎn)在設計中引入流水線(xiàn)結構設計。

在正交數字混頻器中,采用數字頻率合成技術(shù),可以將數字處理延續到正交調制之后或正交解調之前,濾波器和增益控制就可以用數字方法實(shí)現,I、Q兩路也就不會(huì )存在增益的不平衡,加上數控振蕩器(NCO)的低正交誤差,可以使系統誤差降低到數據的最低比特(LSB)的高精度范圍。此外,正交數字混頻器更容易與數字信號處理技術(shù)結合,使得數字調制更加靈活,進(jìn)而實(shí)現軟件無(wú)線(xiàn)電所要求的軟件可更改的調制解調。

數控振蕩器是正交數字混頻器的核心部分,它具有頻率分辨率高、頻率變化速度快、相位可連續線(xiàn)性變化和生成的正弦P余弦信號正交特性好等特點(diǎn)。而且NCO的相位、幅度均已數字化,可以直接進(jìn)行高精度的數字調制解調。隨著(zhù)數字通信的發(fā)展,傳送的數據速率越來(lái)越高。如何得到一個(gè)可數控的高頻載波信號是實(shí)現高速數字通信系統必須解決的問(wèn)題。為此,作者對如何在FPGA中實(shí)現高速正交數字混頻器中的數控振蕩器的方法進(jìn)行了探討。

數控振蕩器的基本實(shí)現原理

數控振蕩器的作用是產(chǎn)生正交的正弦和余弦樣本。傳統方法是采用查表法(LUT),即事先根據各個(gè)正余弦波相位計算好相位的正余弦值,并按相位角度作為地址存儲該相位的正余弦值,構成一個(gè)幅度P相位轉換電路(即波形存儲器)。在系統時(shí)鐘的控制下,由相位累加器對輸入頻率字不斷累加,得到以該頻率字為步進(jìn)的數字相位,再通過(guò)相位相加模塊進(jìn)行初始相位偏移,得到要輸出的當前相位,將該值作為取樣地址值送入幅度P相位轉換電路,查表獲得正余弦信號樣本。對于一個(gè)相位位數為n ,輸出信號幅度位數為M的數控振蕩器,所需查找表大小為M×2n 。為了提高數控振蕩器的頻率分辨率,往往需要擴大波形存儲器的容量,造成存儲資源的大量消耗。而且,當需要外掛RAM 來(lái)存儲波形時(shí),由于受到RAM讀取速度的影響,數控振蕩器的輸出速率必然受到制約。因此,當需要設計高速、高精度的數控振蕩器時(shí),不宜采用查表法。

為了避免使用大容量存儲器,可以考慮利用算法來(lái)產(chǎn)生正余弦樣本;谑噶啃D的CORDIC算法正好滿(mǎn)足了這一需求,該算法主要用于計算三角函數、雙曲函數及其它一些基本函數運算。它有線(xiàn)性的收斂域和序列的特性,只要迭代次數足夠,即可保證結果有足夠的精度。Walther JS于1971年提出了統一的CORDIC形式。假定初始向量V1(x1 ,y1)旋轉角度θ后得到向量V2(x2,y2):


即:

若每次旋轉的角度θ是正切值為2 的倍數,即θi=arctan(2-i),則cosθi=(1+2-2i)-1/2 。假設以δi代表矢量的旋轉方向,+1表示逆時(shí)針旋轉,-1表示順時(shí)針旋轉,故第i 步旋轉可用下式表示:

其中:(1+2-2i)-1/2為模校正因子。對于字長(cháng)一定的運算,該因子是一個(gè)常數,用K表示,以16 bits字長(cháng)為例,則:

  可見(jiàn),迭代運算不能使幅值比例因子恒為1。為了抵消因迭代產(chǎn)生的比例因子的影響,可將輸入數據X,Y校正后再參與運算,以避免在迭代運算中增加校正運算,降低CORDIC算法的速度。由此運算迭代式可以簡(jiǎn)化成:


式(5)運算僅通過(guò)加法器及移位器就可以實(shí)現。此外,若用Zi表示第i次旋轉時(shí)與目標角度之差,

則:


經(jīng)過(guò)n次旋轉后,式(5)的n次迭代可以得到以下結果:

本文介紹的數控振蕩器的設計是在式(7)的基礎上,給定x0=K ,y0=0,則迭代結果為:

將所需產(chǎn)生的角度值作為z0輸入,通過(guò)式(5)、(6)的迭代運算,迭代結果輸出的xn和yn就是所需要的三角函數值。

數控振蕩器的FPGA實(shí)現

圖1是數控振蕩器的頂層電路。由圖可見(jiàn),頻率控制字寄存器將接收到的的頻率控制字送入相位累加器,相位累加器對系統時(shí)鐘進(jìn)行計數,每到達輸入頻率控制字的值即對相位進(jìn)行累加,隨后將累加值送入相位相加器,與相位控制字寄存器接收到的初始相位進(jìn)行相加,得到當前的相位值。其中,相位累加器是決定NCO性能的一個(gè)關(guān)鍵模塊,可以利用FPGA器件的進(jìn)位鏈實(shí)現快速、高效的電路結構。然而,由于進(jìn)位鏈必須位于臨近的邏輯陣列塊CLB和邏輯單元LC內,所以長(cháng)的進(jìn)位鏈會(huì )減少其它邏輯使用的布線(xiàn)資源;同時(shí),過(guò)長(cháng)的進(jìn)位鏈也會(huì )制約整個(gè)系統速度的提高。因此,設計中采用進(jìn)位鏈和流水線(xiàn)技術(shù)相結合的辦法。所謂流水線(xiàn)技術(shù),即把在一個(gè)時(shí)鐘內要完成的邏輯操作分成幾步較小的操作,并插入幾個(gè)時(shí)鐘周期來(lái)提高系統的數據吞吐率。采用以上做法實(shí)現的相位累加器既能保證具有較高的資源利用率,又能大幅提高系統的性能和速度。

經(jīng)過(guò)上述相位的處理之后,即可獲得具有所設定初始相位的一定頻率的正余弦相位序列,將此序列送入基于CORDIC算法的波形發(fā)生器,最終獲得兩路正交的正余弦輸出序列。



圖1  NCO的頂層電路結構

CORDIC迭代算法的一種最直接的實(shí)現方法是,只設計一級CORDIC運算迭代單元,然后在系統時(shí)鐘的驅動(dòng)下,將本級的輸出作為本級的輸入,通過(guò)同一級迭代完成運算。這種方法雖然很直觀(guān),但是為了將計算結果提供給下一級運算而導致占用了大量的寄存器,帶來(lái)許多額外的資源消耗。而最大的缺點(diǎn)是運算速度較慢(需要n-1個(gè)時(shí)鐘周期才能輸出一個(gè)數據),不利于數據的高速實(shí)時(shí)處理。

因此在實(shí)際設計中,采用的是圖2所示的由16級CORDIC運算單元組成的流水線(xiàn)結構,正常工作時(shí)只需1個(gè)時(shí)鐘周期就能輸出1個(gè)數據,為數據實(shí)現高速實(shí)時(shí)處理提供了前提。每一級實(shí)現的功能是根據式(5)進(jìn)行一次迭代,移位的位數等于當前的迭代級數,加減法選擇由該級中Z 的最高位(符號位)決定,得到下一級的X 、Y 和Z 的值。經(jīng)過(guò)16級流水線(xiàn)運算后,Z的值變?yōu)?,X 和Y 的值則為初始值z0的余弦和正弦值。每一級電路結構主要包括2個(gè)移位器和3個(gè)加(減)法器,級與級之間直接相連,不需要額外的寄存器。θi 的值為arctan(2-i),可將該小數轉換為二進(jìn)制數后,存儲于存儲單元中,為每一級流水線(xiàn)提供查找表。若對于16級的流水線(xiàn)結構,則的范圍是0~15。


圖2  CORDIC迭代算法的流水線(xiàn)結構

設計中還應該注意迭代序列所能覆蓋的角度范圍,若直接采用n 級迭代序列:0 ,1 ,2 ,…,n - 1 ,則迭代所能覆蓋的角度范圍僅有- 99.9°~99.9°。本設計采用了增加迭代次數的方法來(lái)擴大角度覆蓋范圍,即增加兩個(gè)i = 0 的迭代,將迭代序列擴展為0,0,0,1,2,…,n-1,從而使角度覆蓋范圍也擴大到-π~π。

數控振蕩器的仿真結果及性能分析

利用Altera公司的QuartusII軟件,采用VHDL硬件描述語(yǔ)言對上述數控振蕩器結構進(jìn)行描述,在Modlesim上通過(guò)功能仿真,結果正確后綜合出電路網(wǎng)表,最后將程序下載至Altera公司生產(chǎn)的Stratix器件EP1S20B780C6實(shí)現。

由于設計中采用了Stratix器件,該器件的32位加減器工作頻率可以達到90MHz以上,為產(chǎn)生高速的正交信號提供高速可靠的的工作時(shí)鐘?紤]到NCO的工作時(shí)鐘瓶頸是在相位累加器,因此可以根據具體需要縮減相位累加器的位數來(lái)提高NCO的工作時(shí)鐘。本文設計的NCO工作時(shí)鐘為100MHz,相位累加器的位數為16位,輸入的頻率控制字為4CCCH,根據公式:


其中:Φword為輸入的頻率控制字;fclk為工作時(shí)鐘;N為相位累加器位數,可算出NCO輸出的正余弦信號的頻率;fout為30MHz ;頻率分辨率Δf ≈1.5 kHz。頻率分辨率說(shuō)明了若通過(guò)輸入頻率控制字來(lái)改變輸出正余弦信號的頻率時(shí),可以達到1.5 kHz 的最小步進(jìn)。另外,也可以根據實(shí)際需要的頻率改變輸入頻率控制字值。當然,NCO輸出頻率的上限要受到Nyquist定律的限制,即fout的最大值為fclkP2,實(shí)際設計一般不大于0.4fclk。圖3為數控振蕩器的部分仿真時(shí)序圖。


圖3 NCO的部分仿真時(shí)序圖

結語(yǔ)
  
研究了正交數字混頻器中數控振蕩器的設計與實(shí)現方法,著(zhù)重分析了如何在FPGA器件中利用CORDIC迭代算法產(chǎn)生正余弦信號。結果表明,基于CORDIC迭代算法的數控振蕩器,僅用移位寄存器和加法器就可產(chǎn)生正余弦信號,不但省去了傳統NCO龐大的存儲器資源,而且保留了一般數控振蕩器頻率分辨率高、頻率變化速度快、相位可連續線(xiàn)性變化、生成的正弦P余弦信號正交特性好等特點(diǎn),非常適用于在正交數字混頻器中進(jìn)行高速高精度的數字調制解調。
本文地址:http://selenalain.com/thread-16697-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页