第3章C24xDSP的CPU與指令系統(tǒng)_第1頁
第3章C24xDSP的CPU與指令系統(tǒng)_第2頁
第3章C24xDSP的CPU與指令系統(tǒng)_第3頁
第3章C24xDSP的CPU與指令系統(tǒng)_第4頁
第3章C24xDSP的CPU與指令系統(tǒng)_第5頁
已閱讀5頁,還剩52頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1第3章 C24x DSP的CPU與指令系統(tǒng)本章內(nèi)容:本章內(nèi)容:3.1 中央處理器中央處理器 3.2 尋址方式尋址方式 3.3 C24x DSP匯編指令匯編指令3.4 匯編語言命令與程序舉例匯編語言命令與程序舉例23.1 中央處理器中央處理器 3.1.1 CPU總體結(jié)構(gòu)總體結(jié)構(gòu) 240 x的的CPU主要由總線、主要由總線、CPU寄存器、程序地址發(fā)寄存器、程序地址發(fā)生器和控制邏輯、輔助寄存器算術(shù)單元生器和控制邏輯、輔助寄存器算術(shù)單元(ARAU)、中央算、中央算術(shù)邏輯單元術(shù)邏輯單元(CALU)、乘法器和移位器等邏輯部件組成。、乘法器和移位器等邏輯部件組成。 1)總線。)總線。2)程序地址發(fā)生器和控

2、制邏輯。)程序地址發(fā)生器和控制邏輯。3)ARAU。產(chǎn)生指令操作數(shù)的地址并將其送往對應(yīng)的。產(chǎn)生指令操作數(shù)的地址并將其送往對應(yīng)的數(shù)據(jù)地址總線。數(shù)據(jù)地址總線。4)CALU。執(zhí)行二進(jìn)制補(bǔ)碼的算術(shù)運(yùn)算和布爾運(yùn)算。執(zhí)行二進(jìn)制補(bǔ)碼的算術(shù)運(yùn)算和布爾運(yùn)算。5)乘法器??梢詧?zhí)行)乘法器??梢詧?zhí)行1616位的補(bǔ)碼乘法運(yùn)算,并產(chǎn)位的補(bǔ)碼乘法運(yùn)算,并產(chǎn)生生32位結(jié)果。乘法器采用位結(jié)果。乘法器采用16位乘數(shù)寄存器位乘數(shù)寄存器(TREG)、32位位乘積寄存器乘積寄存器(PREG)和和32位累加器位累加器(ACC)。6)移位器。)移位器。CPU的移位器實(shí)現(xiàn)對操作數(shù)的移位操作。的移位器實(shí)現(xiàn)對操作數(shù)的移位操作。 3240 x D

3、SP CPU內(nèi)內(nèi)部結(jié)構(gòu)功能框圖部結(jié)構(gòu)功能框圖 43.1.2 總線結(jié)構(gòu)總線結(jié)構(gòu)多組總線多組總線并行機(jī)制并行機(jī)制程序讀、數(shù)據(jù)讀、數(shù)據(jù)寫三種情況程序讀、數(shù)據(jù)讀、數(shù)據(jù)寫三種情況 內(nèi)部地址總線:三組內(nèi)部地址總線:三組 Address Bus:A0Address Bus:A015 (C24x)15 (C24x)程序讀地址總線程序讀地址總線PAB (Program Address Bus)PAB (Program Address Bus)數(shù)據(jù)讀地址總線數(shù)據(jù)讀地址總線DRAB (Data Read Address Bus)DRAB (Data Read Address Bus)數(shù)據(jù)寫地址總線數(shù)據(jù)寫地址總線DW

4、AB (Data Write Address Bus)DWAB (Data Write Address Bus)內(nèi)部數(shù)據(jù)總線:三組內(nèi)部數(shù)據(jù)總線:三組 Data Bus: D0Data Bus: D0D15D15(C24x)(C24x)程序讀數(shù)據(jù)總線程序讀數(shù)據(jù)總線PRDBPRDB數(shù)據(jù)讀數(shù)據(jù)總線數(shù)據(jù)讀數(shù)據(jù)總線DRDBDRDB數(shù)據(jù)寫數(shù)據(jù)總線數(shù)據(jù)寫數(shù)據(jù)總線DWEB DWEB 數(shù)據(jù)寫入數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)寫入數(shù)據(jù)存儲(chǔ)器(DM)(DM)和程序存儲(chǔ)器和程序存儲(chǔ)器(PM)(PM)外部外部Data/Address Data/Address 總線為單一形式總線為單一形式 5C2000 DSP 總線結(jié)構(gòu)總線結(jié)構(gòu) (24x

5、) 63.1.3 CPU內(nèi)核結(jié)構(gòu)內(nèi)核結(jié)構(gòu) CPU內(nèi)核模塊包括:輸入定標(biāo)移位器、內(nèi)核模塊包括:輸入定標(biāo)移位器、32位中央算位中央算術(shù)邏輯單元(術(shù)邏輯單元(CALU)、)、16位位16位乘法器、累加器和位乘法器、累加器和輸出定標(biāo)移位器等。輸出定標(biāo)移位器等。 CPU內(nèi)核框圖內(nèi)核框圖71) 輸入定標(biāo)移位器輸入定標(biāo)移位器(Input Scale, Shifter) 該單元將來自程序該單元將來自程序/數(shù)據(jù)存儲(chǔ)器的數(shù)據(jù)存儲(chǔ)器的16位數(shù)據(jù)調(diào)整為位數(shù)據(jù)調(diào)整為32位位數(shù)據(jù)送到中央算術(shù)邏輯單元(數(shù)據(jù)送到中央算術(shù)邏輯單元(CALU)。因此,輸入定標(biāo)移。因此,輸入定標(biāo)移位器的位器的16位輸入與數(shù)據(jù)總線相連,位輸入與數(shù)據(jù)

6、總線相連, 32位輸出與位輸出與CALU單元單元相連。相連。 輸入定標(biāo)移位器在算術(shù)定標(biāo)及邏輯操作非常有用。輸入定標(biāo)移位器在算術(shù)定標(biāo)及邏輯操作非常有用。 輸入定標(biāo)移位器對輸入數(shù)據(jù)進(jìn)行輸入定標(biāo)移位器對輸入數(shù)據(jù)進(jìn)行0-15位左移。左移位左移。左移時(shí),輸出的最低有效位時(shí),輸出的最低有效位(LSB)為為0,最高有效位,最高有效位(MSB)根根據(jù)狀態(tài)寄存器據(jù)狀態(tài)寄存器ST1的的SXM位(符號(hào)擴(kuò)展方式)的值來決位(符號(hào)擴(kuò)展方式)的值來決定是否進(jìn)行符號(hào)擴(kuò)展。定是否進(jìn)行符號(hào)擴(kuò)展。 當(dāng)當(dāng)SXM=1時(shí),則高位進(jìn)行符號(hào)擴(kuò)展;當(dāng)時(shí),則高位進(jìn)行符號(hào)擴(kuò)展;當(dāng)SXM=0時(shí),時(shí),則高位填則高位填0。 移位的次數(shù)由包含在指令中的

7、常量或臨時(shí)寄存器移位的次數(shù)由包含在指令中的常量或臨時(shí)寄存器(TREG, T, Temporary Register )中的值來指定。中的值來指定。82 ) 乘法器乘法器(Multiplier) 1616位的硬件乘法器,單個(gè)機(jī)器周期內(nèi)產(chǎn)生一個(gè)位的硬件乘法器,單個(gè)機(jī)器周期內(nèi)產(chǎn)生一個(gè)32位的有符號(hào)或無符號(hào)乘積。位的有符號(hào)或無符號(hào)乘積。 除了執(zhí)行無符號(hào)乘法指令(除了執(zhí)行無符號(hào)乘法指令(MPYU)外,所有的乘)外,所有的乘法指令均執(zhí)行有符號(hào)的乘法操作,即相乘的兩個(gè)數(shù)都作法指令均執(zhí)行有符號(hào)的乘法操作,即相乘的兩個(gè)數(shù)都作為二進(jìn)制的補(bǔ)碼數(shù),而運(yùn)算結(jié)果為一個(gè)為二進(jìn)制的補(bǔ)碼數(shù),而運(yùn)算結(jié)果為一個(gè)32位的二進(jìn)制的位的

