一种基于AXI总线的RapidIO接口转换方法与流程

文档序号:24527865发布日期:2021-04-02 10:05阅读:415来源:国知局
一种基于AXI总线的RapidIO接口转换方法与流程

本发明涉及一种基于axi总线的rapidio接口转换方法,属于片上总线接口转换技术领域。



背景技术:

随着航空、航天等复杂嵌入式计算领域的发展,系统对内部模块间的数据传输速度要求越来越高,传统的总线技术难以满足日益增长的带宽需求,在这样的发展背景下,rapidio协议应用而生。rapidio是一种高性能低引脚的基于包交换的交叉开关互联技术,非常适合于高性能嵌入式系统内的数据通信。

rapidio在soc中的集成离不开片上总线,axi与avalon是两种最为常用的总线类型,axi总线是一种面向大带宽、低延迟的高性能总线,avalon总线则注重于简单易用与传输效率。



技术实现要素:

本发明的技术解决问题是:克服现有技术的不足,提供一种在不影响原有rapidio配置方法、数据通信等基本功能的情况下,支持axi协议的rapidioip。

本发明的技术解决方案是:

一种基于axi总线的rapidio接口转换方法,对于由avalonmaster到aximaster接口的转换,具体包括以下步骤:

11)将带有avalon接口的rapidioip产生的读写数据包,转化为符合avalon总线规范的input/ouputmasteravalon_mm总线的操作请求;

12)对avalon总线中的数据、地址及控制信号的值,根据总线信号定义、rapidio的地址映射与对齐方式,进行信号值的转换,计算获得avalon总线中的数据、地址及控制信号在axi总线协议下相应信号的值;

13)对avalon总线的操作请求进行读/写分离,将其划分为符合axi总线规范的写地址、写数据、写响应、读地址、读数据五种通道类型,并将读/写分离获得的五种通道类型的相关信号存储到对应的异步fifo中;

14)读取步骤13)所述异步fifo中相关信号的值,根据axi总线和avalon总线的的时序规范,产生相应的axi请求及应答信号,最终实现总线接口的转换。

一种基于axi总线的rapidio接口转换方法,对于由axislave到avalonslave接口的转换,具体包括以下步骤:

21)对来自axi总线中的数据、地址及控制信号的值,根据avalon总线信号定义、rapidio的地址映射与对齐方式,计算获得axi总线中的数据、地址及控制信号在avalon总线协议下相应信号的值;

22)对axi总线的操作请求进行读/写分离,进行信号值的转换,将其转换为相应的avalon信号,并将操作请求对应的avalon信号存储到对应的异步fifo中;

23)读取22)所述异步fifo中avalon信号的信号值,根据axi总线和avalon总线的时序规范,产生相应的avalon请求及应答信号,实现总线接口转换;

24)将转化后符合avalon总线规范的操作请求转化为rapidioip的读写数据包,并发送到rapidio的数据链路上。

本发明与现有技术相比有益效果为:

1)本发明从rapidio协议的对齐方式出发,深入分析了rapidio与avalon、avalon与axi中参数间的映射过程。

2)本发明通过分析两种总线间的差别,确定了二者间的时序转换方法,实现了转接桥的时序设计。

3)本发明所实现的转接桥无疑增加了rapidio的跨平台使用能力。

4)转接桥所实现的通用axi接口,一定程度加速了rapidio在soc中的部署与设计。

本发明通过搭建验证平台,验证了针对rapidio协议设计的转接桥的有效性,确保了带有avalon总线的rapidio模块可以正常挂载到axi总线中,满足了实际的应用需求。

附图说明

图1为仅支持avalon总线接口的rapidioip结构;

图2为本发明所设计的转接桥基本结构;

图3为本发明所设计的验证平台结构;

图4为axi/avalon转接桥在axi总线网络中的连接方式;

图5为axislave读操作到avalonslave读操作转换前后信号波形;

图6为axislave写操作到avalonslave写操作转换前后信号波形;

图7为avalonmaster读操作到aximaster读操作转换前后信号波形;

图8为avalonmaster写操作到aximaster写操作转换前后信号波形。

具体实施方式

本发明为实现对带有avalon接口的rapidio进行跨平台集成,设计了avalon总线与axi总线间的转接桥,该转接桥全面支持了rapidio的地址映射与字节对齐方式,使rapidio数据包与axi读写请求可以进行相互转换。

一种基于axi总线的rapidio接口转换方法,对于由avalonmaster到aximaster接口的转换,具体包括以下步骤:

11)将带有avalon接口的rapidioip产生的读写数据包,转化为符合avalon总线规范的input/ouputmasteravalon_mm总线的操作请求;

