本发明涉及计算机总线通信技术领域,具体涉及基于zynq的实时高性能srio控制器及控制方法。
背景技术:
xilinxzynq-7000系列全可编程片上系统采用了微处理器加可编程逻辑的结构,集成双核armcortexa9处理系统和高达500多万门的可编程逻辑,为嵌入式系统提供了更加灵活的解决方案。zynq的可编程逻辑(pl)部分具有丰富的ip资源,用户可以用其ip进行逻辑设计。serialrapaidiogen2是用于开发srio总线的ip核,其实现了axi4stream接口和srio物理层接口的转换,从而实现zynq在嵌入式系统中的高速数据传输。
srio协议的设计实现分为三层:逻辑层、传输层和物理层。目前使用zynq进行srio接口设计开发主要是采用ps部分实现逻辑层和传输层,该方法软件实现简单快速,但需要通过ps部分的软件进行协议和中断信号的处理,由于ps部分软件运行效率低、执行周期长,造成srio传输延时高、传输速率低,无法满足实时高性能数据传输应用。
技术实现要素:
针对上述问题中存在的不足之处,本发明提供基于zynq的实时高性能srio控制器及控制方法。
本发明公开了一种基于zynq的实时高性能srio控制器,包括:顺次连接的ddr存储器、集成arm处理系统ps和可编程逻辑pl;
在主动事务下:
所述ddr存储器,用于:
存储srio发送及接收的数据;
所述集成arm处理系统ps,用于:
发送主动发事务控制指令或主动读事务控制指令,所述主动发事务控制指令或主动读事务控制指令包括事务类型、目的id和数据包大小;
所述可编程逻辑pl,用于:
根据所述主动发事务控制指令调取所述ddr存储器中对应的srio数据,产生srio主动发事务请求包发送至对端收发器;
根据所述主动读事务控制指令解析所述对端收发器的应答包,将所述应答包的srio数据发送至所述ddr存储器。
作为本发明的进一步改进,在被动事务下:
所述可编程逻辑pl,用于:
解析所述对端收发器的srio被动事务请求包,产生的数据存储至所述ddr储存器中;
解析所述对端收发器的srio被动事务请求包,产生的中断信号通知所述集成arm处理系统ps;
解析所述对端收发器的srio被动事务请求包,根据产生的被动控制指令将所述ddr存储器中对应的srio数据发送至所述对端收发器;
所述集成arm处理系统ps,用于:
接收所述中断信号。
作为本发明的进一步改进,所述集成arm处理系统ps与可编程逻辑pl通过axi总线互联。
作为本发明的进一步改进,所述集成arm处理系统ps包括:
ddr控制器,所述ddr控制器与所述ddr存储器相连;
高速接口hp0,所述高速接口hp0与所述ddr控制器相连,用于在主动事务下传输srio数据;
普通接口gp,用于发送所述主动发事务控制指令或主动读事务控制指令;
高速接口hp1,所述高速接口hp1与所述ddr控制器相连,用于在被动事务下传输srio数据;
中断控制器接口int,用于接收所述中断信号。
作为本发明的进一步改进,所述可编程逻辑pl包括:
请求处理模块,所述请求处理模块通过axi总线与所述高速接口hp0和普通接口gp相连,用于:
根据所述主动发事务控制指令调取所述ddr存储器中对应的srio数据,产生srio主动发事务请求包发送至对端收发器;
根据所述主动读事务控制指令解析所述对端收发器的应答包,将所述应答包的srio数据发送至所述ddr存储器;
应答处理模块,所述应答处理模块通过axi总线与所述高速接口hp1和中断控制器接口int相连,用于:
解析所述对端收发器的srio被动事务请求包,产生的数据存储至所述ddr储存器中;
解析所述对端收发器的srio被动事务请求包,产生的中断信号通知所述集成arm处理系统ps;
解析所述对端收发器的srio被动事务请求包,根据产生的被动控制指令将所述ddr存储器中对应的srio数据发送至所述对端收发器;
srioip核,所述srioip核通过axi总线与所述请求处理模块和应答处理模块相连,所述srioip核通过srio物理层接口与所述对端收发器相连;用于实现axi总线接口和srio物理层接口的转换。
作为本发明的进一步改进,所述请求处理模块包括:
第一datamoverip核,用于提供srio主动事务与ddr存储器之间的mm2s和s2mm数据流;
第一发送数据fifo,用于缓存srio主动事务与ddr存储器之间的mm2s数据流数据;
第一接收数据fifo,用于缓存srio主动事务与ddr存储器之间的s2mm数据流数据;
产生请求包模块,用于根据gp口指令产生srio主动事务的请求包;
解析应答包模块,用于解析srio主动事务的应答数据包。
作为本发明的进一步改进,所述应答处理模块包括:
第二datamoverip核,用于提供srio被动事务与ddr存储器之间的mm2s和s2mm数据流;
接收指令fifo,用于缓存srio被动事务的请求包头帧数据;
第二接收数据fifo,用于缓存srio被动事务与ddr存储器之间的s2mm数据流数据;
第二发送数据fifo,用于缓存srio被动事务与ddr存储器之间的mm2s数据流数据;
解析请求包模块,用于解析srio被动事务的请求数据包,并根据请求数据包的事务类型产生中断信号;
应答包模块,用于产生srio被动请求事务的应答包。
本发明还公开了一种实时高性能srio控制器的控制方法,包括:
在主动事务下:
所述集成arm处理系统ps发送主动发事务控制指令,所述主动发事务控制指令包括事务类型、目的id和数据包大小;
所述可编程逻辑pl根据所述主动发事务控制指令调取所述ddr存储器中对应的srio数据,产生srio主动发事务请求包发送至对端收发器。
作为本发明的进一步改进,还包括:
在主动事务下:
所述集成arm处理系统ps发送主动读事务控制指令,所述主动读事务控制指令包括事务类型、目的id和数据包大小;
所述可编程逻辑pl根据所述主动读事务控制指令解析所述对端收发器的应答包,将所述应答包的srio数据发送至所述ddr存储器。
作为本发明的进一步改进,还包括:
在被动事务下:
所述可编程逻辑pl解析对端收发器的srio被动事务请求包,产生的数据存储至所述ddr储存器中;
所述可编程逻辑pl解析对端收发器的srio被动事务请求包,产生的中断信号通知所述集成arm处理系统ps;
所述可编程逻辑pl解析对端收发器的srio被动事务请求包,根据产生的被动控制指令将所述ddr存储器中对应的srio数据发送至所述对端收发器。
与现有技术相比,本发明的有益效果为:
本发明通过pl部分实现srio接口逻辑层、传输层和数据流控制,ps部分只需要简单的寄存器操作即可实现srio接口控制;解决了采用ps部分实现srio接口控制导致的传输延时高、传输速率低的问题,满足了实时高性能数据传输应用。
附图说明
图1为本发明一种实施例公开的基于zynq的实时高性能srio控制器的框架图;
图2为图1中请求处理模块的示意图;
图3为图1中应答处理模块的示意图。
图中:
10、ddr存储器;20、集成arm处理系统ps;30、可编程逻辑pl;31、请求处理模块;311、第一datamoverip核;312、第一发送数据fifo;313、第一接收数据fifo;314、产生请求包模块;315、解析应答包模块;32、应答处理模块;321、第二datamoverip核;322、接收指令fifo;323、第二接收数据fifo;324、第二发送数据fifo;325、解析请求包模块;326、应答包模块;33、srioip核。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图对本发明做进一步的详细描述:
如图1所示,本发明提供一种基于zynq的实时高性能srio控制器,包括:顺次连接的ddr存储器10、集成arm处理系统ps20和可编程逻辑pl30;ddr存储器10,用于srio发送及接收数据的存储;集成arm处理系统(ps)20,用于执行应用软件,在主动事务时,发送主动控制指令;包括高速接口hp、普通接口gp及ddr控制器;可编程逻辑(pl)30,用于实现srio控制逻辑,包括请求处理模块31,应答处理模块32和srioip核33;ddr存储器与ps部分ddr控制器相连;ps与pl部分通过axi总线互联。通过上述框架结构,采用pl代替ps,解决了采用ps部分实现srio接口控制导致的传输延时高,传输速率低的问题,满足了实时高性能数据传输应用。
其中:
在主动事务下:
ddr存储器10,用于:
存储srio发送及接收的数据;
集成arm处理系统ps20,用于:
发送主动发事务控制指令或主动读事务控制指令,主动发事务控制指令或主动读事务控制指令包括事务类型、目的id和数据包大小;
可编程逻辑pl30,用于:
根据主动发事务控制指令调取ddr存储器中对应的srio数据(将ddr相应地址的数据搬移到fifo中),进行组包、产生srio主动发事务请求包(包括协议帧头,数据帧)发送至对端收发器;并等待srio应答事务,确认应答事务后,可编程逻辑pl30发送下一次主动事务请求,直至完成全部数据发送(因为每一次最多发送256byte数据,如果ps发送过来的数据包大小为1024byte,则需要发起四次写事务);
根据主动读事务控制指令解析对端收发器的应答包,将应答包的srio数据发送至ddr存储器。
在被动事务下:
ddr存储器10,用于:
存储srio发送及接收的数据;
可编程逻辑pl30,用于:
解析对端收发器的srio被动事务请求包,产生的数据存储至ddr储存器中;
解析对端收发器的srio被动事务请求包,产生的中断信号通知集成arm处理系统ps20;
解析对端收发器的srio被动事务请求包,根据产生的被动控制指令将ddr存储器中对应的srio数据发送至对端收发器;
集成arm处理系统ps20,用于:
接收中断信号。
具体的:
本发明的ps20包括:
ddr控制器,ddr控制器与ddr存储器相连,用于响应相关指令,从ddr存储器向外发送对应的数据或接收外部传来的数据;
高速接口hp0,高速接口hp0与ddr控制器相连,并通过axi总线与pl部分的请求处理模块互联;用于在主动事务下传输srio数据,即通过该接口提供srio主动事务与ddr存储器之间的mm2s和s2mm数据流;
普通接口gp,通过axi总线与pl部分的请求处理模块31互联;用于发送主动控制指令,即设置srio主动事务的控制参数及查看主动事务完成状态;即,发送主动发事务控制指令或主动读事务控制指令,主动发事务控制指令或主动读事务控制指令包括事务类型、目的id和数据包大小等;
高速接口hp1,高速接口hp1与ddr控制器相连,并通过axi总线与pl部分的应答处理模块32互联;用于在被动事务下传输srio数据,即提供srio被动事务与ddr存储器之间的mm2s和s2mm数据流;
中断控制器接口int,通过axi总线与pl部分的应答处理模块32互联;用于接收应答处理模块产生的中断信号。
本发明的pl30包括:
请求处理模块31,请求处理模块通过axi总线与高速接口hp0和普通接口gp相连,用于:
产生srio主动事务请求包和解析srio主动事务应答包;
进一步,产生srio主动事务请求包是根据主动发事务控制指令调取ddr存储器中对应的srio数据,产生srio主动发事务请求包发送至srioip核,经srioip核发送至外部对端收发器;
进一步,解析srio主动事务应答包是根据主动读事务控制指令解析对端收发器的应答包,将应答包的srio数据通过ps部分hp0发送至ddr存储器;
应答处理模块32,应答处理模块通过axi总线与高速接口hp1和中断控制器接口int相连,用于解析srio被动事务请求包、产生srio被动事务应答包和产生中断信号;
进一步的,解析srio被动事务请求包是解析对端收发器的srio被动事务请求包,产生的数据通过ps部分hp1口存储至ddr储存器中;
进一步的,产生srio被动事务应答包是解析对端收发器的srio被动事务请求包,根据产生的被动控制指令将ddr存储器中对应的srio数据发送至srioip核,经srioip核发送至外部对端收发器;
进一步的,产生中断信号是解析对端收发器的srio被动事务请求包,产生的中断信号通知集成arm处理系统ps。
srioip核33,实现axi总线接口和srio物理层接口(对端收发器接口)的转换,并通过axi总线分别与pl部分的请求处理模块31和应答处理模块32相连。
更具体的:
如图2所示,本发明的请求处理模块31包括:
第一datamoverip核311,用于提供srio主动事务与ddr存储器之间的mm2s和s2mm数据流;
第一发送数据fifo312,用于缓存srio主动事务与ddr存储器之间的mm2s数据流数据;
第一接收数据fifo313,用于缓存srio主动事务与ddr存储器之间的s2mm数据流数据;
产生请求包模块314,用于根据gp口指令产生srio主动事务的请求包;
解析应答包模块315,用于解析srio主动事务的应答数据包。
如图3所示,本发明的应答处理模块32包括:
第二datamoverip核321,用于提供srio被动事务与ddr存储器之间的mm2s和s2mm数据流;
接收指令fifo322,用于缓存srio被动事务的请求包头帧数据;请求包头帧数据包括事务id、事务类型、数据长度、地址信息、优先级等。
第二接收数据fifo323,用于缓存srio被动事务与ddr存储器之间的s2mm数据流数据;
第二发送数据fifo324,用于缓存srio被动事务与ddr存储器之间的mm2s数据流数据;
解析请求包模块325,用于解析srio被动事务的请求数据包,并根据请求数据包的事务类型产生中断信号;
应答包模块326,用于产生srio被动请求事务的应答包。
本发明提供一种实时高性能srio控制器的控制方法,包括:
在主动事务下:
集成arm处理系统ps发送主动发事务控制指令,主动发事务控制指令包括事务类型、目的id和数据包大小;
可编程逻辑pl根据主动发事务控制指令调取ddr存储器中对应的srio数据(将ddr相应地址的数据搬移到fifo中),进行组包、产生srio主动发事务请求包(包括协议帧头,数据帧)发送至对端收发器;并等待srio应答事务,确认应答事务后,可编程逻辑pl30发送下一次主动事务请求,直至完成全部数据发送(因为每一次最多发送256byte数据,如果ps发送过来的数据包大小为1024byte,则需要发起四次写事务)。
在主动事务下:
集成arm处理系统ps发送主动读事务控制指令,主动读事务控制指令包括事务类型、目的id和数据包大小;
可编程逻辑pl根据主动读事务控制指令解析对端收发器的应答包,将应答包的srio数据发送至ddr存储器。
在被动事务下:
可编程逻辑pl解析对端收发器的srio被动事务请求包,产生的数据存储至ddr储存器中;
可编程逻辑pl解析对端收发器的srio被动事务请求包,产生的中断信号通知集成arm处理系统ps;
可编程逻辑pl解析对端收发器的srio被动事务请求包,根据产生的被动控制指令将ddr存储器中对应的srio数据发送至对端收发器。
综上,采用上述技术方法,本发明的有益效果是:通过pl部分实现srio接口逻辑层、传输层和数据流控制,ps部分只需要简单的寄存器操作即可实现srio接口控制。解决了采用ps部分实现srio接口控制导致的传输延时高,传输速率低的问题,满足了实时高性能数据传输应用。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。