Matlab产生波形数据文件

ArcMap地理配准中的更新地理配准和校正有什么区别? ArcGIS 地理配准时, save (更新地理配准)和 save as new (校正) 的相关探索 阅读详情

前言

在FPGA开发过程中几乎都要用到仿真的功能,对于一些简单的外部激励(如时钟、复位、简单数据或者信号等)直接在testbench中编写产生就行了,但对于复杂的外部激励数据,很难在testbench中产生,这时就要通过读取外部文件里的数据来实现。通过和matlab的配合使用,基本上可以模拟各种外部激励。
举例来说:输入信号是三个不同频率的正弦波的相加,经过FIR低通滤波器滤除高频分量,输出频率最低的那个正弦信号。这种情况下测试用的输入信号不能通过testbench编写产生。
简单来说有以下两种方法可以模拟输入信号:

  • 在FPGA内部通过DDS产生三个正弦波,然后将三个波形相加作为输入信号。
  • 利用matlab产生输入信号,将数据导出为.txt文件,在仿真时读取文件内的数据作为外部激励。

显然第二种方法更加灵活和便捷。下面,具体介绍一下这种方法的使用。


平台:

  • Vivado 16.4
  • Matlab R2017b

Matlab程序编写:

  • 代码如下:
%=============设置系统参数==============%
f1=1e6;        %设置波形频率
f2=500e3;
f3=800e3;
Fs=20e6;        %设置采样频率
L=1024;         %数据长度
N=14;           %数据位宽
%=============产生输入信号==============%
t=0:1/Fs:(1/Fs)*(L-1);
y1=sin(2*pi*f1*t);
y2=sin(2*pi*f2*t);
y3=sin(2*pi*f3*t);
y4=y1+y2+y3;
y_n=round(y4*(2^(N-3)-1));      %N比特量化;如果有n个信号相加,则设置(N-n)
%=================画图==================%
a=10;           %改变系数可以调整显示周期
stem(t,y_n);
axis([0 L/Fs/a -2^N 2^N]);      %显示
%=============写入外部文件==============%
fid=fopen('E:\Workspace\Vivado_16.4\TEST\TestBench\sin_data.txt','w');    %把数据写入sin_data.txt文件中,如果没有就创建该文件  
for k=1:length(y_n)
    B_s=dec2bin(y_n(k)+((y_n(k))<0)*2^N,N);
    for j=1:N
        if B_s(j)=='1'
            tb=1;
        else
            tb=0;
        end
        fprintf(fid,'%d',tb);
    end
    fprintf(fid,'\r\n');
end

fprintf(fid,';');
fclose(fid);

此程序中设置了三个频率分别为1M、500k和800k的正弦波,然后将三个波形相加并且量化后作为输出。最后将路径设置为相应文件所在路径即可,需要注意的是如果对应路径下没有相应文件,则会自动新建文件并写入数据。

  • 运行程序:
    在这里插入图片描述

  • 打开对应的文件目录
    在这里插入图片描述
    可以看到二进制数据文件已经生成。

接下来就可以进行在testbench中读取外部数据的操作了。

Testbench的编写:

  • 代码如下:
`timescale 1ns/1ps

module TB_readfile();
reg     SCLK;
reg    [13:0]  data_out;

//--------------时钟部分----------------//
initial     SCLK = 0;
always      #10     SCLK = ~SCLK;

//-------------------------------------//
parameter data_num = 32'd1024;
integer   i = 0;
reg [13:0]  data_men[1:data_num];
reg [13:0]  data_reg = 0;
initial begin
    $readmemb("E:/Workspace/Vivado_16.4/2017_8_28_TEST/TestBench/sin_data.txt",data_men);   //注意斜杠的方向,不能反<<<<<<<
end
always @(posedge SCLK) begin
    data_out <= data_men[i];
    i <= i + 8'd1;
end
//------------------------------------//

endmodule

因为这里只需要读取外部数据,所以Vivado工程里只需要添加仿真文件就行了。

  • 运行仿真:
    在这里插入图片描述
    可以看到,仿真的波形和matlab中显示的波形一致,说明结果正确。

结束语

Matlab可以说是个很强大的工具,在设计中合理的使用matlab可以起到事半功倍的效果。当然我也在不断的学习中,如果有疑问或者更好的想法欢迎交流。。。

matlab生成任意波形发生器(AWG)所需波形文件程序 使用Matlab生成任意波形发生器(AWG)所需波形文件,使得任意波形发生器产生你所需波形,本文使用高斯脉冲来举例。 阅读详情

相关推荐

Matlab生成波形数据(正弦、三角、锯齿、方波)

程序是用来生成波形数据的,数据深度和宽度可自己根据实际更改。生成的coe文件在使用前要将最后一个','改成';'才能用!

spartan6的博客 9395

【Verilog】代码实现正弦波、三角波、方波、锯齿波的输出并仿真

四种常见波形输出或者实现一个简易的DDS信号发生器

cabinGGG的博客 1万+

matlab产生波形数据文件,Matlab产生波形数据文件

前言在FPGA开发过程中几乎都要用到仿真的功能,对于一些简单的外部激励(如时钟、复位、简单数据或者信号等)直接在testbench中编写产生就行了,但对于复杂的外部激励数据,很难在testbench中产生,这时就要通过读取外部文件里的数据来实现。通过和matlab的配合使用,基本上可以模拟各种外部激励。举例来说:输入信号是三个不同频率的正弦波的相加,经过FIR低通滤波器滤除高频分量,输出频率最低的...

weixin_36180471的博客 1853

生成简单波形数据

使用matlab生成简单波形的数据

SammySum的博客 1234

vivado与matlab怎么连接,vivado和matlab联合实现FIR滤波器

matlab中产生FIR滤波器和测试数据并导入到FPGA中仿真。1.生成测试数据。采样率fs=20MHZ,正弦信号f0=1MHZ,f1=4MHZ.matlab代码如下:fs=20e6;f0=1e6;f1=4e6;N=16;t=1/fs:1/fs:1;%s=simout(1:500:length(simout));s0=sin(2*pi*f0*t);s1=sin(2*pi*f1*t);s=s1+s0...

weixin_39732640的博客 2649

MATLAB产生雷达信号波形

1、单频信号 信号的数学表达式 s(t)=A(t)cos⁡(ωt+ϕ0) s(t)=A(t)\cos(\omega t+\phi_0) s(t)=A(t)cos(ωt+ϕ0​) clc clear all close all T = 1;%采样时间 f = 1e5;%采样率 t = 0:1/f:(T-1/f); % 采样点 n = length(t); % 采样点数 A_danpin = 10;...

hhy_csdn的博客 3万+

matlab产生波形数据文件,用Matlab生成txt格式波形数据

在用Modelsim仿真时,testbench设计时常会用到系统任务$readmemb和$readmemh,可以从txt文件读取二进制或者是十六进制数据,作为仿真激励。原始数据的生成可以借助Matlab实现,通过Matlab可以生成需要的波形,Matlab中的fopen和fprintf函数可以生成txt格式文件,并将波形数据以整型(%d)实数(%f)十六进制(%x)格式存入txt文件,但是需要注意...

weixin_42361623的博客 2436

Matlab 生成任意波形wav文件

1、背景   测试DAC/功放的性能指标的时候,常需要 1KHz 的波形来分析,主要测试参数有输出幅度,相移、失真度、频响曲线、信噪比(SNR)等常用的手段来评估设备的好坏程度,测试仪器一般选用AG,粗略测试也可以使用稍微好一点的示波器。   曾经一开始接触这部分调试的时候,从网上找了些音频文件,发现怎么测参数都不对,后来从别人那里考来了一份常用的1K文件,才得出像样点的结果,由于此文件需要的精度...

Mr-Ma Technology 1万+

matlab产生波形数据文件,Matlab把图片数据/波形数据生成.mif文件

在Altera系列的FPGA中.mif文件可以设计一个ROM。这个ROM里可以存放数据波形,产品ID,甚至还可以是简单的灰度图像库。但不建议ROM的深度超过10000,这样会影响ROM的性能。创建.mif文件可分为以下几个流程:1.先利用Quartus II创建一个.mif文件,例如myrom.mif;2.Matlab创建一个.txt文件,写入相应的地址和数据;3.复制.txt中的地址数据到myr...

weixin_35224065的博客 1369

【MATLAB信号处理】信号波形的产生及系统时域分析

信号波形的产生及系统时域分析信号的产生连续时间系统的响应 信号的产生 试用MATLAB绘制如下函数的时域波形。 (1) 单位矩形脉冲函数(门函数) g6(t)g_6(t)g6​(t)。 (2) 单位冲激函数δ(t)\delta(t)δ(t)的近似值。δ(t)\delta(t)δ(t)用宽度为τ\tauτ而幅值为1/τ1/\tau1/τ当τ→0\tau→0τ→0时的矩形脉冲函数来近似。分别取τ=0.2,0.1\tau=0.2, 0.1τ=0.2,0.1。 %% % 信号的产生 % 试用MATLAB绘制如下函

qq_41630702的博客 6513

MATLAB产生任意信号波形(多周期线性扫频信号)

MATLAB产生多周期的骚操作

Ekko的博客 8370

matlab 产生时域波形,matlab时域波形图

(2t) 一 实验题目 f1(t)sa(2t) f2(t)u(t2)u(t2) f3(t)t[u(t 1 ) u(t 1 )] f4 (t ) df3 (t ) dt 试用MATLAB画出它们的时域波形及频谱......3.5 Matlab 编程实验结果 3.5.1 产生一组由 60HZ 和 150HZ 的正弦信号和随机噪声组成的信号, 观察其时域波形与频谱。(程序 2)图 3-1 原始信号的时域...

weixin_39863741的博客 5380

Cadence仿真笔记(二):传统noise仿真—共源极的噪声

cadence中进行传统噪声仿真

Bao_xue的博客 1万+

matlab编写关于信号波形的产生

信号波形的产生 前言 在MATLAB中,对基本信号的产生提供了许多相应的函数,下面将对一些基本的函数进行介绍。 1.线性调频函数与方波函数 在MATLAB中,产生线性调频扫频信号函数chirp调用格式如下;y=chirp(t,f0,t1,fl):产生一个线性(频率随时间线性变化)信号,其时间轴设置由数组t定义。时刻0的瞬间频率为f0,时刻t1的瞬间频率为f1.默认情况,f0 = 0Hz,tl=1,f1 = 100Hz。 y= chirp(t,f0,t1,f1, ‘method’);指定改变扫频的方法。可用

逝年的博客 6331

普通人也能看懂的Transformer源代码解释(PyTorch)

Transformer源代码解释之PyTorch篇 章节 词嵌入 位置编码 多头注意力 搭建Transformer 在这里插入图片描述 词嵌入 Transformer本质上是一种Encoder,以翻译任务为例,原始数据集是以两种语言组成一行的,在应用时,应是Encoder输入源语言序列,Decoder里面输入需要被转换的语言序列(训练时)。一个文本常有许多序列组成,常见操作为将序列进行一些预处理(如词切分等)变成列表,一个序列的列表的元素通常为词表中不可切分的最小词,整个文本就是一个大列表,元素为一个一

qq_50974223的博客 4167

【自动驾驶学习笔记——Prescan和Simulink 学习笔记和问题记录(1)】

主要记录一些Prescan/Simulink 联合仿真出现的问题。

ly1336545868的博客 1464

FPGA产生matlab正弦波等波形,以及DAC驱动

FPGA使用ROM存放波形,通过DAC芯片完成特定频率波形 硬件新手 1.利用 Matlab,生成分别对正弦波、三角波、 方波进行 256 个采样点的.coe 文件。 2.进行 ROM 地址译码的设计,实现可调频率、相位、幅值。 3.利用 DAC 生成波形。 4.进行时序仿真。 5.下载用示波器验证。 1.利用 DAC 实现的数字式波形合成器 波形发生器是一种数据信号发生器,在调试硬件时,常常需要加入一些信号,以观察电路工作是否正常。加入的信号 有:正弦波、三角波、方波和任意波形等。这里我们采用如下方案:

weixin_44302627的博客 5372

告别Keil4!手把手教你用Keil C51 V9.61编译51单片机代码(附最新激活方法)

本文详细介绍了Keil C51 V9.61在51单片机开发中的全栈升级指南,包括编译速度提升、调试器性能优化和现代开发支持等核心优势。通过智能安装方案、项目迁移实战和新特性深度应用,帮助开发者告别Keil4,大幅提升开发效率。附有最新激活方法和实用技巧,适用于嵌入式开发工程师。

weixin_26886855的博客 419

FPGA学习记录(一) ROM产生波形

详细介绍如何使用vivado中ROM ip核产生波形

qq_51522566的博客 2984

保姆级教程:用YOLOv8n模型在RKNN和Horizon平台完成目标检测(附C++部署代码与性能实测)

本文提供了一份详尽的YOLOv8n模型在RKNN和Horizon平台上的部署指南,涵盖环境配置、模型优化、跨平台适配及性能调优。通过实战案例和C++部署代码,帮助开发者在嵌入式设备上高效实现目标检测,显著提升推理性能。

weixin_42659194的博客 468

如何在MacBook上安装部署原生openclaw

本文介绍了在MacBook上安装OpenClaw的详细步骤:首先通过curl或国内镜像源安装nvm和Node.js(版本≥22),然后使用nvm安装Node.js 24并验证安装。接着通过脚本快速安装OpenClaw,完成安装后选择Qwen作为AI模型并进行OAuth认证。配置过程中可跳过联网搜索和Agent技能设置,最后选择Web界面作为呈现方式。安装完成后,系统会启动openclaw-gateway进程并打开Web界面,用户可通过简单的"hello"指令开始与AI对话。目前基础功能已

木简熙的博客 809

matlab 波形仿真,MATLAB仿真波形的处理

《MATLAB仿真波形的处理》由会员分享,可在线阅读,更多相关《MATLAB仿真波形的处理(14页珍藏版)》请在人人文库网上搜索。1、示波器波形的处理1. 示波器介绍首先介绍示波器的基本功能,对Simulink Model(搭建的模型)进行仿真之后,双击Scope(示波器),会打开Scope的显示界面。这时候Scope会显示仿真出来的波形。以12脉波串联型二极管整流器为例,Scope显示的界面如图...

weixin_32306957的博客 3233

Python 爬虫实战:于好大夫在线抓取医生评价数据,选择优质医疗服务

requests:用于发送 HTTP 请求,获取网页内容。或 lxml:用于解析 HTML 页面,提取目标数据。pandas:用于数据清洗和分析。matplotlib和seaborn:用于数据可视化。time:用于控制爬取速度,避免对服务器造成压力。通过本项目,我们实现了以下目标:使用 Python 爬虫抓取好大夫在线的医生评价数据。对数据进行清洗和分析,找出评价中的关键词和趋势。根据分析结果推荐优质医疗服务。

u014481728的博客 3369

【雷达】产生常用的雷达波形,及计算波形的模糊度函数附matlab代码

雷达作为一种主动探测设备,通过发射特定波形的电磁信号并接收目标反射的回波来获取目标的信息。雷达波形的设计直接关系到雷达系统的性能,如距离分辨率、速度分辨率、抗干扰能力等。本文将深入探讨雷达系统中常用的波形,分析其产生原理,并重点阐述雷达波形的模糊度函数及其计算方法。模糊度函数是评估雷达波形性能的关键工具,它定量地描述了雷达在距离-速度平面上的模糊特性,对于雷达系统的设计与优化具有至关重要的作用。引言现代雷达技术的发展日新月异,对雷达波形的要求也越来越高。

Matlab_dashi的博客 963

《QGIS快速入门与应用基础》010:下载过程中常见问题(如网速慢、文件损坏)

针对QGIS下载过程中的常见问题提供了系统解决方案。主要解决下载速度慢(≤100KB/s)和文件损坏两大核心问题:通过切换国内镜像源(如清华大学、阿里云)、使用专业下载工具提升速度;采用MD5/SHA256校验确保文件完整性,并排查存储介质和杀毒软件干扰。文章还包含macOS权限问题、Linux依赖缺失等高频问题的速解方案,并附详细的排查流程图和预防技巧,帮助用户顺利完成QGIS下载。后续将详细介绍安装流程,适合零基础用户参考。

LuckyHanMo的博客 482

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

上一篇: AM解调的FPGA实现
下一篇: 简易频率特性测试仪
HOOKNET
博客等级 码龄9年 152粉丝 5原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值