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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 本章詳細介紹了MicroBlaze軟核處理的接口,這些接口包括: (1) AXI4接口; (2) PLB接口; (3) LMB接口; (4) FSL接口; (5) XCL接口; (6) 調(diào)試接口和跟蹤接口。 這些接口提供了軟核處理器與片上、片外外設(shè)和存儲器的靈活接口。此外,接口也提供了點對點的或者共享總線的數(shù)據(jù)傳輸方式。 MicroBlaze處理器結(jié)構(gòu)采用哈弗結(jié)構(gòu),即為數(shù)據(jù)和指令訪問提供了獨立的總線接口單元。MicroBlaze處理器支持下面四種存儲器接口: 本地存儲器總線(LMB); AMBA AXI4接口(AXI4); IBM處理器本地總線(PLB); Xilinx的CacheLink(

2、XCL)接口; LMB提供了以單時鐘周期訪問雙端口存儲器的能力。 AXI4和PLB提供了片上和片外外設(shè)和存儲器的接口。CacheLink接口和外部存儲器控制一起用作專門用途。MicroBlaze處理器支持最多16個簡單快速鏈接FSL或者AXI4-Stream接口端口,每一個端口有主和從接口。MicroBlaze處理器能配置成下面的總線接口: ARMA AXI4接口; 32位版本的PLBV4.6接口; LMB提供簡單同步協(xié)議用于高效的BRAM傳輸; FSL或AXI4-Stream提供快速無需仲裁的流通信機制; XCL提供在緩存和外部存儲器控制器之間的快速從設(shè)備仲裁的流接口; 調(diào)試接口和處理器調(diào)試

3、模塊(MDM)一起使用; 跟蹤接口用于性能分析; MicroBlaze AXI4存儲器映射的外設(shè)接口(M_AXI_DP,M_AXI_IP)實現(xiàn)32位的主接口。這些接口只發(fā)出單個地址,所有的交易按順序完成。 (1) 指令外設(shè)接口只執(zhí)行單字讀訪問,總是設(shè)置使用AXI4-Lite子 集; (2) 數(shù)據(jù)外設(shè)接口執(zhí)行單字訪問,默認設(shè)置使用AXI4-Lite子集, 當使能用于LWX和SWX的互斥訪問時,使用AXI4。通過設(shè) 置合適的字節(jié)選通,可以執(zhí)行半字和字節(jié)寫操作; AXI4存儲器映射的緩存接口(M_AXI_DC,M_AXI_IC)可以實現(xiàn)32位、128位或者256位的主設(shè)備(取決于緩存行的長度和數(shù)據(jù)寬

4、度參數(shù))。 (1) 作為32位主設(shè)備,指令緩存接口執(zhí)行4字或8字(取決于緩 存行長度)猝發(fā)讀訪問。作為128位或256位主設(shè)備,只執(zhí) 行單個讀訪問。當使能流緩存時,這個接口能提供最多2個 地址或者8個地址。 (2) 作為32位主設(shè)備,數(shù)據(jù)緩存接口執(zhí)行單字訪問或4/8字猝發(fā) 訪問(取決于緩存行長度)。當使用寫通過緩存時,不執(zhí) 行寫猝發(fā)訪問。通過設(shè)置合適的字節(jié)選通,可以執(zhí)行字、 半字和字節(jié)寫操作。當讀時,接口最多發(fā)出2個地址,而當 寫時,最多發(fā)出32個地址。使能互斥訪問用于LWX和SWX 指令。 M_AXI_DP、M_AXI_IP、M_AXI_DC和M_AXI_IC接口信號功能一樣,表4.1給出了

5、M_AXI_DP端口的信號及功能。更具體的功能可以參看第二章的內(nèi)容。信號信號接口接口I/O描述描述M_AXI_DP_AWIDM_AXI_DPO主設(shè)備寫地址主設(shè)備寫地址IDM_AXI_DP_AWADDRM_AXI_DPO主設(shè)備寫地址主設(shè)備寫地址M_AXI_DP_AWLENM_AXI_DPO主設(shè)備猝發(fā)長度主設(shè)備猝發(fā)長度M_AXI_DP_AWSIZEM_AXI_DPO主設(shè)備猝發(fā)大小主設(shè)備猝發(fā)大小M_AXI_DP_AWBURSTM_AXI_DPO主設(shè)備猝發(fā)類型主設(shè)備猝發(fā)類型M_AXI_DP_AWLOCKM_AXI_DPO主設(shè)備鎖類型主設(shè)備鎖類型M_AXI_DP_AWCACHEM_AXI_DPO主設(shè)備緩

6、存類型主設(shè)備緩存類型M_AXI_DP_AWPROTM_AXI_DPO主設(shè)備保護類型主設(shè)備保護類型M_AXI_DP_AWQOSM_AXI_DPO主設(shè)備服務(wù)質(zhì)量主設(shè)備服務(wù)質(zhì)量M_AXI_DP_AWVAILDM_AXI_DPO主設(shè)備寫地址有效主設(shè)備寫地址有效M_AXI_DP_AWREADYM_AXI_DPI從設(shè)備寫地址準備從設(shè)備寫地址準備M_AXI_DP_WDATAM_AXI_DPO主設(shè)備寫數(shù)據(jù)主設(shè)備寫數(shù)據(jù)M_AXI_DP_WSTRBM_AXI_DPO主設(shè)備寫選通主設(shè)備寫選通M_AXI_DP_WLASTM_AXI_DPO主設(shè)備寫最后主設(shè)備寫最后M_AXI_DP_WVALIDM_AXI_DPO主設(shè)備寫

