一种基于FPGA的并行结构Sinc插值方法

文档序号:9396662阅读:992来源:国知局
一种基于FPGA的并行结构Sinc插值方法
【技术领域】
[0001] 本发明涉及一种插值电路结构设计,特别是涉及一种基于FPGA的并行结构Sinc 插值的电路结构设计。
【背景技术】
[0002] 插值(Interpolation)是一种利用已知采样点去预测或估计未采样点数值的运 算,能够起到样本重采样、平滑等作用,在通信、信号处理、图像处理领域有着广泛的应用。 插值种类主要有线性插值、多项式插值、Sinc插值等。在数字信号处理领域,特别是合成孔 径雷达(Synthetic Aperture Radar,SAR)成像领域,Sinc插值以其实现算法简单、精度较 好的优点被广泛的使用。采样定理表明,只要函数满足以下两个条件就可以从函数的等间 隔离散样本中无失真恢复原始信号:
[0003] (1)信号是带限的;
[0004] (2)采样频率满足奈奎斯特采样率。实信号的采样率必须大于最高频率的两倍,复 信号的采样率必须大于信号带宽。
[0005] 时域信号的离散化对应其频域的周期延拓。在满足以上条件时,只需要理想矩形 低通滤波器在频域提取基带频谱。时域重建方程为:
[0007] fd(i)是f(x)在X = i的采样值。为了得到加矩形窗滤波的效果,理论上需要无 数个采样点系数进行加权求和,这种滤波器在工程实践中是无法实现的。如图1所示,观察 Sinc插值核的时域波形可以发现,Sinc函数关于原点对称,原点对应函数值最高,越远离 中心点函数值渐渐变小。所以工程实践中一般在不过度损失精度的同时对Sinc卷积核进 行截断。当使用截断Sinc函数对陡峭边缘的函数进行插值时,会出现吉布斯振铃效应。为 减小这种影响,可以对Sinc函数进行加窗处理使得系统的冲击响应在边界平缓地衰减到 零。
[0008] 以往,SAR成像里Sinc插值运算主要用软件方式或者数字信号处理器(Digital Dignal Processor,DSP)实现。随着技术的发展,工作者需要处理的数据量越来越大,软件 或DSP实现插值的速度远达不到要求。随着现场可编程门阵列(Field Programmable Gate Array,FPGA)的集成度不断提高,工作者开始采用FPGA来实现插值运算。目前基于FPGA的 Sinc插值,如文献(何斌,张志敏.基于FPGA的sine插值算法的研究和实现[J].电子器 件,Vol. 33, No. 3, 2010, pp. 340-343.),其实现的Sinc插值的基本思想都是把采样点数据 (N点)缓存在一个深度为N的RAM里,然后按照时钟节拍顺序选择L (L为插值核长度,典型 为8或16)个数据出来与L个Sinc插值核系数进行累乘加。这种串行结构插值每L个时 钟节拍只能计算一个待插值点,效率较低。另外其插值运算采用了定点数,难以适用于如雷 达信号这种具有大动态范围的数据。

【发明内容】

