NIOSⅡ處理器體系結構研討_第1頁
NIOSⅡ處理器體系結構研討_第2頁
NIOSⅡ處理器體系結構研討_第3頁
NIOSⅡ處理器體系結構研討_第4頁
NIOSⅡ處理器體系結構研討_第5頁
已閱讀5頁,還剩41頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

10.05.20231本資料來源第一頁,共四十六頁。10.05.2023SOPC技術基礎教程

——NIOSⅡ處理器體系結構授課教師:孔慶臣第二頁,共四十六頁。10.05.20233NIOSⅡ處理器的特點 1) NIOSⅡ處理器采用流水線技術、單指令流的32位通用RISC處理器

2) 提供全32位的指令集、數據總線和地址總線

3) 提供32個通用寄存器

4) 提供32個外部中斷源

5) 提供結果為32位的單指令32X32乘除法

6) 提供專用指令計算結果為64位和128位的乘法

7) 可以定制單精度浮點計算指令

8) 單指令桶形移位寄存器

9) 對各種片內外設的訪問及與片外外設和存儲器的接口

10) 硬件輔助的調試模塊,在IDE環境下,可完成開始、停止、斷點、單步執行、指令跟蹤等基本調試和高級調試功能

11) 基于GNUC/C++工具集和EclipseIDE的軟件開發環境

12) ALTERA公司的SignalTapⅡ邏輯分析儀,實現對指令、數據、FPGA設計中的邏輯信號進行實時分析

13) 所有NISOⅡ處理器均兼容的指令系統

14) 高達218DMIPS的性能第三頁,共四十六頁。10.05.20234NIOSⅡ處理器的體系結構

NIOSⅡ處理器是一種軟核處理器,可配置性是其最大特點。

NiosII32位軟核處理器NiosII/f(快速)NiosII/e(經濟)NiosII/s(標準)性能最高,占用邏輯資源最多占用邏輯資源最少,性能最低平衡了邏輯資源占用和性能第四頁,共四十六頁。10.05.20235NIOSⅡ處理器的體系結構

地址發生器&程序控制器異常控制器中斷控制器通用寄存器r0..r31控制寄存器ctl0..ctl5指令Cache數據Cache算術邏輯單元(ALU)用戶定制指令邏輯JTAG調試模塊NiosII處理器核緊耦合指令存儲器緊耦合指令存儲器緊耦合數據存儲器緊耦合數據存儲器指令總線數據總線clockreset軟件調試JTAG接口中斷源[0..31]用戶IO信號cpu_resetrequestcpu_resettaken提高系統性能:NIOSⅡ采用哈佛結構:指令總線、數據總線分開方便用戶調試,集成了JTAG調試模塊提高系統性能:支持用戶定制指令,方便指令集擴展支持用戶定制指令,方便指令擴展,提升系統性能支持用戶定制指令,方便指令擴展,提升系統性能提高系統性能:集成了指令Cache、數據Cache、緊耦合存儲器(TCM)接口提高系統性能:集成指令Cache、數據Cache、緊耦合存儲器(TCM)接口異常控制器處理內核異常事件中斷控制器處理外部硬件中斷事件寄存器文件包括32個通用寄存器和6個控制寄存器,允許添加浮點寄存器第五頁,共四十六頁。10.05.20236NIOSⅡ處理器的體系結構

地址發生器&程序控制器異常控制器中斷控制器通用寄存器r0..r31控制寄存器ctl0..ctl5指令Cache數據Cache算術邏輯單元(ALU)用戶定制指令邏輯JTAG調試模塊NiosII處理器核緊耦合指令存儲器緊耦合指令存儲器緊耦合數據存儲器緊耦合數據存儲器指令總線數據總線clockreset軟件調試JTAG接口中斷源[0..31]用戶IO信號cpu_resetrequestcpu_resettakenNIOSⅡ處理器核采用硬件實現,實現指令集并支持各功能模塊的工作,處理器核不包含外設和接口邏輯;NIOSⅡ體系結構定義了指令集,但并不是特定的硬件實現,體系結構中的各功能模塊可由硬件實現、軟件實現、也可省去一個NIOSⅡ實現是根據設計要求得到的一個特定的NIOSⅡ處理器核,實現方案體現了NIOSⅡ軟核的可配置性:或多或少:如增加或減小緩存的大小要或不要:如選擇不采用JTAG調試模塊硬件實現或軟件模擬:如硬件乘法器的取舍第六頁,共四十六頁。10.05.20237NIOSⅡ處理器的體系結構

