MicroBlaze软核处理器接口行业研究

上传人:汽*** 文档编号:567712517 上传时间:2024-07-22 格式:PPT 页数:67 大小:2.72MB
返回 下载 相关 举报
MicroBlaze软核处理器接口行业研究_第1页
第1页 / 共67页
MicroBlaze软核处理器接口行业研究_第2页
第2页 / 共67页
MicroBlaze软核处理器接口行业研究_第3页
第3页 / 共67页
MicroBlaze软核处理器接口行业研究_第4页
第4页 / 共67页
MicroBlaze软核处理器接口行业研究_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《MicroBlaze软核处理器接口行业研究》由会员分享,可在线阅读,更多相关《MicroBlaze软核处理器接口行业研究(67页珍藏版)》请在金锄头文库上搜索。

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

2、Blaze处理器支持下面四种存储器接口:本地存储器总线(LMB);AMBA AXI4接口(AXI4);IBM处理器本地总线(PLB);Xilinx的CacheLink(XCL)接口;3 3谷风优质谷风优质MicroBlaze软核处理器接口 LMB提供了以单时钟周期访问双端口存储器的能力。 AXI4和PLB提供了片上和片外外设和存储器的接口。CacheLink接口和外部存储器控制一起用作专门用途。MicroBlaze处理器支持最多16个简单快速链接FSL或者AXI4-Stream接口端口,每一个端口有主和从接口。4 4谷风优质谷风优质MicroBlaze软核处理器接口MicroBlaze处理器能

3、配置成下面的总线接口:ARMA AXI4接口;32位版本的PLBV4.6接口;LMB提供简单同步协议用于高效的BRAM传输;FSL或AXI4-Stream提供快速无需仲裁的流通信机制;XCL提供在缓存和外部存储器控制器之间的快速从设备仲裁的流接口;调试接口和处理器调试模块(MDM)一起使用;跟踪接口用于性能分析;5 5谷风优质谷风优质AXI4接口 -存储器映射接口 MicroBlaze AXI4存储器映射的外设接口(M_AXI_DP,M_AXI_IP)实现32位的主接口。这些接口只发出单个地址,所有的交易按顺序完成。 (1) 指令外设接口只执行单字读访问,总是设置使用AXI4-Lite子 集;

4、 (2) 数据外设接口执行单字访问,默认设置使用AXI4-Lite子集, 当使能用于LWX和SWX的互斥访问时,使用AXI4。通过设 置合适的字节选通,可以执行半字和字节写操作;6 6谷风优质谷风优质AXI4接口 -存储器映射接口 AXI4存储器映射的缓存接口(M_AXI_DC,M_AXI_IC)可以实现32位、128位或者256位的主设备(取决于缓存行的长度和数据宽度参数)。 (1) 作为32位主设备,指令缓存接口执行4字或8字(取决于缓 存行长度)猝发读访问。作为128位或256位主设备,只执 行单个读访问。当使能流缓存时,这个接口能提供最多2个 地址或者8个地址。 (2) 作为32位主设

5、备,数据缓存接口执行单字访问或4/8字猝发 访问(取决于缓存行长度)。当使用写通过缓存时,不执 行写猝发访问。通过设置合适的字节选通,可以执行字、 半字和字节写操作。当读时,接口最多发出2个地址,而当 写时,最多发出32个地址。使能互斥访问用于LWX和SWX 指令。7 7谷风优质谷风优质AXI4接口 -存储器映射接口 M_AXI_DP、M_AXI_IP、M_AXI_DC和M_AXI_IC接口信号功能一样,表4.1给出了M_AXI_DP端口的信号及功能。更具体的功能可以参看第二章的内容。8 8谷风优质谷风优质AXI4接口 -存储器映射接口信号信号接口接口I/O描述描述M_AXI_DP_AWIDM

6、_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_

7、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主主设备写有效写有效9 9谷风优质谷风优质AXI4接口 -存储器映射接口M_AXI_DP_WREADYM_AXI_DPI从从设备写准写准备M_AXI_DP_BIDM_AXI_DPI从从设备响响应IDM_AXI_DP_BR

8、ESPM_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_D

9、P_ARCACHEM_AXI_DPO主主设备缓存存类型型M_AXI_DP_ARPORTM_AXI_DPO主主设备保保护类型型M_AXI_DP_ARQOSM_AXI_DPO主主设备服服务质量量M_AXI_DP_ARVAILDM_AXI_DPO主主设备读地址有效地址有效1010谷风优质谷风优质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_

