CN107193784B - 高精度低硬件复杂度的sinc插值实现方法及系统 - Google Patents
高精度低硬件复杂度的sinc插值实现方法及系统 Download PDFInfo
- Publication number
- CN107193784B CN107193784B CN201710351440.5A CN201710351440A CN107193784B CN 107193784 B CN107193784 B CN 107193784B CN 201710351440 A CN201710351440 A CN 201710351440A CN 107193784 B CN107193784 B CN 107193784B
- Authority
- CN
- China
- Prior art keywords
- data
- point
- interpolated
- calculation
- module
- 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.)
- Active
Links
Images
Classifications
-
- 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/17—Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
Abstract
本发明提供了一种高精度低硬件复杂度的sinc插值实现方法,包括:将采样点数据和待插值点数据存储于RAM的不同bank中,根据待插值点数据的整数部分从RAM中取出采样点数据,并且和待插值点数据的小数部分一起,分成两部分输入计算单元中,分别进行通分除法计算和SIN计算,最后通过延时模块后相乘得到结果数据,全过程采用流水线设计。本发明支持多种插值核长度,支持浮点复数计算,通过卷积核现场计算的方式,在保证了计算效率的同时,提高了计算精度,降低了硬件资源的开销。
Description
技术领域
本发明涉及数字信号处理领域,尤其涉及一种高精度低硬件复杂度的sinc插值实现方法及系统。
背景技术
在数字信号处理中,有时会需要变换抽样频率,插值就是从离散的已知采样数据点构建新的数据点的方法。通过插值可以增加抽样率,并且这种对序列域直接处理的方法,相比于经过数模转换器变换成模拟信号再以另一个抽样率抽样的方式,可以有效减小失真,降低量化误差。
根据采样定理,为了不失真地从采样离散信号点中恢复出模拟信号,采样频率应该不小于模拟信号频谱中最高频率的2倍。这是sinc插值无失真的从离散抽样信号中恢复出模拟信号的必要条件。
sinc插值的时域重建方程为:f(x)≡∑ifd(i)·sinc[ωc(x-i)]
其中是fd(x)离散抽样信号,ωc是抽样频率。
上述公式中可以理解为离散抽样信号在时域上对函数的加权叠加,所以理论上如果计算某一点的精确值,则需要覆盖完整周期内时域上的点,即原始模拟信号最小周期内的所有点,这需要非常大的计算量。但是根据sinc函数的函数特性,插值核的值随着离x的间隔增加在加权叠加中所占的权重减小,所以在实际运用中可以根据对结果的精度要求对卷积核进行截断。
即对于任一点x求f(x),已知x左右共R+1个点离散函数fd(x),重建方程为:
上式可以看成是fd(xn)与sinc(xn)的卷积,其中卷积核为:
上述就是对于某一点R的sinc插值计算流程。
硬件实现sinc插值运算一般采用串行的运算方式,运算效率较低,仅仅适用于小点数低精度的运算。虽然现有的一些并行结构的sinc插值对串行的运算效率有所改善,但是由于这种简单的并行结构对卷积核系数也仅仅是采用缓存的方式,并没有进行现场计算,因此会存在低精度的问题,并且每提高一位精度就需要RAM的缓存深度成指数倍增长,所以这些插值方法都难以适用于现在高精度sinc插值的计算要求。
发明内容
本发明的目的是提供一种高精度低硬件复杂度的sinc插值实现方法,具体由以下方案实现:
所述高精度低硬件复杂度的sinc插值实现方法,包括如下步骤:
1)将现有的RAM资源分成3块,分别为存储采样点数据的RAM0、存储待插值点数据的RAM1以及存储结果数据的RAM2;
2)顺序将RAM1中的待插值点数据取出,对待插值点数据进行定浮转换和四舍五入估值,得到待插值点数据的整数部分和小数部分;
3)根据待插值点数据的整数部分得到需要使用的采样点数据的地址,并根据地址信息从RAM0中取出对应的采样点数据;
4)将采样点数据进行乘加操作后再进行除法操作,由待插值点数据的小数部分得到最终的待插值点结果数据;
5)由结果数据的地址生成器产生地址,并将待插值点结果数据存入RAM2,完成整个运算流程。
所述高精度低硬件复杂度的sinc插值实现方法的进一步设计在于,步骤3)中根据待插值点数据的小数部分得到插值核系数中SIN函数需要计算的输入值。
所述高精度低硬件复杂度的sinc插值实现方法的进一步设计在于,步骤4)中,待插值点数据的小数部分通过SIN函数公式实时计算,将两部分结果延时同步之后进行除法和乘加操作,得到最终的待插值点结果数据。
所述高精度低硬件复杂度的sinc插值实现方法的进一步设计在于,sinc插值的时域重建方程如下:
其中fd(xn)是离散抽样信号,ωc是抽样频率,该sinc插值的时域重建方程对点x1到点xR+1进行R点sinc插值,得到待插值点x0的函数值;
在sinc插值的时域重建方程中并且sinc插值的时域重建方程中需要乘以抽样频率ωc,所以根据SIN函数的周期性,虽然对于插值核长度为R的sinc插值需要计算R+1次sinc函数,但是仅需要计算一次SIN函数,通过这种方式可以极大的简化计算流程,提高计算效率,减小硬件资源复杂度。
所述高精度低硬件复杂度的sinc插值实现方法的进一步设计在于,采用流水线设计进行上述五个步骤,完成一次完整的插值计算以后将结果数据从RAM2中取出,结束整个运算流程。
根据所述高精度低硬件复杂度的sinc插值实现方法的系统,包括存储单元、数据搬运单元以及计算单元,所述存储单元包括存储采样点数据的RAM0、存储待插值点数据的RAM1以及存储结果数据的RAM2,所述数据搬运单元包括src1_gen模块、src2_gen模块、round模块以及result模块,所述计算单元包括通分与除法模块、延时同步模块以及SIN函数计算模块;src2_gen模块从RAM1中取出待插值点数据,经过round模块取得整数部分和小数部分;整数部分传入src1_gen,作为从RAM0中取数的地址,再由src1_gen模块从RAM0中取出采样点数据,并将所述采样点数据送入计算单元;同时将所述小数部分一同送入src2_gen与计算单元;SIN函数计算模块与通分与除法模块输出的中间值通过延时同步模块进行同步后相乘得到结果数据,计算单元取得结果数据以后,通过result模块将结果数据存放到RAM2中,完成一次计算的过程,完成全部计算以后将RAM2中的结果数据存放到外部存储单元中,完成一次完整的sinc插值计算。本发明的优点如下:
本发明提供了一种高精度低硬件复杂度的sinc插值实现方法,通过简化和优化sinc函数的计算流程,减小SIN函数的重复计算,使用乘加模块以减小高开销的除法模块等方式,既解决了高精度情况下sinc插值计算效率低的问题,同时也保证了计算结果的高精度和低硬件复杂度。
附图说明
图1为sinc插值的顶层互联示意图。
图2为计算单元结构示意图。
图3为两个实数输入的通分与除法模块示意图。
图4为四个复数输入的通分与除法模块示意图。
具体实施方式
本实施例的下面结合附图和具体实施方式对本发明进行详细说明,本实施例以插值核长度为16为例。
本实施例的实现高精度低硬件复杂度的sinc插值的系统主要由存储单元、数据搬运单元以及计算单元组成,参见图1、图2。存储单元包括存储采样点数据的RAM0、存储待插值点数据的RAM1以及存储结果数据的RAM2,数据搬运单元包括src1_gen模块、src2_gen模块、round模块以及result模块,计算单元包括通分与除法模块、延时同步模块以及SIN函数计算模块。src2_gen模块从RAM1中取出待插值点数据,经过round模块取得整数部分和小数部分。整数部分传入src1_gen,作为从RAM0中取数的地址,再由src1_gen模块从RAM0中取出采样点数据,并将采样点数据送入计算单元。同时将小数部分一同送入src2_gen与计算单元。SIN函数计算模块与通分与除法模块输出的中间值通过延时同步模块进行同步后相乘得到结果数据,计算单元取得结果数据以后,通过result模块将结果数据存放到RAM2中,完成一次计算的过程,完成全部计算以后将RAM2中的结果数据存放到外部存储单元中,完成一次完整的sinc插值计算。
本实施例提供了一种高精度低硬件复杂度的sinc插值的实现方法具体包括如下步骤:
1)将现有的RAM资源分成3块,分别为存储采样点数据的RAM0、存储待插值点数据的RAM1以及存储结果数据的RAM2;
2)顺序将RAM1中的待插值点数据取出,对待插值点数据进行定浮转换和四舍五入估值,得到待插值点数据的整数部分和小数部分;
3)根据待插值点数据的整数部分得到需要使用的采样点数据的地址,并根据地址信息从RAM0中取出对应的采样点数据;
4)将采样点数据进行乘加操作后再进行除法操作,由待插值点数据的小数部分得到最终的待插值点结果数据;
5)由结果数据的地址生成器产生地址,并将待插值点结果数据存入RAM2,完成整个运算流程。
步骤3)中根据待插值点数据的小数部分得到插值核系数中SIN函数需要计算的输入值。
步骤4)中,待插值点数据的小数部分通过SIN函数公式实时计算,将两部分结果延时同步之后进行除法和乘加操作,得到最终的待插值点结果数据。
进一步的,本实施例采用流水线设计进行上述五个步骤,完成一次完整的插值计算以后将结果数据从RAM2中取出,结束整个运算流程。
sinc插值的时域重建方程如下:
其中,fd(xn)是离散抽样信号,ωc是抽样频率,该sinc插值的时域重建方程对点x1到点xR+1进行R点sinc插值,得到待插值点x0的函数值;
在sinc插值的时域重建方程中并且sinc插值的时域重建方程中需要乘以抽样频率ωc,所以根据SIN函数的周期性,虽然对于插值核长度为R的sinc插值需要计算R+1次sinc函数,但是仅需要计算一次SIN函数,通过这种方式可以极大的简化计算流程,提高计算效率,减小硬件资源复杂度。
具体的,结合本实施例提供的实现高精度低硬件复杂度的sinc插值的系统的实现方法具体包括如下步骤:
步骤一:如图1所示,将源数据缓存到RAM中,并且数据优先存放不同bank的同一地址。因为每次取源数据都是取相邻地址的一段数据,这种缓存方式可以极大地提高读数据的带宽。
步骤二:如图1所示,由src2_gen模块从RAM1中取出待插值点数据,经过round模块取得整数部分和小数部分,整数部分就是待插值点数据四舍五入后的近似值,而小数部分就是这个近似值和待插值点数据的差。
步骤三:如图1所示,整数部分传入src1_gen,作为从RAM0中取数的地址,再由src1_gen模块从RAM0中取出采样点数据,并将数据送入计算单元;同时将src2_gen所得的小数部分一同送入计算单元。
步骤四:如图2所示,数据进入计算单元以后,SIN函数中需要计算的值送入SIN函数的计算单元中,同时采样点数据进入通分与除法模块。两边的数据经过延时同步模块,再相乘就可以得到结果数据。其中用户可自定义的通分与除法模块的结构如图3和图4所示,通过这两种模块的结合使用,可以流水处理输入数据,并且可以通过使用资源较少的加法和乘法器来减少使用资源较多的除法器,以达到降低硬件开销的目的,同时也不会降低计算速度。
步骤五:如图1所示,在计算单元取得结果数据以后,通过result模块将结果数据存放到RAM2中。
步骤六:以上步骤是一次计算的流程,并且计算过程可以流水进行,完成全部计算以后将RAM2中的结果数据存放到外部存储单元中,完成一次完整的sinc插值计算。
本实施中复数乘法器、复数加法器、实数乘法器、实数加法器均为延迟为4个时钟周期的流水单精度浮点运算单元,访存延迟为6个周期,采用IC仿真/综合工具,工作主频达到1GHz。依据本设计的实现方法,以256阶sinc插值为例,计算时间为0.622ms,计算结果的平均误差为2*10-6。
本设计中通分的方法使用乘加单元代替除法单元,除法单元的硬件复杂度要大于乘加单元,因此该实现方法有效地降低了硬件开销,在40nm CMOS工艺下DC综合的面积为392820μm2。
本实施例的高精度低硬件复杂度的sinc插值实现方法,通过简化和优化sinc函数的计算流程,减小SIN函数的重复计算,使用乘加模块以减小高开销的除法模块等方式,既解决了高精度情况下sinc插值计算效率低的问题,同时也保证了计算结果的高精度和低硬件复杂度。
本实施例的高精度低硬件复杂度的sinc插值实现方法使用卷积核现场计算的方式,代替常用的将sinc插值核系数存放在RAM中的方法,解决了计算精度低,片上存储资源开销大的问题;使用SIN计算代替sinc计算,减小了插值中的重复计算,解决了较大插值核长度情况下,计算效率低的问题;使用乘法器和加法器代替运算中所需要的除法器,解决了现场计算卷积核所产生的除法次数多以及运算速度低等问题。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其本发明构思加以等同替换或改变,都涵盖在本发明的保护范围之内。
Claims (5)
1.一种高精度低硬件复杂度的sinc插值实现方法,其特征在于包括如下步骤:
1)将现有的RAM资源分成3块,分别为存储采样点数据的RAM0、存储待插值点数据的RAM1以及存储结果数据的RAM2;
2)顺序将RAM1中的待插值点数据取出,对待插值点数据进行定浮转换和四舍五入估值,得到待插值点数据的整数部分和小数部分;
3)根据待插值点数据的整数部分得到需要使用的采样点数据的地址,并根据地址信息从RAM0中取出对应的采样点数据;
4)将采样点数据进行乘加操作后再进行除法操作得到的中间数据;待插值点数据的小数部分经过SIN函数得到结果数据,所述中间数据与结果数据通过延时同步模块进行同步后相乘得到最终的待插值点结果数据;
5)由最终的待插值点结果数据的地址生成器产生地址,并将待插值点结果数据存入RAM2,完成整个运算流程。
2.根据权利要求1所述的高精度低硬件复杂度的sinc插值实现方法,其特征在于:步骤4)中根据待插值点数据的小数部分得到插值核系数中SIN函数需要计算的输入值。
4.根据权利要求1所述的高精度低硬件复杂度的sinc插值实现方法,其特征在于:采用流水线设计进行上述步骤,完成一次完整的插值计算以后将最终的待插值点结果数据从RAM2中取出,结束整个运算流程。
5.采用如权利要求1-4任一项所述的高精度低硬件复杂度的sinc插值实现方法的系统,其特征在于包括存储单元、数据搬运单元以及计算单元,所述存储单元包括存储采样点数据的RAM0、存储待插值点数据的RAM1以及存储结果数据的RAM2,所述数据搬运单元包括src1_gen模块、src2_gen模块、round模块以及result模块,所述计算单元包括通分与除法模块、延时同步模块以及SIN函数计算模块;src2_gen模块从RAM1中取出待插值点数据,经过round模块取得整数部分和小数部分;整数部分传入src1_gen,作为从RAM0中取数的地址,再由src1_gen模块从RAM0中取出采样点数据,并将所述采样点数据送入计算单元;同时将所述小数部分一同送入src2_gen与计算单元;SIN函数计算模块计算得出的结果数据与通分与除法模块输出的中间数据通过延时同步模块进行同步后相乘得到最终的待插值点结果数据,计算单元取得最终的待插值点结果数据以后,通过result模块将最终的待插值点结果数据存放到RAM2中,完成一次计算的过程,完成全部计算以后将RAM2中的最终的待插值点结果数据存放到外部存储单元中,完成一次完整的sinc插值计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710351440.5A CN107193784B (zh) | 2017-05-17 | 2017-05-17 | 高精度低硬件复杂度的sinc插值实现方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710351440.5A CN107193784B (zh) | 2017-05-17 | 2017-05-17 | 高精度低硬件复杂度的sinc插值实现方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107193784A CN107193784A (zh) | 2017-09-22 |
CN107193784B true CN107193784B (zh) | 2020-11-20 |
Family
ID=59874095
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710351440.5A Active CN107193784B (zh) | 2017-05-17 | 2017-05-17 | 高精度低硬件复杂度的sinc插值实现方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107193784B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115756613B (zh) * | 2022-11-29 | 2023-08-29 | 中国科学院空天信息创新研究院 | 基于向量化处理的sinc插值方法、装置及SAR雷达 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1916964A (zh) * | 2006-09-08 | 2007-02-21 | 南京大学 | 图像缩放器中辛克函数加窗插值方法 |
US7489259B2 (en) * | 2006-08-01 | 2009-02-10 | Creative Technology Ltd. | Sample rate converter and method to perform sample rate conversion |
CN105117196A (zh) * | 2015-07-28 | 2015-12-02 | 南京航空航天大学 | 一种基于FPGA的并行结构Sinc插值方法 |
-
2017
- 2017-05-17 CN CN201710351440.5A patent/CN107193784B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7489259B2 (en) * | 2006-08-01 | 2009-02-10 | Creative Technology Ltd. | Sample rate converter and method to perform sample rate conversion |
CN1916964A (zh) * | 2006-09-08 | 2007-02-21 | 南京大学 | 图像缩放器中辛克函数加窗插值方法 |
CN105117196A (zh) * | 2015-07-28 | 2015-12-02 | 南京航空航天大学 | 一种基于FPGA的并行结构Sinc插值方法 |
Non-Patent Citations (3)
Title |
---|
DFT and DCT based discrete sinc-interpolation methods for direct Fourier tomographic reconstruction;L.P. Yaroslavsky et.;《Proceedings of the 3rd International Symposium on Image and Signal Processing and Analysis (2003)》;20030920;第405-410页 * |
Signal sinc-interpolation: a fast computer algorithm;L P Yaroslavsky;《Bioimaging》;19960813;第225-231页 * |
图形图像处理中的新型插值方法研究;邓立山;《中国优秀硕士学位论文全文数据库信息科技辑》;20170415;第28-30页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107193784A (zh) | 2017-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110266311A (zh) | 一种tiadc系统失配误差校准方法、装置、设备及介质 | |
CN103559019A (zh) | 一种通用浮点全流水fft运算ip核 | |
JP2005174077A (ja) | 関数演算方法及び関数演算回路 | |
CN107193784B (zh) | 高精度低硬件复杂度的sinc插值实现方法及系统 | |
CN108563421B (zh) | Fpga运算电路和斯皮尔曼秩次相关系数的求解方法 | |
TWI444837B (zh) | 固定係數型可變質數長度遞迴式離散傅立葉轉換之系統 | |
Mohanty et al. | Design and performance analysis of fixed-point jacobi svd algorithm on reconfigurable system | |
Corinthios et al. | A parallel radix-4 fast Fourier transform computer | |
JP5573901B2 (ja) | 標本化レート変換装置 | |
TW201724089A (zh) | 具有滑動式二階遞迴傅立葉轉換的頻域適應性濾波系統 | |
Kim et al. | Implementation of a low-complexity low-latency arbitrary resampler on GPUs | |
Ranganathan et al. | Efficient hardware implementation of scalable FFT using configurable Radix-4/2 | |
RU188978U1 (ru) | Унифицированная реконфигурируемая схема коммутации быстрого преобразования фурье | |
Sankaran et al. | Design and Implementation of 1024 Point Pipelined Radix 4 FFT Processor on FPGA for Biomedical Signal Processing Applications | |
CN113377333A (zh) | 基于抛物线综合法求复数的n次开根号的硬件计算系统和方法 | |
CN103926567B (zh) | 高速实时脉冲压缩算法 | |
Niu et al. | FPGA based architectures for high performance adaptive FIR filter systems | |
CN112597432A (zh) | 基于fft算法的复序列互相关在fpga上的加速实现方法及系统 | |
Subathradevi et al. | Delay optimized novel architecture of FIR filter using clustered-retimed MAC unit Cell for DSP applications | |
Leclère et al. | Implementing super-efficient FFTs in Altera FPGAs | |
RU2393535C1 (ru) | Устройство для обработки сигналов на основе двухкритериального способа | |
CN110808935B (zh) | 线性调频信号自相关运算的精确高效实现方法及装置 | |
Schmidt et al. | A highly scalable FPGA implementation for cross-correlation with up-sampling support | |
CN113778940B (zh) | 基于fpga的高精度可重构相位调整ip核 | |
CN111610960B (zh) | 一种基于lms的除法器模块及其求除方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |