基于FPGA的卷积实现方法及卷积器技术

技术编号:20867994 阅读:27 留言:0更新日期:2019-04-17 09:38
本申请实施例提供一种基于FPGA的卷积实现方法及卷积器。在本申请实施例中,将待卷积序列滑动输出,对于一个采样周期输出的N个待卷积数,在该采样周期内的每个时钟周期到达时输出M个待卷积数,以与常量缓存模块在该时钟周期滑动输出的M个常量在M个并行通道下相乘后,再将相乘结果进行求和,之后针对每个采样周期,将各采样周期内的每个时钟周期得到的求和结果分别进行累加,进而得到待卷积序列与常量序列的卷积结果。在本申请实施例中,在固定长度的常量序列下,无论待卷积序列的长度为多少,整个卷积过程都只需M个乘法器和M个加法器,减少了卷积计算的乘法器和加法器等资源消耗。

【技术实现步骤摘要】
基于FPGA的卷积实现方法及卷积器
本申请涉及数字信号处理
,尤其涉及一种基于FPGA的卷积实现方法及卷积器。
技术介绍
现场可编程门阵列(Field-ProgrammableGateArray,FPGA)是在可编程阵列逻辑器件(ProgrammableArrayLogic,PAL)、通用阵列逻辑器件(GeneralArrayLogic,GAL)、复杂可编程逻辑器件(ComplexProgrammableLogicDevice,CPLD)等可编程器件的基础上进一步发展的产物。FPGA上各个逻辑模块相互独立处理,依赖各自的电路资源同时工作,且可将任务切片,在同一时刻执行多任务,因此FPGA可对数据进行并行处理,提高数据处理效率。由于FPGA具有并行处理的优势,而被广泛应用于数字信号处理中。在数字信号处理算法中,例如高斯移频键控(GaussFrequencyShiftKeying,GFSK)调制、数字滤波器、小波变换等,经常会用到卷积计算,但是卷积计算过程会大量消耗FPGA的存储空间和乘法器。因此,在FPGA上能够进行消耗资源较少的资源的卷积计算显得尤为重要。
技术实现思路
本申请的多个方面提供一种基于FPGA的卷积实现方法及卷积器,用以减少FPGA上进行卷积计算时的资源消耗。本申请实施例提供一种基于FPGA的卷积器,包括:常量缓存模块、卷积序列排序模块、M个乘法器和累加求和模块;其中,所述卷积序列排序模块,用于接收采样周期为T1的待卷积序列,并根据计算顺序在每个时钟周期输出所述待卷积序列中的M个待卷积数至所述M个乘法器;所述常量缓存模块具有与所述M个乘法器一一对应的M个缓存通道,用于存储常量序列并在每个时钟周期分别向对应的乘法器提供卷积常量;所述M个乘法器,分别用于将每个时钟周期内到达的待卷积数和卷积常量相乘并将相乘结果输出至所述累加求和模块;所述累加求和模块,用于在采样周期T1内,对所述M个乘法器在各个时钟周期输出的相乘结果进行累加,以得到所述待卷积序列与所述常量序列的卷积结果;其中,INT(·)表示取整函数;N为所述常量序列中的常量的个数,T2为所述卷积器的时钟周期;其中,T2=T1/K,K为大于或等于2的整数。本申请实施例还提供一种基于FPGA的卷积实现方法,包括:卷积序列排序模块接收采样周期为T1的待卷积序列,并根据计算顺序,在每个时钟周期输出所述待卷积序列中的M个待卷积数;存储常量序列的具有M个缓存通道的常量缓存模块,在每个时钟周期输出M个卷积常量;将所述M个待卷积数和所述M个常量相乘后的乘积进行求和,得到每个时钟周期的求和结果;将各个采样周期内的每个时钟周期的求和结果分别进行累加,以获得所述待卷积序列与所述常量序列的卷积结果;其中,INT(·)表示取整函数,N为所述常量序列中卷积常量个数,T2为所述FPGA平台的时钟周期;其中,T2=T1/K,K为大于或等于2的整数。在本申请实施例中,将待卷积序列滑动输出,对于一个采样周期输出的N个待卷积数,在该采样周期内的时钟周期到达时输出M个待卷积数,以与常量缓存模块在该时钟周期滑动输出的M个常量在M个并行通道下相乘后,再将相乘结果进行求和,之后将各采样周期内每个时钟周期得到的求和结果分别进行累加,进而得到待卷积序列与常量序列的卷积结果。在本申请实施例中,在固定长度的常量序列下,无论待卷积序列的长度为多少,整个卷积过程都只需M个乘法器和M个加法器,减少了卷积计算的乘法器和加法器等资源消耗。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1a为本申请一实施例提供的一种基于FPGA的卷积器的结构示意图;图1b为本申请一实施例提供的一种累加过程的示意图;图1c为本申请一实施例提供的一种卷积序列排序模块的结构示意图;图2a-图2c为本申请一实施例提供的将待卷积序列写入卷积序列缓存单元的示意图;图3a为本申请另一实施例提供的任一采样周期内待读取的待卷积序列片段的示意图;图3b为本申请另一实施例提供的任一采样周期内卷积序列缓存单元的存储示意图;图4为本申请又一实施例提供的一种基于FPGA的卷积实现方法的流程示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。对于卷积来说,其是两个变量在某范围内相乘后求和的结果。如果卷积的变量是序列x(n)和f(n),则卷积的结果y(n)为:其中,“*”表示卷积。而对于长度为m的序列x(n)和长度为n的序列f(n)的卷积计算,则需要进行m×n次乘法和(m-1)×(n-1)次加法,其中需要m×n个乘法器和(m-1)×(n-1)个加法器,而FPGA上乘法器和加法器的数量有限,无法提供大量的乘法器和加法器来进行卷积计算。针对现有卷积计算过程会大量消耗FPGA的存储空间和乘法器的技术问题,本申请实施例提供一种基于FPGA的卷积实现方法及卷积器,基本思路是:将待卷积序列滑动输出,对于一个采样周期输出的N个待卷积数,在该采样周期内的每个时钟周期到达时输出M个待卷积数,以与常量缓存模块在该时钟周期滑动输出的M个常量在M个并行通道下相乘后,再将相乘结果进行求和,之后将每个时钟周期得到的求和结果进行累加,进而得到待卷积序列与常量序列的卷积结果。在本申请实施例中,在固定长度的常量序列下,无论待卷积序列的长度为多少,整个卷积过程都只需M个乘法器和M个加法器,减少了卷积计算的乘法器和加法器等资源消耗。以下结合附图,详细说明本申请各实施例提供的技术方案。图1a为本申请实施例提供的一种基于FPGA的卷积器的结构示意图。如图1a所示,卷积器包括:常量缓存模块101、卷积序列排序模块102、M个乘法器103和累加求和模块104。在本实施例中,卷积序列排序模块102,用于接收采样周期为T1的待卷积序列Xi,并根据计算顺序在每个时钟周期到达时,输出待卷积序列Xi中的M个待卷积数至M个乘法器103,其中,每个乘法器103接收一个待卷积数。其中,卷积序列排序模块102可以缓存与卷积常量个数相同的N个待卷积数。在本实施例中,卷积序列排序模块102接收周期为T1的待卷积序列,即每隔T1时间该模块收到一个待卷积数。其中,计算顺序为卷积公式所要求的待卷积数参与卷积计算的顺序。当常量缓存模块101对常量的输出顺序确定时,计算顺序决定了卷积序列模块输出待卷积数的顺序。假设常量序列为f=[f0f1f2f3],待卷积序列为X=[X0X1X2],则卷积结果为Y=[Y0Y1Y2Y3Y4Y5],其中:Y0=X0f0;Y1=X0f1+X1f0;Y2=X0f2+X1f1+X2f0;Y3=X0f3+X1f2+X2f1;Y4=X1f3+X2f2;Y5=X2f3;在本申请实施例中,将计算出卷积结果Y的顺序定义为计算顺序。针对一个采样周期,假设常量缓存序列模块101设置的常量的输出顺序为从高位到低位,即fi的下标i以从N-1本文档来自技高网...

