一种基于FPGA的PCIe与SRIO总线桥接系统的制作方法

文档序号:11276246阅读:1313来源:国知局
一种基于FPGA的PCIe与SRIO总线桥接系统的制造方法与工艺

本发明涉及一种的pcie总线与srio总线之间的桥接技术,特别设计一种基于现场可编程门阵列fpga的pcie与srio总线桥接系统。



背景技术:

pcie总线是目前在各类计算机中大规模应用的一种高速串行局部总线。作为连接cache和主存储器的系统总线的延伸,其主要功能是连接外部设备。作为传统pci总线的升级,pcie在兼容pci总线的同时,大大提升了数据传输速率与效率,更能有效地保证传输的可靠性。srio是一种面向嵌入式系统的高速串行互联总线,总线系统架构灵活,不局限于传统pc的树型架构,各处理单元之间能够对等通信。数据传输速度快,带宽利用效率高,系统的拓补结构更灵活。

在现有计算机系统中,可以通过桥接芯片,在其局部总线上挂接srio控制器,扩展出srio总线接口。现有的srio桥接芯片,ti公司的tsi721pcie-srio桥接芯片,价格昂贵,只能实现pcie与srio的桥接,想扩展pc中其他接口功能还需要使用其他的芯片与板卡,这无疑增加了成本。

fpga是一种可编程器件,接口极为灵活,通过编程可以在芯片上实现pcie总线接口及srio总线接口与外界通信。相比于专用的协议芯片,其功能可以按照需求进行裁剪或扩展。可以用于实现两种总线之间的桥接功能,在满足性能要求的前提下,能够提高系统集成度,控制成本。



技术实现要素:

本发明的目的在于提供一种基于fpga实现的pcie总线与srio总线之间的桥接系统,以解决上述现有技术的问题。

本发明一种基于fpga的pcie与srio总线桥接系统,其中,包括:pcie总线ip核、srio总线ip核、microblaze处理器模块、srio主模式dma传输控制器模块、srio从模式dma传输控制器模块、数据缓存模块以及bar空间寄存器;该pcieip核用于与上游设备数据交互,将上游设备发来的数据包转换为axi4总线事务,将内部的axi4总线事务转换为pcie数据包,发送给上游设备;srioip核,用于与对端srio设备通信;srio主模式dma传输控制器模块用于主动发起数据请求;srio从模式dma传输控制器模块用于响应对端设备的数据请求;microblaze处理器用于执行系统初始化配置以及数据传输的调度工作;数据缓存模块用于pcie与srio总线进行数据交互过程中,对中间过程数据进行暂存;与对端srio设备进行数据交互时,pcie总线ip核通过向bar空间寄存器写入配置信息,通知microblaze处理器模块用配置信息初始化srio主模式dma传输控制器模块和srio从模式dma传输控制器模块的参数,并启动与对端设备进行数据交互;与pcie上游设备数据交互时,srio主模式dma传输控制器模块和srio从模式dma传输控制器模块对pcieip核发起axi4总线dma传输事务,pcieip核将axi4总线事务转换为pcie报文,与上游设备通信。

根据本发明的基于fpga的pcie与srio总线桥接系统的一实施例,其中,srio主模式传输控制模块包括:第一axi4dma写入控制器模块以及第一axi4dma读取控制器模块;第一axi4dma写入控制器模块,用于向对端设备写数据时,从对端读取数据时,接收到对端设备返回的数据,解析数据包提取数据后,向pcieip核发起dma写入传输,将数据通过pcieip核写入内存;第一axi4dma读取控制器模块,用于需要向对端发起写数据操作时,向pcieip核发起axi4dma读操作,通过pcie从内存中读取写向对端的数据,再组装成srio数据包,送入srioip核发向对端设备。

根据本发明的基于fpga的pcie与srio总线桥接系统的一实施例,其中,srio从模式传输控制模块包括:第二axi4dma写入控制器模块以及第二axi4dma读取控制器模块;第二axi4dma写入控制器模块,用于响应对端设备数据写入请求时,解析对端设备发来的写请求数据包,获取对端设备发来的数据,向pcieip核发起axi4dma写传输请求,将数据通过pcie写入上游设备内存;第二axi4dma读取控制器模块,用于响应对端设备读取数据请求时,接收到数据请求后,向pcieip核发起axi4dma读取传输,通过pcie从内存中读取数据,再拼装成srio数据包,返回给对端设备。

根据本发明的基于fpga的pcie与srio总线桥接系统的一实施例,其中,microblaze处理器使用bar空间寄存器中的配置信息初始化,srio传输控制器设置好pcie上游设备内存中用于数据交互的缓存信息后,开始响应对端设备的读写请求,捕捉到对端设备的写数据请求时,解析出其中的数据,发起axi4dma写操作,通过pcie总线将数据写入内存;接收到对端设备的读请求时,发起axi4dma读取操作,从pcie上游设备内存中指定位置读取数据,打包送回。

根据本发明的基于fpga的pcie与srio总线桥接系统的一实施例,其中,pcie上游设备通过pcie总线向bar空间寄存器写入初始化信息,microblaze处理器读取初始化信息对系统内部各个模块进行设置,响应pcie上游设备或srio对端设备的请求,发起主模式或从模式的srio传输。

根据本发明的基于fpga的pcie与srio总线桥接系统的一实施例,其中,microblaze处理器包括:microblaze中断控制器,用于收集系统内各个模块产生的中断事件,报送给microblaze处理器进行相应的处理;辅助microblaze处理器,用于对系统工作进行调度;microblaze断点调试模块,用于与用户进行交互,对系统进行监测与调试。

根据本发明的基于fpga的pcie与srio总线桥接系统的一实施例,其中,还包括:axi4互联模块,用于对传输过程中的axi4总线事务进行路由转发,进行系统内模块之间的通信。

根据本发明的基于fpga的pcie与srio总线桥接系统的一实施例,其中,还包括:pciedma传输控制器模块,用于系统扩展。

本发明基于fpga的pcie与srio总线桥接系统,采用fpga厂家提供的pcie总线与srio总线ip核来实现对外数据收发,自主设计逻辑来实现两种总线之间的桥接。能够提高系统设计的灵活性并降低产品的成本。

附图说明

图1是本发明基于fpga的pcie与srio总线桥接系统的示意图;

图2所示为本发明基于fpga的pcie与srio总线桥接系统在pcie上游设备的控制下通过srio向对端设备写入数据的流程图;

图3所示为本发明基于fpga的pcie与srio总线桥接系统在pcie上游设备的控制下通过srio从对端设备内存中读取数据的流程图;

图4所示为本发明基于fpga的pcie与srio总线桥接系统在pcie上游设备通过srio总线接收对端设备向本地内存写入数据的工作流程图;

图5所示为本发明基于fpga的pcie与srio总线桥接系统在pcie上游设备通过srio总线响应对端设备读取数据的工作流程图。

附图标记

pcieendpoint端口ip核1;srio端口ip核2;

pciedma控制器3;microblaze嵌入式处理器4;

srio主模式传输控制5;srio从模式传输控制6;

pciebar空间寄存器7;microblaze中断控制器8;

内部数据缓存9;串口10;

microblaze断点调试控制模块11;axi写入dma控制器12;

axi读取dma控制器13;srio传输启动控制与主模式传输配置14;

axi写入dma控制器15;axi读取dma控制器16;

srio请求捕捉与从模式传输配置17;axi4总线互联模块18;

axi4总线互联模块19。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

图1是本发明基于fpga的pcie与srio总线桥接系统的示意图,如图1所示,基于fpga的pcie与srio总线桥接系统主要包括:pcie总线ip核1、srio总线ip核2、microblaze处理器模块4、pciedma传输控制器模块3、srio主模式dma传输控制器模块5、srio从模式dma传输控制器模块6、数据缓存模块9、microblaze断点调试模块11、传输启动与配置模块14,请求捕捉与从模式传输配置17、axi4总线互联模块18以及axi4总线互联模块19。

如图1所示,pcieip核1配置成endpoint模式,负责与上游设备数据交互,将上游设备发来的数据包转换为axi4总线事务,同时将系统内部其他模块发起的axi4总线事务转换为pcie数据包,发送给上游设备。srioip核2负责系统与对端srio设备通信,srioip核2既可以通过srio主模式dma传输控制器模块5主动发起数据请求(主模式),也可以通过srio从模式dma传输控制器模块6响应对端设备的数据请求(从模式)。pciedma传输控制器模块3可用于系统扩展,用来根据应用需求扩展其他数据吞吐量较大的模块,使其可以通过pcie总线向上游设备发起dma传输。系统内部基于axi4总线搭建。axi4总线上的器件靠axi4总线互联模块18和19连接起来,实现数据传输从发起传输的主设备到指定的从设备之间的路由。axi4总线互联模块18用于对和pcieip核1与srio总线ip核2相关的axi4总线数据传输进行路由;axi4总线互联模块19用于为microblaze处理器模块4对其他模块的访问进行路由控制。传输启动与配置模块14以及请求捕捉与从模式传输配置17,包含了主\从模式srio传输控制器中的配置寄存器,由microblaze处理器模块4使用bar空间的信息进行设置,进而控制srio主/从模式传输控制器5和6的行为(包括启动传输,设置传输地址与数据块长度等参数等功能)以及实施状态监控。

如图1所示,本系统与pcie上游设备和srio对端设备之间的通信由srio主模式dma传输控制器模块5和srio从模式dma传输控制器模块6来管理:与对端srio设备进行数据交互时,pcie总线ip核1通过向bar空间寄存器写入配置信息,通知microblaze处理器模块4用配置信息初始化srio主模式dma传输控制器模块5和srio从模式dma传输控制器模块6的参数,并启动与对端设备进行数据交互;与pcie上游设备数据交互时,srio主模式dma传输控制器模块5和srio从模式dma传输控制器模块6对pcieip核1发起axi4总线dma传输事务,pcieip核1将axi4总线事务转换为pcie报文,与上游设备通信。

如图1所示,srio主模式传输控制模块5中axi4dma写入控制器模块12以及axi4dma读取控制器模块13分别负责:向对端设备写数据时,按照初始化时设置的数据缓存信息,发起axi4dma读取,通过pcie总线从上游设备内存中获取数据并按照srioip核2的要求进行打包,通过与srioip核2之间的axistream总线送入srioip核2,进而发送给对端设备;从对端设备读取数据时,发起读请求以及接受srioip核2通过axistream总线传来的响应数据包,解析出其中的数据,并发起axi4dma写操作,通过pcie总线写入到上游设备的内存中。

如图1所示,srio从模式传输控制模块6的架构与srio主模式传输控制模块5类似。microblaze处理器4使用pciebar空间中的配置信息对其初始化,设置好pcie上游设备内存中用于数据交互的缓存信息后就可以开始响应对端设备的读写请求。捕捉到对端设备的写数据请求时,解析出其中的数据,发起axi4dma写操作,通过pcie总线将数据写入内存;接收到对端设备的读请求时,发起axi4dma读取操作,从pcie上游设备内存中指定位置读取数据,打包送回。

srio从模式dma写入控制器模块16用于接收到对端设备写入的数据时,接收srio总线ip核2通过axistream总线传来的写入数据包,解析出其中的数据,按照初始化时设置的数据缓存信息,发起axi4dma写操作,通过pcie总线向上游设备内存中写入数据;srio从模式axi4dma读取控制器模块15用于接收到对端的读取请求时,发起axi4dma读取,通过pcie总线从上游设备内存中获取数据并打包组成srio响应数据包,送入srio总线ip核2,返回给对端设备。