12)对avalon总线中的数据、地址及控制信号的值,根据总线信号定义、rapidio的地址映射与对齐方式,进行信号值的转换,计算获得avalon总线中的数据、地址及控制信号在axi总线协议下相应信号的值;

13)对avalon总线的操作请求进行读/写分离,将其划分为符合axi总线规范的写地址、写数据、写响应、读地址、读数据五种通道类型,并将读/写分离获得的五种通道类型的相关信号存储到对应的异步fifo中;

14)读取步骤13)所述异步fifo中相关信号的值,根据axi总线和avalon总线的的时序规范,产生相应的axi请求及应答信号,最终实现总线接口的转换。

步骤11)所述的读写数据包,包括协议规定的nwrite、swrite、nread、nread_r四种数据包格式,对于除此以外的其他数据包请求不在本发明所述转接桥的应用范围之内。

步骤12)所述进行信号值转换的类型包括:avalonmaster读操作到aximaster读操作的转换与avalonmaster写操作到aximaster写操作的转换。

步骤12)所述avalon总线中需要进行值转换的数据、地址及控制信号包括address信号、burstcount信号与byteenable信号。

步骤12)所述进行信号值的转换具体转换过程为:若是avalonmaster读操作到aximaster读操作的转换,则axi总线中araddr的高24位与avalonaddress的对应位相等,低8位等于avalonbyteenable信号表示为16位二进制后,最低位'1'所在的位置(从0开始计数);axi总线中arlen等于avalon中burstcount值减1;axi总线中arsize需要根据avalonbyteenable信号表示为16位二进制后,包含'1'的个数计算,若'1'的个数为x,则arsize=log2x,axi总线中数据信号ardata则与avalon中readdata相等。

步骤12)所述进行信号值的转换具体转换过程为:若是avalonmaster写操作到aximaster写操作的转换,则axi中awaddr、awlen、awsize、awdata的转换与权利要求6中araddr、arlen、arsize、ardata的计算方法相同;axi中wstrb值等于avalon中的byteenable值。

一种基于axi总线的rapidio接口转换方法,对于由axislave到avalonslave接口的转换,具体包括以下步骤:

21)对来自axi总线中的数据、地址及控制信号的值,根据avalon总线信号定义、rapidio的地址映射与对齐方式,计算获得axi总线中的数据、地址及控制信号在avalon总线协议下相应信号的值;

22)对axi总线的操作请求进行读/写分离,进行信号值的转换,将其转换为相应的avalon信号,并将操作请求对应的avalon信号存储到对应的异步fifo中;

23)读取22)所述异步fifo中avalon信号的信号值,根据axi总线和avalon总线的时序规范,产生相应的avalon请求及应答信号,实现总线接口转换;

24)将转化后符合avalon总线规范的操作请求转化为rapidioip的读写数据包,并发送到rapidio的数据链路上。

步骤24)所述的rapidioip的读写数据包,包括协议规定的nwrite、swrite、nread、nread_r四种数据包格式。

步骤22)所述进行信号值转换的类型包括:axislave读操作到avalonslave读操作的转换与axislave写操作到avalonslave写操作的转换。

步骤22)所述进行信号值的转换对象,包括:axi总线中的arsize/awsize、arlen/awlen、wstrb及araddr/awaddr信号,对于二者的数据线可以直接相连。

步骤22)所述进行信号值的转换,具体转换过程为:若是axislave读操作到avalonslave读操作的转换,则avalonaddress的高24位与axi中awaddr的对应位相等,低8位则需要判断axi的araddr低8位是否小于8,若小于8则等于0,若大于8则等于8;avalon中burstcount等于axi中arlen值加1;avalon中byteenable则需要根据araddr与arsize来计算,araddr中低8位的值等于byteenable二进制表示时,最低位'1'的位置(从0开始),而二进制中'1'的个数则等于2arsize;avalon中的数据信号readdata与axi中ardata相等。

步骤22)所述进行信号值的转换的信号值具体转换过程为:若是axislave写操作到avalonslave写操作的转换,则avalon中address、burstcount、writedata的转换与address、burstcount的计算方法相同;avalon中byteenable与axi中wstrb相等。

步骤中所述的avalon总线中的操作请求是通过判断avalon中read与write信号状态来具体确定。步骤中所述的两种总线的时序规范参照于各自协议的详规。

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明公共的实施方式作进一步详细描述。

图1是本发明要进行接口转换的仅支持avalon_mm总线的rapidioip结构,avalon_mm总线即avalon总线的内存映射模式,用于主从设备通过地址进行内存读写。若不特殊说明,下文所述的avalon总线均是指avalon_mm。除实现rapidio协议规范外,该ip还实现了一个从rapidio到avalon总线的转接桥,转接桥可以使得来自rapidio链路的读写请求,转化为input/ouputmasteravalon_mm总线的读写请求,同样发往链路的读写请求则都是通过input/ouputslaveavalon_mm接口从片内avalon总线网络上转化而来,除io数据包外,rapidio支持的maintenance与doorbell等数据包也都转化为了相应的avalon总线操作。本发明仅关注i/omaster与i/oslave端口avalon总线与axi总线间的转换,其他模块的转换暂不作讨论。

rapidio协议采用双字(8字节)对齐的big-endian型数据载荷,读写请求的地址对齐到指定的双字边界。小于双字的数据则需要正确进行补足和对齐处理。因此地址的最低3位固定为0。如果数据不以双字边界开始或结束,就用一个特殊的掩码bytelanes来表明哪些字节包含有效数据,该掩码通过数据包中的wdptr和wrsize/rdsize值来进行唯一表示。

在rapidio协议到avalon总线的转接桥中,将rapidio地址及wdptr、wrsize/rdsize等参数则按照协议规定的对齐方式与avalon总线中的地址、byteenable、burstcount等参数进行了映射,由于avalon总线的位宽为128位即16字节,而rapidio地址是8字节对齐的,因此在映射过程中,rapidio地址第3位即rio_addr[3]也需要参与转换,其读操作时的具体映射关系如表1所示(写操作映射关系与此类似)。

表1:参数映射表

本发明中avalon与axi之间的转换的分为两种类型,一种是axislave到avalonslave的转换,即将axi的读写操作转换为avalon的读写操作,另外一种是avalonmaster转换为aximaster,即将avalon上发出的读写操作转换为axi的读写操作,这两种转换方式基本类似,整体框图如图2所示。

由图2可知,当转换类型为axi到avalon时,axislave总线各通道传输的信号经过处理后将存入异步fifo,当avalon总线对应的rapidio设备准备就绪时,从所述异步fifo中读取相关信号,转化为avalon的相关时序并对rapidio发起读写请求。而当转换类型为avalon到axi时,则恰好相反,avalonmaster总线相关的信号会先经过处理后存放到异步fifo中,并依据axi总线的时序关系将相关信号输出至总线的相应通道,从而使rapidio发出读写指令。

由上文可知,rapidio并非支持avalon总线上所有的猝发读写类型,并且由于其自身地址要求8字节对齐,对小于8字节对齐的地址访问需要借助byteenable判断是哪些字节有效,因此avalon总线与axi总线相互转化时不能直接将二者的地址及控制信号相连,还需要依据表1等寻找读写地址、以及猝发读写时相关信号的对应关系。具体需要考虑的信号包括avalon中的address、burstcount与byteenable信号,以及axi总线中的arsize/awsize、arlen/awlen、wstrb及araddr/awaddr信号,除这些外,二者数据线则可以直接相连。

对于avalonmaster到aximaster的转换,在读数据时,需要根据avalon中的address、burstcount与byteenable计算axi中的araddr、arsize、arlen,它们的对应关系如表2所示。

表2:master读数据时的转换表

由表2可以看出,表中的arlen=burstcount-1,同时因为axi在进行读操作时不存在字节有效信号,而avalon发出的地址直接来源于rapidio地址是8字节对齐的,因此axi中的araddr、arsize都需要依据avalon中的byteenable值进行设置。以avalon发出的地址信号为32’hxxxx_xxx0为例,若byteenable=16'h1,则表示读数据宽度为1字节,因此axi中arsize=0,araddr=32’hxxxx_xxx0,即从末四位为0的地址发出1字节数据宽度的读请求,若byteenable=16'hc,表示读数据宽度为2字节,则arsize=1,同时由于其读数据有效位在第2、3位,因此axi的araddr应当等于32’hxxxx_xxx2,表示是从末四位为2的地址发出2字节数据宽度的读请求,以此类推。对于读操作时axi中的高28位地址信号则可直接与avalon中的地址信号做等于处理即可。

与上述转化相反,在写数据时则是需要根据avalon中的address、burstcount与byteenable计算axi中的awaddr、awsize、awlen、wstrb,它们的对应关系如表3所示。

表3:master写数据时的转换表

