6396|9

5979

帖子

8

TA的资源

版主

楼主
 

【FPGA代码学习】之FFT(3) - IPcore的进一步仿真 [复制链接]

 
本帖最后由 chenzhufly 于 2015-9-3 16:51 编辑



在上一篇《【FPGA代码学习】之FFT(3) - IPcore》中我们利用FFT IPcore自带的仿真文件做了测试,没想到altrea给的参考数据看不出明显的效果,经过学习研究还是自己来生成一组测试数据吧,这样可以把问题说的更加的清楚和明白一些。


1、测试数据生成
测试数据的生成,还是是MATLAB工具,方便,快捷,好使!
生成包含两个频率的正弦波50hz和120hz,采样频率为1khz,增加随机噪声,并进行16bit采样,同时把原始数据和转换后的数据都存入文件中,便于后续对比:
Matlab的代码如下所示:
clear  all;
close  all;
  
N=256; 进行256FFT
t =  0:0.001:0.6;  采样频率1Khz
x =  sin(2*pi*50*t)+sin(2*pi*120*t); 原始信号包含50hz120hz两种信号
x=x/2;  进行归一化处理
subplot(3,1,1);
plot(1000*t,x);
title('原始数据')
  
y= (x + 2  * rand(size(t)) -1)/2; 增加噪声信号,幅值正负1,并归一化处理
subplot(3,1,2);
plot(1000*t,y);   
title('增加噪声后的数据')
  
y2=round(y*2^15);  对数据取整,并进行16bit量化  
fid=fopen('Data_input.txt','w+');  把原始数据存入文件Data_input.txt
fprintf(fid,'%g\r\n',y2);  
fclose(fid);
  
[Y,  exp_out]= fft256_model(y2(1:256),N,0); 调用fft256_model  

把转换后的数据分别存入fft_real_output.txt和fft_imag_output.txt
fid=fopen('fft_real_output.txt','w+');  
fprintf(fid,'%g\r\n',real(Y));
fclose(fid);

fid=fopen('fft_imag_output.txt','w+');
fprintf(fid,'%g\r\n',imag(Y));
fclose(fid);
  
Pyy = Y.*  conj(Y) ;
f =  1000*(0:128)/256;
subplot(3,1,3);
plot(f,Pyy(1:129))   
title('QuantusIPcore函数转换的结果')
  

复制代码

执行效果如下图所示:

这样看起来明显多了,可以清晰的区分出50hz和120hz的信号

2、继续调用Modelsim来进行测试
测试文件还是如前面所示,主要是用到上面生成的Data_input.txt的数据文件;
Data_input.txt (4.04 KB, 下载次数: 51)
简单修改testbench
1、data_rf = $fopen("Data_input.txt","r");
2、sink_imag <= 0;


Data_input.txt数据文件对比一下,输入数据完全正确:



再来看看输出数据的一致性,以下是Modelsim的仿真结果:



Matlab的输出文件如下所示
fft_imag_output.txt (1.4 KB, 下载次数: 36)
fft_real_output.txt (1.41 KB, 下载次数: 36)


结果比对完全一致,有兴趣的可以深入的学习一下。


此帖出自FPGA/CPLD论坛

最新回复

IP核那个需要用exp来移位吧  详情 回复 发表于 2016-11-20 15:20

赞赏

2

查看全部赞赏

点赞 关注(2)
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 

回复
举报

7

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
好久没有用FPGA了,记得以前IPCore需要授权,难道现在的IPCore能直接用了?
此帖出自FPGA/CPLD论坛
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
此帖出自FPGA/CPLD论坛
个人签名光纤激光打标机 www.chinabote.net
 
 
 

回复

61

帖子

0

TA的资源

一粒金砂(中级)

4
 
楼主,求教啊,为啥我设计好ip核之后生成的时候一直卡住

QQ截图20151006160309.png (38.55 KB, 下载次数: 0)

QQ截图20151006160309.png
此帖出自FPGA/CPLD论坛
 
 
 

回复

5979

帖子

8

TA的资源

版主

5
 
再生成一次吧
我也遇到同样的问题
不知道什么原因
此帖出自FPGA/CPLD论坛
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

1

帖子

1

TA的资源

一粒金砂(初级)

6
 
不错不错
此帖出自FPGA/CPLD论坛
 
 
 

回复

50

帖子

0

TA的资源

一粒金砂(中级)

7
 
非常仔细,谢谢!
此帖出自FPGA/CPLD论坛
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

8
 
用matlab自带的fft函数进行Y1 = fft( y2(1:256),N )和ip核自带的[Y,exp_out] = fft256_model(y2(1:256),N,0)进行比较,Y1不等于Y,这是为什么呢?
此帖出自FPGA/CPLD论坛

点评

IP核那个需要用exp来移位吧  详情 回复 发表于 2016-11-20 15:20
 
 
 

回复

5979

帖子

8

TA的资源

版主

9
 
那检查一下哪个步骤 有没有出错啊
此帖出自FPGA/CPLD论坛
个人签名生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙
===================================
做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
 
 
 

回复

23

帖子

1

TA的资源

一粒金砂(中级)

10
 
shuy06 发表于 2016-5-24 09:16
用matlab自带的fft函数进行Y1 = fft( y2(1:256),N )和ip核自带的[Y,exp_out] = fft256_model(y2(1:256),N,0 ...

IP核那个需要用exp来移位吧
此帖出自FPGA/CPLD论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表