CN114579080A - 一种基于fpga的多点数互相关运算的加速实现方法 - Google Patents
一种基于fpga的多点数互相关运算的加速实现方法 Download PDFInfo
- Publication number
- CN114579080A CN114579080A CN202210225237.4A CN202210225237A CN114579080A CN 114579080 A CN114579080 A CN 114579080A CN 202210225237 A CN202210225237 A CN 202210225237A CN 114579080 A CN114579080 A CN 114579080A
- Authority
- CN
- China
- Prior art keywords
- ram
- calculation
- cross
- fpga
- correlation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/544—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
- G06F7/5443—Sum of products
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Discrete Mathematics (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于FPGA(现场可编程门阵列)的多点数互相关运算的加速实现方法,属于信号处理技术领域。本发明使用FPGA进行硬件加速,缩短互相关计算的计算时间;根据AD芯片(模数转换芯片)采集得到的两组最终数据,在FPGA器件内完成FFT(快速傅里叶变换)、在频域取窗、IFFT(逆快速傅里叶变换),再进行互相关计算的过程,最主要的时间延迟来自于最后的互相关计算阶段,整个处理过程的时钟周期数由选取的点数、计算过程中数据的精度、可使用的逻辑资源数量来决定;本发明在FPGA内部实现了多点数互相关运算过程,大大缩短了计算时间,且保持了较高精度的计算结果。
Description
技术领域
本发明属于信号处理技术领域,具体设计一种基于FPGA的多点数互相关运算的加速实现方法。
背景技术
互相关算法在下位机中很容易实现,但随着点数增多,计算效率大大降低。虽然在频域上做共轭卷积可以代替时域上的互相关计算,在点数较多时也能提高计算速度,但在涉及到频域取窗等问题时需要多次使用FFT与IFFT。在下位机上实现时,每一次FFT与IFFT都伴随着一定精度的损失,累加后可能会影响最终的结果,因此,寻找一种精度高且计算速度快的方法十分重要。
现有技术中,CN108089839A公开了一种基于FPGA实现互相关运算的方法,其有以下两个主要特征:1、利用FPGA硬件资源丰富,易于实现并行计算的特点,采用硬件电路实现两路信号的互相关运算;2、该方法比传统的从FPGA的RAM地址取出单一数据进行乘累加运算具有更高的速度和效率,可以充分利用FPGA并行运算的特点,降低运算时间。但依据其所举实例,上述方法效率依然较为低下。为此,急需一种能够缩短运算周期的方法,提高算法的性能。CN112597432A公开了基于FFT算法的复序列互相关在FPGA上的加速实现方法及系统,将两组数组在时域上的互相关运算等效于其对应的频谱在频域上的共轭相乘,大大降低了计算量。但是,在硬件上每做一次FFT或IFFT,不可避免的导致计算精度的下降,导致计算结果有较大的偏差。
发明内容
为了弥补现有技术中的不足之处,本发明提出了一种基于FPGA的多点数互相关运算的加速实现方法,该方法能在保证计算结果较高精度的情况下,实现快速的进行互相关计算过程。
本发明采用的技术方案如下:
一种基于FPGA的多点数互相关运算的加速实现方法,步骤如下:
(1).数据存储:将AD芯片采集得到的两组一定间隔的数据存储在双端口RAM0内;
(2).FFT运算:同时读取存储在双端口RAM0内的两组数据,并使用FFT IP核进行FFT的计算过程,将计算得到的结果存储在双端口RAM1内;
(3)频域取窗:同时读取存储在双端口RAM1内的数据,根据实际的需求对频域进行取窗,完成滤波的过程;
(4)IFFT运算:使用FFT IP核对取窗滤波后的数据进行IFFT的计算过程,将计算得到的结果存储在一组单端口分布式RAM内,记为RAM[0][0]—RAM[0][m-1]与RAM[1][0]—RAM[1][m-1],m为小于N的2的整数次幂,N为xxx;
(5)互相关运算:对保存在2m个RAM内的元素进行扫描,并将乘积结果按一定方式累加进双端口RAM[2][0]-RAM[2][2m-1]中,具体扫描步骤如下:
a.RAM[1][0]—RAM[1][m-1]的输出地址置0;
b.RAM[0][0]—RAM[0][m-1]的输出地址均从0开始每个时钟周期加1;
c.对两组RAM中输出的元素同时进行交叉相乘,得到m2个乘积结果,同时与RAM[2]的对应位置的元素进行累加;
d.到RAM[0][0]-RAM[0][m-1]的地址为N/m-1后,地址全部置0;RAM[1][0]—RAM[1][m-1]的地址均加1;
e.重复步骤b-d,直到两组RAM的地址均为N/m-1后,完成扫描步骤;
(6)寻找实部最大值:对保存在RAM[2][0]-RAM[2][2m-1]中的元素进行比较,找到其中最大值的下标,得到一次计算结果;
重复步骤(3)-(6),得到所有取窗情况下的计算结果。
优选的,步骤(1)中两组数据长度相等且为2的整数次幂。
现有的信号处理技术中,多点数互相关计算难以在下位机上同时实现快速与高精度的目标,本发明提出的一种解决方案,使用FPGA进行硬件加速,缩短互相关计算的计算时间,具有通用性强、效率高、计算速度可调的特点,可广泛应用于需要进行多点数互相关计算的场合。
本发明与现有技术相比较,具有如下特点:
1.在FPGA内部实现了多点数互相关算法的计算过程,大大缩短了计算时间,且保持了较高精度的计算结果。
2.采用了使用分布式RAM来代替一个单独的RAM进行数据存储的方法,根据可使用的乘法资源数量灵活控制分布式RAM的数量,提升计算效率。其具有灵活性、结构简单的特点,可广泛应用于需要多点数数组相乘的场合。
附图说明
图1为本发明实施例示出的一种基于FPGA的多点数互相关运算的加速实现方法的流程图;
图2为本发明实施例示出的FFT运算步骤示意图。
图3为本发明实施例示出的FPGA内部结构框图。
具体实施方式
现结合实例、附图对本发明作进一步说明:
本发明根据AD芯片(模数转换芯片)采集得到的两组最终数据,在FPGA器件内完成FFT(快速傅里叶变换)、在频域取窗、IFFT(逆快速傅里叶变换),再进行互相关计算的过程,最主要的时间延迟来自于最后的互相关计算阶段,整个处理过程的时钟周期数由选取的点数、计算过程中数据的精度、可使用的逻辑资源数量来决定。
假设a(n)与b(n)为采集到的两组AD数据,存储在RAM0内,长度均为8192。
如图1所示,加速实现多点数互相关运算的步骤如下:
FFT运算步骤:对两组数分别进行FFT运算,得到的两组数记为A(n)与B(n)。假设取窗后保留数据:
A[1],A[2],A[3],A[4],A[5],A[8187],A[8188],A[8189],A[8190],A[8191]
与B[1],B[2],B[3],B[4],A[5],B[8187],B[8188],B[8189],B[8190],B[8191],其余均置0。
IFFT运算步骤:对取窗后的两组数进行IFFT运算,得到的两组数记为c(n)与d(n),长度均为8192,计算结果存储在一组单端口分布式RAM内,记为RAM[0][0]—RAM[0][15]与RAM[1][0]—RAM[1][15]。
互相关运算步骤:对保存在32个RAM内的元素进行扫描,并将乘积结果按一定方式累加进双端口RAM[2][0]-RAM[2][31]中,具体扫描步骤如下:
a.RAM[1][0]—RAM[1][15]的输出地址置0。
b.RAM[0][0]—RAM[0][15]的输出地址均从0开始每个时钟周期加1。
c.对两组RAM中输出的元素同时进行交叉相乘,得到256个乘积结果,同时与RAM[2][0]-RAM[2][31]的对应位置的元素进行累加。
d.RAM[0][0]-RAM[0][15]的地址为255后,地址全部置0,RAM[1][0]—RAM[1][15]的地址均加1。
e.重复步骤b-d,直到两组RAM的地址均为255后,完成扫描步骤。
对保存在双端口RAM[2][0]-RAM[2][31]中元素进行比较,找到其中最大值的下标,得到一次计算结果。
与传统的互相关计算进行对比:在传统的计算方式下,在最耗费时钟周期的互相关运算步骤约要8192*8192=67108864个时钟周期,而本发明所需要的约为256*256=65536个时钟周期,该步骤算法加速了大约256倍,可以明显的体现本发明的高效性。
在本发明的一项具体实施中,在IFFT运算步骤之前还包括频域取窗步骤:同时读取存储在RAM1内的数据,根据实际的需求对频域进行取窗完成滤波。取窗包括对于频域信号的各种滤波方式,如低通滤波,高通滤波,带通滤波等。可以根据需求重复频域取窗步骤、IFFT运算步骤和互相关运算步骤,得到所有取窗情况下的计算结果。
以上列举的仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以有许多变形。本领域的普通技术人员能从本发明公开的内容直接导出或联想到的所有变形,均应认为是本发明的保护范围。
Claims (3)
1.一种基于FPGA的多点数互相关运算的加速实现方法,其特征在于,步骤如下:
(1).数据存储:将AD芯片采集得到的两组一定间隔的数据存储在双端口RAM0内;
(2).FFT运算:同时读取存储在双端口RAM0内的两组数据,并使用FFT IP核进行FFT的计算过程,将计算得到的结果存储在双端口RAM1内;
(3).频域取窗:同时读取存储在双端口RAM1内的数据,根据实际的需求对频域进行取窗,完成滤波的过程;
(4).IFFT运算:使用FFT IP核对取窗滤波后的数据进行IFFT的计算过程,将计算得到的结果存储在一组单端口分布式RAM内,记为RAM[0][0]—RAM[0][m-1]与RAM[1][0]—RAM[1][m-1],m为小于N的2的整数次幂,N为数组长度;
(5).互相关运算:对保存在2m个RAM内的元素进行扫描,并将乘积结果按一定方式累加进双端口RAM[2][0]-RAM[2][2m-1]中,具体扫描步骤如下:
a.RAM[1][0]—RAM[1][m-1]的输出地址置0;
b.RAM[0][0]—RAM[0][m-1]的输出地址均从0开始每个时钟周期加1;
c.对两组RAM中输出的元素同时进行交叉相乘,得到m2个乘积结果,同时与RAM[2]的对应位置的元素进行累加;
d.到RAM[0][0]-RAM[0][m-1]的地址为N/m-1后,地址全部置0;RAM[1][0]—RAM[1][m-1]的地址均加1;
e.重复步骤b-d,直到两组RAM的地址均为N/m-1后,完成扫描步骤;
(6).寻找实部最大值:对保存在RAM[2][0]-RAM[2][2m-1]中的元素进行比较,找到其中最大值的下标,得到一次计算结果;重复步骤(3)-(6),得到所有取窗情况下的计算结果。
2.根据权利要求1所述的一种基于FPGA的多点数互相关运算的加速实现方法,其特征在于步骤(1)中,两组数据长度相等且为2的整数次幂。
3.根据权利要求1所述的一种基于FPGA的多点数互相关运算的加速实现方法,其特征在于步骤(3)中,取窗包括对于频域信号的低通滤波、高通滤波、带通滤波中的一种或多种。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210225237.4A CN114579080A (zh) | 2022-03-09 | 2022-03-09 | 一种基于fpga的多点数互相关运算的加速实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210225237.4A CN114579080A (zh) | 2022-03-09 | 2022-03-09 | 一种基于fpga的多点数互相关运算的加速实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114579080A true CN114579080A (zh) | 2022-06-03 |
Family
ID=81774014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210225237.4A Pending CN114579080A (zh) | 2022-03-09 | 2022-03-09 | 一种基于fpga的多点数互相关运算的加速实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114579080A (zh) |
-
2022
- 2022-03-09 CN CN202210225237.4A patent/CN114579080A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100504400C (zh) | 一种示波器的高速信号重构方法 | |
CN113807509B (zh) | 神经网络加速装置、方法和通信设备 | |
CN110058201B (zh) | 一种基于fpga资源复用实现多波形多速率时域脉压的方法 | |
CN112987047B (zh) | 基于时分复用技术的卫星导航信号捕获系统及方法 | |
CN116299210A (zh) | 一种基于分段重构的密集假目标生成方法 | |
RU2700194C1 (ru) | Унифицированная реконфигурируемая схема коммутации быстрого преобразования фурье и способ её формирования | |
CN115905782A (zh) | 基于fpga的实时快速傅里叶变换谱仪的信号处理系统及方法 | |
CN114579080A (zh) | 一种基于fpga的多点数互相关运算的加速实现方法 | |
CN114647817A (zh) | 一种基于fpga的频域卷积代替时域互相关的加速方法 | |
Wei et al. | Fast median filtering algorithm based on FPGA | |
CN101719117A (zh) | 一种fft运算装置及其制造方法 | |
CN109239688B (zh) | 一种基于fpga实现的高效多普勒滤波器组 | |
CN116578819A (zh) | 一种稀疏分数傅里叶变换fpga实现方法及系统 | |
CN105741313A (zh) | 一种基于fpga的快速实时动目标检测系统 | |
CN114185014B (zh) | 一种应用于雷达信号处理的并行卷积方法及装置 | |
CN114201725B (zh) | 基于多模可重构fft的窄带通信信号处理方法 | |
CN112668183B (zh) | 一种长时间历程振动信号的雨流计数处理方法 | |
RU2717950C1 (ru) | Высокоскоростное устройство быстрого преобразования фурье с бесконфликтным линейным доступом к памяти | |
RU188978U1 (ru) | Унифицированная реконфигурируемая схема коммутации быстрого преобразования фурье | |
CN112597432A (zh) | 基于fft算法的复序列互相关在fpga上的加速实现方法及系统 | |
CN113203997A (zh) | 基于硬浮点fpga的雷达超分辨测向方法、系统及数据处理设备 | |
CN115982527B (zh) | 一种基于fpga的时频域变换算法实现方法 | |
RU196625U1 (ru) | Высокоскоростное устройство быстрого преобразования фурье с бесконфликтным линейным доступом к памяти | |
CN116304502A (zh) | 基于插入排序的稀疏快速傅里叶变换fpga实现方法 | |
CN109921800A (zh) | 基于自定制浮点格式的频域脉冲压缩方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |