正交幅度調(diào)制解調(diào)器的FPGA設(shè)計(jì)與仿真
2 正交信號(hào)發(fā)生器的設(shè)計(jì)
2.1 CORDIC算法原理
CORDIC算法是由J.Volder于1959年提出的。該算法適用于解決一些三角學(xué)的問(wèn)題,如平面坐標(biāo)的旋轉(zhuǎn)和直角坐標(biāo)到極坐標(biāo)的轉(zhuǎn)換等。 CORDIC算法的基本思想是通過(guò)一系列固定的、與運(yùn)算基數(shù)有關(guān)的角度的不斷偏擺,以逼近所需的旋轉(zhuǎn)角度。從廣義上講,CORDIC方法就是一種數(shù)值計(jì)算的逼近方法。該算法實(shí)現(xiàn)三角函數(shù)的基本原理如下:
設(shè)初始向量(x0,y0)逆時(shí)針旋轉(zhuǎn)角度口后得到向量(xn,yn),則:
式中:θi表示第i次旋轉(zhuǎn)的角度,并且tanθi=2-i;zi表示第i次旋轉(zhuǎn)后與目標(biāo)角度的差;δi表示向量的旋轉(zhuǎn)方向由zi的符號(hào)位來(lái)決定,即δi=sign(zi);為每一級(jí)的校正因子,也就是每一級(jí)旋轉(zhuǎn)時(shí)向量模長(zhǎng)發(fā)生的變化,對(duì)于字長(zhǎng)一定的運(yùn)算,總的校正因子是一個(gè)常數(shù)。迭代n次(n→∞)后可以得到如下結(jié)果:
當(dāng)給定的初始輸入數(shù)據(jù)為x0=1/k,y0=0時(shí),z0=θ,則輸出為:
由上可知,xn,yn分別為輸入角θ的余弦和正弦值,故基于CORDIC算法可產(chǎn)生正交信號(hào)。
2.2 CORDIC算法流水線結(jié)構(gòu)
由式(5)可以看出,CORDIC算法的實(shí)現(xiàn)只需要基本的加減法和移位操作,因此很容易用硬件實(shí)現(xiàn)。該硬件的實(shí)現(xiàn)可以通過(guò)圖2所示的基本單元級(jí)聯(lián)成流水線結(jié)構(gòu)實(shí)現(xiàn)。在經(jīng)過(guò)n(迭代次數(shù))個(gè)時(shí)鐘的建立時(shí)間之后,每隔一個(gè)時(shí)鐘便能輸出一個(gè)運(yùn)算結(jié)果。輸出精度由CORDIC算法中的迭代次數(shù)決定。如需提高精度,只需簡(jiǎn)單地增加流水單元即可,擴(kuò)展性很好,而且這并不會(huì)大量增加FPGA的資源耗費(fèi)。本文引用地址:http://m.butianyuan.cn/article/190890.htm
評(píng)論