表中awlen的计算方式与读操作相同为burstcount-1,同时因为axi在进行写操作时存在字节有效信号,所以wstrb直接等于byteenable的值即可。与读操作类似,axi中awaddr、awsize则需要依据byteenable计算,以avalon发出的写地址信号为32’hxxxx_xxx0为例,若byteenable=32'h1,则表示写数据宽度为1字节,因此axi中awsize=0,awaddr=32’hxxxx_xxx0,表示是从末位四位为0的地址发出1字节数据宽度的写请求,若byteenable=16'hc,表示读数据的宽度为2字节,所以awsize=1,同时由于其写数据有效位在第2、3位,因此axi的awaddr应当等于32’hxxxx_xxx2,表示从末四位为2的地址发出2字节数据宽度写请求,以此类推,对于写操作时axi中的高28位地址信号也可直接与avalon中的地址信号进行等于处理即可。

相比于master端口的转换,axislave-avalonslave转接桥在读数据时则需要将axi的arddr、arsize、arlen转化为avalon的address、burstcount与byteenable,即表2的一个逆过程,在此不再详述。

与读操作类似,在axislave转avalonslave的写操作时,对于burstcount的转换关系依旧满足burstcount=arlen+1。而对于byteenable信号,由于axi在写操作时存在字节选通信号wstrb,因此二者直接相等即可,其转换规则是表3的一个逆过程,在此不再详述。

avalon与axi的读写时序存在一定差异,因此转接桥需要严格满足各总线的时序规范。对于avalonmaster到aximaster读/写地址操作下的总线转换来讲,转接桥接收avalon总线的读/写指令(read)、读/写地址(address)以及猝发长度(burstcount),并将读/写指令、读/写地址以及猝发长度信息计算处理打包存入异步fifo,根据接收axi数据的设备的就绪情况即arready/awready情况,在异步fifo的另一端将整帧数据取出,并依据axi总线协议的时序关系拆解重组信息,进而输出axi总线的读/写指令、读/写地址以及猝发长度信息。

对于avalonmaster到aximaster读/写数据操作下的总线转换,转接桥则是接收avalon总线的读/写指令等信号,将读/写指令等处理打包存入异步fifo,根据接收axi数据的设备的就绪情况即arready/awready情况,在异步fifo的另一端将整帧数据取出,并依据axi总线协议的时序关系拆解重组信息,进而输出axi总线对应的相关指令。对于写数据操作会输出axi总线的写指令、写数据以及猝发长度信息,并检查写响应通道信号,对于读指令axi总线对应的设备接收到读地址以及猝发长度等信息后将相应的数据反馈给转接桥,转接桥进一步依据rdata、rdatavalid与rlast的信号关系,将数据和指令组帧存入异步fifo,并依据avalon总线的时序关系,从异步fifo读取数据并反馈给avalon总线的readdata与readdatavalid通道,此外转接桥还需根据异步fifo的深度参数以及已存储数据的情况,输出waitrequest信号至avalon总线,以告知对方等待或继续传输数据。

对于axislave到avalonslave的时序转换过程与上述类似,为其逆过程,在此不再赘述。

下面通过实验验证本发明提供的方法,验证平台的结构如图3所示。验证平台采用两个armcpu内核,他们分别通过各自的axi总线与转接桥的master与slave端口进行连接,在转接桥的另一端则都连接了带有avalon接口的rapidio模块如图4所示,为描述方便将这两个子系统分别称为du1与dut2,dut1、2间仅通过rapidio的差分数据线进行连接。

验证方法是通过处理器对dut1的转接桥(slave端口)发起读/写操作,而后该读写请求会转换为rapidio的数据包通过连接的链路发送到dut2的rapidio端,dut2的rapidio将收到的数据包解析后通过avalon总线转换为转接桥上aximaster端口的读写时序,发送到dut2的axi网络上。在验证平台中,dut1转接桥的axislave地址为0x6000_0000,通过rapidio地址映射转化到dut2的aximaster操作地址为0x2000_0000。

其中dut1中axislave到avalonslave转换前后总线的时序如图5、图6所示。图5是向axislave地址为0x60000000发起位宽为1个字节的读操作,图6是向axislave地址为0x60000000发起位宽为1个字节的写操作。

dut2中avalonmaster到aximaster读/写操作下的转换结果如图7、图8所示,其中图7是aximaster向地址0x20000000发起位宽为1个字节的读操作,图8是向aximaster向地址0x20000000发起位宽为1个字节的写操作。

由转换结果可以看出,转接桥中的axi与avalon信号值与时序跟预期一致,实验同时表明通过本文设计的转接桥可以实现两个带有avalon接口rapidio模块间的互联通信。

本发明未详细公开的部分属于本领域的公知技术。

尽管上面对本发明说明性的具体实施方案进行了描述,以便本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1