一种基于fpga的光纤图像数据高速存储及回放系统
技术领域
1.本发明涉及高速图像数据存储和图像回放领域,特别涉及一种基于fpga的光纤图像数据高速存储及回放系统,用于记录和回放高帧率、高分辨率图像数据。
背景技术:2.随着可见光、红外等图像传感器的分辨率和帧率不断提高,对于图像数据的高速传输和存储提出了更高的要求。采用sata 3.0协议的硬盘速率达到6gbps(约600mb/s)后,由于当前物理接口原因而无法进一步提高传输速率。而nvme协议ssd硬盘的数据传输基于pcie总线协议,传输速率得到极大的提升,目前采用pcie 3.0传输协议的硬盘传输速率最高可达2.6gb/s以上,且随着后续pcie的升级,nvme协议的ssd硬盘传输速率将会更高。因此,nvme ssd硬盘对于高速存储具有更好的发展前景。
3.对于要求体积小、功耗低的图像数据存储场合,传统的计算机存储方案难以满足应用需求,而嵌入式系统由于其体积小、功耗低得到了广泛应用。基于arm的嵌入式处理系统由于受到arm核主频和线程的限制,难以发挥nvme ssd的传输性能,而基于fpga的嵌入式处理系统借助于fpga的并行特性,能够更好的发挥nvme ssd读写速率,且可根据实际光纤通道数和nvme ssd硬盘数的应用需求对fpga的资源占用进行合理配置,增加了系统的灵活性。
技术实现要素:4.本发明的目的是提供一种基于fpga的光纤图像数据高速存储及回放系统,它能以高带宽、低功耗和小体积实现高分辨率、高帧频图像数据的实时存储和图像数据回放。
5.本发明目的是通过以下技术方案来实现:
6.一种基于fpga的光纤图像数据高速存储及回放系统,其特征在于:
7.所述系统包括:光纤数据传输接口、光纤协议转换模块、fifo缓存、ddr内存、nvmessd硬盘、两级数据缓存状态机、ssd数据管理模块、人机交互通讯模块以及nvme主机控制器模块,其中所述nvme主机控制器模块采用fpga实现,所述光纤数据传输接口采用fpga的高速串行收发器实现;
8.所述光纤数据传输接口被配置为接收和发送数据,其中,根据实际数据传输需求,所述光纤数据传输接口接入单路光纤图像数据或者多路光纤图像数据;
9.所述光纤协议转换模块被配置为对光纤图像数据的光纤传输协议进行解析或在光纤图像数据加入光纤传输协议的相关数据;
10.所述fifo缓存和所述ddr内存被配置为进行两级数据缓存,其中,所述ddr内存根据所述ssd硬盘的数量,通过axi interconnect ip扩展ddr内存与pcie桥的连接端口,并分别对每个ssd硬盘分配ddr缓存空间;
11.所述人机交互通讯模块被配置为控制所述存储及回放系统的工作状态;
12.所述nvme主机控制器模块被配置为控制所述存储及回放系统以实现所述ssd硬盘
与所述ddr内存之间的数据交换,其中,每路光纤图像数据通过高速串行收发器与所述fifo缓存通讯。
13.进一步的,所述nvme主机控制器模块被配置为采用axi总线与pcie桥进行连接,实现命令提交、接收完成命令并解析完成命令、提交队列尾门铃寄存器和提交完成队列头门铃寄存器。
14.进一步的,当存储光纤图像数据时,所述光纤协议转换模块对光纤图像数据的自定义协议进行解析,然后解析后的数据缓存至fifo缓存,当fifo缓存中的数据达到所述ssd硬盘写操作的最小单元lba时,进行一次所述fifo缓存到ddr内存的写操作。
15.进一步的,当回放光纤图像数据时,由nvme主机控制器模块将所述ssd硬盘的数据读出到所述ddr内存中,然后所述ddr内存中的数据按lba大小的数据块进行突发传输到所述fifo缓存,所述fifo缓存中的光纤图像数据加入光纤自定义协议的相关数据,最后通过高速串行收发器发出,接收端由计算机的图像采集卡接收并显示。
16.进一步的,所述人机交互通讯模块通过串口或can总线方式接收外部所发送的控制命令或发送系统的状态信息,并与所述ssd数据管理模块进行数据交互,其中,所述控制命令和状态信息采用自定义命令格式和内容,根据任务需求发送相应命令,实现存储及回放系统状态查询、确定光纤数据传输接口与所述nvme ssd硬盘之间的对应关系、发起所述ssd硬盘数据存储和发起所述ssd硬盘数据读取。
17.进一步的,当所述存储及回放系统包括n个所述nvme ssd硬盘时,所述nvme主机控制器模块形成为对应n个nvme主机控制器模块,并在所述nvme主机控制器模块顶层建立一个ssd数据管理模块,通过ssd数据管理模块解析管理命令和管理各个nvme ssd硬盘的数据,n。
18.进一步的,光纤传输协议采用自定义光纤协议,数据接收和发送以数据帧为单位,一帧数据由数据帧帧头、帧编号、帧有效字节长度、帧有效数据、保留、数据帧帧尾组成;一帧数据帧的有效数据字节数由用户决定,一帧数据传输时,包含多个数据包,帧头、帧尾信息包含在包数据中;一包数据由数据包包头、包编号、通道号、保留、包有效字节长度、包有效数据、包累加和、保留和数据帧帧尾组成;当存在有效数据进行传输时,包头、包尾、帧头和帧尾信息中包含时钟矫正序列和k字符;当无数据进行传输时,每间隔固定时间发送时钟矫正序列和k字符,确保光纤链路稳定。
19.与现有技术相比,本发明的有益效果为:
20.1、nvme ssd硬盘具有读写速率高、体积小和容量大的优点,基于fpga的存储系统,单颗nvme ssd硬盘读写速度可达到1.6gb/s以上,存储系统可配置多颗nvme ssd硬盘,存储系统的传输速率和存储容量将会成倍提升;
21.2、基于fpga的图像数据存储与回放系统具有体积小、功耗低、灵活性强的优点,光纤数据传输接口数量和硬盘数量可根据实际应用需要进行灵活配置,降低系统成本;
22.3、采用光纤自定义协议可以减少编码的数据信息,有效提高光纤带宽的利用率,降低传输协议的复杂度和便于检查数据传输的正确性。
附图说明
23.图1是本发明实施例提供的一种基于fpga的光纤图像数据高速存储及回放系统结
构框图。
24.图2是本发明实施例提供的数据在fifo、ddr内存和ssd之间对应关系的关系。
25.图3是本发明实施例提供的图像数据存储两级缓存工作原理框图。
具体实施方式
26.下面将参照附图来描述本发明的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本发明的范围。
27.图1为本发明基于fpga的光纤图像数据高速存储及回放系统结构框图,该系统采用fpga作为控制器,nvme ssd硬盘作为存储设备、ddr为图像数据缓存装置、光纤为图像数据来源。具体的,如图1所示,所述基于fpga的光纤图像数据高速存储及回放系统包括:ultrascale+系列fpga、光纤数据传输接口、ddr4内存颗粒、nvme ssd硬盘、光纤协议转换模块、两级数据缓存状态机、ssd数据管理模块、人机交互通讯模块以及nvme主机控制器模块。
28.fpga为整个图像数据存储及回放系统的控制器,当系统工作在存储模式时,首先用户通过人机交互通讯模块的串口等方式将统一格式的命令传输到fpga内部的ssd数据管理模块。fpga解析接收到的命令,命令内容包括命令的类型、使用的光纤接口编号、使用的硬盘编号、图像数据传输时各光纤接口编号对应的硬盘编号、各硬盘操作的起始位置和传输数据的数据量等参数。
29.nvme主机控制器模块通过axi总线与pcie桥进行连接,通过判断两级数据缓存状态机的状态,发起相应的读写数据命令。当两级数据缓存状态机的状态为发起读(写)数据命令时,nvme主机控制器主动提交队列尾门铃寄存器,并且根据提交命令格式准备好需要提交的读(写)数据命令,等待ssd控制器读取命令和读(写)数据。当一个命令读(写)数据完成后,nvme主机控制器模块通过axi总线接收并解析完成命令,判断所提交的命令是否已经成功的完成,完成命令解析后提交完成队列头门铃寄存器,此时等待两级数据缓存状态机的状态跳转,以进行下一次命令提交。当存储系统连接n个nvme ssd硬盘时,fpga将相应的例化n个nvme主机控制器模块,并在nvme主机控制器模块顶层建立一个ssd数据管理模块,通过ssd数据管理模块解析管理命令和管理各nvme ssd硬盘数据。
30.当光纤接口接收图像数据时,光纤协议转换模块依据光纤自定义协议解析出图像数据;当光纤接口发送图像数据时,首先将图像数据依据光纤自定义协议加入协议相关数据,然后再通过高速串行收发器将图像数据发出。图像数据接收和发送以数据帧为单位,一帧数据由数据帧帧头、帧编号、帧有效字节长度、帧有效数据、保留、数据帧帧尾组成。一帧数据的有效数据字节数由用户决定,一帧数据传输时,可包含多个数据包,帧头、帧尾信息包含在包数据中。一包数据由数据包包头、包编号、通道号、保留、包有效字节长度、包有效数据、包累加和、保留和数据帧帧尾组成。当存在有效数据传输时,包头、包尾、帧头和帧尾信息中包含时钟矫正序列和k字符;当无有效数据传输时,每间隔固定时间发送时钟矫正序列和k字符,确保光纤链路稳定。通过按照光纤自定义协议的数据格式解析图像数据,将有效数据存储于fifo中,同时通过分析包编号、帧编号和包累加和信息判断光纤数据是否传输正确。若系统工作在回放模式,则将fifo中的有效数据读出,并按照光纤自定义协议的数据格式进行包装后通过光纤进行传输。
31.基于fpga的图像数据存储及回放系统利用fifo和ddr组成两级缓存,通过人机交
互通讯模块对该系统发送管理命令进行初始化,由ssd数据管理模块进行系统管理,首先分配光纤接口与ssd硬盘之间的对应关系,系统中光纤接口1对应fifo1、光纤接口2对应fifo2、
……
、光纤接口m对应fifom(m为正整数,最大值由fpga高速串行通道数决定),数据在fifo、ddr内存和ssd之间对应关系如图2所示,根据系统接收命令配置的ssd硬盘数n(n为正整数,最大值由fpga的pcie通道数决定)将ddr内存空间平均分成n个内存空间,且各部分的内存空间大小均为lba的整偶数倍,若不满足,则将n个内存空间依次分为最接近内存空间平均数的lba整偶数倍空间,剩余空间保留,并将每一份内存空间再一次平均分为a部分和b部分。根据人机交互通讯模块命令解析,部分fifo、内存空间和ssd之间保持一一对应关系;部分为多个fifo对应一个ddr内存空间和ssd。
32.图像数据存储两级缓存工作原理框图如图3所示,首先接收管理命令,并对其进行解析。若光纤接口i单独使用一块ssd硬盘,则判断光纤接口i的fifo缓存字节数是否达到一个lba,若没有,则一直等待fifo中缓存字节数达到一个lba,若fifo缓存字节数达到一个lba,则将fifo中的数据通过axi总线转存到ddr空间i的a部分。然后判断ddr空间i的a部分数据是否写满,若数据写满,则控制nvme主机控制器将ddr空间i的a部分数据写入ssd,同时,fifo中的数据通过axi总线转存到ddr空间i的b部分。然后检测是否接收到停止数据存储命令,若没有停止数据存储命令,则判断ddr空间i的a部分数据是否被读空,ddr空间i的b部分数据是否被写满,若是,则控制nvme主机控制器将ddr空间i的b部分数据写入ssd,同时,fifo中的数据通过axi总线转存到ddr空间i的a部分,再进行判断是否接收到停止数据存储命令,若接收到停止命令,则将ddr空间i的全部数据写入ssd并结束数据存储,若没有,则回到判断ddr空间i的a部分数据是否写满状态。当命令解析结果为多个光纤接口共同使用一块ssd硬盘时,判断共用一块ssd的所有光纤接口的fifo缓存字节数是否都达到一个lba,若都达到1个lba的数据量,则将共用一块ssd的所有光纤接口对应fifo中的数据按照光纤接口顺序,采用轮询的方式通过axi总线分别转存1个lba数据量的数据到ddr空间j的a部分。判断ddr空间j的a部分数据是否写满,当a部分写满时,控制nvme主机控制器将ddr空间j的a部分数据写入ssd,同时,fifo中的数据通过axi总线转存到ddr空间j的b部分,进一步判断是否接收到数据存储命令,若没有,继续判断ddr空间j的a部分数据是否被读空,ddr空间j的b部分数据是否被写满。若满足条件,则控制nvme主机控制器将ddr空间j的b部分数据写入ssd,同时,fifo中的数据通过axi总线转存到ddr空间j的a部分,再继续判断是否接收到停止数据存储命令,若接收到停止命令,则将ddr空间j的全部数据写入ssd并结束数据存储,若没有,则回到判断ddr空间j的a部分数据是否写满状态。当图像数据回放时,两级缓存的数据流与此相反,因此不再具体分析。
33.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,这些实施例仅仅是为了说明的目的,而并非为了限制本发明的范围。本发明的范围由所附权利要求及其等价物限定。不脱离本发明的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本发明的范围之内。
技术特征:1.一种基于fpga的光纤图像数据高速存储及回放系统,其特征在于:所述系统包括:光纤数据传输接口、光纤协议转换模块、fifo缓存、ddr内存、nvme ssd硬盘、两级数据缓存状态机、ssd数据管理模块、人机交互通讯模块以及nvme主机控制器模块,其中所述nvme主机控制器模块采用fpga实现,所述光纤数据传输接口采用fpga的高速串行收发器实现;所述光纤数据传输接口被配置为接收和发送数据,其中,根据实际数据传输需求,所述光纤数据传输接口接入单路光纤图像数据或者多路光纤图像数据;所述光纤协议转换模块被配置为对光纤图像数据的光纤传输协议进行解析或在光纤图像数据加入光纤传输协议的相关数据;所述fifo缓存和所述ddr内存被配置为进行两级数据缓存,其中,所述ddr内存根据所述ssd硬盘的数量,通过axi interconnect ip扩展ddr内存与pcie桥的连接端口,并分别对每个ssd硬盘分配ddr缓存空间;所述人机交互通讯模块被配置为控制所述存储及回放系统的工作状态;所述nvme主机控制器模块被配置为控制所述存储及回放系统以实现所述ssd硬盘与所述ddr内存之间的数据交换,其中,每路光纤图像数据通过高速串行收发器与所述fifo缓存通讯。2.根据权利要求1所述的一种基于fpga的光纤图像数据高速存储及回放系统,其特征在于:所述nvme主机控制器模块被配置为采用axi总线与pcie桥进行连接,实现命令提交、接收完成命令并解析完成命令、提交队列尾门铃寄存器和提交完成队列头门铃寄存器。3.根据权利要求1所述的一种基于fpga的光纤图像数据高速存储及回放系统,其特征在于:当存储光纤图像数据时,所述光纤协议转换模块对光纤图像数据的自定义协议进行解析,然后解析后的数据缓存至fifo缓存,当fifo缓存中的数据达到所述ssd硬盘写操作的最小单元lba时,进行一次所述fifo缓存到ddr内存的写操作。4.根据权利要求1所述的一种基于fpga的光纤图像数据高速存储及回放系统,其特征在于:当回放光纤图像数据时,由nvme主机控制器模块将所述ssd硬盘的数据读出到所述ddr内存中,然后所述ddr内存中的数据按lba大小的数据块进行突发传输到所述fifo缓存,所述fifo缓存中的光纤图像数据加入光纤自定义协议的相关数据,最后通过高速串行收发器发出,接收端由计算机的图像采集卡接收并显示。5.根据权利要求1所述的一种基于fpga的光纤图像数据高速存储及回放系统,其特征在于:所述人机交互通讯模块通过串口或can总线方式接收外部所发送的控制命令或发送系统的状态信息,并与所述ssd数据管理模块进行数据交互,其中,所述控制命令和状态信息采用自定义命令格式和内容,根据任务需求发送相应命令,实现存储及回放系统状态查询、确定光纤数据传输接口与所述nvme ssd硬盘之间的对应关系、发起所述ssd硬盘数据存储和发起所述ssd硬盘数据读取。6.根据权利要求1所述的一种基于fpga的光纤图像数据高速存储及回放系统,其特征在于:
当所述存储及回放系统包括n个所述nvme ssd硬盘时,所述nvme主机控制器模块形成为对应n个nvme主机控制器模块,并在所述nvme主机控制器模块顶层建立一个ssd数据管理模块,通过ssd数据管理模块解析管理命令和管理各个nvme ssd硬盘的数据,其中n为正整数。7.根据权利要求1所述的一种基于fpga的光纤图像数据高速存储及回放系统,其特征在于:光纤传输协议采用自定义光纤协议,数据接收和发送以数据帧为单位,一帧数据由数据帧帧头、帧编号、帧有效字节长度、帧有效数据、保留、数据帧帧尾组成;一帧数据帧的有效数据字节数由用户决定,一帧数据传输时,包含多个数据包,帧头、帧尾信息包含在包数据中;一包数据由数据包包头、包编号、通道号、保留、包有效字节长度、包有效数据、包累加和、保留和数据帧帧尾组成;当存在有效数据进行传输时,包头、包尾、帧头和帧尾信息中包含时钟矫正序列和k字符;当无数据进行传输时,每间隔固定时间发送时钟矫正序列和k字符,确保光纤链路稳定。
技术总结本发明公开了一种基于FPGA的光纤图像数据高速存储及回放系统,该系统采用UltraScale+系列FPGA作为控制器,利用FPGA的高速串行收发器(GTH)通过光纤进行高速串行数据传输。其中光纤图像数据传输协议采用光纤自定义协议,有效提高了光纤带宽的利用率并降低了传输协议的复杂度。当光纤接口数和NVMe SSD硬盘数为单个或多个时,根据用户命令确定光纤接口与NVMe SSD硬盘之间的对应关系。NVMe主机控制器采用硬件逻辑实现,SSD数据管理模块利用通讯模块接收外部用户命令以及返回存储系统状态信息。本发明所述基于FPGA的图像数据存储与回放系统具有体积小、功耗低、速度快、灵活性强的优点。优点。优点。
技术研发人员:任海军 姚俊 杜永均 蔺亚鹏
受保护的技术使用者:中国科学院光电技术研究所
技术研发日:2022.06.16
技术公布日:2022/11/1