一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于FPGA的行情低延时接口装置的制作方法

2022-03-05 08:29:02 来源:中国专利 TAG:

一种基于fpga的行情低延时接口装置
技术领域
1.本发明涉及一种低延时接口装置,具体涉及应用于金融业务尤其是证券业务的行情数据的低延时接口装置。


背景技术:

2.目前主流的证券行情处理分发系统一般是利用传统网卡进行的数据接收与分发,而网卡依赖cpu通过软件处理tcp/ip数据流,这给系统带来了庞大的开销。
3.但是随着嵌入式技术的发展,尤其是fpga具有低延时高并发的特性,而如何在证券行情处理分发系统中利用fpga硬件的这一特性,替换掉传统的网卡依赖cpu通过软件处理tcp/ip数据流的方式,从而降低行情数据传输的延时性,提升是目前业界亟待解决的问题。
4.根据网络协议,可将证券行情的网络处理下放到fpga硬件中完成,包括tcp协议、udp协议、phy协议等等。而高性能硬件通信接口工作时无需任何软件干预,突破了软件性能瓶颈,远低于传统网卡接口。


技术实现要素:

5.以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。
6.本发明的目的在于解决上述问题,提供了一种基于fpga的行情低延时接口装置,使用fpga硬件实现万兆以太网接口后,整个接口延时可控制在百纳秒级,而传统网卡一般需要微妙级,可以让网络接口的延时降低10倍左右,从而大幅度提高效率。
7.本发明的技术方案为:本发明揭示了一种基于fpga的行情低延时接口装置,装置包括网络接收模块和网络发送模块、行情业务模块、以及系统控制模块,网络接收模块包括第一pcs层与mac层混合模块、tcp镜像处理模块,网络发送模块包括udp协议封装模块、第二pcs层与mac层混合模块,其中:
8.网络接收模块接收外部网络的输入,将接收到的数据经过处理后传输至行情业务模块;
9.网络发送模块接收行情业务模块的输出,并将接收到的数据进行处理后传输至外部网络;
10.系统控制模块分别对网络接收模块、行情业务模块、以及网络发送模块的运行进行控制;
11.行情业务模块配置为根据交易所协议解析tcp镜像处理模块传输来的行情数据,并将解析后的行情数据发送给udp协议封装模块;
12.第一pcs层与mac层混合模块配置为接收外部网络传输来的行情数据,根据网络协
议通过pcs层、mac层,提取网络数据包中的有效负载数据输出给tcp镜像处理模块,其中承载有效负载数据的数据包为tcp数据包;
13.tcp镜像处理模块配置为将符合行情业务需求的tcp数据包中的有效负载数据提取出来并将提取出的有效负载数据输出给行情业务模块;
14.udp协议封装模块配置为将行情业务模块传输来的行情数据封装成一个完整的udp格式的数据包并输出给第二pcs层与mac层混合模块;
15.第二pcs层与mac层混合模块配置为根据网络协议将udp协议封装模块发送来的udp数据包封装为pcs层、mac层的有效负载数据后发送给外部网络。
16.根据本发明的基于fpga的行情低延时接口装置的一实施例,系统控制模块是通过pcie接口,对装置中的各个模块进行包括配置、启动、监控、关闭在内的控制。
17.根据本发明的基于fpga的行情低延时接口装置的一实施例,网络接收模块包括第一序列号器-反序列号器硬件模块、第一比特滑窗模块、解扰模块、64/66b解码模块、数据帧接收模块、第一crc校验模块、mac层ip校验模块、第一校验和模块、数据切包模块、数据确认模块,其中:
18.第一序列号器-反序列号器硬件模块,用于将外部网络中的串行数据整理成并行的、位宽为66比特的数据;
19.第一比特滑窗模块,通过比特滑窗的方式寻找66比特数据中的位宽为2比特的头部数据,在找到头部数据后将66比特数据整理成2比特的头部数据和64比特数据的组合,输出给解扰模块;
20.解扰模块,将64比特数据转换成解扰后的64比特数据,再输出给64/66b解码模块;
21.64/66b解码模块,根据64比特数据和2比特的头部数据,将66比特数据通过64/66b的表来映射出发送侧真实发送的数据,将映射出的发送侧真实发送的数据输出给数据帧接收模块;
22.数据帧接收模块,根据pcs层的数据包格式,去除接收数据包中的包头包尾,输出标准的mac层数据包到mac层ip校验模块,其中通过第一crc校验模块在包尾检查帧校验序列,以保证接收到的mac数据包的正确性;
23.mac层ip校验模块,在获得mac层数据包后,通过配置目的ip地址、目的端口号、源端口号来提取众多数据包中符合要求的tcp数据包并传输给数据切包模块,同时通过第一校验和模块检测ip层、tcp层的校验和,来确保数据包的正确性;
24.数据切模块,根据ip、tcp的数据包的长度,将滤除后的tcp数据包中的有效负载数据提取出来,且保留tcp数据包中的字段,将有效负载数据和字段一起输出给后续的数据确认模块;
25.数据确认模块,根据前后tcp数据包的字段的关系处理tcp乱序包,输出tcp数据流给行情业务模块进行解析处理。
26.根据本发明的基于fpga的行情低延时接口装置的一实施例,第一序列号器-反序列号器硬件模块输出数据至第一比特滑窗模块,第一比特滑窗模块输出数据至解扰模块,解扰模块输出数据至64/66b解码模块,64/66b解码模块输出数据至数据帧接收模块,数据帧接收模块和第一crc校验模块双向传输数据,数据帧接收模块输出数据至mac层ip校验模块,mac层ip校验模块和第一校验和模块双向传输数据,mac层ip校验模块输出数据至数据
切包模块,数据切包模块输出数据至数据确认模块。
27.根据本发明的基于fpga的行情低延时接口装置的一实施例,网络发送模块包括udp和ip的封装模块、第二校验和模块、数据帧发送模块、第二crc校验模块、64/66b编码模块、加扰模块、第二比特滑窗模块、第二序列号器-反序列号器硬件模块,其中:
28.udp和ip的封装模块,接收来自行情业务模块输出的业务解析完成后的数据,根据系统控制模块配置成合适的ip地址、端口号,封装成udp、ip、mac的格式,形成组播格式的数据包传输给数据帧发送模块,其中通过第二校验和模块检测ip层、tcp层的校验和,来确保数据包的正确性;
29.数据帧发送模块,将组播数据整理成802.3协议要求的帧格式数据,并传输给64/66b编码模块,其中通过第二crc校验模块在包尾检查帧校验序列,以保证mac数据包的正确性;
30.64/66b编码模块,根据编码表格将发送的数据编码成66比特数据,再将编码后的66比特数据输出至加扰模块,其中66比特数据包括2比特的头部数据和64比特数据;
31.加扰模块,将64比特数据转换成加扰后的64比特数据后输出至第二比特滑窗模块;
32.第二比特滑窗模块,通过比特滑窗功能将比特的头部数据以及加扰的64比特数据整理成连续数据后输出至第二序列号器-反序列号器硬件模块;
33.第二序列号器-反序列号器硬件模块,将位宽为66比特的并行数据转换成串行数据后输出至外部网络。
34.根据本发明的基于fpga的行情低延时接口装置的一实施例,udp和ip的封装模块输出数据至数据帧发送模块,udp和ip的封装模块和第二校验和模块之间双向传输,数据帧发送模块输出数据至64/66b编码模块,数据帧发送模块和第二crc校验模块之间双向传输,64/66b编码模块输出数据至加扰模块,加扰模块输出数据至第二比特滑窗模块,第二比特滑窗模块输出数据至第二序列号器-反序列号器硬件模块。
35.根据本发明的基于fpga的行情低延时接口装置的一实施例,外部网络包括以太网。
36.本发明对比现有技术有如下的有益效果:本发明的接口装置使用fpga实现phy协议(包括pcs层,即物理编码子层 mac层,即介质访问控制层)、tcp协议(主要是tcp镜像处理)接收证券行情,再通过udp协议将解析后的证券行情转发给客户,使用fpga实现万兆以太网、tcp的协议,来实现对交易所行情的数据接收与转发。
37.详细而言,在本发明的接口装置中,将原先标准的以太网分层(pcs层与mac层),改进为将这两层混合在一起作为一个模块实现,而不是按照标准协议去分层实现,从而减少实现模块的个数,降低各个模块带来的延时,加快以太网接口的数据输出。
38.另一方面,本发明的接口装置中的tcp镜像处理模块也不完全按照标准的tcp协议去实现,原因有两点:第一在实际数据环境比较理想,不需要实现很复杂的tcp协议来保证数据的完整性,只需要实现tcp协议中与数据相关的功能就可以了;第二,有些tcp协议的功能可以通过配置的方式来替代实现。
39.由此可见,本发明将证券行情的网络处理下放到fpga硬件中完成,包括tcp协议、udp协议、phy协议等等。而高性能硬件通信接口工作时无需任何软件干预,突破了软件性能
瓶颈,远低于传统的网卡接口。
附图说明
40.在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本发明的上述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。
41.图1示出了本发明的基于fpga的行情低延时接口装置的一实施例的原理图。
42.图2示出了图1所示的实施例中的网络接收模块的结构示意图。
43.图3示出了图1所示的实施例中的网络发送模块的结构示意图。
具体实施方式
44.以下结合附图和具体实施例对本发明作详细描述。注意,以下结合附图和具体实施例描述的诸方面仅是示例性的,而不应被理解为对本发明的保护范围进行任何限制。
45.图1示出了本发明的基于fpga的行情低延时接口装置的一实施例的原理。请参见图1,本实施例的装置包括:网络接收模块和网络发送模块、行情业务模块、以及系统控制模块。
46.网络接收模块接收外部网络的输入,将接收到的数据经过处理后传输至行情业务模块。
47.网络发送模块接收行情业务模块的输出,并将接收到的数据进行处理后传输至外部网络。
48.系统控制模块分别对网络接收模块、行情业务模块、以及网络发送模块的运行进行控制。具体来说,系统控制模块是通过pcie接口,对装置中的各个模块进行包括配置、启动、监控、关闭在内的控制。
49.网络接收模块进一步包括:第一pcs层与mac层混合模块、tcp镜像处理模块。第一pcs层与mac层混合模块的数据输出至tcp镜像处理模块。
50.第一pcs层与mac层混合模块配置为接收外部网络传输来的行情数据(例如板卡上的万兆以太网光模块传输来的万兆以太网数据),根据网络协议通过pcs层、mac层,提取网络数据包中的有效负载数据(payload)输出给tcp镜像处理模块,其中承载有效负载数据(payload)的数据包即为tcp数据包。
51.tcp镜像处理模块配置为将符合行情业务需求的tcp数据包中的有效负载数据payload提取出来并输出给行情业务模块。
52.网络发送模块进一步包括:udp协议封装模块、第二pcs层与mac层混合模块。udp协议封装模块的数据输出至第二pcs层与mac层混合模块。
53.行情业务模块配置为根据交易所的协议解析tcp镜像处理模块传输来的行情数据,并将解析后的行情数据发送给udp协议封装模块。
54.udp协议封装模块配置为将行情业务模块传输来的行情数据封装成一个完整的udp格式的数据包(包括ip层、mac层)并输出给第二pcs层与mac层混合模块。
55.第二pcs层与mac层混合模块的功能和第一pcs层与mac层混合模块是类似的,只是两者方向不同,即第一pcs层与mac层混合模块使用的是接收功能,而第二pcs层与mac层混
合模块使用的是发送功能。具体而言,第二pcs层与mac层混合模块配置为根据网络协议将udp协议封装模块发送来的udp数据包封装为pcs层、mac层的有效负载数据payload后发送给外部网络。
56.第一pcs层与mac层混合模块和第二pcs层与mac层混合模块的区分是为了功能逻辑上的区分方便,实际应用中两者可以整合在同一个模块中实现。
57.图2示出了图1所示的实施例中的网络接收模块的内部结构。请结合图2所示,网络接收模块内部实现是由serdes(serializer-deserializer)硬件模块(序列号器-反序列号器硬件模块)、比特滑窗(gear_box)模块、descrambler模块(解扰模块)、64/66b解码模块、数据帧接收(frame_rx)模块、crc校验模块(crc_chk模块)、mac_ip_chk模块(mac层ip校验模块)、checksum模块(校验和模块)、数据切包(pkt_cut)模块、数据确认(pkt_chk)模块组成。
58.上述模块之间的数据传输关系为:serdes硬件模块输出数据至gear_box模块,gear_box模块输出数据至descrambler模块,descrambler模块输出数据至64/66b解码模块,64/66b解码模块输出数据至frame_rx模块。frame_rx模块和crc校验模块双向传输数据,frame_rx模块输出数据至mac_ip_chk模块。mac_ip_chk模块和校验和模块双向传输数据,mac_ip_chk模块输出数据至pkt_cut模块,pkt_cut模块输出数据至pkt_chk模块。
59.serdes硬件模块是采用fpga芯片固有的硬件模块,用于将外部网络(例如光纤网络)中的串行数据整理成并行的、位宽为66bit的数据。
60.gear_box模块通过不断尝试比特(bit)滑窗的方式寻找这66bit数据中的位宽为2bit的头部数据head,成功找到头部数据后,将66bit数据整理成2bit的head 64bit的数据data,输出给descrambler模块。
61.descrambler模块是解扰模块,根据标准的802.3协议,将64bit的数据data转换成解扰后的64bit数据,再输出给64/66b解码模块。
62.64/66b解码模块是根据64bit数据和2bit的头部数据head将这66bit通过64/66b的表来映射出tx侧(发送侧,即transmit)真实发送的数据,将这个数据输出给frame_rx模块。
63.frame_rx模块直接根据pcs层的数据包格式,去除接收数据包中的包头包尾,输出标准的mac层数据包到mac_ip_chk模块,其中通过crc校验模块(crc_chk)在包尾检查一下fcs(帧校验序列,frame check sequence),以保证接收到的mac数据包的正确性。
64.mac_ip_chk模块在获得mac层数据包后,通过配置目的ip地址、目的端口(port)号、源port号来提取众多数据包中符合要求的tcp数据包并传输给pkt_cut模块,同时也通过校验和模块(checksum模块)检测ip层、tcp层的校验和(checksum),来确保数据包的正确性。
65.pkt_cut模块根据ip、tcp的数据包的长度(length),将滤除后的tcp数据包中payload提取出来,且保留tcp数据包中的字段sequence number,一起输出给后续的pkt_chk模块。
66.pkt_chk模块根据前后tcp数据包的字段sequence number的关系,处理tcp乱序包,输出tcp数据流给行情业务模块进行解析处理。
67.图3示出了图1所示的实施例中的网络发送模块的结构。请结合图3所示,网络发送
模块与网络接收模块类似,而数据流方向正好相反。
68.网络发送模块内部实现是由udp和ip的封装模块(udp_ip_mac_pkt模块)、checksum模块(校验和模块)、数据帧发送(frame_tx)模块、crc校验模块(crc_chk模块)、64/66b编码模块、scrambler模块(加扰模块)、比特滑窗模块(gear_box模块)、serdes硬件模块(序列号器-反序列号器硬件模块)组成。
69.上述模块之间的数据传输关系是:udp_ip_mac_pkt模块输出数据至frame_tx模块,udp_ip_mac_pkt模块和校验和模块之间双向传输。frame_tx模块输出数据至64/66b编码模块,frame_tx模块和crc校验模块之间双向传输。64/66b编码模块输出数据至加扰模块,加扰模块输出数据至gear_box模块,gear_box模块输出数据至serdes硬件模块。
70.udp_ip_mac_pkt模块接收来自行情业务模块输出的业务解析完成后的数据,根据系统控制模块配置成合适的ip地址、端口(port)号,封装成udp、ip、mac的格式,形成组播格式的数据包传输给frame_tx模块,其中通过与自身相连的校验和模块检测ip层、tcp层的校验和,来确保数据包的正确性。
71.frame_tx模块将组播数据整理成802.3要求的帧格式数据,并传输给64/66b编码模块,其中通过与自身相连的crc校验模块在包尾检查帧校验序列,以保证mac数据包的正确性。
72.64/66b编码模块根据编码表格将发送的数据编码成66bit数据(64bit数据data 2bit的head数据),再将编码后的数据输出至加扰模块。
73.加扰模块,根据标准的802.3协议,将64bit的数据data转换成加扰后的64bit数据后输出至gear_box模块。
74.gear_box模块通过bit滑窗功能,将2bit的head数据 加扰的64bit数据data整理成连续数据后输出至serdes硬件模块。
75.serdes硬件模块采用fpga芯片固有的硬件模块,将位宽为66bit的并行数据转换成串行数据后输出至外部网络(例如光纤网络)。
76.尽管为使解释简单化将上述方法图示并描述为一系列动作,但是应理解并领会,这些方法不受动作的次序所限,因为根据一个或多个实施例,一些动作可按不同次序发生和/或与来自本文中图示和描述或本文中未图示和描述但本领域技术人员可以理解的其他动作并发地发生。
77.本领域技术人员将进一步领会,结合本文中所公开的实施例来描述的各种解说性逻辑板块、模块、电路、和算法步骤可实现为电子硬件、计算机软件、或这两者的组合。为清楚地解说硬件与软件的这一可互换性,各种解说性组件、框、模块、电路、和步骤在上面是以其功能性的形式作一般化描述的。此类功能性是被实现为硬件还是软件取决于具体应用和施加于整体系统的设计约束。技术人员对于每种特定应用可用不同的方式来实现所描述的功能性,但这样的实现决策不应被解读成导致脱离了本发明的范围。
78.结合本文所公开的实施例描述的各种解说性逻辑板块、模块、和电路可用通用处理器、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或其它可编程逻辑器件、分立的门或晶体管逻辑、分立的硬件组件、或其设计成执行本文所描述功能的任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理器、控制器、微控制器、或状态机。处理器还可以被实现为计算设备的组合,例
如dsp与微处理器的组合、多个微处理器、与dsp核心协作的一个或多个微处理器、或任何其他此类配置。
79.结合本文中公开的实施例描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中体现。软件模块可驻留在ram存储器、闪存、rom存储器、eprom存储器、eeprom存储器、寄存器、硬盘、可移动盘、cd-rom、或本领域中所知的任何其他形式的存储介质中。示例性存储介质耦合到处理器以使得该处理器能从/向该存储介质读取和写入信息。在替换方案中,存储介质可以被整合到处理器。处理器和存储介质可驻留在asic中。asic可驻留在用户终端中。在替换方案中,处理器和存储介质可作为分立组件驻留在用户终端中。
80.在一个或多个示例性实施例中,所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现为计算机程序产品,则各功能可以作为一条或更多条指令或代码存储在计算机可读介质上或藉其进行传送。计算机可读介质包括计算机存储介质和通信介质两者,其包括促成计算机程序从一地向另一地转移的任何介质。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括ram、rom、eeprom、cd-rom或其它光盘存储、磁盘存储或其它磁存储设备、或能被用来携带或存储指令或数据结构形式的合意程序代码且能被计算机访问的任何其它介质。任何连接也被正当地称为计算机可读介质。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(dsl)、或诸如红外、无线电、以及微波之类的无线技术从web网站、服务器、或其它远程源传送而来,则该同轴电缆、光纤电缆、双绞线、dsl、或诸如红外、无线电、以及微波之类的无线技术就被包括在介质的定义之中。如本文中所使用的盘(disk)和碟(disc)包括压缩碟(cd)、激光碟、光碟、数字多用碟(dvd)、软盘和蓝光碟,其中盘(disk)往往以磁的方式再现数据,而碟(disc)用激光以光学方式再现数据。上述的组合也应被包括在计算机可读介质的范围内。
81.提供对本公开的先前描述是为使得本领域任何技术人员皆能够制作或使用本公开。对本公开的各种修改对本领域技术人员来说都将是显而易见的,且本文中所定义的普适原理可被应用到其他变体而不会脱离本公开的精神或范围。由此,本公开并非旨在被限定于本文中所描述的示例和设计,而是应被授予与本文中所公开的原理和新颖性特征相一致的最广范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献