如图1所示,microblaze处理器4负责系统初始化配置的执行以及数据传输的调度工作。系统工作时,pcie上游设备要通过pcie总线向bar空间寄存器写入初始化信息,microblaze处理器4读取这些初始化信息对系统内部各个模块进行设置。之后,响应pcie上游设备或srio对端设备的请求,发起主模式或从模式的srio传输。microblaze处理器4有三个附属模块:microblaze中断控制器8负责收集系统内各个模块产生的中断事件,报送给microblaze处理器4进行相应的处理,辅助microblaze处理器4对系统工作进行调度;串口10与microblaze断点调试模块11负责与用户进行交互,对系统进行监测与调试。数据缓存模块9则用于pcie与srio总线进行数据交互过程中,对中间过程数据进行暂存,以便于工作流程的协调。

如图1所示,两个axi4互联模块18和19负责对传输过程中的axi4总线事务进行路由转发,实现系统中各模块之间的通信。

如图1所示,本系统作为请求发起者,向对端设备发出数据读写请求时,srio工作于主模式。向对端设备写数据时,数据随着请求包发送至对端设备,对端设备返回一个响应包,表示请求包成功被对端设备接收;从对端设备读取数据时,发送不带数据的请求包到对端设备,对端设备将数据放在响应包中返回,请求发起者提取响应包中的数据并送入内存,请求完成。

如图1所示,考虑到srio协议中对每个数据包携带的最大数据负载字节数的限制以及传输地址对齐等限制,应用中一个待传输的数据块通常会被拆分成多个srio包进行传送。将一个待传输数据块拆分成多个请求的工作由microblaze处理器4进行控制。srio主模式dma传输控制器模块5和srio从模式dma传输控制器模块6所面对的仅仅是每一次请求的传输参数,如缓存区地址、传输长度等。

如图1所示,一个数据块对应的所有请求完成后,由microblaze处理器4控制向对端发送一个srio门铃包,并接受验证对端返回的门铃包,实现双方握手,确保通信可靠完成。最后向pcie上游设备发送pcie中断,通知上游设备数据块传输完成。

如图1所示,向对端设备写入数据前,首先要获取对端设备缓存区地址。这里事先要与对端设备进行约定,让对端设备准备好地址与长度固定的缓存区,或者让对端设备准备好固定地址的寄存器存储在内存中动态开辟的缓存区的信息。该寄存器位于设备指定的地址处,访问该寄存器不涉及链路两端设备内存数据交互,在本系统中亦不涉及到pcie总线读写操作。

图2所示为本发明基于fpga的pcie与srio总线桥接系统在pcie上游设备的控制下通过srio向对端设备写入数据的流程图,如图1以及图2所示,srio主模式传输控制器模块5中,axi4dma读取控制器发起axi4dma传输,通过pcie总线从上游设备内存中读取待发送的数据,在srio主模式传输控制器模块5中组装成规定格式的数据包,再通过axistream端口送给srioip核2发送出去。接收到对端处理单元的响应包后,一次srio写请求操作完成。microblaze处理器4检测到所有请求操作均完成后,进行门铃握手操作,发送pcie中断,结束传输。

图3所示为本发明基于fpga的pcie与srio总线桥接系统在pcie上游设备的控制下通过srio从对端设备内存中读取数据的流程图,如图3所示,与写入数据的工作过程类似,对端设备应通过事先约定,准备好一个固定地址的缓存区或者动态分配数据缓存区然后将缓存区信息写入固定地址的寄存器,供请求方读取,此过程同样仅涉及操作srio从固定地址请求数据,不涉及pcie及内存的数据交互。系统收到上游设备欲从srio对端设备读取数据的请求后,本系统中的srio主模式传输控制器模块5通过srioip核2向对端设备发送读请求,接收到对端设备的响应包后,解析响应包,axi4dma写入控制器12发起axi4dma传输,按照包头所指示的信息将解析出的数据通过pcie总线写入到上游设备的内存中,完成一次srio请求。所有请求均完成后,进行门铃握手操作并发送pcie中断,结束传输。

如图1所示,本系统响应对端设备读写请求时,srio工作于从模式。接收对端设备写入的数据时,数据随请求包一起通过srio传送至系统中的srioip核2,srio从模式传输控制器模块6随后对数据包进行解析,将数据送入pcie上游设备内存,并根据请求类型返回响应包;对端设备读取数据时,先发送请求包,srioip核2接收并由srio从模式传输控制器模块6解析请求包后,根据请求包的要求从pcie上游设备内存中读取数据,加上包头合成响应包返回对端设备,完成请求。

