一种基于fpga的模块电压并行多路归并排序方法

文档序号:9753905阅读:237来源:国知局
一种基于fpga的模块电压并行多路归并排序方法
【技术领域】
[0001]本发明属于模块化多电平型电压源换流器控制领域,涉及一种基于FPGA的模块电压并行多路归并排序方法。
【背景技术】
[0002]基于电压源换流器的输电技术是一种新型的直流输电技术,相比传统直流输电具有很多好处。模块化多电平换流器是近年来发展的一种新型电压源换流器,它具有谐波小,损耗小等优点。
[0003]控制设备根据交流电压指令来决定在上下桥臂需要开通或关断几个子模块,以产生合适的交流电压。并且,控制系统通过合适的算法保证每个子模块上的电压基本相等。
[0004]在模块化多电平型换流器控制中采用较多的有NLC算法。这种算法在每个控制时刻先将子模块上的电压值采回,按照从小到大的顺序对这些电压进行排序。然后根据桥臂上电流的方向确定需要打开的模块。比如,若此时桥臂电流为正,是对子模块上的电容充电,那么从电压最低的模块开始选择相应数量的模块,使之开通,其余模块则关断。
[0005]由于高的电平数会减少电网上的谐波,减少滤波装置等,模块化多电平的电平数在不断提高。随着电平数的增加,每个控制周期要求的时间减小,但是排序运算所需的计算量却会增大。以冒泡算法为例,它的运算时间与电平数是平方关系。因此缩短排序时间,研究新的排序方法变得非常重要。

【发明内容】

[0006]本发明的目的是提供一种基于FPGA的模块电压并行多路归并排序方法,大大减少了模块电压排序所需时间。
[0007]为实现上述目的,本发明采用以下技术方案:
[0008]一种基于FPGA的模块电压并行多路归并排序方法,通过FPGA采集所有子模块上的电压值,将采集的所有电压值分解为多个两路归并,利用FPGA将多个两路归并同时进行排序,所有两路归并排序后的结果再分组为多个两路归并进行排序,重复此步骤直到所有电压值合并为一路有序数据。
[0009]进一步,排序结果串行输出或被随机读取。
[0010]本发明采用归并排序上建立一种排序算法,利用FPGA的并行特性对归并排序进行了并行化,从而极大的提高了排序的速度,缩短了排序时间。
【附图说明】
[0011 ]图1为本发明方法的流程图。
【具体实施方式】
[0012]下面结合实施例对发明作进一步的详细说明。
[0013]以VCM硬件为例进行说明,但该方法的应用不局限于这种硬件结构。
[0014]VCM由一块主控板,16块光纤板组成,每个光纤板上有8路光接收和8路光发射,负责接收换流阀模块上的信息和把控制信息发到换流阀模块上。光线板通过背板总线于主控板进行通信。主控板负责接收上级设备指令、对模块电压进行排序,产生触发命令等。每块板子的时钟都是100MHz。假如不考虑FPGA的资源占用情况,理想的情况下,在光接收板上不需要进行排序,而是直接将数据送给主控板,由主控板统一进行排序。
[0015]因为采用FPGA进行排序,比较和数据交换可以在一个时钟内完成。因此只需要计算比较的次数,就可以得到排序所需要的时间。
[0016]对于一次多路归并,假设为y组,共X个数,则需要比较y次确定一个数。所有数据共需要比较xy次。
[0017]并行归并时将所有数据先分为两两一组同时进行归并,需要2*(2)个时钟,(括号前为组数,括号内为总的数据数)再对第一次归并的结果两两归并,需要2*(2*2)个时钟,以此类推,每次归并的时间是一个等比数列。总共需要4(l+2+...2~n)个时钟,S卩4(x/2-l),n为归并次数。这样128个数总共需要63 X 4个,S卩252个时钟周期。
[0018]但考虑到大量的并行运算会严重耗费主控板上FPGA的逻辑资源,所以实际可采用以下方案。假设有k个光接收板,每个接收板上有i个光接收管,首先在接收板内部对i个数据进行排序。这样得到k组有序数据,每组包含i个数据。将k个接收板两两分成一组总共有k/2组。第一次排序需2 X (2 X i)个时钟周期,第二次归并需要2 X (2 X 2 X i)个时钟周期。因此总共需要4XiX(l-2~x)/(l-2),简单起见,假定板子数量为2的整数次幂。则X为log2(k)。则需要的总的时钟数为4i(k-l)。
[0019]该排序方法的具体实施步骤为。
[0020]1.各个光纤板同时从换流阀模块接收电压信号,并在光纤板内部对本板接收到的8个电压进行排序,因为数据较少,所以可以采用任何排序方法,所需时间不到lus。
[0021]2.各光纤板将排序好的电压信号送给主控板
[0022]3.主控板将收到的16路电压信号分成8组,每组两路,每路8个电压。
[0023]4.对8组电压信号同时进行排序,将8路结果分为4组,每组两路,每路16个电压
[0024]5.4组同时排序,产生4路信号,每路32个电压
[0025]6.将4路分为两组同时排序,每组两路,每路64个电压,产生两路结果
[0026]7.对两路结果进行排序,产生I路结果,含128路电压
[0027]如图1,所有同一层次上的归并都是同时进行的。
[0028]以上排序总过用时16 X 2+32 X 2+64 X 2+128 X 2 = 480个时钟周期,即4.8us。而直接对16路进行归并需要128 X 16 = 2048个时钟周期,S卩约20us,该并行方法所需时间不到原来的四分之一。而冒泡等算法甚至需要上万个时钟周期,即上百us才能完成排序。可以看到该方法大大缩短了排序时间。
【主权项】
1.一种基于FPGA的模块电压并行多路归并排序方法,其特征在于:通过FPGA采集所有子模块上的电压值,将采集的所有电压值分解为多个两路归并,利用FPGA将多个两路归并同时进行排序,所有两路归并排序后的结果再分组为多个两路归并进行排序,重复此步骤直到所有电压值合并为一路有序数据。2.根据权利要求1所述的基于FPGA的模块电压并行多路归并排序方法,其特征在于:排序结果串行输出或被随机读取。
【专利摘要】本发明提供一种基于FPGA的模块电压并行多路归并排序方法,采用分治法的一个非常典型的应用,将已有序的子序列合并,得到完全有序的序列,该方法可以较好的缩短排序时间,相比采用传统的处理器进行串行排序,利用了FPGA的并行特点将其并行化,对原来的多路归并方法做了改进,使排序速度大为提高。
【IPC分类】H02M7/483
【公开号】CN105515420
【申请号】CN201510870931
【发明人】冯武彤, 熊家祚, 李佩泫, 刘争艳
【申请人】中国西电电气股份有限公司
【公开日】2016年4月20日
【申请日】2015年12月1日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1