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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP的電力線載波OFDM調(diào)制解調(diào)器

          基于DSP的電力線載波OFDM調(diào)制解調(diào)器

          作者: 時(shí)間:2015-02-09 來源:網(wǎng)絡(luò) 收藏

            TMS320C6201的數(shù)據(jù)通路和流水線工作方式是對算法進(jìn)行優(yōu)化從而獲得高性能的基礎(chǔ)。TMS320C6201有兩個(gè)可以進(jìn)行數(shù)據(jù)處理的數(shù)據(jù)通路A和B,每個(gè)通路有4個(gè)功能單元(.L.S.M.D)和一個(gè)包括16個(gè)32位寄存器的寄存器組。功能單元執(zhí)行邏輯、位移、乘法、加法和數(shù)據(jù)尋址等操作。兩個(gè)數(shù)據(jù)尋址單元(.D1和.D2)專門負(fù)責(zé)寄存器組和存儲器之間的數(shù)據(jù)傳遞。在同一時(shí)刻,這些功能單元能夠并行地執(zhí)行多條指令。TMS320C6201對任何指令的操作都能分為幾個(gè)子操作,每個(gè)子操作由不同單元完成。對每個(gè)單元來說,每個(gè)時(shí)鐘周期可進(jìn)入一條新指令,這樣在不同周期內(nèi),不同單元可以處理不同的指令,這種工作方式稱?quot;流水線工作方式。TMS320C6201的特殊結(jié)構(gòu),可使8條指令同時(shí)通過流水線的每個(gè)節(jié)拍,從而大大提高了機(jī)器的吞吐量。

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

            為使代碼達(dá)到最大效率,程序?qū)⒈M可能將指令安排為并行執(zhí)行。為使指令并行操作,程序確定指令間的相關(guān)性,即一條指令必須發(fā)生在另一條指令之后。根據(jù)TMS320C6201的數(shù)據(jù)通路和流水線工作方式,在此給出一種高效實(shí)現(xiàn)16點(diǎn)Radix4FFT的方法。其基本思想是分解傳統(tǒng)的FFT蝶型算法循環(huán)體,將其分別展開在A、B通路內(nèi)計(jì)算兩個(gè)FFT蝶型算法。每個(gè)蝶型算法分別只分配自己這一側(cè)的寄存器組和功能單元。這樣在循環(huán)體內(nèi)兩個(gè)蝶型算法是完全不相關(guān)的,能夠并行執(zhí)行。下面給出基于C.S.Burrus和T.W.Parks的Radix4FFT算法的優(yōu)化算法的代碼實(shí)現(xiàn)。

            void radix4(int n,short x[], short w[])

            {

            int n1,n2,ie,wa1,wa2,wa3, wb1, wb2,wb3,ia0,ia1,ia2,ia3,ib0,ib1,ib2,ib3,j,k;

            short ta,tb,ra1,ra2, rb1,rb2,sa1,sa2,sb1,sb2,coa1,coa2,coa3,cob1,cob2,cob3,sia1,sia2,sia3,sib1,sib2,sib3;

            n2=n;

            ie=1;

            for(k=n;k>1;k>>=2)

            { //number of stage

            n1=n2;

            n2>>=2; // distance between input datas

            wa1=0;

            for(j=0;j

            wb1=wa1+ie;

            wa2=wa1+wa1;

            wb2=wb1+wb1; //since heremost of the folow-ering two instructions are parallel

            wa3=wa2+wa1;

            wb3=wb2+wb1;

            coa1=w[wa1*2+1];

            cob1=w[wb1*2+1];

            sia1=w[wa1*2];

            sib1=w[wb1*2];

            coa2=w[wa2*2+1];

            cob2=w[wb2*2+1];

            sia2=w[wa2*2];

            sib2=w[wb2*2];

            coa3=w[wa3*2+1];

            cob3=w[wb3*2+1];

            sia3=w[wa3*2];

            sib3=w[wb3*2];

            wa1=wb1+ie;

            for(ia0=j,ib0=j+1;ia0

            {//loop of two butterflies caculation

            ia1=ia0+n2;

            ib1=ib0+n2;

            ia2=ia1+n2;

            ib2=ib1+n2;

            ia3=ia2+n2;

            ib3=ib2+n2;

            ra1=x[2*ia0]+x[2*ia2];

            rb1=x[2*ib0]+x[2*ib2];

            ra1=x[2*ia0]-x[2*ia2];

            rb1=x[2*ib0]-x[2*ib2];

            ta=x[2*ia1]+x[2*ia3];

            tb=x[2*ib1]+x[2*ib3];

            x[2*ia0]=ra1+ta; // x[2*ia0]

            x[2*ib0]=rb1+tb; // x[2*ia0]

            ra1=ra1-ta;

            rb1=rb1-tb;

            sa1=x[2*ia0+1]+x[2*ia2+1];

            sb1=x[2*ib0+1]+x[2*ib2+1];

            sa2=x[2*ia0+1]-x[2*ia2+1];

            sb2=x[2*ib0+1]-x[2*ib2+1];

            ta=x[2*ia1+1]+x[2*ia3+1];

            tb=x[2*ib1+1]+x[2*ib3+1];

            x[2*ia0+1]=sa1+ta;

            x[2*ib0+1]=sb1+tb;

            sa1=sa1-ta;

            sb1=sb1-tb;

            x[2*ia2]=(ra1*coa2+sa1*sia2)>>15;

            x[2*ib2]=(rb1*cob2+sb2*sib2)>>15;

            x[2*ia2+1]=(sa1*coa2-ra1*sia2)>>15;

            x[2*ib2+1]=(sb1*cob2-rb1*sib2)>>15;

            ta=x[2*ia1+1]-x[2*ia3+1];

            ra1=ra2+ta;

            rb1=rb2+tb;

            ra2=ra2-ta;

            rb2=rb2-tb;

            ta=x[2*ia1]-x[2*ia3];

            tb=x[2*ib1]-x[2*ib3];

            sa1=sa2-ta;

            sb1=sb2-tb;

            sa2=sa2+ta;

            sb2=sb2+tb;

            x[2*ia1]=(ra1*coa1+sa1*sia1) >>15;

            x[2*ib1]=(rb1*cob1+sb1*sib1) >>15;

            x[2*ia1+1]=(sa1*coa1-ra1*sia1)>>15;

            x[2*ib1+1]=(sb1*cob1-rb1*sib1)>>15;

            x[2*ia3]=(ra2*coa3+sa2*sia3) >>15;

            x[2*ib3]=(rb2*cob3+sb2*sib3) >>15;

            x[2*ia3+1]=(sa2*coa3-ra2*sia3)>>15;

            x[2*ib3+1]=(sb2*cob3-rb2*sib3)>>15;

            }

            }

            ie <<=2

            }

            }

          模數(shù)轉(zhuǎn)換器相關(guān)文章:模數(shù)轉(zhuǎn)換器工作原理


          分頻器相關(guān)文章:分頻器原理

          上一頁 1 2 下一頁

          評論


          相關(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); })();