MicroBlaze软核处理器接口.ppt

上传人:牧羊曲112 文档编号:5439946 上传时间:2023-07-07 格式:PPT 页数:67 大小:316.50KB
返回 下载 相关 举报
MicroBlaze软核处理器接口.ppt_第1页
第1页 / 共67页
MicroBlaze软核处理器接口.ppt_第2页
第2页 / 共67页
MicroBlaze软核处理器接口.ppt_第3页
第3页 / 共67页
MicroBlaze软核处理器接口.ppt_第4页
第4页 / 共67页
MicroBlaze软核处理器接口.ppt_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《MicroBlaze软核处理器接口.ppt》由会员分享,可在线阅读,更多相关《MicroBlaze软核处理器接口.ppt(67页珍藏版)》请在三一办公上搜索。

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

2、4接口(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传输

3、;FSL或AXI4-Stream提供快速无需仲裁的流通信机制;XCL提供在缓存和外部存储器控制器之间的快速从设备仲裁的流接口;调试接口和处理器调试模块(MDM)一起使用;跟踪接口用于性能分析;,AXI4接口-存储器映射接口,MicroBlaze AXI4存储器映射的外设接口(M_AXI_DP,M_AXI_IP)实现32位的主接口。这些接口只发出单个地址,所有的交易按顺序完成。(1)指令外设接口只执行单字读访问,总是设置使用AXI4-Lite子 集;(2)数据外设接口执行单字访问,默认设置使用AXI4-Lite子集,当使能用于LWX和SWX的互斥访问时,使用AXI4。通过设 置合适的字节选通,可

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

5、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_AXIS.M15_AXIS,S0_AXIS.S15_AXIS)实现32位主设备或从设备。Mn_AXIS_TLAST,Sn_AXIS_TLAST信号直

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

7、两个时钟周期内完成传输,且数据可用。如果数据不可用时,处理器在这条指令上停下来,一直到其可用为止。在非阻塞模式下(前缀n),不管数据是否可用,也总是在一个或者两个时钟周期内完成传输。如果数据不可用,不发生数据传输,并且设置MSR内的进位位。表4.2给出了M_AXI_Stream端口的信号及功能。更具体的功能可以参看第二章的内容,AXI4接口-流接口,PLB接口,MicroBlaze处理的PLB接口用于字节使能的32位主设备。表4.3给出了IPLB总线接口信号定义。表4.4给出了DPLB总线接口定义。更详细的可以参考PLBV46互连和接口资料。,PLB接口(IPLB),PLB接口(IPLB),P

