DSP第三章3_new_第1頁
DSP第三章3_new_第2頁
DSP第三章3_new_第3頁
DSP第三章3_new_第4頁
DSP第三章3_new_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、1DSPDSP技術(shù)技術(shù)及應(yīng)用及應(yīng)用igital ignal rocessor數(shù)字信號處理器數(shù)字信號處理器劉君劉君2第四節(jié)第四節(jié) 指令系統(tǒng)概述指令系統(tǒng)概述TMS320C54xTMS320C54x是是TMS320TMS320系列中的一種定點(diǎn)系列中的一種定點(diǎn)數(shù)字信號處理器,它的指令系統(tǒng)分助記符形數(shù)字信號處理器,它的指令系統(tǒng)分助記符形式和代數(shù)式形式兩種。式和代數(shù)式形式兩種。共有指令共有指令129129條,由于操作數(shù)的尋址方式條,由于操作數(shù)的尋址方式不同,派生至不同,派生至205205條。條。3可同時(shí)讀入可同時(shí)讀入2 2或或3 3個(gè)操作數(shù);個(gè)操作數(shù);支持雙精度運(yùn)算的支持雙精度運(yùn)算的3232位長操作數(shù)指令

2、;位長操作數(shù)指令;可進(jìn)行單條指令重復(fù)和塊指令重復(fù)操作;可進(jìn)行單條指令重復(fù)和塊指令重復(fù)操作;有塊存儲器傳送指令和并行操作(如并行存儲和加載有塊存儲器傳送指令和并行操作(如并行存儲和加載、并行存儲和加、并行存儲和加/ /減法、并行存儲和乘法、并行加載和減法、并行存儲和乘法、并行加載和乘法)指令;乘法)指令;設(shè)有條件存儲指令及延遲操作指令、有從中斷快速返設(shè)有條件存儲指令及延遲操作指令、有從中斷快速返回指令;回指令;有為特殊用途設(shè)計(jì)的指令(如支持有為特殊用途設(shè)計(jì)的指令(如支持FIRFIR濾波、最小均方濾波、最小均方算法算法LSMLSM、多項(xiàng)式計(jì)算以及浮點(diǎn)運(yùn)算);、多項(xiàng)式計(jì)算以及浮點(diǎn)運(yùn)算);有為省電安排

3、的空轉(zhuǎn)指令。有為省電安排的空轉(zhuǎn)指令。 TMS320C54xTMS320C54x指令系統(tǒng)的主要特點(diǎn)指令系統(tǒng)的主要特點(diǎn)4TMS320C54x指令系統(tǒng) 指令語句 每一條指令語句在源程序匯編時(shí)都要產(chǎn)生可供計(jì)算機(jī)執(zhí)行的指令代碼(即目標(biāo)代碼),所以這種語句又叫可執(zhí)行語句。每一條指令語句表示計(jì)算機(jī)具有的一個(gè)基本能力,如數(shù)據(jù)傳送,兩數(shù)相加或相減,移位等,而這種能力是在目標(biāo)程序(指令代碼的有序集合)運(yùn)行時(shí)完成的,是依賴于汁算機(jī)內(nèi)的中央處理器(CPU)、存儲器、IO接口等硬件設(shè)備來實(shí)現(xiàn)的。 5 偽指令語句 偽指令語句是用于指示匯編程序如何匯編源程序,所以這種語句又叫命令語句。例如源程序中的偽指令語句告訴匯編程序:

4、該源程序如何分段,有哪些邏輯段在程序段中哪些是當(dāng)前段,它們分別由哪個(gè)段寄存器指向;定義了哪些數(shù)據(jù),存儲單元是如何分配的等等。偽指令語句除定義的具體數(shù)據(jù)要生成目標(biāo)代碼外,其他均沒有對應(yīng)的目標(biāo)代碼。偽指令語句的這些命令功能是由匯編程序在匯編源程序時(shí),通過執(zhí)行一段程序來完成的,而不是在運(yùn)行目標(biāo)程序時(shí)實(shí)現(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ù)誤認(rèn)為是一個(gè)地為立即數(shù)。否則會把該操作數(shù)誤認(rèn)為是一個(gè)地址,從而把立即數(shù)尋址變成絕對地址尋址。址,從而把立即數(shù)尋址變成絕對地址尋址。 特特點(diǎn)點(diǎn)指令中包含有執(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絕對地址尋址絕對地址尋址特特點(diǎn)點(diǎn)在指令中包含有所要尋址的存儲單元的在指令中包含有所要尋址的存儲單元的1616位位地址。這個(gè)地址。這個(gè)1616位的地址可以用其所在單元的地位的地址可以用其所在單元的地址標(biāo)號或者址標(biāo)號或者1616位符號常數(shù)來表示。位符號常數(shù)來表示。 (1 1)數(shù)據(jù)存儲器地址()數(shù)據(jù)存儲器地址(damddamd)尋)尋址址 用一個(gè)符號或一用一個(gè)符號或一個(gè)數(shù)來確定數(shù)據(jù)個(gè)數(shù)來確定數(shù)據(jù)空間的一個(gè)地址??臻g的一個(gè)地址。 方法方法MVKD SAMPLEMVKD SAMPLE,* *AR3AR3 舉例

8、舉例10用一個(gè)符號或一用一個(gè)符號或一個(gè)具體的數(shù)來確個(gè)具體的數(shù)來確定程序存儲器中定程序存儲器中的一個(gè)地址的一個(gè)地址 2絕對地址尋址絕對地址尋址(2 2)程序存儲器地址()程序存儲器地址(pmadpmad)尋)尋址址 方法方法MVPD TABLEMVPD TABLE,* *AR4AR4 舉例舉例11用一個(gè)符用一個(gè)符號或一個(gè)號或一個(gè)常數(shù)來確常數(shù)來確定外部定外部I/OI/O口地口地址址 2絕對地址尋址絕對地址尋址(3 3)PAPA尋址尋址 端口(端口(PAPA) 方法方法PORTR FIFOPORTR FIFO,* *AR5 AR5 舉例舉例12用一個(gè)符號用一個(gè)符號或一個(gè)常數(shù)或一個(gè)常數(shù)來確定數(shù)據(jù)來確定

9、數(shù)據(jù)存儲器中的存儲器中的一個(gè)地址一個(gè)地址 2絕對地址尋址絕對地址尋址(4 4)* *(lklk)尋址)尋址 方法方法LD LD * *(BUFFERBUFFER),),A A 舉例舉例特點(diǎn)特點(diǎn)允許所有使允許所有使用用SmemSmem尋址尋址的指令去訪的指令去訪問數(shù)據(jù)空間問數(shù)據(jù)空間的任意單元的任意單元而不改變數(shù)而不改變數(shù)據(jù)頁指針據(jù)頁指針(DPDP)的值,)的值,也不用對也不用對ARxARx進(jìn)行初始化進(jìn)行初始化 13用累加用累加器中的器中的數(shù)值作數(shù)值作為地址為地址來讀寫來讀寫程序存程序存儲器。儲器。 方法方法READA SmemREADA Smem WRITA SmemWRITA Smem 舉例舉

10、例特點(diǎn)特點(diǎn)可用來可用來完成完成程序存儲器程序存儲器單元的數(shù)據(jù)單元的數(shù)據(jù)與與數(shù)據(jù)存儲數(shù)據(jù)存儲器單元的數(shù)器單元的數(shù)據(jù)據(jù)進(jìn)行交換進(jìn)行交換 3累加器尋址累加器尋址14可以在不改可以在不改變變DPDP或或SPSP的的情況下,隨情況下,隨機(jī)地尋址機(jī)地尋址128128個(gè)存儲單元個(gè)存儲單元中的任何一中的任何一個(gè)單元。個(gè)單元。 用一個(gè)符號或用一個(gè)符號或一個(gè)常數(shù)來確一個(gè)常數(shù)來確定定7 7位偏移值位偏移值,與與DPDP或或SPSP共同共同形成形成1616位的數(shù)位的數(shù)據(jù)存儲器實(shí)際據(jù)存儲器實(shí)際地址。地址。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 舉例舉例特點(diǎn)特點(diǎn)15CPL=0 7CPL=0 7位位dmadma域與域與9bit9bit的的DPDP相結(jié)合相結(jié)合形成形成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為基準(zhǔn)的直接尋址把存儲器分為基準(zhǔn)的直接尋址把存儲器分成成512512頁,頁,7 7位的位的dmadma范圍從范

