版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
MicroBlaze軟核處理器接口何賓2012.02MicroBlaze軟核處理器接口本章詳細(xì)介紹了MicroBlaze軟核處理的接口,這些接口包括:(1)AXI4接口;(2)PLB接口;(3)LMB接口;(4)FSL接口;(5)XCL接口;
(6)調(diào)試接口和跟蹤接口。這些接口提供了軟核處理器與片上、片外外設(shè)和存儲(chǔ)器的靈活接口。此外,接口也提供了點(diǎn)對(duì)點(diǎn)的或者共享總線的數(shù)據(jù)傳輸方式。MicroBlaze接口概述
MicroBlaze處理器結(jié)構(gòu)采用哈弗結(jié)構(gòu),即為數(shù)據(jù)和指令訪問(wèn)提供了獨(dú)立的總線接口單元。MicroBlaze處理器支持下面四種存儲(chǔ)器接口:本地存儲(chǔ)器總線(LMB);AMBAAXI4接口(AXI4);IBM處理器本地總線(PLB);Xilinx的CacheLink(XCL)接口;MicroBlaze軟核處理器接口LMB提供了以單時(shí)鐘周期訪問(wèn)雙端口存儲(chǔ)器的能力。AXI4和PLB提供了片上和片外外設(shè)和存儲(chǔ)器的接口。CacheLink接口和外部存儲(chǔ)器控制一起用作專門用途。MicroBlaze處理器支持最多16個(gè)簡(jiǎn)單快速鏈接FSL或者AXI4-Stream接口端口,每一個(gè)端口有主和從接口。MicroBlaze軟核處理器接口MicroBlaze處理器能配置成下面的總線接口:ARMAAXI4接口;32位版本的PLBV4.6接口;LMB提供簡(jiǎn)單同步協(xié)議用于高效的BRAM傳輸;FSL或AXI4-Stream提供快速無(wú)需仲裁的流通信機(jī)制;XCL提供在緩存和外部存儲(chǔ)器控制器之間的快速?gòu)脑O(shè)備仲裁的流接口;調(diào)試接口和處理器調(diào)試模塊(MDM)一起使用;跟蹤接口用于性能分析;AXI4接口
--存儲(chǔ)器映射接口
MicroBlazeAXI4存儲(chǔ)器映射的外設(shè)接口(M_AXI_DP,M_AXI_IP)實(shí)現(xiàn)32位的主接口。這些接口只發(fā)出單個(gè)地址,所有的交易按順序完成。
(1)指令外設(shè)接口只執(zhí)行單字讀訪問(wèn),總是設(shè)置使用AXI4-Lite子集;(2)數(shù)據(jù)外設(shè)接口執(zhí)行單字訪問(wèn),默認(rèn)設(shè)置使用AXI4-Lite子集,當(dāng)使能用于LWX和SWX的互斥訪問(wèn)時(shí),使用AXI4。通過(guò)設(shè)置合適的字節(jié)選通,可以執(zhí)行半字和字節(jié)寫(xiě)操作;AXI4接口
--存儲(chǔ)器映射接口AXI4存儲(chǔ)器映射的緩存接口(M_AXI_DC,M_AXI_IC)可以實(shí)現(xiàn)32位、128位或者256位的主設(shè)備(取決于緩存行的長(zhǎng)度和數(shù)據(jù)寬度參數(shù))。
(1)作為32位主設(shè)備,指令緩存接口執(zhí)行4字或8字(取決于緩存行長(zhǎng)度)猝發(fā)讀訪問(wèn)。作為128位或256位主設(shè)備,只執(zhí)行單個(gè)讀訪問(wèn)。當(dāng)使能流緩存時(shí),這個(gè)接口能提供最多2個(gè)地址或者8個(gè)地址。
(2)作為32位主設(shè)備,數(shù)據(jù)緩存接口執(zhí)行單字訪問(wèn)或4/8字猝發(fā)訪問(wèn)(取決于緩存行長(zhǎng)度)。當(dāng)使用寫(xiě)通過(guò)緩存時(shí),不執(zhí)行寫(xiě)猝發(fā)訪問(wèn)。通過(guò)設(shè)置合適的字節(jié)選通,可以執(zhí)行字、半字和字節(jié)寫(xiě)操作。當(dāng)讀時(shí),接口最多發(fā)出2個(gè)地址,而當(dāng)寫(xiě)時(shí),最多發(fā)出32個(gè)地址。使能互斥訪問(wèn)用于LWX和SWX指令。AXI4接口
--存儲(chǔ)器映射接口M_AXI_DP、M_AXI_IP、M_AXI_DC和M_AXI_IC接口信號(hào)功能一樣,表4.1給出了M_AXI_DP端口的信號(hào)及功能。更具體的功能可以參看第二章的內(nèi)容。AXI4接口
--存儲(chǔ)器映射接口信號(hào)接口I/O描述M_AXI_DP_AWIDM_AXI_DPO主設(shè)備寫(xiě)地址IDM_AXI_DP_AWADDRM_AXI_DPO主設(shè)備寫(xiě)地址M_AXI_DP_AWLENM_AXI_DPO主設(shè)備猝發(fā)長(zhǎng)度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è)備寫(xiě)地址有效M_AXI_DP_AWREADYM_AXI_DPI從設(shè)備寫(xiě)地址準(zhǔn)備M_AXI_DP_WDATAM_AXI_DPO主設(shè)備寫(xiě)數(shù)據(jù)M_AXI_DP_WSTRBM_AXI_DPO主設(shè)備寫(xiě)選通M_AXI_DP_WLASTM_AXI_DPO主設(shè)備寫(xiě)最后M_AXI_DP_WVALIDM_AXI_DPO主設(shè)備寫(xiě)有效AXI4接口
--存儲(chǔ)器映射接口M_AXI_DP_WREADYM_AXI_DPI從設(shè)備寫(xiě)準(zhǔn)備M_AXI_DP_BIDM_AXI_DPI從設(shè)備響應(yīng)IDM_AXI_DP_BRESPM_AXI_DPI從設(shè)備寫(xiě)響應(yīng)M_AXI_DP_BVALIDM_AXI_DPI從設(shè)備寫(xiě)響應(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ā)長(zhǎng)度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接口
--存儲(chǔ)器映射接口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信號(hào)直接對(duì)應(yīng)于同等的FSLn_M_Control和FSLn_S_Control信號(hào)。AXI4接口
--流接口1.寫(xiě)操作
MicroBlaze通過(guò)使用put或putd指令執(zhí)行寫(xiě)流接口操作。寫(xiě)操作將寄存器的內(nèi)容傳到輸出AXI4接口。對(duì)于阻塞模式寫(xiě)(put或cput指令)在單個(gè)時(shí)鐘周期內(nèi)完成傳輸,且接口不忙。如果接口忙,處理器停止,一直到其可用為止。非阻塞指令(前綴n),即使在忙時(shí),也總是在單周期內(nèi)完成傳輸。如果接口忙,禁止寫(xiě)并且設(shè)置MSR內(nèi)的進(jìn)位位。AXI4接口
--流接口2.讀操作
MicroBlaze通過(guò)使用get或getd指令執(zhí)行讀流接口操作。讀操作將輸入AXI4接口內(nèi)容傳輸?shù)郊拇嫫鳌?duì)于阻塞模式讀在兩個(gè)時(shí)鐘周期內(nèi)完成傳輸,且數(shù)據(jù)可用。如果數(shù)據(jù)不可用時(shí),處理器在這條指令上停下來(lái),一直到其可用為止。在非阻塞模式下(前綴n),不管數(shù)據(jù)是否可用,也總是在一個(gè)或者兩個(gè)時(shí)鐘周期內(nèi)完成傳輸。如果數(shù)據(jù)不可用,不發(fā)生數(shù)據(jù)傳輸,并且設(shè)置MSR內(nèi)的進(jìn)位位。表4.2給出了M_AXI_Stream端口的信號(hào)及功能。更具體的功能可以參看第二章的內(nèi)容AXI4接口
--流接口信號(hào)接口I/O描述Mn_AXIS_TLASTM0_AXIS..M15_AXISO主設(shè)備接口輸出AXI4通道寫(xiě)最后Mn_AXIS_TDATAM0_AXIS..M15_AXISO主設(shè)備接口輸出AXI4通道寫(xiě)數(shù)據(jù)Mn_AXIS_TVALIDM0_AXIS..M15_AXISO主設(shè)備接口輸出AXI4通道寫(xiě)有效Mn_AXIS_TREADYM0_AXIS..M15_AXISI主設(shè)備接口輸入AXI4通道寫(xiě)準(zhǔn)備Sn_AXIS_TLASTM0_AXIS..M15_AXISI從設(shè)備接口輸入AXI4通道寫(xiě)最后Sn_AXIS_TDATAM0_AXIS..M15_AXISI從設(shè)備接口輸入AXI4通道寫(xiě)數(shù)據(jù)Sn_AXIS_TVALIDM0_AXIS..M15_AXISI從設(shè)備接口輸入AXI4通道寫(xiě)有效Sn_AXIS_TREADYM0_AXIS..M15_AXISO從設(shè)備接口輸出AXI4通道寫(xiě)準(zhǔn)備PLB接口
MicroBlaze處理的PLB接口用于字節(jié)使能的32位主設(shè)備。表4.3給出了IPLB總線接口信號(hào)定義。表4.4給出了DPLB總線接口定義。更詳細(xì)的可以參考PLBV46互連和接口資料。PLB接口(IPLB)信號(hào)接口I/O功能(指令側(cè)PLB接口簡(jiǎn)稱IPLB)IPLB_M_ABORTIPLBOIPLB放棄總線請(qǐng)求指示IPLB_M_ABUSIPLBOIPLB地址總線IPLB_M_UABUSIPLBOIPLB高部分地址總線IPLB_M_BEIPLBOIPLB字節(jié)使能IPLB_M_busLockIPLBOIPLB總線鎖定IPLB_M_lockErrIPLBOIPLB總線鎖定錯(cuò)誤指示IPLB_M_MsizeIPLBOIPLB主設(shè)備數(shù)據(jù)總線大小IPLB_M_priorityIPLBOIPLB請(qǐng)求優(yōu)先級(jí)IPLB_M_rdBurstIPLBOIPLB猝發(fā)式讀傳輸指示IPLB_M_requestIPLBOIPLB總線請(qǐng)求IPLB_M_RNWIPLBOIPLB讀/非寫(xiě)IPLB_M_sizeIPLBOIPLB傳輸大小IPLB_M_TAttributeIPLBOIPLB傳輸屬性總線IPLB_M_typeIPLBOIPLB傳輸類型IPLB_M_wrBurstIPLBOIPLB猝發(fā)式寫(xiě)傳輸指示IPLB_M_wrDBusIPLBOIPLB寫(xiě)數(shù)據(jù)總線PLB接口(IPLB)IPLB_MbusyIPLBIIPLB從設(shè)備忙指示IPLB_MRdErrIPLBIIPLB從設(shè)備讀錯(cuò)誤指示IPLB_MWrErrIPLBIIPLB從設(shè)備寫(xiě)錯(cuò)誤指示IPLB_MIRQIPLBIIPLB從設(shè)備中斷指示IPLB_MWRBTermIPLBIIPLB終止寫(xiě)猝發(fā)指示IPLB_MWrDAckIPLBIIPLB寫(xiě)數(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)信號(hào)接口I/O功能(數(shù)據(jù)側(cè)PLB接口簡(jiǎn)稱DPLB)DPLB_M_ABORTDPLBODPLB放棄總線請(qǐng)求指示DPLB_M_ABUSDPLBODPLB地址總線DPLB_M_UABUSDPLBODPLB高部分地址總線DPLB_M_BEDPLBODPLB字節(jié)使能DPLB_M_busLockDPLBODPLB總線鎖定DPLB_M_lockErrDPLBODPLB總線鎖定錯(cuò)誤指示DPLB_M_MsizeDPLBODPLB主設(shè)備數(shù)據(jù)總線大小DPLB_M_priorityDPLBODPLB請(qǐng)求優(yōu)先級(jí)DPLB_M_rdBurstDPLBODPLB猝發(fā)式讀傳輸指示DPLB_M_requestDPLBODPLB總線請(qǐng)求DPLB_M_RNWDPLBODPLB讀/非寫(xiě)DPLB_M_sizeDPLBODPLB傳輸大小DPLB_M_TAttributeDPLBODPLB傳輸屬性總線DPLB_M_typeDPLBODPLB傳輸類型PLB接口(DPLB)DPLB_M_wrBurstDPLBODPLB猝發(fā)式寫(xiě)傳輸指示DPLB_M_wrDBusIPLBODPLB寫(xiě)數(shù)據(jù)總線DPLB_MbusyDPLBIDPLB從設(shè)備忙指示DPLB_MRdErrDPLBIDPLB從設(shè)備讀錯(cuò)誤指示DPLB_MWrErrDPLBIDPLB從設(shè)備寫(xiě)錯(cuò)誤指示DPLB_MIRQDPLBIDPLB從設(shè)備中斷指示DPLB_MWRBTermDPLBIDPLB終止寫(xiě)猝發(fā)指示DPLB_MWrDAckDPLBIDPLB寫(xiě)數(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是同步總線,主要用于訪問(wèn)片上塊RAM資源。LMB有最少的控制總線數(shù)目,使用簡(jiǎn)單協(xié)議保證以單周期訪問(wèn)本地塊RAM資源。表4.5給出了LMB接口信號(hào)及定義。所有信號(hào)都是高有效。LMB接口信號(hào)數(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寫(xiě)數(shù)據(jù)總線ASD_ASI_ASO地址選通Read_StrobeRead_StrobeIFetchO讀進(jìn)行Write_StrobeWrite_StrobenotusedO寫(xiě)進(jìn)行Data_Read[0:31]Data_Read[0:31]Insr[0:31]I讀數(shù)據(jù)總線ReadyDReadyIReadyI下次傳輸準(zhǔn)備WaitDWaitIWaitI等待,直到準(zhǔn)備被接受的傳輸CEDCEICEI可更正的錯(cuò)誤UE不可更正的錯(cuò)誤ClkClkClkI總線時(shí)鐘FSL接口FSL總線在輸出FIFO和輸入FIFO之間提供點(diǎn)對(duì)點(diǎn)的通信通道,更詳細(xì)的信息參考IP核參考資料。表4.6給出了主FSL信號(hào)接口,表4.7給出了從FSL接口信號(hào)。FSL接口(MFSL)信號(hào)功能VHDL類型方向FSLn_M_Clk時(shí)鐘std_logicinputFSLn_M_Write寫(xiě)使能信號(hào),表示數(shù)據(jù)正被寫(xiě)到輸出FSLstd_logicoutputFSLn_M_Data數(shù)據(jù)寫(xiě)到輸出FSLstd_logic_vectoroutputFSLn_M_Control控制位寫(xiě)到輸出FSLstd_logicoutputFSLn_M_Full當(dāng)設(shè)置時(shí),表示輸出FSL的FIFO滿std_logicinputFSL接口(SFSL)信號(hào)功能VHDL類型方向FSLn_S_Clk時(shí)鐘std_logicinputFSLn_S_Read讀響應(yīng)信號(hào)表示,數(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總線寫(xiě)操作
MicroBlaze使用put或putd指令,執(zhí)行寫(xiě)FSL的操作。寫(xiě)FSL操作將寄存器的內(nèi)容傳送到輸出FSL總線上。當(dāng)FSL的FIFO非滿狀態(tài)時(shí),在阻塞傳輸模式下只需要一個(gè)時(shí)鐘周期就能完成數(shù)據(jù)傳輸。如果FSL的FIFO滿時(shí),處理器停下來(lái)等待,直到FSL的滿標(biāo)志變成低。非阻塞傳輸指令(前綴n)在一個(gè)時(shí)鐘周期下完成傳輸(即使FSL為滿)。如果FSL為滿時(shí),寫(xiě)操作被禁止,且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í),處理器停下來(lái)等待,直到FSL的滿標(biāo)志變成低。非阻塞傳輸指令(前綴n)在2個(gè)時(shí)鐘周期下完成傳輸(即使FSL為空)。如果FSL為空時(shí),不產(chǎn)生讀數(shù)據(jù)傳輸,且MSR的進(jìn)位標(biāo)志被置位。FSL接口3.直接FSL連接直接FSL連接用來(lái)去避免需要FSL總線。在沒(méi)有緩沖的情況下,例如兩個(gè)連接的IP核。在直接FSL連接下不使用FSL的FIFO。無(wú)FIFO可以減少延遲和要求實(shí)現(xiàn)的資源。
MicroBlaze處理器的每一個(gè)FSL接口能使用FSL直接連接或FSL總線。
MicroBlaze的DWFSL接口是直接FSL連接的初始源,它只能連接到DWFSL目標(biāo)。DWFSL的初始源和目標(biāo)有同樣的信號(hào)名(與MFSL信號(hào)一樣)。MicroBlaze使用DWFSL接口通過(guò)put或putd命令寫(xiě)數(shù)據(jù)到目標(biāo)。FSL接口
MicroBlaze的DRFSL接口是一個(gè)FSL連接的目標(biāo),它只能連接到DRFSL的初始源。DRFSL的初始源和目標(biāo)有同樣的信號(hào)名(與SFSL信號(hào)一樣)。MicroBlaze使用DRFSL接口通過(guò)get或getd命令從初始源讀數(shù)據(jù)。
Xilinx的CacheLink(XCL)接口就是使用直接FSL連接實(shí)現(xiàn)的。XCL接口
--XCL接口原理
對(duì)外部存儲(chǔ)器的訪問(wèn)來(lái)說(shuō),XCL接口是高性能的解決方案。XCL通過(guò)使用集成的FSL緩沖區(qū)直接和存儲(chǔ)器控制器連接,例如MPMC。這種方法有最低的延遲和最小數(shù)目的例化。圖4.1給出了使用集成FSL緩沖區(qū)的XCL連接原理圖。
XCL接口
--XCL接口原理存儲(chǔ)器控制器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緩存。存儲(chǔ)器位置的訪問(wèn),由指令緩存參數(shù)C_ICACHE_ALWAYS_USED和數(shù)據(jù)緩存參數(shù)C_DCACHE_ALWAYS_USED來(lái)確定。如果值為1,表示緩存的存儲(chǔ)器范圍總是能通過(guò)XCL訪問(wèn)。如果值為0,每當(dāng)緩存被軟件禁止時(shí),緩存的存儲(chǔ)器范圍只能通過(guò)AXI4或PLB訪問(wèn)。XCL接口
--XCL接口原理在XCL可訪問(wèn)的范圍以外存儲(chǔ)器的位置可通過(guò)AXI,PLB或者LMB訪問(wèn)。XCL緩存控制器處理4-8個(gè)緩存行。同時(shí)由于XCL與PLB和AXI4分開(kāi),也減少了對(duì)非緩存存儲(chǔ)器訪問(wèn)的沖突。表4.8給出了XCL的信號(hào)接口。XCL接口
--XCL接口原理信號(hào)描述VHDL類型方向ICACHE_FSL_IN_Clk時(shí)鐘輸出到指令側(cè)返回讀數(shù)據(jù)的FSLstd_logicoutputICACHE_FSL_IN_Read讀信號(hào)輸出到指令側(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è)的讀訪問(wèn)FSLstd_logicoutputICACHE_FSL_OUT_Write寫(xiě)新的緩存缺失訪問(wèn)請(qǐng)求到指令側(cè)的讀訪問(wèn)FSLstd_logicoutputICACHE_FSL_OUT_Data緩存缺失訪問(wèn)到指令側(cè)的讀訪問(wèn)FSLstd_logic_vector(0:31)outputICACHE_FSL_OUT_ControlFSL控制位到指令側(cè)的讀訪問(wèn)FSLstd_logicoutputICACHE_FSL_OUT_FullFSL訪問(wèn)緩沖為指令側(cè)的讀訪問(wèn)滿。std_logicinputDCACHE_FSL_IN_CLK時(shí)鐘輸出到數(shù)據(jù)側(cè)返回讀數(shù)據(jù)的FSLstd_logicoutputDCACHE_FSL_IN_Read讀信號(hào)到數(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è)讀訪問(wèn)FSLstd_logicoutputDCACHE_FSL_OU_Write寫(xiě)新的緩存缺失訪問(wèn)請(qǐng)求到數(shù)據(jù)側(cè)的讀訪問(wèn)FSLstd_logicoutputDCACHE_FSL_OUT_Data緩存缺失訪問(wèn)(讀地址/寫(xiě)地址+寫(xiě)數(shù)據(jù)+字節(jié)寫(xiě)使能)到數(shù)據(jù)側(cè)讀訪問(wèn)FSLstd_logic_vector(0:31)outputDCACHE_FSL_OUT_ControlFSL控制比特到數(shù)據(jù)側(cè)讀訪問(wèn)FSL。使用地址比特[30:31]為讀/寫(xiě)和字節(jié)使能編碼。std_logicoutputDCACHE_FSL_OUT_Full用于數(shù)據(jù)側(cè)讀訪問(wèn)的FSL訪問(wèn)緩沖區(qū)為滿std_logicinputXCL接口
--XCL交易所有單獨(dú)的CacheLink訪問(wèn)遵循基于FSLFIFO的交易協(xié)議,主要包含以下幾點(diǎn):
(1)FSL的數(shù)據(jù)和控制信號(hào)上的訪問(wèn)信息被編碼(例如:
DCACHE_FSL_OUT_Data,DCACHE_FSL_OUT_Control,
ICACHE_FSL_IN_Data和ICACHE_FSL_IN_Control)。
(2)通過(guò)拉高寫(xiě)使能信號(hào)(DCACHE_FSL_OUT_Write),信息被發(fā)送(保存)。
(3)如果來(lái)自接收方的滿信號(hào)無(wú)效(DCACHE_FSL_OUT_FULL=0),則發(fā)送方只允許寫(xiě)。指令緩存控制器不使用滿信號(hào)標(biāo)志。XCL接口
--XCL交易
(4)使用ICACHE_FSL_IN_Read和DCACHE_FSL_IN_Read取決于所選擇的接口協(xié)議:使用IXCL和DXCL協(xié)議,通過(guò)拉高讀信號(hào)信息被接收(加載)。該信號(hào)為低,除非當(dāng)發(fā)送者示意有新數(shù)據(jù)存在。使用IXCL2和DXCL2協(xié)議,拉低讀信號(hào)表示接收方不能接收新的數(shù)據(jù)。當(dāng)讀信號(hào)為高時(shí),新數(shù)據(jù)是只讀的,發(fā)送者示意有新數(shù)據(jù)存在。
(5)只要發(fā)送方示意有新數(shù)據(jù)存在(例如
ICACHE_FSL_IN_Exists=1),接收方只允許讀。XCL接口
--XCL交易
Xilinx的CacheLink解決方案中,每個(gè)緩存控制器使用一個(gè)流入(從)和流出(主)FSL。流出FSL用于發(fā)送訪問(wèn)請(qǐng)求,而流入FSL用于接收請(qǐng)求的緩存行。FSL的數(shù)據(jù)和控制信號(hào)上,XCL也使用交易信息的特定編碼。在XCL協(xié)議中,用于讀操作的緩存行為4/8個(gè)字長(zhǎng)。取決于所選擇的接口協(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)鍵字開(kāi)始(即,如果訪問(wèn)地址0x348缺失4個(gè)字的緩存行,則返回的緩存行應(yīng)該是下面的地址序列:0x348,0x34c,0x340,0x344)。緩存控制器發(fā)送第一個(gè)字到執(zhí)行單元,同時(shí)把它存在緩存存儲(chǔ)器中。這樣使得只要第一個(gè)字返回,就可以繼續(xù)執(zhí)行。只要接收到這些字,緩存控制器使用剩余的3或7個(gè)字填充緩存行。XCL接口
--XCL交易
(2)線性取使用IXCL2和DXCL2協(xié)議,(C_ICACHE_INTERFACE=1或者C_DCACHE_INTERFACE=1)。CacheLink的地址輸出對(duì)齊緩存行大小(即,如果訪問(wèn)地址0x348缺失4個(gè)字的緩存行,擇CacheLink的地址輸出是0x340)。緩存控制器將數(shù)據(jù)保存在緩存控制器中,當(dāng)可用時(shí),將請(qǐng)求字提交給執(zhí)行單元。
XCL接口
--XCL交易當(dāng)C_DACHE_USE_WRITEBACK設(shè)置為1時(shí),使用猝發(fā)寫(xiě)能保存整個(gè)緩存行和一個(gè)單字。每個(gè)緩存行總是以線性順序保存,CacheLink的地址輸出對(duì)齊緩存行大小。當(dāng)C_DACHE_USE_WRITEBACK清零時(shí),在Cache上的所有寫(xiě)操作是單字操作。當(dāng)使用寫(xiě)回時(shí)C_DACHE_INTERFACE必須設(shè)置為1(因?yàn)殁Оl(fā)寫(xiě)只能用DXCL2協(xié)議)。XCL交易
--指令緩存讀缺失當(dāng)讀缺失時(shí),緩存控制器執(zhí)行下面的操作:
(1)寫(xiě)字對(duì)齊的或者緩存行對(duì)齊的缺失地址到
ICACHE_FSL_OUT_Data,控制位設(shè)置低,(ICACHE_FSL_OUT_Control=0)表示讀訪問(wèn);
(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)寫(xiě)字對(duì)齊的或者緩存行對(duì)齊的缺失地址到
DCACHE_FSL_OUT_Data,控制位置低,(DCACHE_FSL_OUT_Control=0)表示讀訪問(wèn);
(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é)議(線性取)
(4)將DCACHE_FSL_IN_Data的內(nèi)容保存到緩存中;
(5)將請(qǐng)求字提交到執(zhí)行單元,以便繼續(xù)執(zhí)行;
(6)將剩余的字從DCACHE_FSL_IN_Data保存到緩存中;XCL交易
--數(shù)據(jù)緩存寫(xiě)當(dāng)C_DCACHE_INTERFACE設(shè)置為1時(shí),CacheLink能執(zhí)行猝發(fā)寫(xiě)或者單字寫(xiě)。當(dāng)設(shè)置C_DCACHE_USE_WRITEBACK=1時(shí),使用猝發(fā)寫(xiě),整個(gè)緩存行有效。當(dāng)C_DCACHE_USE_WRITEBACK=0時(shí),寫(xiě)數(shù)據(jù)到數(shù)據(jù)緩存總是完全寫(xiě)入。因此,不管在緩存中命中還是缺失,在CacheLink中都有一個(gè)寫(xiě)操作。XCL交易
--數(shù)據(jù)緩存寫(xiě)使用DXCL2協(xié)議,在一個(gè)猝發(fā)緩存行寫(xiě),緩存控制器執(zhí)行下面的序列:
(1)如果DCACHE_FSL_OUT_Full=1則停止,直到變低;
(2)寫(xiě)緩存對(duì)齊的地址到DCACHE_FSL_OUT_Data,控制位為高(DCACHE_FSL_OUT_Control=1)表示寫(xiě)訪問(wèn)。地址總線的最高兩位(30:31)用來(lái)編碼猝發(fā)訪問(wèn):0b10=猝發(fā)。從一個(gè)單字寫(xiě)中分出一個(gè)猝發(fā)訪問(wèn)時(shí),在步驟4中,對(duì)于第一個(gè)數(shù)據(jù)字的控制位為低,用于猝發(fā)訪問(wèn)(DCACHE_FSL_OUT_Control=1)。
(3)如果DCACHE_FSL_OUT_Full=1則停止,直到變低;
(4)寫(xiě)數(shù)據(jù)被保存在DCACHE_FSL_OUT_Data中。控制位位低(DCACHE_FSL_OUT_Control=0),表示猝發(fā)訪問(wèn)。
(5)重復(fù)步驟3和4用于緩存行中隨后的字。XCL交易
--數(shù)據(jù)緩存寫(xiě)使用DXCL或者DXCL2協(xié)議,在一個(gè)單字寫(xiě)時(shí),緩存控制器執(zhí)行下面的序列:
(1)如果DCACHE_FSL_OUT_Full=1則停止,直到變低;
(2)寫(xiě)缺失的地址到DCACHE_FSL_OUT_Data,控制位為高(DCACHE_FSL_OUT_Control=1)表示寫(xiě)訪問(wèn)。地址總線的最高兩位(30:31)用來(lái)編碼字節(jié)或半字使能:0b00=字節(jié)0b01=字節(jié)1或者半字0,0x10=字節(jié)2和0x11=字節(jié)3或者半字1。選擇半字或者字節(jié)訪問(wèn)基于步驟4中用于數(shù)據(jù)字的控制位。
(3)如果DCACHE_FSL_OUT_Full=1則停止,直到變低;XCL交易
--數(shù)據(jù)緩存寫(xiě)4.寫(xiě)數(shù)據(jù)被保存在DCACHE_FSL_OUT_Data中。對(duì)于字節(jié)和半字訪問(wèn),數(shù)據(jù)鏡像到字節(jié)通道。鏡像輸出的字節(jié)或者半字各自寫(xiě)到所有的四個(gè)字節(jié)通道或者半字通道??刂莆粦?yīng)該為低(DCACHE_FSL_OUT_Control=0)用于字或者半字訪問(wèn),為高將字節(jié)訪問(wèn)和猝發(fā)訪問(wèn)分開(kāi)。字和字節(jié)訪問(wèn)由地址的LSB進(jìn)行區(qū)分(0=字,1=半字)。調(diào)試接口
MicroBlaze的調(diào)試接口用來(lái)和Xilinx微處理調(diào)試(XilinxMicroprocessorDebug,MDM)的IP核。MDM由Xilinx處理器調(diào)試器(XilinxMicroprocessorDebuger,XMD)通過(guò)FPGA的JTAG端口控制。MDM能在同一時(shí)間控制多個(gè)MicroBlaze處理器。調(diào)試信號(hào)在DEBUG總線上分組。表4.9給出了MicroBlaze的調(diào)試信號(hào)。調(diào)試接口信號(hào)名稱描述VHDL類型方向Dbg_Clk來(lái)自MDM的JTAG時(shí)鐘std_logicinputDbg_TDI來(lái)自MDM的JTAGTDI信號(hào)std_logicinputDbg_TDO到MDM的JTAGTDO信號(hào)std_logicoutputDbg_Reg_En來(lái)自MDM的調(diào)試寄存器使能信號(hào)std_logicinputDbg_Shift來(lái)自MDM的JTAGBSCAN移位信號(hào)std_logicinputDbg_Capture來(lái)自MDM的JTAGBSCAN捕獲信號(hào)std_logicinputDbg_Update來(lái)自MDM的JTAGBSCAN更新信號(hào)std_logicinputDbg_Rst來(lái)自MDM的復(fù)位信號(hào)(高有效,至少維持一個(gè)時(shí)鐘周期)std_logicinput跟蹤接口
MicroBlaze核輸出大量的內(nèi)部信號(hào)用于跟蹤。由于該接口非標(biāo)準(zhǔn)化,所以Xilinx推薦對(duì)這些信號(hào)不要使用定制邏輯,而是使用Xilinx提供的分析IP。跟蹤信號(hào)在TRACE總線上被分組。表4.10給出了MicroBlaze的跟蹤信號(hào)。跟蹤接口
--跟蹤信號(hào)信號(hào)名稱描述VHDL類型方向Trace_Valid_Instr跟蹤端口的有效指令std_logicoutputTrace_Instruction指令碼std_logic_vector(0to31)outputTrace_PC程序計(jì)數(shù)器std_logic_vector(0to31)outputTrace_Reg_Write寫(xiě)寄存器文件指令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分支指令評(píng)估為真,例如:采納std_logic_vector(0to31)outputTrace_Delay_Slot指令時(shí)延遲隙的采納分支std_logic_vector(0to31)outputTrace_Data_Access數(shù)據(jù)側(cè)存儲(chǔ)器訪問(wèn)有效std_logicoutput跟蹤接口
--跟蹤信號(hào)Trace_Data_Address數(shù)據(jù)側(cè)存儲(chǔ)器訪問(wèn)地址std_logic_vector(0to31)outputTrace_Data_Write_Value數(shù)據(jù)側(cè)的寫(xiě)訪問(wèn)值std_logic_vector(0to31)outputTrace_Data_Byte_Enable數(shù)據(jù)側(cè)存儲(chǔ)器訪問(wèn)字節(jié)使能std_logicoutputTrace_Data_Read數(shù)據(jù)側(cè)的存儲(chǔ)器訪問(wèn)為讀操作std_logicoutputTrace_Data_Write數(shù)據(jù)側(cè)的存儲(chǔ)器訪問(wèn)為寫(xiě)操作std_logicoutputTrace_DCache_Req數(shù)據(jù)存儲(chǔ)器地址在數(shù)據(jù)緩存范圍內(nèi)std_logicoutputTrace_DCache_Hit數(shù)據(jù)存儲(chǔ)器地址在數(shù)據(jù)緩存中std_logicoutputTrace_ICache_Req指令存儲(chǔ)器地址在指令緩存范圍內(nèi)std_logicoutputTrace_ICache_Hit指令存儲(chǔ)器地址在指令緩存中std_logicoutputTrace_OF_PipeRun流水超前為譯碼階段std_logicoutputTrace_EX_pipeRun流水超前為執(zhí)行階段std_logicoutputTrace_MEM_pipeRun流水超前為存儲(chǔ)器階段std_logicoutputTrace_MB_Halted調(diào)試導(dǎo)致流水線停止std_logicoutput跟蹤接口
--跟蹤異常類型Trace_Exception_Kind[0:4]描述00000FSL異常00001非對(duì)齊異常00010非法操作符異常00011指令總線異常00100數(shù)據(jù)總線異常00101除數(shù)為0異常00110FPU異常00111特權(quán)指令異常01010中斷01011外部非屏蔽斷點(diǎn)01100外部可屏蔽斷點(diǎn)10000數(shù)據(jù)存儲(chǔ)異常10001指令存儲(chǔ)異常10010數(shù)據(jù)TLB缺失異常10011指令TLB缺失異常編程接口
MicroBlaze應(yīng)用二進(jìn)制接口(ApplicationBinaryInterface,ABI)對(duì)于在匯編語(yǔ)言級(jí)開(kāi)發(fā)軟件是非常重要的。MicroBlazeGNU編譯器允許下面所介紹的規(guī)約。由匯編語(yǔ)言程序員所編寫(xiě)的代碼也遵循同樣的規(guī)約,該規(guī)約與編譯器產(chǎn)生的代碼兼容。編程接口
--堆棧規(guī)則表4.12給出了MicroBlaze的堆棧規(guī)則。堆棧幀的ABI規(guī)則定義了協(xié)議,該協(xié)議用來(lái)傳遞參數(shù),保存非易失性存儲(chǔ)器的值和為函數(shù)內(nèi)的本地變量分配空間。編程接口
--堆棧規(guī)則高地址為調(diào)用子例程的功能參數(shù)(Argn…Arg1)(可選的:對(duì)于任何一個(gè)由當(dāng)前程序所調(diào)用程序的最多數(shù)目的參數(shù)要求)先前的堆棧指針鏈接寄存器(R15)被調(diào)者保存寄存器(R31..R19)(可選的:只有那些當(dāng)前程序所使用的寄存器被保存)當(dāng)前程序的本地變量(可選的:如果在程序中定義才出現(xiàn))功能參數(shù)(Argn…Arg1)(可選的:對(duì)于任何一個(gè)由當(dāng)前程序所調(diào)用程序的最多數(shù)量的參數(shù)要求)新堆棧指針鏈接寄存器低地址編程接口
--堆棧規(guī)則那些包含調(diào)用其它子例程的函數(shù)也稱為非葉結(jié)點(diǎn)函數(shù)。這些非葉結(jié)點(diǎn)函數(shù)為自己創(chuàng)建新的堆棧幀。當(dāng)程序開(kāi)始執(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023試用期合同協(xié)議書(shū)七篇
- 2025交通事故自行調(diào)解書(shū)協(xié)議書(shū)12篇
- 個(gè)人股權(quán)轉(zhuǎn)讓協(xié)議書(shū)七篇
- 個(gè)人土地轉(zhuǎn)租協(xié)議范本
- 關(guān)注細(xì)節(jié)的“管理新星”-記工程局勞動(dòng)模范經(jīng)管部部長(zhǎng)孫獻(xiàn)龍
- 跖疣病因介紹
- 四大名著之紅樓春趣經(jīng)典解讀2
- 2023-2024學(xué)年天津市河北區(qū)高二(上)期末語(yǔ)文試卷
- 2023年天津市靜海一中高考語(yǔ)文模擬試卷(一)
- 重慶2020-2024年中考英語(yǔ)5年真題回-教師版-專題02 完形填空
- 湖南省博物館介紹
- 污水處理廠運(yùn)行及問(wèn)題-污水廠的運(yùn)營(yíng)與維護(hù)方案
- 教務(wù)系統(tǒng)方案
- 2024年北京中考記敘文閱讀專題02寫(xiě) 人記事散文(含答案解析)
- 《國(guó)家心力衰竭指南 2023》解讀
- 人才教育培訓(xùn)部門KPI設(shè)計(jì)
- 精神科護(hù)士長(zhǎng)年度總結(jié)
- 音樂(lè)教師職業(yè)生涯發(fā)展報(bào)告
- 特殊約定與條款
- NB-T 47015-2011(JB-T 4709) 壓力容器焊接規(guī)程
- 亞健康人群身心狀況評(píng)測(cè)技術(shù)的研究進(jìn)展
評(píng)論
0/150
提交評(píng)論