Rader算法

时间:2008-12-17

  用Rader算法[132,133]计算DFT:

  计算DC组成部分。由于N=p是质数,需要一个本原元素和一个生成器,就可以产生Zp域内除0之外的所有元素,也就是gk∈Zp/{0}。这里用gn模N通过gk模N代替n,就得到下面的索引变换:

  例 N=7的Rader算法

  对于N=7,有g=3是一个本原元素,其索引变换如下:

  或者以矩阵表示:

  图1给出了相应的采用FIR滤波器的图形化解释

  图1长度p=7的Rader质数因子DFT实现

  现在可以用一个三角形信号x[n]=10λ[n](也就是步长为10的三角形)来检验p=7的RaderDFT公式。直接解释(6.14),就得到:

  x[0]的值就是时间级数的和,即10+20+,…+70=280。

  此外,在Rader算法中,我们还可以使用复数对e±j2kπ/N,k∈[0,N/2]的对称性来构造更为有效的FIR实现。实现Rader质数因子DFT与实现FIR滤波器是等价的。为了实现快速FIR滤波器,有必要使用完全流水线DA或转置滤波器结构。下面就给出了一个RAG FPGA实现的示例。

  例 Rader算法的FPGA实现

  长度为7的Rader算法的RAG实现过程如下。首先是对系数进行量化。假定输入值和系数都被表示成8位有符号数,量化后的系数是:

  所有独立系数直接形式的实现都需要为常系数乘法器提供24个加法器。运用转置结构,利用几个系数仅仅是符号不同这一事实,独立系数实现的工作量就可以降低到1 1个加法器。进一步优化加法器的数量,就可以达到值7。这对直接FIR结构有3倍以上的提高。接下来的VHDL代码1给出了运用转置FIR滤波器、长度为7的Rader DFT的一个可行实现。

  本设计包括4个PROCESSS声明内的4个声明模块。个——“Stages:PROCESS”——是一个区分3个处理阶段:Start、Load和Run的状态机。第二个——“Structure:PROCESS”——定义了两个ΠR滤波器通路,分别是实和虚。第三项用RAG实现乘法器模块。第四个模块—“Factor:PROCESS”——实现RAG算法的未注册因子。可以看到,所有的系数都是由6个加法器和1个减法器实现的。本设计消耗了486个LO,且以23.04MHz的RegisteredPerformance运行。图6-10给出了MaxPlussll对三角波输入信号序列x[n]={10,20,30,40,50,60,70}的仿真结果。注意,输入和输出序列的起始点是950ns,按交换的顺序作为无符号正数出现。,在1.55μs处X[0]被发送到输出端,rader7准备处理下一个输入帧。

  图4 7点Rader算法的VHDL仿真

  由于Rader算法受限于质数长度,与CZT相比,在系数中就比较缺乏对称性。下面的表给出了质数长度为2n±1时,转置形式的循环滤波器的实现工作量。

  第1行给出了循环卷积长度N,也就是复数系数的数量。将第2行与2N个实sin/cos系数的差情况相比较,就会看到,对称性和无关紧要的系数己经将不可或缺的系数降低了一半。3行分别给出了一个使用CSD、MAG或RAG算法的16位系数的实现工作量。注意RAG对较长滤波器的优势。从上面的表可以看到,CSD类型的滤波器可以减少BN/4的工作量,其中B是系数位宽(本表中是16位),N是滤波器长度。对于RAG,工作量(也就是加法器的数量)仅是N,也就是对长滤波器而言,比CSD提高了B/4(B=16,提高了16/4=4)。对于长滤波器,RAG只需要为额外的系数提供一个额外的加法器即可,因为已经合成的系数生成了一个“密集的”小系数栅格。

  欢迎转载,信息来源维库电子市场网(www.dzsc.com


  
上一篇:非均匀采样硬件设计
下一篇:非均匀采样软件设计

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料