一种支持多协议的FPGA系统及数据处理方法与流程

文档序号:23794090发布日期:2021-01-30 09:28阅读:149来源:国知局
一种支持多协议的FPGA系统及数据处理方法与流程
一种支持多协议的fpga系统及数据处理方法
技术领域
[0001]
本申请涉及fpga电子技术领域,尤其涉及一种支持多协议的fpga系统及数据处理方法。


背景技术:

[0002]
当今高速串行接口serdes已经成为通信传输的主流之一,拥有传输速率高、距离远、抗干扰强等优点。而不同的高速串行接口serdes除了速率不同外,主要集中在编解码差异、通道个数、时钟校准方案、协议握手以及mac层协议等。由于fpga(field-programmable gate array,现场可编程门阵列)通用性很强,所以fpga内部的高速串行接口serdes需要支持多种协议的配置。
[0003]
传统的fpga支持多种协议的处理流程一般是先对数据进行跳码处理,再通过通道绑定模块channel bounding进行通道绑定,并且对数据各个处理模块的配置不完善,使得fpga收发器在对收到的数据进行处理或将原始数据进行发送时,无法支持多种协议,降低了fpga收发器的通用性。


技术实现要素:

[0004]
本申请实施例提供一种支持多协议的fpga系统及数据处理方法,以解决现有fpga收发器无法支持多种协议、通用性差的技术问题。
[0005]
本发明提供了一种支持多协议的fpga系统,该系统包括用于发送数据的数据发送端和用于接收数据的数据接收端,该数据接收端包括预处理组件、通道绑定模块、时钟误差补偿模块及数据处理组件,其中:
[0006]
该预处理组件,用于将接收到的串行数据转换成本地可识别的并行的原始数据;
[0007]
该通道绑定模块,用于根据传输该原始数据所用协议的传输通道,对该原始数据进行通道绑定;
[0008]
该时钟误差补偿模块,用于当本地时钟与发送该原始数据的发送端时钟不同源时,通过在通道绑定后的原始数据中加入或删除跳码对该原始数据进行时钟补偿,以得到补偿数据;
[0009]
数据处理组件,用于对所述补偿数据的接收恢复时钟和本地时钟进行隔离,使读取所述补偿数据的时钟频率与写所述补偿数据的时钟频率工作在不同的时钟频率下。
[0010]
本发明另提供了一种数据处理方法,该方法应用于fpga收发器,应用于该fpga收发器的接收端的方法包括:
[0011]
将接收到的串行数据转换成本地可识别的并行原始的数据;
[0012]
根据传输该原始数据所用协议的传输通道,对该原始数据进行通道绑定;
[0013]
当本地时钟与发送该原始数据的发送端时钟不同源时,通过在通道绑定后的原始数据中加入或删除跳码对该原始数据进行时钟补偿,以得到补偿数据;
[0014]
对所述补偿数据的接收恢复时钟和本地时钟进行隔离,使读取所述补偿数据的时
钟与写所述补偿数据的时钟工作在不同的时钟频率下。
[0015]
本申请提供的fpga支持多协议的系统及数据处理方法,通过预处理组件将接收到的串行数据转换成本地可识别的并行原始数据,并在通道绑定模块中根据传输该原始数据所用协议的传输通道对该原始数据进行通道绑定,使得该fpga可以适用通过不同协议传输的数据,并在时钟误差补偿模块中,根据本地时钟与发送该原始数据的发送端时钟是否同源时,对原始数据做对应的跳码操作,进一步提高该fpga的通用性。
附图说明
[0016]
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0017]
图1是本申请一实施例中支持多协议的fpga系统中各模块的结构框图;
[0018]
图2是本申请一实施例中fpga接收端支持多协议的数据处理方法的流程图;
[0019]
图3是本申请另一实施例中fpga接收端支持多协议的数据处理方法的流程图;
[0020]
图4是本申请一实施例中fpga发送端支持多协议的数据处理方法的流程图。
具体实施方式
[0021]
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0022]
以下结合具体附图对本申请的实现进行详细的描述:
[0023]
一种支持多协议的fpga系统,图1是本申请一实施例中支持多协议的fpga系统100中各模块的结构框图,如图1所示,该系统包括用于发送数据的数据发送端10和用于接收数据的数据接收端20,该系统的接收端20包括依次连接的预处理组件01、通道绑定模块channel bounding 24、时钟误差补偿模块ctc 23及数据处理组件02。
[0024]
其中,该预处理组件01的输出端连接该通道绑定模块channel bounding 24的输入端,该通道绑定模块channel bounding 24的输出端连接该时钟误差补偿模块ctc 23的输入端,该时钟误差补偿模块ctc 23的输出端连接该数据处理组件02的输入端,其中:
[0025]
该预处理组件01,用于将接收到的串行数据转换成本地可识别的并行的原始数据。
[0026]
该通道绑定模块channel bounding 24,用于根据传输该原始数据所用协议的传输通道,对该原始数据进行通道绑定。
[0027]
由于某些协议需要多个通道同时发送,在接收端由于路径延时和弹性缓冲buffer的原因,每条通道lane上接收到的数据,在时间上产生了偏差,这就需要通过协议字将各个通道的数据重新对齐,解码后的数据发送给通道绑定模块(channel_bounding),此通道绑定模块选取需要绑定的通道中某一个时钟,利用协议字将多个通道的数据做不同的延时操作,最终补偿路径延时和前面电路弹性缓冲buffer的延时差。
[0028]
该时钟误差补偿模块ctc 23,用于当本地时钟与发送该原始数据的发送端时钟不
同源时,通过在通道绑定后的原始数据中加入或删除跳码对该原始数据进行时钟补偿,以得到补偿数据。
[0029]
由于serdes系统中,发送端和接收端可能使用不同的参考时钟,所以会存在微小的频率偏差,这时候就需要对频率偏差做出补偿,协议通常使用冗余的skip跳码加载在每条lane的正常数据中,如果接收端发现接收时钟与本地时钟比较,频率快了,就删除某个skip跳码,如果比本地时钟慢了,就在某个位置加入skip跳码。这样保证了补偿后的数据流,与本地时钟下的数据流的流量相同,通道绑定模块channel_bounding得到的数据发送给时钟误差补偿模块ctc 23模块,在本地时钟下完成加入或删除跳码(skip码)的操作。
[0030]
数据处理组件02,用于对所述补偿数据的接收恢复时钟和本地时钟进行隔离,使读取所述补偿数据的时钟频率与写所述补偿数据的时钟频率工作在不同的时钟频率下。
[0031]
在其中一个实施例中,该预处理组件01包括串并转换模块pma_rx 27、字节对齐模块及解码模块;
[0032]
该串并转换模块pma_rx 27的输出端连接该字节对齐模块word align 26的输入端,该字节对齐模块word align 26的输出端连接该解码模块decoder 25的输入端,该解码模块decoder 25的输出端连接该通道绑定模块channel bounding 24的输入端;
[0033]
该串并转换模块pma_rx 27,用于接收到待读写的串行数据时,将该串行数据转换成第一并行数据;
[0034]
该字节对齐模块word align 26,用于将该第一并行数据的字节边界与该第一并行数据在原发送端中原始数据的字节边界对齐;
[0035]
该解码模块decoder 25,用于根据封装该原始数据所用协议编码的比特值,选用预先配置的对应比特值对对齐后的该第一并行数据进行解码,得到该并行的原始数据。
[0036]
在其中一个实施例中,该解码模块decoder 25具体用于何种比特进行解码则根据预先配置而定,系统预先针对不同协议适用的编码/解码,对应配置有对应比特值。
[0037]
其中,串并转换模块pma_rx完成高速串行数据到并行数据的转换后,将并行数据和对应的低速并行时钟(pma_rx_clk)发送给pcs接收电路,并行数据先经过该pcs接收电路中的字节对齐模块(word_align)将字节边界与原发送端对齐,对齐后的并行数据发送给解码模块,得到编码前的原始数据。
[0038]
在其中一个实施例中,该解码模块decoder 25配置包括四种比特解码,分别为8b/10b解码、64b/66b解码、66b/67b解码、128b/130b编码。
[0039]
在其中一个实施例中,该数据处理组件02包括依次连接的第一接口处理模块rx_if 22及第三通讯接口模块mac rx 21,该第一接口处理模块rx_if 22的输入端连接该时钟误差补偿模块ctc 23的输出端,该第一接口处理模块rx_if 22的输出端连接该第三通讯接口模块mac rx 21;
[0040]
该第一接口处理模块rx_if 22内设有第一异步fifo存储器,该第一接口处理模块rx_if 22用于通过该第一异步fifo存储器对该补偿数据的接收恢复时钟和本地时钟进行隔离;
[0041]
该第三通讯接口模块mac rx 21,用于根据隔离后的所述接收恢复时钟及本地时钟,对所述补偿数据的读配置在所述接收恢复时钟下,对所述补偿数据的写配置在所述本地时钟下。
[0042]
对于第一异步fifo存储器中存储的补偿数据,可以供用户读取,也可供用户进行写入等编辑。在其中一个实施例中,所述接收恢复时钟的频率大于或等于所述本地时钟的频率,从而使得读取该补偿数据的速度大于或等于对该补偿数据进行编辑的速度。
[0043]
由于寄存器存储空间有限,读取寄存器中数据的速度大于或等于写入数据的速度可以避免fifo寄存器中数据溢出。
[0044]
时钟误差补偿模块ctc 23处理后的数据,发送给fabric第一接口处理模块rx_if 22,此第一接口处理模块rx_if 22能够完成gearbox变速功能,对fabric接口中的数据做降频增位宽操作,同时通过第一异步fifo存储器对接收恢复时钟fabric clock和本地时钟c2i_clk进行隔离。
[0045]
在其中一个实施例中,该数据发送端10包括第二通信接口模块mac tx 11、第二接口处理模块tx_if 12,编码模块encoder 24及并串转换模块pma_tx 14;
[0046]
该第二通信接口模块mac tx 11的输出端连接该第二接口处理模块tx_if 12的输入端,该第二接口处理模块tx_if 12的输出端连接该编码模块encoder 24的输入端,该编码模块encoder 24的输出端连接该并串转换模块pma_tx 14的输入端;
[0047]
该第二通信接口模块mac tx 11,用于将用户输入的原始数据发送至该第二接口处理模块tx_if 12;
[0048]
该第二接口处理模块tx_if 12,用于对该原始数据的接收恢复时钟和本地时钟进行隔离;
[0049]
该编码模块encoder 24,用于根据封装该原始数据所需协议编码的比特值,选用预先配置的对应比特值对该原始数据进行编码;
[0050]
并串转换模块pma_tx 14,用于将编码后的该原始数据转换成串行数据并根据所述协议中封装的接收端地址发送至对应的接收端。
[0051]
在其中一个实施例中,该编码模块encoder 24配置包括四种比特编码,分别为8b/10b编码、64b/66b编码、66b/67b编码、128b/130b编码。
[0052]
在其中一个实施例中,该第二接口处理模块tx_if 12内设有第二异步fifo存储器,该第二接口处理模块tx_if 12通过该第二异步fifo存储器对该原始数据的接收恢复时钟和本地时钟进行隔离。
[0053]
该第二接口处理模块tx_if例如fabric接口处理模块,此接口模块能够完成gearbox功能,对fabric接口做降频增位宽操作。
[0054]
本实施例通过第一异步fifo对接收恢复时钟fabric clock和接收端本地时钟c2i_clk进行隔离,由于用户逻辑通常希望有自己单独的时钟,不希望被绑定在某个serdes子系统上,通过该异步fifo允许用户使用与serdes硬件不同的时钟频率。
[0055]
在其中一个实施例中,所述本地时钟选用发送所述原始数据的发送端的硬件时钟(pcs_tx_clk)或用户提供的硬件时钟(local clock)。
[0056]
本实施例所涉及的接收端处理,如图1所示,包括4个时钟域:
[0057]
(1)本通道恢复时钟域(local ln(x)pma_rx_clk);
[0058]
(2)通道bounding恢复时钟域(b2c_clk),该通道bounding恢复时钟域b2c_clk选用第一通道时钟域ln(0)_pma_rx_clk至第(n+1)通道时钟域ln(n)_pma_rx_clk中的其中一个;
[0059]
(3)频率校准时钟域(c2i_clk),该频率校准时钟域(c2i_clk)选用发送端本地时钟(pcs_tx_clk)或用户提供的本地时钟(local clock);
[0060]
(4)接收恢复时钟域(fabric clock)。
[0061]
以上四个时钟域用于完成serdes的众多协议和串并转换的基本功能,完成该基本功能时需要在多个时钟源之间传递信号,比如信号从电路板进入serdes时,数据就是与自己通道的接收恢复时钟对齐的,为了做不同通道间的数据对齐,又转换到四个通道的某一个接收时钟上,然后再把数据转移到本地稳定时钟上,最后再转换到用户逻辑使用的时钟,用户逻辑才能使用这些数据。
[0062]
本实施例可以完成serdes(serializer串行器/deserializer解串器的简称)通用协议中常用的通道绑定模块channel bounding 24、ctc(clock tolerance compensation时钟误差补偿)模块、解码模块decoder 25、编码模块encoder 24等功能;这些可配置的pcs(process control system,过程控制系统)功能组合,覆盖了pcie(peripheral component interconnect express)协议、cpri(common public radio interface)接口协议、xaui(ethernet attachment unit interface)以太网接口协议、rxaui(reduced attachment unit interface)协议、ge(gigabit ethernet)协议、interlaken协议以及用户自定义的多种serdes协议。
[0063]
图2是本申请一实施例中fpga接收端支持多协议的数据处理方法的流程图,该方法应用于fpga收发器,如图2所示,该应用于该fpga收发器的接收端的方法包括以下步骤s101至s104:
[0064]
s101、预处理组件将接收到的串行数据转换成本地可识别的并行的原始数据。
[0065]
在其中一个实施例中,该步骤s101中预处理组件将接收到的串行数据转换成本地可识别的并行的原始数据的步骤包括:
[0066]
接收到待读写的串行数据时,通过串并转换模块将该串行数据转换成第一并行数据;
[0067]
通过字节对齐模块将该第一并行数据的字节边界与该第一并行数据在原发送端中原始数据的字节边界对齐;
[0068]
通过解码模块根据封装该原始数据所用协议编码的比特值,选用预先配置的对应比特值对对齐后的该第一并行数据进行解码,得到该并行的原始数据。
[0069]
作为可选地,解码模块预先至少配置四种比特解码,分别为8b/10b解码、64b/66b解码、66b/67b解码、128b/130b编码。
[0070]
s102、通道绑定模块根据传输该原始数据所用协议的传输通道,对该原始数据进行通道绑定。
[0071]
s103、当本地时钟与发送该原始数据的发送端时钟不同源时,时钟误差补偿模块通过在通道绑定后的原始数据中加入或删除跳码对该原始数据进行时钟补偿,以得到补偿数据。
[0072]
其中,上述步骤s102的执行顺序在所述步骤s103的步骤之前,以确保进行通道绑定的原始数据没有冗余。
[0073]
在其中一个实施例中,该步骤s103通过在通道绑定后的原始数据中加入或删除跳码对该原始数据进行时钟补偿,以得到补偿数据的步骤包括:
[0074]
所述时钟误差补偿模块对该原始数据添加接收恢复时钟和本地时钟;
[0075]
根据预先配置,所述时钟误差补偿模块控制对所述补偿数据的读使能工作在所述本地时钟下,并控制所述补偿数据的写使能工作在所述接收恢复时钟下。
[0076]
在其中一个实施例中,该本地时钟选用发送该原始数据的发送端的硬件时钟或用户提供的硬件时钟。
[0077]
s104、通过数据处理组件对所述补偿数据的接收恢复时钟和本地时钟进行隔离,使读取所述补偿数据的时钟与写所述补偿数据的时钟工作在不同的时钟频率下。
[0078]
作为可选地,根据预先配置,所述时钟误差补偿模块通过第一异步fifo存储器控制对所述补偿数据的读使能工作在所述接收恢复时钟下,并控制所述补偿数据的写使能工作在所述本地时钟下。
[0079]
在其中一个实施例中,所述方法还包括:将时钟隔离后的原始数据发送至第三通讯接口模块mac rx 21,供用户读/写。
[0080]
本实施例通过预处理组件将接收到的串行数据转换成本地可识别的并行原始数据,并在通道绑定模块中根据传输该原始数据所用协议的传输通道对该原始数据进行通道绑定,使得该fpga可以适用通过不同协议传输的数据,并在时钟误差补偿模块中,根据本地时钟与发送该原始数据的发送端时钟是否同源时,对原始数据做对应的跳码操作,进一步提高该fpga的通用性。
[0081]
在其中一个实施例中,图3是本申请另一实施例中fpga接收端支持多协议的数据处理方法的流程图,如图3所示,该s102根据传输该原始数据所用协议的传输通道,对该原始数据进行通道绑定的步骤包括:
[0082]
s1021、根据预先配置,当封装该原始数据所用协议的传输通道数为一时,通过低电平信号控制该通道绑定模块的使能端无效;
[0083]
s1022、根据预先配置,当封装该原始数据所用协议的传输通道数大于或等于二时,通过高电平信号控制该通道绑定模块的使能端有效。
[0084]
根据本实施例的一个使用场景,当数据传输协议需要一个通道时,如pcie协议时,将与pcie协议对应的通道绑定模块的使能端配置为无效;当数据传输协议需要四个通道时,如rxaui协议时,将与pcie协议对应的通道绑定模块的使能端配置为有效。
[0085]
本实施例通过根据传输原始数据所用的协议通道的不同,配置道绑定模块的使能端的有效性,使得该数据处理方法可以适用多种协议的需求。
[0086]
在其中一个实施例中,图4是本申请一实施例中fpga发送端支持多协议的数据处理方法的流程图,如图4所示,应用于该fpga收发器的发送端的方法包括一下步骤s201至s203:
[0087]
s201、第二接口处理模块接收到待发送的原始数据时,对该原始数据的接收恢复时钟和本地时钟进行隔离。
[0088]
作为可选地,该步骤s201进一步包括:
[0089]
第二接口处理模块通过第二异步fifo存储器对接收的该原始数据的接收恢复时钟和本地时钟进行隔离。
[0090]
本实施例通过第二异步fifo对接收恢复时钟fabric clock和发送端本地时钟pcs_tx_clk进行隔离,由于用户逻辑通常希望有自己单独的时钟,不希望被绑定在某个
serdes子系统上,通过该异步fifo允许用户使用与serdes硬件不同的时钟频率。
[0091]
s202、编码模块根据封装该原始数据所需协议编码的比特值,选用预先配置的对应比特值对该原始数据进行编码;
[0092]
s203、并串转换模块将编码后的该原始数据转换成串行数据并根据所述协议中封装的接收端地址发送至对应的接收端。
[0093]
作为可选地,编码模块预先至少配置四种比特编码,分别为8b/10b编码、64b/66b编码、66b/67b编码、128b/130b编码。
[0094]
在其中一个实施例中,该方法还包括:
[0095]
接收到待发送的原始数据时,通过并串转换模块对该原始数据进行升频降位宽操作;
[0096]
接收到待读写的串行数据时,通过串并转换模块对所述串行数据进行降频升位宽操作。
[0097]
其中,该将编码后的该原始数据转换成串行数据并根据所述协议中封装的接收端地址发送至对应的接收端的步骤具体为:
[0098]
该并串转换模块将编码后的该第二并行数据转换成串行数据,并根据所述协议中封装的接收端地址发送至对应的接收端。
[0099]
第二接口处理模块tx_if 12处理后的数据,发送给后续的编码模块13,完成对数据的编码操作,然后发送给后续的并串转换模块pma_tx 14,并串转换模块pma_tx 14将并行数据转换成高速的串行数据,根据所述协议中封装的接收端地址发送至对应的接收端。
[0100]
本实施例通过预处理组件将接收到的串行数据转换成本地可识别的并行原始数据,并在通道绑定模块中根据传输该原始数据所用协议的传输通道对该原始数据进行通道绑定,使得该fpga可以适用通过不同协议传输的数据,并在时钟误差补偿模块中,根据本地时钟与发送该原始数据的发送端时钟是否同源时,对原始数据做对应的跳码操作,进一步提高该fpga的通用性。
[0101]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
[0102]
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1