OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11576|回复: 5

小梅哥和你一起深入学习FPGA之mif文件的制作

[复制链接]

40

主题

179

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2013-10-23
在线时间
94 小时
发表于 2014-11-9 23:49:18 | 显示全部楼层 |阅读模式

 

fficeffice" /> 

本文档主要讲解实现一个1024点的16位正弦波数据的生成,并将该数据制作成quartus II使用的mif文件,使用此文件,我们便可以使用FPGA,基于直接数字合成(DDS)原理生成标准的正弦波,即实现信号发生器的功能。小梅哥的DDS实验已经做完,目前还没有进行文档的编写。朋友今天邀请我为他制作一个1024点的16位的正弦波mif文件,实现之后,发现过程中涉及到MATLAB软件、Excel软件、Quartus II软件的使用,每个过程简单,但是步骤较多,因此在这里以文档的方式记录下来,分享给需要的朋友。

 

首先,打开MATLAB软件,小梅哥这里使用的版本为MATLAB 2012b。新建一个Script文件,操作为File >New>Script。在该文件中输入以下内容:

F1=1; %信号的频率

Fs=1024;%采样频率

P1=0;%信号初始相位

N=1023;%采样点数为N+1

t=[0:1/Fs:N/Fs];%采样时刻

ADC=32767;%直流分量

A=32767;%信号幅度

s=A*sin(2*pi*F1*t + pi*P1/180) + ADC;%生成信号

plot(s);%绘制图形

 

即可生成我们所需要的数据,其中最后一行为绘制图形,是为了验证我们所生成的数据是否满足要求,不是一定需要。输入完成以后,点击“save and run”按钮,如下图所示。


将文件保存在你自己的路径下面,命一个有意义的名字,这里我暂时保存在桌面,命名为sin16_1024。保存后会弹出如下所示的对话框,选择Add to Path即可。


随后,会弹出如下所示的界面,该界面便是以我们生产的数据为值,t为时间轴绘制出来的波形,从波形可知为标准的正弦波,你也可以通过放大缩小来具体查看几个顶点的值,以确定数据是否在自己预期的范围内。这里,我们直接关掉该界面即可。


这个时候,我们在MATLAB主界面中,右侧的workspace栏中,选中names的一项,双击,便可打开该数组的值,如下所示:


将该表格中的所有数据选中(可选中第一个数据,然后将进度条拉到最后一个数据的位置,按下键盘上的shift键,鼠标点击最后一个数据,便可全选了),单击右键,复制即可。然后打开execl软件,选中A1单元格,ctrl+V(粘贴),即可。

在表格中,我们会发现,这些数据是带有2位小数位的,如下图所示:


而我们的mif文件不支持小数,因此需要将这些数据进行四舍五入。四舍五入的方法非常简单我们只需要选中行1(在数字1处点击鼠标左键即可选中),单击鼠标右键,选择设置单元格格式,如下图所示:


在弹出的界面中选中“数字”选项卡,选择“数值”,在“小数位数”处输入0,点击确定,即可。具体如下图所示:


设置完成之后我们再看,发现表格中的数据已经全部被四舍五入了,此时的数据,就是我们可以使用的数据了。如下所示:


此时,我们已经完成了mif文件所需数据的生成工作,我们可以将这个表格文件保存,也可以直接开着,不用关闭就行,因为这个文件只是一个中转。下一步,就是将这些数据生成我们所需要用到的mif文件了。

打开quartus II软件,选择file>New,在打开的选项卡中,选择Memory Initialization File,点击OK。在弹出的mif文件大小设置选项卡中,设置Number of Words1024Word Size16,点击OK即可,详细如下所示:


此时,就会建立好一个空白的mif文件,其中所有内容均为0,如下图所示:


我们将excel表格中的数据选中(可选中第一个数据,然后将进度条拉到最后一个数据的位置,按下键盘上的shift键,鼠标点击最后一个数据,便可全选了),单击右键,复制即可。然后回到quartus IImif编辑界面,在mif文件的任意一个数据位置点击鼠标左键,然后按下键盘上的组合键ctrl + A(也就是全选),然后单击鼠标右键,选择paste即可。如下图


此时,我们发现,所有数据便依次存入了相应的地址中,如下图所示:


我们点击quartus II软件界面上的file>save,选择你需要存储的路径,这里小梅哥暂时存储在桌面上,将文件名命名为sin16_1024,即完成了我们所有的工作。因为小梅哥这里没有创建工程,所以保存完成后quartus II软件会弹出以下界面,问你是否需新建工程,这里小梅哥只是做演示用,不需要新建工程,因此这里选择NO


最后,附上朋友采用该mif文件生成的正弦波的仿真波形图:


利用此文件,就可以开始你的DDS设计啦。

http://xiaomeige.taobao.com。做最用心的FPGA学习板和教程资料
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

557

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165080
金钱
165080
注册时间
2010-12-1
在线时间
2103 小时
发表于 2014-11-9 23:54:30 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

31

主题

271

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
450
金钱
450
注册时间
2012-5-18
在线时间
6 小时
发表于 2014-11-12 12:54:31 | 显示全部楼层
不用这么麻烦小梅哥,可以在MATLAB中敲命令,将数据保存为符合格式的mif文件,然后再直接调用。
谁来买我的火柴.....
回复 支持 反对

使用道具 举报

40

主题

179

帖子

0

精华

高级会员

Rank: 4

积分
921
金钱
921
注册时间
2013-10-23
在线时间
94 小时
 楼主| 发表于 2014-11-12 16:48:11 | 显示全部楼层
回复【3楼】古月:
---------------------------------
恩恩,是的,有童鞋给我提过了,我正在用MATLAB的GUI编写一个可执行EXE文件,到时候做一个mif文件生成软件。点数和位宽可配置的。想用C做,但是C环境我不熟。
http://xiaomeige.taobao.com。做最用心的FPGA学习板和教程资料
回复 支持 反对

使用道具 举报

31

主题

271

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
450
金钱
450
注册时间
2012-5-18
在线时间
6 小时
发表于 2014-11-13 18:53:46 | 显示全部楼层
回复【4楼】小梅哥:
---------------------------------
期待小美哥的杰作哦。
谁来买我的火柴.....
回复 支持 反对

使用道具 举报

4

主题

28

帖子

0

精华

初级会员

Rank: 2

积分
148
金钱
148
注册时间
2013-1-11
在线时间
12 小时
发表于 2014-11-25 12:18:24 | 显示全部楼层
这个必须感谢 学习了
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-7-5 05:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表