版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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的地址输出对齐缓存行大小(即,如果访问地址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协议(线性取)(3)将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中。控制位位低(DCACHE_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中。对于字节和半字访问,数据镜像到字节通道。镜像输出的字节或者半字各自写到所有的四个字节通道或者半字通道。控制位应该为低(DCACHE_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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 激发员工学习动力商业领域的策略
- 科技助力教室清洁智能清洁设备的应用
- 高效排风系统在学生餐厅的应用研究
- 饮食与孩子免疫力的关系研究
- 精准教育下的作业量与学业压力
- 科技背景下的小学劳动教育创新实践
- 科技助力学生食品安全教育
- 2025年度退股协议全新版:养老产业股东权益转让与养老基金管理合同
- 科技辅助教学技能提升方案
- 2025年度股权抵押投资顾问服务合同
- 电力沟施工组织设计-电缆沟
- 《法律援助》课件
- 《高处作业安全》课件
- 春节后收心安全培训
- 小学教师法制培训课件
- 电梯操作证及电梯维修人员资格(特种作业)考试题及答案
- 2024年山东铁投集团招聘笔试参考题库含答案解析
- 2023人教版(PEP)小学英语(三、四、五、六年级)词汇及常用表达法(课本同步)
- GA/T 718-2007枪支致伤力的法庭科学鉴定判据
- 核医学内分泌系统课件
- 新教材教科版五年级下册科学全册课时练(课后作业设计)(含答案)
评论
0/150
提交评论