12、圍從0127,每頁有,每頁有128128個(gè)可訪問的單元。個(gè)可訪問的單元。 165間接尋址間接尋址 方法方法特點(diǎn)特點(diǎn)(AR0AR0AR7AR7)ARAU0/ARAU1 ARAU0/ARAU1 1616位無符號算術(shù)運(yùn)位無符號算術(shù)運(yùn)算算尋址范圍為尋址范圍為64K 64K 能在一個(gè)指令中訪問能在一個(gè)指令中訪問兩個(gè)數(shù)據(jù)存儲器單元兩個(gè)數(shù)據(jù)存儲器單元兩個(gè)獨(dú)立的存儲器單元讀數(shù)據(jù)兩個(gè)獨(dú)立的存儲器單元讀數(shù)據(jù)讀一個(gè)讀一個(gè)、寫另一個(gè)存儲器單元寫另一個(gè)存儲器單元讀寫兩個(gè)連續(xù)的存儲器單元讀寫兩個(gè)連續(xù)的存儲器單元 175間接尋址間接尋址 (1 1)單操作數(shù)尋址)單操作數(shù)尋址 定義間接尋定義間接尋址的類型址的類型定義尋址所使

13、用定義尋址所使用的輔助寄存器的輔助寄存器 ST1ST1CMPT=0 CMPT=0 標(biāo)準(zhǔn)方式標(biāo)準(zhǔn)方式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中以位倒序進(jìn)位的方式減去中以位倒序進(jìn)位的方式減去AR00101*ARx-0addr=ARxARx=ARx-AR0訪問后,從訪問后,從ARx中減去中減去AR00110*ARx+0addr=

15、ARxARx=ARx+AR0訪問后,把訪問后,把AR0加到加到ARx中去中去0111*ARx+0Baddr=ARxARx=B(ARx+AR0)訪問后,把訪問后,把AR0以位倒序進(jìn)位的方式加到以位倒序進(jìn)位的方式加到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)訪問后,訪問后,ARx

16、中的地址以循環(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在尋址前,把一個(gè)帶符號的在尋址前,把一個(gè)帶符號的16位的長偏移(位的長偏移(lk)加到)加到ARx中,然后用新的中,然后用新的ARx的值作

17、為數(shù)據(jù)存儲器的地址的值作為數(shù)據(jù)存儲器的地址1110*+ARx(lk)%addr=circ(ARx+lk)ARx=circ(ARx+lk)在尋址前,把一個(gè)帶符號的在尋址前,把一個(gè)帶符號的16位的長偏移以循環(huán)尋址位的長偏移以循環(huán)尋址的方式加到的方式加到ARx中,然后再用新的中,然后再用新的ARx的值作為數(shù)據(jù)的值作為數(shù)據(jù)存儲器的地址存儲器的地址1111*(lk)addr=lk一個(gè)無符號的一個(gè)無符號的16位的長偏移(位的長偏移(lk)用來作為數(shù)據(jù)存儲)用來作為數(shù)據(jù)存儲器的絕對地址。(也屬絕對尋址)器的絕對地址。(也屬絕對尋址)單數(shù)據(jù)存儲器操作數(shù)間接尋址類型單數(shù)據(jù)存儲器操作數(shù)間接尋址類型 201) 1)

18、 循環(huán)尋址循環(huán)尋址 循環(huán)緩沖區(qū)的長度值存放在循環(huán)緩沖循環(huán)緩沖區(qū)的長度值存放在循環(huán)緩沖區(qū)長度寄存器區(qū)長度寄存器BKBK中,中,BKBK中的數(shù)值由指令設(shè)定。長度為中的數(shù)值由指令設(shè)定。長度為R R的循環(huán)緩沖器必須從一個(gè)的循環(huán)緩沖器必須從一個(gè)N N位地址的邊界開始,即循環(huán)位地址的邊界開始,即循環(huán)緩沖器基地址的最低緩沖器基地址的最低N N位必須為位必須為0 0。N N是滿足是滿足2 2N NR R的最的最小整數(shù)。小整數(shù)。R R的值必須裝入的值必須裝入BKBK。例如,含有例如,含有3131個(gè)字的循環(huán)緩沖器必須從最低個(gè)字的循環(huán)緩沖器必須從最低5 5位為位為0 0的的地址開始,即地址開始,即xxxx xxxx

19、xxxx xxxx xxx0 0000 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個(gè)最低有效位為個(gè)最低有效位為0 0,即,即 00 000000 00002 2。212) 2) 位倒序?qū)ぶ肺坏剐驅(qū)ぶ?在這種尋址方式中,用在這種尋址方式中,用AR0AR0存放存放FFTFFT點(diǎn)數(shù)的一半整數(shù)點(diǎn)數(shù)的一半整數(shù)N N,用另一輔助寄存器指向一數(shù)據(jù),用另一輔

20、助寄存器指向一數(shù)據(jù)存放的物理單元。當(dāng)使用位倒序?qū)ぶ钒汛娣诺奈锢韱卧?。?dāng)使用位倒序?qū)ぶ钒袮R0AR0加到輔助寄加到輔助寄存器中時(shí),地址以位倒序的方式產(chǎn)生,即進(jìn)位是從左存器中時(shí),地址以位倒序的方式產(chǎn)生,即進(jìn)位是從左向右,而不是從右向左進(jìn)位。向右,而不是從右向左進(jìn)位。 例如:例如: 0110 10000110 1000 + 0000 1000 + 0000 1000 0110 01000110 0100以以8 8位輔助寄存器為例,位輔助寄存器為例,AR1AR1表示了在存儲器中數(shù)表示了在存儲器中數(shù)據(jù)的基地址(據(jù)的基地址(0110 00000110 0000)2 2,AR0AR0的值為(的值為(0000

21、 10000000 1000)2 2。利用以下兩條語句可以向外設(shè)口(口地址為。利用以下兩條語句可以向外設(shè)口(口地址為PAPA)輸出整序后的輸出整序后的FFTFFT變換結(jié)果:變換結(jié)果:RPT #15 RPT #15 重復(fù)執(zhí)行下條指令重復(fù)執(zhí)行下條指令15+115+1次次PORTW PORTW * *AR1+0BAR1+0B,PA PA 向外設(shè)口向外設(shè)口PAPA輸出整結(jié)果輸出整結(jié)果22AR1修改修改循環(huán)值循環(huán)值存儲單存儲單元地址元地址整序前整序前FFT 變換結(jié)果變換結(jié)果位倒序位倒序AR1更新的地址值更新的地址值A(chǔ)R0=0000 10002整序后整序后PA輸出的輸出的FFT變換結(jié)果變換結(jié)果00000X

22、(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)1101

23、0110 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變換結(jié)果的序號調(diào)整變換結(jié)果的序號調(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頁尋址。頁尋址。不影響不影響當(dāng)前當(dāng)前DPDP或或SPSP值值 。用于直用于直接尋址接尋址和間接和間接尋址尋址用來修用來修改存儲改存儲器映象器映象寄存器寄存器 6存儲器映象寄存器尋址存儲器映象寄存器尋址功能功能LDM PRD,ALDM PRD,A舉例舉例特點(diǎn)特點(diǎn)方法方法高高9 9位數(shù)據(jù)位數(shù)據(jù)存儲器地址存儲器地址被置被置0 0,利,利用指令中的用指令中的低位地址低位地址訪問訪問MMRMMR。267堆棧尋址堆棧尋址 從高地址向低地址方向生長,從高地址

26、向低地址方向生長,SPSP)來管理堆棧,)來管理堆棧,SPSP始終指始終指向堆棧中所存放的最后一個(gè)向堆棧中所存放的最后一個(gè)數(shù)據(jù),即數(shù)據(jù),即SPSP指針始終指向棧指針始終指向棧頂。在壓入操作時(shí),先減小頂。在壓入操作時(shí),先減小SPSP的值,再將數(shù)據(jù)壓入堆棧;的值,再將數(shù)據(jù)壓入堆棧;在彈出操作時(shí),先從堆棧彈在彈出操作時(shí),先從堆棧彈出數(shù)據(jù),再增加出數(shù)據(jù),再增加SPSP的值。的值。用來在中斷用來在中斷和子程序調(diào)和子程序調(diào)用時(shí)自動保用時(shí)自動保存程序計(jì)數(shù)存程序計(jì)數(shù)器(器(PCPC)中)中的數(shù)值的數(shù)值,也也能用來保護(hù)能用來保護(hù)現(xiàn)場或傳送現(xiàn)場或傳送參數(shù)參數(shù) 功能功能特點(diǎn)特點(diǎn)PSHD PSHD * *AR2AR2

27、 POPD POPD * *AR3AR327第二節(jié)第二節(jié) 程序地址的生成程序地址的生成程序地址程序地址生成器生成器(PAGENPAGEN)構(gòu)成構(gòu)成程序計(jì)數(shù)器(程序計(jì)數(shù)器(PCPC)重復(fù)計(jì)數(shù)器(重復(fù)計(jì)數(shù)器(RCRC)塊重復(fù)計(jì)數(shù)器(塊重復(fù)計(jì)數(shù)器(BRCBRC)塊重復(fù)起始地址寄存器(塊重復(fù)起始地址寄存器(RSARSA)塊重復(fù)結(jié)束地址寄存器(塊重復(fù)結(jié)束地址寄存器(REAREA)核心核心1616位程序計(jì)數(shù)器(位程序計(jì)數(shù)器(PCPC)內(nèi)中保存某個(gè)內(nèi)部或外內(nèi)中保存某個(gè)內(nèi)部或外部程序存儲器的地址部程序存儲器的地址。地址地址內(nèi)容為:內(nèi)容為:即將取指的某條指令即將取指的某條指令;某個(gè)某個(gè)1616位立即操作數(shù)位立即

28、操作數(shù);系數(shù)表系數(shù)表。在程序存儲器中的地址在程序存儲器中的地址28操作操作加載到加載到PC的地址的地址復(fù)位復(fù)位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。塊重復(fù)循環(huán)塊重復(fù)循環(huán)假如假如ST1中的塊重復(fù)有效位中的塊重復(fù)有效位BRAF=1,當(dāng),當(dāng)PC+1等于塊重復(fù)等于塊重復(fù)結(jié)束地址(結(jié)束地址(REA)+1,將塊重復(fù)起始地址(,將塊重復(fù)起始地址(RSA)加載)加載PC。子程序調(diào)用子程序調(diào)用將

29、將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壓入堆棧,用適當(dāng)?shù)闹袛嘞蛄康刂芳虞d壓入堆棧,用適當(dāng)?shù)闹袛嘞蛄康刂芳虞dPC。中斷返。中斷返回時(shí),將棧頂彈出至回時(shí),將棧頂

30、彈出至PC,繼續(xù)執(zhí)行被中斷了的子程序。,繼續(xù)執(zhí)行被中斷了的子程序。將程序存儲器地址加載到程序計(jì)數(shù)器的途徑將程序存儲器地址加載到程序計(jì)數(shù)器的途徑291分支轉(zhuǎn)移操作分支轉(zhuǎn)移操作 通過分支轉(zhuǎn)移指令改寫通過分支轉(zhuǎn)移指令改寫PCPC,可,可以改變程序的流向。而子程序以改變程序的流向。而子程序調(diào)用指令則通過將一個(gè)返回地調(diào)用指令則通過將一個(gè)返回地址壓入堆棧,執(zhí)行返回時(shí)恢復(fù)址壓入堆棧,執(zhí)行返回時(shí)恢復(fù)原地址。原地址??蓤?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如果當(dāng)如果當(dāng)前輔助寄存器前輔助寄存器不等于不等于0 0,就用,就用指令中所規(guī)定指令中所規(guī)定的地址加載的地址加載PCPC。 BC newBC new,AOVAOV BANZ loop,BANZ loop,* *AR2-AR2-B nextB nextBACC ABACC

32、A312調(diào)用和返回調(diào)用和返回 轉(zhuǎn)移前,原程序的轉(zhuǎn)移前,原程序的下條指令的地址被下條指令的地址被壓入堆棧,而在返壓入堆棧,而在返回時(shí)則將這個(gè)地址回時(shí)則將這個(gè)地址彈出至彈出至PCPC,使被中,使被中斷了的原程序能繼斷了的原程序能繼續(xù)執(zhí)行。續(xù)執(zhí)行。 當(dāng)采用調(diào)用指令進(jìn)當(dāng)采用調(diào)用指令進(jìn)行子程序或函數(shù)調(diào)行子程序或函數(shù)調(diào)用時(shí),用時(shí),DSPDSP中斷當(dāng)前中斷當(dāng)前運(yùn)行的程序,轉(zhuǎn)移運(yùn)行的程序,轉(zhuǎn)移到程序存儲器的其到程序存儲器的其它地它地址址繼續(xù)運(yùn)行。繼續(xù)運(yùn)行。功能功能方法方法無條件調(diào)用與返回?zé)o條件調(diào)用與返回有條件調(diào)用與返回有條件調(diào)用與返回帶延遲帶延遲不帶延遲不帶延遲CALLd lopCALLd lopRET ma

33、inRET main323條件指令中的條件判斷條件指令中的條件判斷33多重條件判斷多重條件判斷 BC pmadBC pmad,condcond,condcond,condcond相與關(guān)系相與關(guān)系相或關(guān)系相或關(guān)系BC pmadBC pmad,condcondBC pmadBC pmad,condcond第第1組組第第2組組A 類類B 類類A 類類B 類類C 類類EQOVTCCBIONEQNOVNTCNCNBIOLT LEQ GT GEQ 34第第1 1組組 例如例如 可以從可以從A A類中選一個(gè)條件,同類中選一個(gè)條件,同時(shí)可以從時(shí)可以從B B類中選擇一個(gè)條件。類中選擇一個(gè)條件。但是不能從同一類中

34、選擇兩但是不能從同一類中選擇兩個(gè)條件。個(gè)條件。另外,兩種條件測試的累加另外,兩種條件測試的累加器必須是同一個(gè)。器必須是同一個(gè)??梢酝瑫r(shí)測試可以同時(shí)測試AGTAGT和和AOVAOV,但,但不能同時(shí)測試不能同時(shí)測試AGTAGT和和BGTBGT。 35第第2 2組組 例如例如 可以在可以在A A、B B、C C三類中各三類中各選擇一個(gè)條件,但不能從選擇一個(gè)條件,但不能從同一類中選擇兩個(gè)條件同一類中選擇兩個(gè)條件 可以在可以在A A、B B、C C三類中各選三類中各選擇一個(gè)條件,但不能從同擇一個(gè)條件,但不能從同一類中選擇兩個(gè)條件一類中選擇兩個(gè)條件 36特特例例如果條件分支轉(zhuǎn)移出去的地方只有如果條件分支轉(zhuǎn)

35、移出去的地方只有1 12 2字的字的程序段,則可以用一條單周期條件執(zhí)行指令程序段,則可以用一條單周期條件執(zhí)行指令(XCXC)來代替分支轉(zhuǎn)移指令:)來代替分支轉(zhuǎn)移指令:XC nXC n,condcond,condcond,condcond當(dāng)當(dāng)n=1n=1,且條件得到滿足,就執(zhí)行緊隨此,且條件得到滿足,就執(zhí)行緊隨此條件指令后的個(gè)字指令。條件指令后的個(gè)字指令。當(dāng)當(dāng)n=2n=2,且條件得到滿足,就執(zhí)行緊隨此,且條件得到滿足,就執(zhí)行緊隨此指 令 后 的指 令 后 的 1 1 個(gè) 雙 字 指 令 或 者個(gè) 雙 字 指 令 或 者 2 2 條 單條 單字指令。字指令。當(dāng)條件不滿足,就依當(dāng)條件不滿足,就依n

36、n的值執(zhí)行的值執(zhí)行1 1條或條或2 2條條NOPNOP指令。指令。37例例3-3 編寫計(jì)算編寫計(jì)算 的主要程序部分。的主要程序部分。 .bss.bss x,4 x,4 ;為;為X X建立建立4 4個(gè)單元,個(gè)單元, ;放置;放置X1X1、X2X2、X3X3、X4X4 .bss.bss y,1 y,1 ;為;為Y Y建立建立1 1個(gè)單元,放置個(gè)單元,放置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清零清零l

37、oop:ADD loop:ADD * *AR1+AR1+,A A ;對;對X1X1、X2X2、X3X3、X4X4循環(huán)循環(huán)累累 ;加,結(jié)果放;加,結(jié)果放A A中中 BANZ loop,BANZ loop,* *AR2- AR2- ;檢查循環(huán)是否應(yīng)結(jié)束;檢查循環(huán)是否應(yīng)結(jié)束 STL ASTL A,y y ;將累加結(jié)果存入;將累加結(jié)果存入Y Y中中41iixy38特點(diǎn)特點(diǎn)2 2特點(diǎn)特點(diǎn)1 14單條指令的重復(fù)操作單條指令的重復(fù)操作 重復(fù)執(zhí)行(重復(fù)執(zhí)行(RCRC)+1+1次。次。RCRC內(nèi)容不能編程設(shè)置,內(nèi)容不能編程設(shè)置,只能由重復(fù)指令(只能由重復(fù)指令(RPTRPT和和RPTZRPTZ)中的操作數(shù)加載。)

38、中的操作數(shù)加載。操作數(shù)操作數(shù)n n的最大值為的最大值為65 65 535535,最大重復(fù)執(zhí)行次數(shù),最大重復(fù)執(zhí)行次數(shù)為為65 535+165 535+1。 一旦重復(fù)指令被取一旦重復(fù)指令被取指、譯碼,直到重指、譯碼,直到重復(fù)循環(huán)完成以前,復(fù)循環(huán)完成以前,對所有的中斷(包對所有的中斷(包括括 ,但不包,但不包括括 )均不響應(yīng)。)均不響應(yīng)。 功能功能重復(fù)執(zhí)行下一條指令重復(fù)執(zhí)行下一條指令 NMIRS39重復(fù)過程重復(fù)過程當(dāng)當(dāng)RPTRPT指令執(zhí)行時(shí)指令執(zhí)行時(shí):首先把循環(huán)的次數(shù)裝入循環(huán)計(jì)數(shù)器(首先把循環(huán)的次數(shù)裝入循環(huán)計(jì)數(shù)器(RCRC),),其循環(huán)次數(shù)其循環(huán)次數(shù)n n由一個(gè)由一個(gè)1616位單數(shù)據(jù)存儲器操作數(shù)位單

39、數(shù)據(jù)存儲器操作數(shù) SmemSmem或一個(gè)或一個(gè)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操作時(shí)不能被訪問。操作時(shí)不能被訪問。注意:注意:該循環(huán)內(nèi)不能套用循環(huán)。該循環(huán)內(nèi)不能套用循環(huán)。 當(dāng)當(dāng)RPTZRPTZ指令執(zhí)行時(shí)指令執(zhí)行時(shí):對目的累加器對目的累加器dstdst清清0 0, 循環(huán)執(zhí)行下一條指令循環(huán)執(zhí)行下一條指令n+1n+1次。次。 40例例3-5 利用單條指令的重復(fù)操作對數(shù)組利用單條指令的重復(fù)操作對數(shù)組x5=0 x5=0,0 0,0 0,0 0

40、,00進(jìn)行初始化。進(jìn)行初始化。.bss.bss x,5 x,5 ;為數(shù)組;為數(shù)組x x分配分配5 5個(gè)存儲單元個(gè)存儲單元STM #x,AR1 STM #x,AR1 ;將;將x x的首地址賦給的首地址賦給AR1AR1LD #0,A LD #0,A ;對;對A A清零清零RPT #4 RPT #4 ;設(shè)置重復(fù)執(zhí)行下條指令;設(shè)置重復(fù)執(zhí)行下條指令5 5次次STL A,STL A,* *AR1+AR1+;對;對x5x5各單元清零各單元清零或者或者.bss.bss x,5 x,5STM #x,AR1STM #x,AR1RPTZ A,#4RPTZ A,#4;對;對A A清零并設(shè)置重復(fù)執(zhí)行下條指令清零并設(shè)置重復(fù)執(zhí)行下條指令5

溫馨提示

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

評論

0/150

提交評論