第三章DSP匯編指令_第1頁
第三章DSP匯編指令_第2頁
第三章DSP匯編指令_第3頁
第三章DSP匯編指令_第4頁
第三章DSP匯編指令_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第三章:DSP匯編指令‘C54x尋址方式‘C54x特殊尋址方式說明‘C54x指令集‘C54x特殊指令使用說明一、TMS320C54x的尋址方式

立即數尋址:指令中嵌有一個固定的數絕對地址尋址:指令中有一個固定的地址累加器尋址:按累加器內的地址去訪問程序存儲器中的一個單元直接尋址:指令中的7bits是一個數據頁內的偏移地址,而所在的數據頁由數據頁指針DP或SP決定。該偏移加上DP和SP的值決定了在數據存儲器中的實際地址。間接尋址:按照輔助寄存器中的地址訪問存儲器。存儲器映射寄存器尋址:修改存儲器映射寄存器中的值,而不影響當前DP或SP的值。堆棧尋址:把數據壓入和彈出系統(tǒng)堆棧。

在立即數尋址中,指令里包括了立即操作數。在一條指令中可對兩種立即數編碼。一種是短立即數(3、5、8或9bits),另一種是16bits的長立即數。立即數可包含在單字或雙字指令中。3-,5-,8-或9-bit值在單字指令中,16-bit值在雙字指令中。1.立即數尋址立即數尋址的其他例子:LD#0,ARP;ARP=0(#k3)LD#3,ASM;ASM=3(#k5)LD#50,DP;DP=50(#k9)LD#1234,A;A=1234(#K)STM#FFFFh,IMR;IMR=FFFFh(#lk)短立即數RPT長立即數RPT2.直接尋址

在直接尋址中,指令代碼包含了數據存儲器地址的低七位。這7-bitdma(數據存儲器地址)作為偏移地址與數據頁指針(DP)或堆棧指針(SP)相結合共同形成16-bit的數據存儲器實際地址。如右圖所示。CPL=0:dma與9-bit的DP相結合形成數據存儲器地址。以DP為基準的直接尋址DP9-bit9-bit的DP指向數據存儲空間的512個數據頁中的一頁012510511以SP為基準的直接尋址CPL=1:dma加上SP基地址形成數據存儲器地址。(st1中)使用以SP為基址的直接尋址:ANDsample,ALDsample,AADDsample,B;……..3.間接尋址

