MicroBlaze軟核處理器接口_第1頁
MicroBlaze軟核處理器接口_第2頁
MicroBlaze軟核處理器接口_第3頁
MicroBlaze軟核處理器接口_第4頁
MicroBlaze軟核處理器接口_第5頁
已閱讀5頁,還剩62頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

MicroBlaze軟核處理器接口何賓2012.02MicroBlaze軟核處理器接口本章詳細介紹了MicroBlaze軟核處理的接口,這些接口包括:(1)AXI4接口;(2)PLB接口;(3)LMB接口;(4)FSL接口;(5)XCL接口;

(6)調試接口和跟蹤接口。這些接口提供了軟核處理器與片上、片外外設和存儲器的靈活接口。此外,接口也提供了點對點的或者共享總線的數據傳輸方式。MicroBlaze接口概述

MicroBlaze處理器結構采用哈弗結構,即為數據和指令訪問提供了獨立的總線接口單元。MicroBlaze處理器支持下面四種存儲器接口:本地存儲器總線(LMB);AMBAAXI4接口(AXI4);IBM處理器本地總線(PLB);Xilinx的CacheLink(XCL)接口;MicroBlaze軟核處理器接口LMB提供了以單時鐘周期訪問雙端口存儲器的能力。AXI4和PLB提供了片上和片外外設和存儲器的接口。CacheLink接口和外部存儲器控制一起用作專門用途。MicroBlaze處理器支持最多16個簡單快速鏈接FSL或者AXI4-Stream接口端口,每一個端口有主和從接口。MicroBlaze軟核處理器接口MicroBlaze處理器能配置成下面的總線接口:ARMAAXI4接口;32位版本的PLBV4.6接口;LMB提供簡單同步協議用于高效的BRAM傳輸;FSL或AXI4-Stream提供快速無需仲裁的流通信機制;XCL提供在緩存和外部存儲器控制器之間的快速從設備仲裁的流接口;調試接口和處理器調試模塊(MDM)一起使用;跟蹤接口用于性能分析;AXI4接口

--存儲器映射接口

MicroBlazeAXI4存儲器映射的外設接口(M_AXI_DP,M_AXI_IP)實現32位的主接口。這些接口只發出單個地址,所有的交易按順序完成。

(1)指令外設接口只執行單字讀訪問,總是設置使用AXI4-Lite子集;(2)數據外設接口執行單字訪問,默認設置使用AXI4-Lite子集,當使能用于LWX和SWX的互斥訪問時,使用AXI4。通過設置合適的字節選通,可以執行半字和字節寫操作;AXI4接口

--存儲器映射接口AXI4存儲器映射的緩存接口(M_AXI_DC,M_AXI_IC)可以實現32位、128位或者256位的主設備(取決于緩存行的長度和數據寬度參數)。

(1)作為32位主設備,指令緩存接口執行4字或8字(取決于緩存行長度)猝發讀訪問。作為128位或256位主設備,只執行單個讀訪問。當使能流緩存時,這個接口能提供最多2個地址或者8個地址。

(2)作為32位主設備,數據緩存接口執行單字訪問或4/8字猝發訪問(取決于緩存行長度)。當使用寫通過緩存時,不執行寫猝發訪問。通過設置合適的字節選通,可以執行字、半字和字節寫操作。當讀時,接口最多發出2個地址,而當寫時,最多發出32個地址。使能互斥訪問用于LWX和SWX指令。AXI4接口

--存儲器映射接口M_AXI_DP、M_AXI_IP、M_AXI_DC和M_AXI_IC接口信號功能一樣,表4.1給出了M_AXI_DP端口的信號及功能。更具體的功能可以參看第二章的內容。AXI4接口

--存儲器映射接口信號接口I/O描述M_AXI_DP_AWIDM_AXI_DPO主設備寫地址IDM_AXI_DP_AWADDRM_AXI_DPO主設備寫地址M_AXI_DP_AWLENM_AXI_DPO主設備猝發長度M_AXI_DP_AWSIZEM_AXI_DPO主設備猝發大小M_AXI_DP_AWBURSTM_AXI_DPO主設備猝發類型M_AXI_DP_AWLOCKM_AXI_DPO主設備鎖類型M_AXI_DP_AWCACHEM_AXI_DPO主設備緩存類型M_AXI_DP_AWPROTM_AXI_DPO主設備保護類型M_AXI_DP_AWQOSM_AXI_DPO主設備服務質量M_AXI_DP_AWVAILDM_AXI_DPO主設備寫地址有效M_AXI_DP_AWREADYM_AXI_DPI從設備寫地址準備M_AXI_DP_WDATAM_AXI_DPO主設備寫數據M_AXI_DP_WSTRBM_AXI_DPO主設備寫選通M_AXI_DP_WLASTM_AXI_DPO主設備寫最后M_AXI_DP_WVALIDM_AXI_DPO主設備寫有效AXI4接口

