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

下載本文檔

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

文檔簡(jiǎn)介

1、 本章詳細(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處理器結(jié)構(gòu)采用哈弗結(jié)構(gòu),即為數(shù)據(jù)和指令訪問提供了獨(dú)立的總線接口單元。MicroBlaze處理器支持下面四種存儲(chǔ)器接口: 本地存儲(chǔ)器總線(LMB); AMBA AXI4接口(AXI4); IBM處理器本地總線(PLB); Xilinx的CacheLink(

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

3、模塊(MDM)一起使用; 跟蹤接口用于性能分析; MicroBlaze AXI4存儲(chǔ)器映射的外設(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存儲(chǔ)器映射的緩存接口(M_AXI_DC,M_AXI_IC)可以實(shí)現(xiàn)32位、128位或者256位的主設(shè)備(取決于緩存行的長(zhǎng)度和數(shù)據(jù)寬

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

5、M_AXI_DP端口的信號(hào)及功能。更具體的功能可以參看第二章的內(nèi)容。信號(hào)信號(hào)接口接口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ā)長(zhǎng)度主設(shè)備猝發(fā)長(zhǎng)度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è)備保護(hù)類型主設(shè)備保護(hù)類型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è)備寫地址準(zhǔn)備從設(shè)備寫地址準(zhǔn)備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è)備寫準(zhǔn)備從設(shè)備寫準(zhǔn)備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)準(zhǔn)備主設(shè)備響應(yīng)準(zhǔn)備M_AXI_DP_ARIDM_AXI_DPO主設(shè)備讀地址主設(shè)備讀地址IDM_AXI_DP_ARADDRM_AXI_DPO主設(shè)備讀地址主設(shè)備讀地址M_AXI_DP_ARLENM_AXI_DPO主設(shè)備猝發(fā)長(zhǎng)度主設(shè)備猝發(fā)長(zhǎng)度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è)備保護(hù)類型主設(shè)備保護(hù)類型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è)備讀地址準(zhǔn)備

9、從設(shè)備讀地址準(zhǔn)備M_AXI_DP_RIDM_AXI_DPI從設(shè)備讀從設(shè)備讀ID標(biāo)志標(biāo)志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è)備讀準(zhǔn)備主設(shè)備讀準(zhǔn)備 MicroBlaze AXI4-Stream接口 (M0_AXIS.M15_AXIS, S0_AXIS.S15_AXIS) 實(shí)現(xiàn)32位主設(shè)備或從設(shè)備。 Mn_

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

11、塞模式讀在兩個(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端口的信號(hào)及功能。更具體的功能可以參看第二章的內(nèi)容信號(hào)信號(hào)接口接口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通道寫準(zhǔn)備通道寫準(zhǔn)備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通道寫準(zhǔn)備通道寫準(zhǔn)備 MicroBlaze處理的PLB接口用于字節(jié)使能的32位主設(shè)備。表4.3給出了IPLB總線接口信號(hào)定義。表4.4給出了DPLB總線接口定義。更詳細(xì)的可以參考PLBV46互連和接口資料。信號(hào)信號(hào)接口接口I/O功能(指令側(cè)功能(指令側(cè)PLB接口簡(jiǎn)稱接口簡(jiǎn)稱IPLB) IPLB_M_ABORTIPLBOIPLB放棄總線請(qǐng)求指示放棄總線請(qǐng)求指示IPLB_M_ABUSIPLBOIPLB地址總線地址總線IPLB_M_UABUSIPLBOIPLB高部分地址總線高部分地址總線IPLB_M_BEIPLBO

14、IPLB字節(jié)使能字節(jié)使能IPLB_M_busLockIPLBOIPLB總線鎖定總線鎖定IPLB_M_lockErrIPLBOIPLB總線鎖定錯(cuò)誤指示總線鎖定錯(cuò)誤指示IPLB_M_MsizeIPLBOIPLB主設(shè)備數(shù)據(jù)總線大小主設(shè)備數(shù)據(jù)總線大小IPLB_M_priorityIPLBOIPLB請(qǐng)求優(yōu)先級(jí)請(qǐng)求優(yōu)先級(jí)IPLB_M_rdBurstIPLBOIPLB猝發(fā)式讀傳輸指示猝發(fā)式讀傳輸指示IPLB_M_requestIPLBOIPLB總線請(qǐng)求總線請(qǐng)求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è)備讀錯(cuò)誤指示從設(shè)備讀錯(cuò)誤指示IPLB_MWrErrIPLBIIPLB從設(shè)備寫錯(cuò)誤指示從設(shè)備寫錯(cuò)誤指示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總線超時(shí)總線超時(shí)信號(hào)信號(hào)接口接口I/O功能(數(shù)據(jù)側(cè)功能

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

18、urstDPLBODPLB猝發(fā)式讀傳輸指示猝發(fā)式讀傳輸指示DPLB_M_requestDPLBODPLB總線請(qǐng)求總線請(qǐng)求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è)備讀錯(cuò)誤指示從設(shè)備讀錯(cuò)誤指示DPLB_MWrErrDPLBIDPLB從設(shè)備寫錯(cuò)誤指示從設(shè)備寫錯(cuò)誤指示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總線超時(shí)總線超時(shí) LMB是同步總線,主要用于訪問片上塊RAM資源。LMB有最少的控制總線數(shù)目,使用簡(jiǎn)單協(xié)議保證以單周期訪問本地塊RAM資源。表4.5給出了LMB接口信號(hào)及定義。所有信號(hào)都是高有效。信號(hào)信號(hào)數(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讀進(jìn)行讀進(jìn)行Write_StrobeWrite_Strobenot usedO寫進(jìn)行寫進(jìn)行Data_Read0:31Data_Read0:31Insr0:31I讀數(shù)據(jù)總線讀數(shù)據(jù)總線ReadyDReadyIReadyI下次傳輸準(zhǔn)備下次傳輸準(zhǔn)備WaitDWaitIWaitI等待,直到準(zhǔn)備被接受的傳輸?shù)却?,直到?zhǔn)備被接受的傳輸CEDCEICEI可更正的錯(cuò)誤可更正的錯(cuò)

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

23、到輸出FSLstd_logicoutputFSLn_M_Full當(dāng)設(shè)置時(shí),表示輸出當(dāng)設(shè)置時(shí),表示輸出FSL 的的FIFO滿滿std_logicinput信號(hào)信號(hào)功能功能VHDL類型類型方向方向FSLn_S_Clk時(shí)鐘時(shí)鐘std_logicinputFSLn_S_Read讀響應(yīng)信號(hào)表示,數(shù)據(jù)已經(jīng)從輸入讀響應(yīng)信號(hào)表示,數(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指示標(biāo)志,表明在輸入指示標(biāo)志,表明在輸入FSL中存在數(shù)據(jù)中存在數(shù)據(jù)std_logicinput 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)志被置位。 2. FSL總線讀操作 Micr

25、oBlaze使用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)志被置位。 3. 直接FSL連接 直接FSL連接用來去避免需要FSL總線。在沒有緩沖的情況下,例如兩個(gè)連接的IP核。 在直接FSL連接下不使用FSL的FIFO。無FIFO可以減少延遲和要求實(shí)現(xiàn)的資源。 MicroB

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

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

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

29、回讀數(shù)據(jù)的時(shí)鐘輸出到指令側(cè)返回讀數(shù)據(jù)的FSL std_logicoutputICACHE_FSL_IN_Read讀信號(hào)輸出到指令側(cè)返回讀數(shù)據(jù)的讀信號(hào)輸出到指令側(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時(shí)鐘輸出到指令側(cè)的讀訪問時(shí)鐘輸出到指令側(cè)的讀訪問FSLstd_logicoutputICACHE_FSL_OUT_Write寫新的緩存缺失訪問請(qǐng)求到指令側(cè)的讀訪問寫新的緩存缺失訪問請(qǐng)求到指令側(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í)鐘輸出到數(shù)據(jù)側(cè)返回讀數(shù)據(jù)的時(shí)鐘輸出到數(shù)據(jù)側(cè)返回讀數(shù)據(jù)的FSLstd_logicoutputDCACHE_FSL_IN_Read讀信號(hào)到數(shù)據(jù)側(cè)返回讀數(shù)據(jù)的讀信號(hào)到數(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è)返回?cái)?shù)據(jù)控制位從數(shù)據(jù)側(cè)返回?cái)?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í)鐘輸出到數(shù)據(jù)側(cè)讀訪問時(shí)鐘輸出到數(shù)據(jù)側(cè)讀訪問FSLstd_logicoutputDCACHE_FSL_OU_Write寫新的緩存缺失訪問請(qǐng)求到數(shù)據(jù)側(cè)的讀訪寫新的緩存缺失訪問請(qǐng)求到數(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 所有單獨(dú)的CacheLink訪問遵循基于FSL FIFO的交易協(xié)議,主要包含以下幾點(diǎn): (1) FSL的數(shù)據(jù)和控制信號(hào)上的訪問信息被編碼(例如: DCACHE_FSL_OUT_Data,DCACHE_FSL_OUT_Co

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

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

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

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

38、讀缺失時(shí),緩存控制器執(zhí)行下面的操作: (1)寫字對(duì)齊的或者緩存行對(duì)齊的缺失地址到 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é)議(線性取) (3)將ICACHE_FSL_IN_Data的內(nèi)容保存到緩存中; (4

39、)將相關(guān)的字提交到執(zhí)行單元,以便繼續(xù)執(zhí)行; (5)將剩余的字從ICACHE_FSL_IN_Data保存到緩存中; 當(dāng)讀缺失時(shí),緩存控制器執(zhí)行下面的操作: (1)如果DCACHE_FSL_OUT_Full=1則停止,直到變低; (2)寫字對(duì)齊的或者緩存行對(duì)齊的缺失地址到 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)鍵字提