在間接尋址中,64K數據空間任意單元都可通過一個輔助寄存器中的16-bit地址進行訪問?!瓹54x有8個16-bit輔助寄存器(AR0-AR7)。兩個輔助寄存器算術單元(ARAU0和ARAU1),根據輔助寄存器的內容進行操作,完成無符號的16-bit算術運算。間接尋址很靈活,不僅能從存儲器中讀或寫一個單16-bit數據操作數,而且能在一條指令中訪問兩個數據存儲器單元(即從兩個獨立的存儲器單元讀數據,或讀一個存儲器單元同時寫另一個存儲器單元,或讀寫兩個連續(xù)的存儲器單元)。單操作數尋址單操作數間接尋址方框圖單操作數間接尋址類型:*ARx:ARx包含了數據存儲器地址*ARx-/*ARx+:訪問后,ARx中的地址減1/加1*+ARx:在尋址之前,ARx中的地址加1*ARx-0B/*ARx+0B:訪問后,從ARx中以位倒序進位的方式減去/加上AR0*ARx-0/*ARx+0:訪問后,從ARx中減去/加上AR0*ARx-%/*ARx+%:訪問后,ARx中的地址以循環(huán)尋址的方式減1/加1*ARx-0%/*ARx+0%:訪問后,從ARx中以循環(huán)尋址的方式減去/加上AR0*ARx(lk):ARx和16-bit的長偏移(lk)的和用來作為數據存儲器地址。ARx本身不被修改編程舉例:4.絕對地址尋址有個別指令可以使用16bits的絕對地址尋址:

數據存儲器地址(dmad)尋址:MVDKSmem,dmadMVDMdmad,MMRMVKDdmad,SmemMVMDpmad,Smem程序存儲器地址(pmad)尋址:FIRSXmem,Ymem,pmadMACDSmem,pmad,srcMACPSmem,pmad,srcMVPDpmad,Smem端口地址(PA)尋址PORTRPA,SmemPORTWSmem,PA*(lk)尋址適用于支持單數據存儲器操作數的指令

5.累加器尋址

累加器尋址是用累加器中的數作為一個地址。這種尋址方式可用來對存放數據的程序存儲器尋址。共有兩條指令可以采用累加器尋址:READASmemWRITASmemREADA是把累加器A所確定的程序存儲器單元中的一個字,傳送到單數據存儲器(Smem)操作數所確定的數據存儲器單元中。WRITA是把Smem操作數所確定的數據單元中的一個字,傳送到累加器A確定的程序存儲器單元中去。只有8條指令能使用存儲器映射寄存器尋址:LDMMMR,dstMVDMdmad,MMRMVMDMMR,dmadMVMMMMRx,MMRyPOPMMMRPSHMMMRSTLMsrc,MMRSTM#lk,MMR6.存儲器映射寄存器尋址

存儲器映射寄存器尋址用來修改存儲器映射寄存器而不影響當前數據頁指針(DP)或堆棧指針(SP)的值。存儲器映射寄存器尋址既可以在直接尋址中使用,又可以在間接尋址中使用。

7.堆棧尋址

系統(tǒng)堆棧用來在中斷和子程序期間自動存放程序計數器。它也能用來存放額外的數據項或傳遞數據值。處理器使用一個16-bit的存儲器映射寄存器—堆棧指針來對堆棧尋址,它總是指向存放在堆棧中的最后一個元素。

共有四條使用堆棧尋址方式訪問堆棧的指令: PSHD把一個數據存儲器的值壓入堆棧。 PSHM把一個存儲器映射寄存器的值壓入堆棧。 POPD把一個數據存儲器的值彈出堆棧。 POPM把一個存儲器映射寄存器的值彈出堆棧。§3-2特殊尋址方式說明本小節(jié)重點介紹兩種廣泛應用的特殊尋址方式—位倒序尋址和循環(huán)尋址。

位倒序尋址

位倒序尋址提高了執(zhí)行速度和在FFT算法的程序中使用存儲器的效率。在這種尋址方式中,AR0存放的整數N是FFT點數的一半。一個輔助寄存器指向一數據存放的物理單元。當使用位倒序尋址把AR0加到輔助寄存器中時,地址以位倒序的方式產生,即進位是從左向右,而不是從右向左。間接尋址中*ARn+0B/-0B表示位倒序尋址。位倒序尋址的執(zhí)行

設FFT長度N=16,x(0)~x(15)位于地址(01100000)~(01101111),則AR0賦值為8,位倒序方式讀入數據情況如下(AR2初始為01100000):循環(huán)尋址:

許多算法,如卷積,相關和FIR濾波等,都需要在存儲器中實現一個循環(huán)緩沖器。在這些算法中,一個循環(huán)緩沖器就是一個包含了最近的數據的滑動窗口。當新的數據來到時,緩沖器就會覆蓋最早的數據。循環(huán)緩沖器實現的關鍵是循環(huán)尋址的實現?!瓹54x間接尋址中提供了循環(huán)尋址的方式,以%表示。循環(huán)尋址圖示if0≤

index+step<BK:

index=index+step

elseifindex+step≥BK:

index=index+step-BK

elseifindex+step<0

index=index+step+BK

TMS320C54x的指令集有近兩百條指令,按功能分為如下幾類: 算術運算指令 邏輯運算指令 程序控制指令 裝入和存儲指令§3-3TMS320C54x的指令集

指令中用到的縮寫符號及其含義縮寫符號含義Smem16位單數據存儲器操作數Xmem在雙操作數指令及某些單操作數指令中所用的16位雙數據存儲器操作數,從DB總線上讀出Ymem在雙操作數指令中所用的16位雙數據存儲器操作數,從CB總線上讀出;在讀同時并行寫的指令中表示寫操作數dmad16位立即數——數據存儲器地址(0~65535)pmad16位立即數——程序存儲器地址(0~65535)PA16位立即數——I/O口地址(0~65535)src源累加器(A或B)dst目的累加器(A或B)lk16位長立即數一、算術運算指令算術運算指令可分為如下幾類: 加法指令 減法指令 乘法指令 乘加指令 乘減指令 雙數/雙精度指令 特殊操作指令1、加法指令2、減法指令3、乘法指令4、乘加和乘減指令5、雙精度/雙數操作指令6、特殊指令二、邏輯運算指令邏輯指令包括與、或、異或、移位和測試指令1、與指令(AND)2、或、異或指令3、移位和測試指令三、程序控制指令程序控制指令包括:

分支指令 調用指令 中斷指令 返回指令

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論