10、RLASTM_AXI_DPI从从设备读最后最后M_AXI_DP_RVALIDM_AXI_DPI从从设备读有效有效M_AXI_DP_RREADYM_AXI_DPO主主设备读准准备1111谷风优质谷风优质AXI4接口 -流接口 MicroBlaze AXI4-Stream接口 (M0_AXIS.M15_AXIS, S0_AXIS.S15_AXIS) 实现32位主设备或从设备。 Mn_AXIS_TLAST,Sn_AXIS_TLAST信号直接对应于同等的FSLn_M_Control和FSLn_S_Control信号。1212谷风优质谷风优质AXI4接口 -流接口 1写操作 MicroBlaze通过使用

11、put或putd指令执行写流接口操作。写操作将寄存器的内容传到输出AXI4接口。对于阻塞模式写(put或cput指令)在单个时钟周期内完成传输,且接口不忙。如果接口忙,处理器停止,一直到其可用为止。非阻塞指令(前缀n),即使在忙时,也总是在单周期内完成传输。如果接口忙,禁止写并且设置MSR内的进位位。1313谷风优质谷风优质AXI4接口 -流接口 2读操作 MicroBlaze通过使用get或getd指令执行读流接口操作。读操作将输入AXI4接口内容传输到寄存器。对于阻塞模式读在两个时钟周期内完成传输,且数据可用。如果数据不可用时,处理器在这条指令上停下来,一直到其可用为止。在非阻塞模式下(前

12、缀n),不管数据是否可用,也总是在一个或者两个时钟周期内完成传输。如果数据不可用,不发生数据传输,并且设置MSR内的进位位。 表4.2给出了M_AXI_Stream端口的信号及功能。更具体的功能可以参看第二章的内容1414谷风优质谷风优质AXI4接口 -流接口信号信号接口接口I/O描述描述Mn_AXIS_TLASTM0_AXIS.M15_AXISO主主设备接口接口输出出AXI4通道写最后通道写最后Mn_AXIS_TDATAM0_AXIS.M15_AXISO主主设备接口接口输出出AXI4通道写数据通道写数据Mn_AXIS_TVALIDM0_AXIS.M15_AXISO主主设备接口接口输出出AXI

13、4通道写有效通道写有效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通道写准通道写准备1515谷风优质谷风优质P

