李雪萍,劉昌銀,蔡超時,楊剛
(中國傳媒大學信息工程學院,北京100024)
自 1959 年 Volder J[1]提出坐標旋轉數(shù)(Coordinate Rotation Digital Computer,簡稱 CORDIC)以來,CORDIC算法得到了廣泛的應用[2]。CORDIC的優(yōu)越性表現(xiàn)在它通過簡單的移位加減操作就能完成三角函數(shù),指數(shù),對數(shù),乘法和除法,開方等運算。并且CORDIC是一種規(guī)則化算法,結構簡單,便于硬件實現(xiàn)。因此,它普遍應用于信號處理,通信系統(tǒng)等領域。
限幅運算是畸變類峰均比抑制算法極其重要的組成模塊之一[3-4]。限幅是將高峰值的信號截斷,而其后的濾波引起一定程度的峰值再生,為獲得良好的抑制效果,需要多次迭代。因此,每次迭代每個模塊需合理的支配硬件資源,尤其是DSP資源。傳統(tǒng)限幅操作通過乘除運算實現(xiàn)。FPGA雖內(nèi)嵌了專用的DSP模塊,但峰均比抑制算法中FFT和FIR模塊包含了大量的乘法運算,其他模塊可支配的DSP較少。同時傳統(tǒng)限幅器的除法模塊由較大的組合時序邏輯實現(xiàn),限制了設計的時鐘速率。因此,提出新的限幅算法,減小硬件開銷,提高設計速率有著重要意義。
Altera公司早在2007年提出了一種極坐標限幅(Polar Clipping,PC)(以下簡稱 PC 限幅器)[5-7],PC限幅器是一種基于CORDIC旋轉的限幅器。它將傳統(tǒng)限幅器的乘除運算轉化為寄存器移位加減運算,極大地減少了硬件資源的使用,同時避免使用除法極大地提高了時鐘速度。PC限幅器采用了兩個獨立的CORDIC模塊分別完成幅值計算和限幅向量的旋轉,模塊間通過存儲的相位旋轉變量通信。PC限幅器需額外存儲旋轉相位信息,增加了設計的復雜度。
文章提出了一種改進的CORDIC限幅器(Improved CORDIC Clipper)(以下簡稱IC限幅器)。IC限幅器將幅值計算和限幅向量的旋轉合并到同一個CORDIC模塊中,將模塊間的通信轉化為模塊內(nèi)的通信,從而避免存儲額外的相位旋轉變量,簡化了設計。仿真表明,相比于傳統(tǒng)限幅器,IC限幅器使用的資源減少了近一半,最大時鐘速率提高了約2.4倍。
文章第二部分介紹了CORDIC算法的原理,第三部分闡述了傳統(tǒng)限幅器的設計,第四部分是關于PC限幅器原理,第五部分討論了IC限幅器的設計原理及考慮,最后兩部分分別分析了仿真結果以及給出了設計的結論。
CORDIC有旋轉法和矢量法兩種,本文只討論旋轉法。
假設點A沿逆時針方向旋轉θ角度至點B,點A 坐標為(xi,yi),點 B 為(xi+1,yi+1),見圖 1。經(jīng)推導有如下關系:
同樣旋轉θ角,當點A沿順時針方向轉至點B'時,有
設每次旋轉的角度為α=arctan2-(i-2),
其中
zi是當前坐標點與目標點相差的角度,決定了當前旋轉方向。則總的旋轉度數(shù)為
旋轉次數(shù)n決定了算法精度,經(jīng)過n次旋轉,向量的幅度因子
當n足夠大時,K≈0.607253。
圖1 坐標旋轉示意圖
由(3),設原始向量(x0,y0),其向量角 θ,使用CORDIC旋轉模式,經(jīng)過n次旋轉,旋轉角度為-θ,則
變量xn與該向量幅值息息相關。
CORDIC算法的關鍵之一是旋轉方向的確定。(3)中zi決定了旋轉方向,由于每次旋轉的角度已知,可以將各次旋轉角度事先存儲在ROM表中。求幅值的CORDIC算法特殊性在于它是將向量旋轉到x軸上,因此,旋轉的方向可由y向量確定。
CORDIC旋轉角θ的大小和迭代次數(shù)n相關,其取值范圍為[-99.88o,99.88o],而不是整個象限[-180o,180o],因此,第二、三象限不在旋轉范圍內(nèi)。迭代前應將初始向量變換到一、四象限[8]。
CORDIC算法引入了幅度增益因子K,初始向量(x0,y0)經(jīng)CORDIC旋轉的輸出并不是其幅度,而是幅度的1/K。
限幅器是畸變類峰均比抑制算法中的重要模塊之一。通過限幅器,大功率的信號被抑制,降低了OFDM峰值功率,從而降低了OFDM的峰均比。
限幅是將超過設定門限的信號截斷,是一種非線性操作。輸入復信號c(n),設定限幅門限為A,限幅原理如下:
其中|c(n)|表示復信號c(n)的模。當c(n)幅值小于等于門限值A時,限幅器沒有非線性操作,當c(n)幅值大于A時,限幅器將c(n)的幅值限定在A。
傳統(tǒng)限幅器由乘除運算實現(xiàn),見圖2。MAG模塊計算復信號幅值,MULT模塊實現(xiàn)如下功能:若幅值大于門限值,輸出 VCLIP與向量的乘積,否則MAG與向量乘積。DIV模塊完成除法運算。其中乘法用FPGA自帶的專用乘法器實現(xiàn),以提高乘法運算速度。除法可直接調(diào)用Altera的IP核,速度較慢。
如上所述,MAG模塊輸出幅值MAG并不是輸入的幅度,而是幅度的1/K。
Altera公司的PC限幅器是一種完全基于CORDIC算法的限幅器。CORDIC首先變換笛卡爾坐標為極坐標,選擇器選擇輸出幅值R或門限值Amax,第二個CORDIC模塊與第一個相反,它將極坐標重新轉化為笛卡爾坐標。
圖2 傳統(tǒng)限幅器
PC限幅器用CORDIC算法的移位加減運算替代了乘除運算。不僅減少了資源消耗,也提高了運算速度。它采用了兩個CORDIC模塊分別完成幅值計算和限幅向量的旋轉,模塊間通過存儲的相位旋轉變量通信。
圖3 PC限幅器
PC限幅器CORDIC模塊2將極坐標沿著CORDIC1的旋轉路徑旋轉回笛卡爾坐標。這意味著需要存儲CORDIC1旋轉方向,增加了設計的復雜度。在設計CORDIC算法的限幅器時,可充分考慮邏輯和資源復用以簡化程序設計和減少資源消耗。IC限幅器在PC限幅器的基礎上做了改進。
傳統(tǒng)限幅器使用了CORDIC算法計算信號幅值。它通過將向量旋轉到x軸,以此計算復信號幅值,向量的分量決定了旋轉方向。IC限幅器在同一CORDIC模塊中經(jīng)過相反的旋轉,將限幅向量由x軸旋轉到與信號重合位置,以實現(xiàn)限幅操作,算法流程如圖4。
輸入 vinit是預設的限幅門限。c1x0,c1y0是CORDIC1的初始寄存器值,c2x0,c2y0是 CORDIC2的初始寄存器值,c1yi是CORDIC1每次迭代的y向量。
輸入信號有效時,首先判斷其是否在一、四象限,若在,CORDIC1初始值即為輸入向量值,CORDIC2為(vinit,0),否則 CORDIC1 為其原點對稱值,CORDIC2為(-vinit,0)。迭代中,若當前 CORDIC1的 y值 大 于 0,則 CORDIC1,CORDIC2分別順時針、逆時針旋轉,否則相反。迭代結束后,若幅值MAG大于門限Vclip,選擇器選擇輸出CORDIC2旋轉輸出值,否則輸出原輸入向量。
圖4 改進的CORDIC限幅器
由第2部分得知,CORDIC輸出與輸入幅值存在比例關系K,在設定初始值時考慮到這點,可避免在輸出端作乘法以補償K因子。設仿真得到限幅門限值為,則vinit應設為max*K,由此旋轉后的I分量和Q分量與原信號的I、Q分量具有可比較性,而不用額外作比例轉換。Vclip應設為max/K,如此這樣,CORDIC1輸出幅值與限幅門限可直接比較,進一步簡化了設計復雜度。
仿真系統(tǒng)如圖5所示。仿真激勵是一個時隙的CMMB信號[9],每個時隙由53個 OFDM 幀組成,每個OFDM幀有3076個有效子載波和1020個零載波。有效子載波采用QPSK映射方式。
激勵信號首先經(jīng)過4倍升采樣濾波。用數(shù)字信號表示模擬信號波形時,升采樣可以更真實地反映模擬信號的峰均比分布情況。研究表明,4倍升采樣已足夠表示真實信號的時域分布[10]。
升采樣后的CMMB信號進入限幅器,高電平信號被截斷。限幅引入了非線性誤差,帶內(nèi)表現(xiàn)為星座圖彌散和旋轉,帶外表現(xiàn)為噪聲迭起。其后的濾波模塊可有效地降低帶外噪聲。
圖5 仿真系統(tǒng)框圖
激勵信號經(jīng)過4倍上采樣和限幅濾波后,原始信號幅值分布更加平滑,原來出現(xiàn)概率較低的大信號消失,峰均比有效降低,如圖6。
圖6限幅前后時域分布
CORDIC算法的迭代次數(shù)決定了運算復雜度和精度,有限的迭代次數(shù)導致了有限的精度。Matlab浮點運算可以得到精度很高的結果,以此為基礎,可以分析理想限幅器和傳統(tǒng)限幅器間的誤差大小。
輸入4096*53個隨機數(shù)據(jù),經(jīng)圖5所示數(shù)據(jù)處理,定義變量SNR來衡量IC限幅器的精度,信噪比
其中,Pclip是理想限幅器輸出總功率,Perr是總誤差功率。SNR(dB)隨迭代次數(shù)N變化如表1:
表1
由表可以看出,隨著迭代次數(shù)的增加,SNR越來越高,IC限幅器的精度越來越高。迭代8次SNR為53.52dB,滿足一般應用。
基于Altera的EP3C25F256C8平臺,輸入輸出16比特。傳統(tǒng)限幅器模塊乘法輸出結果截取19比特,CORDIC算法迭代8次,IC限幅器,PC限幅器及傳統(tǒng)限幅器資源使用情況如表2:
表2
可以看出,IC限幅器相比于傳統(tǒng)限幅器和PC限幅器,減少了資源消耗。傳統(tǒng)限幅器設計組合邏輯和時序邏輯比例約為2.8,其中的除法模塊達到了460∶82≈5.6,龐大的組合邏輯,對時序提出了挑戰(zhàn)。當除法器的分子輸入為19比特時,仿真結果表明,IC限幅器fmax可達220.4Mhz,而傳統(tǒng)限幅器只有92.58Mhz。隨著除法輸入比特數(shù)的增加,組合邏輯的比例隨之增加,時鐘速率不斷下降。
使用了大量組合邏輯的除法模塊,不適合應用于高速設計?;贗C算法的限幅器,采用了簡單的移位運算替代傳統(tǒng)的乘除運算,同時將PC限幅器模塊間通信轉化為模塊內(nèi)通信,不僅減少了資源的使用,也極大地提高了時鐘速率。
IC限幅器采用簡單的移位加減運算替代傳統(tǒng)限幅器的乘除運算,它抑制了OFDM大信號出現(xiàn)的概率,有效地降低了其峰均比。當除法模塊分子輸入19比特,CORDIC迭代8次時,相比于傳統(tǒng)限幅器,IC限幅器邏輯資源使用減少了近一半,DSP使用0個,并且最大時鐘速率提高了約2.4倍。
CORDIC迭代次數(shù)限制了其精度。迭代8次時,SNR為55.52dB,滿足一般用途。
[1]JACK E VOLDER.The cordic trigonometric computing technique[J].Electronic Computers,IRE Transaction on,1959.9,EC-8(3):330-334.
[2]Meher P K,Valls J,Tso-Bing Juang,Sridharan K Maharatna K.50 Years of CORDIC:Algorithms,Architectures and Applications[J].IEEE Transactions on,2009,56(9):1893-1907.
[3]Xueping Li,Peng Zhang,Lanxiang Jiang.HPA linearization technique of cascading PAPR reduction and predistortion[J].Image and Signal Processing,2011,(10):2818-2821.
[4]吳炳洋,程時昕.多載波通信中峰均比問題研究[D].南京:東南大學,2004.
[5]Altera Corporation.Crest Factor Reduction for OFDMA Systems[EB/OL].Altera官方網(wǎng)站http://www.altera.com.cn/literature/an/an396.pdf.2007.
[6]Altera Corporation.Crest Factor Reduction[EB/OL].Altera官方網(wǎng)站:http://www.altera.com.cn/literature/an/an396.pdf.2007.
[7]Altera Corporation.Altera wireless solution[EB/OL].Altera官方網(wǎng)站 http://www.altera.com.cn/literature/an/an396.pdf.2008.
[8]Xiao Hu,R G Harber,Steven C Bass.Expanding the Range of Convergence of the CORDIC Algorithm[J].Ieee transacation on computers,1991,40(1):13-21.
[9]GY/T 220.1-2006.移動多媒體廣播 第1部分:廣播信道幀結構、信道編碼和調(diào)制[S].北京:國家廣播電影電視總局,2006.
[10]江濤,朱光喜.OFDM無限通信系統(tǒng)中峰均功率比的研究[D].武漢:華中科技大學,2004.