7、有效主設(shè)備寫有效M_AXI_DP_WREADYM_AXI_DPI從設(shè)備寫準備從設(shè)備寫準備M_AXI_DP_BIDM_AXI_DPI從設(shè)備響應(yīng)從設(shè)備響應(yīng)IDM_AXI_DP_BRESPM_AXI_DPI從設(shè)備寫響應(yīng)從設(shè)備寫響應(yīng)M_AXI_DP_BVALIDM_AXI_DPI從設(shè)備寫響應(yīng)有效從設(shè)備寫響應(yīng)有效M_AXI_DP_BREADYM_AXI_DPO主設(shè)備響應(yīng)準備主設(shè)備響應(yīng)準備M_AXI_DP_ARIDM_AXI_DPO主設(shè)備讀地址主設(shè)備讀地址IDM_AXI_DP_ARADDRM_AXI_DPO主設(shè)備讀地址主設(shè)備讀地址M_AXI_DP_ARLENM_AXI_DPO主設(shè)備猝發(fā)長度主設(shè)備猝發(fā)長度M

8、_AXI_DP_ARSIZEM_AXI_DPO主設(shè)備猝發(fā)大小主設(shè)備猝發(fā)大小M_AXI_DP_ARBURSTM_AXI_DPO主設(shè)備猝發(fā)類型主設(shè)備猝發(fā)類型M_AXI_DP_ARLOCKM_AXI_DPO主設(shè)備鎖類型主設(shè)備鎖類型M_AXI_DP_ARCACHEM_AXI_DPO主設(shè)備緩存類型主設(shè)備緩存類型M_AXI_DP_ARPORTM_AXI_DPO主設(shè)備保護類型主設(shè)備保護類型M_AXI_DP_ARQOSM_AXI_DPO主設(shè)備服務(wù)質(zhì)量主設(shè)備服務(wù)質(zhì)量M_AXI_DP_ARVAILDM_AXI_DPO主設(shè)備讀地址有效主設(shè)備讀地址有效M_AXI_DP_ARREADYM_AXI_DPI從設(shè)備讀地址準備

9、從設(shè)備讀地址準備M_AXI_DP_RIDM_AXI_DPI從設(shè)備讀從設(shè)備讀ID標志標志M_AXI_DP_RDATAM_AXI_DPI從設(shè)備讀數(shù)據(jù)從設(shè)備讀數(shù)據(jù)M_AXI_DP_RRESPM_AXI_DPI從設(shè)備讀響應(yīng)從設(shè)備讀響應(yīng)M_AXI_DP_RLASTM_AXI_DPI從設(shè)備讀最后從設(shè)備讀最后M_AXI_DP_RVALIDM_AXI_DPI從設(shè)備讀有效從設(shè)備讀有效M_AXI_DP_RREADYM_AXI_DPO主設(shè)備讀準備主設(shè)備讀準備 MicroBlaze AXI4-Stream接口 (M0_AXIS.M15_AXIS, S0_AXIS.S15_AXIS) 實現(xiàn)32位主設(shè)備或從設(shè)備。 Mn_

10、AXIS_TLAST,Sn_AXIS_TLAST信號直接對應(yīng)于同等的FSLn_M_Control和FSLn_S_Control信號。 1寫操作 MicroBlaze通過使用put或putd指令執(zhí)行寫流接口操作。寫操作將寄存器的內(nèi)容傳到輸出AXI4接口。對于阻塞模式寫(put或cput指令)在單個時鐘周期內(nèi)完成傳輸,且接口不忙。如果接口忙,處理器停止,一直到其可用為止。非阻塞指令(前綴n),即使在忙時,也總是在單周期內(nèi)完成傳輸。如果接口忙,禁止寫并且設(shè)置MSR內(nèi)的進位位。 2讀操作 MicroBlaze通過使用get或getd指令執(zhí)行讀流接口操作。讀操作將輸入AXI4接口內(nèi)容傳輸?shù)郊拇嫫?。對于?/p>

11、塞模式讀在兩個時鐘周期內(nèi)完成傳輸,且數(shù)據(jù)可用。如果數(shù)據(jù)不可用時,處理器在這條指令上停下來,一直到其可用為止。在非阻塞模式下(前綴n),不管數(shù)據(jù)是否可用,也總是在一個或者兩個時鐘周期內(nèi)完成傳輸。如果數(shù)據(jù)不可用,不發(fā)生數(shù)據(jù)傳輸,并且設(shè)置MSR內(nèi)的進位位。 表4.2給出了M_AXI_Stream端口的信號及功能。更具體的功能可以參看第二章的內(nèi)容信號信號接口接口I/O描述描述Mn_AXIS_TLASTM0_AXIS.M15_AXISO主設(shè)備接口輸出主設(shè)備接口輸出AXI4通道寫最后通道寫最后Mn_AXIS_TDATAM0_AXIS.M15_AXISO主設(shè)備接口輸出主設(shè)備接口輸出AXI4通道寫數(shù)據(jù)通道寫數(shù)

12、據(jù)Mn_AXIS_TVALIDM0_AXIS.M15_AXISO主設(shè)備接口輸出主設(shè)備接口輸出AXI4通道寫有效通道寫有效Mn_AXIS_TREADYM0_AXIS.M15_AXISI主設(shè)備接口輸入主設(shè)備接口輸入AXI4通道寫準備通道寫準備Sn_AXIS_TLASTM0_AXIS.M15_AXISI從設(shè)備接口輸入從設(shè)備接口輸入AXI4通道寫最后通道寫最后Sn_AXIS_TDATAM0_AXIS.M15_AXISI從設(shè)備接口輸入從設(shè)備接口輸入AXI4通道寫數(shù)據(jù)通道寫數(shù)據(jù)Sn_AXIS_TVALIDM0_AXIS.M15_AXISI從設(shè)備接口輸入從設(shè)備接口輸入AXI4通道寫有效通道寫有效Sn_AXI

13、S_TREADYM0_AXIS.M15_AXISO從設(shè)備接口輸出從設(shè)備接口輸出AXI4通道寫準備通道寫準備 MicroBlaze處理的PLB接口用于字節(jié)使能的32位主設(shè)備。表4.3給出了IPLB總線接口信號定義。表4.4給出了DPLB總線接口定義。更詳細的可以參考PLBV46互連和接口資料。信號信號接口接口I/O功能(指令側(cè)功能(指令側(cè)PLB接口簡稱接口簡稱IPLB) IPLB_M_ABORTIPLBOIPLB放棄總線請求指示放棄總線請求指示IPLB_M_ABUSIPLBOIPLB地址總線地址總線IPLB_M_UABUSIPLBOIPLB高部分地址總線高部分地址總線IPLB_M_BEIPLBO

14、IPLB字節(jié)使能字節(jié)使能IPLB_M_busLockIPLBOIPLB總線鎖定總線鎖定IPLB_M_lockErrIPLBOIPLB總線鎖定錯誤指示總線鎖定錯誤指示IPLB_M_MsizeIPLBOIPLB主設(shè)備數(shù)據(jù)總線大小主設(shè)備數(shù)據(jù)總線大小IPLB_M_priorityIPLBOIPLB請求優(yōu)先級請求優(yōu)先級IPLB_M_rdBurstIPLBOIPLB猝發(fā)式讀傳輸指示猝發(fā)式讀傳輸指示IPLB_M_requestIPLBOIPLB總線請求總線請求IPLB_M_RNWIPLBOIPLB讀讀/非寫非寫IPLB_M_sizeIPLBOIPLB傳輸大小傳輸大小IPLB_M_TAttributeIPLB

15、OIPLB傳輸屬性總線傳輸屬性總線IPLB_M_typeIPLBOIPLB傳輸類型傳輸類型IPLB_M_wrBurstIPLBOIPLB猝發(fā)式寫傳輸指示猝發(fā)式寫傳輸指示IPLB_M_wrDBusIPLBOIPLB寫數(shù)據(jù)總線寫數(shù)據(jù)總線IPLB_MbusyIPLBIIPLB從設(shè)備忙指示從設(shè)備忙指示IPLB_MRdErrIPLBIIPLB從設(shè)備讀錯誤指示從設(shè)備讀錯誤指示IPLB_MWrErrIPLBIIPLB從設(shè)備寫錯誤指示從設(shè)備寫錯誤指示IPLB_MIRQIPLBIIPLB從設(shè)備中斷指示從設(shè)備中斷指示IPLB_MWRBTermIPLBIIPLB終止寫猝發(fā)指示終止寫猝發(fā)指示IPLB_MWrDAckI

16、PLBIIPLB寫數(shù)據(jù)應(yīng)答寫數(shù)據(jù)應(yīng)答IPLB_MAddrAckIPLBIIPLB地址應(yīng)答地址應(yīng)答IPLB_MRdBTermIPLBIIPLB終止讀猝發(fā)指示終止讀猝發(fā)指示IPLB_MRdDAckIPLBIIPLB讀數(shù)據(jù)應(yīng)答讀數(shù)據(jù)應(yīng)答IPLB_MRdDBusIPLBIIPLB讀數(shù)據(jù)總線讀數(shù)據(jù)總線IPLB_MRdEdAddrIPLBIIPLB讀字總線讀字總線IPLB_MRearbitrateIPLBIIPLB再總裁指示再總裁指示IPLB_MSSizeIPLBIIPLB從設(shè)備數(shù)據(jù)總線大小從設(shè)備數(shù)據(jù)總線大小IPLB_MTimeoutIPLBIIPLB總線超時總線超時信號信號接口接口I/O功能(數(shù)據(jù)側(cè)功能

17、(數(shù)據(jù)側(cè)PLB接口簡稱接口簡稱DPLB) DPLB_M_ABORTDPLBODPLB放棄總線請求指示放棄總線請求指示DPLB_M_ABUSDPLBODPLB地址總線地址總線DPLB_M_UABUSDPLBODPLB高部分地址總線高部分地址總線DPLB_M_BEDPLBODPLB字節(jié)使能字節(jié)使能DPLB_M_busLockDPLBODPLB總線鎖定總線鎖定DPLB_M_lockErrDPLBODPLB總線鎖定錯誤指示總線鎖定錯誤指示DPLB_M_MsizeDPLBODPLB主設(shè)備數(shù)據(jù)總線大小主設(shè)備數(shù)據(jù)總線大小DPLB_M_priorityDPLBODPLB請求優(yōu)先級請求優(yōu)先級DPLB_M_rdB

18、urstDPLBODPLB猝發(fā)式讀傳輸指示猝發(fā)式讀傳輸指示DPLB_M_requestDPLBODPLB總線請求總線請求DPLB_M_RNWDPLBODPLB讀讀/非寫非寫DPLB_M_sizeDPLBODPLB傳輸大小傳輸大小DPLB_M_TAttributeDPLBODPLB傳輸屬性總線傳輸屬性總線DPLB_M_typeDPLBODPLB傳輸類型傳輸類型DPLB_M_wrBurstDPLBODPLB猝發(fā)式寫傳輸指示猝發(fā)式寫傳輸指示DPLB_M_wrDBusIPLBODPLB寫數(shù)據(jù)總線寫數(shù)據(jù)總線DPLB_MbusyDPLBIDPLB從設(shè)備忙指示從設(shè)備忙指示 DPLB_MRdErrDPLBID

19、PLB從設(shè)備讀錯誤指示從設(shè)備讀錯誤指示DPLB_MWrErrDPLBIDPLB從設(shè)備寫錯誤指示從設(shè)備寫錯誤指示DPLB_MIRQDPLBIDPLB從設(shè)備中斷指示從設(shè)備中斷指示DPLB_MWRBTermDPLBIDPLB終止寫猝發(fā)指示終止寫猝發(fā)指示DPLB_MWrDAckDPLBIDPLB寫數(shù)據(jù)應(yīng)答寫數(shù)據(jù)應(yīng)答DPLB_MAddrAckDPLBIDPLB地址應(yīng)答地址應(yīng)答DPLB_MRdBTermDPLBIDPLB終止讀猝發(fā)指示終止讀猝發(fā)指示DPLB_MRdDAckDPLBIDPLB讀數(shù)據(jù)應(yīng)答讀數(shù)據(jù)應(yīng)答DPLB_MRdDBusDPLBIDPLB讀數(shù)據(jù)總線讀數(shù)據(jù)總線DPLB_MRdEdAddrDPLB

20、IDPLB讀字總線讀字總線DPLB_MRearbitrateDPLBIDPLB再總裁指示再總裁指示DPLB_MSSizeDPLBIDPLB從設(shè)備數(shù)據(jù)總線大小從設(shè)備數(shù)據(jù)總線大小DPLB_MTimeoutDPLBIDPLB總線超時總線超時 LMB是同步總線,主要用于訪問片上塊RAM資源。LMB有最少的控制總線數(shù)目,使用簡單協(xié)議保證以單周期訪問本地塊RAM資源。表4.5給出了LMB接口信號及定義。所有信號都是高有效。信號信號數(shù)據(jù)接口數(shù)據(jù)接口指令接口指令接口類型類型功能功能Addr0:31Data_Addr0:31Insr_Addr0:31O地址總線地址總線Byte_Enable0:31Byte_En

21、able0:3not usedO字節(jié)使能字節(jié)使能Data_Write0:31Data_Write0:31not usedO寫數(shù)據(jù)總線寫數(shù)據(jù)總線ASD_ASI_ASO地址選通地址選通Read_StrobeRead_StrobeIFetchO讀進行讀進行Write_StrobeWrite_Strobenot usedO寫進行寫進行Data_Read0:31Data_Read0:31Insr0:31I讀數(shù)據(jù)總線讀數(shù)據(jù)總線ReadyDReadyIReadyI下次傳輸準備下次傳輸準備WaitDWaitIWaitI等待,直到準備被接受的傳輸?shù)却?,直到準備被接受的傳輸CEDCEICEI可更正的錯誤可更正的錯

22、誤UE不可更正的錯誤不可更正的錯誤ClkClkClkI總線時鐘總線時鐘 FSL總線在輸出FIFO和輸入FIFO之間提供點對點的通信通道,更詳細的信息參考IP核參考資料。表4.6給出了主FSL信號接口,表4.7給出了從FSL接口信號。 信號信號功能功能VHDL類型類型方向方向FSLn_M_Clk時鐘時鐘std_logicinputFSLn_M_Write寫使能信號,表示數(shù)據(jù)正被寫到輸出寫使能信號,表示數(shù)據(jù)正被寫到輸出FSLstd_logicoutputFSLn_M_Data數(shù)據(jù)寫到輸出數(shù)據(jù)寫到輸出FSLstd_logic_vectoroutputFSLn_M_Control控制位寫到輸出控制位寫

23、到輸出FSLstd_logicoutputFSLn_M_Full當設(shè)置時,表示輸出當設(shè)置時,表示輸出FSL 的的FIFO滿滿std_logicinput信號信號功能功能VHDL類型類型方向方向FSLn_S_Clk時鐘時鐘std_logicinputFSLn_S_Read讀響應(yīng)信號表示,數(shù)據(jù)已經(jīng)從輸入讀響應(yīng)信號表示,數(shù)據(jù)已經(jīng)從輸入FSL讀出讀出std_logicoutputFSLn_S_Data在輸入在輸入FSL的頂部的現(xiàn)在可用的數(shù)據(jù)的頂部的現(xiàn)在可用的數(shù)據(jù)std_logic_vectorinputFSLn_S_Control控制比特,輸入控制比特,輸入FSL頂部的數(shù)據(jù)現(xiàn)在可用頂部的數(shù)據(jù)現(xiàn)在可用s

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

25、oBlaze使用get或getd指令,執(zhí)行讀FSL的操作。讀FSL操作將輸入FSL總線的內(nèi)容傳輸?shù)酵ㄓ眉拇嫫髦?。當FSL的FIFO非滿狀態(tài)時,在阻塞傳輸模式下只需要2個時鐘周期就能完成數(shù)據(jù)讀傳輸。如果FSL的FIFO滿時,處理器停下來等待,直到FSL的滿標志變成低。非阻塞傳輸指令(前綴n)在2個時鐘周期下完成傳輸(即使FSL為空)。如果FSL為空時,不產(chǎn)生讀數(shù)據(jù)傳輸,且MSR的進位標志被置位。 3. 直接FSL連接 直接FSL連接用來去避免需要FSL總線。在沒有緩沖的情況下,例如兩個連接的IP核。 在直接FSL連接下不使用FSL的FIFO。無FIFO可以減少延遲和要求實現(xiàn)的資源。 MicroB

