FFT IP核调用与仿真之SCALE压缩因子设置

时间:2019-08-20 12:53:14   收藏:0   阅读:224

    关于FFT IP核的配置,网上有很多相关的资料可以参考,但是唯独涉及到scaled压缩因子设置这个参数,资料却非常匮乏,这是个什么参数,应该整么设置,设置后对结果输出会有什么影响,整样才能知道它设置的合理不合理?

  技术图片

先来看一下官方说明手册里关于scaled的说明:

技术图片

翻译过来就是:对于Pipelined Streaming I/O结构,将临近的一对基2阶组在一起,即阶0和阶1为组0,阶2和阶3为组1,阶4和阶5为组2等等。例如数据长度N=1024,Scale_SCH = [10 10 00 01 11]表示对组0(阶0和阶1)右移位3,对组1(阶2和阶3)右移位1,对组2(阶4和5)没有移位,对组3(阶6和7)右移位2,对组4(阶8和9)右移位2。但是要注意,如果变换长度N不是4的幂次方时,最后一组只包含一个基2阶,只能用00或者01表示,例如数据长度N=512时,Scale_SCH = [10 10 10 10 10]的设置则是无效的,而Scale_SCH = [01 10 10 10 11]的设置就是有效的。对于Scale_SCH的位宽,针对Pipelined Streaming I/O结构和Radix-4,Burst I/O结构,位宽为2*ceil(0.5*log2(N)),对于Radix-2,Burst I/O和Radix-2 Lite,Burst I/O结构,位宽为2*log2(N),其中N为转换数据长度。

1)scaled的作用是什么?

 scaled是压缩比例参数,由于多点运算的FFT的计算量比较大,合理设置scaled可以减少资源的消耗;

2)scaled如何设置?

    参照数据手册的说明,下面举例说明scaled的设置方法:

    设 N=512: 由于变换长度N不是4的幂次方,最后一组只包含一个基2阶,只能用00或者01表示, 设scaled的位宽是8位:  XX(阶3)  XX(阶2)   XX(阶1) XX(阶0)

    a、设置 scaled=8‘b 00 11 11 11 ----- 赋值合理,表示压缩 2^(3+3+3)=2^9=512 倍

    b、设置 scaled=8‘b 11 11 11 11 ----- 赋值不合理,最高阶只能是00或者01,不能是11;

    设 N=1024: 由于变换长度N是4的幂次方,对最高阶的赋值没有要求,设scaled的位宽是10位:XX(阶4)XX(阶3)  XX(阶2)   XX(阶1) XX(阶0)

 

、a、设置 scaled=10‘b 11 00 11 10 00----- 赋值合理,表示压缩 2^(3+0+3+2+0)=2^8=256倍

    b、设置 scaled=10‘b10 10 10 10 10 ----- 赋值合理,表示压缩 2^(2+2+2+2+2)=2^10=1024倍

   对scaled进行赋值之后,IP核的输出结果可进行移位还原为真实值,这样就可以将输出结果放到MATALB等数学工具中,对自己的输出结果进行直观的图示验证。

技术图片

另外,FFT IP核有ovflo这个信号,可以将它引出来,可以直观在仿真波形中查看自己的scaled是否设置合理,如果设置的数值不够大,ovflo会溢出显示为高电平。

技术图片

至此,关于scaled这个参数的设置讲解完毕。

 

 

 

  

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!