8、二進(jìn)制的補(bǔ)碼數(shù)。補(bǔ)碼數(shù)。 乘法器接收的兩個(gè)乘數(shù),一個(gè)來自乘法器接收的兩個(gè)乘數(shù),一個(gè)來自16位的臨時(shí)寄存位的臨時(shí)寄存器(器(T),另一個(gè)通過數(shù)據(jù)讀總線(),另一個(gè)通過數(shù)據(jù)讀總線(DRDB)取自數(shù)據(jù)存)取自數(shù)據(jù)存儲(chǔ)器,或通過程序讀總線(儲(chǔ)器,或通過程序讀總線(PRDB)取自程序存儲(chǔ)器。)取自程序存儲(chǔ)器。9 兩個(gè)輸入值相乘后,兩個(gè)輸入值相乘后,32位的乘積結(jié)果保存在位的乘積結(jié)果保存在32位的位的乘積寄存器(乘積寄存器(P,PREG, Product Register)中。)中。 PREG的輸出連接到乘積定標(biāo)移位器的輸出連接到乘積定標(biāo)移位器(Product Scale, Shifter) ,通過乘積定

9、標(biāo)移位器,乘積結(jié)果可以從,通過乘積定標(biāo)移位器,乘積結(jié)果可以從P傳到傳到CALU或數(shù)據(jù)存儲(chǔ)器。乘積定標(biāo)移位器對乘積采用或數(shù)據(jù)存儲(chǔ)器。乘積定標(biāo)移位器對乘積采用4種乘種乘積移位方式。積移位方式。 移位方式由狀態(tài)寄存器移位方式由狀態(tài)寄存器ST1的乘積移位方式位(的乘積移位方式位(PM, Product Mode)指定,對于執(zhí)行乘法)指定,對于執(zhí)行乘法/累加操作、進(jìn)行小累加操作、進(jìn)行小數(shù)運(yùn)算或者進(jìn)行小數(shù)乘積的調(diào)整都很有用。數(shù)運(yùn)算或者進(jìn)行小數(shù)乘積的調(diào)整都很有用。10乘積定標(biāo)移位器的乘積移位方式乘積定標(biāo)移位器的乘積移位方式PM 移位移位 作用和意義作用和意義00 無移位無移位 乘積送乘積送CALU或數(shù)據(jù)寫總

10、線,不移位或數(shù)據(jù)寫總線,不移位01 左移左移1位位 移去二進(jìn)制補(bǔ)碼乘法產(chǎn)生的額外符號(hào)移去二進(jìn)制補(bǔ)碼乘法產(chǎn)生的額外符號(hào) 位,產(chǎn)生位,產(chǎn)生Q31格式的乘積格式的乘積10 左移左移4位位 當(dāng)與一個(gè)當(dāng)與一個(gè)13位的常數(shù)相乘時(shí),移去在位的常數(shù)相乘時(shí),移去在1613位(常數(shù))二進(jìn)制補(bǔ)碼產(chǎn)生的位(常數(shù))二進(jìn)制補(bǔ)碼產(chǎn)生的額外的額外的4位符號(hào)位,產(chǎn)生位符號(hào)位,產(chǎn)生Q31格式的乘積格式的乘積11 右移右移6位位 對乘積結(jié)果定標(biāo),以使得運(yùn)行對乘積結(jié)果定標(biāo),以使得運(yùn)行128次的次的乘積累加而累加器不會(huì)溢出乘積累加而累加器不會(huì)溢出 注:注:Q31格式是一種二進(jìn)制小數(shù)格式,表示有格式是一種二進(jìn)制小數(shù)格式,表示有31位二進(jìn)

