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