




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第3章TMS320C54x的指令系統 知識要點: 本章涉及的內容包括TMS320C54x指令系統尋址方式的分類和功能,指令系統中的常用符號、縮略語和運算符,數據傳送、算術運算、邏輯運算、程序控制、并行操作和重復操作指令。3.1 尋址方式 指令的尋址方式是指硬件尋找指令指定的參與運算的操作數的方法。 TMS320C54x有7種基本的數據尋址方式:立即尋址、絕對尋址、累加器尋址、直接尋址、間接尋址、存儲器映像寄存器尋址和堆棧尋址。 表3.1.1列出了尋址方式中用到的一些縮略語名稱及其含義。 縮寫符號含義Smem16位單數據存儲器操作數Xmem在雙操作數指令及某些單操作數指令中所用的16位雙數據存儲
2、器操作數,從DB總線上讀出Ymem在雙操作數指令中所用的16位雙數據存儲器操作數,從CB總線上讀出;在讀同時并行寫的指令中表示寫操作數dmad16位立即數數據存儲器地址(065535)pmad16位立即數程序存儲器地址(065535)PA16位立即數I/O口地址(065535)src源累加器(A或B)dst目的累加器(A或B)lk16位長立即數表3.1.1部分尋址縮略語3.1.1 立即尋址 立即尋址主要用于初始化,其特點是指令中包含有一個固定的立即數,因此沒有尋找數據地址的過程。 在一條指令中的立即數有短立即數和長立即數兩類。 立即數的長度由使用的指令類型決定。 表3.1.2列出了可以包含立即
3、數的指令,并指出了立即數的位數。 3位或5位立即數 8位立即數 9位立即數 16位立即數 LD FRAME LD RPT LDADD ADDM AND ANDM BITF CMPMLD MAC OR ORMRPT RPTZ ST STM SUB XOR XORM表3.1.2 支持立即尋址的指令 在立即尋址方式指令中,應在數值或符號前面加一個“#”,表示一個立即數,以區別于地址。例如,將一個十六進制數80H,裝入累加器A的指令為: LD#80H,A3.1.2 絕對尋址 絕對尋址利用16位地址尋址存儲單元,其特點是指令中包含一個固定地址。 絕對尋址有以下四種類型: 數據存儲器地址(dmad)尋址
4、該尋址類型用于確定操作數存于數據存儲單元的地址。 語法是使用一個程序標號或一個數字來指定數據空間的一個地址。 例如,將數據存儲器EXAM1地址單元中的數據復制到AR5寄存器指向的數據存儲單元中去,即 MVKDEXAM1,*AR5 其中EXAM1是16位地址dmad值。 程序存儲器地址(pmad)尋址 該尋址類型用于確定程序存儲器中的一個地址。 語法是使用一個符號或具體的數字來指定程序空間的一個地址。 例如,將程序存儲器TABLE地址單元中的內容復制到AR2寄存器所指向的數據存儲單元中,即 MVPDTABLE,*AR2 其中TABLE是16位地址pmad值。 端口(PA)尋址 該尋址類型是用一個
5、符號或一個數字來確定外部I/O端口的地址。 例如,把一個數從端口位FIFO的I/O口復制到AR5寄存器所指向的數據存儲單元中,即 PORTRFIFO,*AR5 其中FIFO是I/O端口地址PA。 *(1K)尋址 該尋址類型是使用一個指定數據空間的地址來確定數據存儲器中的一個地址。 例如,把地址為PN的數據單元中的數據裝到累加器A中,即 LD*(PN),A3.1.3 累加器尋址 累加器尋址是將累加器的內容作為地址去訪問程序存儲器單元,即將累加器中的數作為地址,用來對存放數據的程序存儲器尋址。有兩條指令可以采用累加器尋址。 READ ASmem WRIT ASmem3.1.4 直接尋址 直接尋址是
6、利用數據指針和堆棧指針尋址,其特點是數據存儲器地址由基地址和偏移地址共同構成,共16位。 基地址位于數據存儲器地址的高9位,偏移地址位于數據存儲器地址(dmad)的低7位。 下面分別給出了直接尋址的指令代碼格式以及各位說明。 操作碼 I=0 數據存儲器地址 158 7 60 位 名稱 功能158 操作碼 這8位包含了指令的操作碼 7 I I=0,表示指令使用的尋址方式位直接尋址60 數據存儲器地址 這7位包含了指令的數據存儲器地址偏移 表3.1.3 直接尋址的各位說明圖3.1.1 直接尋址的指令代碼格式 DP和SP都可以與dmad偏移結合產生實際的地址。 位于狀態寄存器ST1的CPL位可以選擇
7、采用哪種方式生成實際的地址。當CPL=0,以數據頁指針寄存器DP中的9位高位,以指令中的7位為低位,共同構成16位數據存儲單元的地址,如下圖: 9位數據頁指針DP值 7位IR值 157 60圖3.1.2 CPL=0時, 16位數據存儲單元的地址 當CPL=1時,將堆棧指針SP的16位地址與指令中的7位地址相加,形成16位的數據存儲器地址,如圖: 16位堆棧指針SP 150 0 0 0 0 0 0 0 0 0 7位IR值 157 60 有效存儲地址圖3.1.3 CPL=1時, 16位數據存儲單元的地址3.1.5 間接尋址 間接尋址是利用輔助寄存器內容作為地址指針訪問存儲器。 TMS320C54x
8、有8個16位輔助寄存器(AR0AR7)。每一個寄存器都可以用來尋址64K數據存儲空間中任何一個單元。算數運算單元(ARAU0、ARAU1)根據輔助寄存器的內容進行操作,完成16位無符號算術運算。 間接尋址的靈活性體現在:不僅能從存儲器中讀或寫一個單16位的數據操作數,而且能在一條指令中訪問兩個數據存儲單元。 單操作數尋址 下圖列出了單操作數間接尋址指令的格式: 表3.1.4列出了單操作數間接尋址指令的各位說明 158 7 63 20圖3.1.4單操作數間接尋址指令的格式 操作碼 I=1 MOD ARF 表3.15列出了16種單操作數間接尋址的功能及其說明。位名稱功能158 操作碼8位域包含了指
9、令操作碼7II=1,表示間接尋址方式63MOD定義尋址方式的類型20ARF定義了尋址所使用的輔助寄存器,CMPT=0時,則ARF=0確定輔助寄存器,這種方式下,ARP一直為0。 CMPT=1時,若ARF=0,用ARP選擇輔助寄存器,否則用ARF確定,當訪問完成后,把ARF的值裝入ARP。表3.1.4 單操作數間接尋址指令的各位說明表3.1.5 單數據存儲器操作數間接尋址類型 上表中還有兩種特殊的間接尋址方式:循環尋址方式上表中還有兩種特殊的間接尋址方式:循環尋址方式和位倒序尋址方式。和位倒序尋址方式。 循環尋址循環尋址 在信號處理常用的卷積、相關、在信號處理常用的卷積、相關、FIR濾波算法中,
10、都需濾波算法中,都需要在存儲器中實現一個循環緩沖區,它是一個包含最新數要在存儲器中實現一個循環緩沖區,它是一個包含最新數據的滑動窗口。據的滑動窗口。 在尋址計算過程中,新進來的數據會覆蓋較早的數據。在尋址計算過程中,新進來的數據會覆蓋較早的數據。 循環尋址是實現循環緩沖區的關鍵。循環尋址是實現循環緩沖區的關鍵。 寄存器用于確定寄存器用于確定循環緩沖區的大小。長度為的循環緩沖區的大小。長度為的循環緩沖區必須從一個位(是滿足的次方條循環緩沖區必須從一個位(是滿足的次方條件的最小整數)邊界開始。件的最小整數)邊界開始。 例如:例如:長度長度R=32循環緩沖區必須從低循環緩沖區必須從低6位為位為0的地
11、址的地址xxxx xxxx xxx00 0000(N=6, 2632)開始,同時用以下指令將)開始,同時用以下指令將R值加載到值加載到BK中:中: STM#32 BK 循環尋址時,要指定一個循環尋址時,要指定一個ARx指向循環緩沖區的指向循環緩沖區的一個單元。該一個單元。該ARx的低的低N位置位置0后所得到的值為循后所得到的值為循環緩沖區的環緩沖區的有效基地址有效基地址。用。用BK的低的低N位代替位代替ARx的低的低N位所得到的值為位所得到的值為循環緩沖區的尾地址循環緩沖區的尾地址。 ARx的低的低N位就是循環緩沖區的位就是循環緩沖區的index,step就是就是加到加到ARx或從或從ARx中
12、減去的值。循環尋址算法如中減去的值。循環尋址算法如下:下: If 0index+stepBK; index=index+step Else if index+step BK; index=index+step-BK Else if index+step0; index=index+step+BK 實際上是以BK寄存器中的值為模的取模運算。 位倒序尋址 位倒序尋址可以提高FFT等算法效率。 例如16點FFT的位倒序尋址如表3.1.6所示。 C54x提供的位倒序尋址功能,提高了在FFT算法中使用存儲器的效率及其執行速度。 設FFT長度N=16,則AR0賦值為8,AR2表示在存儲區中數據的基地址(0
13、110 0000),位倒序讀入數據:*AR2+0B;AR2=0110 0000 (第0個值) *AR2+0B; AR2=0110 1000 (第1個值) *AR2+0B; AR2=0110 0100 (第2個值) *AR2+0B; AR2=0110 1100 (第3個值) *AR2+0B; AR2=0110 0010 (第4個值) *AR2+0B; AR2=0110 1010 (第5個值) *AR2+0B; AR2=0110 0110 (第6個值) *AR2+0B; AR2=0110 1110 (第7個值)表3.1.6 位倒序尋址返回本節 雙操作數尋址 雙操作數尋址用于完成執行2次讀操作或者1
14、次讀和1次并行存儲操作。這些指令代碼都是1個字長,而且只能以間接尋址方式進行操作。 兩個數據存儲器操作數由Xmem和Ymem 表示,Xmem是讀操作數,Ymem是在讀兩個操作數時表示讀操作數,在1次讀同時并行1次寫的指令中表示寫操作。 下圖列出了雙操作數尋址的指令代碼格式: 操作碼 Xmod Xar Ymod Yar 158 7 6 5 4 3 2 1 0 位位 名稱名稱 功能功能158 操作碼操作碼 8位代碼包含了指令的操作碼位代碼包含了指令的操作碼76 Xmod 定義了用于尋址定義了用于尋址Xmem操作數的間接尋址方式的類型操作數的間接尋址方式的類型54 Xar 2位代碼確定了存儲位代碼確
15、定了存儲Xmem地址的輔助寄存器地址的輔助寄存器32 Ymod 定義了用于尋址定義了用于尋址Ymem操作數的間接尋址方式類型操作數的間接尋址方式類型10 Yar 2位代碼確定存儲位代碼確定存儲Ymem地址的輔助寄存器地址的輔助寄存器表3.1.7 雙操作數的各位說明:圖3.1.5雙操作數尋址的指令代碼格式 由于只有2位可以用于選擇輔助寄存器,所以根據Xar或Yar的值可以選擇4個寄存器。 下表列出了Xar或Yar同輔助寄存器的對應關系: Xar或Yar值 輔助寄存器 00 AR2 01 AR3 10 AR4 11 AR5表3.1.8 Xar或Yar同輔助寄存器的對應關系 下表列出了雙操作數間接尋
16、址的類型: 操作碼語法 功能 說明 *ARx 地址= ARx ARx中的內容是數據存儲地址 *ARx- 地址= ARx 尋址后,ARx的地址減1 ARx=ARx-1 *ARx+ 地址=ARX 尋址后,ARx的地址加1 Arx=ARx+1 *ARx+0% ARx=Circ(ARx+AR0) 尋址后,AR0以尋址方式加到ARx中 地址=ARx表3.1.9 雙操作數間接尋址的類型3.1.6 存儲器映像寄存器尋址 存儲器映像寄存器(MMR)尋址用于修改存儲器映像寄存器的值,而不影響當前數據頁指針(DP)或堆棧指針(SP)的值。由于DP和SP的值不需要修改,所以寫寄存器操作的開銷最小。 存儲器映像寄存器
17、尋址可以工作在直接和間接尋址方式下。有以下兩種產生MMR地址的方法。 直接尋址。 在直接尋址方式中,不管當前DP或SP的值如何,強制數據存儲器地址的高9位為0。 利用指令中數據存儲器地址的低7位訪問MMR,相當于基地址為0的直接尋址方式。 間接尋址。 在間接尋址方式中,使用當前輔助寄存器的低7位作為地址訪問MMR。指令執行后,輔助寄存器中的高9位清為0。3.1.7 堆棧尋址 系統堆棧用于在發生中斷或子程序調用時自動存放程序計數器(PC)中的值。堆棧也能用來保護現場或傳送參數。 C54x的堆棧是從高地址向低地址方向填入。處理器使用一個16位堆棧指針(SP)來對堆棧進行管理,SP始終指向存放在堆棧
18、中的最后一個元素。 有四條指令使用堆棧尋址方式: PSHD,將數據存儲器中的一個數壓入堆棧。 PSHM,將一個存儲器映像寄存器(MMR) 中的值壓入堆棧。 POPD,從堆棧彈出一個數到數據存儲單元。 POPM,從堆棧彈出一個數到存儲器映像寄存器(MMR)。 執行壓入操作時,是先減小SP后再將數據壓入堆棧的;而執行堆棧彈出操作時,則先從堆棧彈出數據,然后再增加SP 的值。3.2 TMS320C54x指令的表示方法 TMS320C54x的助記符指令時由操作碼和操作數兩部分組成。在進行匯編以前,操作碼和操作數都是用助記符表示。3.2.1 指令系統中的符號 表3.2.1是指令系統中的符號和縮略語。 表
19、3.2.1 指令系統中的符號和縮略語3.2.2 指令系統中的運算符 表3.2.2列出了表達式中可用的運算符號及運算的優先級。 符號+ - !取正、取負、按位求補、邏輯負從右到左* / %乘法、除法、求模從左到右+ -加法、減法從左到右指數從左到右左移、右移從左到右 大于、大于或等于從左到右 !=不等于從左到右=等于從左到右&按位與運算從左到右按位異或運算從左到右按位或運算從左到右3.3 TMS320C54x的指令系統 TMS320C54x的指令系統共有129條基本命令,由于操作數的尋址方式不同,由它們可以派生出205條指令。 按指令的功能分類,可以分成數據傳送指令、算術運算指令、邏輯運
20、算指令、程序控制指令、并行操作指令和重復操作指令。3.3.1 數據傳送指令 數據傳送指令是從存儲器中將源操作數傳送到目的操作數所指定的存儲器中。 C54x的數據傳送指令包括裝載指令、存儲指令、混合指令和存儲指令。 裝載指令共21條,用于立即數或存儲器內容賦給目的寄存器。 表3.3.1列出了這些指令的語法表示、運行結果以及相關注釋。 表3.3.1 裝載指令 存儲指令共18條,用于將源操作數或立即數存入指定存儲器或寄存器。 表3.3.2列出了存儲指令的語法表示、運行結果及注釋。 表3.3.2 存儲指令 混合裝載和存儲指令共12條,它的語法表示、運行結果及注釋如表3.3.3。表3.3.3 混合裝載和
21、存儲指令3.3.2 算術運算指令 TMS320C54x的算術指令具有運算功能強、指令豐富等特點,它包括加法指令、減法指令、乘法指令、乘法-累加指令、乘法-減法指令、雙字運算指令及特殊應用指令。 加法指令 加法指令共13條,如表3.3.4。 減法指令 減法指令共13條,如表3.3.5 表3.3.5 減法指令 乘法指令 乘法指令共10條,如表3.3.6。表3.3.6 乘法指令 乘法-累加指令和乘法-減法指令 乘法-累加指令和乘法-減法指令,共22條。 如表3.3.7所示。 表3.3.7乘法-累加指令和乘法-減法指令 雙字算術運算指令 雙字算術運算指令共6條,如表3.3.8。 表3.3.8雙字算術運
22、算指令 特殊運算指令 特殊運算指令共15條,如表3.3.9 表3.3.9 特殊運算指令3.3.3 邏輯運算指令 TMS320C54x的邏輯運算指令包括與指令、或指令、異或指令、移位指令及測試指令。 與指令,共5條,如表3.3.10。 表3.3.10 與指令 或指令,共5條,如表3.3.11。 表3.3.11 或指令 異或指令,共5條,如表3.3.12。表3.3.12 異或指令移位指令共6條,如表3.3.13表3.3.13移位指令測試指令共5條,如表3.3.14表3.3.14 測試指令3.3.4 程序控制指令 TMS320C54x的程序控制指令包括分支轉移指令、子程序調用指令、中斷指令、返回指令、堆棧操作指令及其他程序控制指令,分別敘述如下。 分支轉移指令共6條,如表3.3.15: 表3.3.15 分支轉移指令 子程序調用指令共5條,如表3.3.16:表3.3.16 子程序調用指令 中斷指令共2條,如表3.3.17表3.3.17 中斷指令 返回指令共6條,如表3.3.18表3.3.18返回指令堆棧操作指令共5條,如表3.3.19表3.3.19 堆棧操作指令其他程序控制指令共7條,如表3.3.20表3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論