14、LB接口 MicroBlaze处理的PLB接口用于字节使能的32位主设备。表4.3给出了IPLB总线接口信号定义。表4.4给出了DPLB总线接口定义。更详细的可以参考PLBV46互连和接口资料。1616谷风优质谷风优质PLB接口(IPLB)信号信号接口接口I/O功能(指令侧功能(指令侧PLB接口简称接口简称IPLB) IPLB_M_ABORTIPLBOIPLB放弃总线请求指示放弃总线请求指示IPLB_M_ABUSIPLBOIPLB地址总线地址总线IPLB_M_UABUSIPLBOIPLB高部分地址总线高部分地址总线IPLB_M_BEIPLBOIPLB字节使能字节使能IPLB_M_busLock

15、IPLBOIPLB总线锁定总线锁定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_ty

16、peIPLBOIPLB传输类型传输类型IPLB_M_wrBurstIPLBOIPLB猝发式写传输指示猝发式写传输指示IPLB_M_wrDBusIPLBOIPLB写数据总线写数据总线1717谷风优质谷风优质PLB接口(IPLB)IPLB_MbusyIPLBIIPLB从设备忙指示从设备忙指示IPLB_MRdErrIPLBIIPLB从设备读错误指示从设备读错误指示IPLB_MWrErrIPLBIIPLB从设备写错误指示从设备写错误指示IPLB_MIRQIPLBIIPLB从设备中断指示从设备中断指示IPLB_MWRBTermIPLBIIPLB终止写猝发指示终止写猝发指示IPLB_MWrDAckIPLB

17、IIPLB写数据应答写数据应答IPLB_MAddrAckIPLBIIPLB地址应答地址应答IPLB_MRdBTermIPLBIIPLB终止读猝发指示终止读猝发指示IPLB_MRdDAckIPLBIIPLB读数据应答读数据应答IPLB_MRdDBusIPLBIIPLB读数据总线读数据总线IPLB_MRdEdAddrIPLBIIPLB读字总线读字总线IPLB_MRearbitrateIPLBIIPLB再总裁指示再总裁指示IPLB_MSSizeIPLBIIPLB从设备数据总线大小从设备数据总线大小IPLB_MTimeoutIPLBIIPLB总线超时总线超时1818谷风优质谷风优质PLB接口(DPLB

18、)信号信号接口接口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

19、请求优先级请求优先级DPLB_M_rdBurstDPLBODPLB猝发式读传输指示猝发式读传输指示DPLB_M_requestDPLBODPLB总线请求总线请求DPLB_M_RNWDPLBODPLB读读/非写非写DPLB_M_sizeDPLBODPLB传输大小传输大小DPLB_M_TAttributeDPLBODPLB传输属性总线传输属性总线DPLB_M_typeDPLBODPLB传输类型传输类型1919谷风优质谷风优质PLB接口(DPLB)DPLB_M_wrBurstDPLBODPLB猝发式写传输指示猝发式写传输指示DPLB_M_wrDBusIPLBODPLB写数据总线写数据总线DPLB_M

20、busyDPLBIDPLB从设备忙指示从设备忙指示 DPLB_MRdErrDPLBIDPLB从设备读错误指示从设备读错误指示DPLB_MWrErrDPLBIDPLB从设备写错误指示从设备写错误指示DPLB_MIRQDPLBIDPLB从设备中断指示从设备中断指示DPLB_MWRBTermDPLBIDPLB终止写猝发指示终止写猝发指示DPLB_MWrDAckDPLBIDPLB写数据应答写数据应答DPLB_MAddrAckDPLBIDPLB地址应答地址应答DPLB_MRdBTermDPLBIDPLB终止读猝发指示终止读猝发指示DPLB_MRdDAckDPLBIDPLB读数据应答读数据应答DPLB_M

21、RdDBusDPLBIDPLB读数据总线读数据总线DPLB_MRdEdAddrDPLBIDPLB读字总线读字总线DPLB_MRearbitrateDPLBIDPLB再总裁指示再总裁指示DPLB_MSSizeDPLBIDPLB从设备数据总线大小从设备数据总线大小DPLB_MTimeoutDPLBIDPLB总线超时总线超时2020谷风优质谷风优质LMB接口 LMB是同步总线,主要用于访问片上块RAM资源。LMB有最少的控制总线数目,使用简单协议保证以单周期访问本地块RAM资源。表4.5给出了LMB接口信号及定义。所有信号都是高有效。2121谷风优质谷风优质LMB接口信号信号数据接口数据接口指令接口

22、指令接口类型类型功能功能Addr0:31Data_Addr0:31Insr_Addr0:31O地址总线地址总线Byte_Enable0:31Byte_Enable0:3not usedO字节使能字节使能Data_Write0:31Data_Write0:31not usedO写数据总线写数据总线ASD_ASI_ASO地址选通地址选通Read_StrobeRead_StrobeIFetchO读进行读进行Write_StrobeWrite_Strobenot usedO写进行写进行Data_Read0:31Data_Read0:31Insr0:31I读数据总线读数据总线ReadyDReadyIRe

23、adyI下次传输准备下次传输准备WaitDWaitIWaitI等待,直到准备被接受的传输等待,直到准备被接受的传输CEDCEICEI可更正的错误可更正的错误UE不可更正的错误不可更正的错误ClkClkClkI总线时钟总线时钟2222谷风优质谷风优质FSL接口 FSL总线在输出FIFO和输入FIFO之间提供点对点的通信通道,更详细的信息参考IP核参考资料。表4.6给出了主FSL信号接口,表4.7给出了从FSL接口信号。 2323谷风优质谷风优质FSL接口(MFSL)信号信号功能功能VHDL类型类型方向方向FSLn_M_Clk时钟时钟std_logicinputFSLn_M_Write写使能信号,

24、表示数据正被写到输出写使能信号,表示数据正被写到输出FSLstd_logicoutputFSLn_M_Data数据写到输出数据写到输出FSLstd_logic_vectoroutputFSLn_M_Control控制位写到输出控制位写到输出FSLstd_logicoutputFSLn_M_Full当设置时,表示输出当设置时,表示输出FSL 的的FIFO满满std_logicinput2424谷风优质谷风优质FSL接口(SFSL)信号信号功能功能VHDL类型类型方向方向FSLn_S_Clk时钟时钟std_logicinputFSLn_S_Read读响应信号表示,数据已经从输入读响应信号表示,数据

25、已经从输入FSL读出读出std_logicoutputFSLn_S_Data在输入在输入FSL的顶部的现在可用的数据的顶部的现在可用的数据std_logic_vectorinputFSLn_S_Control控制比特,输入控制比特,输入FSL顶部的数据现在可用顶部的数据现在可用std_logicinputFSLn_S_Exists指示标志,表明在输入指示标志,表明在输入FSL中存在数据中存在数据std_logicinput2525谷风优质谷风优质FSL接口 1. FSL总线写操作 MicroBlaze使用put或putd指令,执行写FSL的操作。写FSL操作将寄存器的内容传送到输出FSL总线上

26、。当FSL的FIFO非满状态时,在阻塞传输模式下只需要一个时钟周期就能完成数据传输。如果FSL的FIFO满时,处理器停下来等待,直到FSL的满标志变成低。非阻塞传输指令(前缀n)在一个时钟周期下完成传输(即使FSL为满)。如果FSL为满时,写操作被禁止,且MSR的进位标志被置位。2626谷风优质谷风优质FSL接口 2. FSL总线读操作 MicroBlaze使用get或getd指令,执行读FSL的操作。读FSL操作将输入FSL总线的内容传输到通用寄存器中。当FSL的FIFO非满状态时,在阻塞传输模式下只需要2个时钟周期就能完成数据读传输。如果FSL的FIFO满时,处理器停下来等待,直到FSL的

27、满标志变成低。非阻塞传输指令(前缀n)在2个时钟周期下完成传输(即使FSL为空)。如果FSL为空时,不产生读数据传输,且MSR的进位标志被置位。2727谷风优质谷风优质FSL接口 3. 直接FSL连接 直接FSL连接用来去避免需要FSL总线。在没有缓冲的情况下,例如两个连接的IP核。 在直接FSL连接下不使用FSL的FIFO。无FIFO可以减少延迟和要求实现的资源。 MicroBlaze处理器的每一个FSL接口能使用FSL直接连接或FSL总线。 MicroBlaze的DWFSL接口是直接FSL连接的初始源,它只能连接到DWFSL目标。DWFSL的初始源和目标有同样的信号名(与MFSL信号一样)

28、。MicroBlaze使用DWFSL接口通过put或putd命令写数据到目标。2828谷风优质谷风优质FSL接口 MicroBlaze的DRFSL接口是一个FSL连接的目标,它只能连接到DRFSL的初始源。DRFSL的初始源和目标有同样的信号名(与SFSL信号一样)。MicroBlaze使用DRFSL接口通过get或getd命令从初始源读数据。 Xilinx的CacheLink(XCL)接口就是使用直接FSL连接实现的。2929谷风优质谷风优质XCL接口-XCL接口原理 对外部存储器的访问来说,XCL接口是高性能的解决方案。XCL通过使用集成的FSL缓冲区直接和存储器控制器连接,例如MPMC。

29、这种方法有最低的延迟和最小数目的例化。图4.1给出了使用集成FSL缓冲区的XCL连接原理图。 3030谷风优质谷风优质XCL接口-XCL接口原理存储器控制器存储器控制器FSLFSLMicroBlazeBEGIN microblaze . BUS_INTERFACE IXCL = myIXCL . ENDBEGIN mpmc . BUS_INTERFACE XCL0 = myIXCL.END图图4.1使用集成使用集成FSL缓冲区的缓冲区的XCL连接原理连接原理3131谷风优质谷风优质XCL接口-XCL接口原理 当缓存使能时,XCL接口可以使用。可以在指令侧或数据侧使用一个XCL缓存。 存储器位置

30、的访问,由指令缓存参数C_ICACHE_ALWAYS_USED和数据缓存参数C_DCACHE_ALWAYS_USED来确定。如果值为1,表示缓存的存储器范围总是能通过XCL访问。如果值为0,每当缓存被软件禁止时,缓存的存储器范围只能通过AXI4或PLB访问。3232谷风优质谷风优质XCL接口-XCL接口原理 在XCL可访问的范围以外存储器的位置可通过AXI,PLB或者LMB访问。 XCL缓存控制器处理4-8个缓存行。同时由于XCL与PLB和AXI4分开,也减少了对非缓存存储器访问的冲突。表4.8给出了XCL的信号接口。3333谷风优质谷风优质XCL接口-XCL接口原理信号信号描述描述VHDL类

31、型类型方向方向ICACHE_FSL_IN_Clk时钟输出到指令侧返回读数据的时钟输出到指令侧返回读数据的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更多的数据存在指

32、令侧的返回更多的数据存在指令侧的返回FSLstd_logicinputICACHE_FSL_OUT_Clk时钟输出到指令侧的读访问时钟输出到指令侧的读访问FSLstd_logicoutputICACHE_FSL_OUT_Write写新的缓存缺失访问请求到指令侧的读访问写新的缓存缺失访问请求到指令侧的读访问FSLstd_logicoutputICACHE_FSL_OUT_Data缓存缺失访问到指令侧的读访问缓存缺失访问到指令侧的读访问FSLstd_logic_vector(0:31)outputICACHE_FSL_OUT_ControlFSL控制位到指令侧的读访问控制位到指令侧的读访问FSLs

33、td_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_ControlFS

34、L控制位从数据侧返回数据控制位从数据侧返回数据FSLstd_logicinput3434谷风优质谷风优质XCL接口-XCL接口原理DCACHE_FSL_IN_Exists更多数据存在于数据侧的返回更多数据存在于数据侧的返回FSLstd_logicinputDCACHE_FSL_OUT_Clk时钟输出到数据侧读访问时钟输出到数据侧读访问FSLstd_logicoutputDCACHE_FSL_OU_Write写新的缓存缺失访问请求到数据侧的读访写新的缓存缺失访问请求到数据侧的读访问问FSLstd_logicoutputDCACHE_FSL_OUT_Data缓存缺失访问(读地址缓存缺失访问(读地址

35、/写地址写地址+写数据写数据+字字节写使能)到数据侧读访问节写使能)到数据侧读访问FSLstd_logic_vector(0:31)outputDCACHE_FSL_OUT_ControlFSL控制比特到数据侧读访问控制比特到数据侧读访问FSL。使用地。使用地址比特址比特30:31为读为读/写和字节使能编码。写和字节使能编码。std_logicoutputDCACHE_FSL_OUT_Full用于数据侧读访问的用于数据侧读访问的FSL访问缓冲区为满访问缓冲区为满std_logicinput3535谷风优质谷风优质XCL接口-XCL交易 所有单独的CacheLink访问遵循基于FSL FIFO的

36、交易协议,主要包含以下几点: (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),则发送方只允许写。指 令缓存控制器不使用满信号标志。3636谷风优质谷风优质XCL接口-XCL交易 (4) 使用ICACHE_FSL_IN_Read和DCA

37、CHE_FSL_IN_Read 取决于所选择的接口协议:使用IXCL和DXCL协议,通过拉高读信号信息被接收(加载)。该信号为低,除非当发送者示意有新数据存在。使用IXCL2和DXCL2协议,拉低读信号表示接收方不能接收新的数据。当读信号为高时,新数据是只读的,发送者示意有新数据存在。 (5) 只要发送方示意有新数据存在(例如 ICACHE_FSL_IN_Exists=1),接收方只允许读。3737谷风优质谷风优质XCL接口-XCL交易 Xilinx的CacheLink解决方案中,每个缓存控制器使用一个流入(从)和流出(主)FSL。流出FSL用于发送访问请求,而流入FSL用于接收请求的缓存行。

38、FSL的数据和控制信号上,XCL也使用交易信息的特定编码。 在XCL协议中,用于读操作的缓存行为4/8个字长。取决于所选择的接口协议,使用第一个关键字(Critical word first)或者线性顺序(in linear order),取出每个缓存行。3838谷风优质谷风优质XCL接口-XCL交易 (1) IXCL和DXCL协议使用第一个关键字协议(C_ICACHE_INTERFACE=0或者C_DCACHE_INTERFACE=0)。每个缓存行希望由第一个关键字开始(即,如果访问地址0x348缺失4个字的缓存行,则返回的缓存行应该是下面的地址序列: 0x348,0x34c,0x340,0

39、x344)。 缓存控制器发送第一个字到执行单元,同时把它存在缓存存储器中。这样使得只要第一个字返回,就可以继续执行。只要接收到这些字,缓存控制器使用剩余的3或7个字填充缓存行。3939谷风优质谷风优质XCL接口-XCL交易 (2) 线性取使用IXCL2和DXCL2协议,(C_ICACHE_INTERFACE=1或者C_ DCACHE_INTERFACE =1)。CacheLink的地址输出对齐缓存行大小(即,如果访问地址0x348缺失4个字的缓存行,择CacheLink的地址输出是0x340)。缓存控制器将数据保存在缓存控制器中,当可用时,将请求字提交给执行单元。 4040谷风优质谷风优质XC

40、L接口-XCL交易 当C_DACHE_USE_WRITEBACK设置为1时,使用猝发写能保存整个缓存行和一个单字。每个缓存行总是以线性顺序保存,CacheLink的地址输出对齐缓存行大小。当C_DACHE_USE_WRITEBACK清零时,在Cache上的所有写操作是单字操作。当使用写回时C_DACHE_INTERFACE必须设置为1(因为猝发写只能用DXCL2协议)。4141谷风优质谷风优质XCL交易-指令缓存读缺失 当读缺失时,缓存控制器执行下面的操作: (1)写字对齐的或者缓存行对齐的缺失地址到 ICACHE_FSL_OUT_Data,控制位设置低, (ICACHE_FSL_OUT_Co

41、ntrol=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保存到缓存中;4242谷风优质谷风优质XCL交易-数据缓存读缺失 当读缺失时

42、,缓存控制器执行下面的操作: (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)将

43、DCACHE_FSL_IN_Data的内容保存到缓存中; (5)将请求字提交到执行单元,以便继续执行; (6)将剩余的字从DCACHE_FSL_IN_Data保存到缓存中;4343谷风优质谷风优质XCL交易-数据缓存写 当C_DCACHE_INTERFACE设置为1时,CacheLink能执行猝发写或者单字写。当设置C_DCACHE_USE_WRITEBACK=1时,使用猝发写,整个缓存行有效。 当C_DCACHE_USE_WRITEBACK=0时,写数据到数据缓存总是完全写入。因此,不管在缓存中命中还是缺失,在CacheLink中都有一个写操作。4444谷风优质谷风优质XCL交易-数据缓存写

44、 使用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)写数据被保存在DCA

45、CHE_FSL_OUT_Data中。控制位位 低(DCACHE_FSL_OUT_ Control=0),表示猝发访问。 (5)重复步骤3和4用于缓存行中随后的字。4545谷风优质谷风优质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,0

46、x10=字节2和0x11=字节3或者半 字1。选择半字或者字节访问基于步骤4中用于数据字的控 制位。 (3)如果DCACHE_FSL_OUT_Full=1则停止,直到变低;4646谷风优质谷风优质XCL交易-数据缓存写 4写数据被保存在DCACHE_FSL_OUT_Data中。对于字节和半字访问,数据镜像到字节通道。镜像输出的字节或者半字各自写到所有的四个字节通道或者半字通道。控制位应该为低(DCACHE_FSL_OUT_Control=0)用于字或者半字访问,为高将字节访问和猝发访问分开。字和字节访问由地址的LSB进行区分(0=字,1=半字)。4747谷风优质谷风优质调试接口 MicroBl

47、aze的调试接口用来和Xilinx微处理调试 (Xilinx Microprocessor Debug, MDM)的IP核。MDM由Xilinx处理器调试器(Xilinx Microprocessor Debuger,XMD) 通过FPGA的JTAG端口控制。MDM能在同一时间控制多个MicroBlaze处理器。调试信号在DEBUG总线上分组。表4.9给出了MicroBlaze的调试信号。4848谷风优质谷风优质调试接口信号名称信号名称描述描述VHDL类型类型方向方向Dbg_Clk来自来自MDM的的JTAG时钟时钟std_logicinputDbg_TDI来自来自MDM的的JTAG TDI信号

48、信号std_logicinputDbg_TDO到到MDM的的JTAG TDO信号信号std_logicoutputDbg_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的复位信号(高有效,至少的复位信号(高有效,至少

49、维持一个时钟周期)维持一个时钟周期)std_logicinput4949谷风优质谷风优质跟踪接口 MicroBlaze核输出大量的内部信号用于跟踪。由于该接口非标准化,所以Xilinx推荐对这些信号不要使用定制逻辑,而是使用Xilinx提供的分析IP。跟踪信号在TRACE总线上被分组。表4.10给出了MicroBlaze的跟踪信号。 5050谷风优质谷风优质跟踪接口-跟踪信号信号名称信号名称描述描述VHDL类型类型方向方向Trace_Valid_Instr跟踪端口的有效指令跟踪端口的有效指令std_logicoutputTrace_Instruction指令码指令码std_logic_vect

50、or(0 to 31)outputTrace_PC程序计数器程序计数器std_logic_vector(0 to 31)outputTrace_Reg_Write写寄存器文件指令写寄存器文件指令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目标寄存器更新值目标寄存

51、器更新值std_logicoutputTrace_Exception_Taken指令引起采纳异常指令引起采纳异常std_logicoutputTrace_Exception_Kind异常类型异常类型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数据侧存储器访问有

52、效数据侧存储器访问有效std_logicoutput5151谷风优质谷风优质跟踪接口-跟踪信号Trace_Data_Address数据侧存储器访问地址数据侧存储器访问地址std_logic_vector(0 to 31)outputTrace_Data_Write_Value数据侧的写访问值数据侧的写访问值std_logic_vector(0 to 31) outputTrace_Data_Byte_Enable数据侧存储器访问字节使能数据侧存储器访问字节使能std_logicoutputTrace_Data_Read数据侧的存储器访问为读操作数据侧的存储器访问为读操作std_logicout

53、putTrace_Data_Write数据侧的存储器访问为写操作数据侧的存储器访问为写操作std_logicoutputTrace_DCache_Req数据存储器地址在数据缓存范围内数据存储器地址在数据缓存范围内std_logicoutputTrace_DCache_Hit数据存储器地址在数据缓存中数据存储器地址在数据缓存中std_logicoutputTrace_ICache_Req指令存储器地址在指令缓存范围内指令存储器地址在指令缓存范围内std_logicoutputTrace_ICache_Hit指令存储器地址在指令缓存中指令存储器地址在指令缓存中std_logicoutputTrac

54、e_OF_PipeRun流水超前为译码阶段流水超前为译码阶段std_logicoutputTrace_EX_pipeRun流水超前为执行阶段流水超前为执行阶段std_logicoutputTrace_MEM_pipeRun流水超前为存储器阶段流水超前为存储器阶段std_logicoutputTrace_MB_Halted调试导致流水线停止调试导致流水线停止std_logicoutput5252谷风优质谷风优质跟踪接口-跟踪异常类型Trace_Exception_Kind0:4描述描述00000FSL异常异常00001非对齐异常非对齐异常00010非法操作符异常非法操作符异常00011指令总线异

55、常指令总线异常00100数据总线异常数据总线异常00101除数为除数为0异常异常00110FPU异常异常00111特权指令异常特权指令异常01010中断中断01011外部非屏蔽断点外部非屏蔽断点01100外部可屏蔽断点外部可屏蔽断点10000数据存储异常数据存储异常10001指令存储异常指令存储异常10010数据数据TLB缺失异常缺失异常10011指令指令TLB缺失异常缺失异常5353谷风优质谷风优质编程接口 MicroBlaze应用二进制接口(Application Binary Interface, ABI)对于在汇编语言级开发软件是非常重要的。MicroBlaze GNU编译器允许下面所

56、介绍的规约。由汇编语言程序员所编写的代码也遵循同样的规约,该规约与编译器产生的代码兼容。5454谷风优质谷风优质编程接口-堆栈规则 表4.12给出了MicroBlaze的堆栈规则。堆栈帧的ABI规则定义了协议,该协议用来传递参数,保存非易失性存储器的值和为函数内的本地变量分配空间。5555谷风优质谷风优质编程接口-堆栈规则高地址高地址为调用子例程的功能参数(为调用子例程的功能参数(Arg nArg1)(可选的:对于任何一个由当前程序所调用程序的最多数目的参数要求可选的:对于任何一个由当前程序所调用程序的最多数目的参数要求)先前的堆栈指针先前的堆栈指针链接寄存器(链接寄存器(R15)被调者保存寄

57、存器(被调者保存寄存器(R31.R19)(可选的:只有那些当前程序所使用的寄存器被保存可选的:只有那些当前程序所使用的寄存器被保存)当前程序的本地变量当前程序的本地变量(可选的:如果在程序中定义才出现可选的:如果在程序中定义才出现)功能参数(功能参数(ArgnArg1)(可选的:对于任何一个由当前程序所调用程序的最多数量的参数要求可选的:对于任何一个由当前程序所调用程序的最多数量的参数要求)新堆栈指针新堆栈指针链接寄存器链接寄存器低地址低地址5656谷风优质谷风优质编程接口-堆栈规则 那些包含调用其它子例程的函数也称为非叶结点函数。这些非叶结点函数为自己创建新的堆栈帧。当程序开始执行时,堆栈指

58、针有最大值。当函数被调用,堆栈指针被减小。调用函数的堆栈指针的值比被调函数的堆栈指针的值要高。 图4.2给出一个调用的例子。该例子Fun1调用Fun2,Fun2调用Fun3。当Fun1调用Fun2时,SP的值减小。SP继续减少用来为Fun3提供堆栈帧。在返回时,SP的值增加。5757谷风优质谷风优质编程接口-堆栈规则 调用函数通过寄存器R5-R10或堆栈帧传递参数到被调用函数。被调者使用调用者的堆栈区域来保存传递到被调者的参数。例如,Fun2的参数保存在R5-R10或者分配给Fun1的堆栈帧。图图4.2 函数调用过程函数调用过程5858谷风优质谷风优质存储器模型 MicroBlaze所定义的存

59、储器模型有四个不同的部分: (1)小数据区; (2)数据区; (3)普通非初始化区; (4)文字或常数;5959谷风优质谷风优质存储器模型-小数据区 小尺寸的全局初始化变量保存在这个区域。保存变量的尺寸门槛为8个字节(在MicroBlaze C 编译器mb-gcc),但是能通过给编译器命令行改变值。64KB的存储器分配给小数据区。通过使用读写小数据区指针寄存器(R13)和16位偏移量来访问这个区域。分配小尺寸的变量到这个区域减少要求使用IMM指令访问全局变量。在该区域的变量可以使用绝对地址访问。6060谷风优质谷风优质存储器模型-数据区 相对而言,大尺寸的初始化的变量被保存到数据区内,使用读写

60、小数据区指针寄存器(R13)或绝对地址访问(取决于编译器的命令行选项)。6161谷风优质谷风优质存储器模型-普通的非初始区 非初始化的全局变量保存在这个区域,使用读写小数据区的指针寄存器R13或绝对地址访问(取决于编译器的设置)。6262谷风优质谷风优质存储器模型-文字或常数 常数存放在只读小数据区。使用只读小数据区指针寄存器(R2)访问。6363谷风优质谷风优质中断和异常句柄 MicroBlaze保留一些地址空间用来处理中断和异常。表4.13给出了中断和异常处理句柄。有效有效硬件跳转到硬件跳转到软件标号软件标号Start/Reset0x0_startUser expection0x8_exc

61、eption_handlerInterrupt0x10_interrupt_handlerBreak(HW/SW)0x18-Hardware exception0x20_hw_exception_handlerReserved for future use0x28-0x4F-6464谷风优质谷风优质中断和异常句柄 下面给出了在这些位置所期望的代码。对于没有使用-xl-mode-xmdstub编译器选项的程序,crt0.o初始化文件由mb-gcc编译器传递到mb-ld连接器。这个文件设置合适的地址用于异常句柄。 对于使用-xl-mode-xmdstub编译器选项的程序,crt1.o初始化文件被链

62、接到输出程序。通过使用已经加载到0x0地址的xmdstub运行程序。因此在运行时,crt1.o的初始化代码向0x8到0x14地址(取决中断还是异常)写合适的指令。6565谷风优质谷风优质中断和异常句柄下面给出了用于处理中断和异常的句柄代码。0x00: bri _start10x04: nop 0x08: imm high bits of address (user exception handler)0x0c: bri _exception_handler 0x10: imm high bits of address (interrupt handler)0x14: bri _interrup

63、t_handler 0x20: imm high bits of address (HW exception handler)0x24: bri _hw_exception_handler6666谷风优质谷风优质中断和异常句柄 MicroBlaze允许异常和中断例程放在任何一个32位地址。用户异常句柄代码由_exception_handler开始,硬件异常句柄由_hw_exception_handler。而中断句柄由_interrupt_handler开始。 在当前的MicroBlaze系统中,有一些用于中断和异常处理的空程序,用户可以修改这些空程序。为了重载这些程序,并链接用户自己的中断和异常句柄,必须使用interrupt_handler属性来定义中断句柄代码。 当XMD工具使用软件断点时,断点(HW/SW)地址位置被保留用来处理软件断点。6767谷风优质谷风优质

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号