色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>DSP>詳談TMS320C62X DSP的混合編程

詳談TMS320C62X DSP的混合編程

2017-11-03 | rar | 0.6 MB | 次下載 | 1積分

資料介紹

TMS320C62X是美國德州儀器公司TI)的新一代高性能定點數字信號處理器DSP芯片?;贒SP的軟件設計問題,就是采用編程語言進行算法實現并使程序效率盡量滿足實時性要求。TI DSP的軟件設計可以采用匯編語言、高級語言(C/C++)以及C語言與匯編語言的混合編程。完全采用匯編語言編程復雜性高、開發周期長,而完全采用C語言編程則程序的執行效率相對較低,不能滿足實時性的要求。為了設計出性價比最好、開發周期較短、比較復雜的DSP系統,可以采用混合語言編程,把C語言和匯編語言的優點有效地結合起來。C語言和匯編語言的混合編程有三種形式:在編寫C語言代碼中插入匯編語句,只需在匯編語句兩邊加上雙引號和括號,在括號前面加上標識asm,如asm(“匯編語句”);在編寫C代碼的過程中調用內聯函數,TMS320C62X中有一些直接映射為內聯的C6000指令的特殊函數,內聯函數用前下劃線(_)表示,使用時同調用C語言的庫函數一樣調用它,如b=_nassert(N》=10);匯編代碼以C代碼可以調用的函數出現。本文采用第三種形式。為了使程序代碼的執行具有盡可能高的執行效率,本文將著重點放在并行匯編代碼的編程,而不是線性匯編代碼的編程。
  1 C語言與匯編語言混合編程的接口規范和標準
  用C語言編寫的代碼中核心代碼常常只是整個程序代碼的5%,但是卻占用了整個程序約95%的執行時間。對這些核心代碼采用匯編語言編寫,可以大大提高代碼的執行效率,而C語言程序可以象調用C程序的一個函數那樣去調用這個匯編函數。為了實現C語言和匯編語言的混合編程,需要注意一些規定的接口規范和標準。
 ?。?)采用C語言和匯編語言混合編程時,TMS320C62X定義了一套嚴格的寄存器規則。這個寄存器規則表明了編譯器如何使用這些寄存器以及在函數調用過程中如何保護這些寄存器。
  調用函數保護了寄存器A0~A9和B0~B9,這就使得在編寫匯編程序的時候可以任意的使用這幾個寄存器而不需保護它們。但當使用到寄存器A10~A15或B10~B15的時候,則必須自行對它們進行保護。長型、雙精度型或者是長雙精度型的數據對象要放在一個奇/偶寄存器對(如A1:A0)里,奇數寄存器存放著數據的符號位、指數位和最高有效位,而偶數寄存器則存放著低有效位。
  在默認情況下,A3用作返回結構指針寄存器,B3用作被調用函數返回地址寄存器,A15用作幀指針寄存器,B14用作數據頁指針寄存器,B15用作堆棧指針寄存器。這些寄存器在被調用的匯編函數中用到時都要進行保護。
  (2)調用函數將參數傳遞到被調用函數中,前十個參數將被從左到右依次放入寄存器A4、B4、A6、B6、A8、B8、A10、B10、A12和B12,如果傳遞的參數是長型、雙精度型或者是長雙精度型,則將參數依次放入寄存器組A5:A4、B5:B4、A7:A6等,并將剩下的變量按相反的順序放在堆棧里。注意,如果傳遞的參數是一個結構類型的參數,則傳遞的是該結構類型的地址。
 ?。?)如果在C/C++調用函數中做了正確的函數返回聲明,則被調用的匯編函數可以返回有效值。如果返回值是整型或32位的浮點型,則放在寄存器A4中返回;如果返回值是雙精度或是長雙精度型,則放在A5:A4中返回;如果返回值是一個結構類型,則將其結構的地址放在A3中返回。
  (4)編譯器為所有的外部對象指定一個鏈接時的名字。當寫匯編語言代碼時,必須用與這個名字相同的名字。對于只在匯編語言模塊中用到的變量的標識符,不能從下劃線開始。任何一個在匯編語言中聲明的對象都要使其在C/C++中是可訪問的,那么在匯編語言中必須用.def 或.global將其聲明為外部變量。同樣在匯編語言中要引用C/C++函數或對象時,必須用.ref 或.global將C/C++對象聲明,這將產生一個在匯編語言函數中沒有定義的由鏈接器辨識的外部引用。
  還有一些細節也需要注意,如中斷子程序必須把該子程序將要用到的所有寄存器進行入棧處理;除了全局變量的初始化外,匯編語言的模塊不得因為任何目的而使用.cinit段;匯編代碼的結束需用指令B.s2 B3將程序執行從被調用函數返回到C語言調用函數中。
  2 并行匯編代碼的編寫
  C6000的匯編代碼格式如下:
  標號: 并行標記 [條件寄存器]指令助記符 功能單元 操作數 ;注釋。如:
  LDW .D2 *B4,B2
  || [A1]SHL .S2X A4,B4 ;用到了交叉數據通道
  TMS320C62X片內有8個并行的處理單元,分為相同的兩組。其體系結構采用超長指令字(VLIW)結構,一個指令包里的8條并行指令可同時分配到8個處理單元并行運行。這種一個指令包里有8條指令并行執行也給并行匯編代碼的編寫帶來很多要考慮的問題,具體如下:
 ?。?)TMS320C62X指令的執行可以用延遲間隙來說明。延遲間隙在數量上等于從指令的源操作數被讀取到執行的結果可以被訪問所用的指令周期。如對于乘法指令(MPY),源操作數從第i個周期被讀取,則其計算結果在第(i+2)個周期才可用。
 ?。?)使用相同功能單元的兩條指令不能被安排為并行指令。
 ?。?)使用同一條交叉通路的兩條指令不能被安排在同一個執行指令包中,這是因為從寄存器組A~B或者從B~A都只有一條交叉通路。
  (4)將數據讀入到(或存儲自)相同寄存器組的兩條讀(寫)指令不能被安排在同一個執行包中。
 ?。?)每一個執行包里只能允許每一寄存器組處理一個長定點類型數據。
  (6)在一個指令周期內對同一寄存器讀取多于四次是不允許的,但條件寄存器不在此限制之列。在一個指令周期內,不能 同時存在兩條寫入同一寄存器的指令,只有在寫操作不是在同一個指令周期發生時,才可以將具有同一目的地址的兩條指令安排并行。
  3 基于TMS320C62X的運動補償的混合編程設計實例
  運動補償是MPEG-4標準中的一種重要算法。運動補償是指根據運動矢量在參考幀中找出參考塊。如果運動矢量的X分量和Y分量都是整象素長度,則直接在參考幀中找出參考塊。如果為半象素長度,則需要通過內插運算計算出參考塊,計算出的參考塊需要加上解碼得出的誤差塊才能得到當前參考塊。本文給出了運動矢量的X分量和Y分量都是整象素長度時的運動補償方法。根據運動矢量可直接在參考幀中找到參考塊(8×8)。完成此功能的C語言函數如下:
  void mc_case_a2(unsigned char *pSrc, short SrcOffset, short SrcWidth, unsigned char *pDst, short RoundCtrl)
  { ……
  for (i=0; i《8; i++)
  {
  *(tmp_P_Dst+i) = *(tmp_P_Src+i);
  。..。..
  }
  }
  參數運動矢量SrcOffset對4(4個字節為一個字,長32位)的余數可能是0、1、2、3。當余數是0的時候,編譯后執行代碼是按字讀?。↙DW)的,這充分體現了TMS320C62X的優點,也使程序的運行效率比較高。而當余數不為0的時候,則可能是按字節讀?。↙DB)或是按半字讀取(LDH),這使程序的運行效率較低。視頻的編碼和解碼都要用到運動補償來重構圖像,這是一個很費時的操作,而且其代碼也是圖像處理中的核心代碼,這樣就要求編寫高效的程序來完成此操作。為了使代碼的運行效率更高,且結合TMS320C62X的硬件特點,希望對于不同的運動矢量,做運動補償的時候都能采用按字讀取和存儲的方式。這需要對運動矢量參數除以4,根據余數調整指針,使指針始終指向字對齊方式(而在C程序中當前塊是char型的以字節方式存儲的,對其進行移位處理只能是一個字節一個字節地進行移位,這就使得在C程序中不能用和匯編程序同樣的方法來對程序進行優化),如運動矢量除以4以后的余數為1,為了使要取的8個象素對準字訪問方式,則要按圖1進行操作。
下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1電子電路原理第七版PDF電子教材免費下載
  2. 0.00 MB  |  1489次下載  |  免費
  3. 2單片機典型實例介紹
  4. 18.19 MB  |  91次下載  |  1 積分
  5. 3S7-200PLC編程實例詳細資料
  6. 1.17 MB  |  27次下載  |  1 積分
  7. 4筆記本電腦主板的元件識別和講解說明
  8. 4.28 MB  |  18次下載  |  4 積分
  9. 5開關電源原理及各功能電路詳解
  10. 0.38 MB  |  9次下載  |  免費
  11. 6基于AT89C2051/4051單片機編程器的實驗
  12. 0.11 MB  |  4次下載  |  免費
  13. 7基于單片機和 SG3525的程控開關電源設計
  14. 0.23 MB  |  3次下載  |  免費
  15. 8基于單片機的紅外風扇遙控
  16. 0.23 MB  |  3次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234313次下載  |  免費
  3. 2PADS 9.0 2009最新版 -下載
  4. 0.00 MB  |  66304次下載  |  免費
  5. 3protel99下載protel99軟件下載(中文版)
  6. 0.00 MB  |  51209次下載  |  免費
  7. 4LabView 8.0 專業版下載 (3CD完整版)
  8. 0.00 MB  |  51043次下載  |  免費
  9. 5555集成電路應用800例(新編版)
  10. 0.00 MB  |  33562次下載  |  免費
  11. 6接口電路圖大全
  12. 未知  |  30319次下載  |  免費
  13. 7Multisim 10下載Multisim 10 中文版
  14. 0.00 MB  |  28588次下載  |  免費
  15. 8開關電源設計實例指南
  16. 未知  |  21539次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935053次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537791次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420026次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234313次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233045次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191183次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183277次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138039次下載  |  免費