【技术保护点】
1.一种基于FPGA的卷积器,其特征在于,包括:常量缓存模块、卷积序列排序模块、M个乘法器和累加求和模块;其中,所述卷积序列排序模块,用于接收采样周期为T1的待卷积序列,并根据计算顺序,在每个时钟周期输出所述待卷积序列中的M个待卷积数至所述M个乘法器;所述常量缓存模块具有与所述M个乘法器一一对应的M个缓存通道,用于存储常量序列并在每个时钟周期分别向对应的乘法器提供卷积常量;所述M个乘法器,分别用于将在每个时钟周期到达其上的待卷积数和卷积常量相乘并将相乘结果输出至所述累加求和模块;所述累加求和模块,用于在采样周期T1内,对所述M个乘法器在各个时钟周期输出的相乘结果进行累加,以得到所述待卷积序列与所述常量序列的卷积结果;其中,

【技术特征摘要】
1.一种基于FPGA的卷积器,其特征在于,包括:常量缓存模块、卷积序列排序模块、M个乘法器和累加求和模块;其中,所述卷积序列排序模块,用于接收采样周期为T1的待卷积序列,并根据计算顺序,在每个时钟周期输出所述待卷积序列中的M个待卷积数至所述M个乘法器;所述常量缓存模块具有与所述M个乘法器一一对应的M个缓存通道,用于存储常量序列并在每个时钟周期分别向对应的乘法器提供卷积常量;所述M个乘法器,分别用于将在每个时钟周期到达其上的待卷积数和卷积常量相乘并将相乘结果输出至所述累加求和模块;所述累加求和模块,用于在采样周期T1内,对所述M个乘法器在各个时钟周期输出的相乘结果进行累加,以得到所述待卷积序列与所述常量序列的卷积结果;其中,INT(·)表示取整函数;N为所述常量序列中的卷积常量的个数,T2为所述卷积器的时钟周期;其中,T2=T1/K,K为大于或等于2的整数。2.根据权利要求1所述的卷积器,其特征在于,所述卷积序列排序模块,包括:写控制单元、读控制单元和具有M个缓存通道的卷积序列缓存单元;所述写控制单元,用于按照设定的通道写入顺序,将各采样周期采集到的待卷积数依次写入所述卷积序列缓存单元中的相应缓存通道;所述读控制单元,用于按照所述计算顺序,在每个时钟周期从所述M个缓存通道中分别读取一个卷积数并对应输出至所述M个乘法器,直至将所述待卷积序列中的待卷积数全部输出。3.根据权利要求2所述的卷积器,其特征在于,所述写控制单元在将各周期采集到的所述待卷积数依次写入所述卷积序列缓存单元中的相应缓存通道时,具体用于:若所述待卷积序列的长度小于或等于N,则以所述卷积序列缓存单元中M个缓存通道的地址从小到大的顺序,将各采样周期采集到的待卷积数依次写入所述卷积序列缓存单元中的相应缓存通道;若所述待卷积序列的长度大于N,则以所述卷积序列缓存单元中M个缓存通道的地址从小到大的顺序,将前N个采样周期采集到的待卷积数依次写入所述卷积序列缓存单元中的相应缓存通道;并按照所述卷积序列缓存单元中M个缓存通道的地址从小到大的顺序,将从第N个采样周期之后采集到的待卷积数依次写入所述卷积序列缓存单元缓存的所述前N个采样周期采集到的待卷积数对应的位置。4.根据权利要求2所述的卷积器,其特征在于,所述读控制单元在按照所述计算顺序,在每个时钟周期从所述M个缓存通道中分别读取一个待卷积数时,具体用于:针对任一采样周期内的参与卷积计算的任一时钟周期,按照所述计算顺序,确定在所述采样周期待读取的第一个待卷积数所在通道的编号和所在通道内的行号;根据在所述采样周期待读取的第一个待卷积数所在通道的编号和其所在通道内的行号以及所述时钟周期对应的卷积次数,确定在所述时钟周期内待读取的M个待卷积数各自所在通道的编号和所在通道内的行号;根据在所述时钟周期内待读取的M个待卷积数各自所在通道的编号和所在通道内的行号,按序从相应缓存通道中读取所述M个待卷积数。5.根据权利要求4所述的卷积器,其特征在于,所述读控制单元在确定在所述时钟周期内待读取的M个待卷积数各自所在通道的编号和所在通道内的行号时,具体用于:将在所述采样周期待读取的第一个待卷积数所在通道内的行号加上所述时钟周期对应的卷积次数,作为在所述时钟周期待输出的第一个待卷积数的行号,并将在所述采样周期待读取的第一个待卷积数所在通道的编号作为在所述时钟周期待输出的第一个待卷积数所在通道的编号;若在所述时钟周期待输出的其它待卷积数的所在通道的编号小于在所述采样周期待读取的第一个待卷积数所在通道的编号,则将在所述时钟周期待输出的第一个待卷积数的行号加1作为所述其它待卷积数的行号。6.根据权利要求2-5任一项所述的卷积器,其特征在于,所述常量缓存模块由M个独立的块随机存储器BRAM组成;所述卷积序列缓存单元由M个独立的BRAM组成。7.根据权利要求1-5任一项所述的卷积器,其特征在于,所述累加求和模块包括:M个加法器;所述M个加法器中的M-1个加法器用于在每个时钟周期将所述M个乘法器输出的相乘...

【专利技术属性】
技术研发人员:何峰
申请(专利权)人:锐捷网络股份有限公司
类型:发明
国别省市:福建,35

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

1