quartus FFT核使用(2)
时间:2020-05-12
本文章向大家介绍quartus FFT核使用(2),主要包括quartus FFT核使用(2)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
quartus FFT核使用(2)
对一个信号做fft
%%采样频率为256Hz,采样点数为4096个点; %信号含有2V的直流分量, 频率为50Hz、相位为-30度、幅度为3V的交流信号, 频率为75Hz、相位为90度、幅度为1.5V的交流信号。 %用数学表达式就是如下: S=2+3*cos(2*pi*50*t-pi*30/180)+1.5*cos(2*pi*75*t+pi*90/180) %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %对信号采样数据为4096点的处理 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% clc;close all; clear all;close; fs=256;N=4096; %采样频率和数据点数 n=0:N-1; t=n/fs; %时间序列 signal = 2 + 3*cos(2*pi*50*t-pi*30/180) + 1.5*cos(2*pi*75*t+pi*90/180); %信号 figure; plot(signal); y=fft(signal,N); %对信号进行快速Fourier变换 mag=abs(y); %求得Fourier变换后的振幅 f=n*fs/N; %频率序列 figure; subplot(2,1,1), plot(f,mag); %绘出随频率变化的振幅 xlabel('频率/Hz'); %%频率为:Fn=(n-1)*Fs/N ylabel('振幅'); title('N=4096'); subplot(2,1,2); plot(f(1:N/2),mag(1:N/2)); %绘出Nyquist频率之前随频率变化的振幅 xlabel('频率/Hz'); ylabel('振幅');title('N=4096'); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%将信号写入txt文件 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% image_data = signal*0; for x = 1:N signal(x)= round(signal(x)); image_data(x) = round(image_data(x)); end fidr = fopen('sin_process_real_input.txt','wt');%将信号进行打印输?? fidi = fopen('sin_process_image_input.txt','wt');%将信号进行打印输?? fprintf(fidr,'%d\n',signal); fprintf(fidi,'%d\n',image_data); fclose(fidr); fclose(fidi);
写入文件,将上一节仿真文件的.txt文件修改
3个频率:0Hz、50Hz、75Hz,应该分别在第1个点、第51个点、 第76个点上出现峰值,其它各点应该接近0
在FPGA中仿真
对信号进行对比,将modelsim生成的文件在matlab中运行
clc;close all; clear all;close; N = 1024; sin_fidro = fopen('ip_fft_real_output_ver.txt','r'); sin_fidio = fopen('ip_fft_imag_output_ver.txt','r'); sin_fideo = fopen('ip_fft_exponent_output_ver.txt','r'); sin_yreal_out = fscanf(sin_fidro,'%d'); sin_yimag_out = fscanf(sin_fidio,'%d'); sin_yexp_out = fscanf(sin_fideo,'%d'); fclose(sin_fidro); fclose(sin_fidio); fclose(sin_fideo); figure; plot(sin_yreal_out); title('sin_yreal_out'); figure; plot(sin_yimag_out); title('sin_yimag_out'); figure; plot(sin_yexp_out); title('sin_yexp_out'); for i=1:N*4-1 sin_real_out(i) = sin_yreal_out(i)/(2^(sin_yexp_out(i)));%%实部和缩放因子的处理 sin_imag_out(i) = sin_yimag_out(i)/(2^(sin_yexp_out(i)));%%虚部和缩放因子的处理 sin_mod_out(i) = sqrt(sin_real_out(i)^2 + sin_imag_out(i)^2);%计算幅值 end figure; plot(abs(sin_mod_out)); title('sin mod out'); figure; plot(sin_real_out); title('sin real out'); figure; plot(sin_imag_out); title('sin imag out');
3个频率:0Hz、50Hz、75Hz,应该分别在第1个点、第201个点、 第301个点上出现峰值,其它各点应该接近0。
根据某点n所表示的频率为:Fn=(n-1)*Fs/N,Fs为256Hz,N为1024,
第1个点:就是0Hz,即是直流信号;
第201个点:(201-1)*256/1024=50Hz;
第301个点:(301-1)*256/1024=75Hz。由此,验证FFT IP核的正确性。
原文地址:https://www.cnblogs.com/wanglinwensi/p/12877424.html
- ElastAlert监控日志告警Web攻击行为
- Java线程使用技巧学习(二)
- 挖洞经验 | 看我如何发现“小火车托马斯”智能玩具APP聊天应用漏洞
- Hive 常见问题与技巧【Updating】
- Hive 基础(1):分区、桶、Sort Merge Bucket Join
- 简化你的 java 字符串操作:Guava 之 CharMatcher 用法简介
- WAF绕过技巧浅谈
- flask 流式响应 RuntimeError: working outside of request context
- shell 学习笔记(19)
- HBase 写优化之 BulkLoad 实现数据快速入库
- 玩转 Linux 之:由 Nginx log rotation 聊聊 mv 的妙用
- 玩转 SHELL 脚本之:linux date 知多少?
- Hive 中的 LEFT SEMI JOIN 与 JOIN ON 的前世今生
- Yaffs_guts
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PyQt5 技术篇-plainTextEdit控件获得文本内容方法、设置文本内容方法。
- PyQt5 技术篇-鼠标移动控件显示提示,Qt Designer控件提示设置方法。
- PyQt5 技术篇-窗口名、窗口图标的设置方法。
- 101个shell脚本
- PyQt5 图片兼容性问题:"libpng warning: bKGD: invalid.",原因及解决办法。
- 编程语言经典小例题—Python版【持续更新】
- Python+selenium 自动化-切换窗口页签、切换iframe框架。确定页面是否包含iframe方法。
- JavaScript 技术篇-js获取iframe内的元素方法。
- QQ二维码登录API源码
- JavaScript 技术篇-js获取document的几种方式,js获取dom元素的常用方法。
- 不好意思,我膨胀了!shader 入门精要!Cocos Creator 3D Shader !
- JavaScript 技术篇-js获取dom节点、html标签自定义属性的值。
- 测试 APP 抓不到数据包该怎么办
- 手把手教你搭建SSM框架(Eclipse版)
- 【手把手教你】使用pyfinance进行证券收益分析