MicroBlaze软核处理器接口_第1页
MicroBlaze软核处理器接口_第2页
MicroBlaze软核处理器接口_第3页
MicroBlaze软核处理器接口_第4页
MicroBlaze软核处理器接口_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 本章详细介绍了MicroBlaze软核处理的接口,这些接口包括: (1) AXI4接口; (2) PLB接口; (3) LMB接口; (4) FSL接口; (5) XCL接口; (6) 调试接口和跟踪接口。 这些接口提供了软核处理器与片上、片外外设和存储器的灵活接口。此外,接口也提供了点对点的或者共享总线的数据传输方式。 MicroBlaze处理器结构采用哈弗结构,即为数据和指令访问提供了独立的总线接口单元。MicroBlaze处理器支持下面四种存储器接口: 本地存储器总线(LMB); AMBA AXI4接口(AXI4); IBM处理器本地总线(PLB); Xilinx的CacheLink(

2、XCL)接口; LMB提供了以单时钟周期访问双端口存储器的能力。 AXI4和PLB提供了片上和片外外设和存储器的接口。CacheLink接口和外部存储器控制一起用作专门用途。MicroBlaze处理器支持最多16个简单快速链接FSL或者AXI4-Stream接口端口,每一个端口有主和从接口。MicroBlaze处理器能配置成下面的总线接口: ARMA AXI4接口; 32位版本的PLBV4.6接口; LMB提供简单同步协议用于高效的BRAM传输; FSL或AXI4-Stream提供快速无需仲裁的流通信机制; XCL提供在缓存和外部存储器控制器之间的快速从设备仲裁的流接口; 调试接口和处理器调试

3、模块(MDM)一起使用; 跟踪接口用于性能分析; MicroBlaze AXI4存储器映射的外设接口(M_AXI_DP,M_AXI_IP)实现32位的主接口。这些接口只发出单个地址,所有的交易按顺序完成。 (1) 指令外设接口只执行单字读访问,总是设置使用AXI4-Lite子 集; (2) 数据外设接口执行单字访问,默认设置使用AXI4-Lite子集, 当使能用于LWX和SWX的互斥访问时,使用AXI4。通过设 置合适的字节选通,可以执行半字和字节写操作; AXI4存储器映射的缓存接口(M_AXI_DC,M_AXI_IC)可以实现32位、128位或者256位的主设备(取决于缓存行的长度和数据宽

4、度参数)。 (1) 作为32位主设备,指令缓存接口执行4字或8字(取决于缓 存行长度)猝发读访问。作为128位或256位主设备,只执 行单个读访问。当使能流缓存时,这个接口能提供最多2个 地址或者8个地址。 (2) 作为32位主设备,数据缓存接口执行单字访问或4/8字猝发 访问(取决于缓存行长度)。当使用写通过缓存时,不执 行写猝发访问。通过设置合适的字节选通,可以执行字、 半字和字节写操作。当读时,接口最多发出2个地址,而当 写时,最多发出32个地址。使能互斥访问用于LWX和SWX 指令。 M_AXI_DP、M_AXI_IP、M_AXI_DC和M_AXI_IC接口信号功能一样,表4.1给出了

5、M_AXI_DP端口的信号及功能。更具体的功能可以参看第二章的内容。信号信号接口接口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主设备缓

6、存类型主设备缓存类型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主设备写

7、有效主设备写有效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

8、_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主设备读地址有效主设备读地址有效M_AXI_DP_ARREADYM_AXI_DPI从设备读地址准备

9、从设备读地址准备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主设备读准备主设备读准备 MicroBlaze AXI4-Stream接口 (M0_AXIS.M15_AXIS, S0_AXIS.S15_AXIS) 实现32位主设备或从设备。 Mn_

10、AXIS_TLAST,Sn_AXIS_TLAST信号直接对应于同等的FSLn_M_Control和FSLn_S_Control信号。 1写操作 MicroBlaze通过使用put或putd指令执行写流接口操作。写操作将寄存器的内容传到输出AXI4接口。对于阻塞模式写(put或cput指令)在单个时钟周期内完成传输,且接口不忙。如果接口忙,处理器停止,一直到其可用为止。非阻塞指令(前缀n),即使在忙时,也总是在单周期内完成传输。如果接口忙,禁止写并且设置MSR内的进位位。 2读操作 MicroBlaze通过使用get或getd指令执行读流接口操作。读操作将输入AXI4接口内容传输到寄存器。对于阻

11、塞模式读在两个时钟周期内完成传输,且数据可用。如果数据不可用时,处理器在这条指令上停下来,一直到其可用为止。在非阻塞模式下(前缀n),不管数据是否可用,也总是在一个或者两个时钟周期内完成传输。如果数据不可用,不发生数据传输,并且设置MSR内的进位位。 表4.2给出了M_AXI_Stream端口的信号及功能。更具体的功能可以参看第二章的内容信号信号接口接口I/O描述描述Mn_AXIS_TLASTM0_AXIS.M15_AXISO主设备接口输出主设备接口输出AXI4通道写最后通道写最后Mn_AXIS_TDATAM0_AXIS.M15_AXISO主设备接口输出主设备接口输出AXI4通道写数据通道写数

12、据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_AXI

13、S_TREADYM0_AXIS.M15_AXISO从设备接口输出从设备接口输出AXI4通道写准备通道写准备 MicroBlaze处理的PLB接口用于字节使能的32位主设备。表4.3给出了IPLB总线接口信号定义。表4.4给出了DPLB总线接口定义。更详细的可以参考PLBV46互连和接口资料。信号信号接口接口I/O功能(指令侧功能(指令侧PLB接口简称接口简称IPLB) IPLB_M_ABORTIPLBOIPLB放弃总线请求指示放弃总线请求指示IPLB_M_ABUSIPLBOIPLB地址总线地址总线IPLB_M_UABUSIPLBOIPLB高部分地址总线高部分地址总线IPLB_M_BEIPLBO

14、IPLB字节使能字节使能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_TAttributeIPLB

15、OIPLB传输属性总线传输属性总线IPLB_M_typeIPLBOIPLB传输类型传输类型IPLB_M_wrBurstIPLBOIPLB猝发式写传输指示猝发式写传输指示IPLB_M_wrDBusIPLBOIPLB写数据总线写数据总线IPLB_MbusyIPLBIIPLB从设备忙指示从设备忙指示IPLB_MRdErrIPLBIIPLB从设备读错误指示从设备读错误指示IPLB_MWrErrIPLBIIPLB从设备写错误指示从设备写错误指示IPLB_MIRQIPLBIIPLB从设备中断指示从设备中断指示IPLB_MWRBTermIPLBIIPLB终止写猝发指示终止写猝发指示IPLB_MWrDAckI

16、PLBIIPLB写数据应答写数据应答IPLB_MAddrAckIPLBIIPLB地址应答地址应答IPLB_MRdBTermIPLBIIPLB终止读猝发指示终止读猝发指示IPLB_MRdDAckIPLBIIPLB读数据应答读数据应答IPLB_MRdDBusIPLBIIPLB读数据总线读数据总线IPLB_MRdEdAddrIPLBIIPLB读字总线读字总线IPLB_MRearbitrateIPLBIIPLB再总裁指示再总裁指示IPLB_MSSizeIPLBIIPLB从设备数据总线大小从设备数据总线大小IPLB_MTimeoutIPLBIIPLB总线超时总线超时信号信号接口接口I/O功能(数据侧功能

17、(数据侧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_rdB

18、urstDPLBODPLB猝发式读传输指示猝发式读传输指示DPLB_M_requestDPLBODPLB总线请求总线请求DPLB_M_RNWDPLBODPLB读读/非写非写DPLB_M_sizeDPLBODPLB传输大小传输大小DPLB_M_TAttributeDPLBODPLB传输属性总线传输属性总线DPLB_M_typeDPLBODPLB传输类型传输类型DPLB_M_wrBurstDPLBODPLB猝发式写传输指示猝发式写传输指示DPLB_M_wrDBusIPLBODPLB写数据总线写数据总线DPLB_MbusyDPLBIDPLB从设备忙指示从设备忙指示 DPLB_MRdErrDPLBID

19、PLB从设备读错误指示从设备读错误指示DPLB_MWrErrDPLBIDPLB从设备写错误指示从设备写错误指示DPLB_MIRQDPLBIDPLB从设备中断指示从设备中断指示DPLB_MWRBTermDPLBIDPLB终止写猝发指示终止写猝发指示DPLB_MWrDAckDPLBIDPLB写数据应答写数据应答DPLB_MAddrAckDPLBIDPLB地址应答地址应答DPLB_MRdBTermDPLBIDPLB终止读猝发指示终止读猝发指示DPLB_MRdDAckDPLBIDPLB读数据应答读数据应答DPLB_MRdDBusDPLBIDPLB读数据总线读数据总线DPLB_MRdEdAddrDPLB

20、IDPLB读字总线读字总线DPLB_MRearbitrateDPLBIDPLB再总裁指示再总裁指示DPLB_MSSizeDPLBIDPLB从设备数据总线大小从设备数据总线大小DPLB_MTimeoutDPLBIDPLB总线超时总线超时 LMB是同步总线,主要用于访问片上块RAM资源。LMB有最少的控制总线数目,使用简单协议保证以单周期访问本地块RAM资源。表4.5给出了LMB接口信号及定义。所有信号都是高有效。信号信号数据接口数据接口指令接口指令接口类型类型功能功能Addr0:31Data_Addr0:31Insr_Addr0:31O地址总线地址总线Byte_Enable0:31Byte_En

21、able0:3not usedO字节使能字节使能Data_Write0:31Data_Write0:31not usedO写数据总线写数据总线ASD_ASI_ASO地址选通地址选通Read_StrobeRead_StrobeIFetchO读进行读进行Write_StrobeWrite_Strobenot usedO写进行写进行Data_Read0:31Data_Read0:31Insr0:31I读数据总线读数据总线ReadyDReadyIReadyI下次传输准备下次传输准备WaitDWaitIWaitI等待,直到准备被接受的传输等待,直到准备被接受的传输CEDCEICEI可更正的错误可更正的错

22、误UE不可更正的错误不可更正的错误ClkClkClkI总线时钟总线时钟 FSL总线在输出FIFO和输入FIFO之间提供点对点的通信通道,更详细的信息参考IP核参考资料。表4.6给出了主FSL信号接口,表4.7给出了从FSL接口信号。 信号信号功能功能VHDL类型类型方向方向FSLn_M_Clk时钟时钟std_logicinputFSLn_M_Write写使能信号,表示数据正被写到输出写使能信号,表示数据正被写到输出FSLstd_logicoutputFSLn_M_Data数据写到输出数据写到输出FSLstd_logic_vectoroutputFSLn_M_Control控制位写到输出控制位写

23、到输出FSLstd_logicoutputFSLn_M_Full当设置时,表示输出当设置时,表示输出FSL 的的FIFO满满std_logicinput信号信号功能功能VHDL类型类型方向方向FSLn_S_Clk时钟时钟std_logicinputFSLn_S_Read读响应信号表示,数据已经从输入读响应信号表示,数据已经从输入FSL读出读出std_logicoutputFSLn_S_Data在输入在输入FSL的顶部的现在可用的数据的顶部的现在可用的数据std_logic_vectorinputFSLn_S_Control控制比特,输入控制比特,输入FSL顶部的数据现在可用顶部的数据现在可用s

24、td_logicinputFSLn_S_Exists指示标志,表明在输入指示标志,表明在输入FSL中存在数据中存在数据std_logicinput 1. FSL总线写操作 MicroBlaze使用put或putd指令,执行写FSL的操作。写FSL操作将寄存器的内容传送到输出FSL总线上。当FSL的FIFO非满状态时,在阻塞传输模式下只需要一个时钟周期就能完成数据传输。如果FSL的FIFO满时,处理器停下来等待,直到FSL的满标志变成低。非阻塞传输指令(前缀n)在一个时钟周期下完成传输(即使FSL为满)。如果FSL为满时,写操作被禁止,且MSR的进位标志被置位。 2. FSL总线读操作 Micr

25、oBlaze使用get或getd指令,执行读FSL的操作。读FSL操作将输入FSL总线的内容传输到通用寄存器中。当FSL的FIFO非满状态时,在阻塞传输模式下只需要2个时钟周期就能完成数据读传输。如果FSL的FIFO满时,处理器停下来等待,直到FSL的满标志变成低。非阻塞传输指令(前缀n)在2个时钟周期下完成传输(即使FSL为空)。如果FSL为空时,不产生读数据传输,且MSR的进位标志被置位。 3. 直接FSL连接 直接FSL连接用来去避免需要FSL总线。在没有缓冲的情况下,例如两个连接的IP核。 在直接FSL连接下不使用FSL的FIFO。无FIFO可以减少延迟和要求实现的资源。 MicroB

26、laze处理器的每一个FSL接口能使用FSL直接连接或FSL总线。 MicroBlaze的DWFSL接口是直接FSL连接的初始源,它只能连接到DWFSL目标。DWFSL的初始源和目标有同样的信号名(与MFSL信号一样)。MicroBlaze使用DWFSL接口通过put或putd命令写数据到目标。 MicroBlaze的DRFSL接口是一个FSL连接的目标,它只能连接到DRFSL的初始源。DRFSL的初始源和目标有同样的信号名(与SFSL信号一样)。MicroBlaze使用DRFSL接口通过get或getd命令从初始源读数据。 Xilinx的CacheLink(XCL)接口就是使用直接FSL连接

27、实现的。 对外部存储器的访问来说,XCL接口是高性能的解决方案。XCL通过使用集成的FSL缓冲区直接和存储器控制器连接,例如MPMC。这种方法有最低的延迟和最小数目的例化。图4.1给出了使用集成FSL缓冲区的XCL连接原理图。 存储器控制器存储器控制器FSLFSLMicroBlazeBEGIN microblaze . BUS_INTERFACE IXCL = myIXCL . ENDBEGIN mpmc . BUS_INTERFACE XCL0 = myIXCL.END图图4.1使用集成使用集成FSL缓冲区的缓冲区的XCL连接原理连接原理 当缓存使能时,XCL接口可以使用。可以在指令侧或数据

28、侧使用一个XCL缓存。 存储器位置的访问,由指令缓存参数C_ICACHE_ALWAYS_USED和数据缓存参数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时钟输出到指令侧返

29、回读数据的时钟输出到指令侧返回读数据的FSL std_logicoutputICACHE_FSL_IN_Read读信号输出到指令侧返回读数据的读信号输出到指令侧返回读数据的FSL std_logicoutputICACHE_FSL_IN_Data指令侧返回指令侧返回FSL读数据读数据std_logic_vector(0:31)inputICACHE_FSL_IN_Control指令侧返回指令侧返回FSL读数据的控制位,保留。读数据的控制位,保留。std_logicinputICACHE_FSL_IN_Exists更多的数据存在指令侧的返回更多的数据存在指令侧的返回FSLstd_logicinp

30、utICACHE_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_Full

31、FSL访问缓冲为指令侧的读访问满。访问缓冲为指令侧的读访问满。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_log

32、icinputDCACHE_FSL_IN_Exists更多数据存在于数据侧的返回更多数据存在于数据侧的返回FSLstd_logicinputDCACHE_FSL_OUT_Clk时钟输出到数据侧读访问时钟输出到数据侧读访问FSLstd_logicoutputDCACHE_FSL_OU_Write写新的缓存缺失访问请求到数据侧的读访写新的缓存缺失访问请求到数据侧的读访问问FSLstd_logicoutputDCACHE_FSL_OUT_Data缓存缺失访问(读地址缓存缺失访问(读地址/写地址写地址+写数据写数据+字字节写使能)到数据侧读访问节写使能)到数据侧读访问FSLstd_logic_vect

33、or(0:31)outputDCACHE_FSL_OUT_ControlFSL控制比特到数据侧读访问控制比特到数据侧读访问FSL。使用。使用地址比特地址比特30:31为读为读/写和字节使能编码。写和字节使能编码。std_logicoutputDCACHE_FSL_OUT_Full用于数据侧读访问的用于数据侧读访问的FSL访问缓冲区为满访问缓冲区为满std_logicinput 所有单独的CacheLink访问遵循基于FSL FIFO的交易协议,主要包含以下几点: (1) FSL的数据和控制信号上的访问信息被编码(例如: DCACHE_FSL_OUT_Data,DCACHE_FSL_OUT_Co

34、ntrol, ICACHE_FSL_IN_Data和ICACHE_FSL_IN _Control)。 (2) 通过拉高写使能信号(DCACHE_FSL_OUT_Write),信息 被发送(保存)。 (3) 如果来自接收方的满信号无效 (DCACHE_FSL_OUT_FULL=0),则发送方只允许写。指 令缓存控制器不使用满信号标志。 (4) 使用ICACHE_FSL_IN_Read和DCACHE_FSL_IN_Read 取决于所选择的接口协议: 使用IXCL和DXCL协议,通过拉高读信号信息被接收(加载)。该信号为低,除非当发送者示意有新数据存在。 使用IXCL2和DXCL2协议,拉低读信号表

35、示接收方不能接收新的数据。当读信号为高时,新数据是只读的,发送者示意有新数据存在。 (5) 只要发送方示意有新数据存在(例如 ICACHE_FSL_IN_Exists=1),接收方只允许读。 Xilinx的CacheLink解决方案中,每个缓存控制器使用一个流入(从)和流出(主)FSL。流出FSL用于发送访问请求,而流入FSL用于接收请求的缓存行。FSL的数据和控制信号上,XCL也使用交易信息的特定编码。 在XCL协议中,用于读操作的缓存行为4/8个字长。取决于所选择的接口协议,使用第一个关键字(Critical word first)或者线性顺序(in linear order),取出每个缓

36、存行。 (1) IXCL和DXCL协议使用第一个关键字协议(C_ICACHE_INTERFACE=0或者C_DCACHE_INTERFACE=0)。每个缓存行希望由第一个关键字开始(即,如果访问地址0 x348缺失4个字的缓存行,则返回的缓存行应该是下面的地址序列: 0 x348,0 x34c,0 x340,0 x344)。 缓存控制器发送第一个字到执行单元,同时把它存在缓存存储器中。这样使得只要第一个字返回,就可以继续执行。只要接收到这些字,缓存控制器使用剩余的3或7个字填充缓存行。 (2) 线性取使用IXCL2和DXCL2协议,(C_ICACHE_INTERFACE=1或者C_ DCACH

37、E_INTERFACE =1)。CacheLink的地址输出对齐缓存行大小(即,如果访问地址0 x348缺失4个字的缓存行,择CacheLink的地址输出是0 x340)。缓存控制器将数据保存在缓存控制器中,当可用时,将请求字提交给执行单元。 当C_DACHE_USE_WRITEBACK设置为1时,使用猝发写能保存整个缓存行和一个单字。每个缓存行总是以线性顺序保存,CacheLink的地址输出对齐缓存行大小。当C_DACHE_USE_WRITEBACK清零时,在Cache上的所有写操作是单字操作。当使用写回时C_DACHE_INTERFACE必须设置为1(因为猝发写只能用DXCL2协议)。 当

38、读缺失时,缓存控制器执行下面的操作: (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

39、)将相关的字提交到执行单元,以便继续执行; (5)将剩余的字从ICACHE_FSL_IN_Data保存到缓存中; 当读缺失时,缓存控制器执行下面的操作: (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)将关键字提

40、交到执行单元,以便继续执行; (6)重复步骤4和5,处理在缓存行中剩余的3或7个字; 使用DXCL2协议(线性取) (4)将DCACHE_FSL_IN_Data的内容保存到缓存中; (5)将请求字提交到执行单元,以便继续执行; (6)将剩余的字从DCACHE_FSL_IN_Data保存到缓存中; 当C_DCACHE_INTERFACE设置为1时,CacheLink能执行猝发写或者单字写。当设置C_DCACHE_USE_WRITEBACK=1时,使用猝发写,整个缓存行有效。 当C_DCACHE_USE_WRITEBACK=0时,写数据到数据缓存总是完全写入。因此,不管在缓存中命中还是缺失,在Ca

41、cheLink中都有一个写操作。 使用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则停止,直到变

42、低; (4)写数据被保存在DCACHE_FSL_OUT_Data中。控制位位 低(DCACHE_FSL_OUT_ Control=0),表示猝发访问。 (5)重复步骤3和4用于缓存行中随后的字。 使用DXCL或者DXCL2协议,在一个单字写时,缓存控制器执行下面的序列: (1)如果DCACHE_FSL_OUT_Full=1则停止,直到变低; (2)写缺失的地址到DCACHE_FSL_OUT_Data,控制位为高 (DCACHE_FSL_OUT_ Control=1)表示写访问。地址总线 的最高两位(30:31)用来编码字节或半字使能:0b00=字节 0b01=字节1或者半字0,0 x10=字节

43、2和0 x11=字节3或者半 字1。选择半字或者字节访问基于步骤4中用于数据字的控 制位。 (3)如果DCACHE_FSL_OUT_Full=1则停止,直到变低; 4写数据被保存在DCACHE_FSL_OUT_Data中。对于字节和半字访问,数据镜像到字节通道。镜像输出的字节或者半字各自写到所有的四个字节通道或者半字通道。控制位应该为低(DCACHE_FSL_OUT_Control=0)用于字或者半字访问,为高将字节访问和猝发访问分开。字和字节访问由地址的LSB进行区分(0=字,1=半字)。 MicroBlaze的调试接口用来和Xilinx微处理调试 (Xilinx Microprocesso

44、r Debug, MDM)的IP核。MDM由Xilinx处理器调试器(Xilinx Microprocessor Debuger,XMD) 通过FPGA的JTAG端口控制。MDM能在同一时间控制多个MicroBlaze处理器。调试信号在DEBUG总线上分组。表4.9给出了MicroBlaze的调试信号。信号名称信号名称描述描述VHDL类型类型方向方向Dbg_Clk来自来自MDM的的JTAG时钟时钟std_logicinputDbg_TDI来自来自MDM的的JTAG TDI信号信号std_logicinputDbg_TDO到到MDM的的JTAG TDO信号信号std_logicoutputDbg

45、_Reg_En来自来自MDM的调试寄存器使能信号的调试寄存器使能信号std_logicinputDbg_Shift来自来自MDM的的JTAG BSCAN 移位信号移位信号std_logicinputDbg_Capture来自来自MDM的的JTAG BSCAN捕获信号捕获信号std_logicinputDbg_Update来自来自MDM的的JTAG BSCAN更新信号更新信号std_logicinputDbg_Rst来自来自MDM的复位信号(高有效,至少的复位信号(高有效,至少维持一个时钟周期)维持一个时钟周期)std_logicinput MicroBlaze核输出大量的内部信号用于跟踪。由于

46、该接口非标准化,所以Xilinx推荐对这些信号不要使用定制逻辑,而是使用Xilinx提供的分析IP。跟踪信号在TRACE总线上被分组。表4.10给出了MicroBlaze的跟踪信号。 信号名称信号名称描述描述VHDL类型类型方向方向Trace_Valid_Instr跟踪端口的有效指令跟踪端口的有效指令std_logicoutputTrace_Instruction指令码指令码std_logic_vector(0 to 31)outputTrace_PC程序计数器程序计数器std_logic_vector(0 to 31)outputTrace_Reg_Write写寄存器文件指令写寄存器文件指令

47、std_logicoutputTrace_Reg_Addr目标寄存器地址目标寄存器地址std_logic_vector(0 to 4)outputTrace_MSR_Reg机器状态寄存器机器状态寄存器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数据侧存储器访问有效数据侧存储器访问有效std_logicoutputTrace_Data_Address数据侧存储器访问地址数据侧存储器访问地址std_logic_vector(0 to 31)outputTr

49、ace_Data_Write_Value数据侧的写访问值数据侧的写访问值std_logic_vector(0 to 31) outputTrace_Data_Byte_Enable数据侧存储器访问字节使能数据侧存储器访问字节使能std_logicoutputTrace_Data_Read数据侧的存储器访问为读操作数据侧的存储器访问为读操作std_logicoutputTrace_Data_Write数据侧的存储器访问为写操作数据侧的存储器访问为写操作std_logicoutputTrace_DCache_Req数据存储器地址在数据缓存范围内数据存储器地址在数据缓存范围内std_logicout

50、putTrace_DCache_Hit数据存储器地址在数据缓存中数据存储器地址在数据缓存中std_logicoutputTrace_ICache_Req指令存储器地址在指令缓存范围内指令存储器地址在指令缓存范围内std_logicoutputTrace_ICache_Hit指令存储器地址在指令缓存中指令存储器地址在指令缓存中std_logicoutputTrace_OF_PipeRun流水超前为译码阶段流水超前为译码阶段std_logicoutputTrace_EX_pipeRun流水超前为执行阶段流水超前为执行阶段std_logicoutputTrace_MEM_pipeRun流水超前为存储

51、器阶段流水超前为存储器阶段std_logicoutputTrace_MB_Halted调试导致流水线停止调试导致流水线停止std_logicoutputTrace_Exception_Kind0:4描述描述00000FSL异常异常00001非对齐异常非对齐异常00010非法操作符异常非法操作符异常00011指令总线异常指令总线异常00100数据总线异常数据总线异常00101除数为除数为0异常异常00110FPU异常异常00111特权指令异常特权指令异常01010中断中断01011外部非屏蔽断点外部非屏蔽断点01100外部可屏蔽断点外部可屏蔽断点10000数据存储异常数据存储异常10001指令存

52、储异常指令存储异常10010数据数据TLB缺失异常缺失异常10011指令指令TLB缺失异常缺失异常 MicroBlaze应用二进制接口(Application Binary Interface, ABI)对于在汇编语言级开发软件是非常重要的。MicroBlaze GNU编译器允许下面所介绍的规约。由汇编语言程序员所编写的代码也遵循同样的规约,该规约与编译器产生的代码兼容。 表4.12给出了MicroBlaze的堆栈规则。堆栈帧的ABI规则定义了协议,该协议用来传递参数,保存非易失性存储器的值和为函数内的本地变量分配空间。高地址高地址为调用子例程的功能参数(为调用子例程的功能参数(Arg nAr

53、g1)(可选的:对于任何一个由当前程序所调用程序的最多数目的参数要求可选的:对于任何一个由当前程序所调用程序的最多数目的参数要求)先前的堆栈指针先前的堆栈指针链接寄存器(链接寄存器(R15)被调者保存寄存器(被调者保存寄存器(R31.R19)(可选的:只有那些当前程序所使用的寄存器被保存可选的:只有那些当前程序所使用的寄存器被保存)当前程序的本地变量当前程序的本地变量(可选的:如果在程序中定义才出现可选的:如果在程序中定义才出现)功能参数(功能参数(ArgnArg1)(可选的:对于任何一个由当前程序所调用程序的最多数量的参数要求可选的:对于任何一个由当前程序所调用程序的最多数量的参数要求)新堆栈指针新堆栈指针链

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论