一种基于FPGA的多路并行数据自适应排序的实现方法与流程

文档序号:17357263发布日期:2019-04-09 21:47阅读:457来源:国知局
一种基于FPGA的多路并行数据自适应排序的实现方法与流程

本发明涉及光通信、大数据处理等领域,尤其涉及一种基于fpga的多路并行数据自适应排序的实现方法。



背景技术:

随着通信技术及大数据技术的发展,对大数据量高速传输的需求越来越高,传统单通道有限的传输带宽不能满足现实需求,多通道并行传输成为广泛应用的解决方案。

在光通信领域,同一时刻多通道传输的数据是耦合的,需要在接收端将各个通道数据按顺序排列才能正确恢复信号,不同厂商设备之间通道排布不尽相同,跨厂商的设备之间难以通信。

在大数据领域,对数据进行排布、筛选的需求日益增加,传统cpu顺序执行的工作机制对时间消耗较大,针对大数据算法加速,多路并行排布数据是一个重要的解决方案。



技术实现要素:

鉴于现在技术存在的问题,本发明提供一种基于fpga的多路并行数据自适应排序的实现方法。本发明的目的就是要解决现有技术中存在的问题,采用fpga来完成多路并行数据自适应排序的技术,通过fpga完成对多路并行数据自适应排序功能。本方法在fpga内部实现了排序基本单元,通过将多个基本单元串联连接构成流水线结构,在流水线输出端可以得到并行数据的排序结果,实现并行数据从无序排列到顺序排列。

本发明采取的技术方案是:一种基于fpga的多路并行数据自适应排序的实现方法,本方法利用fpga芯片作为排序的平台,其特征在于,步骤如下:

一、选择排序逻辑,将并行数据自上而下数值逐渐增大的排序称为升序排列,并行数据自上而下数值逐渐减小的排序称为降序排列,升序排列的逻辑为:数据a1、a2,判断条件a1≤a2,若条件为真,a1的值传递给b1同时a2的值传递给b2,若条件为假,a1的值传递给b2同时a2的值传递给b1;降序排列的逻辑为:数据a1、a2,判断条件a1≥a2,若条件为真,a1的值传递给b1同时a2的值传递给b2,若条件为假,a1的值传递给b2同时a2的值传递给b;按需求选择排序逻辑;

二、按照多路并行数据的通道数量构造基本单元,适用的多路并行数据通道数量为2n,其中n≥2,由步骤一获得排序逻辑;输入数据a(1)、a(2)、...、a(2n-1)、a(2n),先将a(1)与a(2)、a(3)与a(4)、...、a(2n-1)与a(2n)两两输入排序逻辑,输出传递给b(1)与b(2)、b(3)与b(4)、...、b(2n-1)与b(2n),后将b(2)与b(3)、b(4)与b(5)、...、b(2n-2)与b(2n-1)、b(1)与b(2n)两两输入排序逻辑,输出传递给c(2)与c(3)、c(4)与c(5)、...、c(2n-2)与c(2n-1)、c(1)与c(2n);a、b、c及中间的排序逻辑共同组成一个基本单元;数据从a传递给b需消耗一个时钟周期,从b传递给c需要消耗一个时钟周期;

三、按照多路并行数据的通道数量计算基本单元的数量,基本单元的数量为通道个数的一半,即通道个数为2n(n≥2),基本单元的个数为n;

四、将各个基本单元串联起来构成完整的排序功能,由步骤二、三获得n个基本单元,将基本单元1、基本单元2、...、基本单元n串联连接,即可获得完整的排序功能。

本发明产生的有益效果是:在光通信领域,针对多通道并行传输协议(包括otl3.4、otl4.4、otl4.10),能够做到自适应通道排序,同一厂商的发送端设备与接收端设备的通道排序规则是确定且唯一的,如果发送端设备与接收端设备属于不同厂商,那么接收端无法进行正确的通道排序,本发明的排序具有自适应性,能够在接收端自行排序任何厂商的光通信通道,有很强的适应性。由普通设备实现未知序列的排序,一般采用嵌入式芯片进行排序操作,然后由嵌入式芯片将排序结果发送到fpga芯片以实现通道排序,本方法所采用的结构完全基于fpga芯片,不需要外部嵌入式芯片的协助处理,削减了嵌入式芯片的使用数量,减少了嵌入式芯片的采购成本,大大简化了pcb电路板的布局复杂程度,降低了pcb电路板的制作成本。在大数据领域,能够多路并行排布数据,可以有效的对大数据算法进行加速。

本方法在fpga内部实现了排序基本单元,通过将多个基本单元串联连接构成流水线结构,在流水线输出端可以得到并行数据的排序结果,实现并行数据从无序排列到顺序排列。

附图说明

图1为本发明的排序逻辑示意图;

图2为本发明的基本单元结构示意图;

图3为本发明的基本单元内部延时示意图;

图4为本发明的升序逻辑最差情况示意图;

图5为本发明的排序流水线结构示意图;

图6为本发明的升序逻辑4通道排序示意图。

具体实施方式

以下结合附图对本发明做进一步说明。

基于fpga接收多路并行数据,指的是fpga接收多通道数据,每个通道在1个时钟周期传输1个数据,针对2n(n≥2)个通道来说,fpga在1个时钟周期接收2n个数据,此即为多路并行数据的含义。

1.选择排序逻辑。

本发明将并行数据自上而下数值逐渐增大的排序称为升序排列,并行数据自上而下数值逐渐减小的排序称为降序排列;如图1所示,升序排列的逻辑为:数据a1、a2,判断条件a1≤a2,若条件为真,a1的值传递给b1同时a2的值传递给b2,若条件为假,a1的值传递给b2同时a2的值传递给b1;降序排列的逻辑为:数据a1、a2,判断条件a1≥a2,若条件为真,a1的值传递给b1同时a2的值传递给b2,若条件为假,a1的值传递给b2同时a2的值传递给b1;实际使用应按需求选择排序逻辑。

2.按照多路并行数据的通道数量构造基本单元。

如图2所示,由步骤一获得排序逻辑compare,输入数据a(1)、a(2)、...、a(2n-1)、a(2n);先将a(1)与a(2)、a(3)与a(4)、...、a(2n-1)与a(2n)两两输入排序逻辑compare,输出传递给b(1)与b(2)、b(3)与b(4)、...、b(2n-1)与b(2n),后将b(2)与b(3)、b(4)与b(5)、...、b(2n-2)与b(2n-1)、b(1)与b(2n)两两输入排序逻辑compare,输出传递给c(2)与c(3)、c(4)与c(5)、...、c(2n-2)与c(2n-1)、c(1)与c(2n);a、b、c及中间的排序逻辑共同组成一个基本单元;数据从a传递给b需消耗一个时钟周期,从b传递给c需要消耗一个时钟周期,延时情况可参考图3。

3.按照多路并行数据的通道数量计算基本单元的数量。

本发明通过构造流水线进行排序,为了确保输出端的数据是严格排序的,需要计算输入序列最恶劣的情况下所需的流水线级数,下面结合图4加以说明,在通道数为2n的升序排列情况下,假设输入数值均为非负数,0值数据位于最下端,已知升序排序结果0应该在最上端,所以在流水线中0值数据需要跨过2n-1个位置才能到达最上端,按照图2所示,1个基本单元unit可以使数据跨越2个位置,那么需要(2n-1)/2个单元,向上取整,则需要n个基本单元unit。

4.将各个基本单元串联起来构成完整的排序功能。

获得基本单元unit及基本单元个数n,将基本单元1、基本单元2、...、基本单元n串联连接,形成流水线结构,即可获得完整的排序功能,如图5所示。

下面结合图6说明光通信领域的通道排序,在光通信多通道的接收中,通道数据中包含通道序号,例如otl3.4、otl4.4、otl4.10,需要把通道序号提取出来进行排序,图6表示的是接收4通道,通道名自上而下分别为:receive0、receive1、receive2、receive3,通道序号分别为1、3、2、0,然后构造4通道基本单元,经计算基本单元的个数为2,而后对通道序号进行排序,序号排序结果自上而下为0、1、2、3,那么接收通道按序号排序结果做同样的排序,自上而下为receive3、receive0、receive2、receive1,由此完成通道排序,通信的通道排序并不依靠通道数据本身,而是利用提取的通道序号排序获得结果,然后反作用于通道本身实现排序。

在大数据处理的领域,该方法适用于并行多通道数据的排序。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1