基于AXI4的可编程SOC系统设计教学课件第4章_第1页
基于AXI4的可编程SOC系统设计教学课件第4章_第2页
基于AXI4的可编程SOC系统设计教学课件第4章_第3页
基于AXI4的可编程SOC系统设计教学课件第4章_第4页
基于AXI4的可编程SOC系统设计教学课件第4章_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

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

文档简介

MicroBlaze软核处理器接口,本章详细介绍了MicroBlaze软核处理的接口,这些接 口包括: (1) AXI4接口; (2) PLB接口; (3) LMB接口; (4) FSL接口; (5) XCL接口; (6) 调试接口和跟踪接口。 这些接口提供了软核处理器与片上、片外外设和存储 器的灵活接口。此外,接口也提供了点对点的或者共享 总线的数据传输方式。,MicroBlaze接口概述,MicroBlaze处理器结构采用哈弗结构,即为数据和 指令访问提供了独立的总线接口单元。MicroBlaze处理 器支持下面四种存储器接口: 本地存储器总线(LMB); AMBA AXI4接口(AXI4); IBM处理器本地总线(PLB); Xilinx的CacheLink(XCL)接口;,MicroBlaze软核处理器接口,LMB提供了以单时钟周期访问双端口存储器的能 力。 AXI4和PLB提供了片上和片外外设和存储器的接 口。CacheLink接口和外部存储器控制一起用作专门用 途。MicroBlaze处理器支持最多16个简单快速链接FSL 或者AXI4-Stream接口端口,每一个端口有主和从接口。,MicroBlaze软核处理器接口,MicroBlaze处理器能配置成下面的总线接口: ARMA AXI4接口; 32位版本的PLBV4.6接口; LMB提供简单同步协议用于高效的BRAM传输; FSL或AXI4-Stream提供快速无需仲裁的流通信机制; XCL提供在缓存和外部存储器控制器之间的快速从设备仲裁的流接口; 调试接口和处理器调试模块(MDM)一起使用; 跟踪接口用于性能分析;,AXI4接口 -存储器映射接口,MicroBlaze AXI4存储器映射的外设接口 (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接口 -存储器映射接口,AXI4接口 -存储器映射接口,AXI4接口 -存储器映射接口,AXI4接口 -流接口,MicroBlaze AXI4-Stream接口 (M0_AXISM15_AXIS, S0_AXISS15_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接口 -流接口,PLB接口,MicroBlaze处理的PLB接口用于字节使能的32位主 设备。表4.3给出了IPLB总线接口信号定义。表4.4给出 了DPLB总线接口定义。更详细的可以参考PLBV46互 连和接口资料。,PLB接口(IPLB),PLB接口(IPLB),PLB接口(DPLB),PLB接口(DPLB),LMB接口,LMB是同步总线,主要用于访问片上块RAM资 源。LMB有最少的控制总线数目,使用简单协议保证 以单周期访问本地块RAM资源。表4.5给出了LMB接口 信号及定义。所有信号都是高有效。,LMB接口,FSL接口,FSL总线在输出FIFO和输入FIFO之间提供点对点的 通信通道,更详细的信息参考IP核参考资料。表4.6给 出了主FSL信号接口,表4.7给出了从FSL接口信号。,FSL接口(MFSL),FSL接口(SFSL),FSL接口,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接口原理,BEGIN microblaze . BUS_INTERFACE IXCL = myIXCL . END BEGIN mpmc . BUS_INTERFACE XCL0 = 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接口原理,XCL接口 -XCL接口原理,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),则发送方只允许写。指 令缓存控制器不使用满信号标志。,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个字 长。取决于所选择的接口协议,使用第一个关键字 (Critical word first)或者线性顺序(in linear order), 取出每个缓存行。,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微处理调试 (Xilinx Microprocessor Debug, MDM)的IP核。MDM由 Xilinx处理器调试器(Xilinx Microprocessor Debuger, XMD) 通过FPGA的JTAG端口控制。MDM能在同一时 间控制多个MicroBlaze处理器。调试信号在DEBUG总 线上分组。表4.9给出了MicroBlaze的调试信号。,调试接口,跟踪接口,MicroBlaze核输出大量的内部信号用于跟踪。由 于该接口非标准化,所以Xilinx推荐对这些信号不要使 用定制逻辑,而是使用Xilinx提供的分析IP。跟踪信号 在TRACE总线上被分组。表4.10给出了MicroBlaze的跟 踪信号。,跟踪接口 -跟踪信号,跟踪接口 -跟踪信号,跟踪接口 -跟踪异常类型,编程接口,MicroBlaze应用二进制接口(Application Binary Interface, ABI)对于在汇编语言级开发软件是非常重要 的。MicroBlaze GNU编译器允许下面所介绍的规约。 由汇编语言程序员所编写的代码也遵循同样的规约, 该规约与编译器产生的代码兼容。,编程接口 -堆栈规则,表4.12给出了MicroBlaze的堆栈规则。堆栈帧的 ABI规则定义了协议,该协议用来传递参数,保存非 易失性存储器的值和为函数内的本地变量分配空间。,编程接口 -堆栈规则,编程接口 -堆栈规则,那些包含调用其它子例程的函数也称为非叶结点 函数。这些非叶结点函数为自己创建新的堆栈帧。当 程序开始执行时,堆栈指针有最大值。当函数被调 用,堆栈指针被减小。调用函数的堆栈指针的值比被 调函数的堆栈指针的值要高。 图4.2给出一个调用的例子。该例子Fun1调用 Fun2,Fun2调用Fun3。当Fun1调用Fun2时,SP的值减 小。SP继续减少用来为Fun3提供堆栈帧。在返回时, SP的值增加。,编程接口 -堆栈规则,调用函数通过寄存器R5-R10或堆栈帧传递参数到 被调用函数。被调者使用调用者的堆栈区域来保存传 递到被调者的参数。例如,Fun2的参数保存在R5-R10 或者分配给Fun1的堆栈帧。,图4.2 函数调用过程,存储器模型,MicroBlaze所定义的存储器模型有四个不同的 部分: (1)小数据区; (2)数据区; (3)普通非初始化区; (4)文字或常数;,存储器模型 -小数据区,小尺寸的全局初始化变量保存在这个区域。保存 变量的尺寸门槛为8个字节(在MicroBlaze C 编译器 mb-gcc),但是能通过给编译器命令行改变值。64KB 的存储器分配给小数据区。通过使用读写小数据区指 针寄存器(R13)和16位偏移量来访问这个区域。分配小 尺寸的变量到这个区域减少要求使用IMM指令访问全 局变量。在该区域的变量可以使用绝对地址访问。,存储器模型 -数据区,相对而言,大尺寸的初始化的变量被保存到数 据区内,使用读写小数据区指针寄存器(R13)或 绝对地址访问(取决于编译器的命令行选项)。,存储器模型 -普通的非初始区,非初始化的全局变量保存在这个区域,使用读 写小数据区的指针寄存器R13或绝对地址访问

温馨提示

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

评论

0/150

提交评论