法律状态公告日
法律状态信息
法律状态
2020-07-17
未缴年费专利权终止 IPC(主分类):G06F7/48 授权公告日:20171124 终止日期:20190728 申请日:20150728
专利权的终止
2017-11-24
授权
授权
2015-12-30
实质审查的生效 IPC(主分类):G06F7/48 申请日:20150728
实质审查的生效
2015-12-02
公开
公开
技术领域
本发明涉及一种插值电路结构设计,特别是涉及一种基于FPGA的并行结构Sinc插值的电路结构设计。
背景技术
插值(Interpolation)是一种利用已知采样点去预测或估计未采样点数值的运算,能够起到样本重采样、平滑等作用,在通信、信号处理、图像处理领域有着广泛的应用。插值种类主要有线性插值、多项式插值、Sinc插值等。在数字信号处理领域,特别是合成孔径雷达(SyntheticApertureRadar,SAR)成像领域,Sinc插值以其实现算法简单、精度较好的优点被广泛的使用。采样定理表明,只要函数满足以下两个条件就可以从函数的等间隔离散样本中无失真恢复原始信号:
(1)信号是带限的;
(2)采样频率满足奈奎斯特采样率。实信号的采样率必须大于最高频率的两倍,复信号的采样率必须大于信号带宽。
时域信号的离散化对应其频域的周期延拓。在满足以上条件时,只需要理想矩形低通滤波器在频域提取基带频谱。时域重建方程为:
>
fd(i)是f(x)在x=i的采样值。为了得到加矩形窗滤波的效果,理论上需要无数个采样点系数进行加权求和,这种滤波器在工程实践中是无法实现的。如图1所示,观察Sinc插值核的时域波形可以发现,Sinc函数关于原点对称,原点对应函数值最高,越远离中心点函数值渐渐变小。所以工程实践中一般在不过度损失精度的同时对Sinc卷积核进行截断。当使用截断Sinc函数对陡峭边缘的函数进行插值时,会出现吉布斯振铃效应。为减小这种影响,可以对Sinc函数进行加窗处理使得系统的冲击响应在边界平缓地衰减到零。
以往,SAR成像里Sinc插值运算主要用软件方式或者数字信号处理器(DigitalDignalProcessor,DSP)实现。随着技术的发展,工作者需要处理的数据量越来越大,软件或DSP实现插值的速度远达不到要求。随着现场可编程门阵列(FieldProgrammableGateArray,FPGA)的集成度不断提高,工作者开始采用FPGA来实现插值运算。目前基于FPGA的Sinc插值,如文献(何斌,张志敏.基于FPGA的sinc插值算法的研究和实现[J].电子器件,Vol.33,No.3,2010,pp.340-343.),其实现的Sinc插值的基本思想都是把采样点数据(N点)缓存在一个深度为N的RAM里,然后按照时钟节拍顺序选择L(L为插值核长度,典型为8或16)个数据出来与L个Sinc插值核系数进行累乘加。这种串行结构插值每L个时钟节拍只能计算一个待插值点,效率较低。另外其插值运算采用了定点数,难以适用于如雷达信号这种具有大动态范围的数据。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于FPGA的并行结构Sinc插值方法。
本发明采用的技术方案为:一种基于FPGA的并行结构Sinc插值方法,包括以下步骤:
步骤一:将一个缓存采样点数据的RAM分割成L个独立的子块RAM,按顺序把采样点数据每L个数据分为一组,每一组存储到L个子块RAM的相同地址位置。
步骤二:对截断Sinc函数加窗以降低吉布斯振铃效应,同时将具有相同偏移量的一组Sinc插值核系数存放在L个ROM的相同地址位置。
步骤三:把输入浮点格式待插值点坐标转换成定点数,其整数部分为定位坐标,小数部分指定了Sinc系数偏移量。定位坐标的前3个和后4个样本的分别落在L个子块RAM上,可在同一个时钟节拍里取出这L个采样点与L个Sinc系数进行相乘,再经过log2(L)级并行加法树就能得到待插值点的插值结果。
步骤四:对于待插值点坐标超出采样样本的范围,或者待插值点位于样本边界导致数据取不到L个点这两种特殊情况,本发明提供一种基于标识置零的解决方法。使用了两个标识信号指示超出范围和边界点的特殊情况,只要这两个标识其一有效,则把数据RAM的输出置零,并让其进入后续的乘法和加法模块。
步骤五:采样点数据和输入待插值点坐标均为浮点数格式。待插值点可以连续不断地输入,即每个时钟周期就能输入一个待插值点。经一定的流水线延迟后,插值结果连续不断地输出。
本发明的有益效果:(1)将缓存采样点数据的RAM分成多个子块,设置采样点数据在子块RAM中的排列方式,不需要增加FPGA额外的BlockRAM资源,这样能在一个时钟节拍内读出待插值点所需的L个采样点数据的和Sinc系数,这意味着每个时钟节拍都能插值出一个点,相比原来的串行结构,这种并行架构插值的效率是原来的L倍。
(2)本发明并行结构插值输入输出是浮点数,支持的数据动态范围更广,同时也支持浮点复数输入输出,适用范围更广。
(3)本发明对采样点范围外和边界点采用了标识置零方法,使得特殊点和正常点的处理一体化,模块结构更加简单、稳定。
附图说明
图1为Kaiser窗加权后的Sinc函数,β=2.5;
图2为采样点数据在子块RAM中的存储;
图3为Sinc插值核系数在ROM中存储;
图4为分块RAM式并行Sinc插值结构框图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步详细的解释。为使说明简单明确,我们令插值核长度为L=8,采样点数N=8192为例进行说明。
(1)步骤一:如图2所示,当采样点数据输入时,按每8个数据写一列,逐列缓存所有采样点。这样的好处就是待插值点周围的8个采样点会落在这8个不同的子块RAM上,这样就能够在同一个时钟周期内取出这8个采样点出来,经过多路选择器选择合适的输出接到乘法器的输入端,保证与对应的Sinc系数相乘。
(2)步骤二:如图3所示,将偏移量相同的一组截断加窗后Sinc插值核系数存储在8个ROM的相同地址位置,系数值以单精度浮点数表示。Sinc系数量化位移为采样间隔的1/16,即每个ROM的深度为16。偏移量为0的一组系数放在地址0,偏移量大的系数存储在ROM的高地址位置。
(3)步骤三:如图4所示,原始采样一般为等间隔采样,先将输入浮点格式的待插值点坐标归一化,再通过一个浮点转定点模块,得到该坐标的整数和小数部分:整数部分为中心定位坐标,设为located_index,其前3个和后4个为所需的一组采样点数据;小数部分量化为0,1/16,…,15/16,指定了8个ROM上同一地址上的一组Sinc系数。设located_index/8=m,located_index%8=n,则子块RAM的读取地址如表1所示。例如当n=2时,相邻8个采样点按顺序依次落在Sub_RAM7~Sub_RAM6,如图2的阴影所示,且Sub_RAM7的地址为m-1,Sub_RAM0~Sub_RAM6的地址为m。在同一个时钟周期取出的一组样本数据,经过数据选择器后与对应的一组Sinc系数进行相乘,并行乘法器个数为8。随后进入后续的三级并行加法树(总共4+2+1=7个加法器)后输出插值结果。
表1
(4)步骤四:对于待插值点坐标超出采样样本的范围,或者待插值点位于样本边界导致数据取不到8个点这两种特殊情况,本发明提供一种基于标识置零的解决方法。当待插值点溢出范围,out_of_range标识有效。为了判断边界情况,我们把子块RAM的地址增加了额外的一位,当地址的最高位为1时,代表当前点已上溢或下溢了,把相应border_cond标识置为1。只要这两个标识其一有效,则把数据RAM的输出置为0,让其继续进入乘法和加法模块。这样带来一个好处,特殊点和正常点的处理一体化,使得模块设计简单、稳定。
(5)步骤五:输入和输出。N个待插值点可以连续不断输入,即每个时钟周期就能输入一个待插值点。经一定的流水线延迟后,插值结果连续不断地输出。
应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。
机译: 一种基于一维内容的图像插值设备,一种用于该设备的数据库构造方法和基于一维内容的图像插值方法
机译: DUT FPGA一种测试架构,具有基于FPGA的硬件加速器模块,可独立测试多个器件
机译: 一种基于边缘方向的图像插值方法,以在边缘方向上的两条相邻线之间插入省略的线