基于单FPGA的并行矩阵乘法器及其实现方法技术

技术编号:7758798 阅读:618 留言:0更新日期:2012-09-14 00:17
本发明专利技术提供基于单FPGA的并行矩阵乘法器,解决现有矩阵乘法器控制复杂且不能对实时数据进行流水式处理的问题;并提供该矩阵乘法器的实现方法。该矩阵乘法器,包括计算单元PE、数据输入接口、参数配置模块、寄存器组、输出模块、数据输出接口;该矩阵乘法器的实现方法,包括以下步骤:(1)在参数配置模块中输入N、M、R三个参数;(2)输入矩阵A和矩阵B;(3)设置MODE_CLASS参数控制矩阵C的输出模式;(4)将矩阵A和矩阵B输入到PE阵列中进行乘加计算;(5)寄存器组接收计算结果,并按照MODE_CLASS参数将该计算结果输出;(6)输出模块将计算结果并分解成矩阵C;(7)输出矩阵C。本发明专利技术通过修改参数生成对应的阵列结构,实现数据的并行化流水处理。?

【技术实现步骤摘要】

本专利技术涉及一种矩阵乘法器及其实现方法,具体地,是涉及一种基于单FPGA的并行矩阵乘法器及其实现方法
技术介绍
矩阵乘法运算作为现代数字信号处理过程中的一种基本运算而被广泛运用于信号处理、图像处理、以及自动控制等领域。以前的矩阵运算大多米用数字信号处理器(Digital Signal Processor, DSP)来实现。该类处理方式具有技术较为成熟、实现工具完善、编程简单的优点,但由于单核DSP只能实现数据的串行处理,其处理时间,处理主频成为了该类型处理方式最大的缺点。并行多核DSP处理能有效地解决上述问题,但由于多核DSP技术构架较为复杂,当矩阵维数比较大的时候,该类处理方式不适合使用。近年来FPGA技术取得了飞速发展,已经从最初只能面向纯逻辑替代的应用转变为能够面向复杂的计算密集型应用。现行的FPGA器件随着工艺的提高,其处理主频也越来越高,且能实现的精度也越来越能够满足复杂的计算密集型运算。考虑到FPGA器件的设计原理和构架,基于FPGA的设计可以通过生成多个逻辑并行计算模块,从而简单有效地实现数据的并行处理,降低主频的处理时间。然而,目前在基于FPGA实现并行矩阵乘法的设计方面,大部分都只能实现对定制的特定矩阵类型进行特定的处理,面对不同阶数的矩阵乘法运算则需要重新设计FPGA结构才能实现。基于这样的基础,有人设计出了另外一种方式,即通过固定并行矩阵运算的运算阵列结构。通过改变数据预处理模块的设计以适应不同阶数的矩阵的运算,这样做的优点是能够实现对任意矩阵的乘法运算。然而,由于引入了数据预处理模块,人为延长了矩阵乘法的处理时间。此外,由于数据预处理模块输出的矩阵需要匹配到固定的阵列中进行计算,故数据预处理模块需要根据不同的输入矩阵的维数编写不同的设计规范,将输入的矩阵分割成适合矩阵乘法阵列的各个小矩阵,并串行地计算每个子矩阵,计算后再将各个子矩阵重新组合,最后才输出组合后的矩阵。该类处理方式控制复杂且不能对实时数据进行流水式的处理,当输入矩阵维数变化的时候,需要重新设计数据预处理模块的程序,相当麻烦,且不易实现。
技术实现思路
本专利技术的目的在于提供一种基于单FPGA的并行矩阵乘法器,解决现有矩阵乘法器控制复杂且不能对实时数据进行流水式处理的问题;并提供该矩阵乘法器的实现方法。为了实现上述目的,本专利技术采用的技术方案如下 基于单FPGA的并行矩阵乘法器,包括 NXR个计算单元PE,用于对输入的数据进行乘加计算操作;数据输入接口,用于并行输入矩阵A和矩阵B,其中,矩阵A为N行M列,矩阵B为M行R列; 参数配置模块,用于输入N、M、R、MODE_CLASS四个参数,根据输入的N、R两个参数控制NXR个计算单元PE生成N行R列的PE阵列,并根据输入的参数M控制矩阵A和矩阵B输入到该PE阵列中进行运算,M控制数据的输入时钟;MODE_CLASS则控制寄存器组中的数据输出到输出模块的输出模式; 寄存器组,用于接收PE阵列的计算结果,并根据输入的MODE_CLASS参数将该结果输出到输出模块中; 输出模块,用于接收寄存器组中的数据并将该数据分解成矩阵C,该矩阵C为N行R列,且 C=AXB ; 数据输出接口,用于输出矩阵C。进一步地,所述的计算单元PE由FPGA内部的DSP48单元构成。再进一步地,所述寄存器组由RegI和RegQ两个寄存器组成。基于单FPGA的并行矩阵乘法器的实现方法,包括以下步骤 (1)在参数配置模块中输入N、M、R三个参数,NXR个计算单元PE根据输入的N、R生成N行R列的PE阵列; (2)通过数据输入接口分别输入矩阵A和矩阵B,其中,矩阵A为N行M列,而矩阵B为M行R列; (3)在参数配置模块中设置M0DE_CLASS参数,用以控制矩阵C的输出模式; (4)矩阵A和矩阵B通过参数配置模块输入到PE阵列中进行乘加计算,即AXB,并经过M个时钟得到计算结果; (5)寄存器组接收计算结果,并按照设置的输出模式将该计算结果输出到输出模块; (6)输出模块将输出的计算结果分解成N行R列的矩阵C并按照输出模式控制矩阵C的输出; (7)数据输出接口输出矩阵C。进一步地,在步骤(3)中,所述的M0DE_CLASS参数取N、R两个值,其中,M0DE_CLASS=N时,矩阵C按列的方式输出,而M0DE_CLASS=R时,则矩阵C按行的方式输出。为提高运算效率,在步骤(4)中,所述PE阵列采用并行运算的方式进行计算,并且各个计算单元PE之间没有数据通信。具体地,步骤(4)包括以下步骤 (4a)利用参数配置模块中的A_W0RDSIZE和B_W0RDSIZE两个参数,通过A_W0RDSIZE确定矩阵A的位宽,通过B_W0RDSIZE确定矩阵B的位宽; (4b)将矩阵A的I、Q两路均并置成位宽为A_W0RDSIZEXN的两路信号,并按列的方式将矩阵A输入到PE阵列中,同时将矩阵B的I、Q两路均并置成位宽为B_W0RDSIZEXR的两路信号,并按行的方式将矩阵B输入到PE阵列中; (4c) PE阵列对输入的矩阵A和矩阵B进行乘加计算。 再进一步地,所述寄存器组将计算结果串行输出到输出模块,并且输出模块按照MSB和LSB两个参数的设置对该计算结果进行分配,使其分解成矩阵C,其中,MSB为矩阵C的最高有效位,而LSB为矩阵C的最低有效位。与现有技术相比,本专利技术的有益效果是 (I)本专利技术通过对N、M、R三个参数的修改,能快速生成适合不同阶数的矩阵乘法的阵列,控制方式灵活,操作简便,流程简洁,不需要对输入的矩阵进行特定的处理,省去了需要根据不同输入的矩阵重新设计预处理模块的步骤,大大缩短了矩阵乘法器对输入矩阵的处理时间。(2 )本专利技术通过寄存器组接收计算单元PE的计算结果,可以使计算单元PE快速地处理当前的数据,并接收下一次的数据,对接收的数据进行乘加计算操作,寄存器组的设计缩短了计算单元PE单个计算流程的时间,从而优化了计算单元PE的性能。(3)本专利技术中的PE阵列采用并行运算的方式对输入的矩阵进行计算,并且各个计算单元PE之间没有数据通信,从而显著地提高了整体运算的效率。(4)本专利技术通过参数配置模块中的M0DE_CLASS参数控制矩阵C按行或按列的模式输出,方便了矩阵C的输出,其输出方式相当灵活。(5)本专利技术对于满足一定条件的输入矩阵,只需设置好相应的参数,便能实现对实时数据的并行化流水处理。(6)本专利技术适用性广泛,可移植性强,具有广泛的应用前景。附图说明图I为本专利技术矩阵乘法器的系统框图。图2为本专利技术矩阵乘法器中的PE阵列示意图。图3为本专利技术中计算单元PE的内部系统框图。图4为本专利技术矩阵乘法器的输入顺序示意图。具体实施例方式下面结合附图和实施例对本专利技术作进一步说明,本专利技术的实施方式包括但不限于下列实施例。实施例如图I所示,基于单FPGA的并行矩阵乘法器,包括计算单元PE、数据输入接口、参数配置模块、寄存器组、输出模块以及数据输出接口。所述计算单元PE由FPGA内部的DSP48单元构成,用于对输入的数据进行乘加计算操作,且该计算单元PE的数量为N X R个。所述数据接入口用于并行输入矩阵A和矩阵B,其中,矩阵A为N行M列,矩阵B为M行R列。所述参数配置模块用于输入N、M、R本文档来自技高网
...

【技术保护点】

【技术特征摘要】

【专利技术属性】
技术研发人员:赵强何春莫明威李玉柏
申请(专利权)人:电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1