40、交到執(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保存到緩存中; 當(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ù)緩存總是完全寫入。因此,不管在緩存中命中還是缺失,在Ca

41、cheLink中都有一個(gè)寫操作。 使用DXCL2協(xié)議,在一個(gè)猝發(fā)緩存行寫,緩存控制器執(zhí)行下面的序列: (1)如果DCACHE_FSL_OUT_Full=1則停止,直到變低; (2)寫緩存對(duì)齊的地址到DCACHE_FSL_OUT_Data,控制位 為高(DCACHE_FSL_OUT_ Control=1)表示寫訪問。地 址總線的最高兩位(30:31)用來編碼猝發(fā)訪問:0b10=猝 發(fā)。從一個(gè)單字寫中分出一個(gè)猝發(fā)訪問時(shí),在步驟4中, 對(duì)于第一個(gè)數(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é)議,在一個(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,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中。對(duì)于字節(jié)和半字訪問,數(shù)據(jù)鏡像到字節(jié)通道。鏡像輸出的字節(jié)或者半字各自寫到所有的四個(gè)字節(jié)通道或者半字通道??刂莆粦?yīng)該為低(DCACHE_FSL_OUT_Control=0)用于字或者半字訪問,為高將字節(jié)訪問和猝發(fā)訪問分開。字和字節(jié)訪問由地址的LSB進(jìn)行區(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能在同一時(shí)間控制多個(gè)MicroBlaze處理器。調(diào)試信號(hào)在DEBUG總線上分組。表4.9給出了MicroBlaze的調(diào)試信號(hào)。信號(hào)名稱信號(hào)名稱描述描述VHDL類型類型方向方向Dbg_Clk來自來自MDM的的JTAG時(shí)鐘時(shí)鐘std_logicinputDbg_TDI來自來自MDM的的JTAG TDI信號(hào)信號(hào)std_logicinputDbg_TDO到到MDM的的JTAG TDO信號(hào)信號(hào)std_logicoutputDbg

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

46、該接口非標(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(0 to 31)outputTrace_PC程序計(jì)數(shù)器程序計(jì)數(shù)器std_logic_vector(0 to 31)outputTrace_Reg_Write寫寄存器文件指令寫寄存器文件指令

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

48、類型std_logic_vector(0 to 31)outputTrace_Jump_Taken分支指令評(píng)估為真,例如:采納分支指令評(píng)估為真,例如:采納std_logic_vector(0 to 31)outputTrace_Delay_Slot指令時(shí)延遲隙的采納分支指令時(shí)延遲隙的采納分支std_logic_vector(0 to 31)outputTrace_Data_Access數(shù)據(jù)側(cè)存儲(chǔ)器訪問有效數(shù)據(jù)側(cè)存儲(chǔ)器訪問有效std_logicoutputTrace_Data_Address數(shù)據(jù)側(cè)存儲(chǔ)器訪問地址數(shù)據(jù)側(cè)存儲(chǔ)器訪問地址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è)存儲(chǔ)器訪問字節(jié)使能數(shù)據(jù)側(cè)存儲(chǔ)器訪問字節(jié)使能std_logicoutputTrace_Data_Read數(shù)據(jù)側(cè)的存儲(chǔ)器訪問為讀操作數(shù)據(jù)側(cè)的存儲(chǔ)器訪問為讀操作std_logicoutputTrace_Data_Write數(shù)據(jù)側(cè)的存儲(chǔ)器訪問為寫操作數(shù)據(jù)側(cè)的存儲(chǔ)器訪問為寫操作std_logicoutputTrace_DCache_Req數(shù)據(jù)存儲(chǔ)器地址在數(shù)據(jù)緩存范圍內(nèi)數(shù)據(jù)存儲(chǔ)器地址在數(shù)據(jù)緩存范圍內(nèi)std_logicout

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

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論