博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Matlab产生TestBeach所需要的波形数据
阅读量:4983 次
发布时间:2019-06-12

本文共 1959 字,大约阅读时间需要 6 分钟。

  在用vivado仿真的时候,很多情况下需要自己产生波形来代替AD采样波形。以前的做法都是用DDS内部产生所需要的波形来模仿外部输入,后来发现这种做法不仅麻烦,而且不易修改,对仿真很不友好。于是改用matlab产生所需要的波形,将数据以二进制补码形式存在.txt文件中,仿真的时候在testbeach中读取外部数据,十分方便。

  Matlab代码如下:

1 %=============设置系统参数==============% 2 f1=50e4;        %设置波形频率 3 f2=30e4; 4 f3=10e4; 5 Fs=50e6;        %设置采样频率 6 L=1024;         %数据长度 7 N=14;           %数据位宽 8 %=============产生输入信号==============% 9 t=0:1/Fs:(1/Fs)*(L-1);10 y1=sin(2*pi*f1*t);11 y2=sin(2*pi*f2*t);12 y3=sin(2*pi*f3*t);13 y4=y1+y2+y3;14 y_n=round(y4*(2^(N-3)-1));      %N比特量化;如果有n个信号相加,则设置(N-n)15 %=================画图==================%16 a=10;           %改变系数可以调整显示周期17 stem(t,y_n);18 axis([0 L/Fs/a -2^N 2^N]);      %显示19 %=============写入外部文件==============%20 fid=fopen('E:/Workspace/Vivado_16.4/2017_11_8_TestBeach/TestBeach/sin_data.txt','w');    %把数据写入sin_data.txt文件中,如果没有就创建该文件  21 for k=1:length(y_n)22     B_s=dec2bin(y_n(k)+((y_n(k))<0)*2^N,N);23     for j=1:N24         if B_s(j)=='1'25             tb=1;26         else27             tb=0;28         end29         fprintf(fid,'%d',tb);30     end31     fprintf(fid,'\r\n');32 end33 34 fprintf(fid,';');35 fclose(fid);
View Code

  运行后,波形如下:

  

  保存在.txt文件中的数据都是以二进制补码形式保存,也就相当于输入的外部激励是有符号数。

 

  TestBeach代码如下:

1 `timescale 1ns/1ps 2  3 module TB_readfile(); 4 reg     SCLK; 5 reg    [13:0]  data_out; 6  7  8 //-------------------------------------// 9 parameter data_num = 32'd1024;10 integer   i = 0;11 reg [13:0]  data_men[1:data_num];12 reg [13:0]  data_reg = 0;13 initial begin14     $readmemb("E:/Workspace/Vivado_16.4/2017_11_8_TestBeach/TestBeach/sin_data.txt",data_men);15 end16 always @(posedge SCLK) begin17     data_out <= data_men[i];18     i <= i + 8'd1;19 end20 //------------------------------------//21 22 //--------------时钟部分----------------//23 initial     SCLK = 0;24 always      #10     SCLK = ~SCLK;25 26 27 28 29 endmodule //
View Code

  运行vivado仿真,如下图:

  

  将matlab的波形缩小后看,是和仿真波形一样的。

 

转载于:https://www.cnblogs.com/HOOKNET/p/7824420.html

你可能感兴趣的文章
[转] 获取刚插入的数据的自增列ID——IDSCOPE_IDENTITY、IDENT_CURRENT 和 @@IDENTITY的区别(比较)...
查看>>
IDEA使用总结
查看>>
markdown 一个优雅的写作工具
查看>>
poj1064 Cable master(二分查找,精度)
查看>>
Python 基础篇:编码、变量、模块
查看>>
关于Intellij IDEA导入jdk出现异常
查看>>
HLS切片机
查看>>
单链表的反转
查看>>
习题3.5 求链表的倒数第m个元素(20 分)浙大版《数据结构(第2版)》题目集...
查看>>
1102. Invert a Binary Tree (25)
查看>>
MySQL 索引详解
查看>>
LinkedList,ArrayList末尾插入谁效率高?
查看>>
Spring-MVC理解之一:应用上下文webApplicationContext
查看>>
[LeetCode] IP to CIDR 将IP地址转为CIDR无类别域间路由
查看>>
bbs
查看>>
西布尔是一家定位独特、垂直整合的天然气加工及石化公司
查看>>
Django 1.8 admin 产生'WSGIRequest' object has no attribute 'user'的错误
查看>>
Python学习之==>内置函数、列表生成式、三元表达式
查看>>
一个Tomcat下部署两个,甚至多个项目
查看>>
千万级并发实现的秘密:内核不是解决方案,而是问题所在!
查看>>