1 / 67

MicroBlaze 软核处理器接口

MicroBlaze 软核处理器接口. 何宾 2012.02. MicroBlaze 软核处理器接口. 本章详细介绍了 MicroBlaze 软核处理的接口,这些接 口包括: (1) AXI4 接口 ; (2) PLB 接口 ; (3) LMB 接口 ; (4) FSL 接口 ; (5) XCL 接口 ; (6) 调试接口和跟踪接口。 这些接口提供了软核处理器与片上、片外外设和存储 器的灵活接口。此外,接口也提供了点对点的或者共享 总线的数据传输方式。.

virgil
Download Presentation

MicroBlaze 软核处理器接口

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MicroBlaze软核处理器接口 何宾 2012.02

  2. MicroBlaze软核处理器接口 本章详细介绍了MicroBlaze软核处理的接口,这些接 口包括: (1) AXI4接口; (2) PLB接口; (3) LMB接口; (4) FSL接口; (5) XCL接口; (6) 调试接口和跟踪接口。 这些接口提供了软核处理器与片上、片外外设和存储 器的灵活接口。此外,接口也提供了点对点的或者共享 总线的数据传输方式。

  3. MicroBlaze接口概述 MicroBlaze处理器结构采用哈弗结构,即为数据和 指令访问提供了独立的总线接口单元。MicroBlaze处理 器支持下面四种存储器接口: • 本地存储器总线(LMB); • AMBA AXI4接口(AXI4); • IBM处理器本地总线(PLB); • Xilinx的CacheLink(XCL)接口;

  4. MicroBlaze软核处理器接口 LMB提供了以单时钟周期访问双端口存储器的能 力。 AXI4和PLB提供了片上和片外外设和存储器的接 口。CacheLink接口和外部存储器控制一起用作专门用 途。MicroBlaze处理器支持最多16个简单快速链接FSL 或者AXI4-Stream接口端口,每一个端口有主和从接口。

  5. MicroBlaze软核处理器接口 MicroBlaze处理器能配置成下面的总线接口: • ARMA AXI4接口; • 32位版本的PLBV4.6接口; • LMB提供简单同步协议用于高效的BRAM传输; • FSL或AXI4-Stream提供快速无需仲裁的流通信机制; • XCL提供在缓存和外部存储器控制器之间的快速从设备仲裁的流接口; • 调试接口和处理器调试模块(MDM)一起使用; • 跟踪接口用于性能分析;

  6. AXI4接口 --存储器映射接口 MicroBlaze AXI4存储器映射的外设接口 (M_AXI_DP,M_AXI_IP)实现32位的主接口。这些 接口只发出单个地址,所有的交易按顺序完成。 (1) 指令外设接口只执行单字读访问,总是设置使用AXI4-Lite子 集; (2) 数据外设接口执行单字访问,默认设置使用AXI4-Lite子集, 当使能用于LWX和SWX的互斥访问时,使用AXI4。通过设 置合适的字节选通,可以执行半字和字节写操作;

  7. 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 指令。

  8. AXI4接口 --存储器映射接口 M_AXI_DP、M_AXI_IP、M_AXI_DC和 M_AXI_IC接口信号功能一样,表4.1给出了M_AXI_DP 端口的信号及功能。更具体的功能可以参看第二章的 内容。

  9. AXI4接口 --存储器映射接口

  10. AXI4接口 --存储器映射接口

  11. AXI4接口 --存储器映射接口

  12. 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信号。

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

  14. AXI4接口 --流接口 2.读操作 MicroBlaze通过使用get或getd指令执行读流接口操 作。读操作将输入AXI4接口内容传输到寄存器。对于 阻塞模式读在两个时钟周期内完成传输,且数据可 用。如果数据不可用时,处理器在这条指令上停下 来,一直到其可用为止。在非阻塞模式下(前缀n), 不管数据是否可用,也总是在一个或者两个时钟周期 内完成传输。如果数据不可用,不发生数据传输,并 且设置MSR内的进位位。 表4.2给出了M_AXI_Stream端口的信号及功能。更 具体的功能可以参看第二章的内容

  15. AXI4接口 --流接口

  16. PLB接口 MicroBlaze处理的PLB接口用于字节使能的32位主 设备。表4.3给出了IPLB总线接口信号定义。表4.4给出 了DPLB总线接口定义。更详细的可以参考PLBV46互 连和接口资料。

  17. PLB接口(IPLB)

  18. PLB接口(IPLB)

  19. PLB接口(DPLB)

  20. PLB接口(DPLB)

  21. LMB接口 LMB是同步总线,主要用于访问片上块RAM资 源。LMB有最少的控制总线数目,使用简单协议保证 以单周期访问本地块RAM资源。表4.5给出了LMB接口 信号及定义。所有信号都是高有效。

  22. LMB接口

  23. FSL接口 FSL总线在输出FIFO和输入FIFO之间提供点对点的 通信通道,更详细的信息参考IP核参考资料。表4.6给 出了主FSL信号接口,表4.7给出了从FSL接口信号。

  24. FSL接口(MFSL)

  25. FSL接口(SFSL)

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

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

  28. FSL接口 3. 直接FSL连接 直接FSL连接用来去避免需要FSL总线。在没有缓冲 的情况下,例如两个连接的IP核。 在直接FSL连接下不使用FSL的FIFO。无FIFO可以减 少延迟和要求实现的资源。 MicroBlaze处理器的每一个FSL接口能使用FSL直接 连接或FSL总线。 MicroBlaze的DWFSL接口是直接FSL连接的初始 源,它只能连接到DWFSL目标。DWFSL的初始源和目 标有同样的信号名(与MFSL信号一样)。MicroBlaze使 用DWFSL接口通过put或putd命令写数据到目标。

  29. FSL接口 MicroBlaze的DRFSL接口是一个FSL连接的目标, 它只能连接到DRFSL的初始源。DRFSL的初始源和目 标有同样的信号名(与SFSL信号一样)。MicroBlaze 使用DRFSL接口通过get或getd命令从初始源读数据。 Xilinx的CacheLink(XCL)接口就是使用直接FSL 连接实现的。

  30. XCL接口--XCL接口原理 对外部存储器的访问来说,XCL接口是高性能的解 决方案。XCL通过使用集成的FSL缓冲区直接和存储器 控制器连接,例如MPMC。这种方法有最低的延迟和 最小数目的例化。图4.1给出了使用集成FSL缓冲区的 XCL连接原理图。

  31. 存储器控制器 FSL FSL MicroBlaze XCL接口--XCL接口原理 BEGIN microblaze ... BUS_INTERFACE IXCL = myIXCL ... END BEGIN mpmc ... BUS_INTERFACE XCL0 = myIXCL …. END 图4.1使用集成FSL缓冲区的XCL连接原理

  32. XCL接口--XCL接口原理 当缓存使能时,XCL接口可以使用。可以在指令侧 或数据侧使用一个XCL缓存。 存储器位置的访问,由指令缓存参数 C_ICACHE_ALWAYS_USED和数据缓存参数 C_DCACHE_ALWAYS_USED来确定。如果值为1,表示 缓存的存储器范围总是能通过XCL访问。如果值为0,每 当缓存被软件禁止时,缓存的存储器范围只能通过AXI4 或PLB访问。

  33. XCL接口--XCL接口原理 在XCL可访问的范围以外存储器的位置可通过 AXI,PLB或者LMB访问。 XCL缓存控制器处理4-8个缓存行。同时由于XCL 与PLB和AXI4分开,也减少了对非缓存存储器访问的 冲突。表4.8给出了XCL的信号接口。

  34. XCL接口--XCL接口原理

  35. XCL接口--XCL接口原理

  36. XCL接口--XCL交易 所有单独的CacheLink访问遵循基于FSL FIFO的交易 协议,主要包含以下几点: (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),则发送方只允许写。指 令缓存控制器不使用满信号标志。

  37. XCL接口--XCL交易 (4) 使用ICACHE_FSL_IN_Read和DCACHE_FSL_IN_Read 取决于所选择的接口协议: • 使用IXCL和DXCL协议,通过拉高读信号信息被接收(加载)。该信号为低,除非当发送者示意有新数据存在。 • 使用IXCL2和DXCL2协议,拉低读信号表示接收方不能接收新的数据。当读信号为高时,新数据是只读的,发送者示意有新数据存在。 (5) 只要发送方示意有新数据存在(例如 ICACHE_FSL_IN_Exists=1),接收方只允许读。

  38. XCL接口--XCL交易 Xilinx的CacheLink解决方案中,每个缓存控制器 使用一个流入(从)和流出(主)FSL。流出FSL用 于发送访问请求,而流入FSL用于接收请求的缓存 行。FSL的数据和控制信号上,XCL也使用交易信 息的特定编码。 在XCL协议中,用于读操作的缓存行为4/8个字 长。取决于所选择的接口协议,使用第一个关键字 (Critical word first)或者线性顺序(in linear order), 取出每个缓存行。

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

  40. XCL接口--XCL交易 (2) 线性取使用IXCL2和DXCL2协议,(C_ICACHE_INTERFACE=1或者C_ DCACHE_INTERFACE =1)。CacheLink的地址输出对齐缓存行大小(即,如果访问地址0x348缺失4个字的缓存行,择CacheLink的地址输出是0x340)。缓存控制器将数据保存在缓存控制器中,当可用时,将请求字提交给执行单元。

  41. XCL接口--XCL交易 当C_DACHE_USE_WRITEBACK设置为1时,使用猝 发写能保存整个缓存行和一个单字。每个缓存行总是以线 性顺序保存,CacheLink的地址输出对齐缓存行大小。当 C_DACHE_USE_WRITEBACK清零时,在Cache上的所有 写操作是单字操作。当使用写回时 C_DACHE_INTERFACE必须设置为1(因为猝发写只能用 DXCL2协议)。

  42. 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保存到缓存中;

  43. 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保存到缓存中;

  44. XCL交易--数据缓存写 当C_DCACHE_INTERFACE设置为1时, CacheLink能执行猝发写或者单字写。当设置 C_DCACHE_USE_WRITEBACK=1时,使用猝发写, 整个缓存行有效。 当C_DCACHE_USE_WRITEBACK=0时,写数据 到数据缓存总是完全写入。因此,不管在缓存中命中 还是缺失,在CacheLink中都有一个写操作。

  45. 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用于缓存行中随后的字。

  46. 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则停止,直到变低;

  47. XCL交易--数据缓存写 4.写数据被保存在DCACHE_FSL_OUT_Data中。对于字节和 半字访问,数据镜像到字节通道。镜像输出的字节或者半字各自 写到所有的四个字节通道或者半字通道。控制位应该为低 (DCACHE_FSL_OUT_Control=0)用于字或者半字访问,为高将 字节访问和猝发访问分开。字和字节访问由地址的LSB进行区分 (0=字,1=半字)。

  48. 调试接口 MicroBlaze的调试接口用来和Xilinx微处理调试 (Xilinx Microprocessor Debug, MDM)的IP核。MDM由 Xilinx处理器调试器(Xilinx Microprocessor Debuger, XMD) 通过FPGA的JTAG端口控制。MDM能在同一时 间控制多个MicroBlaze处理器。调试信号在DEBUG总 线上分组。表4.9给出了MicroBlaze的调试信号。

  49. 调试接口

  50. 跟踪接口 MicroBlaze核输出大量的内部信号用于跟踪。由 于该接口非标准化,所以Xilinx推荐对这些信号不要使 用定制逻辑,而是使用Xilinx提供的分析IP。跟踪信号 在TRACE总线上被分组。表4.10给出了MicroBlaze的跟 踪信号。

More Related