DSPIC30F系列芯片內(nèi)部指令停止技術(shù)
來源:IC解密可能會(huì)在第二條指令執(zhí)行時(shí)發(fā)生。 在這種情況下,允許第二條指令和附加的停止周期在ISR 前執(zhí)行。 這樣,與第二條指令關(guān)聯(lián)的停止周期會(huì)正常執(zhí)行。 但是,停止周期實(shí)際上會(huì)被嵌入到異常過程時(shí)序內(nèi)。 如果一個(gè)正常的雙周期指令被中斷,異常過程將會(huì)繼續(xù)。三、指令停止周期和流程更改指令
CALL和RCALL指令使用W15寫入堆棧,并且如果下一條指令讀取的源使用W15,可能會(huì)因此在下一條指令前強(qiáng)制執(zhí)行指令停止。RETFIE和RETURN指令永遠(yuǎn)不能在下一條指令前強(qiáng)制執(zhí)行指令停止,因?yàn)檫@些指令都只能執(zhí)行讀操作。 但是,用戶應(yīng)該注意RETLW 指令能強(qiáng)制執(zhí)行停止,因?yàn)樗鼤?huì)在最后一個(gè)周期寫入W 寄存器。因?yàn)镚OTO 和轉(zhuǎn)移指令不執(zhí)行寫操作,所以永遠(yuǎn)不能強(qiáng)制執(zhí)行指令停止。
四、指令停止以及DO 和REPEAT 循環(huán)
除了增加指令停止周期外, RAW 數(shù)據(jù)相依性不會(huì)影響DO 或REPEAT 循環(huán)的工作。REPEAT循環(huán)中預(yù)取的指令在循環(huán)完成或發(fā)生異常前不會(huì)改變。 雖然寄存器相關(guān)性檢查會(huì)跨指令邊界進(jìn)行,在REPEAT 循環(huán)中dsPIC30F 實(shí)際上會(huì)比較同一個(gè)指令的源和目標(biāo)地址。DO 循環(huán)的最后一條指令會(huì)預(yù)取循環(huán)起始地址處的指令或下一條指令(循環(huán)外)。 指令停止的決定是由循環(huán)的最后一條指令和預(yù)取指令的內(nèi)容做出的。
五、指令停止和程序空間可視性(PSV)
當(dāng)通過使能PSV (CORCON<2>)位將程序空間(PS)映射到數(shù)據(jù)空間,并且X 空間EA 處于可見程序空間范圍時(shí),讀或?qū)懼芷跁?huì)被重新定向到程序空間中的地址。 從程序空間訪問數(shù)據(jù)最多需要花費(fèi)3 個(gè)指令周期。PSV地址空間的指令操作與任何其他指令一樣,會(huì)受到RAW數(shù)據(jù)相關(guān)性和后續(xù)指令停止的影響。