PicoBlaze處理器的指令系統(tǒng)
發(fā)布時間:2008/9/19 0:00:00 訪問次數:553
picoblaze處理器采用精簡指令系統(tǒng)(risc),即具有固定的單指令長度和固定的指令執(zhí)行周期,每一條指令的執(zhí)行需要兩個時鐘周期,如圖1所示。指令的長度picoblaze為18位,可尋址空間為1024字節(jié)。而coolblaze(基于cpld的picoblaze)則為16位,可尋址空間為256個字節(jié)。我們以coolblaze來說明指令系統(tǒng)。
圖1 picoblaze處理器指令執(zhí)行時序
說明:在指令集中,“x”和“y”用來定義相關寄存器“s”,其范圍為0~7;“kk”用來表示范圍在00~ff的一個常數值;“aa”用來表示范圍在00~ff的地址;“pp”用來表示范圍在00~ff的一個口地址;“c”和“d”表示指令的編碼。
1.程序控制組
程序控制組(program control group)由跳轉指令jump、子程序調用指令call和子程序返回指令return構成,如圖2所示。
(2) 跳轉(jump)指令
在正常條件下,程序計數器(pc)自動地將指針調整到下一條指令。由于程序計數器是8位寬度,尋址空間為256(十六進制為00~ff)。當計數器到ff時,將會自動地變成00。
圖2 程序控制組結構
jump指令用所設定的新地址來改變程序執(zhí)行順序。另外,該指令也可以是條件轉移。條件轉移將根據進位標志(carry)和零標志(zero)的狀態(tài)來執(zhí)行,但條件轉移指令本身不會影響這兩個標志位。
每一條jump指令都必須用兩位十六進制數來指定8位地址,匯編程序將會編譯成相應的代碼。
(2) 調用指令call
調用指令call的操作類似于轉移指令jump,也由所設定的新地址來改變程序執(zhí)行順序。call指令可以是無條件調用或條件調用,當執(zhí)行該指令后,程序計數器將把當前的計數值壓入堆棧,并用所設定的新地址替換。調用指令call不會影響標志位的狀態(tài),肖條件調用時需判斷狀態(tài)位。
coolblaze的堆棧深度僅為4個字節(jié),即只能嵌套4個調用指令,而fpga型picoblaze的堆棧深度可以有31個字節(jié)。由于中斷操作時也需要用到一個堆棧,因此通常情況下應保留一個堆棧;除非中斷操作被禁止。
堆棧用獨立的緩沖器實現,當堆棧滿后將會覆蓋最前面的值。每一條call指令都必須用兩位十六進制數來指定8位地址,匯編程序將會編譯成相應的代碼。
(3) 子程序返回指令return
子程序返回指令與調用指令是相對應的,也分為無條件返回和條件返回。執(zhí)行return指令后,程序計數器將從堆棧中恢復計數指針。return指令不會影響標志位的狀態(tài),當條件返回時需判斷狀態(tài)位。
歡迎轉載,信息來自維庫電子市場網(www.dzsc.com)
picoblaze處理器采用精簡指令系統(tǒng)(risc),即具有固定的單指令長度和固定的指令執(zhí)行周期,每一條指令的執(zhí)行需要兩個時鐘周期,如圖1所示。指令的長度picoblaze為18位,可尋址空間為1024字節(jié)。而coolblaze(基于cpld的picoblaze)則為16位,可尋址空間為256個字節(jié)。我們以coolblaze來說明指令系統(tǒng)。
圖1 picoblaze處理器指令執(zhí)行時序
說明:在指令集中,“x”和“y”用來定義相關寄存器“s”,其范圍為0~7;“kk”用來表示范圍在00~ff的一個常數值;“aa”用來表示范圍在00~ff的地址;“pp”用來表示范圍在00~ff的一個口地址;“c”和“d”表示指令的編碼。
1.程序控制組
程序控制組(program control group)由跳轉指令jump、子程序調用指令call和子程序返回指令return構成,如圖2所示。
(2) 跳轉(jump)指令
在正常條件下,程序計數器(pc)自動地將指針調整到下一條指令。由于程序計數器是8位寬度,尋址空間為256(十六進制為00~ff)。當計數器到ff時,將會自動地變成00。
圖2 程序控制組結構
jump指令用所設定的新地址來改變程序執(zhí)行順序。另外,該指令也可以是條件轉移。條件轉移將根據進位標志(carry)和零標志(zero)的狀態(tài)來執(zhí)行,但條件轉移指令本身不會影響這兩個標志位。
每一條jump指令都必須用兩位十六進制數來指定8位地址,匯編程序將會編譯成相應的代碼。
(2) 調用指令call
調用指令call的操作類似于轉移指令jump,也由所設定的新地址來改變程序執(zhí)行順序。call指令可以是無條件調用或條件調用,當執(zhí)行該指令后,程序計數器將把當前的計數值壓入堆棧,并用所設定的新地址替換。調用指令call不會影響標志位的狀態(tài),肖條件調用時需判斷狀態(tài)位。
coolblaze的堆棧深度僅為4個字節(jié),即只能嵌套4個調用指令,而fpga型picoblaze的堆棧深度可以有31個字節(jié)。由于中斷操作時也需要用到一個堆棧,因此通常情況下應保留一個堆棧;除非中斷操作被禁止。
堆棧用獨立的緩沖器實現,當堆棧滿后將會覆蓋最前面的值。每一條call指令都必須用兩位十六進制數來指定8位地址,匯編程序將會編譯成相應的代碼。
(3) 子程序返回指令return
子程序返回指令與調用指令是相對應的,也分為無條件返回和條件返回。執(zhí)行return指令后,程序計數器將從堆棧中恢復計數指針。return指令不會影響標志位的狀態(tài),當條件返回時需判斷狀態(tài)位。
歡迎轉載,信息來自維庫電子市場網(www.dzsc.com)