在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于TMS320C62X DSP的混合編程研究

            基于TMS320C62X DSP的混合編程研究

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

            本文引用地址:http://www.biyoush.com/article/258049.htm
              2 并行代碼的編寫(xiě)

              C6000的代碼格式如下:

              標(biāo)號(hào): 并行標(biāo)記 [條件寄存器]指令助記符 功能單元 操作數(shù) ;注釋。如:

              LDW .D2 *B4,B2

              || [A1]SHL .S2X A4,B4 ;用到了交叉數(shù)據(jù)通道

              TMS320C62X片內(nèi)有8個(gè)并行的處理單元,分為相同的兩組。其體系結(jié)構(gòu)采用超長(zhǎng)指令字(VLIW)結(jié)構(gòu),一個(gè)指令包里的8條并行指令可同時(shí)分配到8個(gè)處理單元并行運(yùn)行。這種一個(gè)指令包里有8條指令并行執(zhí)行也給并行代碼的編寫(xiě)帶來(lái)很多要考慮的問(wèn)題,具體如下:

              (1)TMS320C62X指令的執(zhí)行可以用延遲間隙來(lái)說(shuō)明。延遲間隙在數(shù)量上等于從指令的源操作數(shù)被讀取到執(zhí)行的結(jié)果可以被訪問(wèn)所用的指令周期。如對(duì)于乘法指令(MPY),源操作數(shù)從第i個(gè)周期被讀取,則其計(jì)算結(jié)果在第(i+2)個(gè)周期才可用。

              (2)使用相同功能單元的兩條指令不能被安排為并行指令。

              (3)使用同一條交叉通路的兩條指令不能被安排在同一個(gè)執(zhí)行指令包中,這是因?yàn)閺募拇嫫鹘MA~B或者從B~A都只有一條交叉通路。

              (4)將數(shù)據(jù)讀入到(或存儲(chǔ)自)相同寄存器組的兩條讀(寫(xiě))指令不能被安排在同一個(gè)執(zhí)行包中。

              (5)每一個(gè)執(zhí)行包里只能允許每一寄存器組處理一個(gè)長(zhǎng)定點(diǎn)類型數(shù)據(jù)。

              (6)在一個(gè)指令周期內(nèi)對(duì)同一寄存器讀取多于四次是不允許的,但條件寄存器不在此限制之列。在一個(gè)指令周期內(nèi),不能 同時(shí)存在兩條寫(xiě)入同一寄存器的指令,只有在寫(xiě)操作不是在同一個(gè)指令周期發(fā)生時(shí),才可以將具有同一目的地址的兩條指令安排并行。

              3 基于TMS320C62X的運(yùn)動(dòng)補(bǔ)償?shù)?a class="contentlabel" href="http://www.biyoush.com/news/listbylabel/label/混合編程">混合編程設(shè)計(jì)實(shí)例

              運(yùn)動(dòng)補(bǔ)償是MPEG-4標(biāo)準(zhǔn)中的一種重要算法。運(yùn)動(dòng)補(bǔ)償是指根據(jù)運(yùn)動(dòng)矢量在參考幀中找出參考?jí)K。如果運(yùn)動(dòng)矢量的X分量和Y分量都是整象素長(zhǎng)度,則直接在參考幀中找出參考?jí)K。如果為半象素長(zhǎng)度,則需要通過(guò)內(nèi)插運(yùn)算計(jì)算出參考?jí)K,計(jì)算出的參考?jí)K需要加上解碼得出的誤差塊才能得到當(dāng)前參考?jí)K。本文給出了運(yùn)動(dòng)矢量的X分量和Y分量都是整象素長(zhǎng)度時(shí)的運(yùn)動(dòng)補(bǔ)償方法。根據(jù)運(yùn)動(dòng)矢量可直接在參考幀中找到參考?jí)K(8×8)。完成此功能的函數(shù)如下:

              void mc_case_a2(unsigned char *pSrc, short SrcOffset, short SrcWidth, unsigned char *pDst, short RoundCtrl)

              { ……

              for (i=0; i8; i++)

              {

              *(tmp_P_Dst+i) = *(tmp_P_Src+i);

              ......

              }

              }

              參數(shù)運(yùn)動(dòng)矢量SrcOffset對(duì)4(4個(gè)字節(jié)為一個(gè)字,長(zhǎng)32位)的余數(shù)可能是0、1、2、3。當(dāng)余數(shù)是0的時(shí)候,編譯后執(zhí)行代碼是按字讀取(LDW)的,這充分體現(xiàn)了TMS320C62X的優(yōu)點(diǎn),也使程序的運(yùn)行效率比較高。而當(dāng)余數(shù)不為0的時(shí)候,則可能是按字節(jié)讀取(LDB)或是按半字讀取(LDH),這使程序的運(yùn)行效率較低。視頻的編碼和解碼都要用到運(yùn)動(dòng)補(bǔ)償來(lái)重構(gòu)圖像,這是一個(gè)很費(fèi)時(shí)的操作,而且其代碼也是圖像處理中的核心代碼,這樣就要求編寫(xiě)高效的程序來(lái)完成此操作。為了使代碼的運(yùn)行效率更高,且結(jié)合TMS320C62X的硬件特點(diǎn),希望對(duì)于不同的運(yùn)動(dòng)矢量,做運(yùn)動(dòng)補(bǔ)償?shù)臅r(shí)候都能采用按字讀取和存儲(chǔ)的方式。這需要對(duì)運(yùn)動(dòng)矢量參數(shù)除以4,根據(jù)余數(shù)調(diào)整指針,使指針始終指向字對(duì)齊方式(而在C程序中當(dāng)前塊是char型的以字節(jié)方式存儲(chǔ)的,對(duì)其進(jìn)行移位處理只能是一個(gè)字節(jié)一個(gè)字節(jié)地進(jìn)行移位,這就使得在C程序中不能用和匯編程序同樣的方法來(lái)對(duì)程序進(jìn)行優(yōu)化),如運(yùn)動(dòng)矢量除以4以后的余數(shù)為1,為了使要取的8個(gè)象素對(duì)準(zhǔn)字訪問(wèn)方式,則要按圖1進(jìn)行操作。

              根據(jù)運(yùn)動(dòng)矢量參數(shù)進(jìn)行移位使其對(duì)準(zhǔn)字訪問(wèn)的核心代碼的程序?yàn)?

              MVK .S2 0xFFFC,temp     ;獲得地址的LSB位

              ADD .L1X pSrc,offset,pSrc ;參考?jí)K第一個(gè)元素的地址

              AND .L2X pSrc,temp,tmp_pSrc ;字對(duì)準(zhǔn)訪問(wèn)的地址

              AND .S1 0x0003,pSrc,rshiftA ;用兩個(gè)LSB位得

              ;到了需右移幾個(gè)字

              SUB   .L1 0x04,rshiftA,lshiftA ;需左移幾個(gè)字

              MPY   .M1 rshiftA,8,rshiftA ;需右移的#bit數(shù)

              MPY .M1 lshiftA,8,lshiftA ;需左移的#bit數(shù)

              作為一個(gè)說(shuō)明與匯編程序的設(shè)計(jì)例子,采用并行匯編實(shí)現(xiàn)了這個(gè)函數(shù)的優(yōu)化。這里只給出部分匯編程序:

              .text    ;將該段匯編代碼安排在.text

              段,當(dāng)然通過(guò)在中用

              #program_section也可以將其安排在其它自己命名的段中。

              .global mc_case_a    ;函數(shù)名,用.def或.gloal對(duì)其進(jìn)行

              聲明,使得C代碼調(diào)用該函數(shù)

              _mc_case_a:     ;標(biāo)號(hào),是C調(diào)用函數(shù)和匯編

              被調(diào)用函數(shù)的接口處

              ……


            關(guān)鍵詞: DSP TI 混合編程 C語(yǔ)言 匯編

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