CN113778940B - 基于fpga的高精度可重构相位调整ip核 - Google Patents
基于fpga的高精度可重构相位调整ip核 Download PDFInfo
- Publication number
- CN113778940B CN113778940B CN202111037542.2A CN202111037542A CN113778940B CN 113778940 B CN113778940 B CN 113778940B CN 202111037542 A CN202111037542 A CN 202111037542A CN 113778940 B CN113778940 B CN 113778940B
- Authority
- CN
- China
- Prior art keywords
- data
- module
- multiply
- storage
- accumulate
- 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
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
- G06F15/7871—Reconfiguration support, e.g. configuration loading, configuration switching, or hardware OS
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/05—Digital input using the sampling of an analogue quantity at regular intervals of time, input from a/d converter or output to d/a converter
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M1/00—Analogue/digital conversion; Digital/analogue conversion
- H03M1/12—Analogue/digital converters
- H03M1/124—Sampling or signal conditioning arrangements specially adapted for A/D converters
- H03M1/1245—Details of sampling arrangements or methods
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于FPGA的高精度可重构相位调整IP核,ADC采集数据由输入格式转换模块转换为浮点或定点小数格式,预先将滤波系数分组存储在滤波系数存储模块中,卷积模块从输入格式转换模块和滤波系数存储模块中分别读取采集数据和对应的滤波系数进行卷积运算中的乘法运算,乘累加数据存储模块由两块RAM构成乒乓结构,一块用于读取数据进行加法运算,另一块用于存储加法运算结果计算完成后由数据选择模块从乘累加数据存储RAM中选择需要输出的数据,将其交由输出格式转换模块进行浮点或定点格式转换,并将转换后结果输出。本发明采用数字滤波的方式对信号进行相位调整,采用抽点卷积算法,提高了相位调整精度,并可通过并行以提高运算速率。
Description
技术领域
本发明属于数据采集技术领域,更为具体地讲,涉及一种基于FPGA的高精度可重构相位调整IP核。
背景技术
现代电子测量仪器中,有许多设备如示波器、功率分析仪等测量仪器,由于前端模拟电路的特性,对采集的信号产生了一定的相位误差,为了校正该误差,实现更高精度的波形信号显示与参数测量结果的目的,通常需要对实际采集波形进行相位的调整,以获取两采样点之间的数据。由于ADC采集的数据都为离散数据点,每两点间的数据实际并未采样获得,为了解决该问题,目前常用的方法有两种,
一是通过FPGA时钟倍频的方式,产生高频时钟用于给ADC进行延时,将其采集时刻调整一个时钟周期后进行采样,该方法实现简单但存在局限性,即FPGA进行倍频频率具有一定限制,相位调整精度无法过高,故在实际工程中运算较少。
方法二是将原本未采集的数据通过数学方法拟合出来,其最直接的拟合方法是将采集时刻的数据点进行插值恢复,该方法进行补零插值后会在频域产生镜像分量,需要通过数字滤波器将其滤除后才能实现信号的还原,还原后的数据还需要进行抽取,以选择实际需要的数据点才能实现最后的相位调整功能。为使拟合数据更加接近真实数据,并保证相位调整后精度到达需求指标,则需要足够多的插值倍数与滤波阶数,其具体算法实现如下:
(1)首先将固定采样率的输入信号先进行I倍补零插值,最小相位调整精度由插值后的两点时间间隔决定。
(2)由于补零插值会将原始频谱宽度与幅度都缩小为原来的1/I,并且会产生I-1个镜像分量。为了还原真实插值后频谱,需要进行FIR滤波。
(3)滤波后的信号为原信号的I倍插值信号,为了实现相位调整的目的,还需要进行D倍抽点以选取需要的相位调整量M,抽取后的信号即为实现了相位调整后的信号。
以上为传统的实现方法,其存在一定的问题,其一,由于进行I倍补零后,实际运算点数增加为了原来的I倍,实际FPGA时钟频率并不高,且当输入信号采样率较高时,数字滤波运算可能无法满足运算速率的要求,会产生丢点现象。其二,由于插值后有大量的0值点,计算卷积时会进行很多无效运算,从而增加了运算功耗与时间。其三,当滤波结束后需要进行抽点,故计算的大量结果将被丢掉,其实际上产生了很多不必要的运算。
发明内容
本发明的目的在于克服现有技术的不足,提供一种基于FPGA的高精度可重构相位调整IP核,采用数字滤波的方式对信号进行相位调整,采用抽点卷积算法,在传统方法的基础上,省去插值与抽点环节、减少了FPGA资源消耗,提高了相位调整精度,并可通过实际需求配置并行数以提高运算速率。
为了实现上述发明目的,本发明基于FPGA的高精度可重构相位调整IP核包括输入格式转换模块、滤波系数存储模块、乘累加数据存储RAMa、乘累加数据存储RAMb、卷积模块、数据选择模块、输出格式转换模块以及时钟调整模块,其中:
输入格式转换模块用于根据设置将输入的ADC采集数据转换为浮点或定点小数格式,得到转换后的采集数据x(i),i=0,1,2,…,将转换后的数据发送至卷积模块;
滤波系数存储模块用于接收预先计算好的FIR滤波系数序列,采用多口ROM对滤波系数进行分组存储,端口数需要大于等于卷积模块中的并行路数P,分组存储的具体方法如下:
记基于数学拟合实现数据相位调整时对数据的补零插值倍数为I,抽取倍数为D,相位调整点数为M,滤波系数的个数为K,I、D、K都为2的整数次幂;计算得到实际需要存储滤波系数的分组数Q=I/D,则每组滤波系数的个数G=K/I,滤波系数总数W=K/D,第n组滤波系数中第g个滤波系数bqg在原始滤波系数序列中的序号k=M+nD+gI,其中n=0,1,…,Q-1,g=0,1,…,G-1;在多口ROM中设置长度为W的滤波系数存储单元,第n组滤波系数中第g个滤波系数bng在滤波系数存储单元中的存储地址addrng=n*G+g;
乘累加数据存储RAMa、乘累加数据存储RAMb用于形成乒乓结构以存储卷积运算的中间数据,即一个用于读取时,另一个用于写入,卷积运算模块对两个乘累加数据存储RAM进行交替读写;每个乘累加数据存储RAM的存储深度为W,采用循环分块方法对每个乘累加数据存储RAM进行分块,记卷积模块中预设的并行路数为P,则将每个乘累加数据存储RAM划分为P个分块,每个分块包含一个单口RAM,存储深度为H=W/P,第p个分块中第h个地址对应乘累加数据存储RAM中第h*P+p个地址,其中p=0,1,…,P-1,h=0,1,…,H-1;
卷积模块用于根据所接收的采集数据,从滤波系数存储模块中读取相应的滤波系数,进行流水线并行运算,每组滤波系数的并行计算次数V=G/P,卷积模块的具体工作流程包括:
S1:卷积模块第一次工作前,将乘累加数据存储RAMa3、乘累加数据存储RAMb4中每个地址空间清零;
S2:令接收数据序号i=0,计数器count=0;
S3:令分组序号n=0;
S4:令并行序号v=0;
S5:从滤波系数存储模块中读取本次并行计算所需的P个滤波系数,其中第p个滤波系数bn,v,p在滤波系数存储模块所对应的地址addrn,v,p采用如下方式计算:
addrn,v,p=n*G+(G-count-g)mod G
其中,g=v*P+p,mod表示求取余数;
S6:并行计算数据x(i)与步骤S5读取的P个滤波系数的乘累加并进行存储,每个乘累加的计算、存储过程如下:
计算数据x(i)和第p个滤波系数bn,v,p的乘积x(i)*bn,v,p;
当count为偶数,从乘累加数据存储RAMa中第p个分块中第n×V+p个地址中读取数据,将所读取数据与x(i)*bn,v,p相加,将相加结果覆盖写入乘累加数据存储RAMb的第p个分块中第n×P+p个地址中;
当count为奇数,从乘累加数据存储RAMb中第p个分块中第n×V+p个地址中读取数据,将所读取数据与x(i)*bn,v,p相加,将相加结果覆盖写入乘累加数据存储RAMa的第p个分块中第n×P+p个地址中;
S7:判断是否v<V-1,如果是,进入步骤S8,否则进入步骤S9;
S8:令v=v+1,返回步骤S5;
S9:判断是否n<Q,如果是,进入步骤S410,否则进入步骤S411;
S10:令n=n+1,返回步骤S4;
S11:卷积模块向数据选择模块发送数据读取指令,数据读取指令中的信息按照以下方法设置:
当count为偶数,从乘累加数据存储RAMa中读取Q个数据作为卷积运算结果输出,输出数据的地址addr_outn=count+n*G;
当count为奇数,从乘累加数据存储RAMb中读取Q个数据作为卷积运算结果输出,输出数据的地址addr_outn=count+n*G;
S12:更新计算器count=(count+1)modG,结束本次卷积模块的工作;
S13:判断是否需要进行下一个数据的运算,如果是,进入步骤S14,否则卷积模块停止工作;
S14:令i=i+1,返回步骤S3;
数据选择模块用于根据从卷积模块接收的数据读取指令从乘累加数据存储RAMa或乘累加数据存储RAMb中读取卷积运算结果,并按照地址进行顺序输出至格式转换模块;
输出格式转换模块用于接收数据选择模块发送的卷积运算结果,采用输入格式转换模块的逆转换对卷积运算结果进行格式转换,然后将格式转换后的卷积运算结果顺序输出至时钟调整模块;
时钟调整模块用于对格式转换后的卷积运算结果进行缓存,然后按照预设的采样率设置时钟间隔,对卷积运算结果进行等间隔输出,得到输入数据的相位调整结果。
本发明基于FPGA的高精度可重构相位调整IP核,ADC采集数据由输入格式转换模块转换为浮点或定点小数格式,预先将滤波系数分组存储在滤波系数存储模块中,卷积模块从输入格式转换模块和滤波系数存储模块中分别读取采集数据和对应的滤波系数进行卷积运算中的乘法运算,乘累加数据存储模块由两块RAM构成乒乓结构,一块用于读取数据进行加法运算,另一块用于存储加法运算结果计算完成后由数据选择模块从乘累加数据存储RAM中选择需要输出的数据,将其交由输出格式转换模块进行浮点或定点格式转换,并将转换后结果输出。
本发明具有以下技术效果:
(1)支持变采样率相位调整功能,即1点输入多点输出,变采样率倍数由设置的插值数I与抽点数D确定,支持2的整数次幂插值与抽点,其中插值数大于等于抽点数,最小相位调整精度由插值数决定;
(2)支持2的整数次幂路并行卷积计算、每路并行计算实现流水结构,提高运算效率;
(3)采用舍0计算方式,不计算插值后的0值数据,减小运算量以提高运算速率;
(4)采用抽点卷积运算,即只计算相位调整后所需数据点,可固定乘累加数以减少运算量与滤波系数存储空间;
(5)实现基于数据流的卷积方法,即每输入一个数据点就将其于所有系数进行乘法运算,与传统方法相比无需分配存储空间将输入数据进行缓存;
(6)支持系数更新配置,相位精度设置与相位调整点数只需更新相应滤波系数即可实现,无需更改电路结构;
(7)本发明IP核可使用高层次综合(High Level Synthesis)工具(简称HLS工具)进行开发,其可将C/C++代码先转换为verliog代码,再将verliog代码综合实现成特定电路。所有的配置信息都可放入头文件中,以参数形式进行配置修改,更加方便快捷。
附图说明
图1是卷积数为4的单点计算流程图;
图2是卷积数为4的流水线计算流程图;
图3是本发明基于FPGA的高精度可重构相位调整IP核的具体实施方式结构图;
图4是本发明中卷积模块的工作流程图;
图5是本实施例中常规基于补零插值的相位调整方法的示例表;
图6是本实施例乘累加数据存储RAMa3、乘累加数据存储RAMb4的分块示意图;
图7是本实施例中matlab产生的未进行相位调整的理想信号与通过本发明IP核进行相位调整后的波形对比图;
图8是图7的局部放大图;
图9是本实施例中抓取的仿真波形图。
具体实施方式
下面结合附图对本发明的具体实施方式进行描述,以便本领域的技术人员更好地理解本发明。需要特别提醒注意的是,在以下的描述中,当已知功能和设计的详细描述也许会淡化本发明的主要内容时,这些描述在这里将被忽略。
为了更好地说明本发明的技术方案,首先对本发明的原理推导过程进行简要说明。
记ADC采集数据为X=(x(0),x(1),…,x(N-1)),其中x(i)表示第i个采集时刻的数据,i=0,1,…,N-1,N表示采集数据的长度;记滤波系数个数为K,对其进行I倍补零插值,并在x(0)左侧补上K-1个零值,以x0(i0)表示插值后的第i0个数据,i0=0,1,…,I×N-1;以b(k)表示第k个滤波系数,k=0,1,…,K-1;y(j)表示第j个输出结果,j=0,1,…,I×N-1。由卷积计算公式可知,每进行一个点的卷积运算时需要进行K次乘法和K-1次加法。其具体公式如下:
为了得到相位调整后的数据点,对y进行I/D次I倍抽取,以n表示抽取次数,n=0,1,…,I/D-1,M表示相位调整点数,每次抽取的起始地址为M+D×n,I/D次抽取后将得到I/D组数据,每组数据的个数为N,以yn(jn)表示第n组数据中的第jn个数据,其计算公式如下:
其中,jn=0,1,…,N-1。
由于数据x0中有大量的0值,可舍弃0值计算部分,可将上述公式进行简化,其结果如下:
由于上式中x0只含有非补零数据,即x0可用原始数据x进行表示,并且上式中的乘累加项由原来的K项减少为了K/I项,即对于每组yn只有K/I个滤波系数b参与运算,对滤波系数b进行I/D次I倍抽取,以n表示抽取次数,每次抽取的起始地址为M+D×n,I/D次抽取后将得到I/D组数据,每组数据的个数为K/I,以bn(in)表示第n组数据中的第in个数据,将其带入上式可得:
通过该式进行相位调整时,可省去补零数据,直接使用原始数据进行卷积,对于滤波系数,将原滤波系数进行抽取分组,每组yn只需要使用对应bn即可,该算法将原始方法得卷积运算量减少为了原来的1/I,将K个滤波系数减少为了原来的D/I,实现运算量与存储空间的节省。
为了实现上式中卷积运算的并行化与流水化,本发明采用一种基于数据流的计算方式,其具体过程如下:
由于数据信号不会在同一时钟接收到,故每个输出结果无法实现在单个时钟周期就计算出结果,根据数据信号流水输入的特点,每个乘累加结果也可采用流水形式进行计算。以单组卷积运算为例,多组情况只是串行执行多次单组运算,故在此不再累述。图1是卷积数为4的单点计算流程图。如图1所示,每输入一个数据就需要进行一组乘与加操作,4个周期后完成一个点的输出。由于数据是顺序到来,为了实现每个周期都有一个数据点的输出,则需要同时进行4路的乘与加操作。
图2是卷积数为4的多路并行计算流程图。如图2所示,此为4行独立计算过程,每行运算之间没有数据依赖,可分配单独的运算资源与存储空间。对于完整的连续计算而言,每个运算周期按列运算,即每个输入数据需要在一次计算周期内完成与所有滤波系数的乘法运算,并于上周期的结果进行加法。从行运算角度来看,每个计算结果需要完成四个周期的乘与加操作后才会输出,第一行第一个计算结果在第四个周期后即可输出,第二行第一个计算结果在第五个周期后输出,以此类推,每个计算周期结束都会选择一行数据进行输出,即为连续输出。该计算方式的计算速率,取决于两次点数输出的时钟间隔,即取决于每个周期计算速度的快慢;为了提升速度,以实现更高采样率的实时运算,可通过流水与并行的方式进行多个乘与加操作。对于流水计算,每次乘与加消耗的资源可实现复用,每次相差一个时钟周期进行,完成四次运算只需要比完成一次运算多消耗三个时钟周期。当K数较大时,还可进一步采用并行的方式,其只需要复制多个运算资源,同时参与计算,进一步减少时钟周期。
从上述说明可知,该方法的优势在于,在每组流水线中,每个输入数据只需读取一次,并按照一定算法规则与所有滤波系数进行乘法运算,故无需对输入数据进行缓存,减少了存储空间,同时该方法解决了卷积运算中数据依赖的问题,即每个计算周期内,每次加法运算不需要使用其他乘积项的计算结果,故可实现并行。
基于以上分析,本发明提出了基于FPGA的高精度可重构相位调整IP核。图3是本发明基于FPGA的高精度可重构相位调整IP核的具体实施方式结构图。如图3所示,本发明基于FPGA的高精度可重构相位调整IP核包括输入格式转换模块1、滤波系数存储模块2、乘累加数据存储RAMa3、乘累加数据存储RAMb4、卷积模块5、数据选择模块6、输出格式转换模块7以及时钟调整模块8,以上模块均在FPGA中实现。下面分别对各个模块进行详细说明。
输入格式转换模块1用于根据设置将输入的ADC采集数据转换为浮点或定点小数格式,得到转换后的采集数据x(i),i=0,1,2,…将转换后的数据发送至卷积模块5。由于输入数据为ADC采集后的量化数据,其可能为无符号整数与有符号整数两种形式,该模块支持两种形式数据编码格式的转换,其转换结果支持浮点与定点两种类型。本实施例中对于浮点转换,支持32位单精度浮点格式与64位双精度浮点格式;对于定点转换,支持任意位宽设置,整数部分位宽与小数部分位宽可根据实际ADC位数与所需计算精度确定。以上所有格式的转换都在工程头文件中直接设置实现。
滤波系数存储模块2用于接收预先计算好的FIR滤波系数序列,采用多口ROM对滤波系数进行分组存储。采用多口ROM是为了实现之前所述算法的并行化,解决多路并行运算时的读取端口数量不足的问题,端口数需要大于等于卷积模块3中的并行路数P。FIR滤波系数序列预先根据确定所需的相位调整精度与相位调整点数,由MATLAB生成即可,通过这种方式也可实现相位精度与调整点数的更新设置。滤波系数的分组存储方式采用以下方法确定:
根据实际采样率的不同,为达到某一特定的相位调整精度,需要设置不同的插值数I,I值越大其需要的FIR截止频率就越低,为保证低截止频率的衰减效果足够好,所需的滤波器阶数就会要求更高。由于本发明采用舍零计算的方式,故不需要存储全部滤波器系数,记基于数学拟合实现数据相位调整时对数据的补零插值倍数为I,抽取倍数为D,相位调整点数为M,则实际需要存储滤波系数的分组数Q=I/D,每组滤波系数的个数G=K/I,(以上K、I、D、G都为2的整数次幂),即总共需要存储滤波系数总数W=K/D。
系数的选择满足以下规律,假设原始系数地址由0到K-1表示,则实际系数的选取方式按照组数依次进行,第一组中系数的起始地址为M,其后系数依次增加I,即M+I、M+2I依次类推;第二组在第一组的基础上增加D,即起始地址为M+D,其后系数满足第一组中的相同规律,即M+D+I、M+D+2I等依次类推;之后各组同样满足相同规律,每个系数的地址再依次增加D,对于第Q组,其系数的起始地址为M+(Q-1)D,其后系数依次增加I,即M+(Q-1)D+I、M+(Q-1)D+2I依次类推。根据该规律总结可知,第n组滤波系数中第g个滤波系数bng在原始滤波系数序列中的序号k=M+nD+gI,其中n=0,1,…,Q-1,g=0,1,…,G-1。
完成系数选择后进行分组存储即可。本发明在多口ROM中设置长度为W的系数存储单元,将选择后的系数按照组数依次顺序存储,即ROM中的前G个地址依次存储第一组系数,G+1到2G个地址存储第二组系数,其后存储方式依次类推。即第n组滤波系数中第g个滤波系数bng在滤波系数存储单元中的存储地址addrng的计算公式为:
addrng=n*G+g
在实际应用中,如果要获取不同多个不同插值参数与相位调整点数的相位调整结果,可以将不同参数对应的滤波系数在滤波系数存储模块2中进行分组存储,便于后续读取使用。
乘累加数据存储RAMa3、乘累加数据存储RAMb4用于形成乒乓结构以存储卷积运算的中间数据,即一个用于读取时,另一个用于写入,卷积模块5对两个乘累加数据存储RAM进行交替读写。每个乘累加数据存储RAM的存储深度为W。由于本发明中采用在每个数据到来,与各个系数相乘时采用并行以节约运算时间,需要对每个乘累加数据存储RAM按照并行路数进行分块,记卷积模块5中预设的并行路数为P,则将每个乘累加数据存储RAM划分为P个分块,每个分块包含一个单口RAM,存储深度为H=W/P。本发明中采用循环分块方法(Cyclic,简称C方法),第p个分块中第h个地址对应乘累加数据存储RAM中第h*P+p个地址,其中p=0,1,…,P-1,h=0,1,…,H-1。在实际应用中,地址的分块管理采用工具实现即可。上述RAM都可选择使用BRAM与DRAM两种FPGA资源进行实现,只需通过HLS工具中的pragmaHLS bind_storage设置指令对资源类型进行设置实现。在实际应用中,为了实现并行路数的灵活调整,可以按照可选的并行路数对乘累加数据存储RAMa3和乘累加数据存储RAMb4中的单口RAM数量进行配置。
卷积模块5用于根据所接收的采集数据,从滤波系数存储模块中读取相应的滤波系数,进行流水线并行运算,每组滤波系数的并行计算次数V=G/P。图4是本发明中卷积模块的工作流程图。如图4所示,本发明中卷积模块5的工作流程包括以下步骤:
S401:清零乘累加数据存储RAM:
卷积模块5第一次工作前,将乘累加数据存储RAMa3、乘累加数据存储RAMb4中每个地址空间清零。
S402:令接收数据序号i=0,计数器count=0。
S403:令分组序号n=0。
S404:令并行序号v=0。
S405:读取滤波系数:
从滤波系数存储模块2中读取本次并行计算所需的P个滤波系数,其中第p个滤波系数bn,v,p在滤波系数存储模块2所对应的地址addrn,v,p采用如下方式计算:
addrn,v,p=n*G+(G-count-g)modG
其中,g=v*P+p,mod表示求取余数。
S406:并行计算乘累加:
并行计算数据x(i)与步骤S405读取的P个滤波系数的乘累加并进行存储,每个乘累加的计算、存储过程如下:
计算数据x(i)和第p个滤波系数bn,v,p的乘积x(i)*bn,v,p;
当count为偶数,从乘累加数据存储RAMa3中第p个分块中第n×V+p个地址中读取数据,将所读取数据与x(i)*bn,v,p相加,将相加结果覆盖写入乘累加数据存储RAMb4的第p个分块中第n×P+p个地址中。
当count为奇数,从乘累加数据存储RAMb4中第p个分块中第n×V+p个地址中读取数据,将所读取数据与x(i)*bn,v,p相加,将相加结果覆盖写入乘累加数据存储RAMa3的第p个分块中第n×P+p个地址中。
S407:判断是否v<V-1,如果是,进入步骤S408,否则进入步骤S409。
S408:令v=v+1,返回步骤S405。
S409:判断是否n<Q,如果是,进入步骤S410,否则进入步骤S411。
S410:令n=n+1,返回步骤S404。
S411:卷积运算结果输出:
卷积模块5向数据选择模块6发送数据读取指令,数据读取指令中的信息按照以下方法设置:
当count为偶数,从乘累加数据存储RAMa3中读取Q个数据作为卷积运算结果输出,输出数据的地址addr_outn=count+n*G。
当count为奇数,从乘累加数据存储RAMb4中读取Q个数据作为卷积运算结果输出,输出数据的地址addr_outn=count+n*G。
S412:更新计数器count=(count+1)modG,即count每当等于G时即重置为0,自此结束本次卷积模块5的工作。
S413:判断是否需要进行下一个数据的运算,如果是,进入步骤S414,否则卷积模块5停止工作。
S414:令i=i+1,卷积模块5开始再次执行工作,即返回步骤S403,重复上述流程。
数据选择模块6用于根据从卷积模块5接收的数据读取指令从乘累加数据存储RAMa3或乘累加数据存储RAMb4中读取卷积运算结果,并按照地址进行顺序输出至格式转换模块7。
输出格式转换模块7用于接收数据选择模块6发送的卷积运算结果,采用输入格式转换模块1的逆转换对卷积运算结果进行格式转换,即可选择浮点与定点两种格式,唯一的区别是在采用了四舍五入的方式将计算的小数结果转换为整数结果输出。然后将格式转换后的卷积运算结果顺序输出至时钟调整模块8。
时钟调整模块8用于对格式转换后的卷积运算结果进行缓存,然后按照预设的采样率设置时钟间隔,对卷积运算结果进行等间隔输出,得到输入数据的相位调整结果。这是因为卷积模块5对于单次运算的多个输出数据都间距一个时钟周期的输出,但多次运算间的输出数据则会间隔多个时钟周期,即所有输出数据并未实现均匀时钟间隔输出,因此需要进行时钟调整。
实施例1
为了说明本发明中卷积模块5的运算过程,采用一个简单示例对卷积模块5的工作流程进行举例说明。
本实施例中补零插值倍数I=4,抽取倍数D=2,相位调整点数为M=1,滤波系数的个数为K=8,因此分组数Q=I/D=2,滤波系数分组存储时每组滤波系数的个数G=K/I=2,则滤波系数总数W=K/D=4。
图5是本实施例中常规基于补零插值的相位调整方法的示例表。如图X所示,由于存在补零,进行了大量的0值计算,存在多余的运算量。
表1是本示例中滤波系数分组存储表。
分组序号 | 滤波系数0 | 滤波系数1 |
0 | b(1) | b(5) |
1 | b(3) | b(7) |
表1
如图1所示,本实施例中共需存储4个滤波系数,按照地址顺序依次为b(1)、b(5)、b(3)、b(7),在滤波系数存储模块2中的地址依次为0,1,2,3。
本实施例中乘累加数据存储RAMa3、乘累加数据存储RAMb4的存储深度为4,假设卷积运算模块的并行数P=2,因此乘累加数据存储RAMa3、乘累加数据存储RAMb4的分块数也为2。图6是本实施例乘累加数据存储RAMa3、乘累加数据存储RAMb4的分块示意图。如图6所示,将存储地址由0到3表示,将地址0中数据划分为第一块,地址1中数据划分为第二块,地址2中数据从新计数划分为第一块、地址3中数据继续划分为第二块。
卷积模块5对乘累加数据存储RAMa3、乘累加数据存储RAMb4进行清零,然后进行卷积计算,其工作流程如下:
当接收到数据x(0),此时计数器count=0。
首先计算与第0组滤波系数的乘累加。由于并行数P=2,则并行计算次数V=G/P=1,因此第0次并行计算时第0个滤波系数在滤波系数存储模块2的地址addr0,0,0的计算公式如下:
addr0,0,0=0*2+(2-0-(0*2+0))mod2=0
即第0个滤波系数b0,0,0=b(1)。
计算得到x(0)×b(1),由于此时count为偶数,因此从乘累加数据存储RAMa3中第0个分块中第n×V+v=0×1+0=0个地址(即乘累加数据存储RAMa3的第0个地址)中读取数据0,将所读取数据0与x(0)×b(1)相加,将相加结果x(0)×b(1)覆盖写入乘累加数据存储RAMb4的第0个分块的第0个地址(即乘累加数据存储RAMb4的第0个地址)中。
同理,第0次并行计算时第1个滤波系数在滤波系数存储模块2的地址addr0,0,1的计算公式如下:
addr0,0,1=0*2+(2-0-(0*2+1))mod2=1
即第0个滤波系数b0,0,1=b(5)。
计算得到x(0)×b(5),由于此时count为偶数,因此从乘累加数据存储RAMa3中第1个分块中第0×1+0=0个地址(即乘累加数据存储RAMa3的第1个地址)中读取数据0,将所读取数据0与x(0)×b(5)相加,将相加结果x(0)×b(5)覆盖写入乘累加数据存储RAMb4的第1个分块的第0个地址(即乘累加数据存储RAMb4的第1个地址)中。
然后计算与第1组滤波系数的乘累加,即n=1。因此第0次并行计算时第0个滤波系数在滤波系数存储模块2的地址addr1,0,0的计算公式如下:
addr1,0,0=1*2+(2-0-(0*2+0))mod2=2
即第0个滤波系数b1,0,0=b(3)。
计算得到x(0)×b(3),由于此时count为偶数,因此从乘累加数据存储RAMa3中第0个分块中第n×V+v=1×1+0=1个地址(即乘累加数据存储RAMa3的第2个地址)中读取数据0,将所读取数据0与x(0)×b(3)相加,将相加结果x(0)×b(3)覆盖写入乘累加数据存储RAMb4的第0个分块的第1个地址(即乘累加数据存储RAMb4的第2个地址)中。
同理,第0次并行计算时第1个滤波系数在滤波系数存储模块2的地址addr1,0,1的计算公式如下:
addr0,0,1=1*2+(2-0-(0*2+1))mod2=3
即第1个滤波系数b1,0,1=b(7)。
计算得到x(0)×b(7),由于此时count为偶数,因此从乘累加数据存储RAMa3中第1个分块中第1×1+0=1个地址((即乘累加数据存储RAMa3的第3个地址)中读取数据0,将所读取数据0与x(0)×b(7)相加,将相加结果x(0)×b(7)覆盖写入乘累加数据存储RAMb4的第1个分块的第1个地址(即乘累加数据存储RAMb4的第3个地址)中。
由于本实施例中只执行第0次并行计算,因此接下来对当前时刻得到的乘累加结果进行输出,由于本实施例中有2组滤波系数,且此时count为偶数,因此选择从乘累加数据存储RAMb4进行数据输出,输出数据的地址为:
addr_out0=0+0*2=0
addr_out1=0+1*2=2
此时地址addr_out0的数据x(0)×b(1)即为第0组卷积结果中的y0(0),地址addr_out1的数据x(0)×b(3)即为第1组卷积结果中的y1(0),顺序输出即可,然后将相应地址中的数据重置为0。
然后接收到数据x(1),此时计数器count=1。
首先计算与第0组滤波系数的乘累加。同理第0次并行计算时第0个滤波系数在滤波系数存储模块2的地址addr0,0,0的计算公式如下:
addr0,0,0=0*2+(2-1-(0*2+0))mod2=1
即第0个滤波系数b0,0,0=b(5)。
计算得到x(1)×b(5),由于此时count为奇数,因此从乘累加数据存储RAMb4中第0个分块中第0个地址(即乘累加数据存储RAMb4的第0个地址)中读取数据0,将所读取数据0与x(1)×b(5)相加,将相加结果x(1)×b(5)覆盖写入乘累加数据存储RAMa3的第0个分块的第0个地址(即乘累加数据存储RAMa3的第0个地址)中。
同理第0次并行计算时第1个滤波系数在滤波系数存储模块2的地址addr0,0,1的计算公式如下:
addr0,0,1=0*2+(2-1-(0*2+1))mod2=0
即第0个滤波系数b1,0,0=b(1)。
计算得到x(1)×b(1),由于此时count为奇数,因此从乘累加数据存储RAMb4中第1个分块中第0个地址中(即乘累加数据存储RAMb4的第1个地址)读取数据x(0)×b(5),将所读取数据x(0)×b(5)与x(1)×b(1)相加,将相加结果x(0)×b(5)+x(1)×b(1)覆盖写入乘累加数据存储RAMa3的第1个分块的第0个地址(即乘累加数据存储RAMa3的第1个地址)中。
然后计算与第1组滤波系数的乘累加,即n=1。同理计算第0次并行计算时第0个滤波系数在滤波系数存储模块2的地址addr1,0,0的计算公式如下:
addr1,0,0=1*2+(2-1-(0*2+0))mod2=3
即第0个滤波系数b1,0,0=b(7)。
计算得到x(1)×b(7),由于此时count为偶数,因此从乘累加数据存储RAMb4中第0个分块中第1个地址(即乘累加数据存储RAMb4的第2个地址)中读取数据0,将所读取数据0与x(1)×b(7)相加,将相加结果x(1)×b(7)覆盖写入乘累加数据存储RAMa3的第0个分块的第1个地址(即乘累加数据存储RAMa3的第2个地址)中。
同理,第0次并行计算时第1个滤波系数在滤波系数存储模块2的地址addr1,0,1的计算公式如下:
addr1,0,1=1*2+(2-1-(0*2+1))mod2=2
即第0个滤波系数b1,0,1=b(3)。
计算得到x(1)×b(3),由于此时count为奇数,因此从乘累加数据存储RAMb4中第1个分块中第1个地址(即乘累加数据存储RAMb4的第3个地址)中读取数据x(0)×b(7),将所读取数据x(0)×b(7)与x(1)×b(3)相加,将相加结果x(0)×b(7)+x(1)×b(3)覆盖写入乘累加数据存储RAMa3的第1个分块的第1个地址(即乘累加数据存储RAMa3的第3个地址)中。
接下来对当前时刻得到的乘累加结果进行输出,由于本实施例中有2组滤波系数,且此时count为奇数,因此选择从乘累加数据存储RAMa3进行数据输出,输出数据的地址为:
addr_out0=1+0*2=1
addr_out1=1+1*2=3
此时地址addr_out0的数据x(0)×b(5)+x(1)×b(1)即为第0组卷积结果中的y0(1),地址addr_out1的数据x(0)×b(7)+x(1)×b(3)即为第1组卷积结果中的y1(1),顺序输出即可,然后将相应地址中的数据重置为0。
以此类推,继续进行下个数据的计算,直至该IP不再进行下个数据的运算,则卷积模块5停止工作。
与图5中常规的基于补零插值的相位调整方法的结果对比可知,采用本发明所计算得到的结果与常规方法是一致的。
实施例2
为了更好地说明本发明的技术效果,采用一个具体实例进行实验验证。本例采用16位ADC以采样率fs为1MSPS,对信号频率f0为10KSPS的标准正弦信号进行采样。设置插值数I为128、抽取数D为64。滤波系数选用汉明窗,设置完整的滤波系数个数K为16384,卷积运算的组数Q为2,按照本发明中的方法对滤波系数进行分级存储,每组滤波系数个数G为128。以N为8192点的采集数据作为输入数据进行相位调整,设置相位调整量M为32。数据位宽采用32位进行传入与输出,内部计算采用32位定点格式,其中高16位为整数部分,第16位为小数部分。
表2是本实施例中相位调整IP核的端口设置情况。
表2
时钟与控制信号,使用ap_ctlr_hs协议,clk为时钟信号,rst为复位信号,高电位为复位状态,start为模块工作开关信号,高电位开启模块,ready为模块准备信号,高电位表示模块处于工作状态,idle为模块空闲信号,高电位表示模块为执行任务,等待输入,done为模块工作信号,高电位表是模块正在执行任务。
数据控制信号,使用ap_vld协议,每对数据读写采用一个数据信号和一个数据有效信号的形式,只有当有效信号拉高时数据读写才会执行。
上述端口为HLS工具提供的标准协议,故具体情况不再详述。
然后通过仿真对比本发明相位调整IP核的计算效果。图7是本实施例中matlab产生的未进行相位调整的理想信号与通过本发明IP核进行相位调整后的波形对比图。如图7所示,由于相位调整精度较高,matlab仿真结果与本发明IP核仿真结果的图形基本重合,观察不明显,将其局部放大。图8是图7的局部放大图。图9是本实施例中抓取的仿真波形图。如图7-图9所示,本发明IP核实现了相位调整的功能。
为说明本发明IP核实现并行计算后的资源与时间消耗情况,本实例选择使用DRAM作为存储资源,使用DSP48作为运算资源。表3是选用不同并行数时的资源与时间消耗情况对比表。
表3
如表3所示,本发明IP核可通过增加并行数的方式减少时钟周期,提高运算速率,只是并行数越多资源消耗也越大。本发明IP核支持并行数的设置,在实际工程运用中,可通过对时间与资源的消耗进行评估,选择合适的并行数以使两者达到均衡,这也是本发明较其他方法的一个重要优势。
最后需要说明的是,本发明IP核在开发时可以使用高层次综合,即HLS工具,其较传统使用verilog语言进行开发具有快速、高效以及灵活等特点,对于实现不同阶数、不同相位调整点数以及不同并行数的电路只需更改设计参数即可实现快速配置。
综上所述,本发明IP核通过依靠本身算法的设计特点,结合HLS工具的优势,使该IP核具有极高的适用性、灵活性和可配置性,通过可重构并行数的方式以适用不同的资源限制与性能需求。
尽管上面对本发明说明性的具体实施方式进行了描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
Claims (1)
1.一种基于FPGA的高精度可重构相位调整IP核,其特征在于包括输入格式转换模块、滤波系数存储模块、乘累加数据存储RAMa、乘累加数据存储RAMb、卷积模块、数据选择模块、输出格式转换模块以及时钟调整模块,其中:
输入格式转换模块用于根据设置将输入的ADC采集数据转换为浮点或定点小数格式,得到转换后的采集数据x(i),i=0,1,2,…,将转换后的数据发送至卷积模块;
滤波系数存储模块用于接收预先计算好的FIR滤波系数序列,采用多口ROM对滤波系数进行分组存储,端口数需要大于等于卷积模块中的并行路数P,分组存储的具体方法如下:
记基于数学拟合实现数据相位调整时对数据的补零插值倍数为I,抽取倍数为D,相位调整点数为M,滤波系数的个数为K,I、D、K都为2的整数次幂;计算得到实际需要存储滤波系数的分组数Q=I/D,则每组滤波系数的个数G=K/I,滤波系数总数W=K/D,第n组滤波系数中第g个滤波系数bqg在原始滤波系数序列中的序号k=M+nD+gI,其中n=0,1,…,Q-1,g=0,1,…,G-1;在多口ROM中设置长度为W的滤波系数存储单元,第n组滤波系数中第g个滤波系数bng在滤波系数存储单元中的存储地址addrng=n*G+g;
乘累加数据存储RAMa、乘累加数据存储RAMb用于形成乒乓结构以存储卷积运算的中间数据,即一个用于读取时,另一个用于写入,卷积运算模块对两个乘累加数据存储RAM进行交替读写;每个乘累加数据存储RAM的存储深度为W,采用循环分块方法对每个乘累加数据存储RAM进行分块,记卷积模块中预设的并行路数为P,则将每个乘累加数据存储RAM划分为P个分块,每个分块包含一个单口RAM,存储深度为H=W/P,第p个分块中第h个地址对应乘累加数据存储RAM中第h*P+p个地址,其中p=0,1,…,P-1,h=0,1,…,H-1;
卷积模块用于根据所接收的采集数据,从滤波系数存储模块中读取相应的滤波系数,进行流水线并行运算,每组滤波系数的并行计算次数V=G/P,卷积模块的具体工作流程包括:
S1:卷积模块第一次工作前,将乘累加数据存储RAMa3、乘累加数据存储RAMb4中每个地址空间清零;
S2:令接收数据序号i=0,计数器count=0;
S3:令分组序号n=0;
S4:令并行序号v=0;
S5:从滤波系数存储模块中读取本次并行计算所需的P个滤波系数,其中第p个滤波系数bn,v,p在滤波系数存储模块所对应的地址addrn,v,p采用如下方式计算:
addrn,v,p=n*G+(G-count-g)modG
其中,g=v*P+p,mod表示求取余数;
S6:并行计算数据x(i)与步骤S5读取的P个滤波系数的乘累加并进行存储,每个乘累加的计算、存储过程如下:
计算数据x(i)和第p个滤波系数bn,v,p的乘积x(i)*bn,v,p;
当count为偶数,从乘累加数据存储RAMa中第p个分块中第n×V+p个地址中读取数据,将所读取数据与x(i)*bn,v,p相加,将相加结果覆盖写入乘累加数据存储RAMb的第p个分块中第n×P+p个地址中;
当count为奇数,从乘累加数据存储RAMb中第p个分块中第n×V+p个地址中读取数据,将所读取数据与x(i)*bn,v,p相加,将相加结果覆盖写入乘累加数据存储RAMa的第p个分块中第n×P+p个地址中;
S7:判断是否v<V-1,如果是,进入步骤S8,否则进入步骤S9;
S8:令v=v+1,返回步骤S5;
S9:判断是否n<Q,如果是,进入步骤S410,否则进入步骤S411;
S10:令n=n+1,返回步骤S4;
S11:卷积模块向数据选择模块发送数据读取指令,数据读取指令中的信息按照以下方法设置:
当count为偶数,从乘累加数据存储RAMa中读取Q个数据作为卷积运算结果输出,输出数据的地址addr_outn=count+n*G;
当count为奇数,从乘累加数据存储RAMb中读取Q个数据作为卷积运算结果输出,输出数据的地址addr_outn=count+n*G;
S12:更新计算器count=(count+1)modG,结束本次卷积模块的工作;
S13:判断是否需要进行下一个数据的运算,如果是,进入步骤S14,否则卷积模块停止工作;
S14:令i=i+1,返回步骤S3;
数据选择模块用于根据从卷积模块接收的数据读取指令从乘累加数据存储RAMa或乘累加数据存储RAMb中读取卷积运算结果,并按照地址进行顺序输出至格式转换模块;
输出格式转换模块用于接收数据选择模块发送的卷积运算结果,采用输入格式转换模块的逆转换对卷积运算结果进行格式转换,然后将格式转换后的卷积运算结果顺序输出至时钟调整模块;
时钟调整模块用于对格式转换后的卷积运算结果进行缓存,然后按照预设的采样率设置时钟间隔,对卷积运算结果进行等间隔输出,得到输入数据的相位调整结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111037542.2A CN113778940B (zh) | 2021-09-06 | 2021-09-06 | 基于fpga的高精度可重构相位调整ip核 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111037542.2A CN113778940B (zh) | 2021-09-06 | 2021-09-06 | 基于fpga的高精度可重构相位调整ip核 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113778940A CN113778940A (zh) | 2021-12-10 |
CN113778940B true CN113778940B (zh) | 2023-03-07 |
Family
ID=78841152
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111037542.2A Active CN113778940B (zh) | 2021-09-06 | 2021-09-06 | 基于fpga的高精度可重构相位调整ip核 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113778940B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115640493A (zh) * | 2022-10-28 | 2023-01-24 | 成都医学院 | 基于fpga的分段线性分数阶运算ip核 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102412808A (zh) * | 2011-11-25 | 2012-04-11 | 南京中兴特种软件有限责任公司 | 一种基于fpga的高性能多路fir数字抽取滤波器及其读写方法 |
CN108418773A (zh) * | 2017-12-22 | 2018-08-17 | 西安烽火电子科技有限责任公司 | 一种基于滤波器组的fpga多载波通信系统 |
CN109784489A (zh) * | 2019-01-16 | 2019-05-21 | 北京大学软件与微电子学院 | 基于fpga的卷积神经网络ip核 |
CN109828744A (zh) * | 2019-01-18 | 2019-05-31 | 东北师范大学 | 一种基于fpga的可配置浮点向量乘法ip核 |
US10491261B1 (en) * | 2014-11-06 | 2019-11-26 | Abdullah A. Al-Eidan | Multi carrier frequency modulation spread spectrum communication system |
CN113157637A (zh) * | 2021-04-27 | 2021-07-23 | 电子科技大学 | 一种基于fpga的大容量可重构的fft运算ip核 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110113082A1 (en) * | 2007-02-07 | 2011-05-12 | Amirhossein Alimohammad | Signal filtering and filter design techniques |
-
2021
- 2021-09-06 CN CN202111037542.2A patent/CN113778940B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102412808A (zh) * | 2011-11-25 | 2012-04-11 | 南京中兴特种软件有限责任公司 | 一种基于fpga的高性能多路fir数字抽取滤波器及其读写方法 |
US10491261B1 (en) * | 2014-11-06 | 2019-11-26 | Abdullah A. Al-Eidan | Multi carrier frequency modulation spread spectrum communication system |
CN108418773A (zh) * | 2017-12-22 | 2018-08-17 | 西安烽火电子科技有限责任公司 | 一种基于滤波器组的fpga多载波通信系统 |
CN109784489A (zh) * | 2019-01-16 | 2019-05-21 | 北京大学软件与微电子学院 | 基于fpga的卷积神经网络ip核 |
CN109828744A (zh) * | 2019-01-18 | 2019-05-31 | 东北师范大学 | 一种基于fpga的可配置浮点向量乘法ip核 |
CN113157637A (zh) * | 2021-04-27 | 2021-07-23 | 电子科技大学 | 一种基于fpga的大容量可重构的fft运算ip核 |
Non-Patent Citations (4)
Title |
---|
"A Wireless Charging System Applying Phase-Shift and Amplitude Control to Maximize Efficiency and Extractable Power";Andreas Berger .etc;《IEEE Transactions on Power Electronics》;第30卷(第11期);第6338-6348页 * |
"An FPGA-based Direct Sampling and Digital Processing System for Wideband and Narrowband Radar Signal";Yingxiao Zhao .etc;《Journal of Physics: Conference Series》;第1624卷;第1-9页 * |
"基于FPGA的可重构定时器IP核设计";余玲;《轻工科技》(第7期);第86-88页 * |
"基于FPGA的高精度全数字锁相环IP核设计";杨秀增 等;《计算机测量与控制》;第18卷(第9期);第2127-2129页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113778940A (zh) | 2021-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100499371C (zh) | 一种可编程内插滤波器装置及其实现方法 | |
CN103870438B (zh) | 一种利用数论变换计算循环卷积的电路结构 | |
CN107612523B (zh) | 一种基于软件查表法的fir滤波器实现方法 | |
CN107196881B (zh) | 一种高动态脉冲成形信号模拟方法和装置 | |
CN113778940B (zh) | 基于fpga的高精度可重构相位调整ip核 | |
CN110058201B (zh) | 一种基于fpga资源复用实现多波形多速率时域脉压的方法 | |
CN105117196A (zh) | 一种基于FPGA的并行结构Sinc插值方法 | |
US7046723B2 (en) | Digital filter and method for performing a multiplication based on a look-up table | |
CN104202016A (zh) | 一种基于查表法的任意倍可变的信号升采样实现方法及系统 | |
CN104077492A (zh) | 一种基于fpga的采样数据内插方法 | |
CN102841880B (zh) | 一种基于数字信号处理器快速频谱细化的方法 | |
US8755460B2 (en) | Phase aligned sampling of multiple data channels using a successive approximation register converter | |
RU2700194C1 (ru) | Унифицированная реконфигурируемая схема коммутации быстрого преобразования фурье и способ её формирования | |
TWI444837B (zh) | 固定係數型可變質數長度遞迴式離散傅立葉轉換之系統 | |
CN114124034A (zh) | 一种基于fpga的高速并行插值滤波器设计 | |
CN115640493A (zh) | 基于fpga的分段线性分数阶运算ip核 | |
CN203617974U (zh) | 一种基于fpga的可配置系数的滤波器及电子设备 | |
US4313195A (en) | Reduced sample rate data acquisition system | |
CN116111982A (zh) | 一种基于fpga的iir滤波方法、存储介质及装置 | |
CN108900177B (zh) | 一种fir滤波器对数据进行滤波的方法 | |
CN100517968C (zh) | 一种用于电能计量的希尔伯特滤波器 | |
CN115549644A (zh) | 一种fir滤波器 | |
RU188978U1 (ru) | Унифицированная реконфигурируемая схема коммутации быстрого преобразования фурье | |
CN107193784B (zh) | 高精度低硬件复杂度的sinc插值实现方法及系统 | |
TW201724089A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |