第二章 DSP入門教程TMS320LF240x教程之內(nèi)部資源介紹_第1頁
第二章 DSP入門教程TMS320LF240x教程之內(nèi)部資源介紹_第2頁
第二章 DSP入門教程TMS320LF240x教程之內(nèi)部資源介紹_第3頁
第二章 DSP入門教程TMS320LF240x教程之內(nèi)部資源介紹_第4頁
第二章 DSP入門教程TMS320LF240x教程之內(nèi)部資源介紹_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第2章:章: TMS320LF240 x DSP內(nèi)部資源介紹內(nèi)部資源介紹2.1 TMS320LF240 x DSP的的CPU內(nèi)部功能模塊內(nèi)部功能模塊介紹介紹2.2 存儲器和存儲器和I/O空間空間2.3 系統(tǒng)配置系統(tǒng)配置2.4 程序控制程序控制 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹中央處理單元中央處理單元(CPU)輸入定標器輸入定標器乘法單元乘法單元中央算術(shù)邏輯單元中央算術(shù)邏輯單元 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹1、輸入定標移位器、輸入定標移位器是一個是一個16位到位到32位的滾動式位的滾動式左向移位器;左向移位器;能將輸入的能

2、將輸入的16位數(shù)據(jù)的位數(shù)據(jù)的015位在本周期內(nèi)向左移位以位在本周期內(nèi)向左移位以得到得到32位的輸出;位的輸出;本操作不需要額外的周期。本操作不需要額外的周期。 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹移位器的輸入來源移位器的輸入來源數(shù)據(jù)讀總線數(shù)據(jù)讀總線(DRDB),該輸入值來自指令該輸入值來自指令操作數(shù)據(jù)所引用的操作數(shù)據(jù)所引用的數(shù)據(jù)存儲單元;數(shù)據(jù)存儲單元;程序讀總線程序讀總線(PRDB),該輸入是指令操作該輸入是指令操作數(shù)給出的常數(shù)。數(shù)給出的常數(shù)。移位量的來源移位量的來源嵌在指令字中的常數(shù)。嵌在指令字中的常數(shù)。把移位量放在指令字中,把移位量放在指令字中,該程序代碼使用

3、特定的該程序代碼使用特定的數(shù)據(jù)比例;數(shù)據(jù)比例;臨時寄存器臨時寄存器TREG的低的低4位。根據(jù)位。根據(jù)TREG的值移的值移位,數(shù)據(jù)的定標因子是位,數(shù)據(jù)的定標因子是動態(tài)確定的,可適應(yīng)不動態(tài)確定的,可適應(yīng)不同的系統(tǒng)要求同的系統(tǒng)要求。 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹輸入移位器的輸出值輸入移位器的輸出值最低有效位最低有效位LSBs段填段填0;未使用的最高有效位未使用的最高有效位MSBs填填0或者根據(jù)狀態(tài)寄存器或者根據(jù)狀態(tài)寄存器ST1的的SXM位的值來確定是否需要進行符號擴展位的值來確定是否需要進行符號擴展 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊

4、介紹2、乘法器、乘法器1616位的硬件乘法位的硬件乘法器,在單個周期內(nèi)產(chǎn)器,在單個周期內(nèi)產(chǎn)生一個生一個32位乘積結(jié)果位乘積結(jié)果的有符號或無符號數(shù);的有符號或無符號數(shù);除了除了MPYU指令,所指令,所有的乘法指令都執(zhí)行有的乘法指令都執(zhí)行有符號的乘法操作。有符號的乘法操作。 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹乘法器的輸入乘法器的輸入1 6 位 臨 時 寄 存 器位 臨 時 寄 存 器(TREG),在乘法之,在乘法之前把數(shù)據(jù)讀總線的前把數(shù)據(jù)讀總線的值加載到值加載到TREG;數(shù)據(jù)讀總線的數(shù)據(jù)數(shù)據(jù)讀總線的數(shù)據(jù)存儲器值和程序讀存儲器值和程序讀總線的程序存儲器總線的程序存儲器

5、值。值。乘法器的輸出乘法器的輸出兩個輸入值相乘后的兩個輸入值相乘后的32位結(jié)果保存在乘積寄存位結(jié)果保存在乘積寄存器器(PREG)中;中;PREG的輸出連接到的輸出連接到32位的乘積定標移位器,位的乘積定標移位器,通過移位器將乘積結(jié)果通過移位器將乘積結(jié)果送到送到CALU或數(shù)據(jù)存儲或數(shù)據(jù)存儲器。器。 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹乘法定標移位器乘法定標移位器(PSCALE)輸入輸入:該移位器的:該移位器的32位輸入連到位輸入連到PREG的輸出。的輸出。輸出輸出:完成移位后,全部:完成移位后,全部32位送到位送到CALU,或?qū)⒔Y(jié)果的,或?qū)⒔Y(jié)果的16位存到數(shù)位存到數(shù)

6、據(jù)存儲器。據(jù)存儲器。移位模式移位模式:該移位器可用:該移位器可用4種移位模式,這些模式由狀態(tài)寄存器種移位模式,這些模式由狀態(tài)寄存器ST1的乘積移位方式的乘積移位方式(PM)位確定。位確定。注:注:PREG的內(nèi)容保持不變,其值被復(fù)制到的內(nèi)容保持不變,其值被復(fù)制到PSCALE中,進行移位。中,進行移位。PM移位移位說明說明00不移位不移位乘積結(jié)果沒有移位地送到乘積結(jié)果沒有移位地送到CALU單元或數(shù)據(jù)總線單元或數(shù)據(jù)總線01左移左移1位位移去在一次移去在一次2的補碼乘法運算中產(chǎn)生的的補碼乘法運算中產(chǎn)生的1位附加符號位,以得到一個位附加符號位,以得到一個Q31的乘積的乘積10左移左移4位位當與一個當與一

7、個13位的常數(shù)相乘時,移去在位的常數(shù)相乘時,移去在1613位的位的2的補碼乘法運算中產(chǎn)生的的補碼乘法運算中產(chǎn)生的4位附加符位附加符號位,以生成一個號位,以生成一個Q31的乘積的乘積11右移右移6位位對乘積結(jié)果進行定標,以使得運行對乘積結(jié)果進行定標,以使得運行128次的乘積累加器不會溢出次的乘積累加器不會溢出 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹乘法器相關(guān)指令及操作乘法器相關(guān)指令及操作用用LT指令將數(shù)據(jù)從數(shù)據(jù)總線載入指令將數(shù)據(jù)從數(shù)據(jù)總線載入TREG提供提供1操作數(shù),操作數(shù),MPY指令提指令提供第供第2個操作數(shù)或從數(shù)據(jù)總線上得到。個操作數(shù)或從數(shù)據(jù)總線上得到。使用使用M

8、PY指令時,可以對一個指令時,可以對一個13位的立即數(shù)進行操作,每兩個指位的立即數(shù)進行操作,每兩個指令周期得到一個乘積。令周期得到一個乘積。代碼執(zhí)行多路乘法和乘積求和運算時,代碼執(zhí)行多路乘法和乘積求和運算時,CPU支持流水線操作。支持流水線操作。指令指令操作操作LT把通過把通過CALU得到的前次乘積結(jié)果裝載到得到的前次乘積結(jié)果裝載到TREG,p131LTP把把PREG的值裝載入的值裝載入ACCLTA把把PREG的值加載到的值加載到ACCDMOV,LTD把把PREG的值加到的值加到ACC,移位,移位TREG輸入數(shù)據(jù)到數(shù)據(jù)存儲器的下一地址輸入數(shù)據(jù)到數(shù)據(jù)存儲器的下一地址LTS從從ACC中減去中減去P

9、REG的值的值 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹乘法器相關(guān)指令及操作乘法器相關(guān)指令及操作乘且累加并帶動數(shù)據(jù)移動指令乘且累加并帶動數(shù)據(jù)移動指令MAC和和MACD充分利用了乘法器的充分利用了乘法器的計算寬度,允許兩個操作數(shù)被同時處理。計算寬度,允許兩個操作數(shù)被同時處理。P146無符號乘法運算無符號乘法運算MPYU指令執(zhí)行大大方便了用于擴展精度的算術(shù)運指令執(zhí)行大大方便了用于擴展精度的算術(shù)運算。算。平行并累加前次乘積指令平行并累加前次乘積指令SQRA和平方并減去前次乘積指令和平方并減去前次乘積指令SQRS傳送相同的數(shù)到乘法器的兩個輸入端,以對一個數(shù)據(jù)存儲器單元的傳送相

10、同的數(shù)到乘法器的兩個輸入端,以對一個數(shù)據(jù)存儲器單元的值進行平方運算。值進行平方運算。p150存儲乘積的高字節(jié)指令存儲乘積的高字節(jié)指令SPH和低字節(jié)指令和低字節(jié)指令SPL,可將裝入,可將裝入PREG的的32位乘積結(jié)果傳送到位乘積結(jié)果傳送到CALU單元或數(shù)據(jù)存儲器。單元或數(shù)據(jù)存儲器。在執(zhí)行中斷服務(wù)程序前必須對在執(zhí)行中斷服務(wù)程序前必須對PREG的值進行保存。的值進行保存。 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹3、中央算術(shù)邏輯部分、中央算術(shù)邏輯部分中 央 算 術(shù) 邏 輯 單 元中 央 算 術(shù) 邏 輯 單 元(CALU):實現(xiàn)各種算術(shù)、:實現(xiàn)各種算術(shù)、邏輯功能;邏輯功能;3

11、2位累加器位累加器(ACC):接收:接收來自來自CALU的輸出,并可的輸出,并可以根據(jù)進位位以根據(jù)進位位(C)的值來的值來實現(xiàn)移位;實現(xiàn)移位;輸出移位器輸出移位器:將:將ACC的高的高位字和低位字在送入數(shù)據(jù)位字和低位字在送入數(shù)據(jù)存儲器之前進行移位。存儲器之前進行移位。MUXACCHACCLCOutput shifter(32bits)CALUCentral arithmetic logicsection32321632323232輸入移位器乘積移位器數(shù)據(jù)存儲器 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹中央算術(shù)邏輯單元中央算術(shù)邏輯單元(CALU) 運算功能運算功能:16

12、位加、位加、16位減、布爾邏輯操作、位測試、移動位減、布爾邏輯操作、位測試、移動和循環(huán)。和循環(huán)。輸入輸入:一個由累加器提供,另一個由乘積定標移位器或輸入:一個由累加器提供,另一個由乘積定標移位器或輸入數(shù)據(jù)定標移位器提供。數(shù)據(jù)定標移位器提供。輸出輸出:其結(jié)果送至:其結(jié)果送至32位累加器,進行移位。位累加器,進行移位。相關(guān)狀態(tài)位相關(guān)狀態(tài)位:符號擴展模式位:符號擴展模式位SXM(ST1第第10位位)確定確定CALU是是否進行符號擴展。否進行符號擴展。SXM=0,抑制符號擴展;,抑制符號擴展;SXM=1,進行符,進行符號擴展。號擴展。 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹

13、累加器累加器(ACC) 功能功能:對送到:對送到ACC的的CALU的運算結(jié)果進行單個移位和循環(huán)操作。的運算結(jié)果進行單個移位和循環(huán)操作。輸入輸入:CALU的運算結(jié)果。的運算結(jié)果。輸出輸出:ACC的高的高16位和低位和低16位中任何一個都可送到輸出定標移位器,經(jīng)位中任何一個都可送到輸出定標移位器,經(jīng)定標移位后存入數(shù)據(jù)存儲器。定標移位后存入數(shù)據(jù)存儲器。相關(guān)狀態(tài)位相關(guān)狀態(tài)位狀態(tài)位狀態(tài)位狀態(tài)寄存器狀態(tài)寄存器說明說明進位位進位位CST1第第9位位C=0:減結(jié)果產(chǎn)生借位減結(jié)果產(chǎn)生借位/加結(jié)果未產(chǎn)生進位;加結(jié)果未產(chǎn)生進位;C=1:加結(jié)果產(chǎn)生進位加結(jié)果產(chǎn)生進位/減結(jié)減結(jié)果未產(chǎn)生借位;左移或左循環(huán),果未產(chǎn)生借位;

14、左移或左循環(huán),ACC最高位送至最高位送至C,否則最低位送至,否則最低位送至C。溢出方式位溢出方式位OVMST0第第11位位決定決定ACC如何反映算術(shù)運算的溢出。如何反映算術(shù)運算的溢出。OVM=1:正溢出,正溢出,ACC填充最大填充最大正數(shù),否則填充最大負數(shù);正數(shù),否則填充最大負數(shù);OVM=0:正常溢出。正常溢出。溢出標志位溢出標志位OVST0第第12位位ACC未發(fā)生溢出時,未發(fā)生溢出時,OV=0;否則;否則OV=1且被莎存。且被莎存。測試測試/控制標志位控制標志位TCST1第第11位位根據(jù)被測試位的值,該位被置根據(jù)被測試位的值,該位被置0或或1。 2.1 TMS320LF240 x DSP的C

15、PU內(nèi)部功能模塊介紹輸出定標移位器輸出定標移位器 將累加器輸出的內(nèi)容左移將累加器輸出的內(nèi)容左移07位,移動位數(shù)由存位,移動位數(shù)由存儲器指令指定,然后用儲器指令指定,然后用SACH或或SACL指令將移位器中指令將移位器中的高位字或低位字保存到數(shù)據(jù)存儲器中,的高位字或低位字保存到數(shù)據(jù)存儲器中,ACC的內(nèi)容的內(nèi)容不變。不變。00F0F0A10F0F0F0F0A103216累加器輸出移位器(左移4位)數(shù)據(jù)存儲器位置00F0F0A128403C3C28403216累加器輸出移位器(左移6位)數(shù)據(jù)存儲器位置(b)(a) 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹4、輔助寄存器算術(shù)邏

16、輯單元、輔助寄存器算術(shù)邏輯單元(ARAU)在在CALU操作的同時執(zhí)行操作的同時執(zhí)行8個輔助寄存器個輔助寄存器(AR7AR0)上的算術(shù)運算。上的算術(shù)運算。8個輔助寄存器提供了靈活而有效的間接尋址。個輔助寄存器提供了靈活而有效的間接尋址。通過把數(shù)值通過把數(shù)值07寫入狀態(tài)寄存器寫入狀態(tài)寄存器ST0高高3位的輔助寄存位的輔助寄存器指針器指針(ARP),選擇一個輔助寄存器作為當前,選擇一個輔助寄存器作為當前AR。當前當前AR存放被訪問的數(shù)據(jù)存儲器的地址,根據(jù)指令存放被訪問的數(shù)據(jù)存儲器的地址,根據(jù)指令的需要分別向數(shù)據(jù)讀的需要分別向數(shù)據(jù)讀/寫地址總線讀寫地址總線讀/寫數(shù)據(jù),使用完寫數(shù)據(jù),使用完該數(shù)據(jù)后,當前

17、該數(shù)據(jù)后,當前AR的內(nèi)容可以被的內(nèi)容可以被ARAU增減,可實增減,可實現(xiàn)無符號現(xiàn)無符號16位算術(shù)運算。位算術(shù)運算。 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹ARAU可執(zhí)行的操作可執(zhí)行的操作將輔助寄存器值增、減將輔助寄存器值增、減1,或者增、,或者增、減一個變址量減一個變址量(借助任何支持間接借助任何支持間接尋址的指令尋址的指令)。使輔助寄存器的值加使輔助寄存器的值加/減一個常數(shù)減一個常數(shù)(ADRK/SBRK指令指令),該常數(shù)是指,該常數(shù)是指令字的低令字的低8位。位。將將AR0的內(nèi)容與當前的內(nèi)容與當前AR的內(nèi)容進的內(nèi)容進行比較,并把結(jié)果放入狀態(tài)寄存行比較,并把結(jié)果放入狀

18、態(tài)寄存器器ST1的測試的測試/控制位控制位TC(CMPR指指令令)。結(jié)果經(jīng)數(shù)據(jù)寫總線。結(jié)果經(jīng)數(shù)據(jù)寫總線DWEB傳傳送到送到TC。輔助寄存器的用途輔助寄存器的用途數(shù)據(jù)存儲器地址存儲器;數(shù)據(jù)存儲器地址存儲器;通過通過CMPR指令,使輔指令,使輔助寄存器支持條件分支、助寄存器支持條件分支、調(diào)用及返回;調(diào)用及返回;用作暫存單元;用作暫存單元;用作軟件計數(shù)器,按需用作軟件計數(shù)器,按需要對其進行加、減。要對其進行加、減。 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹5、狀態(tài)寄存器、狀態(tài)寄存器兩個狀態(tài)寄存器兩個狀態(tài)寄存器ST0和和ST1,含有各種狀態(tài)和控制位;,含有各種狀態(tài)和控制位;可

19、保存在數(shù)據(jù)存儲器,也可從數(shù)據(jù)存儲器加載,可可保存在數(shù)據(jù)存儲器,也可從數(shù)據(jù)存儲器加載,可以保存和恢復(fù)子程序的機器狀態(tài);以保存和恢復(fù)子程序的機器狀態(tài);加載狀態(tài)寄存器加載狀態(tài)寄存器LST指令寫指令寫ST0和和ST1,保存狀態(tài)寄,保存狀態(tài)寄存器存器SST指令讀指令讀ST0和和ST1;INTM位不受位不受LST指令的影響;指令的影響;寄存器中每一位均可由寄存器中每一位均可由SETC和和CLRC指令單獨置位指令單獨置位和清和清0。 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹ARB輔助寄存器指針緩沖器輔助寄存器指針緩沖器:當:當ARP被加載到被加載到ST0,除了使用,除了使用LST指

20、令外,原有的指令外,原有的ARP值被復(fù)制到值被復(fù)制到ARB中;當通過中;當通過LST #1指令指令加載加載ARB時,把相同的值復(fù)制到時,把相同的值復(fù)制到ARP。ARP輔助寄存器指針輔助寄存器指針:ARP選擇間接尋址時使用的當前選擇間接尋址時使用的當前AR;當;當ARP被加載時,原有的被加載時,原有的ARP值被復(fù)制到值被復(fù)制到ARB寄存器中;寄存器中;ARP可由可由存儲器相關(guān)指令改變,也可由存儲器相關(guān)指令改變,也可由LARP、MAR和和LST指令改變;當指令改變;當執(zhí)行執(zhí)行LST #1時,時,ARP也可加載與也可加載與ARB相同的值。相同的值。 2.1 TMS320LF240 x DSP的CPU

21、內(nèi)部功能模塊介紹OV溢出標志位溢出標志位:該位鎖存的值指出:該位鎖存的值指出CALU是否發(fā)生了溢出;發(fā)生是否發(fā)生了溢出;發(fā)生溢出,溢出,OV=1,直到復(fù)位、溢出時條件轉(zhuǎn)移、無溢出時條件轉(zhuǎn)移,直到復(fù)位、溢出時條件轉(zhuǎn)移、無溢出時條件轉(zhuǎn)移或或LST指令執(zhí)行時才被清指令執(zhí)行時才被清0。OVM溢出方式位溢出方式位:該位決定如何管理:該位決定如何管理CALU的溢出。的溢出。SETC和和CLRC指令分別可將該位置指令分別可將該位置1或清或清0;LST指令也可修改該位;指令也可修改該位;OVM=0,ACC結(jié)果正常溢出;結(jié)果正常溢出;OVM=1,根據(jù)發(fā)生的溢出,把,根據(jù)發(fā)生的溢出,把ACC置為最大正值或負值。置

22、為最大正值或負值。 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹CNF片內(nèi)片內(nèi)DARAM配置位配置位:CNF=0,可配置雙口,可配置雙口RAM被映射到數(shù)被映射到數(shù)據(jù)存儲空間;據(jù)存儲空間;CNF=1,可配置雙口,可配置雙口RAM被映射到程序;該位可被映射到程序;該位可通過通過SETC、CLRC和和LST指令修改;指令修改;RS復(fù)位時該位清復(fù)位時該位清0。TC測試測試/控制標志位控制標志位:TC=1,由,由BIT或或BITT指令測試位為指令測試位為1;利;利用用NORM指令測試時,指令測試時,ACC的的2個最高有效位個最高有效位“異或異或”為真;為真;CMPR所測試的當前所測

23、試的當前AR和和AR0之間的比較條件成立。之間的比較條件成立。 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹INTM中斷模式位中斷模式位:該位用來允許或禁止所有可屏蔽中斷。通過:該位用來允許或禁止所有可屏蔽中斷。通過SETC和和CLRC指令置指令置1或清或清0;該位不影響不可屏蔽中斷;該位不影響不可屏蔽中斷RS和和NMI;LST指令不影響該位;發(fā)生中斷及復(fù)位時置指令不影響該位;發(fā)生中斷及復(fù)位時置1;INTM=0,允許全部沒有被屏蔽的中斷;允許全部沒有被屏蔽的中斷;INTM=1,禁止全部沒有被屏蔽的,禁止全部沒有被屏蔽的中斷。中斷。DP數(shù)據(jù)存儲器頁指針數(shù)據(jù)存儲器頁指針:當指

24、令使用直接尋址方式時,這個:當指令使用直接尋址方式時,這個9位的位的DP寄存器與指令寄存器的低寄存器與指令寄存器的低7位一起形成一個完整的數(shù)據(jù)存儲器位一起形成一個完整的數(shù)據(jù)存儲器16位地址。位地址。LST和和LDP指令可修改該字段。指令可修改該字段。 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹SXM符號擴展模式位符號擴展模式位:SXM=1數(shù)據(jù)通過定標移位器傳送到累加器時產(chǎn)生數(shù)據(jù)通過定標移位器傳送到累加器時產(chǎn)生符號擴展,符號擴展,SXM=0抑制符號擴展;該位不影響某些指令的基本操作,如抑制符號擴展;該位不影響某些指令的基本操作,如ADDS指令不管指令不管SXM位的狀態(tài)如何

25、都抑制符號擴展;通過位的狀態(tài)如何都抑制符號擴展;通過SECT、CLRC和和LST指令對該位進行置指令對該位進行置1、清、清0和加載;復(fù)位時該位置和加載;復(fù)位時該位置1。C進位位進位位:C=1,加法結(jié)果產(chǎn)生進位或減法結(jié)果未產(chǎn)生借位;,加法結(jié)果產(chǎn)生進位或減法結(jié)果未產(chǎn)生借位;C=0,反之;,反之;移位移位16位的位的ADD指令只能使指令只能使C位置位置1,SUB指令只能使指令只能使C位清位清0,不會對,不會對C位產(chǎn)生其他影響;移位產(chǎn)生其他影響;移1位、循環(huán)指令、位、循環(huán)指令、SETC、CLRC和和LST指令均影響指令均影響該標志位;條件轉(zhuǎn)移、調(diào)用和返回指令可根據(jù)該標志位;條件轉(zhuǎn)移、調(diào)用和返回指令可根

26、據(jù)C的狀態(tài)執(zhí)行;復(fù)位時該的狀態(tài)執(zhí)行;復(fù)位時該位置位置1。 2.1 TMS320LF240 x DSP的CPU內(nèi)部功能模塊介紹XF引腳狀態(tài)位引腳狀態(tài)位:該位確定通用輸出引腳:該位確定通用輸出引腳XF的狀態(tài);通過的狀態(tài);通過SECT、CLRC和和LST指令對該位進行置指令對該位進行置1、清、清0和加載;復(fù)位時該位置和加載;復(fù)位時該位置1。PM乘積移位模式乘積移位模式:該位決定:該位決定PREG的值是送往的值是送往CALU或數(shù)據(jù)存儲器時如或數(shù)據(jù)存儲器時如何移位;何移位;SPM和和LST指令可以對該位加載;復(fù)位時該位清指令可以對該位加載;復(fù)位時該位清0。 PM=00,乘法器,乘法器32位乘積不經(jīng)移位送

27、到位乘積不經(jīng)移位送到CALU或數(shù)據(jù)存儲器;或數(shù)據(jù)存儲器; PM=01,送到,送到CALU之前,之前,PREG的輸出左移的輸出左移1位位(低位填低位填0); PM=10,送到,送到CALU之前,之前,PREG的輸出左移的輸出左移4位位(低位填低位填0); PM=11,PREG輸出進行符號擴展右移輸出進行符號擴展右移6位。位。注注:PREG的內(nèi)容保持不變,其值被拷貝到乘積移位器中進行移位。的內(nèi)容保持不變,其值被拷貝到乘積移位器中進行移位。 2.2 存儲器和I/O空間增強的哈佛結(jié)構(gòu),三組并行總線增強的哈佛結(jié)構(gòu),三組并行總線程序地址總線程序地址總線(PAB)數(shù)據(jù)讀地址總線數(shù)據(jù)讀地址總線(DRAB)數(shù)據(jù)

28、寫地址總線數(shù)據(jù)寫地址總線(DWAB)四個可獨立選擇的空間四個可獨立選擇的空間程序存儲器程序存儲器(64K字字)局部數(shù)據(jù)存儲器局部數(shù)據(jù)存儲器(64K字字)全局數(shù)據(jù)存儲器全局數(shù)據(jù)存儲器(32K字字)I/O空間空間(64K字字)注意注意:LF240 x DSP的所有片內(nèi)外設(shè)的寄存器均映射在的所有片內(nèi)外設(shè)的寄存器均映射在數(shù)據(jù)存儲器空間。數(shù)據(jù)存儲器空間。 2.2 存儲器和I/O空間1、程序存儲器、程序存儲器保存程序代碼及數(shù)據(jù)表信保存程序代碼及數(shù)據(jù)表信息和常量息和常量尋址范圍為尋址范圍為64K,包括片,包括片內(nèi)內(nèi) D A R A M 和 片 內(nèi)和 片 內(nèi)FLASH訪問片外程序地址空間時,訪問片外程序地址空

29、間時,DSP自動產(chǎn)生一個訪問外自動產(chǎn)生一個訪問外部程序地址空間的信號部程序地址空間的信號PSLF2407的程序存儲器空間映射圖 2.2 存儲器和I/O空間決定程序存儲器的配置決定程序存儲器的配置兩個因素兩個因素CNF位。位。CNF位是狀態(tài)寄存器位是狀態(tài)寄存器ST1的第的第12位,決定位,決定DARAM中的中的B0塊塊配置在數(shù)據(jù)存儲器空間,還是配置在程序存儲器空間。配置在數(shù)據(jù)存儲器空間,還是配置在程序存儲器空間。 CNF=0,256字的字的B0塊被映射到數(shù)據(jù)存儲器空間。塊被映射到數(shù)據(jù)存儲器空間。 CNF=1,256字的字的B0塊被映射到程序存儲器空間。塊被映射到程序存儲器空間。 復(fù)位時,復(fù)位時,

30、CNF0,B0塊被映射到數(shù)據(jù)存儲器空間。塊被映射到數(shù)據(jù)存儲器空間。MP/MC引腳。該引腳決定是從片內(nèi)引腳。該引腳決定是從片內(nèi)Flash讀取指令讀取指令,還是從外部程序還是從外部程序存儲器讀取指令。存儲器讀取指令。 MP/MC=0:微控制器方式。此時訪問的是片內(nèi)程序存儲器(片內(nèi)微控制器方式。此時訪問的是片內(nèi)程序存儲器(片內(nèi)Flash)0000h-7FFFh空間。空間。 MP/MC=1:微處理器方式。此時訪問的是片外程序存儲器的微處理器方式。此時訪問的是片外程序存儲器的0000h-7FFFh空間。空間。注注:無論:無論MP/MC引腳為何值,引腳為何值,LF240 xDSP都是從程序存儲器空間都是從

31、程序存儲器空間的的0000h單元開始執(zhí)行程序。單元開始執(zhí)行程序。 2.2 存儲器和I/O空間2、數(shù)據(jù)存儲器、數(shù)據(jù)存儲器尋 址 范 圍尋 址 范 圍 6 4 K 字字 : 前前 3 2 K 字字(0000h-7FFFh)是內(nèi)部數(shù)據(jù)存)是內(nèi)部數(shù)據(jù)存儲器空間儲器空間,包括了包括了DARAM和片內(nèi)和片內(nèi)外設(shè)的映射寄存器;外設(shè)的映射寄存器;后后32K字字(8000h-FFFFh)空間的存儲器)空間的存儲器為外部數(shù)據(jù)存儲器。為外部數(shù)據(jù)存儲器。片內(nèi)有片內(nèi)有3個個DARAM塊塊:B0、B1和和B2塊。塊。B0塊塊:即可為數(shù)據(jù)存儲器,即可為數(shù)據(jù)存儲器,也可配置為程序存儲器。也可配置為程序存儲器。B1、B2塊塊:

32、只能配置為數(shù)據(jù)存儲器。只能配置為數(shù)據(jù)存儲器。LF2407的數(shù)據(jù)存儲器空間映射圖 2.2 存儲器和I/O空間兩種尋址方式:兩種尋址方式:直接尋址直接尋址和和間接尋間接尋址址。直接尋址時,直接尋址時,128字為一頁字為一頁的數(shù)據(jù)塊的數(shù)據(jù)塊來對數(shù)據(jù)存儲器進行尋址。來對數(shù)據(jù)存儲器進行尋址。右圖顯右圖顯示了這些塊是如何被尋址的示了這些塊是如何被尋址的。全部全部64K的數(shù)據(jù)存儲器分為的數(shù)據(jù)存儲器分為512個數(shù)個數(shù)據(jù)頁據(jù)頁,其標號從,其標號從0-511。當前頁由狀。當前頁由狀態(tài)寄存器態(tài)寄存器ST0中的中的9位位數(shù)據(jù)頁指針數(shù)據(jù)頁指針(DP)值來確定值來確定。因此,當使用因此,當使用直接尋址直接尋址指令時,用指

33、令時,用戶必須事先指定戶必須事先指定數(shù)據(jù)頁數(shù)據(jù)頁,并在訪問,并在訪問數(shù)據(jù)存儲器的指令中指定數(shù)據(jù)存儲器的指令中指定偏移量偏移量,偏移量為偏移量為7位位。數(shù)據(jù)存儲器頁 2.2 存儲器和I/O空間編程時要注意編程時要注意,訪問下面的數(shù)據(jù)存儲器的地址空間是訪問下面的數(shù)據(jù)存儲器的地址空間是非法的非法的,并,并會對會對NMI置位置位。除了以下地址,任何對外。除了以下地址,任何對外設(shè)寄存器映射中的設(shè)寄存器映射中的保留地址保留地址的訪問也是的訪問也是非法的非法的。 0080h-00FFh 701Fh-71FFh (CAN內(nèi)部的內(nèi)部的) 0500h-07FFh 7230h-73FFh (部分在部分在CAN內(nèi)部內(nèi)

34、部) 1000h-700Fh 7440h-74FFh 7030h-703Fh 7540h-75FFh 7060h-706Fh 7600h-77EFh 77F4h-7FFFh 7080h-708Fh 2.2 存儲器和I/O空間第第0頁數(shù)據(jù)地址映射頁數(shù)據(jù)地址映射 數(shù)據(jù)存儲器中包括數(shù)據(jù)存儲器中包括存儲器映射存儲器映射寄存器寄存器,它們位于數(shù)據(jù)存儲器的,它們位于數(shù)據(jù)存儲器的第第0頁頁(地址(地址0000h-007Fh),下表是),下表是對第對第0頁數(shù)據(jù)地址映射的詳細說明。頁數(shù)據(jù)地址映射的詳細說明。應(yīng)用中必須應(yīng)用中必須注意以下幾點注意以下幾點:以零等待狀態(tài)訪問以零等待狀態(tài)訪問兩個映射寄存器兩個映射寄存器

