




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
MicroBlaze軟核處理器接口何賓2012.02MicroBlaze軟核處理器接口本章詳細(xì)介紹了MicroBlaze軟核處理的接口,這些接口包括:(1)AXI4接口;(2)PLB接口;(3)LMB接口;(4)FSL接口;(5)XCL接口;
(6)調(diào)試接口和跟蹤接口。這些接口提供了軟核處理器與片上、片外外設(shè)和存儲器的靈活接口。此外,接口也提供了點(diǎn)對點(diǎn)的或者共享總線的數(shù)據(jù)傳輸方式。MicroBlaze接口概述
MicroBlaze處理器結(jié)構(gòu)采用哈弗結(jié)構(gòu),即為數(shù)據(jù)和指令訪問提供了獨(dú)立的總線接口單元。MicroBlaze處理器支持下面四種存儲器接口:本地存儲器總線(LMB);AMBAAXI4接口(AXI4);IBM處理器本地總線(PLB);Xilinx的CacheLink(XCL)接口;MicroBlaze軟核處理器接口LMB提供了以單時(shí)鐘周期訪問雙端口存儲器的能力。AXI4和PLB提供了片上和片外外設(shè)和存儲器的接口。CacheLink接口和外部存儲器控制一起用作專門用途。MicroBlaze處理器支持最多16個(gè)簡單快速鏈接FSL或者AXI4-Stream接口端口,每一個(gè)端口有主和從接口。MicroBlaze軟核處理器接口MicroBlaze處理器能配置成下面的總線接口:ARMAAXI4接口;32位版本的PLBV4.6接口;LMB提供簡單同步協(xié)議用于高效的BRAM傳輸;FSL或AXI4-Stream提供快速無需仲裁的流通信機(jī)制;XCL提供在緩存和外部存儲器控制器之間的快速從設(shè)備仲裁的流接口;調(diào)試接口和處理器調(diào)試模塊(MDM)一起使用;跟蹤接口用于性能分析;AXI4接口
--存儲器映射接口
MicroBlazeAXI4存儲器映射的外設(shè)接口(M_AXI_DP,M_AXI_IP)實(shí)現(xiàn)32位的主接口。這些接口只發(fā)出單個(gè)地址,所有的交易按順序完成。
(1)指令外設(shè)接口只執(zhí)行單字讀訪問,總是設(shè)置使用AXI4-Lite子集;(2)數(shù)據(jù)外設(shè)接口執(zhí)行單字訪問,默認(rèn)設(shè)置使用AXI4-Lite子集,當(dāng)使能用于LWX和SWX的互斥訪問時(shí),使用AXI4。通過設(shè)置合適的字節(jié)選通,可以執(zhí)行半字和字節(jié)寫操作;AXI4接口
--存儲器映射接口AXI4存儲器映射的緩存接口(M_AXI_DC,M_AXI_IC)可以實(shí)現(xiàn)32位、128位或者256位的主設(shè)備(取決于緩存行的長度和數(shù)據(jù)寬度參數(shù))。
(1)作為32位主設(shè)備,指令緩存接口執(zhí)行4字或8字(取決于緩存行長度)猝發(fā)讀訪問。作為128位或256位主設(shè)備,只執(zhí)行單個(gè)讀訪問。當(dāng)使能流緩存時(shí),這個(gè)接口能提供最多2個(gè)地址或者8個(gè)地址。
(2)作為32位主設(shè)備,數(shù)據(jù)緩存接口執(zhí)行單字訪問或4/8字猝發(fā)訪問(取決于緩存行長度)。當(dāng)使用寫通過緩存時(shí),不執(zhí)行寫猝發(fā)訪問。通過設(shè)置合適的字節(jié)選通,可以執(zhí)行字、半字和字節(jié)寫操作。當(dāng)讀時(shí),接口最多發(fā)出2個(gè)地址,而當(dāng)寫時(shí),最多發(fā)出32個(gè)地址。使能互斥訪問用于LWX和SWX指令。AXI4接口
--存儲器映射接口M_AXI_DP、M_AXI_IP、M_AXI_DC和M_AXI_IC接口信號功能一樣,表4.1給出了M_AXI_DP端口的信號及功能。更具體的功能可以參看第二章的內(nèi)容。AXI4接口
--存儲器映射接口信號接口I/O描述M_AXI_DP_AWIDM_AXI_DPO主設(shè)備寫地址IDM_AXI_DP_AWADDRM_AXI_DPO主設(shè)備寫地址M_AXI_DP_AWLENM_AXI_DPO主設(shè)備猝發(fā)長度M_AXI_DP_AWSIZEM_AXI_DPO主設(shè)備猝發(fā)大小M_AXI_DP_AWBURSTM_AXI_DPO主設(shè)備猝發(fā)類型M_AXI_DP_AWLOCKM_AXI_DPO主設(shè)備鎖類型M_AXI_DP_AWCACHEM_AXI_DPO主設(shè)備緩存類型M_AXI_DP_AWPROTM_AXI_DPO主設(shè)備保護(hù)類型M_AXI_DP_AWQOSM_AXI_DPO主設(shè)備服務(wù)質(zhì)量M_AXI_DP_AWVAILDM_AXI_DPO主設(shè)備寫地址有效M_AXI_DP_AWREADYM_AXI_DPI從設(shè)備寫地址準(zhǔn)備M_AXI_DP_WDATAM_AXI_DPO主設(shè)備寫數(shù)據(jù)M_AXI_DP_WSTRBM_AXI_DPO主設(shè)備寫選通M_AXI_DP_WLASTM_AXI_DPO主設(shè)備寫最后M_AXI_DP_WVALIDM_AXI_DPO主設(shè)備寫有效AXI4接口
--存儲器映射接口M_AXI_DP_WREADYM_AXI_DPI從設(shè)備寫準(zhǔn)備M_AXI_DP_BIDM_AXI_DPI從設(shè)備響應(yīng)IDM_AXI_DP_BRESPM_AXI_DPI從設(shè)備寫響應(yīng)M_AXI_DP_BVALIDM_AXI_DPI從設(shè)備寫響應(yīng)有效M_AXI_DP_BREADYM_AXI_DPO主設(shè)備響應(yīng)準(zhǔn)備M_AXI_DP_ARIDM_AXI_DPO主設(shè)備讀地址IDM_AXI_DP_ARADDRM_AXI_DPO主設(shè)備讀地址M_AXI_DP_ARLENM_AXI_DPO主設(shè)備猝發(fā)長度M_AXI_DP_ARSIZEM_AXI_DPO主設(shè)備猝發(fā)大小M_AXI_DP_ARBURSTM_AXI_DPO主設(shè)備猝發(fā)類型M_AXI_DP_ARLOCKM_AXI_DPO主設(shè)備鎖類型M_AXI_DP_ARCACHEM_AXI_DPO主設(shè)備緩存類型M_AXI_DP_ARPORTM_AXI_DPO主設(shè)備保護(hù)類型M_AXI_DP_ARQOSM_AXI_DPO主設(shè)備服務(wù)質(zhì)量M_AXI_DP_ARVAILDM_AXI_DPO主設(shè)備讀地址有效AXI4接口
--存儲器映射接口M_AXI_DP_ARREADYM_AXI_DPI從設(shè)備讀地址準(zhǔn)備M_AXI_DP_RIDM_AXI_DPI從設(shè)備讀ID標(biāo)志M_AXI_DP_RDATAM_AXI_DPI從設(shè)備讀數(shù)據(jù)M_AXI_DP_RRESPM_AXI_DPI從設(shè)備讀響應(yīng)M_AXI_DP_RLASTM_AXI_DPI從設(shè)備讀最后M_AXI_DP_RVALIDM_AXI_DPI從設(shè)備讀有效M_AXI_DP_RREADYM_AXI_DPO主設(shè)備讀準(zhǔn)備AXI4接口
--流接口
MicroBlazeAXI4-Stream接口(M0_AXIS..M15_AXIS,S0_AXIS..S15_AXIS)實(shí)現(xiàn)32位主設(shè)備或從設(shè)備。
Mn_AXIS_TLAST,Sn_AXIS_TLAST信號直接對應(yīng)于同等的FSLn_M_Control和FSLn_S_Control信號。AXI4接口
--流接口1.寫操作
MicroBlaze通過使用put或putd指令執(zhí)行寫流接口操作。寫操作將寄存器的內(nèi)容傳到輸出AXI4接口。對于阻塞模式寫(put或cput指令)在單個(gè)時(shí)鐘周期內(nèi)完成傳輸,且接口不忙。如果接口忙,處理器停止,一直到其可用為止。非阻塞指令(前綴n),即使在忙時(shí),也總是在單周期內(nèi)完成傳輸。如果接口忙,禁止寫并且設(shè)置MSR內(nèi)的進(jìn)位位。AXI4接口
--流接口2.讀操作
MicroBlaze通過使用get或getd指令執(zhí)行讀流接口操作。讀操作將輸入AXI4接口內(nèi)容傳輸?shù)郊拇嫫?。對于阻塞模式讀在兩個(gè)時(shí)鐘周期內(nèi)完成傳輸,且數(shù)據(jù)可用。如果數(shù)據(jù)不可用時(shí),處理器在這條指令上停下來,一直到其可用為止。在非阻塞模式下(前綴n),不管數(shù)據(jù)是否可用,也總是在一個(gè)或者兩個(gè)時(shí)鐘周期內(nèi)完成傳輸。如果數(shù)據(jù)不可用,不發(fā)生數(shù)據(jù)傳輸,并且設(shè)置MSR內(nèi)的進(jìn)位位。表4.2給出了M_AXI_Stream端口的信號及功能。更具體的功能可以參看第二章的內(nèi)容AXI4接口
--流接口信號接口I/O描述Mn_AXIS_TLASTM0_AXIS..M15_AXISO主設(shè)備接口輸出AXI4通道寫最后Mn_AXIS_TDATAM0_AXIS..M15_AXISO主設(shè)備接口輸出AXI4通道寫數(shù)據(jù)Mn_AXIS_TVALIDM0_AXIS..M15_AXISO主設(shè)備接口輸出AXI4通道寫有效Mn_AXIS_TREADYM0_AXIS..M15_AXISI主設(shè)備接口輸入AXI4通道寫準(zhǔn)備Sn_AXIS_TLASTM0_AXIS..M15_AXISI從設(shè)備接口輸入AXI4通道寫最后Sn_AXIS_TDATAM0_AXIS..M15_AXISI從設(shè)備接口輸入AXI4通道寫數(shù)據(jù)Sn_AXIS_TVALIDM0_AXIS..M15_AXISI從設(shè)備接口輸入AXI4通道寫有效Sn_AXIS_TREADYM0_AXIS..M15_AXISO從設(shè)備接口輸出AXI4通道寫準(zhǔn)備PLB接口
MicroBlaze處理的PLB接口用于字節(jié)使能的32位主設(shè)備。表4.3給出了IPLB總線接口信號定義。表4.4給出了DPLB總線接口定義。更詳細(xì)的可以參考PLBV46互連和接口資料。PLB接口(IPLB)信號接口I/O功能(指令側(cè)PLB接口簡稱IPLB)IPLB_M_ABORTIPLBOIPLB放棄總線請求指示IPLB_M_ABUSIPLBOIPLB地址總線IPLB_M_UABUSIPLBOIPLB高部分地址總線IPLB_M_BEIPLBOIPLB字節(jié)使能IPLB_M_busLockIPLBOIPLB總線鎖定IPLB_M_lockErrIPLBOIPLB總線鎖定錯誤指示IPLB_M_MsizeIPLBOIPLB主設(shè)備數(shù)據(jù)總線大小IPLB_M_priorityIPLBOIPLB請求優(yōu)先級IPLB_M_rdBurstIPLBOIPLB猝發(fā)式讀傳輸指示IPLB_M_requestIPLBOIPLB總線請求IPLB_M_RNWIPLBOIPLB讀/非寫IPLB_M_sizeIPLBOIPLB傳輸大小IPLB_M_TAttributeIPLBOIPLB傳輸屬性總線IPLB_M_typeIPLBOIPLB傳輸類型IPLB_M_wrBurstIPLBOIPLB猝發(fā)式寫傳輸指示IPLB_M_wrDBusIPLBOIPLB寫數(shù)據(jù)總線PLB接口(IPLB)IPLB_MbusyIPLBIIPLB從設(shè)備忙指示IPLB_MRdErrIPLBIIPLB從設(shè)備讀錯誤指示IPLB_MWrErrIPLBIIPLB從設(shè)備寫錯誤指示IPLB_MIRQIPLBIIPLB從設(shè)備中斷指示IPLB_MWRBTermIPLBIIPLB終止寫猝發(fā)指示IPLB_MWrDAckIPLBIIPLB寫數(shù)據(jù)應(yīng)答IPLB_MAddrAckIPLBIIPLB地址應(yīng)答IPLB_MRdBTermIPLBIIPLB終止讀猝發(fā)指示IPLB_MRdDAckIPLBIIPLB讀數(shù)據(jù)應(yīng)答IPLB_MRdDBusIPLBIIPLB讀數(shù)據(jù)總線IPLB_MRdEdAddrIPLBIIPLB讀字總線IPLB_MRearbitrateIPLBIIPLB再總裁指示IPLB_MSSizeIPLBIIPLB從設(shè)備數(shù)據(jù)總線大小IPLB_MTimeoutIPLBIIPLB總線超時(shí)PLB接口(DPLB)信號接口I/O功能(數(shù)據(jù)側(cè)PLB接口簡稱DPLB)DPLB_M_ABORTDPLBODPLB放棄總線請求指示DPLB_M_ABUSDPLBODPLB地址總線DPLB_M_UABUSDPLBODPLB高部分地址總線DPLB_M_BEDPLBODPLB字節(jié)使能DPLB_M_busLockDPLBODPLB總線鎖定DPLB_M_lockErrDPLBODPLB總線鎖定錯誤指示DPLB_M_MsizeDPLBODPLB主設(shè)備數(shù)據(jù)總線大小DPLB_M_priorityDPLBODPLB請求優(yōu)先級DPLB_M_rdBurstDPLBODPLB猝發(fā)式讀傳輸指示DPLB_M_requestDPLBODPLB總線請求DPLB_M_RNWDPLBODPLB讀/非寫DPLB_M_sizeDPLBODPLB傳輸大小DPLB_M_TAttributeDPLBODPLB傳輸屬性總線DPLB_M_typeDPLBODPLB傳輸類型PLB接口(DPLB)DPLB_M_wrBurstDPLBODPLB猝發(fā)式寫傳輸指示DPLB_M_wrDBusIPLBODPLB寫數(shù)據(jù)總線DPLB_MbusyDPLBIDPLB從設(shè)備忙指示DPLB_MRdErrDPLBIDPLB從設(shè)備讀錯誤指示DPLB_MWrErrDPLBIDPLB從設(shè)備寫錯誤指示DPLB_MIRQDPLBIDPLB從設(shè)備中斷指示DPLB_MWRBTermDPLBIDPLB終止寫猝發(fā)指示DPLB_MWrDAckDPLBIDPLB寫數(shù)據(jù)應(yīng)答DPLB_MAddrAckDPLBIDPLB地址應(yīng)答DPLB_MRdBTermDPLBIDPLB終止讀猝發(fā)指示DPLB_MRdDAckDPLBIDPLB讀數(shù)據(jù)應(yīng)答DPLB_MRdDBusDPLBIDPLB讀數(shù)據(jù)總線DPLB_MRdEdAddrDPLBIDPLB讀字總線DPLB_MRearbitrateDPLBIDPLB再總裁指示DPLB_MSSizeDPLBIDPLB從設(shè)備數(shù)據(jù)總線大小DPLB_MTimeoutDPLBIDPLB總線超時(shí)LMB接口
LMB是同步總線,主要用于訪問片上塊RAM資源。LMB有最少的控制總線數(shù)目,使用簡單協(xié)議保證以單周期訪問本地塊RAM資源。表4.5給出了LMB接口信號及定義。所有信號都是高有效。LMB接口信號數(shù)據(jù)接口指令接口類型功能Addr[0:31]Data_Addr[0:31]Insr_Addr[0:31]O地址總線Byte_Enable[0:31]Byte_Enable[0:3]notusedO字節(jié)使能Data_Write[0:31]Data_Write[0:31]notusedO寫數(shù)據(jù)總線ASD_ASI_ASO地址選通Read_StrobeRead_StrobeIFetchO讀進(jìn)行Write_StrobeWrite_StrobenotusedO寫進(jìn)行Data_Read[0:31]Data_Read[0:31]Insr[0:31]I讀數(shù)據(jù)總線ReadyDReadyIReadyI下次傳輸準(zhǔn)備WaitDWaitIWaitI等待,直到準(zhǔn)備被接受的傳輸CEDCEICEI可更正的錯誤UE不可更正的錯誤ClkClkClkI總線時(shí)鐘FSL接口FSL總線在輸出FIFO和輸入FIFO之間提供點(diǎn)對點(diǎn)的通信通道,更詳細(xì)的信息參考IP核參考資料。表4.6給出了主FSL信號接口,表4.7給出了從FSL接口信號。FSL接口(MFSL)信號功能VHDL類型方向FSLn_M_Clk時(shí)鐘std_logicinputFSLn_M_Write寫使能信號,表示數(shù)據(jù)正被寫到輸出FSLstd_logicoutputFSLn_M_Data數(shù)據(jù)寫到輸出FSLstd_logic_vectoroutputFSLn_M_Control控制位寫到輸出FSLstd_logicoutputFSLn_M_Full當(dāng)設(shè)置時(shí),表示輸出FSL的FIFO滿std_logicinputFSL接口(SFSL)信號功能VHDL類型方向FSLn_S_Clk時(shí)鐘std_logicinputFSLn_S_Read讀響應(yīng)信號表示,數(shù)據(jù)已經(jīng)從輸入FSL讀出std_logicoutputFSLn_S_Data在輸入FSL的頂部的現(xiàn)在可用的數(shù)據(jù)std_logic_vectorinputFSLn_S_Control控制比特,輸入FSL頂部的數(shù)據(jù)現(xiàn)在可用std_logicinputFSLn_S_Exists指示標(biāo)志,表明在輸入FSL中存在數(shù)據(jù)std_logicinputFSL接口1.FSL總線寫操作
MicroBlaze使用put或putd指令,執(zhí)行寫FSL的操作。寫FSL操作將寄存器的內(nèi)容傳送到輸出FSL總線上。當(dāng)FSL的FIFO非滿狀態(tài)時(shí),在阻塞傳輸模式下只需要一個(gè)時(shí)鐘周期就能完成數(shù)據(jù)傳輸。如果FSL的FIFO滿時(shí),處理器停下來等待,直到FSL的滿標(biāo)志變成低。非阻塞傳輸指令(前綴n)在一個(gè)時(shí)鐘周期下完成傳輸(即使FSL為滿)。如果FSL為滿時(shí),寫操作被禁止,且MSR的進(jìn)位標(biāo)志被置位。FSL接口2.FSL總線讀操作
MicroBlaze使用get或getd指令,執(zhí)行讀FSL的操作。讀FSL操作將輸入FSL總線的內(nèi)容傳輸?shù)酵ㄓ眉拇嫫髦?。?dāng)FSL的FIFO非滿狀態(tài)時(shí),在阻塞傳輸模式下只需要2個(gè)時(shí)鐘周期就能完成數(shù)據(jù)讀傳輸。如果FSL的FIFO滿時(shí),處理器停下來等待,直到FSL的滿標(biāo)志變成低。非阻塞傳輸指令(前綴n)在2個(gè)時(shí)鐘周期下完成傳輸(即使FSL為空)。如果FSL為空時(shí),不產(chǎn)生讀數(shù)據(jù)傳輸,且MSR的進(jìn)位標(biāo)志被置位。FSL接口3.直接FSL連接直接FSL連接用來去避免需要FSL總線。在沒有緩沖的情況下,例如兩個(gè)連接的IP核。在直接FSL連接下不使用FSL的FIFO。無FIFO可以減少延遲和要求實(shí)現(xiàn)的資源。
MicroBlaze處理器的每一個(gè)FSL接口能使用FSL直接連接或FSL總線。
MicroBlaze的DWFSL接口是直接FSL連接的初始源,它只能連接到DWFSL目標(biāo)。DWFSL的初始源和目標(biāo)有同樣的信號名(與MFSL信號一樣)。MicroBlaze使用DWFSL接口通過put或putd命令寫數(shù)據(jù)到目標(biāo)。FSL接口
MicroBlaze的DRFSL接口是一個(gè)FSL連接的目標(biāo),它只能連接到DRFSL的初始源。DRFSL的初始源和目標(biāo)有同樣的信號名(與SFSL信號一樣)。MicroBlaze使用DRFSL接口通過get或getd命令從初始源讀數(shù)據(jù)。
Xilinx的CacheLink(XCL)接口就是使用直接FSL連接實(shí)現(xiàn)的。XCL接口
--XCL接口原理
對外部存儲器的訪問來說,XCL接口是高性能的解決方案。XCL通過使用集成的FSL緩沖區(qū)直接和存儲器控制器連接,例如MPMC。這種方法有最低的延遲和最小數(shù)目的例化。圖4.1給出了使用集成FSL緩沖區(qū)的XCL連接原理圖。
XCL接口
--XCL接口原理存儲器控制器FSLFSLMicroBlazeBEGINmicroblaze...BUS_INTERFACEIXCL=myIXCL...ENDBEGINmpmc...BUS_INTERFACEXCL0=myIXCL….END圖4.1使用集成FSL緩沖區(qū)的XCL連接原理XCL接口
--XCL接口原理當(dāng)緩存使能時(shí),XCL接口可以使用??梢栽谥噶顐?cè)或數(shù)據(jù)側(cè)使用一個(gè)XCL緩存。存儲器位置的訪問,由指令緩存參數(shù)C_ICACHE_ALWAYS_USED和數(shù)據(jù)緩存參數(shù)C_DCACHE_ALWAYS_USED來確定。如果值為1,表示緩存的存儲器范圍總是能通過XCL訪問。如果值為0,每當(dāng)緩存被軟件禁止時(shí),緩存的存儲器范圍只能通過AXI4或PLB訪問。XCL接口
--XCL接口原理在XCL可訪問的范圍以外存儲器的位置可通過AXI,PLB或者LMB訪問。XCL緩存控制器處理4-8個(gè)緩存行。同時(shí)由于XCL與PLB和AXI4分開,也減少了對非緩存存儲器訪問的沖突。表4.8給出了XCL的信號接口。XCL接口
--XCL接口原理信號描述VHDL類型方向ICACHE_FSL_IN_Clk時(shí)鐘輸出到指令側(cè)返回讀數(shù)據(jù)的FSLstd_logicoutputICACHE_FSL_IN_Read讀信號輸出到指令側(cè)返回讀數(shù)據(jù)的FSLstd_logicoutputICACHE_FSL_IN_Data指令側(cè)返回FSL讀數(shù)據(jù)std_logic_vector(0:31)inputICACHE_FSL_IN_Control指令側(cè)返回FSL讀數(shù)據(jù)的控制位,保留。std_logicinputICACHE_FSL_IN_Exists更多的數(shù)據(jù)存在指令側(cè)的返回FSLstd_logicinputICACHE_FSL_OUT_Clk時(shí)鐘輸出到指令側(cè)的讀訪問FSLstd_logicoutputICACHE_FSL_OUT_Write寫新的緩存缺失訪問請求到指令側(cè)的讀訪問FSLstd_logicoutputICACHE_FSL_OUT_Data緩存缺失訪問到指令側(cè)的讀訪問FSLstd_logic_vector(0:31)outputICACHE_FSL_OUT_ControlFSL控制位到指令側(cè)的讀訪問FSLstd_logicoutputICACHE_FSL_OUT_FullFSL訪問緩沖為指令側(cè)的讀訪問滿。std_logicinputDCACHE_FSL_IN_CLK時(shí)鐘輸出到數(shù)據(jù)側(cè)返回讀數(shù)據(jù)的FSLstd_logicoutputDCACHE_FSL_IN_Read讀信號到數(shù)據(jù)側(cè)返回讀數(shù)據(jù)的FSLstd_logicoutputDCACHE_FSL_IN_Data讀數(shù)據(jù)從數(shù)據(jù)側(cè)返回讀數(shù)據(jù)的FSLstd_logic_vector(0:31)inputDCACHE_FSL_IN_ControlFSL控制位從數(shù)據(jù)側(cè)返回?cái)?shù)據(jù)FSLstd_logicinputXCL接口
--XCL接口原理DCACHE_FSL_IN_Exists更多數(shù)據(jù)存在于數(shù)據(jù)側(cè)的返回FSLstd_logicinputDCACHE_FSL_OUT_Clk時(shí)鐘輸出到數(shù)據(jù)側(cè)讀訪問FSLstd_logicoutputDCACHE_FSL_OU_Write寫新的緩存缺失訪問請求到數(shù)據(jù)側(cè)的讀訪問FSLstd_logicoutputDCACHE_FSL_OUT_Data緩存缺失訪問(讀地址/寫地址+寫數(shù)據(jù)+字節(jié)寫使能)到數(shù)據(jù)側(cè)讀訪問FSLstd_logic_vector(0:31)outputDCACHE_FSL_OUT_ControlFSL控制比特到數(shù)據(jù)側(cè)讀訪問FSL。使用地址比特[30:31]為讀/寫和字節(jié)使能編碼。std_logicoutputDCACHE_FSL_OUT_Full用于數(shù)據(jù)側(cè)讀訪問的FSL訪問緩沖區(qū)為滿std_logicinputXCL接口
--XCL交易所有單獨(dú)的CacheLink訪問遵循基于FSLFIFO的交易協(xié)議,主要包含以下幾點(diǎn):
(1)FSL的數(shù)據(jù)和控制信號上的訪問信息被編碼(例如:
DCACHE_FSL_OUT_Data,DCACHE_FSL_OUT_Control,
ICACHE_FSL_IN_Data和ICACHE_FSL_IN_Control)。
(2)通過拉高寫使能信號(DCACHE_FSL_OUT_Write),信息被發(fā)送(保存)。
(3)如果來自接收方的滿信號無效(DCACHE_FSL_OUT_FULL=0),則發(fā)送方只允許寫。指令緩存控制器不使用滿信號標(biāo)志。XCL接口
--XCL交易
(4)使用ICACHE_FSL_IN_Read和DCACHE_FSL_IN_Read取決于所選擇的接口協(xié)議:使用IXCL和DXCL協(xié)議,通過拉高讀信號信息被接收(加載)。該信號為低,除非當(dāng)發(fā)送者示意有新數(shù)據(jù)存在。使用IXCL2和DXCL2協(xié)議,拉低讀信號表示接收方不能接收新的數(shù)據(jù)。當(dāng)讀信號為高時(shí),新數(shù)據(jù)是只讀的,發(fā)送者示意有新數(shù)據(jù)存在。
(5)只要發(fā)送方示意有新數(shù)據(jù)存在(例如
ICACHE_FSL_IN_Exists=1),接收方只允許讀。XCL接口
--XCL交易
Xilinx的CacheLink解決方案中,每個(gè)緩存控制器使用一個(gè)流入(從)和流出(主)FSL。流出FSL用于發(fā)送訪問請求,而流入FSL用于接收請求的緩存行。FSL的數(shù)據(jù)和控制信號上,XCL也使用交易信息的特定編碼。在XCL協(xié)議中,用于讀操作的緩存行為4/8個(gè)字長。取決于所選擇的接口協(xié)議,使用第一個(gè)關(guān)鍵字(Criticalwordfirst)或者線性順序(inlinearorder),取出每個(gè)緩存行。XCL接口
--XCL交易
(1)IXCL和DXCL協(xié)議使用第一個(gè)關(guān)鍵字協(xié)議(C_ICACHE_INTERFACE=0或者C_DCACHE_INTERFACE=0)。每個(gè)緩存行希望由第一個(gè)關(guān)鍵字開始(即,如果訪問地址0x348缺失4個(gè)字的緩存行,則返回的緩存行應(yīng)該是下面的地址序列:0x348,0x34c,0x340,0x344)。緩存控制器發(fā)送第一個(gè)字到執(zhí)行單元,同時(shí)把它存在緩存存儲器中。這樣使得只要第一個(gè)字返回,就可以繼續(xù)執(zhí)行。只要接收到這些字,緩存控制器使用剩余的3或7個(gè)字填充緩存行。XCL接口
--XCL交易
(2)線性取使用IXCL2和DXCL2協(xié)議,(C_ICACHE_INTERFACE=1或者C_DCACHE_INTERFACE=1)。CacheLink的地址輸出對齊緩存行大?。?,如果訪問地址0x348缺失4個(gè)字的緩存行,擇CacheLink的地址輸出是0x340)。緩存控制器將數(shù)據(jù)保存在緩存控制器中,當(dāng)可用時(shí),將請求字提交給執(zhí)行單元。
XCL接口
--XCL交易當(dāng)C_DACHE_USE_WRITEBACK設(shè)置為1時(shí),使用猝發(fā)寫能保存整個(gè)緩存行和一個(gè)單字。每個(gè)緩存行總是以線性順序保存,CacheLink的地址輸出對齊緩存行大小。當(dāng)C_DACHE_USE_WRITEBACK清零時(shí),在Cache上的所有寫操作是單字操作。當(dāng)使用寫回時(shí)C_DACHE_INTERFACE必須設(shè)置為1(因?yàn)殁Оl(fā)寫只能用DXCL2協(xié)議)。XCL交易
--指令緩存讀缺失當(dāng)讀缺失時(shí),緩存控制器執(zhí)行下面的操作:
(1)寫字對齊的或者緩存行對齊的缺失地址到
ICACHE_FSL_OUT_Data,控制位設(shè)置低,(ICACHE_FSL_OUT_Control=0)表示讀訪問;
(2)等到ICACHE_FSL_IN_Exists為高,表示數(shù)據(jù)可用(等待至少一個(gè)時(shí)鐘)。使用IXCL協(xié)議(第一個(gè)關(guān)鍵字)
(3)將ICACHE_FSL_IN_Data的內(nèi)容保存到緩存中;
(4)將關(guān)鍵字提交到執(zhí)行單元,以便繼續(xù)執(zhí)行;
(5)重復(fù)步驟3和4,處理在緩存行中剩余的3或7個(gè)字;使用IXCL2協(xié)議(線性?。?)將ICACHE_FSL_IN_Data的內(nèi)容保存到緩存中;
(4)將相關(guān)的字提交到執(zhí)行單元,以便繼續(xù)執(zhí)行;
(5)將剩余的字從ICACHE_FSL_IN_Data保存到緩存中;XCL交易
--數(shù)據(jù)緩存讀缺失當(dāng)讀缺失時(shí),緩存控制器執(zhí)行下面的操作:
(1)如果DCACHE_FSL_OUT_Full=1則停止,直到變低;
(2)寫字對齊的或者緩存行對齊的缺失地址到
DCACHE_FSL_OUT_Data,控制位置低,(DCACHE_FSL_OUT_Control=0)表示讀訪問;
(3)等到DCACHE_FSL_IN_Exists為高,表示數(shù)據(jù)可用(等待至少一個(gè)時(shí)鐘)。使用DXCL協(xié)議(第一個(gè)關(guān)鍵字)
(4)將DCACHE_FSL_IN_Data的內(nèi)容保存到緩存中;
(5)將關(guān)鍵字提交到執(zhí)行單元,以便繼續(xù)執(zhí)行;
(6)重復(fù)步驟4和5,處理在緩存行中剩余的3或7個(gè)字;使用DXCL2協(xié)議(線性?。?/p>
(4)將DCACHE_FSL_IN_Data的內(nèi)容保存到緩存中;
(5)將請求字提交到執(zhí)行單元,以便繼續(xù)執(zhí)行;
(6)將剩余的字從DCACHE_FSL_IN_Data保存到緩存中;XCL交易
--數(shù)據(jù)緩存寫當(dāng)C_DCACHE_INTERFACE設(shè)置為1時(shí),CacheLink能執(zhí)行猝發(fā)寫或者單字寫。當(dāng)設(shè)置C_DCACHE_USE_WRITEBACK=1時(shí),使用猝發(fā)寫,整個(gè)緩存行有效。當(dāng)C_DCACHE_USE_WRITEBACK=0時(shí),寫數(shù)據(jù)到數(shù)據(jù)緩存總是完全寫入。因此,不管在緩存中命中還是缺失,在CacheLink中都有一個(gè)寫操作。XCL交易
--數(shù)據(jù)緩存寫使用DXCL2協(xié)議,在一個(gè)猝發(fā)緩存行寫,緩存控制器執(zhí)行下面的序列:
(1)如果DCACHE_FSL_OUT_Full=1則停止,直到變低;
(2)寫緩存對齊的地址到DCACHE_FSL_OUT_Data,控制位為高(DCACHE_FSL_OUT_Control=1)表示寫訪問。地址總線的最高兩位(30:31)用來編碼猝發(fā)訪問:0b10=猝發(fā)。從一個(gè)單字寫中分出一個(gè)猝發(fā)訪問時(shí),在步驟4中,對于第一個(gè)數(shù)據(jù)字的控制位為低,用于猝發(fā)訪問(DCACHE_FSL_OUT_Control=1)。
(3)如果DCACHE_FSL_OUT_Full=1則停止,直到變低;
(4)寫數(shù)據(jù)被保存在DCACHE_FSL_OUT_Data中??刂莆晃坏停―CACHE_FSL_OUT_Control=0),表示猝發(fā)訪問。
(5)重復(fù)步驟3和4用于緩存行中隨后的字。XCL交易
--數(shù)據(jù)緩存寫使用DXCL或者DXCL2協(xié)議,在一個(gè)單字寫時(shí),緩存控制器執(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,0x10=字節(jié)2和0x11=字節(jié)3或者半字1。選擇半字或者字節(jié)訪問基于步驟4中用于數(shù)據(jù)字的控制位。
(3)如果DCACHE_FSL_OUT_Full=1則停止,直到變低;XCL交易
--數(shù)據(jù)緩存寫4.寫數(shù)據(jù)被保存在DCACHE_FSL_OUT_Data中。對于字節(jié)和半字訪問,數(shù)據(jù)鏡像到字節(jié)通道。鏡像輸出的字節(jié)或者半字各自寫到所有的四個(gè)字節(jié)通道或者半字通道??刂莆粦?yīng)該為低(DCACHE_FSL_OUT_Control=0)用于字或者半字訪問,為高將字節(jié)訪問和猝發(fā)訪問分開。字和字節(jié)訪問由地址的LSB進(jìn)行區(qū)分(0=字,1=半字)。調(diào)試接口
MicroBlaze的調(diào)試接口用來和Xilinx微處理調(diào)試(XilinxMicroprocessorDebug,MDM)的IP核。MDM由Xilinx處理器調(diào)試器(XilinxMicroprocessorDebuger,XMD)通過FPGA的JTAG端口控制。MDM能在同一時(shí)間控制多個(gè)MicroBlaze處理器。調(diào)試信號在DEBUG總線上分組。表4.9給出了MicroBlaze的調(diào)試信號。調(diào)試接口信號名稱描述VHDL類型方向Dbg_Clk來自MDM的JTAG時(shí)鐘std_logicinputDbg_TDI來自MDM的JTAGTDI信號std_logicinputDbg_TDO到MDM的JTAGTDO信號std_logicoutputDbg_Reg_En來自MDM的調(diào)試寄存器使能信號std_logicinputDbg_Shift來自MDM的JTAGBSCAN移位信號std_logicinputDbg_Capture來自MDM的JTAGBSCAN捕獲信號std_logicinputDbg_Update來自MDM的JTAGBSCAN更新信號std_logicinputDbg_Rst來自MDM的復(fù)位信號(高有效,至少維持一個(gè)時(shí)鐘周期)std_logicinput跟蹤接口
MicroBlaze核輸出大量的內(nèi)部信號用于跟蹤。由于該接口非標(biāo)準(zhǔn)化,所以Xilinx推薦對這些信號不要使用定制邏輯,而是使用Xilinx提供的分析IP。跟蹤信號在TRACE總線上被分組。表4.10給出了MicroBlaze的跟蹤信號。跟蹤接口
--跟蹤信號信號名稱描述VHDL類型方向Trace_Valid_Instr跟蹤端口的有效指令std_logicoutputTrace_Instruction指令碼std_logic_vector(0to31)outputTrace_PC程序計(jì)數(shù)器std_logic_vector(0to31)outputTrace_Reg_Write寫寄存器文件指令std_logicoutputTrace_Reg_Addr目標(biāo)寄存器地址std_logic_vector(0to4)outputTrace_MSR_Reg機(jī)器狀態(tài)寄存器std_logic_vector(0to4)outputTrace_PID_Reg進(jìn)程標(biāo)示寄存器std_logicoutputTrace_New_Reg_Value目標(biāo)寄存器更新值std_logicoutputTrace_Exception_Taken指令引起采納異常std_logicoutputTrace_Exception_Kind異常類型std_logic_vector(0to31)outputTrace_Jump_Taken分支指令評估為真,例如:采納std_logic_vector(0to31)outputTrace_Delay_Slot指令時(shí)延遲隙的采納分支std_logic_vector(0to31)outputTrace_Data_Access數(shù)據(jù)側(cè)存儲器訪問有效std_logicoutput跟蹤接口
--跟蹤信號Trace_Data_Address數(shù)據(jù)側(cè)存儲器訪問地址std_logic_vector(0to31)outputTrace_Data_Write_Value數(shù)據(jù)側(cè)的寫訪問值std_logic_vector(0to31)outputTrace_Data_Byte_Enable數(shù)據(jù)側(cè)存儲器訪問字節(jié)使能std_logicoutputTrace_Data_Read數(shù)據(jù)側(cè)的存儲器訪問為讀操作std_logicoutputTrace_Data_Write數(shù)據(jù)側(cè)的存儲器訪問為寫操作std_logicoutputTrace_DCache_Req數(shù)據(jù)存儲器地址在數(shù)據(jù)緩存范圍內(nèi)std_logicoutputTrace_DCache_Hit數(shù)據(jù)存儲器地址在數(shù)據(jù)緩存中std_logicoutputTrace_ICache_Req指令存儲器地址在指令緩存范圍內(nèi)std_logicoutputTrace_ICache_Hit指令存儲器地址在指令緩存中std_logicoutputTrace_OF_PipeRun流水超前為譯碼階段std_logicoutputTrace_EX_pipeRun流水超前為執(zhí)行階段std_logicoutputTrace_MEM_pipeRun流水超前為存儲器階段std_logicoutputTrace_MB_Halted調(diào)試導(dǎo)致流水線停止std_logicoutput跟蹤接口
--跟蹤異常類型Trace_Exception_Kind[0:4]描述00000FSL異常00001非對齊異常00010非法操作符異常00011指令總線異常00100數(shù)據(jù)總線異常00101除數(shù)為0異常00110FPU異常00111特權(quán)指令異常01010中斷01011外部非屏蔽斷點(diǎn)01100外部可屏蔽斷點(diǎn)10000數(shù)據(jù)存儲異常10001指令存儲異常10010數(shù)據(jù)TLB缺失異常10011指令TLB缺失異常編程接口
MicroBlaze應(yīng)用二進(jìn)制接口(ApplicationBinaryInterface,ABI)對于在匯編語言級開發(fā)軟件是非常重要的。MicroBlazeGNU編譯器允許下面所介紹的規(guī)約。由匯編語言程序員所編寫的代碼也遵循同樣的規(guī)約,該規(guī)約與編譯器產(chǎn)生的代碼兼容。編程接口
--堆棧規(guī)則表4.12給出了MicroBlaze的堆棧規(guī)則。堆棧幀的ABI規(guī)則定義了協(xié)議,該協(xié)議用來傳遞參數(shù),保存非易失性存儲器的值和為函數(shù)內(nèi)的本地變量分配空間。編程接口
--堆棧規(guī)則高地址為調(diào)用子例程的功能參數(shù)(Argn…Arg1)(可選的:對于任何一個(gè)由當(dāng)前程序所調(diào)用程序的最多數(shù)目的參數(shù)要求)先前的堆棧指針鏈接寄存器(R15)被調(diào)者保存寄存器(R31..R19)(可選的:只有那些當(dāng)前程序所使用的寄存器被保存)當(dāng)前程序的本地變量(可選的:如果在程序中定義才出現(xiàn))功能參數(shù)(Argn…Arg1)(可選的:對于任何一個(gè)由當(dāng)前程序所調(diào)用程序的最多數(shù)量的參數(shù)要求)新堆棧指針鏈接寄存器低地址編程接口
--堆棧規(guī)則那些包含調(diào)用其它子例程的函數(shù)也稱為非葉結(jié)點(diǎn)函數(shù)。這些非葉結(jié)點(diǎn)函數(shù)為自己創(chuàng)建新的堆棧幀。當(dāng)程序開始執(zhí)行時(shí),堆棧指針有最大值。當(dāng)函數(shù)被調(diào)用,堆棧指針被減小。調(diào)用函數(shù)的堆棧指針的值比被調(diào)函數(shù)的堆棧指針的值要高。圖4.2給出一個(gè)調(diào)用的例子。該例子Fun1調(diào)用Fun2,F(xiàn)un2調(diào)用Fun
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新能源汽車市場轉(zhuǎn)型策略試題及答案
- 安徽省安慶市一中2022-2023學(xué)年高一上學(xué)期期中考試生物 無答案
- 2024年馬鞍山市三支一扶考試真題
- 2024年遼源市融媒體中心招聘考試真題
- 舒緩與激昂音樂風(fēng)格的樂理分析試題及答案
- 社會責(zé)任與土木工程師考試試題及答案
- 2025年高、低能校正磁鐵項(xiàng)目合作計(jì)劃書
- 旋律分析理解與應(yīng)用試題答案
- 自考工業(yè)設(shè)計(jì)試題及答案
- 新能源汽車核心技術(shù)競爭試題及答案
- 北京2025年中國環(huán)境監(jiān)測總站招聘(第二批)筆試歷年參考題庫附帶答案詳解
- 美國加征關(guān)稅從多個(gè)角度全方位解讀關(guān)稅課件
- “皖南八校”2024-2025學(xué)年高一第二學(xué)期期中考試-英語(譯林版)及答案
- 防洪防汛安全教育知識培訓(xùn)
- 安寧療護(hù)人文關(guān)懷護(hù)理課件
- 2025年廣東廣州中物儲國際貨運(yùn)代理有限公司招聘筆試參考題庫附帶答案詳解
- 2021年妊娠期血壓管理中國專家共識
- 一種基于STM32的智能門鎖系統(tǒng)的設(shè)計(jì)-畢業(yè)論文
- 首信紅星國際廣場A地塊建設(shè)項(xiàng)目監(jiān)理規(guī)劃
- 人體穴位與天體對應(yīng)解密
- 機(jī)械行業(yè)六個(gè)典型事故案例分享
評論
0/150
提交評論