主站蜘蛛池模板: 精品麻豆一卡2卡三卡4卡乱码| 欧美一区二区三区播放| 午夜色网站| 韩国黄电影| 最近中文字幕MV免费高清视频8| 免费乱理伦片在线观看八戒| JAPANBABES11学生老师| 翁熄性放纵交换01| 寂寞夜晚在线视频观看| 2017年伦理片免费观看| 日本十八禁无遮无挡漫画| 国产在线观看99| 99免费在线| 亚洲成AV人电影在线观看| 美女教师朝桐光在线播放| 国产精品成人无码久免费| 又黄又肉到湿的爽文| 日韩亚洲欧美中文高清在线| 国色天香社区视频免费高清3| 97无码欧美熟妇人妻蜜桃天美| 同时和两老师双飞| 蜜臀久久99精品久久久久久做爰| 国产成人免费片在线观看| 最近中文字幕完整版免费高清| 肉动漫h黄动漫日本免费观看| 久久精品国产欧美| 高H高肉强J短篇校园| 最新黄yyid| 亚洲精品国产精品麻豆99| 热九九99香蕉精品品| 久久橹| 国产国拍精品AV在线观看| 99久久99久久精品免费看子| 亚洲精品有码在线观看| 乳液全集电影在线观看| 麻豆精品一区二正一三区| 国产亚洲日韩欧美视频| 超大BBWWW| 97国产人妻精品无码AV在线| 亚洲视频在线观看视频| 推倒美女总裁啪啪|