取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

Debug Advice for FFT C-Model and RTL simulation comparison

yolanda
Moderator
Moderator
0 0 116

BY Nathan Xu

注意:本论坛博客所有内容皆来源于Xilinx工程师,如需转载,请写明出处作者及赛灵思论坛链接并发邮件至cncrc@xilinx.com,未经Xilinx及著作权人许可,禁止用作商业用途

------------------------------------------------------------------------------------------------------------------

有很多客户在比较FFT C-Model仿真和FFT IP前仿遇到问题.

总结下来, 原因大概有三种.

1)     C-Model的输入数据和IP仿真的输入不完全一致

2)     C-Model的参数设置和IP的参数设置不完全一致

3)     出现overflow。

 

C-Model的输入数据和IP仿真的输入不完全一致

这里面需要注意的是, FFT C-Model fixed point interface需要的输入数据范围在(-1,1)之间, 而且是signed two's-complement(二进制补码有符号数), 数据位宽是C_INPUT_WIDTH. 小数点在C_INPUT_WIDTH – 1, 否则会报警. 但Matlab的数据是complex double-precision floating-point data, 所以需要用到Matlab的quantize来把数据量化.

1.png2.png3.png

显然FFT IP前仿是不需要量化的, 因为对于FPGA没有小数点位.

为了保证这这个仿真的输入数据一致, 建议把量化后的数据也作为FFT IP前仿的输入数据, 因为量化之后是小数, 可以乘以2^(C_INPUT_WIDTH – 1), 转为整数, 注意这还是二进制补码数.

 

C-Model的参数设置和IP的参数设置不完全一致

scaling_sch在C-Model和IP core的顺序是反的, 例如scaling_sch[0]是第一个数据, scaling_sch[1]是第二个,但在FFT IP上需要把它们的顺序到过来, 也就是scaling_sch[0]是最后一个数据, scaling_sch[1]是倒数第二个.

4.png5.png6.png

overflow

如果设置的是Pipelined, Streaming I/O architecture,出现overflow,那么C-Model和IP core前仿的结果是不一致, 也就是 C-Model的xk_re和xk_im与FFT IP前仿的xk_re和xk_im不一致, 出现overflow, 看xk_re和xk_im的结果是没有意义的, 需要调整scaling保证没有overflow.

7.png