地址發生器&程序控制器異常控制器中斷控制器通用寄存器r0..r31控制寄存器ctl0..ctl5指令Cache數據Cache算術邏輯單元(ALU)用戶定制指令邏輯JTAG調試模塊NiosII處理器核緊耦合指令存儲器緊耦合指令存儲器緊耦合數據存儲器緊耦合數據存儲器指令總線數據總線clockreset軟件調試JTAG接口中斷源[0..31]用戶IO信號cpu_resetrequestcpu_resettaken第七頁,共四十六頁。10.05.20238NIOSⅡ處理器的體系結構 NIOSⅡ處理器的算術邏輯單元(ALU)對通用寄存器的數據進行操作,ALU從寄存器中取出操作數,運算結果放回寄存器中。

ALU支持的運算種類描述算術運算ALU支持有符號和無符號數的加、減、乘、除關系運算支持有符號和無符號數的等于、不等于、大于等于和小于(==,!=,>=,<)關系運算邏輯運算支持AND、OR、NOR和XOR邏輯運算移位運算支持移位和循環移位運算,每條指令中可以將數據移位和循環移為0~31位,支持算術右移、左移和邏輯右移、左移,還支持循環左、右移位第八頁,共四十六頁。10.05.20239NIOSⅡ處理器的體系結構

未實現指令:

NIOSⅡ處理器核未提供硬件乘除法器的實現。 當處理器遇到未實現指令時,處理器會產生一個異常,異常管理器 會調用相應程序用軟件模擬未實現指令的操作。NIOSⅡ處理器對未 實現指令的處理對程序員是透明的。

用戶定制指令:

NIOSⅡ處理器的ALU直接與用戶定制指令邏輯相連,對用戶定制指 令的訪問等同于系統指令集的指令。

浮點指令:

NIOSⅡ支持符合IEEESTD754-1985規范的單精度浮點指令,浮點指 令以用戶定制指令的方式實現。第九頁,共四十六頁。10.05.202310NIOSⅡ處理器的體系結構

地址發生器&程序控制器異常控制器中斷控制器通用寄存器r0..r31控制寄存器ctl0..ctl5指令Cache數據Cache算術邏輯單元(ALU)用戶定制指令邏輯JTAG調試模塊NiosII處理器核緊耦合指令存儲器緊耦合指令存儲器緊耦合數據存儲器緊耦合數據存儲器指令總線數據總線clockreset軟件調試JTAG接口中斷源[0..31]用戶IO信號cpu_resetrequestcpu_resettaken第十頁,共四十六頁。10.05.202311NIOSⅡ處理器的體系結構

