基于FPGA实现跨时钟域的时域卷积计算装置和方法与流程

文档序号:28807113发布日期:2022-02-09 02:46阅读:144来源:国知局
基于FPGA实现跨时钟域的时域卷积计算装置和方法与流程
基于fpga实现跨时钟域的时域卷积计算装置和方法
技术领域
1.本发明属于可编程器件应用技术领域,具体涉及一种基于fpga实现跨时钟域的时域卷积计算装置和方法。


背景技术:

2.卷积在工程和数学上被广泛地应用。统计学中,加权的滑动平均是一种卷积。概率论中,两个统计独立变量x与y的和的概率密度函数是x与y的概率密度函数的卷积。电子工程与信号处理中,任一个线性系统的输出都可以通过将输入信号与系统函数(系统的冲激响应)做卷积获得。
3.卷积运算过程可看作是乘加运算。若卷积系数较长,fpga在时域上做乘加运算时就会占用较多的乘法器、加法器资源,从而会影响到整个系统的资源分配与优化。fpga做时域卷积计算很可能遇到跨时钟域问题,即输入信号时钟域与信号处理(卷积计算)时钟域不匹配,此时,需要将二者时钟域先统一到一个时钟域,再实现卷积计算。
4.目前,在fpga上实现卷积计算的主流方法是时域卷积计算,其具体是先对信号与卷积系数做fft运算,然后在频域做乘法运算,最后通过ittf计算回到时域。这种方法的好处在于不受时钟域影响,且节约乘法器资源。但是,该方法在实现过程中需要在频域和时域之间来回变换,这就导致了该方法需要消耗大量的时间来做时频域的变换,最终的结果就是,该方法面临高延时和低实时性的问题。尤其在对运算实时性要求极高的应用场合,采用频域计算法实现卷积运算难以满足实际使用需要。
5.另外,fpga时域卷积计算存在占用乘法器、加法器资源较多等问题


技术实现要素:

6.为了解决现有在fpga上实现卷积计算的方法存在高延时和低实时性的问题,本发明提供了一种基于fpga实现跨时钟域的时域卷积计算装置。本发明能够满足实时性高和输出延迟少的应用需求,还具备资源消耗少的特点。
7.本发明通过下述技术方案实现:
8.基于fpga实现跨时钟域的时域卷积计算装置,包括基于fpga实现的ram_coef、fifo_coef和fifo_conv;
9.ram_coef为预先存放卷积系数的ram;
10.fifo_coef为存放卷积系数的缓存fifo,共(m-1)个;
11.fifo_conv为存放乘加运算的中间结果的缓存fifo,共m个;
12.ram_coef和(m-1)个fifo_coef构成按信号时序依次传递的流水线结构,且ram_coef和(m-1)个fifo_coef分别与m路乘法器一一对应,用于分别为m路乘法器的时序信号提供相对应的卷积系数;
13.m路加法器与m路乘法器一一对应,m路乘法器及其对应的加法器并行工作,在下一个信号到来前,会产生(m-1)个乘加运算的中间结果,采用m个fifo_conv来分别存放m路信
号乘加运算的中间结果。
14.优选的,本发明的装置还包括输入信号接口sig_din;
15.所述输入信号接口sig_din用于接收时序信号并将其分配到对应乘法器上。
16.优选的,本发明当第x个信号输入时且1≤x≤m,则将第x个信号输入到第x路乘法器中进行运算;
17.当第x路信号输入时且m<x≤2m时,则刚好完成第(x-m)个信号的所有乘法运算,此时第(x-m)路乘法器刚好处于空闲状态,可用于计算第x个信号的乘法;
18.如此循环往复,实现m个乘法器的复用。
19.优选的,本发明的第x路乘法器输出的乘法运算结果加上第(x-1)路fifo_conv存储的乘加运算的中间结果,得到第x路加法器的乘加运算的中间结果,将第x路加法器的乘加运算的中间结果的第一个信号作为卷积计算结果输出,其余信号存入第x路fifo_conv(x),其中,1≤x≤m。
20.优选的,本发明当第x个信号输入时且1≤x≤m,则将第x个信号利用第x路乘法器和第x路加法器进行乘加运算,得到第x路信号的乘加运算结果,将第x路信号的乘加运算结果的第一个信号作为卷积计算结果输出,其余信号存入第x路fifo_conv(x);
21.当第x路信号输入时且m<x≤2m时,则刚好完成第(x-m)个信号的乘加运算,此时第(x-m)路fifo_conv(x)中的数据被读出并使用,可用于存放第x个信号的乘加运算结果;
22.如此循环往复,实现m个加法器和fifo_conv的复用。
23.优选的,本发明的(m-1)个fifo_coef的长度大于n;
24.n为信号处理时钟频率与输入信号时钟频率的比值。
25.优选的,本发明的方法包括:
26.当有信号输入时,依次从ram_coef中循环读出卷积系数,并将读出的卷积系数与第1、m+1、2m+1
……
个信号相乘,得到中间结果mult1,同时将系数写入fifo_coef(1)中;
27.经过n个时钟后,第2、m+2、2m+2
……
个信号输入,此时开始从fifo_coef(1)中读出系数,将读出的系数与第2、m+2、2m+2
……
个信号相乘,得到中间结果mult2,同时将系数写入fifo_coef(2)中;
28.依次向后递推,直到从最后一级fifo_coef(m-1)中读出系数,将读出的系数与第m、2m、3m
……
个信号相乘,得到中间结果multm。
29.优选的,本发明的方法还包括:
30.第1个信号的乘法结果加上第m路fifo_conv(m)的输出,得到第1个信号的乘加运算的中间结果conv_tmp(1),将conv_tmp(1)中的第一个信号作为卷积计算结果输出,其余信号存入第1路fifo_conv(1)中;
31.第2个信号的乘法结果加上第1路fifo_conv(1)的输出,得到第2个信号的乘加运算的中间结果conv_tmp(2),将conv_tmp(2)中的第一个信号作为卷积计算结果输出,其余信号存入第2路fifo_conv(2)中;
32.依次向后递推,第m个信号的乘法结果加上第(m-1)路fifo_conv(1)的输出,得到第m个信号的乘加运算的中间结果conv_tmp(m),将conv_tmp(m)中的第一个信号作为卷积计算结果输出,其余信号存入第m路fifo_conv(m)中;
33.第(m+1)个信号输入时,此时已经过了m*n个时钟,正好完成了第1个信号的乘加运
算,fifo_conv(1)中的数据被读出并使用,此时该信号的加法计算复用第1个信号使用的加法器,中间结果存放在第1路fifo_conv(1)中;
34.如此循环往复,实现m个加法器和m个fifo_conv的复用。
35.第三方面,本发明提出了一种实时数据处理系统,采用本发明所述的基于fpga实现跨时钟域的时域卷积计算装置对时序信号进行卷积计算。
36.第四方面,本发明提出了一种雷达数据处理系统,采用本发明所述的基于fpga实现跨时钟域的时域卷积计算装置对雷达信号进行卷积计算。
37.本发明具有如下的优点和有益效果:
38.1、本发明相较于频域实现卷积计算,可减小延时,提高实时性。
39.2、本发明相较于时域实现卷积计算,可减小乘法器、加法器等的资源消耗。
40.3、本发明可在处理实时性要求高和资源有限的应用场合广泛推广使用,特别适用于雷达系统数据处理等场景。
附图说明
41.此处所说明的附图用来提供对本发明实施例的进一步理解,构成本技术的一部分,并不构成对本发明实施例的限定。在附图中:
42.图1为本发明的装置原理框图。
43.图2为本发明的输入信号与卷积系数及时钟关系时序图。
具体实施方式
44.为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明作进一步的详细说明,本发明的示意性实施方式及其说明仅用于解释本发明,并不作为对本发明的限定。
45.实施例
46.本实施例提出了一种基于fpga实现跨时钟域的时域卷积计算装置。
47.卷积计算原理为:
[0048][0049]
式中,h[n]为卷积系数,x[n]为待卷积信号。从公式可看出:
[0050]
1)卷积计算过程主要是乘法和加法计算。
[0051]
2)每个待卷积信号都会和所有系数进行一次乘法计算。
[0052]
3)当前输出值与历史输入值有关。
[0053]
为了实现乘法器、加法器最多次数的复用,就必须以最快速度完成一个信号的乘法、加法运算,等乘法器、加法器完成一个信号的计算后,就可以用来完成其它信号的计算。同时为了尽可能减少中间计算结果的积累,本实施例采用“流水线”方式来设计整个计算过程,让乘法器、加法器的中间计算结果一直保持“最优状态”(所谓“最优状态”即当前输入信号只需要完成一次乘法计算以及和当前最新结果的加法计算即可得到当前卷积结果,不用再计算历史输入乘加计算结果)。
[0054]
本实施例中,如果信号处理(卷积计算)时钟频率比输入信号的时钟频率快n(n为正整数)倍,卷积系数个数是n的m(m为正整数)倍,系数不够则在尾部补零。由于信号处理时钟比输入信号时钟快n倍,输入1个信号即可读出n个系数与之做乘法、加法计算,可利用时钟差对乘法器、加法器复用,从而节约n倍的乘法器、加法器资源。
[0055]
如图1所示,本实施例的装置包括基于fpga实现的ram_coef、fifo_coef和fifo_conv;
[0056]
其中,ram_coef为存放卷积系数的ram。
[0057]
fifo_coef为存放卷积系数的缓存fifo,共(m-1)个,即图1中所示的fifo_coef(1)、fifo_coef(2)、