11、制小數(shù)位二進(jìn)制小數(shù)113)中央算術(shù)邏輯單元)中央算術(shù)邏輯單元 中央算術(shù)邏輯單元中央算術(shù)邏輯單元(CALU, Central ALU)實(shí)現(xiàn)大部分實(shí)現(xiàn)大部分算術(shù)和邏輯運(yùn)算功能,大多數(shù)功能只需一個(gè)時(shí)鐘周期,這算術(shù)和邏輯運(yùn)算功能,大多數(shù)功能只需一個(gè)時(shí)鐘周期,這些運(yùn)算功能包括:些運(yùn)算功能包括:16位加、位加、16位減、邏輯運(yùn)算、位測試以位減、邏輯運(yùn)算、位測試以及移位和循環(huán)功能。及移位和循環(huán)功能。 由于由于CALU可以執(zhí)行布爾運(yùn)算,因此使得控制器具有可以執(zhí)行布爾運(yùn)算,因此使得控制器具有位操作功能。位操作功能。CALU的移位和循環(huán)在累加器中完成。的移位和循環(huán)在累加器中完成。 CALU是一個(gè)獨(dú)立的算術(shù)單元,它

12、和輔助寄存器算術(shù)是一個(gè)獨(dú)立的算術(shù)單元,它和輔助寄存器算術(shù)單元單元(ARAU)在程序執(zhí)行時(shí),是完全不同的兩個(gè)模塊。在程序執(zhí)行時(shí),是完全不同的兩個(gè)模塊。12 一旦操作在一旦操作在CALU中被執(zhí)行,運(yùn)算結(jié)果會(huì)被傳送中被執(zhí)行,運(yùn)算結(jié)果會(huì)被傳送到累加器中,在累加器中再實(shí)現(xiàn)如移位等附加操作。到累加器中,在累加器中再實(shí)現(xiàn)如移位等附加操作。 CALU有兩個(gè)輸入,一個(gè)由累加器提供,另一個(gè)有兩個(gè)輸入,一個(gè)由累加器提供,另一個(gè)由乘積寄存器(由乘積寄存器(P)或輸入數(shù)據(jù)定標(biāo)移位器的輸出提)或輸入數(shù)據(jù)定標(biāo)移位器的輸出提供。當(dāng)供。當(dāng)CALU執(zhí)行完一次操作后將結(jié)果送至執(zhí)行完一次操作后將結(jié)果送至32位累加位累加器,由累加器對

13、其結(jié)果進(jìn)行移位。累加器的輸出送到器,由累加器對其結(jié)果進(jìn)行移位。累加器的輸出送到32位輸出數(shù)據(jù)定標(biāo)移位器經(jīng)過輸出數(shù)據(jù)定標(biāo)移位器,位輸出數(shù)據(jù)定標(biāo)移位器經(jīng)過輸出數(shù)據(jù)定標(biāo)移位器,累加器的高、低累加器的高、低16位字可分別被移位或存入數(shù)據(jù)寄存位字可分別被移位或存入數(shù)據(jù)寄存器。器。13 CALU的溢出飽和方式可以由狀態(tài)寄存器的溢出飽和方式可以由狀態(tài)寄存器ST0的溢出的溢出模式(模式(OVM)位來使能或禁止。)位來使能或禁止。 根據(jù)根據(jù)CALU和累加器的狀態(tài),和累加器的狀態(tài),CALU可執(zhí)行各種分支可執(zhí)行各種分支指令。這些指令可以根據(jù)這些狀態(tài)位有意義的結(jié)合,有條指令。這些指令可以根據(jù)這些狀態(tài)位有意義的結(jié)合,有

14、條件地執(zhí)行。為了溢出管理,這些條件包括件地執(zhí)行。為了溢出管理,這些條件包括OV(根據(jù)溢出跳根據(jù)溢出跳轉(zhuǎn)轉(zhuǎn))和和EQ(根據(jù)累加器是否為根據(jù)累加器是否為0跳轉(zhuǎn)跳轉(zhuǎn))等。另外,等。另外,BACC(跳(跳到累加器指定的地址)指令可以跳轉(zhuǎn)到由累加器所指定的到累加器指定的地址)指令可以跳轉(zhuǎn)到由累加器所指定的程序存儲(chǔ)器地址;不影響累加器的位測試指令(程序存儲(chǔ)器地址;不影響累加器的位測試指令(BIT和和BITT)允許對數(shù)據(jù)存儲(chǔ)器中的一個(gè)指定位進(jìn)行測試。)允許對數(shù)據(jù)存儲(chǔ)器中的一個(gè)指定位進(jìn)行測試。 對絕大多數(shù)的指令,狀態(tài)寄存器對絕大多數(shù)的指令,狀態(tài)寄存器ST1的第的第10位符號(hào)擴(kuò)位符號(hào)擴(kuò)展位(展位(SXM)決定了

15、在)決定了在CALU計(jì)算時(shí)是否使用符號(hào)擴(kuò)展。計(jì)算時(shí)是否使用符號(hào)擴(kuò)展。SXM=0,符號(hào)擴(kuò)展無效;,符號(hào)擴(kuò)展無效;SXM=1,符號(hào)擴(kuò)展有效。,符號(hào)擴(kuò)展有效。144) 累加器(累加器(ACC,32位位, 高高16位位ACCH, 低低16位位ACCL) 當(dāng)當(dāng)CALU中的運(yùn)算完成后,其結(jié)果就被送至累加器,中的運(yùn)算完成后,其結(jié)果就被送至累加器,并在累加器中執(zhí)行單一的移位或循環(huán)操作。并在累加器中執(zhí)行單一的移位或循環(huán)操作。 累加器的高位和低位字中的任意一個(gè)可以被送至輸累加器的高位和低位字中的任意一個(gè)可以被送至輸出數(shù)據(jù)定標(biāo)移位器,在此定標(biāo)移位后,再保存于數(shù)據(jù)存出數(shù)據(jù)定標(biāo)移位器,在此定標(biāo)移位后,再保存于數(shù)據(jù)存儲(chǔ)器

16、。與累加器有關(guān)的狀態(tài)位和轉(zhuǎn)移指令:儲(chǔ)器。與累加器有關(guān)的狀態(tài)位和轉(zhuǎn)移指令: 進(jìn)位標(biāo)志位進(jìn)位標(biāo)志位C 狀態(tài)寄存器狀態(tài)寄存器ST1的第的第9位。下述情況之一將影響進(jìn)位位。下述情況之一將影響進(jìn)位標(biāo)志位標(biāo)志位C。15加到累加器或從累加器減加到累加器或從累加器減 當(dāng)當(dāng)C=0,減結(jié)果產(chǎn)生借位時(shí)或加結(jié)果未產(chǎn)生進(jìn)位時(shí)。,減結(jié)果產(chǎn)生借位時(shí)或加結(jié)果未產(chǎn)生進(jìn)位時(shí)。 當(dāng)當(dāng)C=1,加結(jié)果產(chǎn)生進(jìn)位時(shí)或減結(jié)果未產(chǎn)生借位時(shí)。,加結(jié)果產(chǎn)生進(jìn)位時(shí)或減結(jié)果未產(chǎn)生借位時(shí)。2)將累加器數(shù)值移將累加器數(shù)值移1位或循環(huán)移位或循環(huán)移1位位在左環(huán)移或循環(huán)左移的過程中,累加器的最高有效位在左環(huán)移或循環(huán)左移的過程中,累加器的最高有效位被送至被送至C