[0009] 本发明的目的在于克服现有技术的不足,提供一种基于FPGA的并行结构Sinc插 值方法。
[0010] 本发明采用的技术方案为:一种基于FPGA的并行结构Sinc插值方法,包括以下步 骤:
[0011] 步骤一:将一个缓存采样点数据的RAM分割成L个独立的子块RAM,按顺序把采样 点数据每L个数据分为一组,每一组存储到L个子块RAM的相同地址位置。
[0012] 步骤二:对截断Sinc函数加窗以降低吉布斯振铃效应,同时将具有相同偏移量的 一组Sinc插值核系数存放在L个ROM的相同地址位置。
[0013] 步骤三:把输入浮点格式待插值点坐标转换成定点数,其整数部分为定位坐标,小 数部分指定了 Sinc系数偏移量。定位坐标的前3个和后4个样本的分别落在L个子块RAM 上,可在同一个时钟节拍里取出这L个采样点与L个Sinc系数进行相乘,再经过log2 (L) 级并行加法树就能得到待插值点的插值结果。
[0014] 步骤四:对于待插值点坐标超出采样样本的范围,或者待插值点位于样本边界导 致数据取不到L个点这两种特殊情况,本发明提供一种基于标识置零的解决方法。使用了 两个标识信号指示超出范围和边界点的特殊情况,只要这两个标识其一有效,则把数据RAM 的输出置零,并让其进入后续的乘法和加法模块。
[0015] 步骤五:采样点数据和输入待插值点坐标均为浮点数格式。待插值点可以连续不 断地输入,即每个时钟周期就能输入一个待插值点。经一定的流水线延迟后,插值结果连续 不断地输出。
[0016] 本发明的有益效果:(1)将缓存采样点数据的RAM分成多个子块,设置采样点数据 在子块RAM中的排列方式,不需要增加 FPGA额外的Block RAM资源,这样能在一个时钟节 拍内读出待插值点所需的L个采样点数据的和Sinc系数,这意味着每个时钟节拍都能插值 出一个点,相比原来的串行结构,这种并行架构插值的效率是原来的L倍。
[0017] (2)本发明并行结构插值输入输出是浮点数,支持的数据动态范围更广,同时也支 持浮点复数输入输出,适用范围更广。
[0018] (3)本发明对采样点范围外和边界点采用了标识置零方法,使得特殊点和正常点 的处理一体化,模块结构更加简单、稳定。
【附图说明】
[0019] 图1为Kaiser窗加权后的Sinc函数,β = 2. 5 ;
[0020] 图2为采样点数据在子块RAM中的存储;
[0021] 图3为Sinc插值核系数在ROM中存储;
[0022] 图4为分块RAM式并行Sinc插值结构框图。
【具体实施方式】
[0023] 下面结合附图和【具体实施方式】对本发明做进一步详细的解释。为使说明简单明 确,我们令插值核长度为L = 8,采样点数N = 8192为例进行说明。
[0024] (1)步骤一:如图2所示,当采样点数据输入时,按每8个数据写一列,逐列缓存所 有采样点。这样的好处就是待插值点周围的8个采样点会落在这8个不同的子块RAM上, 这样就能够在同一个时钟周期内取出这8个采样点出来,经过多路选择器选择合适的输出 接到乘法器的输入端,保证与对应的Sinc系数相乘。
[0025] (2)步骤二:如图3所示,将偏移量相同的一组截断加窗后Sinc插值核系数存储 在8个ROM的相同地址位置,系数值以单精度浮点数表示。Sinc系数量化位移为采样间隔 的1/16,即每个ROM的深度为16。偏移量为0的一组系数放在地址0,偏移量大的系数存储 在ROM的高地址位置。
[0026] (3)步骤三:如图4所示,原始采样一般为等间隔采样,先将输入浮点格式的待插 值点坐标归一化,再通过一个浮点转定点模块,得到该坐标的整数和小数部分:整数部分为 中心定位坐标,设为l〇cated_index,其前3个和后4个为所需的一组采样点数据;小数部 分量化为〇, 1/16,…,15/16,指定了 8个ROM上同一地址上的一组Sinc系数。设IocatecL index/8 = m,located_index% 8 = n,则子块RAM的读取地址如表1所示。例如当η = 2 时,相邻8个采样点按顺序依次落在Sub_RAM7~Sub_RAM6,如图2的阴影所示,且Sub_RAM7 的地址为m-l,Sub_RAM0~Sub_RAM6的地址为m。在同一个时钟周期取出的一组样本数据, 经过数据选择器后与对应的一组Sinc系数进行相乘,并行乘法器个数为8。随后进入后续 的三级并行加法树(总共4+2+1 = 7个加法器)后输出插值结果。
[0028] 表 1
[0029] (4)步骤四:对于待插值点坐标超出采样样本的范围,或者待插值点位于样本边 界导致数据取不到8个点这两种特殊情况,本发明提供一种基于标识置零的解决方法。当 待插值点溢出范围,〇ut_of_range标识有效。为了判断边界情况,我们把子块RAM的地址 增加了额外的一位,当地址的最高位为1时,代表当前点已上溢或下溢了,把相应border cond标识置为1。只要这两个标识其一有效,则把数据RAM的输出置为0,让其继续进入乘 法和加法模块。这样带来一个好处,特殊点和正常点的处理一体化,使得模块设计简单、稳 定。
[0030] (5)步骤五:输入和输出。N个待插值点可以连续不断输入,即每个时钟周期就能 输入一个待插值点。经一定的流水线延迟后,插值结果连续不断地输出。
[0031] 应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下, 还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未 明确的各组成部分均可用现有技术加以实现。
【主权项】
1. 一种基于FPGA的并行结构Sinc插值方法,其特征在于:包括以下步骤: 步骤一:将缓存采样点数据的RAM分割成独立的子块RAM,然后把采样点数据按一定顺 序存储到子块RAM里; 步骤二:对截断Sinc函数加窗以降低吉布斯振铃效应,同时将Sinc插值核系数存放在 丽里; 步骤三:把输入浮点格式待插值点坐标转换成定点数,其整数部分为定位坐标,小数部 分指定了 Sinc系数偏移量,在同一个时钟节拍里取出一组样本数据和Sinc系数进行相乘 后进入后续并行加法树得到插值结果; 步骤四:对于待插值点坐标超出采样样本的范围,或者待插值点位于样本边界,使用了 两个标识信号指示这两种特殊情况,只要这两个标识其一有效,则把数据RAM的输出置零, 并让其进入后续的乘法和加法模块; 步骤五:采样点数据和输入待插值点坐标均为浮点数格式;待插值点可以连续不断地 输入,插值结果连续不断地输出。2. 根据权利要求1所述的一种基于FPGA的并行结构Sinc插值方法,其特征在于:所 述步骤一中:缓存采样点数据的RAM分割成L个独立的子块RAM,L为插值核长度,按顺序把 采样点数据每L个数据分为一组,每一组存储到L个子块RAM的相同地址位置; 所述步骤二中:将具有相同偏移量的一组Sinc插值核系数存放在L个ROM的相同地址 位置; 所述步骤三中:定位坐标的前3个和后4个样本的分别落在L个子块RAM上,在同一个 时钟节拍里取出这L个采样点与L个Sinc系数进行相乘,再经过log2 (L)级并行加法树就 能得到待插值点的插值结果。
【专利摘要】本发明公开了一种基于FPGA的并行结构Sinc插值方法,主要解决串行插值效率低的问题,该方法主要步骤包括:将缓存采样点数据的RAM进行分块,将截断加窗后插值核系数存储在ROM里;待插值点坐标通过浮点转定点,通过整数部分寻址样本数据、小数部分寻址插值核系数,在同一个时钟周期取出一组样本数据和系数进行相乘后进入后续并行加法树得到插值结果;对超出范围和边界点的特殊情况,利用标识置零方法使其进入后续流水线。本发明的结构并行、简单,能够实现流水输入和输出,一个时钟周期就插值出一个数据,插值效率大大提高;并且支持浮点数复数,适用范围广。
【IPC分类】G06F7/499, G06F7/48
【公开号】CN105117196
【申请号】CN201510450583
【发明人】朱岱寅, 郭江哲, 丁勇, 韦北余, 杨鸣冬
【申请人】南京航空航天大学
【公开日】2015年12月2日
【申请日】2015年7月28日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1