、fifo_coef(m-1)。
[0058]
fifo_conv为存放乘加计算结果的缓存fifo,共m个,即图1中所示的fifo_conv(1)、fifo_coef(2)、

、fifo_coef(m)。
[0059]
图1中,sig_din为输入信号接口,用于接收时序信号;1、2、
……
m、m+1、m+2
……
为输入信号序号;mult1到multm为乘法计算结果;conv_tmp为中间乘加计算结果;fifo_conv为存放乘加计算结果的缓存fifo。
[0060]
ram_coef和(m-1)个fifo_coef构成按信号时序依次传递的结构(流水线结构),且ram_coef和(m-1)个fifo_coef分别与m路乘法器一一对应,用于分别为m路乘法器的时序信号提供相对应的卷积系数;
[0061]
m路时序信号与m路乘法器一一对应,m路乘法器及其对应的加法器并行工作,在下一个信号到来前,会产生(m-1)个中间结果,采用m个fifo_conv来分别存放m路信号乘加运算的中间结果。
[0062]
卷积系数存放在1个ram中,用(m-1)个fifo用来缓存系数,可同时进行m个信号的乘法。当第x(m<x≤2m)个信号输入时,刚好完成第(x-m)个信号的所有乘法运算,此时第(x-m)个乘法器刚好处于空闲状态,可用于计算第x个信号的乘法。如此循环往复,既实现了卷积计算的连续性,又最大限度地提高了乘法器的复用次数。
[0063]
如图2所示,1、2、
……
m、m+1、m+2
……
为输入信号序号,每个信号需要进行m*n次乘法和加法计算,从图2中可看出,当第m+1个信号输入时,正好经过m*n个时钟,第1个信号的乘加运算刚好结束。此时,第1个信号使用的乘法器和加法器处于空闲状态,正好可以被第m+1个信号复用。依次类推,可实现m个乘法器和加法器的复用,节约n倍乘法器、加法器资源。
[0064]
本实施例基于图1所示的装置架构进行卷积计算,具体过程包括:
[0065]
当信号到来之前,先将卷积系数存入ram_coef中,定义(m-1)个长度大于n的fifo_coef来缓存卷积系数。
[0066]
当有信号输入时,将依次从ram_coef中循环读出预先存储在ram_coef中的卷积系数,将读出的系数与第1、m+1、2m+1
……
个信号相乘,得到中间结果mult1,同时将系数写入fifo_coef(1)中。
[0067]
经过n个时钟后,第2、m+2、2m+2
……
个信号输入,此时开始从fifo_coef(1)中读出系数,将读出的系数与第2、m+2、2m+2
……
个信号相乘,得到中间结果mult2,同时将系数写入fifo_coef(2)中。
[0068]
依次向后递推,直到从最后一级fifo_coef(m-1)中读出系数,将读出的系数与第m、2m、3m
……
个信号相乘,得到中间结果multm。
[0069]
在卷积计算过程中,当前信号的输出结果为:当前信号的乘法结果加上前n_coef-1个信号的乘法结果(n_coef为卷积系数个数)。由于信号处理时钟比信号输入时钟快,同时有m路乘法器在工作,在下一个信号到来前,会产生(m-1)个中间结果,因此需要定义m个fifo,用来存放乘加运算的中间结果。
[0070]
第x个信号的乘法结果multx加上第(x-1)个信号的乘加结果,得到中间结果conv_tmp(x),将conv_tmp(x)中的第一个信号作为卷积计算结果输出,其余信号存入fifo_conv(x)中。
[0071]
具体为:
[0072]
当x=1时,即第1个信号的乘法结果mult1加上fifo_conv(m)的输出(全零),得到中间结果conv_tmp(1),将conv_tmp(1)中的第一个信号作为卷积计算结果输出,其余信号存入fifo_conv(1)中。
[0073]
当x=2时,第2个信号的乘法结果mult2加上第1个信号的乘加结果(即fifo_conv(1)的输出)得到中间结果conv_tmp(2),将conv_tmp(2)中的第一个信号作为卷积计算结果输出,其余信号写入fifo_conv(2)中;
[0074]
依次向后递推,当x=m时,第m个信号的乘法结果multm加上第(m-1)个信号的乘加结果(即fifo_conv(m-1)的输出)得到中间结果conv_tmp(m),将conv_tmp(m)中的第一个信号作为卷积计算结果输出,其余信号写入fifo_conv(m)中。
[0075]
当x=m+1时,此时已经过了m*n个时钟,正好完成了第1个信号的乘加运算,fifo_conv(1)中的数据(第1个信号的中间结果)也基本被读出并使用,此时该信号的加法计算可复用第1个信号使用的加法器,且结果也可存放在fifo_conv(1)中。如此循环往复,既实现了加法器的复用,也实现了fifo的复用,极大提高了fpga内部资源的利用效率。
[0076]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1