26、laze處理器的每一個FSL接口能使用FSL直接連接或FSL總線。 MicroBlaze的DWFSL接口是直接FSL連接的初始源,它只能連接到DWFSL目標。DWFSL的初始源和目標有同樣的信號名(與MFSL信號一樣)。MicroBlaze使用DWFSL接口通過put或putd命令寫數(shù)據(jù)到目標。 MicroBlaze的DRFSL接口是一個FSL連接的目標,它只能連接到DRFSL的初始源。DRFSL的初始源和目標有同樣的信號名(與SFSL信號一樣)。MicroBlaze使用DRFSL接口通過get或getd命令從初始源讀數(shù)據(jù)。 Xilinx的CacheLink(XCL)接口就是使用直接FSL連接

27、實現(xiàn)的。 對外部存儲器的訪問來說,XCL接口是高性能的解決方案。XCL通過使用集成的FSL緩沖區(qū)直接和存儲器控制器連接,例如MPMC。這種方法有最低的延遲和最小數(shù)目的例化。圖4.1給出了使用集成FSL緩沖區(qū)的XCL連接原理圖。 存儲器控制器存儲器控制器FSLFSLMicroBlazeBEGIN microblaze . BUS_INTERFACE IXCL = myIXCL . ENDBEGIN mpmc . BUS_INTERFACE XCL0 = myIXCL.END圖圖4.1使用集成使用集成FSL緩沖區(qū)的緩沖區(qū)的XCL連接原理連接原理 當緩存使能時,XCL接口可以使用??梢栽谥噶顐?cè)或數(shù)據(jù)