8、LB接口(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操作将寄存器的内容传

9、送到输出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的满标

10、志变成低。非阻塞传输指令(前缀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使用DWFS

11、L接口通过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

12、连接原理图。,XCL接口-XCL接口原理,BEGIN microblaze.BUS_INTERFACE IXCL=myIXCL.ENDBEGIN 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,每当缓存被软件禁止时,缓存的存储器范

13、围只能通过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_FS

14、L_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协议,拉低读信号表示接收方不能接收新的数据

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

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

17、RFACE=1或者C_ DCACHE_INTERFACE=1)。CacheLink的地址输出对齐缓存行大小(即,如果访问地址0 x348缺失4个字的缓存行,择CacheLink的地址输出是0 x340)。缓存控制器将数据保存在缓存控制器中,当可用时,将请求字提交给执行单元。,XCL接口-XCL交易,当C_DACHE_USE_WRITEBACK设置为1时,使用猝发写能保存整个缓存行和一个单字。每个缓存行总是以线性顺序保存,CacheLink的地址输出对齐缓存行大小。当C_DACHE_USE_WRITEBACK清零时,在Cache上的所有写操作是单字操作。当使用写回时C_DACHE_INTERFA

18、CE必须设置为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协议(线性取)(

19、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协议(第一个关键字)(

20、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_WR

21、ITEBACK=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_

22、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)表示写访问。

23、地址总线 的最高两位(30:31)用来编码字节或半字使能:0b00=字节 0b01=字节1或者半字0,0 x10=字节2和0 x11=字节3或者半 字1。选择半字或者字节访问基于步骤4中用于数据字的控 制位。(3)如果DCACHE_FSL_OUT_Full=1则停止,直到变低;,XCL交易-数据缓存写,4写数据被保存在DCACHE_FSL_OUT_Data中。对于字节和半字访问,数据镜像到字节通道。镜像输出的字节或者半字各自写到所有的四个字节通道或者半字通道。控制位应该为低(DCACHE_FSL_OUT_Control=0)用于字或者半字访问,为高将字节访问和猝发访问分开。字和字节访问由地址的

24、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推荐对这些信号不要使用定制逻辑,而是使用Xi

25、linx提供的分析IP。跟踪信号在TRACE总线上被分组。表4.10给出了MicroBlaze的跟踪信号。,跟踪接口-跟踪信号,跟踪接口-跟踪信号,跟踪接口-跟踪异常类型,编程接口,MicroBlaze应用二进制接口(Application Binary Interface,ABI)对于在汇编语言级开发软件是非常重要的。MicroBlaze GNU编译器允许下面所介绍的规约。由汇编语言程序员所编写的代码也遵循同样的规约,该规约与编译器产生的代码兼容。,编程接口-堆栈规则,表4.12给出了MicroBlaze的堆栈规则。堆栈帧的ABI规则定义了协议,该协议用来传递参数,保存非易失性存储器的值和为

26、函数内的本地变量分配空间。,编程接口-堆栈规则,编程接口-堆栈规则,那些包含调用其它子例程的函数也称为非叶结点函数。这些非叶结点函数为自己创建新的堆栈帧。当程序开始执行时,堆栈指针有最大值。当函数被调用,堆栈指针被减小。调用函数的堆栈指针的值比被调函数的堆栈指针的值要高。图4.2给出一个调用的例子。该例子Fun1调用Fun2,Fun2调用Fun3。当Fun1调用Fun2时,SP的值减小。SP继续减少用来为Fun3提供堆栈帧。在返回时,SP的值增加。,编程接口-堆栈规则,调用函数通过寄存器R5-R10或堆栈帧传递参数到被调用函数。被调者使用调用者的堆栈区域来保存传递到被调者的参数。例如,Fun2

27、的参数保存在R5-R10或者分配给Fun1的堆栈帧。,图4.2 函数调用过程,存储器模型,MicroBlaze所定义的存储器模型有四个不同的部分:(1)小数据区;(2)数据区;(3)普通非初始化区;(4)文字或常数;,存储器模型-小数据区,小尺寸的全局初始化变量保存在这个区域。保存变量的尺寸门槛为8个字节(在MicroBlaze C 编译器mb-gcc),但是能通过给编译器命令行改变值。64KB的存储器分配给小数据区。通过使用读写小数据区指针寄存器(R13)和16位偏移量来访问这个区域。分配小尺寸的变量到这个区域减少要求使用IMM指令访问全局变量。在该区域的变量可以使用绝对地址访问。,存储器模

28、型-数据区,相对而言,大尺寸的初始化的变量被保存到数据区内,使用读写小数据区指针寄存器(R13)或绝对地址访问(取决于编译器的命令行选项)。,存储器模型-普通的非初始区,非初始化的全局变量保存在这个区域,使用读写小数据区的指针寄存器R13或绝对地址访问(取决于编译器的设置)。,存储器模型-文字或常数,常数存放在只读小数据区。使用只读小数据区指针寄存器(R2)访问。,中断和异常句柄,MicroBlaze保留一些地址空间用来处理中断和异常。表4.13给出了中断和异常处理句柄。,中断和异常句柄,下面给出了在这些位置所期望的代码。对于没有使用-xl-mode-xmdstub编译器选项的程序,crt0.

29、o初始化文件由mb-gcc编译器传递到mb-ld连接器。这个文件设置合适的地址用于异常句柄。对于使用-xl-mode-xmdstub编译器选项的程序,crt1.o初始化文件被链接到输出程序。通过使用已经加载到0 x0地址的xmdstub运行程序。因此在运行时,crt1.o的初始化代码向0 x8到0 x14地址(取决中断还是异常)写合适的指令。,中断和异常句柄,下面给出了用于处理中断和异常的句柄代码。0 x00:bri _start10 x04:nop 0 x08:imm high bits of address(user exception handler)0 x0c:bri _excepti

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号