版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、1DSPDSP技術及應用技術及應用igital ignal rocessor數(shù)字信號處理器數(shù)字信號處理器劉君劉君2第四節(jié)第四節(jié) 指令系統(tǒng)概述指令系統(tǒng)概述TMS320C54xTMS320C54x是是TMS320TMS320系列中的一種定點系列中的一種定點數(shù)字信號處理器,它的指令系統(tǒng)分助記符形數(shù)字信號處理器,它的指令系統(tǒng)分助記符形式和代數(shù)式形式兩種。式和代數(shù)式形式兩種。共有指令共有指令129129條,由于操作數(shù)的尋址方式條,由于操作數(shù)的尋址方式不同,派生至不同,派生至205205條。條。3可同時讀入可同時讀入2 2或或3 3個操作數(shù);個操作數(shù);支持雙精度運算的支持雙精度運算的3232位長操作數(shù)指令
2、;位長操作數(shù)指令;可進行單條指令重復和塊指令重復操作;可進行單條指令重復和塊指令重復操作;有塊存儲器傳送指令和并行操作(如并行存儲和加載有塊存儲器傳送指令和并行操作(如并行存儲和加載、并行存儲和加、并行存儲和加/ /減法、并行存儲和乘法、并行加載和減法、并行存儲和乘法、并行加載和乘法)指令;乘法)指令;設有條件存儲指令及延遲操作指令、有從中斷快速返設有條件存儲指令及延遲操作指令、有從中斷快速返回指令;回指令;有為特殊用途設計的指令(如支持有為特殊用途設計的指令(如支持FIRFIR濾波、最小均方濾波、最小均方算法算法LSMLSM、多項式計算以及浮點運算);、多項式計算以及浮點運算);有為省電安排
3、的空轉(zhuǎn)指令。有為省電安排的空轉(zhuǎn)指令。 TMS320C54xTMS320C54x指令系統(tǒng)的主要特點指令系統(tǒng)的主要特點4TMS320C54x指令系統(tǒng) 指令語句 每一條指令語句在源程序匯編時都要產(chǎn)生可供計算機執(zhí)行的指令代碼(即目標代碼),所以這種語句又叫可執(zhí)行語句。每一條指令語句表示計算機具有的一個基本能力,如數(shù)據(jù)傳送,兩數(shù)相加或相減,移位等,而這種能力是在目標程序(指令代碼的有序集合)運行時完成的,是依賴于汁算機內(nèi)的中央處理器(CPU)、存儲器、IO接口等硬件設備來實現(xiàn)的。 5 偽指令語句 偽指令語句是用于指示匯編程序如何匯編源程序,所以這種語句又叫命令語句。例如源程序中的偽指令語句告訴匯編程序:
4、該源程序如何分段,有哪些邏輯段在程序段中哪些是當前段,它們分別由哪個段寄存器指向;定義了哪些數(shù)據(jù),存儲單元是如何分配的等等。偽指令語句除定義的具體數(shù)據(jù)要生成目標代碼外,其他均沒有對應的目標代碼。偽指令語句的這些命令功能是由匯編程序在匯編源程序時,通過執(zhí)行一段程序來完成的,而不是在運行目標程序時實現(xiàn)的 6SmemSmem:1616位單尋址操作數(shù)。位單尋址操作數(shù)。XmemXmem:1616位雙尋址操作數(shù),從位雙尋址操作數(shù),從DBDB數(shù)據(jù)總線上讀出。數(shù)據(jù)總線上讀出。YmemYmem:1616位雙尋址操作數(shù),從位雙尋址操作數(shù),從CBCB數(shù)據(jù)總線上讀出。數(shù)據(jù)總線上讀出。dmaddmad:1616位立即數(shù)
5、,數(shù)據(jù)存儲器地址。位立即數(shù),數(shù)據(jù)存儲器地址。pmadpmad:1616位立即數(shù),程序存儲器地址。位立即數(shù),程序存儲器地址。PAPA: 1616位立即數(shù),位立即數(shù),I/OI/O口地址。口地址。srcsrc: 源累加器(源累加器(A A或或B B)。)。dstdst: 目的累加器(目的累加器(A A或或B B)。)。lklk: 1616位長立即數(shù)。位長立即數(shù)。第一節(jié)第一節(jié) TMS320C54xTMS320C54x的尋址方式的尋址方式 71 1立即數(shù)尋址立即數(shù)尋址2絕對地址尋址絕對地址尋址3累加器尋址累加器尋址4直接尋址直接尋址5間接尋址間接尋址6存儲器映象寄存器尋址存儲器映象寄存器尋址7堆棧尋址堆
6、棧尋址尋址分類尋址分類8 1 1立即數(shù)尋址立即數(shù)尋址 在操作數(shù)前面需要加字號來說明該操作數(shù)在操作數(shù)前面需要加字號來說明該操作數(shù)為立即數(shù)。否則會把該操作數(shù)誤認為是一個地為立即數(shù)。否則會把該操作數(shù)誤認為是一個地址,從而把立即數(shù)尋址變成絕對地址尋址。址,從而把立即數(shù)尋址變成絕對地址尋址。 特特點點指令中包含有執(zhí)行指令所需要的操作數(shù)。指令中包含有執(zhí)行指令所需要的操作數(shù)。立即數(shù)分為立即數(shù)分為3 3、5 5、8 8或或9 9位的短立即數(shù)和位的短立即數(shù)和1616位位的長立即數(shù)兩種。的長立即數(shù)兩種。短立即數(shù)可包含在單字或雙字指令中,長立短立即數(shù)可包含在單字或雙字指令中,長立即數(shù)在雙字指令中。即數(shù)在雙字指令中。
7、 注注意意LD #93hLD #93h,A A LD 93hLD 93h,A A 舉例舉例9 2絕對地址尋址絕對地址尋址特特點點在指令中包含有所要尋址的存儲單元的在指令中包含有所要尋址的存儲單元的1616位位地址。這個地址。這個1616位的地址可以用其所在單元的地位的地址可以用其所在單元的地址標號或者址標號或者1616位符號常數(shù)來表示。位符號常數(shù)來表示。 (1 1)數(shù)據(jù)存儲器地址()數(shù)據(jù)存儲器地址(damddamd)尋)尋址址 用一個符號或一用一個符號或一個數(shù)來確定數(shù)據(jù)個數(shù)來確定數(shù)據(jù)空間的一個地址??臻g的一個地址。 方法方法MVKD SAMPLEMVKD SAMPLE,* *AR3AR3 舉例
8、舉例10用一個符號或一用一個符號或一個具體的數(shù)來確個具體的數(shù)來確定程序存儲器中定程序存儲器中的一個地址的一個地址 2絕對地址尋址絕對地址尋址(2 2)程序存儲器地址()程序存儲器地址(pmadpmad)尋)尋址址 方法方法MVPD TABLEMVPD TABLE,* *AR4AR4 舉例舉例11用一個符用一個符號或一個號或一個常數(shù)來確常數(shù)來確定外部定外部I/OI/O口地口地址址 2絕對地址尋址絕對地址尋址(3 3)PAPA尋址尋址 端口(端口(PAPA) 方法方法PORTR FIFOPORTR FIFO,* *AR5 AR5 舉例舉例12用一個符號用一個符號或一個常數(shù)或一個常數(shù)來確定數(shù)據(jù)來確定
9、數(shù)據(jù)存儲器中的存儲器中的一個地址一個地址 2絕對地址尋址絕對地址尋址(4 4)* *(lklk)尋址)尋址 方法方法LD LD * *(BUFFERBUFFER),),A A 舉例舉例特點特點允許所有使允許所有使用用SmemSmem尋址尋址的指令去訪的指令去訪問數(shù)據(jù)空間問數(shù)據(jù)空間的任意單元的任意單元而不改變數(shù)而不改變數(shù)據(jù)頁指針據(jù)頁指針(DPDP)的值,)的值,也不用對也不用對ARxARx進行初始化進行初始化 13用累加用累加器中的器中的數(shù)值作數(shù)值作為地址為地址來讀寫來讀寫程序存程序存儲器。儲器。 方法方法READA Smem READA Smem WRITA Smem WRITA Smem 舉
10、例舉例特點特點可用來可用來完成完成程序存儲器程序存儲器單元的數(shù)據(jù)單元的數(shù)據(jù)與與數(shù)據(jù)存儲數(shù)據(jù)存儲器單元的數(shù)器單元的數(shù)據(jù)據(jù)進行交換進行交換 3累加器尋址累加器尋址14可以在不改可以在不改變變DPDP或或SPSP的的情況下,隨情況下,隨機地尋址機地尋址128128個存儲單元個存儲單元中的任何一中的任何一個單元。個單元。 用一個符號或用一個符號或一個常數(shù)來確一個常數(shù)來確定定7 7位偏移值位偏移值,與與DPDP或或SPSP共同共同形成形成1616位的數(shù)位的數(shù)據(jù)存儲器實際據(jù)存儲器實際地址。地址。4直接尋址直接尋址 方法方法LD #xLD #x,DPDPLD uLD u,A A ADD vADD v,A A
11、 =SSBX CPLSSBX CPL LD X1 LD X1,A A ADD Y2 ADD Y2,A A 舉例舉例特點特點15CPL=0 7CPL=0 7位位dmadma域與域與9bit9bit的的DPDP相結合相結合形成形成1616位的數(shù)據(jù)存儲器地址。位的數(shù)據(jù)存儲器地址。CPL=1 7CPL=1 7位位dmadma域加上(正偏移)域加上(正偏移)SPSP的值形成的值形成1616位的數(shù)據(jù)存儲器地址。位的數(shù)據(jù)存儲器地址。 DPDP值是從值是從0511(2 29 9-1-1),以),以DPDP為基準的直接尋址把存儲器分為基準的直接尋址把存儲器分成成512512頁,頁,7 7位的位的dmadma范圍
12、從范圍從0127,每頁有,每頁有128128個可訪問的單元。個可訪問的單元。 165間接尋址間接尋址 方法方法特點特點(AR0AR0AR7AR7)ARAU0/ARAU1 ARAU0/ARAU1 1616位無符號算術運位無符號算術運算算尋址范圍為尋址范圍為64K 64K 能在一個指令中訪問能在一個指令中訪問兩個數(shù)據(jù)存儲器單元兩個數(shù)據(jù)存儲器單元兩個獨立的存儲器單元讀數(shù)據(jù)兩個獨立的存儲器單元讀數(shù)據(jù)讀一個讀一個、寫另一個存儲器單元寫另一個存儲器單元讀寫兩個連續(xù)的存儲器單元讀寫兩個連續(xù)的存儲器單元 175間接尋址間接尋址 (1 1)單操作數(shù)尋址)單操作數(shù)尋址 定義間接尋定義間接尋址的類型址的類型定義尋址
13、所使用定義尋址所使用的輔助寄存器的輔助寄存器 ST1ST1CMPT=0 CMPT=0 標準方式標準方式ARFARF確定輔助寄存器確定輔助寄存器,ST0ST0中中ARPARP0 0 CMPT=1 CMPT=1 兼容方式兼容方式如如ARF=0ARF=0,用,用ARPARP選擇輔助寄存器,選擇輔助寄存器,否則,用否則,用ARFARF來確定輔助寄存器。來確定輔助寄存器。ARFARF的值裝入的值裝入ARPARP。LD LD * *AR1,BAR1,B18單操作數(shù)間接尋址的硬件框圖19MOD域域操作碼語法操作碼語法功功 能能說說 明明0000*ARxaddr=ARxARx包含了數(shù)據(jù)存儲器地址包含了數(shù)據(jù)存儲
14、器地址0001*ARx-addr=ARxARx=ARx-1訪問后,訪問后,ARx中的地址減中的地址減10010*ARx+addr=ARxARx=ARx+1訪問后,訪問后,ARx中的地址加中的地址加10011*+ARxaddr=ARx+1ARx=ARx+1在尋址前,在尋址前,ARx中的地址加中的地址加1,然后再尋址,然后再尋址0100*ARx-0Baddr=ARxARx=B(ARx-AR0)訪問后,從訪問后,從ARx中以位倒序進位的方式減去中以位倒序進位的方式減去AR00101*ARx-0addr=ARxARx=ARx-AR0訪問后,從訪問后,從ARx中減去中減去AR00110*ARx+0add
15、r=ARxARx=ARx+AR0訪問后,把訪問后,把AR0加到加到ARx中去中去0111*ARx+0Baddr=ARxARx=B(ARx+AR0)訪問后,把訪問后,把AR0以位倒序進位的方式加到以位倒序進位的方式加到ARx中中1000*ARx-%addr=ARxARx=circ(ARx-1)訪問后,訪問后,ARx中的地址以循環(huán)尋址的方式減中的地址以循環(huán)尋址的方式減11001*ARx-0%addr=ARxARx=circ(ARx-AR0)訪問后,從訪問后,從ARx中以循環(huán)尋址的方式減去中以循環(huán)尋址的方式減去AR01010*ARx+%addr=ARxARx=circ(ARx+1)訪問后,訪問后,A
16、Rx中的地址以循環(huán)尋址的方式加中的地址以循環(huán)尋址的方式加11011*ARx+0%addr=ARxARx=circ(ARx+AR0)訪問后,把訪問后,把AR0以循環(huán)尋址的方式加到以循環(huán)尋址的方式加到ARx中中1100*ARx(lk)addr=ARx+lkARx=ARxARx和和16位的長偏移(位的長偏移(lk)的和用來作為數(shù)據(jù)存儲器地)的和用來作為數(shù)據(jù)存儲器地址。址。ARx本身不被修改本身不被修改1101*+ARx(lk)addr=ARx+lkARx=ARx+lk在尋址前,把一個帶符號的在尋址前,把一個帶符號的16位的長偏移(位的長偏移(lk)加到)加到ARx中,然后用新的中,然后用新的ARx的
17、值作為數(shù)據(jù)存儲器的地址的值作為數(shù)據(jù)存儲器的地址1110*+ARx(lk)%addr=circ(ARx+lk)ARx=circ(ARx+lk)在尋址前,把一個帶符號的在尋址前,把一個帶符號的16位的長偏移以循環(huán)尋址位的長偏移以循環(huán)尋址的方式加到的方式加到ARx中,然后再用新的中,然后再用新的ARx的值作為數(shù)據(jù)的值作為數(shù)據(jù)存儲器的地址存儲器的地址1111*(lk)addr=lk一個無符號的一個無符號的16位的長偏移(位的長偏移(lk)用來作為數(shù)據(jù)存儲)用來作為數(shù)據(jù)存儲器的絕對地址。(也屬絕對尋址)器的絕對地址。(也屬絕對尋址)單數(shù)據(jù)存儲器操作數(shù)間接尋址類型單數(shù)據(jù)存儲器操作數(shù)間接尋址類型 201)
18、1) 循環(huán)尋址循環(huán)尋址 循環(huán)緩沖區(qū)的長度值存放在循環(huán)緩沖循環(huán)緩沖區(qū)的長度值存放在循環(huán)緩沖區(qū)長度寄存器區(qū)長度寄存器BKBK中,中,BKBK中的數(shù)值由指令設定。長度為中的數(shù)值由指令設定。長度為R R的循環(huán)緩沖器必須從一個的循環(huán)緩沖器必須從一個N N位地址的邊界開始,即循環(huán)位地址的邊界開始,即循環(huán)緩沖器基地址的最低緩沖器基地址的最低N N位必須為位必須為0 0。N N是滿足是滿足2 2N NR R的最的最小整數(shù)。小整數(shù)。R R的值必須裝入的值必須裝入BKBK。例如,含有例如,含有3131個字的循環(huán)緩沖器必須從最低個字的循環(huán)緩沖器必須從最低5 5位為位為0 0的的地址開始,即地址開始,即xxxx xx
19、xx xxx0 0000 xxxx xxxx xxx0 00002 2,N=5N=5,2 2N N=2=25 5R=31R=31,且,且3131必須裝入必須裝入BKBK。如:。如:STM #1kSTM #1k,BKBK如果如果R=32R=32,則最小的,則最小的N N值為值為6 6,循環(huán)緩沖區(qū)的起始地址,循環(huán)緩沖區(qū)的起始地址必須有必須有6 6個最低有效位為個最低有效位為0 0,即,即 00 000000 00002 2。212) 2) 位倒序?qū)ぶ肺坏剐驅(qū)ぶ?在這種尋址方式中,用在這種尋址方式中,用AR0AR0存放存放FFTFFT點數(shù)的一半整數(shù)點數(shù)的一半整數(shù)N N,用另一輔助寄存器指向一數(shù)據(jù),用
20、另一輔助寄存器指向一數(shù)據(jù)存放的物理單元。當使用位倒序?qū)ぶ钒汛娣诺奈锢韱卧.斒褂梦坏剐驅(qū)ぶ钒袮R0AR0加到輔助寄加到輔助寄存器中時,地址以位倒序的方式產(chǎn)生,即進位是從左存器中時,地址以位倒序的方式產(chǎn)生,即進位是從左向右,而不是從右向左進位。向右,而不是從右向左進位。 例如:例如: 0110 10000110 1000 + 0000 1000 + 0000 1000 0110 01000110 0100以以8 8位輔助寄存器為例,位輔助寄存器為例,AR1AR1表示了在存儲器中數(shù)表示了在存儲器中數(shù)據(jù)的基地址(據(jù)的基地址(0110 00000110 0000)2 2,AR0AR0的值為(的值為(0
21、000 10000000 1000)2 2。利用以下兩條語句可以向外設口(口地址為。利用以下兩條語句可以向外設口(口地址為PAPA)輸出整序后的輸出整序后的FFTFFT變換結果:變換結果:RPT #15 RPT #15 重復執(zhí)行下條指令重復執(zhí)行下條指令15+115+1次次PORTW PORTW * *AR1+0BAR1+0B,PA PA 向外設口向外設口PAPA輸出整結果輸出整結果22AR1修改修改循環(huán)值循環(huán)值存儲單存儲單元地址元地址整序前整序前FFT 變換結果變換結果位倒序位倒序AR1更新的地址值更新的地址值AR0=0000 10002整序后整序后PA輸出的輸出的FFT變換結果變換結果000
22、00X(0)00000110 0000X(0)10001X(8)10000110 1000X(1)20010X(4)01000110 0100X(2)30011X(12)11000110 1100X(3)40100X(2)00100110 0010X(4)50101X(10)10100110 1010X(5)60110X(6)01100110 0110X(6)70111X(14)11100110 1110X(7)81000X(1)00010110 0001X(8)91001X(9)10010110 1001X(9)101010X(5)01010110 0101X(10)111011X(13)1
23、1010110 1101X(11)121100X(3)00110110 0011X(12)131101X(11)10110110 1011X(13)141110X(7)01110110 0111X(14)151111X(15)11110110 1111X(15)位倒序?qū)ξ坏剐驅(qū)FTFFT變換結果的序號調(diào)整變換結果的序號調(diào)整 235間接尋址間接尋址 (2 2)雙操作數(shù)尋址方式)雙操作數(shù)尋址方式 確定確定包含包含XmemXmem地址地址的輔的輔助寄助寄存器存器 確定確定包含包含YmemYmem地址地址的輔的輔助寄助寄存存器器定義用于定義用于訪問訪問YmemYmem操作數(shù)的操作數(shù)的間接尋址間接尋址
24、方式的類方式的類型型 定義用于定義用于訪問訪問XmemXmem操操作數(shù)的間作數(shù)的間接尋址方接尋址方式的類型式的類型 MPY MPY * *AR2,AR2,* *AR3,AAR3,A24Xar或或Yar 輔助寄存器輔助寄存器00 AR201 AR310 AR411 AR5輔助輔助寄存器寄存器選擇選擇Xmod或或Ymod操作碼語操作碼語法法功功 能能說說 明明00*ARxaddr=ARxARx是數(shù)據(jù)存儲器地址是數(shù)據(jù)存儲器地址01*ARx-addr=ARxARx=ARx-1訪問后,訪問后,ARx中的地址減中的地址減110*ARx+addr=ARxARx=ARx+1訪問后,訪問后,ARx中的地址加中的
25、地址加111*ARx+0%addr=ARxARx=circ(ARx+AR0)訪問后,訪問后,AR0以循環(huán)尋址的以循環(huán)尋址的方式加到方式加到ARx中中250 0頁尋址。頁尋址。不影響不影響當前當前DPDP或或SPSP值值 。用于直用于直接尋址接尋址和間接和間接尋址尋址用來修用來修改存儲改存儲器映象器映象寄存器寄存器 6存儲器映象寄存器尋址存儲器映象寄存器尋址功能功能LDM PRD,ALDM PRD,A舉例舉例特點特點方法方法高高9 9位數(shù)據(jù)位數(shù)據(jù)存儲器地址存儲器地址被置被置0 0,利,利用指令中的用指令中的低位地址低位地址訪問訪問MMRMMR。267堆棧尋址堆棧尋址 從高地址向低地址方向生長,從
26、高地址向低地址方向生長,SPSP)來管理堆棧,)來管理堆棧,SPSP始終指始終指向堆棧中所存放的最后一個向堆棧中所存放的最后一個數(shù)據(jù),即數(shù)據(jù),即SPSP指針始終指向棧指針始終指向棧頂。在壓入操作時,先減小頂。在壓入操作時,先減小SPSP的值,再將數(shù)據(jù)壓入堆棧;的值,再將數(shù)據(jù)壓入堆棧;在彈出操作時,先從堆棧彈在彈出操作時,先從堆棧彈出數(shù)據(jù),再增加出數(shù)據(jù),再增加SPSP的值。的值。用來在中斷用來在中斷和子程序調(diào)和子程序調(diào)用時自動保用時自動保存程序計數(shù)存程序計數(shù)器(器(PCPC)中)中的數(shù)值的數(shù)值,也也能用來保護能用來保護現(xiàn)場或傳送現(xiàn)場或傳送參數(shù)參數(shù) 功能功能特點特點PSHD PSHD * *AR2
27、AR2 POPD POPD * *AR3AR327第二節(jié)第二節(jié) 程序地址的生成程序地址的生成程序地址程序地址生成器生成器(PAGENPAGEN)構成構成程序計數(shù)器(程序計數(shù)器(PCPC)重復計數(shù)器(重復計數(shù)器(RCRC)塊重復計數(shù)器(塊重復計數(shù)器(BRCBRC)塊重復起始地址寄存器(塊重復起始地址寄存器(RSARSA)塊重復結束地址寄存器(塊重復結束地址寄存器(REAREA)核心核心1616位程序計數(shù)器(位程序計數(shù)器(PCPC)內(nèi)中保存某個內(nèi)部或外內(nèi)中保存某個內(nèi)部或外部程序存儲器的地址部程序存儲器的地址。地址地址內(nèi)容為:內(nèi)容為:即將取指的某條指令即將取指的某條指令;某個某個1616位立即操作數(shù)
28、位立即操作數(shù);系數(shù)表系數(shù)表。在程序存儲器中的地址在程序存儲器中的地址28操作操作加載到加載到PC的地址的地址復位復位PC=FF80h。順序執(zhí)行指令順序執(zhí)行指令PC=PC+1。分支轉(zhuǎn)移分支轉(zhuǎn)移用緊跟在分支轉(zhuǎn)移指令后面的用緊跟在分支轉(zhuǎn)移指令后面的16位立即數(shù)加載位立即數(shù)加載PC。由累加器分支轉(zhuǎn)移由累加器分支轉(zhuǎn)移用累加器用累加器A或或B的低的低16位立即數(shù)加載位立即數(shù)加載PC。塊重復循環(huán)塊重復循環(huán)假如假如ST1中的塊重復有效位中的塊重復有效位BRAF=1,當,當PC+1等于塊重復等于塊重復結束地址(結束地址(REA)+1,將塊重復起始地址(,將塊重復起始地址(RSA)加載)加載PC。子程序調(diào)用子程序
29、調(diào)用將將PC+2壓入堆棧,并用緊跟在調(diào)用指令后面的壓入堆棧,并用緊跟在調(diào)用指令后面的16位立即數(shù)位立即數(shù)加載加載PC。返回指令將棧頂彈出至。返回指令將棧頂彈出至PC,回到原先的程序處,回到原先的程序處繼續(xù)執(zhí)行。繼續(xù)執(zhí)行。從累加器調(diào)用子程從累加器調(diào)用子程序序?qū)C+1壓入椎棧,用累加器壓入椎棧,用累加器A或或B的低的低16位加載位加載PC。返回。返回指令將棧頂彈出至指令將棧頂彈出至PC,回到原先的程序處繼續(xù)執(zhí)行。,回到原先的程序處繼續(xù)執(zhí)行。硬件中斷或軟件中硬件中斷或軟件中斷斷將將PC壓入堆棧,用適當?shù)闹袛嘞蛄康刂芳虞d壓入堆棧,用適當?shù)闹袛嘞蛄康刂芳虞dPC。中斷返。中斷返回時,將棧頂彈出至回時,
30、將棧頂彈出至PC,繼續(xù)執(zhí)行被中斷了的子程序。,繼續(xù)執(zhí)行被中斷了的子程序。將程序存儲器地址加載到程序計數(shù)器的途徑將程序存儲器地址加載到程序計數(shù)器的途徑291分支轉(zhuǎn)移操作分支轉(zhuǎn)移操作 通過分支轉(zhuǎn)移指令改寫通過分支轉(zhuǎn)移指令改寫PCPC,可,可以改變程序的流向。而子程序以改變程序的流向。而子程序調(diào)用指令則通過將一個返回地調(diào)用指令則通過將一個返回地址壓入堆棧,執(zhí)行返回時恢復址壓入堆棧,執(zhí)行返回時恢復原地址。原地址??蓤?zhí)行可執(zhí)行: :分支轉(zhuǎn)移分支轉(zhuǎn)移循環(huán)控制循環(huán)控制子程序操子程序操作作 功能功能方法方法30條件條件分支轉(zhuǎn)移分支轉(zhuǎn)移無條件分支轉(zhuǎn)移無條件分支轉(zhuǎn)移 BDBD用指令用指令中所給出的中所給出的地址加
31、載地址加載PCPCBACCDBACCD用用所指定的累所指定的累加器的低加器的低1616位作為地址位作為地址加載加載PCPC。 帶延遲帶延遲不帶延遲不帶延遲操作操作轉(zhuǎn)移種類轉(zhuǎn)移種類BCDBCD如果指令如果指令中所規(guī)定的條中所規(guī)定的條件得到滿足,件得到滿足,就用指令中所就用指令中所給出的地址加給出的地址加載載PCPC;BANZDBANZD如果當如果當前輔助寄存器前輔助寄存器不等于不等于0 0,就用,就用指令中所規(guī)定指令中所規(guī)定的地址加載的地址加載PCPC。 BC newBC new,AOVAOV BANZ loop,BANZ loop,* *AR2-AR2-B nextB nextBACC ABA
32、CC A312調(diào)用和返回調(diào)用和返回 轉(zhuǎn)移前,原程序的轉(zhuǎn)移前,原程序的下條指令的地址被下條指令的地址被壓入堆棧,而在返壓入堆棧,而在返回時則將這個地址回時則將這個地址彈出至彈出至PCPC,使被中,使被中斷了的原程序能繼斷了的原程序能繼續(xù)執(zhí)行。續(xù)執(zhí)行。 當采用調(diào)用指令進當采用調(diào)用指令進行子程序或函數(shù)調(diào)行子程序或函數(shù)調(diào)用時,用時,DSPDSP中斷當前中斷當前運行的程序,轉(zhuǎn)移運行的程序,轉(zhuǎn)移到程序存儲器的其到程序存儲器的其它地它地址址繼續(xù)運行。繼續(xù)運行。功能功能方法方法無條件調(diào)用與返回無條件調(diào)用與返回有條件調(diào)用與返回有條件調(diào)用與返回帶延遲帶延遲不帶延遲不帶延遲CALLd lopCALLd lopRET
33、 mainRET main323條件指令中的條件判斷條件指令中的條件判斷33多重條件判斷多重條件判斷 BC pmadBC pmad,condcond,condcond,condcond相與關系相與關系相或關系相或關系BC pmadBC pmad,condcondBC pmadBC pmad,condcond第第1組組第第2組組A 類類B 類類A 類類B 類類C 類類EQOVTCCBIONEQNOVNTCNCNBIOLT LEQ GT GEQ 34第第1 1組組 例如例如 可以從可以從A A類中選一個條件,同類中選一個條件,同時可以從時可以從B B類中選擇一個條件。類中選擇一個條件。但是不能從同
34、一類中選擇兩但是不能從同一類中選擇兩個條件。個條件。另外,兩種條件測試的累加另外,兩種條件測試的累加器必須是同一個。器必須是同一個??梢酝瑫r測試可以同時測試AGTAGT和和AOVAOV,但,但不能同時測試不能同時測試AGTAGT和和BGTBGT。 35第第2 2組組 例如例如 可以在可以在A A、B B、C C三類中各三類中各選擇一個條件,但不能從選擇一個條件,但不能從同一類中選擇兩個條件同一類中選擇兩個條件 可以在可以在A A、B B、C C三類中各選三類中各選擇一個條件,但不能從同擇一個條件,但不能從同一類中選擇兩個條件一類中選擇兩個條件 36特特例例如果條件分支轉(zhuǎn)移出去的地方只有如果條件
35、分支轉(zhuǎn)移出去的地方只有1 12 2字的字的程序段,則可以用一條單周期條件執(zhí)行指令程序段,則可以用一條單周期條件執(zhí)行指令(XCXC)來代替分支轉(zhuǎn)移指令:)來代替分支轉(zhuǎn)移指令:XC nXC n,condcond,condcond,condcond當當n=1n=1,且條件得到滿足,就執(zhí)行緊隨此,且條件得到滿足,就執(zhí)行緊隨此條件指令后的個字指令。條件指令后的個字指令。當當n=2n=2,且條件得到滿足,就執(zhí)行緊隨此,且條件得到滿足,就執(zhí)行緊隨此指 令 后 的指 令 后 的 1 1 個 雙 字 指 令 或 者個 雙 字 指 令 或 者 2 2 條 單條 單字指令。字指令。當條件不滿足,就依當條件不滿足,就
36、依n n的值執(zhí)行的值執(zhí)行1 1條或條或2 2條條NOPNOP指令。指令。37例例3-3 編寫計算編寫計算 的主要程序部分。的主要程序部分。 .bss x,4 .bss x,4 ;為;為X X建立建立4 4個單元,個單元, ;放置;放置X1X1、X2X2、X3X3、X4X4 .bss y,1 .bss y,1 ;為;為Y Y建立建立1 1個單元,放置個單元,放置Y Y STM #xSTM #x,AR1 AR1 ;將;將X1X1的地址傳給的地址傳給AR1AR1 STM #3STM #3,AR2 AR2 ;將循環(huán)次數(shù);將循環(huán)次數(shù)3 3傳給傳給AR2AR2 LD #0LD #0,A A ;對;對A A
37、清零清零loop:ADD loop:ADD * *AR1+AR1+,A A ;對;對X1X1、X2X2、X3X3、X4X4循環(huán)循環(huán)累累 ;加,結果放;加,結果放A A中中 BANZ loop,BANZ loop,* *AR2- AR2- ;檢查循環(huán)是否應結束;檢查循環(huán)是否應結束 STL ASTL A,y y ;將累加結果存入;將累加結果存入Y Y中中41iixy38特點特點2 2特點特點1 14單條指令的重復操作單條指令的重復操作 重復執(zhí)行(重復執(zhí)行(RCRC)+1+1次。次。RCRC內(nèi)容不能編程設置,內(nèi)容不能編程設置,只能由重復指令(只能由重復指令(RPTRPT和和RPTZRPTZ)中的操作
38、數(shù)加載。)中的操作數(shù)加載。操作數(shù)操作數(shù)n n的最大值為的最大值為65 65 535535,最大重復執(zhí)行次數(shù),最大重復執(zhí)行次數(shù)為為65 535+165 535+1。 一旦重復指令被取一旦重復指令被取指、譯碼,直到重指、譯碼,直到重復循環(huán)完成以前,復循環(huán)完成以前,對所有的中斷(包對所有的中斷(包括括 ,但不包,但不包括括 )均不響應。)均不響應。 功能功能重復執(zhí)行下一條指令重復執(zhí)行下一條指令 NMIRS39重復過程重復過程當當RPTRPT指令執(zhí)行時指令執(zhí)行時:首先把循環(huán)的次數(shù)裝入循環(huán)計數(shù)器(首先把循環(huán)的次數(shù)裝入循環(huán)計數(shù)器(RCRC),),其循環(huán)次數(shù)其循環(huán)次數(shù)n n由一個由一個1616位單數(shù)據(jù)存儲器
39、操作數(shù)位單數(shù)據(jù)存儲器操作數(shù) SmemSmem或一個或一個8 8位或位或1616位常數(shù)位常數(shù)k k或或lklk給定。這樣,給定。這樣, 緊接著的下一條指令會循環(huán)執(zhí)行緊接著的下一條指令會循環(huán)執(zhí)行n+1n+1次。次。循環(huán),循環(huán),RCRC在執(zhí)行減在執(zhí)行減1 1操作時不能被訪問。操作時不能被訪問。注意:注意:該循環(huán)內(nèi)不能套用循環(huán)。該循環(huán)內(nèi)不能套用循環(huán)。 當當RPTZRPTZ指令執(zhí)行時指令執(zhí)行時:對目的累加器對目的累加器dstdst清清0 0, 循環(huán)執(zhí)行下一條指令循環(huán)執(zhí)行下一條指令n+1n+1次。次。 40例例3-5 利用單條指令的重復操作對數(shù)組利用單條指令的重復操作對數(shù)組x5=0 x5=0,0 0,0
40、0,0 0,00進行初始化。進行初始化。.bss x,5 .bss x,5 ;為數(shù)組;為數(shù)組x x分配分配5 5個存儲單元個存儲單元STM #x,AR1 STM #x,AR1 ;將;將x x的首地址賦給的首地址賦給AR1AR1LD #0,A LD #0,A ;對;對A A清零清零RPT #4 RPT #4 ;設置重復執(zhí)行下條指令;設置重復執(zhí)行下條指令5 5次次STL A,STL A,* *AR1+AR1+;對;對x5x5各單元清零各單元清零或者或者.bss x,5.bss x,5STM #x,AR1STM #x,AR1RPTZ A,#4RPTZ A,#4;對;對A A清零并設置重復執(zhí)行下條指令清零并設置重復執(zhí)行下條指令5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 租客有老人小孩租房合同(2篇)
- 巜趙州橋 課件
- 西南林業(yè)大學《茶藝》2023-2024學年第一學期期末試卷
- 西京學院《設計表現(xiàn)》2023-2024學年第一學期期末試卷
- 探究水溫對金魚呼吸的影響
- 新人教版五年級上冊用字母表示數(shù)例3教程
- 西京學院《工程力學》2023-2024學年第一學期期末試卷
- 西京學院《安裝工程計量與計價》2021-2022學年第一學期期末試卷
- 西華師范大學《數(shù)字電子技術基礎》2022-2023學年期末試卷
- 描寫眼睛 課件
- 《傳感器原理及應用》全套教學課件
- 文物與博物館學課件
- 高精度時間同步及定位技術應用白皮書
- 短暫性腦缺血發(fā)作培訓課件
- 新版統(tǒng)編版三年級上冊語文《大自然的聲音》課件(第二課時)
- 首件驗收報驗表
- 小學科學教育科學三年級上冊空氣《風的成因》教案
- 四年級上冊數(shù)學課件 《平行與垂直》 人教版(共11張PPT)
- 出砂機理及防砂
- 火炬系統(tǒng)水封罐計算
- 奧托尼克斯計米器使用說明書
評論
0/150
提交評論