您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 电子设计/PCB > 基于xlinxFPGA的滤波器设计
11基于FPGA的滤波器的设计严云祥2009年7月15日南京邮电大学通信与信息工程学院2目录目录Contents基于XilinXIPCore设计滤波器滤波器的串行设计与实现14滤波器的并行设计与实现2滤波器的分布式设计与实现33滤波器的串行设计与实现10Nnniiiyxh通用的FIR滤波器的公式:滤波器的实质就是做一个乘累加运算,一次滤波乘累加运算的次数由滤波器的阶数决定!4滤波器的串行设计与实现滤波器的串行结构:5滤波器的串行设计与实现最高输入采样率=时钟速度/抽头数例如:数据的采样率是1MHz,滤波器的阶数是96阶,那么系统时钟必须大于96MHz,只有这样才能在一个数据周期内完成一次完整的滤波计算优点:这种结构的滤波器所用资源比较少,只需要一个RAM块、一个乘累加器就可以完成整个滤波计算。缺点:这种滤波器最大的缺点就是滤波器速度慢。6滤波器的串行设计与实现如果系数具有对称性,那么可以采用如下结构实现:7滤波器的串行设计与实现数据采样率=时钟速度/(1/2*抽头数)这种设计结构需要一个预加法器。这种基于逻辑结构的加法器的性能代表了通过滤波器的关键通道并限制了最高时钟速度。滤波器需要额外的资源支持对称。与预加法器一起需要三个存储器端口。由于数据是在一个端口上正向读出和在另一个端口反向读出,因此控制部分提高了资源消耗。只有需要额外的采样率性能时才使用该方法8目录目录Contents基于XilinxIPCore设计滤波器滤波器的串行设计与实现14滤波器的并行设计与实现2滤波器的分布式设计与实现39滤波器的并行设计与实现并行滤波器应用前提:随着采样速率的提高和滤波器阶数的增加,滤波器的串行结构已无法实现了由于FPGA的“硬件软化”的性质,FPGA设计者可以利用多样的滤波器架构,所选的架构通常取决于在可用的时钟周期数内所需的处理量。两个最重要的因子为:●采样速率(Fs)●滤波器的阶数(N)10滤波器的并行设计与实现FIR滤波器的基本并行架构:并行结构的性能:最大输入采样率=时钟速率11滤波器的并行设计与实现直接形式类型I使用了一个加法器的树形结构。这使得它很难串联起来。在Virtex-4和Virtex-5系列上非常容易实现转置FIR滤波器结构。转置FIR滤波器:12滤波器的并行设计与实现输入的数据同时广播到所有的乘法器,系数从右至左排列,第一个系数h0在最右边。这些结果被馈入流水线形式的加法器链,加法器链可看作数据的缓冲器,它存储了先前计算的内积。重新排列的结构生成了与直接形式架构相同的结果,但是因加法器链的使用而获得了更多好处。这个不同的结构容易映射到DSP48Slice中而不用附加外部逻辑。转置FIR滤波器:13滤波器的并行设计与实现第四个时钟周期第五个时钟周期第六个时钟周期第七个时钟周期第4~1个DSP48输出为x0*h3、x0*h2、x0*h1、x0*h0;结果输出为x0*h0第4个DSP48输出x1*h3;第3个DSP48输出x1*h2+x0*h3;第2个DSP48输出x1*h1+x0*h2;第1个DSP48输出x1*h0+x0*h1;结果输出为x1*h0+x0*h1第4个DSP48输出x2*h3;第3个DSP48输出x2*h2+x1*h3;第2个DSP48输出x2*h1+x1*h2+x0*h3;第1个DSP48输出x2*h0+x1*h1+x0*h2;结果输出为x2*h0+x1*h1+x0*h2第七个时钟周期:第4个DSP48输出x3*h3;第3个DSP48输出x3*h2+x2*h3;第2个DSP48输出x3*h1+x2*h2+x1*h3;第1个DSP48输出x3*h0+x2*h1+x1*h2+x0*h3;结果输出为:x3*h0+x2*h1+x1*h2+x0*h3转置FIR滤波器分析:14滤波器的并行设计与实现转置FIR滤波器优、缺点:有限性能:如果抽头很多,其性能将受高扇出输入信号所限制。延时时间短:从包含第一个系数的Slice算去,最大时延时间不超过流水线时间。通常,从输入到输出有3个时钟周期的延时。到DSP48Slice的高效映射:转置FIR滤波器的加法器链结构使得映射能够进行。这种可扩展的结构既支持大的也支持小的FIR滤波器。无外部逻辑:无需外部FPGA逻辑资源,这样可获得最高性能缺点转置FIR滤波器优点15滤波器的并行设计与实现脉动FIR滤波器被认为是并行滤波器结构中的最优结构。脉动FIR滤波器也使用加法器链来利用DSP48Slice架构。脉动FIR滤波器:16滤波器的并行设计与实现脉动FIR滤波器优、缺点:延时较大:滤波器的延时是滤波器系数个数的函数。滤波器越大,延时越大。最优的性能:因为没有高扇出输入信号,此结构可以获得最大性能。较大的滤波器会受到布线限制。(如果系数的个数超过了器件中DSPSlice的个数。)到DSP48Slice的高效映射:脉动FIR滤波器的加法器链结构使得映射能够进行。这种可扩展的结构既支持大的也支持小的FIR滤波器。无需外部逻辑:无需外部FPGA结构,这样就可以获得可能达到的最高性能。缺点脉动FIR滤波器优点17滤波器的并行设计与实现脉动FIR滤波器被认为是并行滤波器结构中的最优结构。脉动FIR滤波器也使用加法器链来利用DSP48Slice架构。对称FIR滤波器:18滤波器的分布式设计与实现目录目录Contents基于XilinxIPCore设计滤波器滤波器的串行设计与实现14滤波器的并行设计与实现2319滤波器的分布式设计与实现分布式算法基础:10,()()Nnyhxhnxn分布式算法(DistributedArithmetic,DA)是一项重要的FPGA技术,广泛地应用在计算乘积和运算之中。除了滤波器,卷积、相关、DFT等凡是有乘累加运算的地方,都可以用到这种方法实现。20滤波器的分布式设计与实现举个例子现在要实现一个80阶的滤波器,如果使用FIR滤波器的串行结构来实现,大约需要80次MAC循环;当使用FIR滤波器的并行结构来实现,虽然可以缩短这一周期,但这是以硬件资源的消耗为代价的。但不论使用哪种设计方案,都需要硬件的乘法器(只是使用的个数不同),而硬件乘法器是非常消耗硬件资源的。在大多FIR滤波器设计中,滤波器系数是固定不变的,则就不需要使用乘法器,这就是DA算法的一个先决条件。自适应滤波器就无法使用DA算法实现。分布式算法基础:结论21滤波器的分布式设计与实现10()()*2()[0,1]Bbbbbxnxnxn10()2*()()*2()[0,1]BBbBbbbxnxnxnxn10,()()Nnyhxhnxn进一步假设h(n)是已知常数,x(n)为输入变量,无符号DA系统变量x(n)的表达式为:有符号DA系统变量x(n)的表达式为:推导过程:22滤波器的分布式设计与实现推导过程:1100()*()*2NBbbnbyhnxn120120120120120120(0)[(0)2(0)2...(0)2](1)[(1)2(1)2...(1)2].....(1)[(1)2(1)2...(1)2]BBBBBBBBBBBBhxxxhxxxhNxNxNxN23滤波器的分布式设计与实现推导过程:1100()*()*2NBbbnbyhnxn111122220000[(0)(0)(1)(1)...(1)(1)]2[(0)(0)(1)(1)...(1)(1)]2...[(0)(0)(1)(1)...(1)(1)]2BBBBBBBByhxhxhNxNhxhxhNxNhxhxhNxN24滤波器的分布式设计与实现推导过程:更为简洁的形式:111100002()()2((),())BNBNbbbbbnbnyhnxnfhnxn函数((),())bfhnxn的实现就是利用一个LUT实现映射,预先设定程序LUT接收一个N位输入向量[(0),(1)......(1)]bbbbxxxxN输出为((),())bfhnxn各个映射((),())bfhnxn都由相应的二次幂加权并累加,最后得到一次滤波结果25滤波器的分布式设计与实现推导过程:11002((),())2((),())BNBbbbbnyfhnxnfhnxn参与滤波的是有符号数,则输出表达式为:26滤波器的分布式设计与实现推导过程:查找表的构造规则:27滤波器的分布式设计与实现DA算法的性能分析:可以看出这种结构的DA算法,不需要乘法器完成一次滤波器需要B次累加(减),也就是说需要B个时钟周期完成一次运算,其中B是输入数据的位宽,所以这种结构对输入数据的位宽比较小的系统处理,有比较明显的优势查找表的大小由滤波器的阶数N决定,共需要2^N个查找表单元,表中每个单元的位宽是由滤波器系数的量化位宽决定,假设系数量化位宽为B,则表中每个单元的位宽为B+[log2N],所以需要(B+[log2N])*2^NbitRAM或LUT。所以这种结构不太适合N比较大的情况性能一性能二性能三28滤波器的分布式设计与实现改进的DA解决方案:29滤波器的分布式设计与实现改进的DA解决方案:因为LUT的规模随着地址空间,也就是滤波器系数N的增加而呈指数增加。如果系数N过多,用单个LUT不能够执行全字查找,则可把系数进行分组,利用部分表将结果相加。如果加上流水线寄存器,这一改并没有降低速度,但可以极大减少规模30滤波器的分布式设计与实现改进的DA解决方案:这种结构并不是复制DA表,而是把输入数据按照阶数分组,分解成L个小滤波器,当然对于一个固定阶数的滤波器,可以有多种不同的分组法。一个128阶的滤波器如果分成16组,每组8个数据,则总共需要的LUT单元数为16*2^8=4096个如果分成32组,每组4个数据,则总共需要的LUT单元数为32*2^4=512个如果分成64组,每组2个数据,则总共需要的LUT单元数为64*2^2=256个31目录目录Contents基于XilinxIPCore设计滤波器滤波器的串行设计与实现14滤波器的并行设计与实现2滤波器的分布式设计与实现332实际操作基于XilinxIPCore设计滤波器
本文标题:基于xlinxFPGA的滤波器设计
链接地址:https://www.777doc.com/doc-2535381 .html