35、:中斷屏蔽寄存器(中斷屏蔽寄存器(IMR)和和中斷標中斷標志寄存器(志寄存器(IFR)測試測試/仿真保留區(qū)仿真保留區(qū)被測試和仿真系被測試和仿真系統(tǒng)用于特定信息發(fā)送。因此統(tǒng)用于特定信息發(fā)送。因此不能對不能對測試測試/仿真地址進行操作仿真地址進行操作。地址地址名稱名稱描述描述0000h0003h保留保留0004hIMR中斷屏蔽寄存器中斷屏蔽寄存器0005h保留保留0006hIFR中斷標志寄存器中斷標志寄存器0023h0027h保留保留002Bh002Fh保留用作測試和仿真保留用作測試和仿真0060h007FhB2雙口雙口RAM(DARAM B2)第0頁數(shù)據(jù)地址映射 2.2 存儲器和I/O空間數(shù)據(jù)存

36、儲器配置數(shù)據(jù)存儲器配置 CNF位決定位決定B0塊的配置,塊的配置,CNF位是狀態(tài)寄存器位是狀態(tài)寄存器ST1的的第第12位。位。CNF0,B0塊被映射為數(shù)據(jù)存儲器空間;塊被映射為數(shù)據(jù)存儲器空間; 復(fù)位時,復(fù)位時,CNF0;CNF1,B0塊被映射到程序存儲器空間;塊被映射到程序存儲器空間; 2.2 存儲器和I/O空間3、I/O空間空間尋址范圍為尋址范圍為64K字。字。I/O空間訪問的空間訪問的控制信號為控制信號為IS。所有所有64K的的I/O空間均可以用空間均可以用IN和和OUT指令指令來訪問來訪問。當執(zhí)行。當執(zhí)行IN或或OUT指令時,信號指令時,信號IS*變?yōu)橛行ё優(yōu)橛行?可作為外部可作為外部I

37、/O設(shè)備的片選信號。設(shè)備的片選信號。訪問外部訪問外部I/O端口與訪問程序存儲器、數(shù)據(jù)端口與訪問程序存儲器、數(shù)據(jù)存儲器存儲器復(fù)用相同的的地址總線和數(shù)據(jù)總線復(fù)用相同的的地址總線和數(shù)據(jù)總線。數(shù)據(jù)總線的寬度為數(shù)據(jù)總線的寬度為16位,位,若使用若使用8位的外設(shè)位的外設(shè),即可使用即可使用高高8位位數(shù)據(jù)總線,也可使用數(shù)據(jù)總線,也可使用低低8位位數(shù)據(jù)總線,以適應(yīng)特定應(yīng)用的需要。數(shù)據(jù)總線,以適應(yīng)特定應(yīng)用的需要。當訪問當訪問片內(nèi)片內(nèi)的的I/O空間時,信號空間時,信號IS和和STRB變成無變成無效,外部地址和數(shù)據(jù)總線僅僅當訪問外部效,外部地址和數(shù)據(jù)總線僅僅當訪問外部I/O地地址時有效。址時有效。LF2407 I/O

38、空間地址映射圖 2.2 存儲器和I/O空間下面是使用匯編語言的直接訪問下面是使用匯編語言的直接訪問I/O空間的實際例子空間的實際例子:IN DAT2,0AFEEh;從端口地址為;從端口地址為AFEEh的外設(shè)的外設(shè) ;讀數(shù)據(jù),并存入;讀數(shù)據(jù),并存入DAT2寄存器寄存器OUT DAT2,0CFEFh;輸出數(shù)據(jù)存儲器;輸出數(shù)據(jù)存儲器DAT2的內(nèi)容的內(nèi)容 ;到端口地址為;到端口地址為CFEFh的的外設(shè)外設(shè)下面是訪問等待狀態(tài)發(fā)生器的寄存器的實例:下面是訪問等待狀態(tài)發(fā)生器的寄存器的實例:IN DAT2,0FFFFh;從等待狀態(tài)發(fā)生器讀取數(shù)據(jù)到;從等待狀態(tài)發(fā)生器讀取數(shù)據(jù)到DAT2寄寄存器存器OUT DAT2

39、,0FFFFh;將;將DAT2寄存器的數(shù)據(jù)寫入等待狀態(tài)發(fā)寄存器的數(shù)據(jù)寫入等待狀態(tài)發(fā)生器,使用等待狀態(tài)發(fā)生器生器,使用等待狀態(tài)發(fā)生器 2.3 程序控制程序控制程序控制執(zhí)行一個或多個指令塊的次序調(diào)動執(zhí)行一個或多個指令塊的次序調(diào)動通常通常,程序是順序執(zhí)行的,器件執(zhí)行這些連續(xù)程,程序是順序執(zhí)行的,器件執(zhí)行這些連續(xù)程序存儲器地址處的指令序存儲器地址處的指令有時有時,程序必須轉(zhuǎn)移到非順序的地址并在新地址,程序必須轉(zhuǎn)移到非順序的地址并在新地址處開始順序執(zhí)行指令處開始順序執(zhí)行指令LF240 x DSP支持調(diào)用、返回和中斷支持調(diào)用、返回和中斷 2.4 程序控制1、程序地址的產(chǎn)生、程序地址的產(chǎn)生程序流程序流要求處

40、理器在執(zhí)行當前指令的同時產(chǎn)生下一個程序地址要求處理器在執(zhí)行當前指令的同時產(chǎn)生下一個程序地址(順順序或非順序序或非順序)LF240 x器件程序地址產(chǎn)生邏輯使用下列硬件:器件程序地址產(chǎn)生邏輯使用下列硬件: 程序計數(shù)器程序計數(shù)器(PC):16位位PC取址時對內(nèi)部或外部程序存儲器進行取址時對內(nèi)部或外部程序存儲器進行尋址。尋址。 程序地址寄存器程序地址寄存器(PAR):驅(qū)動程序地址總線驅(qū)動程序地址總線(PAB),是,是16位總線位總線,同時為讀,同時為讀/寫程序提供地址。寫程序提供地址。 堆棧:堆棧:程序地址產(chǎn)生邏輯包括一個程序地址產(chǎn)生邏輯包括一個16位寬、最多可保存位寬、最多可保存8個返回個返回地址的

41、硬件堆棧,也可用于暫存數(shù)據(jù)。地址的硬件堆棧,也可用于暫存數(shù)據(jù)。 微堆棧微堆棧(MSTACK):有時程序地址產(chǎn)生邏輯使用這個有時程序地址產(chǎn)生邏輯使用這個16位寬、位寬、1級深的堆棧保存一返回地址。級深的堆棧保存一返回地址。 重復(fù)計數(shù)器重復(fù)計數(shù)器(RPTC):16位的位的RPTC與重復(fù)指令與重復(fù)指令RPT一起,用來一起,用來確定確定RPT后面的一條指令重復(fù)執(zhí)行的次數(shù)。后面的一條指令重復(fù)執(zhí)行的次數(shù)。 2.4 程序控制程序計數(shù)器程序計數(shù)器(PC)程序地址產(chǎn)生邏輯利用程序地址產(chǎn)生邏輯利用16位的位的PC尋址內(nèi)部和外部程序?qū)ぶ穬?nèi)部和外部程序存儲器。存儲器。PC含有要執(zhí)行的下一條指令的地址。含有要執(zhí)行的下一

42、條指令的地址。經(jīng)程序地址總線經(jīng)程序地址總線(PAB )從程序存儲器中取出該地址中的從程序存儲器中取出該地址中的指令,并將其裝入指令寄存器。指令,并將其裝入指令寄存器。指令寄存器裝入后,指令寄存器裝入后,PC內(nèi)容為下一地址。內(nèi)容為下一地址。LF240 x可以采用多種方法裝載可以采用多種方法裝載PC,從而適應(yīng)順序和非,從而適應(yīng)順序和非順序的程序流。順序的程序流。 2.4 程序控制堆棧堆棧LF240 x具有具有16位寬度、位寬度、8級深度的硬件堆棧級深度的硬件堆棧。在調(diào)用子程序或發(fā)生中斷時,程序地址產(chǎn)生邏輯利用該堆棧在調(diào)用子程序或發(fā)生中斷時,程序地址產(chǎn)生邏輯利用該堆棧保存返保存返回地址回地址。當指令

43、使當指令使CPU進入子程序或中斷使其進入中斷服務(wù)程序時,返回地進入子程序或中斷使其進入中斷服務(wù)程序時,返回地址自動裝入堆棧的棧頂,該操作不需附加周期。址自動裝入堆棧的棧頂,該操作不需附加周期。當子程序或中斷服務(wù)程序完成時,則返回地址從棧頂送到程序計數(shù)當子程序或中斷服務(wù)程序完成時,則返回地址從棧頂送到程序計數(shù)器。器。當當8級堆棧級堆棧不用于保存地址不用于保存地址時,在子程序或中斷服務(wù)程序內(nèi),堆棧時,在子程序或中斷服務(wù)程序內(nèi),堆棧可用于保存上下文數(shù)據(jù)或其他存儲用途可用于保存上下文數(shù)據(jù)或其他存儲用途。 2.4 程序控制用戶可使用的兩組指令訪問堆棧用戶可使用的兩組指令訪問堆棧PUSH(壓入壓入)和和P

44、OP(彈出彈出):PUSH指令把累加器的低半部分指令把累加器的低半部分copy到到棧頂;棧頂;POP指令將棧頂?shù)臄?shù)據(jù)指令將棧頂?shù)臄?shù)據(jù)copy到累加器低半部分。到累加器低半部分。PSHD和和POPD:當子程序或中斷嵌套超過:當子程序或中斷嵌套超過8級時,可利用這些指令級時,可利用這些指令在數(shù)據(jù)存儲區(qū)構(gòu)建堆棧。在數(shù)據(jù)存儲區(qū)構(gòu)建堆棧。PSHD將數(shù)據(jù)存儲器中的值壓入棧頂;將數(shù)據(jù)存儲器中的值壓入棧頂;POPD將棧頂?shù)闹祻椀綌?shù)據(jù)存儲器。將棧頂?shù)闹祻椀綌?shù)據(jù)存儲器。每當一個數(shù)壓入棧頂,堆棧中每級的內(nèi)容都下移一級,棧底內(nèi)容則每當一個數(shù)壓入棧頂,堆棧中每級的內(nèi)容都下移一級,棧底內(nèi)容則丟失。因此,如果沒有彈出而又連

45、續(xù)壓入多于丟失。因此,如果沒有彈出而又連續(xù)壓入多于8次,或壓入的次數(shù)次,或壓入的次數(shù)比彈出的次數(shù)多于比彈出的次數(shù)多于8次時,就會丟失數(shù)據(jù)次時,就會丟失數(shù)據(jù)(堆棧溢出堆棧溢出)。彈出操作于壓入操作相反,把堆棧中每一級的值都彈出操作于壓入操作相反,把堆棧中每一級的值都copy到較高的一到較高的一級,連續(xù)級,連續(xù)7次彈出后的任何彈出操作產(chǎn)生的值都是初始棧底的值。次彈出后的任何彈出操作產(chǎn)生的值都是初始棧底的值。 2.4 程序控制微堆棧微堆棧(MSTACK)程序地址產(chǎn)生邏輯在執(zhí)行某些指令前利用程序地址產(chǎn)生邏輯在執(zhí)行某些指令前利用16位寬、位寬、1級深的級深的MSTACK保存返回地址保存返回地址。這些指令

46、利用程序地址產(chǎn)生邏輯提供雙操作數(shù)指令中的第這些指令利用程序地址產(chǎn)生邏輯提供雙操作數(shù)指令中的第2個地址個地址,它們是:,它們是:BLDD、BLPD、MAC、MACD、TBLR和和TBLW。重復(fù)執(zhí)行時,重復(fù)執(zhí)行時,利用利用PC使第一個操作數(shù)地址增使第一個操作數(shù)地址增1,并使用輔助寄存器,并使用輔助寄存器算術(shù)單元產(chǎn)生第二個操作數(shù)地址。算術(shù)單元產(chǎn)生第二個操作數(shù)地址。使用時,使用時,返回地址被壓入返回地址被壓入MSTACK;重復(fù)指令執(zhí)行完后,;重復(fù)指令執(zhí)行完后,MSTACK的值被彈出并送至程序地址產(chǎn)生邏輯的值被彈出并送至程序地址產(chǎn)生邏輯。MSTACK不可用于存儲指令不可用于存儲指令(不同于(不同于STA

47、CK)。)。 2.4 程序控制2、流水線操作、流水線操作指令流水線指令流水線包括執(zhí)行指令時發(fā)生的一系列總操作。包括執(zhí)行指令時發(fā)生的一系列總操作。LF240 x流水線具有流水線具有4個獨立階段:個獨立階段:取指令取指令、指令譯碼指令譯碼、取操作數(shù)取操作數(shù)和和執(zhí)行指令執(zhí)行指令。這這4個獨立階段在任意給定周期里,可能有個獨立階段在任意給定周期里,可能有14條不同的指令處于激條不同的指令處于激活狀態(tài)。活狀態(tài)。 2.4 程序控制對用戶來說,除下列情況外,流水線基本上是不對用戶來說,除下列情況外,流水線基本上是不可見的可見的緊跟在修改全局存儲器分配寄存器緊跟在修改全局存儲器分配寄存器(GBEG)后的后的單