--存儲器映射接口M_AXI_DP_WREADYM_AXI_DPI從設備寫準備M_AXI_DP_BIDM_AXI_DPI從設備響應IDM_AXI_DP_BRESPM_AXI_DPI從設備寫響應M_AXI_DP_BVALIDM_AXI_DPI從設備寫響應有效M_AXI_DP_BREADYM_AXI_DPO主設備響應準備M_AXI_DP_ARIDM_AXI_DPO主設備讀地址IDM_AXI_DP_ARADDRM_AXI_DPO主設備讀地址M_AXI_DP_ARLENM_AXI_DPO主設備猝發長度M_AXI_DP_ARSIZEM_AXI_DPO主設備猝發大小M_AXI_DP_ARBURSTM_AXI_DPO主設備猝發類型M_AXI_DP_ARLOCKM_AXI_DPO主設備鎖類型M_AXI_DP_ARCACHEM_AXI_DPO主設備緩存類型M_AXI_DP_ARPORTM_AXI_DPO主設備保護類型M_AXI_DP_ARQOSM_AXI_DPO主設備服務質量M_AXI_DP_ARVAILDM_AXI_DPO主設備讀地址有效AXI4接口

--存儲器映射接口M_AXI_DP_ARREADYM_AXI_DPI從設備讀地址準備M_AXI_DP_RIDM_AXI_DPI從設備讀ID標志M_AXI_DP_RDATAM_AXI_DPI從設備讀數據M_AXI_DP_RRESPM_AXI_DPI從設備讀響應M_AXI_DP_RLASTM_AXI_DPI從設備讀最后M_AXI_DP_RVALIDM_AXI_DPI從設備讀有效M_AXI_DP_RREADYM_AXI_DPO主設備讀準備AXI4接口

--流接口

MicroBlazeAXI4-Stream接口(M0_AXIS..M15_AXIS,S0_AXIS..S15_AXIS)實現32位主設備或從設備。

Mn_AXIS_TLAST,Sn_AXIS_TLAST信號直接對應于同等的FSLn_M_Control和FSLn_S_Control信號。AXI4接口

--流接口1.寫操作

MicroBlaze通過使用put或putd指令執行寫流接口操作。寫操作將寄存器的內容傳到輸出AXI4接口。對于阻塞模式寫(put或cput指令)在單個時鐘周期內完成傳輸,且接口不忙。如果接口忙,處理器停止,一直到其可用為止。非阻塞指令(前綴n),即使在忙時,也總是在單周期內完成傳輸。如果接口忙,禁止寫并且設置MSR內的進位位。AXI4接口

--流接口2.讀操作

MicroBlaze通過使用get或getd指令執行讀流接口操作。讀操作將輸入AXI4接口內容傳輸到寄存器。對于阻塞模式讀在兩個時鐘周期內完成傳輸,且數據可用。如果數據不可用時,處理器在這條指令上停下來,一直到其可用為止。在非阻塞模式下(前綴n),不管數據是否可用,也總是在一個或者兩個時鐘周期內完成傳輸。如果數據不可用,不發生數據傳輸,并且設置MSR內的進位位。表4.2給出了M_AXI_Stream端口的信號及功能。更具體的功能可以參看第二章的內容AXI4接口

--流接口信號接口I/O描述Mn_AXIS_TLASTM0_AXIS..M15_AXISO主設備接口輸出AXI4通道寫最后Mn_AXIS_TDATAM0_AXIS..M15_AXISO主設備接口輸出AXI4通道寫數據Mn_AXIS_TVALIDM0_AXIS..M15_AXISO主設備接口輸出AXI4通道寫有效Mn_AXIS_TREADYM0_AXIS..M15_AXISI主設備接口輸入AXI4通道寫準備Sn_AXIS_TLASTM0_AXIS..M15_AXISI從設備接口輸入AXI4通道寫最后Sn_AXIS_TDATAM0_AXIS..M15_AXISI從設備接口輸入AXI4通道寫數據Sn_AXIS_TVALIDM0_AXIS..M15_AXISI從設備接口輸入AXI4通道寫有效Sn_AXIS_TREADYM0_AXIS..M15_AXISO從設備接口輸出AXI4通道寫準備PLB接口

MicroBlaze處理的PLB接口用于字節使能的32位主設備。表4.3給出了IPLB總線接口信號定義。表4.4給出了DPLB總線接口定義。更詳細的可以參考PLBV46互連和接口資料。PLB接口(IPLB)信號接口I/O功能(指令側PLB接口簡稱IPLB)IPLB_M_ABORTIPLBOIPLB放棄總線請求指示IPLB_M_ABUSIPLBOIPLB地址總線IPLB_M_UABUSIPLBOIPLB高部分地址總線IPLB_M_BEIPLBOIPLB字節使能IPLB_M_busLockIPLBOIPLB總線鎖定IPLB_M_lockErrIPLBOIPLB總線鎖定錯誤指示IPLB_M_MsizeIPLBOIPLB主設備數據總線大小IPLB_M_priorityIPLBOIPLB請求優先級IPLB_M_rdBurstIPLBOIPLB猝發式讀傳輸指示IPLB_M_requestIPLBOIPLB總線請求IPLB_M_RNWIPLBOIPLB讀/非寫IPLB_M_sizeIPLBOIPLB傳輸大小IPLB_M_TAttributeIPLBOIPLB傳輸屬性總線IPLB_M_typeIPLBOIPLB傳輸類型IPLB_M_wrBurstIPLBOIPLB猝發式寫傳輸指示IPLB_M_wrDBusIPLBOIPLB寫數據總線PLB接口(IPLB)IPLB_MbusyIPLBIIPLB從設備忙指示IPLB_MRdErrIPLBIIPLB從設備讀錯誤指示IPLB_MWrErrIPLBIIPLB從設備寫錯誤指示IPLB_MIRQIPLBIIPLB從設備中斷指示IPLB_MWRBTermIPLBIIPLB終止寫猝發指示IPLB_MWrDAckIPLBIIPLB寫數據應答IPLB_MAddrAckIPLBIIPLB地址應答IPLB_MRdBTermIPLBIIPLB終止讀猝發指示IPLB_MRdDAckIPLBIIPLB讀數據應答IPLB_MRdDBusIPLBIIPLB讀數據總線IPLB_MRdEdAddrIPLBIIPLB讀字總線IPLB_MRearbitrateIPLBIIPLB再總裁指示IPLB_MSSizeIPLBIIPLB從設備數據總線大小IPLB_MTimeoutIPLBIIPLB總線超時PLB接口(DPLB)信號接口I/O功能(數據側PLB接口簡稱DPLB)DPLB_M_ABORTDPLBODPLB放棄總線請求指示DPLB_M_ABUSDPLBODPLB地址總線DPLB_M_UABUSDPLBODPLB高部分地址總線DPLB_M_BEDPLBODPLB字節使能DPLB_M_busLockDPLBODPLB總線鎖定DPLB_M_lockErrDPLBODPLB總線鎖定錯誤指示DPLB_M_MsizeDPLBODPLB主設備數據總線大小DPLB_M_priorityDPLBODPLB請求優先級DPLB_M_rdBurstDPLBODPLB猝發式讀傳輸指示DPLB_M_requestDPLBODPLB總線請求DPLB_M_RNWDPLBODPLB讀/非寫DPLB_M_sizeDPLBODPLB傳輸大小DPLB_M_TAttributeDPLBODPLB傳輸屬性總線DPLB_M_typeDPLBODPLB傳輸類型PLB接口(DPLB)DPLB_M_wrBurstDPLBODPLB猝發式寫傳輸指示DPLB_M_wrDBusIPLBODPLB寫數據總線DPLB_MbusyDPLBIDPLB從設備忙指示DPLB_MRdErrDPLBIDPLB從設備讀錯誤指示DPLB_MWrErrDPLBIDPLB從設備寫錯誤指示DPLB_MIRQDPLBIDPLB從設備中斷指示DPLB_MWRBTermDPLBIDPLB終止寫猝發指示DPLB_MWrDAckDPLBIDPLB寫數據應答DPLB_MAddrAckDPLBIDPLB地址應答DPLB_MRdBTermDPLBIDPLB終止讀猝發指示DPLB_MRdDAckDPLBIDPLB讀數據應答DPLB_MRdDBusDPLBIDPLB讀數據總線DPLB_MRdEdAddrDPLBIDPLB讀字總線DPLB_MRearbitrateDPLBIDPLB再總裁指示DPLB_MSSizeDPLBIDPLB從設備數據總線大小DPLB_MTimeoutDPLBIDPLB總線超時LMB接口

LMB是同步總線,主要用于訪問片上塊RAM資源。LMB有最少的控制總線數目,使用簡單協議保證以單周期訪問本地塊RAM資源。表4.5給出了LMB接口信號及定義。所有信號都是高有效。LMB接口信號數據接口指令接口類型功能Addr[0:31]Data_Addr[0:31]Insr_Addr[0:31]O地址總線Byte_Enable[0:31]Byte_Enable[0:3]notusedO字節使能Data_Write[0:31]Data_Write[0:31]notusedO寫數據總線ASD_ASI_ASO地址選通Read_StrobeRead_StrobeIFetchO讀進行Write_StrobeWrite_StrobenotusedO寫進行Data_Read[0:31]Data_Read[0:31]Insr[0:31]I讀數據總線ReadyDReadyIReadyI下次傳輸準備WaitDWaitIWaitI等待,直到準備被接受的傳輸CEDCEICEI可更正的錯誤UE不可更正的錯誤ClkClkClkI總線時鐘FSL接口FSL總線在輸出FIFO和輸入FIFO之間提供點對點的通信通道,更詳細的信息參考IP核參考資料。表4.6給出了主FSL信號接口,表4.7給出了從FSL接口信號。FSL接口(MFSL)信號功能VHDL類型方向FSLn_M_Clk時鐘std_logicinputFSLn_M_Write寫使能信號,表示數據正被寫到輸出FSLstd_logicoutputFSLn_M_Data數據寫到輸出FSLstd_logic_vectoroutputFSLn_M_Control控制位寫到輸出FSLstd_logicoutputFSLn_M_Full當設置時,表示輸出FSL的FIFO滿std_logicinputFSL接口(SFSL)信號功能VHDL類型方向FSLn_S_Clk時鐘std_logicinputFSLn_S_Read讀響應信號表示,數據已經從輸入FSL讀出std_logicoutputFSLn_S_Data在輸入FSL的頂部的現在可用的數據std_logic_vectorinputFSLn_S_Control控制比特,輸入FSL頂部的數據現在可用std_logicinputFSLn_S_Exists指示標志,表明在輸入FSL中存在數據std_logicinputFSL接口1.FSL總線寫操作

MicroBlaze使用put或putd指令,執行寫FSL的操作。寫FSL操作將寄存器的內容傳送到輸出FSL總線上。當FSL的FIFO非滿狀態時,在阻塞傳輸模式下只需要一個時鐘周期就能完成數據傳輸。如果FSL的FIFO滿時,處理器停下來等待,直到FSL的滿標志變成低。非阻塞傳輸指令(前綴n)在一個時鐘周期下完成傳輸(即使FSL為滿)。如果FSL為滿時,寫操作被禁止,且MSR的進位標志被置位。FSL接口2.FSL總線讀操作

MicroBlaze使用get或getd指令,執行讀FSL的操作。讀FSL操作將輸入FSL總線的內容傳輸到通用寄存器中。當FSL的FIFO非滿狀態時,在阻塞傳輸模式下只需要2個時鐘周期就能完成數據讀傳輸。如果FSL的FIFO滿時,處理器停下來等待,直到FSL的滿標志變成低。非阻塞傳輸指令(前綴n)在2個時鐘周期下完成傳輸(即使FSL為空)。如果FSL為空時,不產生讀數據傳輸,且MSR的進位標志被置位。FSL接口3.直接FSL連接直接FSL連接用來去避免需要FSL總線。在沒有緩沖的情況下,例如兩個連接的IP核。在直接FSL連接下不使用FSL的FIFO。無FIFO可以減少延遲和要求實現的資源。

MicroBlaze處理器的每一個FSL接口能使用FSL直接連接或FSL總線。

MicroBlaze的DWFSL接口是直接FSL連接的初始源,它只能連接到DWFSL目標。DWFSL的初始源和目標有同樣的信號名(與MFSL信號一樣)。MicroBlaze使用DWFSL接口通過put或putd命令寫數據到目標。FSL接口

MicroBlaze的DRFSL接口是一個FSL連接的目標,它只能連接到DRFSL的初始源。DRFSL的初始源和目標有同樣的信號名(與SFSL信號一樣)。MicroBlaze使用DRFSL接口通過get或getd命令從初始源讀數據。

Xilinx的CacheLink(XCL)接口就是使用直接FSL連接實現的。XCL接口

--XCL接口原理

對外部存儲器的訪問來說,XCL接口是高性能的解決方案。XCL通過使用集成的FSL緩沖區直接和存儲器控制器連接,例如MPMC。這種方法有最低的延遲和最小數目的例化。圖4.1給出了使用集成FSL緩沖區的XCL連接原理圖。

XCL接口

--XCL接口原理存儲器控制器FSLFSLMicroBlazeBEGINmicroblaze...BUS_INTERFACEIXCL=myIXCL...ENDBEGINmpmc...BUS_INTERFACEXCL0=myIXCL….END圖4.1使用集成FSL緩沖區的XCL連接原理XCL接口

--XCL接口原理當緩存使能時,XCL接口可以使用。可以在指令側或數據側使用一個XCL緩存。存儲器位置的訪問,由指令緩存參數C_ICACHE_ALWAYS_USED和數據緩存參數C_DCACHE_ALWAYS_USED來確定。如果值為1,表示緩存的存儲器范圍總是能通過XCL訪問。如果值為0,每當緩存被軟件禁止時,緩存的存儲器范圍只能通過AXI4或PLB訪問。XCL接口

--XCL接口原理在XCL可訪問的范圍以外存儲器的位置可通過AXI,PLB或者LMB訪問。XCL緩存控制器處理4-8個緩存行。同時由于XCL與PLB和AXI4分開,也減少了對非緩存存儲器訪問的沖突。表4.8給出了XCL的信號接口。XCL接口

--XCL接口原理信號描述VHDL類型方向ICACHE_FSL_IN_Clk時鐘輸出到指令側返回讀數據的FSLstd_logicoutputICACHE_FSL_IN_Read讀信號輸出到指令側返回讀數據的FSLstd_logicoutputICACHE_FSL_IN_Data指令側返回FSL讀數據std_logic_vector(0:31)inputICACHE_FSL_IN_Control指令側返回FSL讀數據的控制位,保留。std_logicinputICACHE_FSL_IN_Exists更多的數據存在指令側的返回FSLstd_logicinputICACHE_FSL_OUT_Clk時鐘輸出到指令側的讀訪問FSLstd_logicoutputICACHE_FSL_OUT_Write寫新的緩存缺失訪問請求到指令側的讀訪問FSLstd_logicoutputICACHE_FSL_OUT_Data緩存缺失訪問到指令側的讀訪問FSLstd_logic_vector(0:31)outputICACHE_FSL_OUT_ControlFSL控制位到指令側的讀訪問FSLstd_logicoutputICACHE_FSL_OUT_FullFSL訪問緩沖為指令側的讀訪問滿。std_logicinputDCACHE_FSL_IN_CLK時鐘輸出到數據側返回讀數據的FSLstd_logicoutputDCACHE_FSL_IN_Read讀信號到數據側返回讀數據的FSLstd_logicoutputDCACHE_FSL_IN_Data讀數據從數據側返回讀數據的FSLstd_logic_vector(0:31)inputDCACHE_FSL_IN_ControlFSL控制位從數據側返回數據FSLstd_logicinputXCL接口

--XCL接口原理DCACHE_FSL_IN_Exists更多數據存在于數據側的返回FSLstd_logicinputDCACHE_FSL_OUT_Clk時鐘輸出到數據側讀訪問FSLstd_logicoutputDCACHE_FSL_OU_Write寫新的緩存缺失訪問請求到數據側的讀訪問FSLstd_logicoutputDCACHE_FSL_OUT_Data緩存缺失訪問(讀地址/寫地址+寫數據+字節寫使能)到數據側讀訪問FSLstd_logic_vector(0:31)outputDCACHE_FSL_OUT_ControlFSL控制比特到數據側讀訪問FSL。使用地址比特[30:31]為讀/寫和字節使能編碼。std_logicoutputDCACHE_FSL_OUT_Full用于數據側讀訪問的FSL訪問緩沖區為滿std_logicinputXCL接口

--XCL交易所有單獨的CacheLink訪問遵循基于FSLFIFO的交易協議,主要包含以下幾點:

(1)FSL的數據和控制信號上的訪問信息被編碼(例如:

DCACHE_FSL_OUT_Data,DCACHE_FSL_OUT_Control,

ICACHE_FSL_IN_Data和ICACHE_FSL_IN_Control)。

(2)通過拉高寫使能信號(DCACHE_FSL_OUT_Write),信息被發送(保存)。

(3)如果來自接收方的滿信號無效(DCACHE_FSL_OUT_FULL=0),則發送方只允許寫。指令緩存控制器不使用滿信號標志。XCL接口

--XCL交易

(4)使用ICACHE_FSL_IN_Read和DCACHE_FSL_IN_Read取決于所選擇的接口協議:使用IXCL和DXCL協議,通過拉高讀信號信息被接收(加載)。該信號為低,除非當發送者示意有新數據存在。使用IXCL2和DXCL2協議,拉低讀信號表示接收方不能接收新的數據。當讀信號為高時,新數據是只讀的,發送者示意有新數據存在。

(5)只要發送方示意有新數據存在(例如

ICACHE_FSL_IN_Exists=1),接收方只允許讀。XCL接口

--XCL交易

Xilinx的CacheLink解決方案中,每個緩存控制器使用一個流入(從)和流出(主)FSL。流出FSL用于發送訪問請求,而流入FSL用于接收請求的緩存行。FSL的數據和控制信號上,XCL也使用交易信息的特定編碼。在XCL協議中,用于讀操作的緩存行為4/8個字長。取決于所選擇的接口協議,使用第一個關鍵字(Criticalwordfirst)或者線性順序(inlinearorder),取出每個緩存行。XCL接口

--XCL交易

(1)IXCL和DXCL協議使用第一個關鍵字協議(C_ICACHE_INTERFACE=0或者C_DCACHE_INTERFACE=0)。每個緩存行希望由第一個關鍵字開始(即,如果訪問地址0x348缺失4個字的緩存行,則返回的緩存行應該是下面的地址序列:0x348,0x34c,0x340,0x344)。緩存控制器發送第一個字到執行單元,同時把它存在緩存存儲器中。這樣使得只要第一個字返回,就可以繼續執行。只要接收到這些字,緩存控制器使用剩余的3或7個字填充緩存行。XCL接口

--XCL交易

(2)線性取使用IXCL2和DXCL2協議,(C_ICACHE_INTERFACE=1或者C_DCACHE_INTERFACE=1)。CacheLink的地址輸出對齊緩存行大?。矗绻L問地址0x348缺失4個字的緩存行,擇CacheLink的地址輸出是0x340)。緩存控制器將數據保存在緩存控制器中,當可用時,將請求字提交給執行單元。

XCL接口

--XCL交易當C_DACHE_USE_WRITEBACK設置為1時,使用猝發寫能保存整個緩存行和一個單字。每個緩存行總是以線性順序保存,CacheLink的地址輸出對齊緩存行大小。當C_DACHE_USE_WRITEBACK清零時,在Cache上的所有寫操作是單字操作。當使用寫回時C_DACHE_INTERFACE必須設置為1(因為猝發寫只能用DXCL2協議)。XCL交易

--指令緩存讀缺失當讀缺失時,緩存控制器執行下面的操作:

(1)寫字對齊的或者緩存行對齊的缺失地址到

ICACHE_FSL_OUT_Data,控制位設置低,(ICACHE_FSL_OUT_Control=0)表示讀訪問;

(2)等到ICACHE_FSL_IN_Exists為高,表示數據可用(等待至少一個時鐘)。使用IXCL協議(第一個關鍵字)

(3)將ICACHE_FSL_IN_Data的內容保存到緩存中;

(4)將關鍵字提交到執行單元,以便繼續執行;

(5)重復步驟3和4,處理在緩存行中剩余的3或7個字;使用IXCL2協議(線性?。?)將ICACHE_FSL_IN_Data的內容保存到緩存中;

(4)將相關的字提交到執行單元,以便繼續執行;

(5)將剩余的字從ICACHE_FSL_IN_Data保存到緩存中;XCL交易

--數據緩存讀缺失當讀缺失時,緩存控制器執行下面的操作:

(1)如果DCACHE_FSL_OUT_Full=1則停止,直到變低;

(2)寫字對齊的或者緩存行對齊的缺失地址到

DCACHE_FSL_OUT_Data,控制位置低,(DCACHE_FSL_OUT_Control=0)表示讀訪問;

(3)等到DCACHE_FSL_IN_Exists為高,表示數據可用(等待至少一個時鐘)。使用DXCL協議(第一個關鍵字)

(4)將DCACHE_FSL_IN_Data的內容保存到緩存中;

(5)將關鍵字提交到執行單元,以便繼續執行;

(6)重復步驟4和5,處理在緩存行中剩余的3或7個字;使用DXCL2協議(線性取)

(4)將DCACHE_FSL_IN_Data的內容保存到緩存中;

(5)將請求字提交到執行單元,以便繼續執行;

(6)將剩余的字從DCACHE_FSL_IN_Data保存到緩存中;XCL交易

--數據緩存寫當C_DCACHE_INTERFACE設置為1時,CacheLink能執行猝發寫或者單字寫。當設置C_DCACHE_USE_WRITEBACK=1時,使用猝發寫,整個緩存行有效。當C_DCACHE_USE_WRITEBACK=0時,寫數據到數據緩存總是完全寫入。因此,不管在緩存中命中還是缺失,在CacheLink中都有一個寫操作。XCL交易

--數據緩存寫使用DXCL2協議,在一個猝發緩存行寫,緩存控制器執行下面的序列:

(1)如果DCACHE_FSL_OUT_Full=1則停止,直到變低;

(2)寫緩存對齊的地址到DCACHE_FSL_OUT_Data,控制位為高(DCACHE_FSL_OUT_Control=1)表示寫訪問。地址總線的最高兩位(30:31)用來編碼猝發訪問:0b10=猝發。從一個單字寫中分出一個猝發訪問時,在步驟4中,對于第一個數據字的控制位為低,用于猝發訪問(DCACHE_FSL_OUT_Control=1)。

(3)如果DCACHE_FSL_OUT_Full=1則停止,直到變低;

(4)寫數據被保存在DCACHE_FSL_OUT_Data中??刂莆晃坏停―CACHE_FSL_OUT_Control=0),表示猝發訪問。

(5)重復步驟3和4用于緩存行中隨后的字。XCL交易

--數據緩存寫使用DXCL或者DXCL2協議,在一個單字寫時,緩存控制器執行下面的序列:

(1)如果DCACHE_FSL_OUT_Full=1則停止,直到變低;

(2)寫缺失的地址到DCACHE_FSL_OUT_Data,控制位為高(DCACHE_FSL_OUT_Control=1)表示寫訪問。地址總線的最高兩位(30:31)用來編碼字節或半字使能:0b00=字節0b01=字節1或者半字0,0x10=字節2和0x11=字節3或者半字1。選擇半字或者字節訪問基于步驟4中用于數據字的控制位。

(3)如果DCACHE_FSL_OUT_Full=1則停止,直到變低;XCL交易

--數據緩存寫4.寫數據被保存在DCACHE_FSL_OUT_Data中。對于字節和半字訪問,數據鏡像到字節通道。鏡像輸出的字節或者半字各自寫到所有的四個字節通道或者半字通道??刂莆粦摓榈停―CACHE_FSL_OUT_Control=0)用于字或者半字訪問,為高將字節訪問和猝發訪問分開。字和字節訪問由地址的LSB進行區分(0=字,1=半字)。調試接口

MicroBlaze的調試接口用來和Xilinx微處理調試(XilinxMicroprocessorDebug,MDM)的IP核。MDM由Xilinx處理器調試器(XilinxMicroprocessorDebuger,XMD)通過FPGA的JTAG端口控制。MDM能在同一時間控制多個MicroBlaze處理器。調試信號在DEBUG總線上分組。表4.9給出了MicroBlaze的調試信號。調試接口信號名稱描述VHDL類型方向Dbg_Clk來自MDM的JTAG時鐘std_logicinputDbg_TDI來自MDM的JTAGTDI信號std_logicinputDbg_TDO到MDM的JTAGTDO信號std_logicoutputDbg_Reg_En來自MDM的調試寄存器使能信號std_logicinputDbg_Shift來自MDM的JTAGBSCAN移位信號std_logicinputDbg_Capture來自MDM的JTAGBSCAN捕獲信號std_logicinputDbg_Update來自MDM的JTAGBSCAN更新信號std_logicinputDbg_Rst來自MDM的復位信號(高有效,至少維持一個時鐘周期)std_logicinput跟蹤接口