28、側(cè)使用一個XCL緩存。 存儲器位置的訪問,由指令緩存參數(shù)C_ICACHE_ALWAYS_USED和數(shù)據(jù)緩存參數(shù)C_DCACHE_ALWAYS_USED來確定。如果值為1,表示緩存的存儲器范圍總是能通過XCL訪問。如果值為0,每當緩存被軟件禁止時,緩存的存儲器范圍只能通過AXI4或PLB訪問。 在XCL可訪問的范圍以外存儲器的位置可通過AXI,PLB或者LMB訪問。 XCL緩存控制器處理4-8個緩存行。同時由于XCL與PLB和AXI4分開,也減少了對非緩存存儲器訪問的沖突。表4.8給出了XCL的信號接口。信號信號描述描述VHDL類型類型方向方向ICACHE_FSL_IN_Clk時鐘輸出到指令側(cè)返

29、回讀數(shù)據(jù)的時鐘輸出到指令側(cè)返回讀數(shù)據(jù)的FSL std_logicoutputICACHE_FSL_IN_Read讀信號輸出到指令側(cè)返回讀數(shù)據(jù)的讀信號輸出到指令側(cè)返回讀數(shù)據(jù)的FSL std_logicoutputICACHE_FSL_IN_Data指令側(cè)返回指令側(cè)返回FSL讀數(shù)據(jù)讀數(shù)據(jù)std_logic_vector(0:31)inputICACHE_FSL_IN_Control指令側(cè)返回指令側(cè)返回FSL讀數(shù)據(jù)的控制位,保留。讀數(shù)據(jù)的控制位,保留。std_logicinputICACHE_FSL_IN_Exists更多的數(shù)據(jù)存在指令側(cè)的返回更多的數(shù)據(jù)存在指令側(cè)的返回FSLstd_logicinp

30、utICACHE_FSL_OUT_Clk時鐘輸出到指令側(cè)的讀訪問時鐘輸出到指令側(cè)的讀訪問FSLstd_logicoutputICACHE_FSL_OUT_Write寫新的緩存缺失訪問請求到指令側(cè)的讀訪問寫新的緩存缺失訪問請求到指令側(cè)的讀訪問FSLstd_logicoutputICACHE_FSL_OUT_Data緩存缺失訪問到指令側(cè)的讀訪問緩存缺失訪問到指令側(cè)的讀訪問FSLstd_logic_vector(0:31)outputICACHE_FSL_OUT_ControlFSL控制位到指令側(cè)的讀訪問控制位到指令側(cè)的讀訪問FSLstd_logicoutputICACHE_FSL_OUT_Full

31、FSL訪問緩沖為指令側(cè)的讀訪問滿。訪問緩沖為指令側(cè)的讀訪問滿。std_logicinputDCACHE_FSL_IN_CLK時鐘輸出到數(shù)據(jù)側(cè)返回讀數(shù)據(jù)的時鐘輸出到數(shù)據(jù)側(cè)返回讀數(shù)據(jù)的FSLstd_logicoutputDCACHE_FSL_IN_Read讀信號到數(shù)據(jù)側(cè)返回讀數(shù)據(jù)的讀信號到數(shù)據(jù)側(cè)返回讀數(shù)據(jù)的FSLstd_logicoutputDCACHE_FSL_IN_Data讀數(shù)據(jù)從數(shù)據(jù)側(cè)返回讀數(shù)據(jù)的讀數(shù)據(jù)從數(shù)據(jù)側(cè)返回讀數(shù)據(jù)的FSLstd_logic_vector(0:31)inputDCACHE_FSL_IN_ControlFSL控制位從數(shù)據(jù)側(cè)返回數(shù)據(jù)控制位從數(shù)據(jù)側(cè)返回數(shù)據(jù)FSLstd_log

32、icinputDCACHE_FSL_IN_Exists更多數(shù)據(jù)存在于數(shù)據(jù)側(cè)的返回更多數(shù)據(jù)存在于數(shù)據(jù)側(cè)的返回FSLstd_logicinputDCACHE_FSL_OUT_Clk時鐘輸出到數(shù)據(jù)側(cè)讀訪問時鐘輸出到數(shù)據(jù)側(cè)讀訪問FSLstd_logicoutputDCACHE_FSL_OU_Write寫新的緩存缺失訪問請求到數(shù)據(jù)側(cè)的讀訪寫新的緩存缺失訪問請求到數(shù)據(jù)側(cè)的讀訪問問FSLstd_logicoutputDCACHE_FSL_OUT_Data緩存缺失訪問(讀地址緩存缺失訪問(讀地址/寫地址寫地址+寫數(shù)據(jù)寫數(shù)據(jù)+字字節(jié)寫使能)到數(shù)據(jù)側(cè)讀訪問節(jié)寫使能)到數(shù)據(jù)側(cè)讀訪問FSLstd_logic_vect