48、字單字、單周期指令使用先前的全局映射數(shù)據(jù)存儲器單周期指令使用先前的全局映射數(shù)據(jù)存儲器。NORM指令修改輔助寄存器指針指令修改輔助寄存器指針(ABP),而且,而且在流水線在流水線的執(zhí)行階段使用當前輔助寄存器的執(zhí)行階段使用當前輔助寄存器。如果后面的兩個指令。如果后面的兩個指令字改變當前輔助寄存器或字改變當前輔助寄存器或ARP的值,那么這些操作是在的值,那么這些操作是在流水線的譯碼階段進行的,使得流水線的譯碼階段進行的,使得NORM指令使用了錯誤指令使用了錯誤的輔助寄存器,并使后續(xù)指令使用錯誤的的輔助寄存器,并使后續(xù)指令使用錯誤的ARP值。值。 2.4 程序控制3、無條件轉(zhuǎn)移、調(diào)用和返回、無條件轉(zhuǎn)移

49、、調(diào)用和返回無條件轉(zhuǎn)移無條件轉(zhuǎn)移總是被執(zhí)行總是被執(zhí)行,PC裝入指定的程序地址且程序從該地址裝入指定的程序地址且程序從該地址處開始執(zhí)行。裝入的地址來自于指令的第處開始執(zhí)行。裝入的地址來自于指令的第2個字或累加個字或累加器的低器的低16位。位。在轉(zhuǎn)移指令到達流水線的執(zhí)行階段時,下在轉(zhuǎn)移指令到達流水線的執(zhí)行階段時,下2條指令已被條指令已被取回,且從流水線中清除不被執(zhí)行,而從轉(zhuǎn)移至的地址取回,且從流水線中清除不被執(zhí)行,而從轉(zhuǎn)移至的地址處繼續(xù)執(zhí)行。處繼續(xù)執(zhí)行。無條件轉(zhuǎn)移指令:無條件轉(zhuǎn)移指令:B(轉(zhuǎn)移轉(zhuǎn)移)和和BACC(轉(zhuǎn)移到轉(zhuǎn)移到ACC指定的指定的存儲單元存儲單元)。 2.4 程序控制無條件調(diào)用無條件調(diào)

50、用必定要執(zhí)行必定要執(zhí)行,將指定的程序存儲器的地址加載到,將指定的程序存儲器的地址加載到PC,并從該地址開始執(zhí)行。裝入的地址來自于指令的第并從該地址開始執(zhí)行。裝入的地址來自于指令的第2個個字或累加器的低字或累加器的低16位。位。加載加載PC之前將返回地址保存到堆棧里。子程序執(zhí)行后之前將返回地址保存到堆棧里。子程序執(zhí)行后,返回指令將返回地址從堆棧加載到,返回指令將返回地址從堆棧加載到PC,程序從調(diào)用,程序從調(diào)用指令后面的指令開始執(zhí)行。指令后面的指令開始執(zhí)行。無條件調(diào)用指令:無條件調(diào)用指令:CALL和和CALA(調(diào)用調(diào)用ACC指定的存儲指定的存儲單元處的子程序單元處的子程序)。 2.4 程序控制無條

51、件返回無條件返回必定要執(zhí)行必定要執(zhí)行,將棧頂?shù)闹导虞d到,將棧頂?shù)闹导虞d到PC,并從該地址繼續(xù),并從該地址繼續(xù)執(zhí)行程序。執(zhí)行程序。在返回指令到達流水線的執(zhí)行階段時,下兩條指令已被在返回指令到達流水線的執(zhí)行階段時,下兩條指令已被取回,且從流水線中清除不被執(zhí)行,取回,且從流水線中清除不被執(zhí)行,PC從堆棧中取出從堆棧中取出返回地址,程序繼續(xù)執(zhí)行。返回地址,程序繼續(xù)執(zhí)行。 2.4 程序控制4、有條件轉(zhuǎn)移、調(diào)用和返回、有條件轉(zhuǎn)移、調(diào)用和返回使用多個條件使用多個條件條件指令操作數(shù)中可以有多個條件。必須滿足多個條件條件指令操作數(shù)中可以有多個條件。必須滿足多個條件,指令才可執(zhí)行。,指令才可執(zhí)行。合法條件組合應(yīng)滿

52、足的規(guī)則:合法條件組合應(yīng)滿足的規(guī)則: 組組1:最多可選:最多可選2個條件,其中每個條件必須來自不個條件,其中每個條件必須來自不同的類;同的類;2個條件不能來自同一類。個條件不能來自同一類。 組組2:最多可選:最多可選3個條件,其中每個條件必須來自不個條件,其中每個條件必須來自不同的類;不能有同的類;不能有2個條件來自同一類。個條件來自同一類。 2.4 程序控制條件狀態(tài)條件狀態(tài)條件指令必須能測試狀態(tài)位的條件指令必須能測試狀態(tài)位的最近值最近值。直到流水線的直到流水線的第第4個階段個階段,前一條指令已被執(zhí)行后的一,前一條指令已被執(zhí)行后的一個周期,才認為條件是穩(wěn)定的。個周期,才認為條件是穩(wěn)定的。流水線控制在條件穩(wěn)定之前,停止對條件指令后面任何流水線控制在條件穩(wěn)定之前,停止對條件指令后面任何指令的譯碼。指令的譯碼。 2.4 程序控制條件轉(zhuǎn)移條件轉(zhuǎn)移轉(zhuǎn)移指令可把程序控制轉(zhuǎn)移到程序存儲器中的任何地址轉(zhuǎn)移指令可把程序控制轉(zhuǎn)移到程序存儲器中的任何地址。條件轉(zhuǎn)移指令僅當用戶指定的一個或多個條件滿足時。條件轉(zhuǎn)移指令僅當用戶指定的一個或多個條件滿足時才執(zhí)行。如果滿足所有條件,將轉(zhuǎn)移指令的第才執(zhí)行。如果滿足所有條件,將轉(zhuǎn)移指令

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論