NIOSⅡ處理器定義了32個32位通用寄存器第十一頁,共四十六頁。10.05.202312通用寄存器組寄存器助記符功能寄存器助記符功能r0zero清零r16子程序要保存的寄存器r1at匯編的臨時變量寄存器r17子程序要保存的寄存器r2函數返回值(低32位)r18子程序要保存的寄存器r3函數返回值(高32位)r19子程序要保存的寄存器r4傳遞給函數的參數r20子程序要保存的寄存器r5傳遞給函數的參數r21子程序要保存的寄存器r6傳遞給函數的參數r22子程序要保存的寄存器r7傳遞給函數的參數r23子程序要保存的寄存器r8調用者要保存的寄存器r24et為異常處理保留r9調用者要保存的寄存器r25bt為程序斷點保留r10調用者要保存的寄存器r26gp全局指針r11調用者要保存的寄存器r27sp堆棧指針r12調用者要保存的寄存器r28fp幀指針r13調用者要保存的寄存器r29ea異常返回地址r14調用者要保存的寄存器r30ba斷點返回地址r15調用者要保存的寄存器r31ra函數返回地址r4~r7:用來傳遞4個非浮點參數給一個子程序。r4傳遞第一個參數,r5傳遞第二個參數,以此類推。若四個寄存器不夠傳遞參數,編譯器將通過堆棧來傳遞。r8~r15:習慣上,子程序可以使用其中的值而不用保存它們。但調用者必須清楚:這些寄存器中的值可能被一次子程序調用改變,所以調用者有責任保存它們。r0或zero:總是存放0值,寫無效;NiosII無清零指令,常用r0對寄存器清零。r1或at:在匯編程序中常用作臨時變量寄存器。r2,r3:用于存放子程序的返回值。第十二頁,共四十六頁。10.05.202313通用寄存器組寄存器助記符功能寄存器助記符功能r0zero清零r16子程序要保存的寄存器r1at匯編中的臨時變量r17子程序要保存的寄存器r2函數返回值(低32位)r18子程序要保存的寄存器r3函數返回值(高32位)r19子程序要保存的寄存器r4傳遞給函數的參數r20子程序要保存的寄存器r5傳遞給函數的參數r21子程序要保存的寄存器r6傳遞給函數的參數r22子程序要保存的寄存器r7傳遞給函數的參數r23子程序要保存的寄存器r8調用者要保存的寄存器r24et異常處理臨時寄存器r9調用者要保存的寄存器r25bt程序斷點臨時寄存器r10調用者要保存的寄存器r26gp全局指針r11調用者要保存的寄存器r27sp堆棧指針r12調用者要保存的寄存器r28fp幀指針r13調用者要保存的寄存器r29ea異常返回地址r14調用者要保存的寄存器r30ba斷點返回地址r15調用者要保存的寄存器r31ra程序調用返回地址r16~r23:習慣上,子程序必須保證這些寄存器中的值在調用前后保持不變,即要么在子程序執行時不使用它們,要么使用前把它們保存在堆棧中并在退出時恢復。r24或et:在異常處理時使用。使用時,可以不恢復原來的值。該寄存器很少用作其它用途。r25或bt:在程序斷點處理時使用。使用時,可以不恢復原來的值。該寄存器很少作其它用途。r26或gp:全局指針。指向靜態數據區中一個運行時臨時決定的地址。存取位于gp值上下32KB范圍內的數據時,只需要一條以gp作為基指針的指令即可完成。r27或sp:堆棧指針。NiosII沒有專門的出棧(POP)入棧(PUSH)指令,在子程序入口處,sp指向棧底部,以sp為基址,用寄存器基址+偏移地址的方式來訪問棧中的數據。r28或fp:幀指針,習慣上用于跟蹤棧的變化和維護運行環境。r29或ea:保存異常處理時的程序返回地址。r30或ba:保存程序斷點處理的程序返回地址。r31或ra:保存子程序調用的返回地址。第十三頁,共四十六頁。10.05.202314NIOSⅡ處理器的體系結構

地址發生器&程序控制器異常控制器中斷控制器通用寄存器r0..r31控制寄存器ctl0..ctl5指令Cache數據Cache算術邏輯單元(ALU)用戶定制指令邏輯JTAG調試模塊NiosII處理器核緊耦合指令存儲器緊耦合指令存儲器緊耦合數據存儲器緊耦合數據存儲器指令總線數據總線clockreset軟件調試JTAG接口中斷源[0..31]用戶IO信號cpu_resetrequestcpu_resettaken第十四頁,共四十六頁。10.05.202315NIOSⅡ處理器的體系結構

NIOSⅡ處理器定義了6個32位控制寄存器

控制寄存器的訪問不同于通用寄存器:控制寄存器的讀/寫訪問只能在超級用戶模式(SupervisorMode)采用專用的控制寄存器讀/寫指令(rdctl和wrctl)實現。第十五頁,共四十六頁。10.05.202316控制寄存器組寄存器名字bit位意義:31…210ct10status保留UPIEct11estatus保留EUEPIEct12bstatus保留BUBPIEct13ienable中斷允許位ct14ipending中斷發生標志位ct15cpuid唯一的處理器標識號status—狀態寄存器:只有第1位和第0位有意義。第1位U—反映處理器當前狀態

1:表示處于用戶態(User-mode)0:表示處于超級用戶態(SupervisorMode)。第0位PIE—處理器中斷允許位:

1:表示處理器允許外設中斷

0:表示處理器禁止外設中斷PIE為1時,中斷是否被處理還要看ienable寄存器的值第十六頁,共四十六頁。10.05.202317控制寄存器組寄存器名字bit位意義:31…210ct10status保留UPIEct11estatus保留EUEPIEct12bstatus保留BUBPIEct13ienable中斷允許位ct14ipending中斷發生標志位ct15cpuid唯一的CPU序列號estatus、bstatus—status寄存器的影子寄存器:發生斷點或者異常時,保存status寄存器的值;斷點或異常處理返回時,恢復status寄存器的值。estatus用于異常處理時,bstatus用于斷點調試時第十七頁,共四十六頁。10.05.202318控制寄存器組寄存器名字bit位意義:31…210ct10status保留UPIEct11estatus保留EUEPIEct12bstatus保留BUBPIEct13ienable中斷允許位ct14ipending中斷發生標志位ct15cpuid唯一的CPU序列號ienable—中斷允許寄存器:每一位控制一個中斷通道。例如:第0位為1:表示允許第0號中斷發生;第0位為0:表示禁止第0號中斷發生;Ipending—中斷發生標志寄存器:每一位反映一個中斷發生。例如:第0位為1:表示第0號中斷發生;第0位為0:表示第0號中斷未發生;cpuid—此寄存器中裝載著處理器的id號:該id號在生成NiosII系統時產生,Id號在多處理器系統中可以作為分辨處理器的標識。第十八頁,共四十六頁。10.05.202319NIOSⅡ處理器的體系結構

地址發生器&程序控制器異常控制器中斷控制器通用寄存器r0..r31控制寄存器ctl0..ctl5指令Cache數據Cache算術邏輯單元(ALU)用戶定制指令邏輯JTAG調試模塊NiosII處理器核緊耦合指令存儲器緊耦合指令存儲器緊耦合數據存儲器緊耦合數據存儲器指令總線數據總線clockreset軟件調試JTAG接口中斷源[0..31]用戶IO信號cpu_resetrequestcpu_resettakenNIOSⅡ處理器的存儲器和I/O結構第十九頁,共四十六頁。10.05.202320NIOSⅡ處理器的體系結構程序計數器通用寄存器文件指令總線選擇邏輯數據總線選擇邏輯指令高速緩存數據高速緩存緊耦合指令存儲器1緊耦合數據存儲器1緊耦合指令存儲器N存儲器從外設緊耦合數據存儲器NSMSMAvalon轉換結構NiosII處理器內核SMAvalon從端口Avalon主端口NiosII內核訪問存儲器和I/O的方式1.指令主端口2.指令高速緩存3.數據主端口4.數據高速緩存5.緊耦合指令或數據存儲器端口第二十頁,共四十六頁。10.05.202321NIOSⅡ處理器的體系結構程序計數器通用寄存器文件指令總線選擇邏輯數據總線選擇邏輯指令高速緩存數據高速緩存緊耦合指令存儲器1緊耦合數據存儲器1緊耦合指令存儲器N存儲器從外設緊耦合數據存儲器NSMSMAvalon轉換結構NiosII處理器內核SMAvalon從端口Avalon主端口NiosII內核訪問存儲器和I/O的方式NIOSⅡ體系結構采用哈佛結構:指令總線和數據總線分開指令總線和數據總線均為遵循Avalon主端口規范的主端口數據主端口可連接存儲器和外設指令主端口只連接存儲器第二十一頁,共四十六頁。10.05.202322NIOSⅡ處理器的體系結構程序計數器通用寄存器文件指令總線選擇邏輯數據總線選擇邏輯指令高速緩存數據高速緩存緊耦合指令存儲器1緊耦合數據存儲器1緊耦合指令存儲器N存儲器從外設緊耦合數據存儲器NSMSMAvalon轉換結構NiosII處理器內核SMAvalon從端口Avalon主端口NiosII內核訪問存儲器和I/O的方式字(小端模式)低字節高字節高地址低地址存儲器與外設的訪問:NiosⅡ體系結構提供映射為存儲器的I/O訪問。數據存儲器和外設都被映射到數據主端口的地址空間。NIOSⅡ體系結構采用小端方式,高字節放高地址,低字節放低地址。第二十二頁,共四十六頁。10.05.202323NIOSⅡ處理器的體系結構程序計數器通用寄存器文件指令總線選擇邏輯數據總線選擇邏輯指令高速緩存數據高速緩存緊耦合指令存儲器1緊耦合數據存儲器1緊耦合指令存儲器N存儲器從外設緊耦合數據存儲器NSMSMAvalon轉換結構NiosII處理器內核SMAvalon從端口Avalon主端口NiosII內核訪問存儲器和I/O的方式指令主端口:NiosⅡ指令總線:32位Avalon主端口。指令主端口只執行一個功能:取指。指令主端口具有流水線模式;指令主端口總是接收32位數據,依靠Avalon交換結構的動態總線對齊邏輯屏蔽目標存儲器的總線寬度差異。NiosⅡ通過支持片內高速緩存來改善訪問低速存儲器的平均取指速度。NiosⅡ通過支持緊耦合存儲器實現低延遲的片上存儲器訪問。第二十三頁,共四十六頁。10.05.202324NIOSⅡ處理器的體系結構程序計數器通用寄存器文件指令總線選擇邏輯數據總線選擇邏輯指令高速緩存數據高速緩存緊耦合指令存儲器1緊耦合數據存儲器1緊耦合指令存儲器N存儲器從外設緊耦合數據存儲器NSMSMAvalon轉換結構NiosII處理器內核SMAvalon從端口Avalon主端口NiosII內核訪問存儲器和I/O的方式數據主端口:NiosⅡ數據總線:32位Avalon主端口。數據主端口執行兩個功能:裝載指令,從存儲器和外設讀數據存儲指令,對存儲器和外設寫數據。數據主端口支持流水線模式(數據緩存線大于4字節),不支持流水線模式(數據緩存線小于4字節);NiosⅡ通過支持片內高速緩存來改善訪問低速存儲器的平均數據傳輸速度。NiosⅡ通過支持緊耦合存儲器實現低延遲的片上存儲器訪問。第二十四頁,共四十六頁。10.05.202325NIOSⅡ處理器的體系結構程序計數器通用寄存器文件指令總線選擇邏輯數據總線選擇邏輯指令高速緩存數據高速緩存緊耦合指令存儲器1緊耦合數據存儲器1緊耦合指令存儲器N存儲器從外設緊耦合數據存儲器NSMSMAvalon轉換結構NiosII處理器內核SMAvalon從端口Avalon主端口NiosII內核訪問存儲器和I/O的方式指令和數據共享的存儲器:

指令和數據主端口共享一個存儲器:NIOSⅡ系統對外提供單一的、共享的指令/數據總線數據主端口具有更高仲裁權,防止出現端口獨占狀態第二十五頁,共四十六頁。10.05.202326NIOSⅡ處理器的體系結構程序計數器通用寄存器文件指令總線選擇邏輯數據總線選擇邏輯指令高速緩存數據高速緩存緊耦合指令存儲器1緊耦合數據存儲器1緊耦合指令存儲器N存儲器從外設緊耦合數據存儲器NSMSMAvalon轉換結構NiosII處理器內核SMAvalon從端口Avalon主端口NiosII內核訪問存儲器和I/O的方式高速緩存:NIOSⅡ體系結構:指令緩存、數據緩存高速緩存采用片內SRAM實現緩存是可配置的:大小、有無緩存運行時是一直使能的,可采用軟件指令旁路緩存:保證程序執行時間的可預測性高速緩存改善系統性能的前提:1)常規存儲位于片外,訪問時間比片內長2)最大的對性能關鍵的循環指令的長度小于指令緩存3)最大的對性能關鍵的數據塊的長度小于數據緩存對于數據和代碼常駐緩存的場合,采用緊耦合存儲器更好第二十六頁,共四十六頁。10.05.202327NIOSⅡ處理器的體系結構程序計數器通用寄存器文件指令總線選擇邏輯數據總線選擇邏輯指令高速緩存數據高速緩存緊耦合指令存儲器1緊耦合數據存儲器1緊耦合指令存儲器N存儲器從外設緊耦合數據存儲器NSMSMAvalon轉換結構NiosII處理器內核SMAvalon從端口Avalon主端口NiosII內核訪問存儲器和I/O的方式緊耦合存儲器:緊耦合存儲器是NIOS核的一個主端口,緊耦合存儲器采用片內SRAM實現緊耦合存儲器是可配置的:大小、有無緊耦合存儲器的優點:1)性能類似于高速緩存2)軟件可保證對性能關鍵的代碼和數據常駐緊耦合存儲器3)代碼執行的確定性可保證軟件角度:訪問緊耦合存儲器同其他存儲器若系統的存儲需求緊耦合存儲器可滿足,則代碼可全放緊耦合存儲器;若系統的存儲需求較大,則需要選擇對性能關鍵的代碼放在緊耦合存儲器中。第二十七頁,共四十六頁。10.05.202328NIOSⅡ處理器的體系結構NIOSⅡ系統的地址映射

NiosII系統:存儲器和外設的地址映射與設計相關,由設計人員在系統生成時指定;程序員通過宏和驅動程序訪問存儲器和外設,靈活的地址映射對應用程序開發人員是透明的。 特別注意3個CPU相關的地址:復位地址、異常地址以及斷點處理(breakhandler)程序地址。

第二十八頁,共四十六頁。10.05.202329NIOSⅡ處理器的體系結構NIOSⅡ系統的地址映射

NiosII系統地址為32位,允許對4GB地址空間進行訪問。

現有的NiosII內核將地址限制在31位,即2GB地址空間。

NiosII的數據總線為32位,指令集提供字節,半字(16bit)或字(32位)的讀寫指令。NiosII采用小端存儲模式,對于保存在存儲器中的大于8位的數據,最高有效位在高地址。外設數據存儲器程序存儲器地址空間未映射4GB地址空間32位寬度映射映射映射映射的具體位置在生成系統時確定對此地址空間的讀寫將產生一個不確定的值第二十九頁,共四十六頁。10.05.202330NIOSⅡ處理器的體系結構NIOSⅡ系統的尋址方式

1)立即數尋址:指令直接給出操作數。

2)寄存器尋址:所有的操作數都是寄存器,結果保存在 寄存器中

3)移位尋址:寄存器和帶符號的16位立即數相加的結果 作為地址

4)寄存器間接尋址:移位量為0的移位尋址

5)絕對尋址:按照指令中指定的固定地址進行數據尋址。 范圍有限制的絕對尋址使用帶有寄存器r0 (它的值始終是0x00)的移位尋址實現。

第三十頁,共四十六頁。10.05.202331NIOSⅡ處理器的體系結構

地址發生器&程序控制器異常控制器中斷控制器通用寄存器r0..r31控制寄存器ctl0..ctl5指令Cache數據Cache算術邏輯單元(ALU)用戶定制指令邏輯JTAG調試模塊NiosII處理器核緊耦合指令存儲器緊耦合指令存儲器緊耦合數據存儲器緊耦合數據存儲器指令總線數據總線clockreset軟件調試JTAG接口中斷源[0..31]用戶IO信號cpu_resetrequestcpu_resettaken異常控制器

NiosII體系結構提供一個簡單的非向量異常控制器來處理所有類型的異常中斷控制器

