64点FFT的verilog 代码 FFT_Matlab_Verify.m

在这里插入图片描述

% 构建输入数据并写入文件用于verilog
width = 8;
depth = 64;
index = linspace(0, 2*pi, depth);
sin_value = sin(index);
sin_value = sin_value * (2^(width-1) -1 );
sin_value = fix(sin_value);
toVerilog = mod(sin_value+256, 256);
fid = fopen('Data_Input.txt', 'wt');
fprintf(fid, '%02x 00\n', toVerilog);
fclose(fid);

% 计算用于verilog的Wn的参数,均乘以255
fid = fopen('Data_Parameter.txt', 'wt');
for i = 1:6
    N = 2^i;
    for j = 0:N/2-1
        real_f = cos(2*pi*j/N);
        imag_f =-sin(2*pi*j/N); 
        real_d = fix(real_f * 127);
        imag_d = fix(imag_f * 127);
        real_d = mod(real_d + 256, 256);
        imag_d = mod(imag_d + 256, 256);
        %fprintf(fid, '(%02d.%02d) %02x %02x \t%1.4f     %1.4f\n',i, j, real_d, imag_d, real_f, imag_f);
        fprintf(fid, '%02x %02x\n',real_d, imag_d);
    end
end
fclose(fid);  


% 计算FFT
n = 0:depth-1;
y = fft(sin_value);
for i = 1 : depth
    yreal(i) = fix(real(y(i)));
    yimag(i) = fix(imag(y(i)));
end
yint = [yreal; yimag]'; % 最终比对用FFT结果



  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值