位置:51电子网 » 技术资料 » 集成电路

Rader算法

发布时间:2008/12/17 0:00:00 访问次数:1114

  用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)



  用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)



相关IC型号

热门点击

 

推荐技术资料

DS2202型示波器试用
    说起数字示波器,普源算是国内的老牌子了,FQP8N60... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!