如图1所示,工作于从模式时,srio数据包的拆分由对端请求发起者控制。此时,本系统所做的工作仅仅是解析每一次请求,然后传输处理请求响应的数据。请求完成后,等待设备发起者发来的srio门铃包,返回一个门铃包作为握手应答,并向上游设备发送pcie中断,完成传输。

图4所示为本发明基于fpga的pcie与srio总线桥接系统在pcie上游设备通过srio总线接收对端设备向本地内存写入数据的工作流程图,如图1以及图4所示,对端设备写入数据前,要先获取可供写入的目标地址。这个地址应为事先约定好的固定地址或由pcie上游设备动态开辟的地址,但存放于一个地址固定的寄存器中。寄存器位于指定的地址处,对端设备通过寄存器获取缓存区信息的过程不涉及对pcie传输及内存的访问。

如图1以及图4所示,srio从模式传输控制器模块6接收到srioip核2捕捉到的对端设备发来的写入请求包后,解析出数据,axi4dma写入控制器16发起axi4dma传输,通过pcie总线将数据写入上游设备的内存中。传输结束,系统会收到对端设备发来的srio门铃包通知传输结束。返回一个门铃包进行握手确认后,再向上游设备发送pcie中断,结束传输。

图5所示为本发明基于fpga的pcie与srio总线桥接系统在pcie上游设备通过srio总线响应对端设备读取数据的工作流程图,如图1以及图5所示,与响应对端设备数据写入请求的过程类似,对端设备发起读请求之前,首先要读取在srio主模式dma传输控制器模块5和srio从模式dma传输控制器模块6中实现约定好的固定地址寄存器,获取pcie上游设备内存中数据缓存的位置、长度以及是否就绪等信息,然后根据缓存区的信息发送请求包。

如图5所示,srio从模式传输控制器模块6通过srioip核2接收到对端设备的读请求后,axi4dma读取传输控制器模块发起axi4dma传输,通过pcie总线从上游设备的数据缓存中读取数据,加上包头组装成数据包,返回给对端设备。dma传输由microblaze处理器4通过设置srio从模式传输控制器模块6中的寄存器进行参数配置和控制。所有请求完成后,以门铃握手和pcie中断结束传输。

本发明基于fpga的pcie与srio总线桥接系统,采用xilinx提供的pcie总线ip核与srio总线ip核实现对外的数据交互,内部架构中的核心部分为srio主(从)模式传输控制器模块。srio传输控制器的一端与srioip核通过axistream总线进行数据包的传递,包括向对端发送读或写请求包,与从对端接收读写请求包;另一端为axi4总线,用于对pcieip核发起dma传输,并经pcieip核转换为pcie数据包,实现对pcie上游设备内存的读写。srio传输控制器按照srioip核通信格式的要求,进行数据包的解析及拼装,实现对其两端axi4总线与axistream总线的桥接,进而实现pcie总线与srio总线的桥接。

在一个计算机系统中,其对外接口通常除了srio之外还存在多种总线接口,如以太网、视频、数据加解密等。可以在fpga中按照需求灵活配置pcie与srio的通信带宽,并集成所需的功能模块。若采用专用芯片进行桥接的方案,通过srio收发的数据必须经过cpu内存后才能被计算机系统中其他功能模块所使用的。而采用本方案,可以将axi总线上挂接的存储器memorybuffer模块映射为srio的数据缓存,这样通过srio收发的数据即可通过pcie与cpu内存进行交互、也可以供集成于fpga内部的其他功能模块通过axi总线访问,比如对数据进行硬件加解密,进行安全验证,或者实现与其他通信接口进行桥接等功能,增加了系统设计的灵活性。

本发明基于fpga的pcie与srio总线桥接系统,相比于采用专用芯片进行桥接并搭建系统的方案,采用fpga进行桥接无疑省去了专用芯片的开销,提高了系统集成度,减小了电路板面积、电路板数量和元器件数目,节约了产品的成本。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

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