<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > EDA/PCB > 設(shè)計(jì)應(yīng)用 > 正交幅度調(diào)制解調(diào)器的FPGA設(shè)計(jì)與仿真

          正交幅度調(diào)制解調(diào)器的FPGA設(shè)計(jì)與仿真

          作者: 時(shí)間:2011-12-21 來(lái)源:網(wǎng)絡(luò) 收藏

          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),則:
          d.jpg

          式中:θ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);e.jpg為每一級(jí)的校正因子,也就是每一級(jí)旋轉(zhuǎn)時(shí)向量模長(zhǎng)發(fā)生的變化,對(duì)于字長(zhǎng)一定的運(yùn)算,總的校正因子是一個(gè)常數(shù)。迭代n次(n→∞)后可以得到如下結(jié)果:
          f.jpg
          當(dāng)給定的初始輸入數(shù)據(jù)為x0=1/k,y0=0時(shí),z0=θ,則輸出為:
          g.jpg
          由上可知,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ì)大量增加的資源耗費(fèi)。

          本文引用地址:http://www.ex-cimer.com/article/190890.htm

          h.jpg




          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();