17、位。在右環(huán)移或循環(huán)右移的過程中,累加器位。在右環(huán)移或循環(huán)右移的過程中,累加器的最低有效位被送至的最低有效位被送至C位。位。16溢出方式標(biāo)志位溢出方式標(biāo)志位OVM狀態(tài)寄存器狀態(tài)寄存器ST0的第的第11位。位。OVM位決定位決定ACC如何反映如何反映算術(shù)運(yùn)算的溢出。算術(shù)運(yùn)算的溢出。OVM=1,ACC運(yùn)算溢出,運(yùn)算溢出, 累加器被設(shè)定為下列兩個(gè)累加器被設(shè)定為下列兩個(gè)特定值之一:特定值之一: 若正溢出,若正溢出,ACC中填最大正數(shù)中填最大正數(shù):7FFF FFFFh 若負(fù)溢出,若負(fù)溢出,ACC中填最大負(fù)數(shù)中填最大負(fù)數(shù):8000 0000hOVM=0,ACC中的結(jié)果正常溢出。中的結(jié)果正常溢出。17溢出標(biāo)志

18、位溢出標(biāo)志位OV狀態(tài)寄存器狀態(tài)寄存器ST0的第的第12位,位,C=0,累加器未溢出;,累加器未溢出;C=1,累加器溢出,且被鎖存。,累加器溢出,且被鎖存。 測試測試/控制標(biāo)志位控制標(biāo)志位TCST1的第的第11位,根據(jù)被測位的值置位,根據(jù)被測位的值置1或清或清0。與累加器有關(guān)的轉(zhuǎn)移指令大都取決于與累加器有關(guān)的轉(zhuǎn)移指令大都取決于C、OV、TC的狀態(tài)和累加器的值。的狀態(tài)和累加器的值。185)輸出定標(biāo)移位器)輸出定標(biāo)移位器(Output Scale, Shifter ) 它存儲(chǔ)指令中指定的位數(shù),將累加器輸出的內(nèi)容它存儲(chǔ)指令中指定的位數(shù),將累加器輸出的內(nèi)容左移左移0-7位,然后將移位器的高位字或低位字存

19、到數(shù)據(jù)位,然后將移位器的高位字或低位字存到數(shù)據(jù)存儲(chǔ)器中(用存儲(chǔ)器中(用SACH或或SACL指令,指令,Save to)。在此過)。在此過程中,累加器的內(nèi)容保持不變。程中,累加器的內(nèi)容保持不變。193.1.4 狀態(tài)寄存器狀態(tài)寄存器(Status)ST0和和ST1 狀態(tài)寄存器狀態(tài)寄存器ST0和和ST1包含了包含了DSP運(yùn)行時(shí)的各種狀運(yùn)行時(shí)的各種狀態(tài)和控制位。內(nèi)容可被讀出并保存到數(shù)據(jù)存儲(chǔ)器態(tài)和控制位。內(nèi)容可被讀出并保存到數(shù)據(jù)存儲(chǔ)器(用用SST指令指令),或從數(shù)據(jù)存儲(chǔ)器讀出加載到,或從數(shù)據(jù)存儲(chǔ)器讀出加載到ST0和和ST1 (用用LST指指令令, Load ST),用來在子程序調(diào)用或進(jìn)入中斷時(shí)實(shí)現(xiàn),用來

20、在子程序調(diào)用或進(jìn)入中斷時(shí)實(shí)現(xiàn)CPU各種狀態(tài)的保存。各種狀態(tài)的保存。 可用指令對可用指令對ST0和和ST1中的各個(gè)位單獨(dú)置中的各個(gè)位單獨(dú)置1或清或清0 (SETC或或CLRC指令指令)。 可對比可對比8086的的F寄存器,寄存器,8051的的PSW寄存器。寄存器。20狀態(tài)寄存器狀態(tài)寄存器ST0 ARP 當(dāng)前輔助寄存器指針當(dāng)前輔助寄存器指針 000-111,AR0-AR7 OV 溢出標(biāo)志位溢出標(biāo)志位,為,為1時(shí),有溢出。時(shí),有溢出。 OVM 溢出模式位溢出模式位。 OVM=1, 溢出時(shí),溢出時(shí),A中為最大或最小值。中為最大或最小值。 OVM=0,按正常溢出。,按正常溢出。 INTM中斷模式位中斷模

21、式位,可禁止可禁止(INTM=1)或使能可屏蔽中斷或使能可屏蔽中斷 DP 數(shù)據(jù)存儲(chǔ)器頁面指針數(shù)據(jù)存儲(chǔ)器頁面指針(Data Page) 9位,用于直接尋址地位,用于直接尋址地址的高址的高9位,與指令中的低位,與指令中的低7位共同形成位共同形成16位地址。位地址。Bit15-1312111098-0名稱名稱ARPOVOVM1INTMDP復(fù)位值復(fù)位值x0 x11x21狀態(tài)寄存器狀態(tài)寄存器ST1 ARB 輔助寄存器指針緩沖器輔助寄存器指針緩沖器,存放,存放ARP。 CNF 片內(nèi)片內(nèi)DARAM B0配置位配置位。CNF=0, B0映射為數(shù)據(jù)存映射為數(shù)據(jù)存儲(chǔ)器儲(chǔ)器(DM); CNF=1, B0映射為程序存

22、儲(chǔ)器映射為程序存儲(chǔ)器(PM) TC 測試標(biāo)志位。測試標(biāo)志位。 SXM 符號(hào)擴(kuò)展模式位。符號(hào)擴(kuò)展模式位。SXM=1, 允許符號(hào)擴(kuò)展。允許符號(hào)擴(kuò)展。 C 進(jìn)位位。進(jìn)位位。 XF, XF引腳狀態(tài)位。引腳狀態(tài)位。復(fù)位時(shí),復(fù)位時(shí),XF=1。 PM,乘積移位模式位,乘積移位模式位,PM=00(沒有移位,復(fù)位值沒有移位,復(fù)位值),01(左左移移1位位), 10 (左移左移4位位), 11 (右移右移6位位)Bit15-1312111098-543-21-0名稱名稱ARBCNFTCSXMC 111XF11PM復(fù)位值復(fù)位值x0 x11100223.1.5 輔助寄存器算術(shù)單元輔助寄存器算術(shù)單元ARAU輔助寄存器算

23、術(shù)單元輔助寄存器算術(shù)單元ARAU輔助寄存器輔助寄存器AR0-AR7: 間接尋址間接尋址當(dāng)前工作輔助寄存器當(dāng)前工作輔助寄存器(由由ARP選擇選擇)AR+1, AR-1 (*+, *-)AR+-AR0 (*0+,*0-)*BR0+- (反向進(jìn)位)(反向進(jìn)位) ARAU完全獨(dú)立于中央完全獨(dú)立于中央算術(shù)邏輯單元。主要功能算術(shù)邏輯單元。主要功能是在是在CALU操作的同時(shí)執(zhí)行操作的同時(shí)執(zhí)行8個(gè)輔助寄存器個(gè)輔助寄存器AR7-AR0中中的算術(shù)運(yùn)算的算術(shù)運(yùn)算, AR7-AR0提供提供了強(qiáng)大而靈活的間接尋址了強(qiáng)大而靈活的間接尋址能力。能力。23 利用利用ARAU中的中的16位地址可訪問數(shù)據(jù)存儲(chǔ)器位地址可訪問數(shù)據(jù)存

24、儲(chǔ)器64K字字空間的任一單元??臻g的任一單元。 可通過指令向可通過指令向ST0的的ARP指針裝入指針裝入3位位(0-7)數(shù)據(jù)來選數(shù)據(jù)來選擇某一輔助寄存器擇某一輔助寄存器(AR0-7, Auxiliary Register )。 ARAU的的8個(gè)輔助寄存器提供了強(qiáng)大而靈活的間接個(gè)輔助寄存器提供了強(qiáng)大而靈活的間接尋址能力。利用輔助寄存器中的尋址能力。利用輔助寄存器中的16位地址可訪問數(shù)據(jù)位地址可訪問數(shù)據(jù)存儲(chǔ)器存儲(chǔ)器64K字空間的任一單元。字空間的任一單元。ARAU除可對數(shù)據(jù)存儲(chǔ)器的尋址外,還可用作它用:除可對數(shù)據(jù)存儲(chǔ)器的尋址外,還可用作它用:(1) 通過通過CMPR比較指令,利用輔助寄存器支持條件

25、比較指令,利用輔助寄存器支持條件轉(zhuǎn)移、調(diào)用和返回;轉(zhuǎn)移、調(diào)用和返回;(2) 利用輔助寄存器作為暫存單元;利用輔助寄存器作為暫存單元;(3) 利用輔助寄存器進(jìn)行軟件計(jì)數(shù)。根據(jù)需要將其加利用輔助寄存器進(jìn)行軟件計(jì)數(shù)。根據(jù)需要將其加1或減或減1。243.2 尋址方式尋址方式 C24x CPU三種基本尋址方式:立即尋址、直接尋三種基本尋址方式:立即尋址、直接尋址和間接尋址。址和間接尋址。1. 立即尋址立即尋址立即尋址立即尋址: 指令中包含一個(gè)立即數(shù)。指令中包含一個(gè)立即數(shù)。 立即數(shù)可分為短立即數(shù)立即數(shù)可分為短立即數(shù)(8,9,13位位)和長短立即數(shù)和長短立即數(shù)(16 位位)例例: RPT #k ;下面的指令

26、重復(fù)執(zhí)行下面的指令重復(fù)執(zhí)行k+1次次, #k為為8位位 LDP #k ; DP=k, #k為為9 位位 MPY #k ; P = T*k, #k為為13 位位, P: Product, T: TREG ADD #lk, shift ; ACC = ACC+#lk左移左移shift次次 #lk為為16 位位 LACC #10h; ACC=#10H, “#”號(hào)表示立即數(shù)號(hào)表示立即數(shù) ( LACC 10h ; 直接尋址,當(dāng)前直接尋址,當(dāng)前DP的第的第10h單元數(shù)據(jù)送單元數(shù)據(jù)送 累加器累加器ACC中)中)252. 直接尋址直接尋址 數(shù)據(jù)存儲(chǔ)器數(shù)據(jù)存儲(chǔ)器(DM: Data Memory)直接地址由高直接

27、地址由高9位位DP (Data Page Pointer數(shù)據(jù)頁面指針數(shù)據(jù)頁面指針)和低和低7位地址共同組成。位地址共同組成。 數(shù)據(jù)頁面指針數(shù)據(jù)頁面指針DP的范圍:的范圍:0511頁,頁,dma=0127 即即DP指向指向512頁中的一頁,頁中的一頁, dma表示該頁表示該頁128單元之一。單元之一。 512*128W=64 KW 機(jī)器碼格式:機(jī)器碼格式:D158為操作碼為操作碼, D7=0, D60 頁內(nèi)地址頁內(nèi)地址(dma) 例例. LDP #4 ; DP=#4 =0000 0010 0, ADD 9h ; ACC = ACC+(209h), 9=000 1001 高高9位位DP低低7位位d

28、ma: 0000 0010 0 000 1001=209h264. 間接尋址間接尋址 間接尋址間接尋址: 數(shù)據(jù)存儲(chǔ)單元可以通過當(dāng)前輔助寄存器內(nèi)數(shù)據(jù)存儲(chǔ)單元可以通過當(dāng)前輔助寄存器內(nèi)容所代表的容所代表的16位地址進(jìn)行訪問。位地址進(jìn)行訪問。 8個(gè)個(gè)16位輔助寄存器位輔助寄存器AR0AR7 當(dāng)前輔助寄存器由當(dāng)前輔助寄存器由ARP (ST0: D1513=000111)指定指定例例 MAR *, AR1; 選擇選擇AR1為當(dāng)前輔助寄存器,為當(dāng)前輔助寄存器,ARP=1 LAR AR1, #208h; AR1=#208h ADD *, 8 ; ACC=ACC+(208h)*28 間接尋址間接尋址間接尋址類型

29、:間接尋址類型: * 地址不變地址不變 *+ AR= AR+1 當(dāng)前當(dāng)前AR中的地址加中的地址加1 *- AR= AR-1 *0+ AR= AR+AR0 *0- AR= AR-AR0 *BR0+ AR= B(AR+AR0) 地址反向進(jìn)位加,用于地址反向進(jìn)位加,用于FFT *BR0- AR= B(AR-AR0)27 下一個(gè)輔助寄存器:下一個(gè)輔助寄存器: 許多指令除了可以修改當(dāng)前輔助許多指令除了可以修改當(dāng)前輔助寄存器的數(shù)值外,還可以指定下一個(gè)輔助寄存器,作寄存器的數(shù)值外,還可以指定下一個(gè)輔助寄存器,作為下一條指令的當(dāng)前輔助寄存器。為下一條指令的當(dāng)前輔助寄存器。例例. MAR *, AR1 ; AR

30、1為當(dāng)前為當(dāng)前AR,即即ARP=1 LT *+, AR2 ; T=(AR1), AR1=AR1+1, ARP=2 MPY * ; P=T*(AR2)=(AR1)*(AR2)間接尋址舉例間接尋址舉例ADD *, 8 ADD *+, 8, AR4 ADD *-, 8 ADD *0+, 8 ADD *0-, 8 ADD *BR0+, 8 ADD *BR0-, 8283.3 C24x DSP匯編指令匯編指令C24x DSP指令系統(tǒng)一覽表見教材。指令系統(tǒng)一覽表見教材。 C24X指令分類表指令分類表 : 86條條 傳送指令,算術(shù)操作,邏輯運(yùn)算指令傳送指令,算術(shù)操作,邏輯運(yùn)算指令,分支轉(zhuǎn)移指令分支轉(zhuǎn)移指令1

31、)累加器、算術(shù)和累加器、算術(shù)和邏輯操作指令,邏輯操作指令,26條條2)輔助寄存器輔助寄存器操作指令,操作指令,7條條(BANZ 也是跳轉(zhuǎn)指令也是跳轉(zhuǎn)指令)3)T寄存器、寄存器、P寄存器和乘寄存器和乘操作指令,操作指令,20條條4)跳轉(zhuǎn)指令,跳轉(zhuǎn)指令,12條條5)控制指令,控制指令,15條條(SPM指令與第指令與第3類重復(fù))類重復(fù))6)I/O及數(shù)據(jù)存儲(chǔ)器操作指令,及數(shù)據(jù)存儲(chǔ)器操作指令,8條條匯編指令格式匯編指令格式: 標(biāo)號(hào)標(biāo)號(hào) 指令指令(操作碼操作碼) 操作數(shù)操作數(shù) ;注釋注釋291) 累加器、算術(shù)、邏輯指令累加器、算術(shù)、邏輯指令(26條)條)30累加器、算術(shù)、邏輯指令(續(xù))累加器、算術(shù)、邏輯指

32、令(續(xù))31累加器、算術(shù)、邏輯指令(續(xù))累加器、算術(shù)、邏輯指令(續(xù))322) 輔助寄存器指令輔助寄存器指令(7條)條)333) T, P寄存器與乘法指令寄存器與乘法指令(20條)條)344) 分支轉(zhuǎn)移指令分支轉(zhuǎn)移指令(12條)條)355) 控制指令控制指令 (15條條)366)/及存儲(chǔ)器指令及存儲(chǔ)器指令(8條條)37指令中常用符號(hào)表指令中常用符號(hào)表 AR:輔助寄存器:輔助寄存器ACC:累加器:累加器dma: DM地址低地址低7位位DP:9位數(shù)據(jù)頁面指針位數(shù)據(jù)頁面指針ind: 間接尋址方式間接尋址方式#:立即數(shù):立即數(shù)shift: 左移位數(shù)左移位數(shù) 0-15PA: 16位外部接口地址位外部接口地

33、址shift2: 左移位數(shù)左移位數(shù) 0-7pma: 16位程序地址位程序地址ARn:指定的指定的輔助寄存器輔助寄存器 cond: 條件指令的條件條件指令的條件( ):存儲(chǔ)單元內(nèi)容存儲(chǔ)單元內(nèi)容 :可選項(xiàng)可選項(xiàng)38匯編語言指令舉例匯編語言指令舉例: 加法指令加法指令例如,例如, 加法指令:加法指令:ADD dma , shift;直接尋址直接尋址ADD dma, 16;左移左移16位直接尋址位直接尋址ADD ind , shift , ARn ;間接尋址間接尋址ADD ind, 16 , ARn ;左移左移16位間接尋址位間接尋址ADD #k;短立即尋址短立即尋址ADD #lk , shift ;

34、長立即尋址長立即尋址39匯編語言指令舉例匯編語言指令舉例: 加法指令加法指令A(yù)DD例例. 指令指令 ADD *+, 0, AR0 功能:功能: ACC=ACC+(AR), AR=AR+1, ARP=0執(zhí)行前執(zhí)行前ARP=4AR4=302HDM: (302H)=2 ACC=2 C=X 執(zhí)行后執(zhí)行后ARP=0AR4=303HDM: (302H)=2 ACC=4 C=040匯編語言指令匯編語言指令(1)ABS : 累加器取絕對值累加器取絕對值(2)ADD: 累加器加累加器加(3)ADDC: 帶進(jìn)位累加器加帶進(jìn)位累加器加(4)ADDS: 抑制符號(hào)擴(kuò)展的累加器加抑制符號(hào)擴(kuò)展的累加器加(5)ADDT: T

35、寄存器指定移位次數(shù)的累加器加寄存器指定移位次數(shù)的累加器加(6)ADRK: 輔助寄存器加短立即數(shù)輔助寄存器加短立即數(shù)(7)AND: 和累加器進(jìn)行與操作和累加器進(jìn)行與操作(8)APAC: P加到加到ACC(9)B : 無條件跳轉(zhuǎn)無條件跳轉(zhuǎn)(10) BACC: 跳轉(zhuǎn)到跳轉(zhuǎn)到ACCL確定的地址確定的地址(11) BANZ: 輔助寄存器非輔助寄存器非0跳轉(zhuǎn)跳轉(zhuǎn) 語法語法: BANZ pma ,ind ,ARn 例例 BANZ PGM191, *-, AR041匯編語言編程例匯編語言編程例 編程將數(shù)據(jù)存儲(chǔ)器編程將數(shù)據(jù)存儲(chǔ)器60H69H單元內(nèi)容求和。單元內(nèi)容求和。 MAR MAR * *,AR0 AR0 ;

36、設(shè);設(shè)AR0AR0為當(dāng)前為當(dāng)前ARAR LAR AR1 LAR AR1,#09H #09H ;1010個(gè)單元,計(jì)數(shù)器個(gè)單元,計(jì)數(shù)器 LAR AR0LAR AR0,#60H #60H ;初始單元;初始單元AR0=#60HAR0=#60H,地址指針,地址指針 LACC #0 LACC #0 ;和初值;和初值 ACC=0ACC=0PGM191PGM191: ADD ADD * *+ +,AR1 AR1 ;累加,;累加,AR0+1AR0+1,下一當(dāng)前,下一當(dāng)前ARAR為為AR1AR1 BANZ PGM191, BANZ PGM191,* *-,AR0-,AR0;AR10 AR10 則循環(huán),則循環(huán), 且

37、且AR1=AR1-1AR1=AR1-1 ;下一當(dāng)前;下一當(dāng)前ARAR為為AR0AR0 ; ACC=0+(60H)+(61H)+ACC=0+(60H)+(61H)+(69H)+(69H)42(12) BCND: 條件跳轉(zhuǎn)條件跳轉(zhuǎn)(13) BIT: 位測試位測試(14) BITT: T寄存器指定測試寄存器指定測試(15) BLDD: 數(shù)據(jù)塊移動(dòng)數(shù)據(jù)塊移動(dòng)(16) BLPD: 程序區(qū)到數(shù)據(jù)區(qū)的塊移動(dòng)程序區(qū)到數(shù)據(jù)區(qū)的塊移動(dòng)(17) CALA: 調(diào)用調(diào)用ACC指定的子程序指定的子程序(18) CALL: 無條件調(diào)用子程序無條件調(diào)用子程序(19) CC: 條件調(diào)用條件調(diào)用(20) CLRC: 控制位清控制

38、位清0(21) CMPL:ACC取反取反 (22) CMPR: 輔助寄存器輔助寄存器AR與與AR0比較比較(23) DMOV: 數(shù)據(jù)移動(dòng)數(shù)據(jù)移動(dòng)(24) IDLE:等待中斷等待中斷(25) IN: 從外部端口讀入數(shù)據(jù)從外部端口讀入數(shù)據(jù)43BITT指令指令: T寄存器指定位測試寄存器指定位測試語法:語法:1) BITT dma 2) BITT ind ,ARn功能:將功能:將DM單元中指定的位復(fù)制到狀態(tài)寄存器單元中指定的位復(fù)制到狀態(tài)寄存器ST1的的TC位。指定的位對應(yīng)于位。指定的位對應(yīng)于15-T(3:0)。例例 BITT 00H ;(DP=6)執(zhí)行前執(zhí)行前DM: (300H)=4DC8HT=1T

39、C=0執(zhí)行后執(zhí)行后DM: (300H)=4DC8H 0100 DC8 T=1 D(15-1)=D14=1TC=144BLDD指令指令:數(shù)據(jù)塊移動(dòng)數(shù)據(jù)塊移動(dòng)語法:語法:1) BLDD #lk, dma 2) BLDD #lk, ind , ARn 3) BLDD dma, #lk 4) BLDD ind,#lk , ARn說明:該指令實(shí)現(xiàn)說明:該指令實(shí)現(xiàn)DM到到DM的塊移動(dòng),第一個(gè)數(shù)指定源地址,的塊移動(dòng),第一個(gè)數(shù)指定源地址,第二個(gè)數(shù)指定目的地址。一旦啟動(dòng)了流水線,它就成為單周期第二個(gè)數(shù)指定目的地址。一旦啟動(dòng)了流水線,它就成為單周期指令。指令。例子例子, BLDD #300h,20h; (DP=6

40、)執(zhí)行前執(zhí)行前DM: (300h)=05h (320h)=0fh執(zhí)行后執(zhí)行后DM: (300h)=05h (320h)=05h45(26) INTR: 軟件中斷軟件中斷(27) LACC: 帶移位的帶移位的ACC裝載裝載(28) LACL: 裝載裝載ACCL,ACCH=0(29) LACT: 由由T指定移位次數(shù)的指定移位次數(shù)的ACC裝載裝載(30) LAR: Load AR 裝載輔助寄存器裝載輔助寄存器(31) LDP: Load DP 裝載裝載DP(32) LPH: Load PH(33) LST: Load ST(34) LT: Load T(35) LTA: Load T and Add

41、(36) LTD: 裝載裝載T寄存器、累加前次乘積并移動(dòng)寄存器、累加前次乘積并移動(dòng)(37) LTP: 裝載裝載T寄存器并將寄存器并將P送到送到ACC(38) LTS: Load T and Subtract(39) MAC: 乘累加乘累加46MAC指令指令: 乘累加乘累加語法語法 1) MAC pma, dma 2) MAC pma, ind , ARn功能功能:ACC=ACC+P, T=(dma), P=(pma)*(dma) = (pma)*T例例, MAC 0FF00H, 08 ; (DP=6, 移位模式移位模式PM=00)執(zhí)行前執(zhí)行前DM: (308h)=23hPM: (FF00H)=

42、4T= 45h P=458972hACC=723EC41h執(zhí)行后執(zhí)行后DM: (308h)=23hPM: (FF00H)=4T= 23h P=8CHACC=76975b3h47MACD 指令:乘累加并移動(dòng)數(shù)據(jù)指令:乘累加并移動(dòng)數(shù)據(jù)語法語法 1) MACD pma, dma 2) MACD pma, ind ,ARn例例, MACD 0FF00H, 08 ; (DP=6, 移位移位PM=00)功能功能:ACC=ACC+P, T=(DM), P=(PM)*(DM), (DM+1)=(DM)執(zhí)行前執(zhí)行前執(zhí)行后執(zhí)行后DM: (308h)=23h DM: (308h)=23hDM: (309h)=18h

43、 DM: (309h)=23hPM: (FF00H)=4 PM: (FF00H)=4T= 45h T= 23h P=458972h P=8CHACC=723EC41hACC=76975b3h48(40) MACD : 乘累加并移動(dòng)數(shù)據(jù)乘累加并移動(dòng)數(shù)據(jù)(41) MAR: Modify AR 修改輔助寄存器修改輔助寄存器(42) MPY: Multiply 乘乘(43) MPYA:乘且累加前次積乘且累加前次積(44) MPYS: 乘且減去前次積乘且減去前次積(45) MPYU: 無符號(hào)乘無符號(hào)乘(46) NEG: ACC取補(bǔ)碼取補(bǔ)碼(47) NMI:Non Maskable Interrupt 非

44、屏蔽中斷非屏蔽中斷(48) NOP: No Operation 空操作空操作(49) NORM: ACC規(guī)格化規(guī)格化(50) OR: 與與ACC或運(yùn)算或運(yùn)算(51) OUT:輸出數(shù)據(jù)到端口輸出數(shù)據(jù)到端口(52) PAC: P送到送到ACC(53) POP: 棧定內(nèi)容彈出到棧定內(nèi)容彈出到ACCL49(54) POPD: POP to Data memory棧頂內(nèi)容彈出到數(shù)據(jù)存儲(chǔ)器單元棧頂內(nèi)容彈出到數(shù)據(jù)存儲(chǔ)器單元(55) PSHD:數(shù)據(jù)存儲(chǔ)器單元壓入堆棧數(shù)據(jù)存儲(chǔ)器單元壓入堆棧(56) PUSH: ACCL壓入堆棧壓入堆棧(57) RET: 子程序返回子程序返回(58) RETC:條件返回條件返回(

45、59) ROL: A循環(huán)左移循環(huán)左移(60) ROR: A循環(huán)右移循環(huán)右移(61) RPT:重復(fù)執(zhí)行下一條指令重復(fù)執(zhí)行下一條指令(62) SACH: Store ACCH(63) SACL: Store ACCL(64) SAR: Store AR(65) SBRK: AR減去短立即數(shù)減去短立即數(shù)50PSHD指令指令:數(shù)據(jù)存儲(chǔ)器單元壓入堆棧數(shù)據(jù)存儲(chǔ)器單元壓入堆棧語法語法: 1) PSHD dma 2) PSHD ind , ARn說明:堆棧依次向下移動(dòng)一級(jí),指定說明:堆棧依次向下移動(dòng)一級(jí),指定存儲(chǔ)器單元存儲(chǔ)器單元的內(nèi)容復(fù)制到棧頂。的內(nèi)容復(fù)制到棧頂。堆棧底部的值丟失。堆棧底部的值丟失。例子例子

46、PSHD *, AR1執(zhí)行前執(zhí)行前ARP=0AR0=1FFHDM: (1FFH)=12H硬件堆棧硬件堆棧 2h33h 78h 99h 42h 50h 0h 0h執(zhí)行后執(zhí)行后ARP=1AR0=1FFHDM: (1FFH)=12H硬件堆棧硬件堆棧12h 2h33h 78h 99h 42h 50h 0h51POPD指令指令: 棧頂內(nèi)容彈出到存儲(chǔ)器單元棧頂內(nèi)容彈出到存儲(chǔ)器單元說明:棧頂?shù)膬?nèi)容復(fù)制到說明:棧頂?shù)膬?nèi)容復(fù)制到DM單元中。堆棧值依次向上復(fù)制一級(jí)。單元中。堆棧值依次向上復(fù)制一級(jí)。語法語法: 1) POPD dma 2) POPD ind , ARn例子例子 POPD 20h ; (DP=6)執(zhí)行前執(zhí)行前DM: (320H)=82H硬件堆棧硬件堆棧45h16h 7h 33h 42h 56h 37h 61h執(zhí)行前執(zhí)行前DM: (320H)=45H硬件堆棧硬件堆棧16h 7h 33h 42h 56h 37h 61h61h52(66) SETC: 控制位置位控制位置位(67) SFL: A左移左移(68) SFR: A右移右移(69) SPAC: A減減P(70) SPH: Store PH(71)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論