33、or(0:31)outputDCACHE_FSL_OUT_ControlFSL控制比特到數(shù)據(jù)側(cè)讀訪問控制比特到數(shù)據(jù)側(cè)讀訪問FSL。使用。使用地址比特地址比特30:31為讀為讀/寫和字節(jié)使能編碼。寫和字節(jié)使能編碼。std_logicoutputDCACHE_FSL_OUT_Full用于數(shù)據(jù)側(cè)讀訪問的用于數(shù)據(jù)側(cè)讀訪問的FSL訪問緩沖區(qū)為滿訪問緩沖區(qū)為滿std_logicinput 所有單獨的CacheLink訪問遵循基于FSL FIFO的交易協(xié)議,主要包含以下幾點: (1) FSL的數(shù)據(jù)和控制信號上的訪問信息被編碼(例如: DCACHE_FSL_OUT_Data,DCACHE_FSL_OUT_Co

34、ntrol, ICACHE_FSL_IN_Data和ICACHE_FSL_IN _Control)。 (2) 通過拉高寫使能信號(DCACHE_FSL_OUT_Write),信息 被發(fā)送(保存)。 (3) 如果來自接收方的滿信號無效 (DCACHE_FSL_OUT_FULL=0),則發(fā)送方只允許寫。指 令緩存控制器不使用滿信號標志。 (4) 使用ICACHE_FSL_IN_Read和DCACHE_FSL_IN_Read 取決于所選擇的接口協(xié)議: 使用IXCL和DXCL協(xié)議,通過拉高讀信號信息被接收(加載)。該信號為低,除非當發(fā)送者示意有新數(shù)據(jù)存在。 使用IXCL2和DXCL2協(xié)議,拉低讀信號表

35、示接收方不能接收新的數(shù)據(jù)。當讀信號為高時,新數(shù)據(jù)是只讀的,發(fā)送者示意有新數(shù)據(jù)存在。 (5) 只要發(fā)送方示意有新數(shù)據(jù)存在(例如 ICACHE_FSL_IN_Exists=1),接收方只允許讀。 Xilinx的CacheLink解決方案中,每個緩存控制器使用一個流入(從)和流出(主)FSL。流出FSL用于發(fā)送訪問請求,而流入FSL用于接收請求的緩存行。FSL的數(shù)據(jù)和控制信號上,XCL也使用交易信息的特定編碼。 在XCL協(xié)議中,用于讀操作的緩存行為4/8個字長。取決于所選擇的接口協(xié)議,使用第一個關(guān)鍵字(Critical word first)或者線性順序(in linear order),取出每個緩

36、存行。 (1) IXCL和DXCL協(xié)議使用第一個關(guān)鍵字協(xié)議(C_ICACHE_INTERFACE=0或者C_DCACHE_INTERFACE=0)。每個緩存行希望由第一個關(guān)鍵字開始(即,如果訪問地址0 x348缺失4個字的緩存行,則返回的緩存行應(yīng)該是下面的地址序列: 0 x348,0 x34c,0 x340,0 x344)。 緩存控制器發(fā)送第一個字到執(zhí)行單元,同時把它存在緩存存儲器中。這樣使得只要第一個字返回,就可以繼續(xù)執(zhí)行。只要接收到這些字,緩存控制器使用剩余的3或7個字填充緩存行。 (2) 線性取使用IXCL2和DXCL2協(xié)議,(C_ICACHE_INTERFACE=1或者C_ DCACH

37、E_INTERFACE =1)。CacheLink的地址輸出對齊緩存行大小(即,如果訪問地址0 x348缺失4個字的緩存行,擇CacheLink的地址輸出是0 x340)。緩存控制器將數(shù)據(jù)保存在緩存控制器中,當可用時,將請求字提交給執(zhí)行單元。 當C_DACHE_USE_WRITEBACK設(shè)置為1時,使用猝發(fā)寫能保存整個緩存行和一個單字。每個緩存行總是以線性順序保存,CacheLink的地址輸出對齊緩存行大小。當C_DACHE_USE_WRITEBACK清零時,在Cache上的所有寫操作是單字操作。當使用寫回時C_DACHE_INTERFACE必須設(shè)置為1(因為猝發(fā)寫只能用DXCL2協(xié)議)。 當

38、讀缺失時,緩存控制器執(zhí)行下面的操作: (1)寫字對齊的或者緩存行對齊的缺失地址到 ICACHE_FSL_OUT_Data,控制位設(shè)置低, (ICACHE_FSL_OUT_Control=0)表示讀訪問; (2)等到ICACHE_FSL_IN_Exists為高,表示數(shù)據(jù)可用(等待 至少一個時鐘)。 使用IXCL協(xié)議(第一個關(guān)鍵字) (3)將ICACHE_FSL_IN_Data的內(nèi)容保存到緩存中; (4)將關(guān)鍵字提交到執(zhí)行單元,以便繼續(xù)執(zhí)行; (5)重復(fù)步驟3和4,處理在緩存行中剩余的3或7個字;使用 IXCL2協(xié)議(線性?。?(3)將ICACHE_FSL_IN_Data的內(nèi)容保存到緩存中; (4

39、)將相關(guān)的字提交到執(zhí)行單元,以便繼續(xù)執(zhí)行; (5)將剩余的字從ICACHE_FSL_IN_Data保存到緩存中; 當讀缺失時,緩存控制器執(zhí)行下面的操作: (1)如果DCACHE_FSL_OUT_Full=1則停止,直到變低; (2)寫字對齊的或者緩存行對齊的缺失地址到 DCACHE_FSL_OUT_Data,控制位置低, (DCACHE_FSL_OUT_Control=0)表示讀訪問; (3)等到DCACHE_FSL_IN_Exists為高,表示數(shù)據(jù)可用(等待 至少一個時鐘)。 使用DXCL協(xié)議(第一個關(guān)鍵字) (4)將DCACHE_FSL_IN_Data的內(nèi)容保存到緩存中; (5)將關(guān)鍵字提

40、交到執(zhí)行單元,以便繼續(xù)執(zhí)行; (6)重復(fù)步驟4和5,處理在緩存行中剩余的3或7個字; 使用DXCL2協(xié)議(線性?。?(4)將DCACHE_FSL_IN_Data的內(nèi)容保存到緩存中; (5)將請求字提交到執(zhí)行單元,以便繼續(xù)執(zhí)行; (6)將剩余的字從DCACHE_FSL_IN_Data保存到緩存中; 當C_DCACHE_INTERFACE設(shè)置為1時,CacheLink能執(zhí)行猝發(fā)寫或者單字寫。當設(shè)置C_DCACHE_USE_WRITEBACK=1時,使用猝發(fā)寫,整個緩存行有效。 當C_DCACHE_USE_WRITEBACK=0時,寫數(shù)據(jù)到數(shù)據(jù)緩存總是完全寫入。因此,不管在緩存中命中還是缺失,在Ca

41、cheLink中都有一個寫操作。 使用DXCL2協(xié)議,在一個猝發(fā)緩存行寫,緩存控制器執(zhí)行下面的序列: (1)如果DCACHE_FSL_OUT_Full=1則停止,直到變低; (2)寫緩存對齊的地址到DCACHE_FSL_OUT_Data,控制位 為高(DCACHE_FSL_OUT_ Control=1)表示寫訪問。地 址總線的最高兩位(30:31)用來編碼猝發(fā)訪問:0b10=猝 發(fā)。從一個單字寫中分出一個猝發(fā)訪問時,在步驟4中, 對于第一個數(shù)據(jù)字的控制位為低,用于猝發(fā)訪問 (DCACHE_FSL_OUT_Control=1)。 (3)如果DCACHE_FSL_OUT_Full=1則停止,直到變

42、低; (4)寫數(shù)據(jù)被保存在DCACHE_FSL_OUT_Data中??刂莆晃?低(DCACHE_FSL_OUT_ Control=0),表示猝發(fā)訪問。 (5)重復(fù)步驟3和4用于緩存行中隨后的字。 使用DXCL或者DXCL2協(xié)議,在一個單字寫時,緩存控制器執(zhí)行下面的序列: (1)如果DCACHE_FSL_OUT_Full=1則停止,直到變低; (2)寫缺失的地址到DCACHE_FSL_OUT_Data,控制位為高 (DCACHE_FSL_OUT_ Control=1)表示寫訪問。地址總線 的最高兩位(30:31)用來編碼字節(jié)或半字使能:0b00=字節(jié) 0b01=字節(jié)1或者半字0,0 x10=字節(jié)

43、2和0 x11=字節(jié)3或者半 字1。選擇半字或者字節(jié)訪問基于步驟4中用于數(shù)據(jù)字的控 制位。 (3)如果DCACHE_FSL_OUT_Full=1則停止,直到變低; 4寫數(shù)據(jù)被保存在DCACHE_FSL_OUT_Data中。對于字節(jié)和半字訪問,數(shù)據(jù)鏡像到字節(jié)通道。鏡像輸出的字節(jié)或者半字各自寫到所有的四個字節(jié)通道或者半字通道。控制位應(yīng)該為低(DCACHE_FSL_OUT_Control=0)用于字或者半字訪問,為高將字節(jié)訪問和猝發(fā)訪問分開。字和字節(jié)訪問由地址的LSB進行區(qū)分(0=字,1=半字)。 MicroBlaze的調(diào)試接口用來和Xilinx微處理調(diào)試 (Xilinx Microprocesso

44、r Debug, MDM)的IP核。MDM由Xilinx處理器調(diào)試器(Xilinx Microprocessor Debuger,XMD) 通過FPGA的JTAG端口控制。MDM能在同一時間控制多個MicroBlaze處理器。調(diào)試信號在DEBUG總線上分組。表4.9給出了MicroBlaze的調(diào)試信號。信號名稱信號名稱描述描述VHDL類型類型方向方向Dbg_Clk來自來自MDM的的JTAG時鐘時鐘std_logicinputDbg_TDI來自來自MDM的的JTAG TDI信號信號std_logicinputDbg_TDO到到MDM的的JTAG TDO信號信號std_logicoutputDbg

45、_Reg_En來自來自MDM的調(diào)試寄存器使能信號的調(diào)試寄存器使能信號std_logicinputDbg_Shift來自來自MDM的的JTAG BSCAN 移位信號移位信號std_logicinputDbg_Capture來自來自MDM的的JTAG BSCAN捕獲信號捕獲信號std_logicinputDbg_Update來自來自MDM的的JTAG BSCAN更新信號更新信號std_logicinputDbg_Rst來自來自MDM的復(fù)位信號(高有效,至少的復(fù)位信號(高有效,至少維持一個時鐘周期)維持一個時鐘周期)std_logicinput MicroBlaze核輸出大量的內(nèi)部信號用于跟蹤。由于

46、該接口非標準化,所以Xilinx推薦對這些信號不要使用定制邏輯,而是使用Xilinx提供的分析IP。跟蹤信號在TRACE總線上被分組。表4.10給出了MicroBlaze的跟蹤信號。 信號名稱信號名稱描述描述VHDL類型類型方向方向Trace_Valid_Instr跟蹤端口的有效指令跟蹤端口的有效指令std_logicoutputTrace_Instruction指令碼指令碼std_logic_vector(0 to 31)outputTrace_PC程序計數(shù)器程序計數(shù)器std_logic_vector(0 to 31)outputTrace_Reg_Write寫寄存器文件指令寫寄存器文件指令

47、std_logicoutputTrace_Reg_Addr目標寄存器地址目標寄存器地址std_logic_vector(0 to 4)outputTrace_MSR_Reg機器狀態(tài)寄存器機器狀態(tài)寄存器std_logic_vector(0 to 4)outputTrace_PID_Reg進程標示寄存器進程標示寄存器std_logicoutputTrace_New_Reg_Value目標寄存器更新值目標寄存器更新值std_logicoutputTrace_Exception_Taken指令引起采納異常指令引起采納異常std_logicoutputTrace_Exception_Kind異常類型異常

48、類型std_logic_vector(0 to 31)outputTrace_Jump_Taken分支指令評估為真,例如:采納分支指令評估為真,例如:采納std_logic_vector(0 to 31)outputTrace_Delay_Slot指令時延遲隙的采納分支指令時延遲隙的采納分支std_logic_vector(0 to 31)outputTrace_Data_Access數(shù)據(jù)側(cè)存儲器訪問有效數(shù)據(jù)側(cè)存儲器訪問有效std_logicoutputTrace_Data_Address數(shù)據(jù)側(cè)存儲器訪問地址數(shù)據(jù)側(cè)存儲器訪問地址std_logic_vector(0 to 31)outputTr

49、ace_Data_Write_Value數(shù)據(jù)側(cè)的寫訪問值數(shù)據(jù)側(cè)的寫訪問值std_logic_vector(0 to 31) outputTrace_Data_Byte_Enable數(shù)據(jù)側(cè)存儲器訪問字節(jié)使能數(shù)據(jù)側(cè)存儲器訪問字節(jié)使能std_logicoutputTrace_Data_Read數(shù)據(jù)側(cè)的存儲器訪問為讀操作數(shù)據(jù)側(cè)的存儲器訪問為讀操作std_logicoutputTrace_Data_Write數(shù)據(jù)側(cè)的存儲器訪問為寫操作數(shù)據(jù)側(cè)的存儲器訪問為寫操作std_logicoutputTrace_DCache_Req數(shù)據(jù)存儲器地址在數(shù)據(jù)緩存范圍內(nèi)數(shù)據(jù)存儲器地址在數(shù)據(jù)緩存范圍內(nèi)std_logicout

50、putTrace_DCache_Hit數(shù)據(jù)存儲器地址在數(shù)據(jù)緩存中數(shù)據(jù)存儲器地址在數(shù)據(jù)緩存中std_logicoutputTrace_ICache_Req指令存儲器地址在指令緩存范圍內(nèi)指令存儲器地址在指令緩存范圍內(nèi)std_logicoutputTrace_ICache_Hit指令存儲器地址在指令緩存中指令存儲器地址在指令緩存中std_logicoutputTrace_OF_PipeRun流水超前為譯碼階段流水超前為譯碼階段std_logicoutputTrace_EX_pipeRun流水超前為執(zhí)行階段流水超前為執(zhí)行階段std_logicoutputTrace_MEM_pipeRun流水超前為存儲

51、器階段流水超前為存儲器階段std_logicoutputTrace_MB_Halted調(diào)試導(dǎo)致流水線停止調(diào)試導(dǎo)致流水線停止std_logicoutputTrace_Exception_Kind0:4描述描述00000FSL異常異常00001非對齊異常非對齊異常00010非法操作符異常非法操作符異常00011指令總線異常指令總線異常00100數(shù)據(jù)總線異常數(shù)據(jù)總線異常00101除數(shù)為除數(shù)為0異常異常00110FPU異常異常00111特權(quán)指令異常特權(quán)指令異常01010中斷中斷01011外部非屏蔽斷點外部非屏蔽斷點01100外部可屏蔽斷點外部可屏蔽斷點10000數(shù)據(jù)存儲異常數(shù)據(jù)存儲異常10001指令存

52、儲異常指令存儲異常10010數(shù)據(jù)數(shù)據(jù)TLB缺失異常缺失異常10011指令指令TLB缺失異常缺失異常 MicroBlaze應(yīng)用二進制接口(Application Binary Interface, ABI)對于在匯編語言級開發(fā)軟件是非常重要的。MicroBlaze GNU編譯器允許下面所介紹的規(guī)約。由匯編語言程序員所編寫的代碼也遵循同樣的規(guī)約,該規(guī)約與編譯器產(chǎn)生的代碼兼容。 表4.12給出了MicroBlaze的堆棧規(guī)則。堆棧幀的ABI規(guī)則定義了協(xié)議,該協(xié)議用來傳遞參數(shù),保存非易失性存儲器的值和為函數(shù)內(nèi)的本地變量分配空間。高地址高地址為調(diào)用子例程的功能參數(shù)(為調(diào)用子例程的功能參數(shù)(Arg nAr

53、g1)(可選的:對于任何一個由當前程序所調(diào)用程序的最多數(shù)目的參數(shù)要求可選的:對于任何一個由當前程序所調(diào)用程序的最多數(shù)目的參數(shù)要求)先前的堆棧指針先前的堆棧指針鏈接寄存器(鏈接寄存器(R15)被調(diào)者保存寄存器(被調(diào)者保存寄存器(R31.R19)(可選的:只有那些當前程序所使用的寄存器被保存可選的:只有那些當前程序所使用的寄存器被保存)當前程序的本地變量當前程序的本地變量(可選的:如果在程序中定義才出現(xiàn)可選的:如果在程序中定義才出現(xiàn))功能參數(shù)(功能參數(shù)(ArgnArg1)(可選的:對于任何一個由當前程序所調(diào)用程序的最多數(shù)量的參數(shù)要求可選的:對于任何一個由當前程序所調(diào)用程序的最多數(shù)量的參數(shù)要求)新堆棧指針新堆棧指針鏈

溫馨提示

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

評論

0/150

提交評論