NiosII體系結構支持32個外部硬件中斷,每個中斷對應一個獨立的中斷通道第三十一頁,共四十六頁。10.05.202332NIOSⅡ處理器的體系結構NIOSⅡ的異常處理硬件中斷軟件異常軟件陷阱異常未定義指令異常其它異常外設通過處理器32個中斷輸入通道請求產生硬件中斷。當程序遇到軟件陷阱指令時,將產生軟件陷阱異常。軟件陷阱在程序需要操作系統服務時常用到,操作系統的異常處理程序判斷產生軟件陷阱的原因,然后執行相應任務。NiosII異常包括第三十二頁,共四十六頁。10.05.202333NIOSⅡ處理器的體系結構硬件中斷軟件異常軟件陷阱異常未定義指令異常其它異常當處理器執行未定義指令時產生未定義指令異常。異常處理判斷哪個指令產生異常,如果指令不能通過硬件執行,可以在一個異常服務程序中通過軟件方式執行。其它異常類型是為將來系統擴展準備的。NiosII異常包括NIOSⅡ的異常處理第三十三頁,共四十六頁。10.05.202334NIOSⅡ處理器的體系結構把status寄存器內容復制到estatus寄存器中,保存當前處理器狀態;清除status寄存器的U位為0,強制處理器進入超級用戶狀態;清除status寄存器的PIE位為0,禁止所有的硬件中斷;把異常返回地址寫入ea寄存器(r29);跳轉到異常處理地址。12345NIOSⅡ的異常處理流程第三十四頁,共四十六頁。10.05.202335NIOSⅡ處理器的體系結構(EPIE==1)&(ipending!=0)?指令是在(ea-4)trap處嗎?指令是在(ea-4)div、mul、mulxuu等處嗎?進入異常處理處理硬件中斷處理軟件陷阱處理未定義指令其它異常NoNoNoYesYesYesNIOSⅡ的異常處理的優先級第三十五頁,共四十六頁。10.05.202336NIOSⅡ處理器的體系結構異常嵌套異常返回異常響應時間實現異常嵌套,需在用戶ISR中打開外部中斷允許(PIE=1)。在處理異常事件的過程中,可以響應由trap指令引起的軟件陷阱異常和未實現指令異常。在異常嵌套之前,為了確保異常能正確返回,必須保存estatus寄存器(ctl1)和ea寄存器(r29)。第三十六頁,共四十六頁。10.05.202337NIOSⅡ處理器的體系結構異常嵌套異常返回異常響應時間當執行異常返回指令(eret)后,處理器會把estatus寄存器(ctl1)內容復制到status寄存器(ctl0)中,恢復異常前的處理器狀態,然后把異常返回地址從ea寄存器(r29)寫入程序計數器。異常發生時,ea寄存器(r29)保存了異常發生處下一條指令所在的地址。第三十七頁,共四十六頁。10.05.202338NIOSⅡ處理器的體系結構異常嵌套異常返回異常響應時間如果異常從軟件陷阱異常或未定義指令異常返回,程序須從軟件陷阱指令trap或未定義指令后繼續執行,ea寄存器(r29)的值為異常返回地址。如果是硬件中斷異常,程序必須從硬件中斷異常發生處繼續執行,須將ea寄存器(r29)中的地址減去(ea-4)作為異常返回地址。第三十八頁,共四十六頁。10.05.202339NIOSⅡ處理器的體系結構異常嵌套異常返回異常響應時間NiosII的非向量仲裁策略導致NiosII的異常處理延時較大,靠提高NiosII處理器的執行速度彌補該缺點。NiosII類型Max.DMIPS中斷時延響應時間異常恢復時延NiosII/e3115485222NiosII/s12710128130NiosII/f2181010562NiosII異常處理性能第三十九頁,共四十六頁。10.05.202340NIOSⅡ處理器的體系結構

地址發生器&程序控制器異常控制器中斷控制器通用寄存器r0..r31控制寄存器ctl0..ctl5指令Cache數據Cache算術邏輯單元(ALU)用戶定制指令邏輯JTAG調試模塊NiosII處理器核緊耦合指令存儲器緊耦合指令存儲器緊耦合數據存儲器緊耦合數據存儲器指令總線數據總線clockreset軟件調試JTAG接口中斷源[0..31]用戶IO信號cpu_resetrequestcpu_resettaken復位信號reset:是一個強制處理器核立即進入復位狀態的全局硬件復位信號。cpu_resetrequest:是一個可以讓處理器核復位但不影響NiosII系統其它外設的局部復位信號第四十頁,共四十六頁。10.05.202341NIOSⅡ處理器的體系結構CPU復位后,NiosII處理器將執行下列操作:清除狀態寄存器status,使之為0x0;指令Cache與程序存儲器的關聯被置為無效,處理器從固態程序存儲器(比如Flash)中的reset地址處取得第一條指令;從復位地址處開始執行程序。清除status:使處理器進入超級用戶模式并禁止硬件中斷。使當前Cache隊列無效:保證取指是從復位地址所在的非Cache存儲區,而不是當前指令Cache。復位地址在系統生成時指定。第四十一頁,共四十六頁。10.05.202342NIOSⅡ處理器的體系

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論