这个时候,我们在MATLAB主界面中,右侧的workspace栏中,选中name为s的一项,双击,便可打开该数组的值,如下所示:
将该表格中的所有数据选中(可选中第一个数据,然后将进度条拉到最后一个数据的位置,按下键盘上的shift键,鼠标点击最后一个数据,便可全选了),单击右键,复制即可。然后打开execl软件,选中A1单元格,ctrl+V(粘贴),即可。
在表格中,我们会发现,这些数据是带有2位小数位的,而我们的mif文件不支持小数,因此需要将这些数据进行四舍五入。四舍五入的方法非常简单我们只需要选中行1(在数字1处点击鼠标左键即可选中),单击鼠标右键,选择设置单元格格式,如下图所示:
设置完成之后我们再看,发现表格中的数据已经全部被四舍五入了,此时的数据,就是我们可以使用的数据了。
此时,我们已经完成了
mif
文件所需数据的生成工作,我们可以将这个表格文件保存,也可以直接开着,不用关闭就行,因为这个文件只是一个中转。下一步,就是将这些数据生成我们所需要用到的mif
文件了。
二、使用Quartus II制作mif软件
打开quartus II软件,选择file—>New,在打开的选项卡中,选择Memory Initialization File,点击OK。在弹出的mif文件大小设置选项卡中,设置Number of Words为2048,Word Size为10,点击OK
即可,详细如下所示:
![](https://img-blog.csdnimg.cn/20201211151753878.png)
此时,就会建立好一个空白的mif文件,其中所有内容均为0,如下图所示:
![](https://img-blog.csdnimg.cn/20201211151815158.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MDQ1MDkz,size_16,color_FFFFFF,t_70)
我们将excel表格中的数据选中(可选中第一个数据,然后将进度条拉到最后一个数据的位置,按下键盘上的shift键,鼠标点击最后一个数据,便可全选了),单击右键,复制即可。然后回到quartusII的mif编辑界面,在mif文件的任意一个数据位置点击鼠标左键,然后按下键盘上的组合键ctrl + A(也就是全选),然后单击鼠标右键,选择paste即可。此时,我们发现,所有数据便依次存入了相应的地址中,如下图所示:
![](https://img-blog.csdnimg.cn/20201211151847986.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2MDQ1MDkz,size_16,color_FFFFFF,t_70)
我们点击quartus II软件界面上的file—>save,选择你需要存储的路径,这里暂时存储在某一文件夹上,将文件名命名为sin10_2048,即完成了我们所有的工作。因为这里没有创建工程,所以保存完成后quartus II软件会弹出以下界面,问你是否需新建工程,这里只是做演示用,不需要新建工程,因此这里选择NO。
![](https://img-blog.csdnimg.cn/2020121115202059.png)
三、设计DDS系统
1、module DDS
module DDS(
clk,//时钟
reset_n,//复位
Fword,//频率控制字
Pword,//相位控制字
DA_Data//数据输出
);
input clk;
input reset_n;
input [31:0] Fword;
input [10:0] Pword;//Rom地址11位:横坐标最大为:2048
output [9:0] DA_Data;
reg [31:0] r_Fword;//频率 寄存器
reg [10:0] r_Pword;//相位 寄存器
reg [31:0] Fcnt;//累加器
wire [10:0] rom_addr;
always @(posedge clk)
begin
r_Fword |