MicroBlaze核輸出大量的內部信號用于跟蹤。由于該接口非標準化,所以Xilinx推薦對這些信號不要使用定制邏輯,而是使用Xilinx提供的分析IP。跟蹤信號在TRACE總線上被分組。表4.10給出了MicroBlaze的跟蹤信號。跟蹤接口

--跟蹤信號信號名稱描述VHDL類型方向Trace_Valid_Instr跟蹤端口的有效指令std_logicoutputTrace_Instruction指令碼std_logic_vector(0to31)outputTrace_PC程序計數器std_logic_vector(0to31)outputTrace_Reg_Write寫寄存器文件指令std_logicoutputTrace_Reg_Addr目標寄存器地址std_logic_vector(0to4)outputTrace_MSR_Reg機器狀態寄存器std_logic_vector(0to4)outputTrace_PID_Reg進程標示寄存器std_logicoutputTrace_New_Reg_Value目標寄存器更新值std_logicoutputTrace_Exception_Taken指令引起采納異常std_logicoutputTrace_Exception_Kind異常類型std_logic_vector(0to31)outputTrace_Jump_Taken分支指令評估為真,例如:采納std_logic_vector(0to31)outputTrace_Delay_Slot指令時延遲隙的采納分支std_logic_vector(0to31)outputTrace_Data_Access數據側存儲器訪問有效std_logicoutput跟蹤接口

--跟蹤信號Trace_Data_Address數據側存儲器訪問地址std_logic_vector(0to31)outputTrace_Data_Write_Value數據側的寫訪問值std_logic_vector(0to31)outputTrace_Data_Byte_Enable數據側存儲器訪問字節使能std_logicoutputTrace_Data_Read數據側的存儲器訪問為讀操作std_logicoutputTrace_Data_Write數據側的存儲器訪問為寫操作std_logicoutputTrace_DCache_Req數據存儲器地址在數據緩存范圍內std_logicoutputTrace_DCache_Hit數據存儲器地址在數據緩存中std_logicoutputTrace_ICache_Req指令存儲器地址在指令緩存范圍內std_logicoutputTrace_ICache_Hit指令存儲器地址在指令緩存中std_logicoutputTrace_OF_PipeRun流水超前為譯碼階段std_logicoutputTrace_EX_pipeRun流水超前為執行階段std_logicoutputTrace_MEM_pipeRun流水超前為存儲器階段std_logicoutputTrace_MB_Halted調試導致流水線停止std_logicoutput跟蹤接口

--跟蹤異常類型Trace_Exception_Kind[0:4]描述00000FSL異常00001非對齊異常00010非法操作符異常00011指令總線異常00100數據總線異常00101除數為0異常00110FPU異常00111特權指令異常01010中斷01011外部非屏蔽斷點01100外部可屏蔽斷點10000數據存儲異常10001指令存儲異常10010數據TLB缺失異常10011指令TLB缺失異常編程接口

MicroBlaze應用二進制接口(ApplicationBinaryInterface,ABI)對于在匯編語言級開發軟件是非常重要的。MicroBlazeGNU編譯器允許下面所介紹的規約。由匯編語言程序員所編寫的代碼也遵循同樣的規約,該規約與編譯器產生的代碼兼容。編程接口

--堆棧規則表4.12給出了MicroBlaze的堆棧規則。堆棧幀的ABI規則定義了協議,該協議用來傳遞參數,保存非易失性存儲器的值和為函數內的本地變量分配空間。編程接口

--堆棧規則高地址為調用子例程的功能參數(Argn…Arg1)(可選的:對于任何一個由當前程序所調用程序的最多數目的參數要求)先前的堆棧指針鏈接寄存器(R15)被調者保存寄存器(R31..R19)(可選的:只有那些當前程序所使用的寄存器被保存)當前程序的本地變量(可選的:如果在程序中定義才出現)功能參數(Argn…Arg1)(可選的:對于任何一個由當前程序所調用程序的最多數量的參數要求)新堆棧指針鏈接寄存器低地址編程接口

--堆棧規則那些包含調用其它子例程的函數也稱為非葉結點函數。這些非葉結點函數為自己創建新的堆棧幀。當程序開始執行時,堆棧指針有最大值。當函數被調用,堆棧指針被減小。調用函數的堆棧指針的值比被調函數的堆棧指針的值要高。圖4.2給出一個調用的例子。該例子Fun1調用Fun2,Fun2調用Fun

溫馨提示

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

評論

0/150

提交評論