基于aurora协议的高速总线接口的扩展架构
技术领域
本发明涉及计算机系统的总线接口和存储技术领域,具体地,涉及一种基于aurora协议的高速总线接口的扩展架构。
背景技术
Aurora 协议是由 Xilinx 公司提供的一个开放、免费的链路层协议,可以用来进行点到点的串行数据传输,具有高效传输数据和简单易用的特点。Aurora是一个相对简单的协议,只控制链路层和物理层。Aurora的设计理念是使其它高层协议,例如TCP/IP和以太网,可以很容易的运行在Aurora之上。Aurora协议使用1个或多个高速的串行通道构成更高速的通路,Aurora 的内部封装了 RocketIO 硬核,允许器件之间以背板的方式通过多个GTX 通道绑定进行通信。单个GTX 通道可实现 750Mbit/s~6.5Gbit/s[2]的通信传输,多个 GTX 通道的组合可实现几十 Gbit/s 甚至上百 Gbit/s 的通信传输。
Rocket I/O是一种高速的串行收发器,采用两对差分对来进行数据的发送和接收,可以实现两个单工或一对全双工的数据传输。Rocket I/O支持从622 Mbps至3.75Gbps的全双工传输速率,还具有8B/10B编解码(平衡编码)、时钟生成及恢复等功能,可以理想地适用于芯片之间或背板的高速串行数据传输。Aurora协议是为专有上层协议或行业标准的上层协议提供透明接口的第一款串行互连协议,可用于高速线性通路之间的点到点串行数据传输,同时其可扩展的带宽,为系统设计人员提供了所需要的灵活性。 随着网络技术的不断发展,数据交换、数据传输流量越来越大。尤其像雷达,气象、航天等领域,不仅数据运算率巨大,计算处理复杂,而且需要实时高速远程传输,需要长期稳定有效的信号加以支持,以便能够获得更加精准的数据收发信息,更好的为工程项目服务。传统的并行传输方式由于走线多、信号间串扰大等缺陷,无法突破自身的速度瓶颈。而串行传输拥有更高的传输速率但只需要少量的信号线,降低了背板开发成本和复杂度,满足高频率远距离的数据通信需求,被广泛应用到各种高速数据通信系统设计中。
目前,高速串行接口取代并行拓扑结构已经是大势所趋,当今很多公用互连标准(如USB,PCI-Express)都是基于串行连接来实现高速传输 的。相比于并行总线,串行连接的物理紧密度和链路韧性具有很多优势。因此,很多传输领域都转向了串行传输,如笔记本电脑显示互连、高速背板互连和存储器内部互连系统。该系统涉及到的技术主要包括:光纤传输、PCIE(PCI-Express)传输和DDR缓存技术,以及这几种技术在FPGA中融合为一个完整的串行传输链路,并实现了在两台服务器之间的高速数据传输测试,这对于实际工程应用具有重要的现实意义。
高速串行传输系统作为数据采集、传输、存储中的一部分,对传输性能指标有着严格的要求。特别是在高速背板互连的存储系统中,需要连接很多个存储接口,而现有系统的资源不够,需要对接口进行扩展,现有的aurora协议的高速总线接口的扩展不足。
发明内容
本发明的目的在于,针对上述问题,提出一种基于aurora协议的高速总线接口的扩展架构,在保证高速数据稳定传输的同时,通过aurora协议的高速总线轻量级接口功能高效、灵活、方便地实现存储器接口的扩展的优点。
为实现上述目的,本发明采用的技术方案是:
一种基于aurora协议的高速总线接口的扩展架构,包括host_aurora(主机端aurora接口)模块、host_user_app(主机端用户应用程序接口)模块、exp_aurora(扩展板端aurora接口)模块和exp_user_app(扩展板端用户应用程序接口)模块;
所述host_aurora模块:是实现整个主机端接口的主控制模块,对接收端数据包进行解包操作,根据私有协议定义的数据帧格式的内容去访问接收数据指定的LIS 接口,DCR接口和中断接口逻辑,对主机端发送的数据按照私有协议定义的格式进行封装操作,实现主机端发送数据接口的DCR桥和LIS桥接口逻辑以及local link接口的仲裁硬件逻辑;
所述host_user_app模块:是主机端用户接口应用层模块,应用层通过DCR接口访问 上述host_aurora模块;
所述exp_aurora模块:是实现整个扩展板端的主控制模块,对接收端数据包进行解包操作,根据私有协议定义的数据帧格式的内容去访问接收数据指定的LIS 接口,DCR接口和中断接口逻辑,对扩展板端发送的数据按照私有协议定义的格式进行封装操作,实现扩展板端发送数据接口的DCR桥和LIS桥接口逻辑以及local link接口的仲裁硬件逻辑;
所述exp_user_app模块:是扩展板端用户接口应用层模块,应用层通过DCR接口访问上述exp_aurora模块。
根据本发明的优选实施例,所述host_aurora模块包括主机端aurora_core(aurora硬核)模块、接收数据端的host_rx_mux(主机接收数据多端口选择)模块、host_rx_unpacking(主机接收数据包解包)模块、host_rx_fifo(主机接收数据包缓存)模块、host_rx_dcr_if(主机接收数据的DCR接口)模块、host_lis_if(主机LIS接口)模块、host_int_if(主机中断接口)模块、发送数据端的host_ll_mux(主机发送数据包local link 接口多路选择)模块、host_ll_arb(主机发送数据包local link 接口仲裁)模块、host_tx_dcr_if(主机发送数据包DCR接口)模块、host_tx_packing(主机发送数据包组包)模块、host_tx_fifo(主机发送数据包缓存)模块、host_message(主机端信息控制)模块和host_cfg_fifo(主机端配置信息缓存)模块;
所述主机端 aurora_core模块: aurora协议的高速总线接口的aurora硬核模块,实现数据传输的物理层(phy)和链路层(link)协议,对上层协议提供数据传输的local link层接口通道,对物理层和链路层提供稳定的读写数据传输通道;
所述host_rx_mux模块:主机端接收数据的多路选择端口模块,主要检测上述主机端aurora_core模块来自local link接口的数据,解析接口数据信息,按照输入状态信息的内容输出要访问的指定的内存和寄存器状态信息;
所述host_rx_unpacking模块:主机端接收数据解包模块,接收来自上述主机端aurora_core模块的数据和host_rx_mux模块的状态信息,将接收数据存入接收数据缓存,同时根据接收状态信息去访问指定的内存地址和寄存器信息,该host_rx_unpacking模块前端接口接收主机端aurora_core模块的数据和host_rx_mux模块的控制状态信息,后端接口是访问指定的内存地址和寄存器信息的访问接口(LIS接口)和寄存器访问接口(DCR接口);
所述host_rx_fifo模块:主机端接收数据缓存模块,主要是对数据作预取操作,实现对接收数据的流控;
所述 host_rx_dcr_if模块:主机端接收数据的DCR接口,负责配置接收端寄存器的配置,接收上述主机端aurora_core模块的数据,配置接收寄存器配置的初始值,根据接收数据端的配置寄存器的值选择端口寄存器进行配置;
所述host_lis_if模块:主机端接收数据到系统内存访问的LIS接口实现,接收上述主机端aurora_core模块接口的数据,根据接收数据端的状态信息来访问指定的内存地址;
所述host_int_if模块:主机端接收数据的中断状态信息接口,接收上述主机端aurora_core模块的数据,根据接收数据端的状态信息来访问指定的端口进行扩展;
所述host_ll_mux模块:主机端发送数据的local link接口的多路选择模块,控制主机端发送数据的端口选择,并发送数据到对应的数据端口;
所述host_ll_arb模块:主机端发送数据的local link接口的仲裁模块,主机端发送数据采用多端口轮循的方式发送,通过host_ll_arb模块来仲裁端口数据的发送,避免数据发送时停留在某一个端口来发送数据;
所述host_tx_dcr_if模块:主机端发送数据的寄存器访问DCR接口,主机发送端通过DCR接口访问发送数据端硬件寄存器,配置硬件寄存器的置,通过硬件寄存器的值去选择发送数据到对应端, host_tx_dcr_if模块后端接口连接host_message模块;
所述host_tx_packing模块:主机端发送数据包模块,发送来自系统或应用层的数据到上述主机端aurora_core模块的接收数据端,host_tx_packing模块发送数据首先会将要发送的数据存入发送数据缓存模块,同时根据host_tx_dcr_if模块后端的状态信息去发送指定的端口数据,host_tx_packing模块前端接口为系统内存访问的LIS接口和寄存器访问的DCR接口,后端是aurora_core的local link接口;
所述host_tx_fifo模块:主机端发送数据缓存模块,主要是对数据发送作预取操作,实现对发送数据的流控;
所述host_message模块:主机端消息机制管理模块,控制系统的发送和接收状态中断信息,发送和接收数据定义的寄存器信息,host_message模块前端是寄存器访问DCR接口,主机通过DCR接口配置发送状态寄存器的值,系统发送数据端口的中断信息;后端是主机端aurora_core模块的local link的接收端,通过host_message端口的数据都通过配置缓存来实现预取和配置信息的流控;
所述host_cfg_fifo模块:主机端发送数据配置寄存器的缓存模块,主要是对配置数据作预取操作和发送配置数据的流控。
根据本发明的优选实施例,所述exp_aurora模块包括扩展板端aurora_core(aurora硬核)模块,数据传输接收数据端的exp_rx_mux(扩展板接收数据多端口选择)模块,exp_rx_unpacking(扩展板接收数据包解包)模块,exp_rx_fifo(扩展板接收数据包缓存)模块,exp_rx_dcr_if(扩展板接收数据DCR接口)模块,exp_lis_if(扩展板接收数据LIS接口)模块,exp_int_if(扩展板中断接口)模块和数据传输发送数据端的exp_ll_mux(扩展板local link接口的多路选择)模块,exp_ll_arb(扩展板local link接口的仲裁)模块,exp_dcr_if(扩展板DCR接口)模块,exp_tx_packing(扩展板发送数据的组包)模块,exp_tx_fifo(扩展板发送数据包缓存)模块,exp_message(扩展板信息控制)模块和exp_cfg_fifo(扩展板配置信息缓存)模块;
所述扩展板端aurora_core模块: aurora协议的高速总线接口的aurora核,实现数据传输的物理层(phy)和链路层(link)协议,对上层协议提供数据传输的local link层接口通道,对物理层和链路层提供稳定的读写数据传输通道;
所述exp_rx_mux模块:扩展板端接收数据的多路选择端口模块,检测上述扩展板端aurora_core模块local link接口的数据,解析接口数据信息,按照输入状态信息的内容输出要访问的指定的内存和寄存器状态信息;
所述exp_rx_unpacking模块:扩展板端接收数据解包模块,接收来自上述扩展板端aurora_core模块的数据和exp_rx_mux模块的状态信息,将接收数据存入接收数据缓存,同时根据接收状态信息去访问指定的内存地址和寄存器信息, exp_rx_unpacking模块前端接口是扩展板端aurora_core模块的数据和exp_rx_mux模块的控制状态信息,后端接口是访问指定的内存地址和寄存器信息的memory访问接口(LIS接口)和 寄存器访问接口(DCR接口);
所述exp_rx_fifo模块:扩展板端接收数据缓存模块,主要是对接收数据作预取操作,实现对接收数据的流控;
所述exp_rx_dcr_if模块:扩展板端接收数据的DCR接口,负责配置接收端寄存器的配置,接收扩展板端aurora_core模块接口的数据,配置接收寄存器配置的初始值,根据接收数据端的配置寄存器的值选择端口寄存器进行配置;
所述exp_lis_if模块:扩展板端接收数据访问系统内存的LIS接口,接收上述扩展板端aurora_core模块接口的数据,根据接收数据端的状态信息来访问指定的内存地址;
所述exp_int_if模块:扩展板端接收数据的中断状态信息接口,接收上述扩展板端aurora_core模块接口的数据,根据接收数据端的状态信息来访问指定的端口进行扩展;
所述exp_ll_mux模块:扩展板端发送数据的local link接口的多路选择模块,控制私有协议定义的主机端发送数据的端口选择,根据多路选择模块的数据信息去发送数据到对应的数据端口;
所述exp_ll_arb模块:扩展板端发送数据的local link接口的仲裁模块,主机端发送数据采用多端口轮循的方式发送,通过exp_ll_arb模块来仲裁端口数据的发送,避免数据发送时停留在某一个端口来发送数据;
所述exp_tx_dcr_if模块:扩展板端发送数据的寄存器访问DCR接口,主机发送端通过DCR接口访问发送数据端的硬件寄存器,配置硬件寄存器的值,通过硬件寄存器的值去选择发送数据到对应端, exp_tx_dcr_if模块后端接口连接exp_message模块;
所述exp_tx_packing模块:扩展板端发送数据包模块,发送来自系统或应用层的数据到上述扩展板端aurora_core模块的接收数据端,exp_tx_packing模块发送数据首先将要发送的数据存入发送数据缓存模块,同时根据exp_tx_dcr_if模块后端的状态信息去发送指定的端口数据,exp_tx_packing模块前端接口为系统内存访问的LIS接口和寄存器访问的DCR接口,后端是扩展板端aurora_core的local link接口;
所述exp_tx_fifo模块:扩展板端发送数据缓存模块,对数据发送作预取操作,实现对发送数据的流控;
所述exp_message模块:扩展板端消息机制管理模块,控制系统的发送和接收状态中断信息,私有协议定义的发送和接收数据定义的寄存器信息,exp_message模块前端是寄存器访问DCR接口,主机通过DCR接口配置发送状态寄存器的值,系统发送数据端口的中断信息;后端是上述扩展板端aurora_core模块的local link的接收端,通过exp_message端口的数据都通过配置缓存来实现预取和配置信息的流控;
所述exp_cfg_fifo模块:主机端扩展板端发送数据配置寄存器的缓存模块,是对配置数据作预取操作和发送配置数据的流控。
根据本发明的优选实施例,所述私有协议为通过硬件逻辑实现主机端和背板端系统通信的一种自定义协议方式,私有协议中定义了传输层数据包的帧格式,包括帧头帧尾和数据等,每个传输包的数据格式固定,低层包括链路层(link)和物理层(phy) ,通过低层的aurora协议来完成链路层(link)和物理层(phy)的传输, 私有协议还提供了链接内部总线的DCR桥接口和读写系统memory的LIS桥接口,通过桥接的方式实现用户端访问存储器的扩展接口;
所述DCR桥接口是私有协议定义的用户端访问存储器接口的多端口选择控制接口,通过硬件逻辑实现DCR接口寄存器访问来选择对应的存储器端口进行数据传输;
所述LIS桥接口是私有协议定义的存储器接口映射的内存地址区域的多区域选择控制接口,每个存储器端口对应在内存区域映射固定的地址,通过硬件逻辑实现对访问系统内存(memory)的LIS接口映射内存地址区域的访问来选择对应的存储器端口进行数据传输。
根据本发明的优选实施例,所述私有协议的数据包格式如下:
所述数据包格式由多个数据字段组成,每个数据字段数据位宽为32位,数据包的格式由数据包的包头,数据和包尾组成。
所述的包头信号名为LL_SOF_N(LL_SOF_N是定义在私有协议中数据包结构传输开始的信号名,它表示为local link接口的帧传输开始(start of frame)信号,高电平有效)。
所述的包尾信号名为LL_EOF_N(LL_EOF_N是定义在私有协议中数据包结构传输结束的信号名,它表示为local link接口的帧传输结束(end of frame)信号,高电平有效)。
所述的数据包含有多个数据字段可以是读写数据,配置信息,控制位状态信息等,每个数据字段的数据位宽都为32位。
根据本发明的优选实施例,所述私有协议DCR接口写或读数据包格式如下:
所述数据包包含多个数据字段,每个数据字段为4个字节(byte),数据包包头数据字段标记为word0,word0中的字段信息为LL_SOF_N,为私有协议中定义的DCR接口读写数据包结构传输开始的信号名,表示local link接口的帧数据传输开始信号,高电平有效;
数据包的数据字段标记为word1和word3,word1中的字段信息包括私有协议定义的DCR接口读写数据包的设备ID信息,功能ID信息和状态中断控制信息,以及预留位;word3中的字段信息为私有协议定义的DCR接口读写数据;
数据包包尾数据字段标记为word2,word2中的字段信息为LL_EOF_N,为私有协议中定义的DCR接口数据包结构传输结束的信号名,表示local link接口的帧数据传输结束信号,高电平有效。
根据本发明的优选实施例,所述私有协议DCR接口响应数据包格式如下:
所述数据包包含多个数据字段,每个数据字段为4个字节(byte),数据包包头数据字段标记为word0,word0中的字段信息为LL_SOF_N,为私有协议中定义的DCR接口响应数据包结构传输开始的信号名,表示local link接口的帧数据传输开始信号,高电平有效;
数据包的数据字段标记为word1和word3,word1中的字段信息包括私有协议定义的DCR接口响应数据包的设备ID信息,功能ID信息和状态中断控制信息,以及预留位;word3中的字段信息为私有协议定义的DCR接口响应数据;
数据包包尾数据字段标记为word2,word2中的字段信息为LL_EOF_N,为私有协议中定义的DCR接口响应数据包结构传输结束的信号名,表示local link接口的帧数据传输结束信号,高电平有效。
根据本发明的优选实施例,所述私有协议LIS接口读写数据包格式如下:
所述数据包包含多个数据字段,每个数据字段为4个字节(byte),数据包包头数据字段标记为word0,word0中的字段信息为LL_SOF_N,为私有协议中定义的LIS接口读写数据包结构传输开始的信号名,表示local link接口的帧数据传输开始信号,高电平有效;
数据包的数据字段标记为word1、word2、word3和word4,word1中的字段信息包括私有协议定义的LIS接口读写数据包的设备ID信息,功能ID信息,LIS接口访问内存(memory)地址偏移的大小和状态中断控制信息,以及预留位;word3中的字段信息为私有协议定义的LIS接口写数据(payload),包含有多个数据字段;word4中的字段信息为私有协议定义的LIS接口访问系统内存(memory)的映射地址信息;
数据包包尾数据字段标记为word2,word2中的字段信息为LL_EOF_N,为私有协议中定义的LIS接口读写数据包结构传输结束的信号名,表示local link接口的帧数据传输结束信号,高电平有效。
根据本发明的优选实施例,所述私有协议LIS接口响应数据包格式如下:
所述数据包包含多个数据字段,每个数据字段为4个字节(byte),数据包包头数据字段标记为word0,word0中的字段信息为LL_SOF_N,为私有协议中定义的LIS接口响应数据包结构传输开始的信号名,表示local link接口的帧数据传输开始信号,高电平有效;
数据包的数据字段标记为word1和word2,word1中的字段信息包括私有协议定义的LIS接口响应数据包的设备ID信息,功能ID信息和状态中断控制信息,以及预留位;word2中的字段信息为私有协议定义的LIS接口响应数据;
数据包包尾数据字段标记为word3,word3中的字段信息为LL_EOF_N,为私有协议中定义的LIS接口响应数据包结构传输结束的信号名,表示local link接口的帧数据传输结束信号,高电平有效。
根据本发明的优选实施例,所述私有协议中中断寄存器数据包格式如下:
所述数据包包含多个数据字段,每个数据字段为4个字节(byte),数据包包头数据字段标记为word0,word0中的字段信息为LL_SOF_N,为私有协议中定义的中断寄存器数据包结构传输开始的信号名,表示local link接口的帧数据传输开始信号,高电平有效;
数据包的数据字段标记为word1,word1中的字段信息包括私有协议定义的中断寄存器数据包的设备ID信息,功能ID信息,中断状态和控制信息,以及预留位;
数据包包尾数据字段标记为word2,word2中的字段信息为LL_EOF_N,为私有协议中定义的中断寄存器数据包结构传输结束的信号名,表示local link接口的帧数据传输结束信号,高电平有效。
根据本发明的优选实施例,所述私有协议配置设备ID数据包格式如下:
所述数据包包含多个数据字段,每个数据字段为4个字节(byte),数据包包头数据字段标记为word0,word0中的字段信息为LL_SOF_N,为私有协议中定义的配置设备ID数据包结构传输开始的信号名,表示local link接口的帧数据传输开始信号,高电平有效;
数据包的数据字段标记为word1,word1中的字段信息包括私有协议定义的配置设备ID数据包的设备ID信息,状态控制信息,以及预留位;
数据包包尾数据字段标记为word2,word2中的字段信息为LL_EOF_N,为私有协议中定义的配置设备ID数据包结构传输结束的信号名,表示local link接口的帧数据传输结束信号,高电平有效。
本发明的有益效果:
本发明的技术方案基于aurora协议的高速总线接口的扩展架构,通过定制了一种私有协议,私有协议通过aurora协议的高速总线轻量级接口功能实现存储接口的扩展,在私有协议中,aurora协议仅完成数据传输的链路层(link)和物理层(phy)的功能,aurora协议是为专有上层协议或行业标准的上层协议提供透明接口的第一款串行互连协议,可用于高速线性通路之间的点到点串行数据传输,同时其可扩展的带宽,为系统设计人员提供了所需要的灵活性。aurora 的内部封装了 RocketIO 硬核,提供数据传输物理层(phy)的物理接口通道,并实现接收和发送数据的串并,并串转换,数据的8b10b编码方式;aurora协议还将复杂的 RocketIO 控制结构转化为简单的用户接口,实现数据传输的链路层(link),为用户提供一套简单的LocalLink 兼容的输入输出信号来接收和发送用户数据。达到在保证高速数据稳定传输的同时,高效、灵活、方便地实现存储器接口的扩展的目的。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为本发明实施例所述的基于aurora协议的高速总线接口的扩展架构结构框图;
图2为图1所示的基于aurora协议的高速总线接口的扩展架构中host_aurora模块的内部结构框图;
图3为图1所示的基于aurora协议的高速总线接口的扩展架构中exp_aurora模块内部结构框图;
图4为基于aurora协议的高速总线接口扩展实现实例应用框图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
如图1所示,一种基于aurora协议的高速总线接口的扩展架构,包括host_aurora(主机端aurora接口)模块、host_user_app(主机端用户应用程序接口)模块、exp_aurora(扩展板端aurora接口)模块和exp_user_app(扩展板端用户应用程序接口)模块;
host_aurora模块:是实现整个主机端接口的主控制模块,对接收端数据包进行解包操作,根据私有协议定义的数据帧格式的内容去访问接收数据指定的LIS 接口,DCR接口和中断接口逻辑,对主机端发送的数据按照私有协议定义的格式进行封装操作,实现主机端发送数据接口的DCR桥和LIS桥接口逻辑以及local link接口的仲裁硬件逻辑;
host_user_app模块:是主机端用户接口应用层模块,应用层通过DCR接口访问 host_aurora模块;
exp_aurora模块:是实现整个扩展板端的主控制模块,对接收端数据包进行解包操作,根据私有协议定义的数据帧格式的内容去访问接收数据指定的LIS 接口,DCR接口和中断接口逻辑,对扩展板端发送的数据按照私有协议定义的格式进行封装操作,实现扩展板端发送数据接口的DCR桥和LIS桥接口逻辑以及local link接口的仲裁硬件逻辑;
exp_user_app模块:是扩展板端用户接口应用层模块,应用层通过DCR接口访问exp_aurora模块。
如图2所示,host_aurora模块包括主机端aurora_core(aurora硬核)模块、接收数据端的host_rx_mux(主机接收数据多端口选择)模块、host_rx_unpacking(主机接收数据包解包)模块、host_rx_fifo(主机接收数据包缓存)模块、host_rx_dcr_if(主机接收数据的DCR接口)模块、host_lis_if(主机LIS接口)模块、host_int_if(主机中断接口)模块、发送数据端的host_ll_mux(主机发送数据包local link 接口多路选择)模块、host_ll_arb(主机发送数据包local link 接口仲裁)模块、host_tx_dcr_if(主机发送数据包DCR接口)模块、host_tx_packing(主机发送数据包组包)模块、host_tx_fifo(主机发送数据包缓存)模块、host_message(主机端信息控制)模块和host_cfg_fifo(主机端配置信息缓存)模块;
主机端 aurora_core模块: aurora协议的高速总线接口的aurora硬核模块,实现数据传输的物理层(phy)和链路层(link)协议,对上层协议提供数据传输的local link层接口通道,对物理层和链路层提供稳定的读写数据传输通道;
host_rx_mux模块:主机端接收数据的多路选择端口模块,主要检测主机端aurora_core模块来自local link接口的数据,解析接口数据信息,按照输入状态信息的内容输出要访问的指定的内存和寄存器状态信息;
host_rx_unpacking模块:主机端接收数据解包模块,接收来自主机端aurora_core模块的数据和host_rx_mux模块的状态信息,将接收数据存入接收数据缓存,同时根据接收状态信息去访问指定的内存地址和寄存器信息,该host_rx_unpacking模块前端接口接收主机端aurora_core模块的数据和host_rx_mux模块的控制状态信息,后端接口是访问指定的内存地址和寄存器信息的访问接口(LIS接口)和寄存器访问接口(DCR接口);
host_rx_fifo模块:主机端接收数据缓存模块,主要是对数据作预取操作,实现对接收数据的流控;
host_rx_dcr_if模块:主机端接收数据的DCR接口,负责配置接收端寄存器的配置,接收主机端aurora_core模块的数据,配置接收寄存器配置的初始值,根据接收数据端的配置寄存器的值选择端口寄存器进行配置;
host_lis_if模块:主机端接收数据到系统内存访问的LIS接口实现,接收主机端aurora_core模块接口的数据,根据接收数据端的状态信息来访问指定的内存地址;
host_int_if模块:主机端接收数据的中断状态信息接口,接收主机端aurora_core模块的数据,根据接收数据端的状态信息来访问指定的端口进行扩展;
host_ll_mux模块:主机端发送数据的local link接口的多路选择模块,控制主机端发送数据的端口选择,并发送数据到对应的数据端口;
host_ll_arb模块:主机端发送数据的local link接口的仲裁模块,主机端发送数据采用多端口轮循的方式发送,通过host_ll_arb模块来仲裁端口数据的发送,避免数据发送时停留在某一个端口来发送数据;
host_tx_dcr_if模块:主机端发送数据的寄存器访问DCR接口,主机发送端通过DCR接口访问发送数据端硬件寄存器,配置硬件寄存器的置,通过硬件寄存器的值去选择发送数据到对应端, host_tx_dcr_if模块后端接口连接host_message模块;
host_tx_packing模块:主机端发送数据包模块,发送来自系统或应用层的数据到主机端aurora_core模块的接收数据端,host_tx_packing模块发送数据首先会将要发送的数据存入发送数据缓存模块,同时根据host_tx_dcr_if模块后端的状态信息去发送指定的端口数据,host_tx_packing模块前端接口为系统内存访问的LIS接口和寄存器访问的DCR接口,后端是aurora_core的local link接口;
host_tx_fifo模块:主机端发送数据缓存模块,主要是对数据发送作预取操作,实现对发送数据的流控;
host_message模块:主机端消息机制管理模块,控制系统的发送和接收状态中断信息,发送和接收数据定义的寄存器信息,host_message模块前端是寄存器访问DCR接口,主机通过DCR接口配置发送状态寄存器的值,系统发送数据端口的中断信息;后端是主机端aurora_core模块的local link的接收端,通过host_message端口的数据都通过配置缓存来实现预取和配置信息的流控;
host_cfg_fifo模块:主机端发送数据配置寄存器的缓存模块,主要是对配置数据作预取操作和发送配置数据的流控。
如图3所示,exp_aurora模块包括扩展板端aurora_core(aurora硬核)模块,数据传输接收数据端的exp_rx_mux(扩展板接收数据多端口选择)模块,exp_rx_unpacking(扩展板接收数据包解包)模块,exp_rx_fifo(扩展板接收数据包缓存)模块,exp_rx_dcr_if(扩展板接收数据DCR接口)模块,exp_lis_if(扩展板接收数据LIS接口)模块,exp_int_if(扩展板中断接口)模块和数据传输发送数据端的exp_ll_mux(扩展板local link接口的多路选择)模块,exp_ll_arb(扩展板local link接口的仲裁)模块,exp_dcr_if(扩展板DCR接口)模块,exp_tx_packing(扩展板发送数据的组包)模块,exp_tx_fifo(扩展板发送数据包缓存)模块,exp_message(扩展板信息控制)模块和exp_cfg_fifo(扩展板配置信息缓存)模块;
扩展板端aurora_core模块: aurora协议的高速总线接口的aurora核,实现数据传输的物理层(phy)和链路层(link)协议,对上层协议提供数据传输的local link层接口通道,对物理层和链路层提供稳定的读写数据传输通道;
exp_rx_mux模块:扩展板端接收数据的多路选择端口模块,检测扩展板端aurora_core模块local link接口的数据,解析接口数据信息,按照输入状态信息的内容输出要访问的指定的内存和寄存器状态信息;
exp_rx_unpacking模块:扩展板端接收数据解包模块,接收来自扩展板端aurora_core模块的数据和exp_rx_mux模块的状态信息,将接收数据存入接收数据缓存,同时根据接收状态信息去访问指定的内存地址和寄存器信息, exp_rx_unpacking模块前端接口是扩展板端aurora_core模块的数据和exp_rx_mux模块的控制状态信息,后端接口是访问指定的内存地址和寄存器信息的memory访问接口(LIS接口)和 寄存器访问接口(DCR接口);
exp_rx_fifo模块:扩展板端接收数据缓存模块,主要是对接收数据作预取操作,实现对接收数据的流控;
exp_rx_dcr_if模块:扩展板端接收数据的DCR接口,负责配置接收端寄存器的配置,接收扩展板端aurora_core模块接口的数据,配置接收寄存器配置的初始值,根据接收数据端的配置寄存器的值选择端口寄存器进行配置;
exp_lis_if模块:扩展板端接收数据访问系统内存的LIS接口,接收扩展板端aurora_core模块接口的数据,根据接收数据端的状态信息来访问指定的内存地址;
exp_int_if模块:扩展板端接收数据的中断状态信息接口,接收扩展板端aurora_core模块接口的数据,根据接收数据端的状态信息来访问指定的端口进行扩展;
exp_ll_mux模块:扩展板端发送数据的local link接口的多路选择模块,控制私有协议定义的主机端发送数据的端口选择,根据多路选择模块的数据信息去发送数据到对应的数据端口;
exp_ll_arb模块:扩展板端发送数据的local link接口的仲裁模块,主机端发送数据采用多端口轮循的方式发送,通过exp_ll_arb模块来仲裁端口数据的发送,避免数据发送时停留在某一个端口来发送数据;
exp_tx_dcr_if模块:扩展板端发送数据的寄存器访问DCR接口,主机发送端通过DCR接口访问发送数据端的硬件寄存器,配置硬件寄存器的值,通过硬件寄存器的值去选择发送数据到对应端, exp_tx_dcr_if模块后端接口连接exp_message模块;
exp_tx_packing模块:扩展板端发送数据包模块,发送来自系统或应用层的数据到扩展板端aurora_core模块的接收数据端,exp_tx_packing模块发送数据首先将要发送的数据存入发送数据缓存模块,同时根据exp_tx_dcr_if模块后端的状态信息去发送指定的端口数据,exp_tx_packing模块前端接口为系统内存访问的LIS接口和寄存器访问的DCR接口,后端是扩展板端aurora_core的local link接口;
exp_tx_fifo模块:扩展板端发送数据缓存模块,对数据发送作预取操作,实现对发送数据的流控;
exp_message模块:扩展板端消息机制管理模块,控制系统的发送和接收状态中断信息,私有协议定义的发送和接收数据定义的寄存器信息,exp_message模块前端是寄存器访问DCR接口,主机通过DCR接口配置发送状态寄存器的值,系统发送数据端口的中断信息;后端是扩展板端aurora_core模块的local link的接收端,通过exp_message端口的数据都通过配置缓存来实现预取和配置信息的流控;
exp_cfg_fifo模块:主机端扩展板端发送数据配置寄存器的缓存模块,是对配置数据作预取操作和发送配置数据的流控。
私有协议为通过硬件逻辑实现主机端和背板端系统通信的一种自定义协议方式,私有协议中定义了传输层数据包的帧格式,包括帧头帧尾和数据等,每个传输包的数据格式固定,低层包括链路层(link)和物理层(phy) ,通过低层的aurora协议来完成链路层(link)和物理层(phy)的传输, 私有协议还提供了链接内部总线的DCR桥接口和读写系统memory的LIS桥接口,通过桥接的方式实现用户端访问存储器的扩展接口;
DCR桥接口是私有协议定义的用户端访问存储器接口的多端口选择控制接口,通过硬件逻辑实现DCR接口寄存器访问来选择对应的存储器端口进行数据传输;
LIS桥接口是私有协议定义的存储器接口映射的内存地址区域的多区域选择控制接口,每个存储器端口对应在内存区域映射固定的地址,通过硬件逻辑实现对访问系统内存(memory)的LIS接口映射内存地址区域的访问来选择对应的存储器端口进行数据传输。
私有协议的配置设备ID数据包格式如表一所示:
以下表格中每个word代表一个DWords是32位数据,每个byte为8位,即每个word有4个byte分别为byte0,byte1,byte2,byte3。在32为数据中byte0对应为0~7位,byte1对应为8~15位,byte2对应为16~23位,byte3对应为24~31位。
表一、数据包格式:
配置device Id包是配置设备的ID,数据包总共包括有3个DWords(32位),分别为word0,word1,word2。word0为包头,word2为包尾,中间的word1为包的配置信息。
LL_SOF_N是定义的在私有协议中配置设备ID数据包结构传输开始的信号名,它表示为local link接口的帧传输开始信号,高电平有效(start of frame)。
LL_EOF_N是定义的在私有协议中配置设备ID数据包结构传输结束的信号名,它表示为local link接口的帧传输结束信号,高电平有效(end of frame)。
word1中定义的数据位格式中reserved代表预留位;device_id代表设别ID号。其它代表中断或控制信息的标志位。
私有协议DCR接口写或读数据包格式如表二和表三所示:
表二、DCR接口写数据包格式:
DCR接口写数据包是DCR接口写数据模式,数据包结构总共包括有4个DWords(32位),分别为word0,word1,word2,word3。word0为包头,word2为包尾,中间的word1为DCR接口的配置信息,word3为DCR 接口传输写数据。
LL_SOF_N是定义的在私有协议中DCR接口数据包结构传输开始的信号名,它表示为local link接口的帧传输开始信号,高电平有效(start of frame)。
LL_EOF_N是定义的在私有协议中DCR接口数据包结构传输结束的信号名,它表示为local link接口的帧传输结束信号,高电平有效(end of frame)。
word1中定义的数据位格式中reserved代表预留位;device_id代表设备ID号;func_id代表功能ID指向哪一个设备。其它代表中断或控制信息的标志位。word3代表传输的写数据。
表三、DCR接口读数据包格式:
DCR接口读数据包是DCR接口读数据模式,数据包结构总共包括有4个DWords(32位),分别为word0,word1,word2,word3。word0为包头,word2为包尾,中间的word1为DCR接口的配置信息,word3为DCR 接口传输写数据。
LL_SOF_N是定义的在私有协议中DCR接口数据包结构传输开始的信号名,它表示为local link接口的帧传输开始信号,高电平有效(start of frame)。
LL_EOF_N是定义的在私有协议中DCR接口数据包结构传输结束的信号名,它表示为local link接口的帧传输结束信号,高电平有效(end of frame)。
word1中定义的数据位格式中reserved代表预留位;device_id代表设备ID号;func_id代表功能ID指向哪一个设备,dcr_offset代表DCR接口的地址偏移。其它代表中断或控制信息的标志位。
Word3代表传输的读数据。
私有协议DCR接口响应数据包格式如表四所示:
表四、 DCR接口响应数据包格式
DCR接口响应数据包是DCR接口响应数据模式,数据包结构总共包括有4个DWords(每个都是32位),分别为word0,word1,word2,word3。word0为包头,word2为包尾,中间的word1为DCR接口响应数据包的配置信息,word3为DCR 接口响应数据包传输读数据。
LL_SOF_N是定义的在私有协议中DCR接口数据包结构传输开始的信号名,它表示为local link接口的帧传输开始信号,高电平有效(start of frame)。
LL_EOF_N是定义的在私有协议中DCR接口数据包结构传输结束的信号名,它表示为local link接口的帧传输结束信号,高电平有效(end of frame)。
word1中定义的数据位格式中reserved代表预留位;device_id代表设备ID号;func_id代表功能ID指向哪一个设备。其它代表中断或控制信息的标志位。
Word3代表传输的读数据。
私有协议LIS接口读写数据包格式如表五和表六所示:
表五、LIS接口写数据包格式:
LIS接口写数据包是LIS接口写数据模式,数据包结构总共包括有5个DWords(32位),分别为word0,word1,word2,word3,word4。word0为包头,word3为包尾,中间的word1为LIS接口写数据模式的配置信息,word2为写数据的负载,word4为LIS接口访问memory的映射地址。
LL_SOF_N是定义的在私有协议中LIS接口写数据包结构传输开始的信号名,它表示为local link接口的帧传输开始信号,高电平有效(start of frame)。
LL_EOF_N是定义的在私有协议中LIS接口写数据包结构传输结束的信号名,它表示为local link接口的帧传输结束信号,高电平有效(end of frame)。
word1中定义的数据位格式中reserved代表预留位;device_id代表设备ID号;func_id代表功能ID指向哪一个设备,PIM_Size代表LIS接口的memory地址偏移的大小。其它代表中断或控制信息的标志位。
Word2代表传输数据。
Word4为LIS接口访问memory的映射地址。
表六、LIS接口读数据包格式:
LIS接口读数据包是LIS接口读数据模式,数据包结构总共包括有4个DWords(32位),分别为word0,word1,word2,word3。word0为包头,word2为包尾,中间的word1为LIS接口读数据模式的配置信息,word3为LIS接口访问memory的映射地址。
LL_SOF_N是定义的在私有协议中LIS接口读数据包结构传输开始的信号名,它表示为local link接口的帧传输开始信号,高电平有效(start of frame)。
LL_EOF_N是定义的在私有协议中LIS接口读数据包结构传输结束的信号名,它表示为local link接口的帧传输结束信号,高电平有效(end of frame)。
word1中定义的数据位格式中reserved代表预留位;device_id代表设备ID号;func_id代表功能ID指向哪一个设备,PIM_Size代表LIS接口的memory地址偏移的大小。其它代表中断或控制信息的标志位。
Word3为LIS接口访问memory的映射地址。
私有协议LIS接口响应数据包格式如表七所示,
表七、LIS接口响应数据包格式:
LIS接口响应数据包是LIS接口响应数据模式,数据包结构总共包括有4个DWords(32位),分别为word0,word1,word2,word3。word0为包头,word3为包尾,中间的word1为LIS接口响应数据模式的配置信息,word2为LIS接口响应的负载数据。
LL_SOF_N是定义的在私有协议中LIS接口响应数据包结构传输开始的信号名,它表示为local link接口的帧传输开始信号,高电平有效(start of frame)。
LL_EOF_N是定义的在私有协议中LIS接口响应数据包结构传输结束的信号名,它表示为local link接口的帧传输结束信号,高电平有效(end of frame)。
word1中定义的数据位格式中reserved代表预留位;device_id代表设备ID号;func_id代表功能ID指向哪一个设备,PIM_Size代表LIS接口的memory地址偏移的大小。其它代表中断或控制信息的标志位。
私有协议的中断寄存器数据包格式如表八所示,
表八、中断寄存器数据包格式:
中断寄存器数据包是中断寄存器包数据模式,数据包结构总共包括有4个DWords(32位),分别为word0,word1,word2,word3。word0为包头,word2为包尾,中间的word1为中断寄存器数据模式的配置信息,word3为数据。
LL_SOF_N是定义的在私有协议中中断寄存器数据包结构传输开始的信号名,它表示为local link接口的帧传输开始信号,高电平有效(start of frame)。
LL_EOF_N是定义的在私有协议中中断寄存器数据包结构传输结束的信号名,它表示为local link接口的帧传输结束信号,高电平有效(end of frame)。
word1中定义的数据位格式中reserved代表预留位;device_id代表设备ID号;func_id代表功能ID指向哪一个设备,int_stat代表中断状态。其它代表中断或控制信息的标志位。
私有协议定义主机端aurora核的local link接口主要控制状态信号如下表所示:
表九、local link接口主要控制状态信号:
私有协议定义主机端内存访问的LIS接口信息如下表所示:
表十、LIS接口信息:
如图4所示的是基于aurora协议的高速总线接口扩展实现实例应用框图,包括主机端系统和扩展板端系统,主机端可以外接的SATA存储接口是16个,扩展板端可以扩展的SATA存储接口理可以扩展多个SATA控制器,每个SATA控制器可以接16个SATA存储接口,这样就能扩展SATA存储接口。
主机端系统包括CPU模块,memory模块,以及bram(块存储设备),uart(串口设备)和gpio(普通输入输出模块模块),通过PLB总线构成一个简单的主机端系统,主机端系统包括有SATA控制器模块来外接SATA存储接口,最多可以接16个。主机端系统还包括Host_aurora模块,用来扩展外接的SATA存储接口。
扩展板端系统也包括CPU模块,memory模块通过PLB总线构成一个简单的扩展板端系统,通过Exp_aurora模块进行SATA控制器模块的的扩展,理论上可以接无线个Exp_aurora模块来扩展SATA控制器模块进行SATA存储接口的扩展。
主机端和扩展板端系统通过MINI SAS连接线进行物理连接。在主机端和扩展板端的硬件接口是Host_aurora模块和Exp_aurora模块0物理层(phy)和链路层(link)都是通过aurora协议来完成,通过我们定制的私有协议来完成local link接口的数据的多路控制(即桥的控制)。低层的aurora协议保证了数据稳定,可靠的编码传输,定制的私有协议完成数据传输数据端的稳定传输和扩展通路的控制,可以保证数据在指定的扩展接口端传输数据。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。