matlab生成.mif文件 产生正弦信号数据

matlab生成.mif文件 产生正弦信号数据

设计说明

很多EDA软件都需要.mif文件,比如使用Quartus 调用ROM IP核产生一个正弦波就需要对ROM IP核加载.mif文件,然后从.mif文件中读取数据产生正弦波。接下来就说一下如何用MATLAB生成.mif文件和如何产生正弦波数据吧。

设计方法

产生.mif文件其实很简单整体思路就是使用MATLAB 中fprintf函数根据.mif文件的格式一句一句打印出来具体MATLAB代码如下图所示。主要是如何生成正弦波数据,因为一个普通的正弦信号周期是2* pi。而本设计深度为256,也就是需要把2* pi分为256份也就是sin(2* pi* (x-1)/256) 。因为数据位宽为8位,所表示的数据在0-255之间。所以需要将sin(2* pi* (x-1)/256)的幅值从-1到+1变化到0到255。也就是128* sin(2* pi* (x-1)/256)+128)。乘以128,幅值变化到-128到+128然后在加上128,范围就变到了0到256了。

MATLAB生成.mif文件代码

clc;
clear;
depth =256; %存储器的深度
widths = 8; %数据宽度为8位
N = 0 :255; %把一个周期的正弦信号分为256份
s =sin(2*pi *N/256); %计算0 ~2*pi之间的sin值
qqq = fopen('sine.mif','wt') %使用fopen函数生成sine.mif
fprintf(qqq, 'depth = %d;\n',depth); %使用fprintf打印depth = 256;
fprintf(qqq, 'width = %d;\n',widths); %使用fprintf打印width = 8;
fprintf(qqq, 'address_radix = UNS;\n'); %使用fprintf打印address_radix = UNS; 表示无符号显示数据
fprintf(qqq,'data_radix = UNS;\n'); %使用fprintf打印data_radix = UNS; 表示无符号显示数据
fprintf(qqq,'content begin\n'); %使用fprintf打印content begin
for(x = 1 : depth) %产生正弦数据
fprintf(qqq,'%d:%d;\n',x-1,round(128*sin(2*pi*(x-1)/256)+128)); 
end
fprintf(qqq, 'end;'); %使用fprintf打印end;
fclose(qqq);

在运行完上面一段代码后也就在同一文件夹下生成了一个sine.mif文件如下图所示

在这里插入图片描述

生成的.mif文件如下

depth = 256;
width = 8;
address_radix = UNS;
data_radix = UNS;
content begin
0:128;
1:131;
2:134;
3:137;
4:141;
5:144;
6:147;
7:150;
8:153;
9:156;
10:159;
11:162;
12:165;
13:168;
14:171;
15:174;
16:177;
17:180;
18:183;
19:186;
20:188;
21:191;
22:194;
23:196;
24:199;
25:202;
26:204;
27:207;
28:209;
29:212;
30:214;
31:216;
32:219;
33:221;
34:223;
35:225;
36:227;
37:229;
38:231;
39:233;
40:234;
41:236;
42:238;
43:239;
44:241;
45:242;
46:244;
47:245;
48:246;
49:247;
50:249;
51:250;
52:250;
53:251;
54:252;
55:253;
56:254;
57:254;
58:255;
59:255;
60:255;
61:256;
62:256;
63:256;
64:256;
65:256;
66:256;
67:256;
68:255;
69:255;
70:255;
71:254;
72:254;
73:253;
74:252;
75:251;
76:250;
77:250;
78:249;
79:247;
80:246;
81:245;
82:244;
83:242;
84:241;
85:239;
86:238;
87:236;
88:234;
89:233;
90:231;
91:229;
92:227;
93:225;
94:223;
95:221;
96:219;
97:216;
98:214;
99:212;
100:209;
101:207;
102:204;
103:202;
104:199;
105:196;
106:194;
107:191;
108:188;
109:186;
110:183;
111:180;
112:177;
113:174;
114:171;
115:168;
116:165;
117:162;
118:159;
119:156;
120:153;
121:150;
122:147;
123:144;
124:141;
125:137;
126:134;
127:131;
128:128;
129:125;
130:122;
131:119;
132:115;
133:112;
134:109;
135:106;
136:103;
137:100;
138:97;
139:94;
140:91;
141:88;
142:85;
143:82;
144:79;
145:76;
146:73;
147:70;
148:68;
149:65;
150:62;
151:60;
152:57;
153:54;
154:52;
155:49;
156:47;
157:44;
158:42;
159:40;
160:37;
161:35;
162:33;
163:31;
164:29;
165:27;
166:25;
167:23;
168:22;
169:20;
170:18;
171:17;
172:15;
173:14;
174:12;
175:11;
176:10;
177:9;
178:7;
179:6;
180:6;
181:5;
182:4;
183:3;
184:2;
185:2;
186:1;
187:1;
188:1;
189:0;
190:0;
191:0;
192:0;
193:0;
194:0;
195:0;
196:1;
197:1;
198:1;
199:2;
200:2;
201:3;
202:4;
203:5;
204:6;
205:6;
206:7;
207:9;
208:10;
209:11;
210:12;
211:14;
212:15;
213:17;
214:18;
215:20;
216:22;
217:23;
218:25;
219:27;
220:29;
221:31;
222:33;
223:35;
224:37;
225:40;
226:42;
227:44;
228:47;
229:49;
230:52;
231:54;
232:57;
233:60;
234:62;
235:65;
236:68;
237:70;
238:73;
239:76;
240:79;
241:82;
242:85;
243:88;
244:91;
245:94;
246:97;
247:100;
248:103;
249:106;
250:109;
251:112;
252:115;
253:119;
254:122;
255:125;
end;
  • 18
    点赞
  • 173
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值