MATLAB生成COE或MIF文件代码
网络上的各种代码写的不太规范或是不利于理解,故分享三个可以直接生成COE或MIF文件的matlba代码用于学习使用,深度为4096,位宽为8
以下分别是正余弦波形、三角波和矩形波COE文件生成代码。
一、COE文件与MIF文件
这两种文件都属于内存初始化文件,这种格式类似于ASCⅡ码的形式,可以直接进行编辑,容易生成。区别最大的地方在于头文件的不同。具体格式见下图, 同样是定义初始化数据格式(十进制、十六进制、无符号等),MIF文件另需定义位宽、深度、地址符号。
COE文件格式如下
memory_initialization_radix = 16;memory_initialization_vector = 00000000,00187DE2,002D413C,...
MIF文件格式如下
WIDTH = 32 ;DEPTH = 256 ;ADDRESS_RADIX = UNS ;DATA_RADIX = HEX ;CONTENT BEGIN0: 00000000;1: 00187DE2;. END;
二、代码可直接使用
1.正余弦
代码如下(以生成COE文件作示例):
%% sin-cos wave data write in coe fileclear all ;clc ;N = 4096 ;y = zeros(N , 1) ;for i = 1:1:N x = i ;%y(i,1) = ceil( 127*sin(x*2*pi/N) ) + 127 ;y(i,1) = ceil( 127*cos(x*2*pi/N) ) + 127 ;end plot(y);hold on;fid = fopen('cos_4096.coe','wt'); %- standard formatfprintf( fid, 'MEMORY_INITIALIZATION_RADIX = 10;\n'); fprintf( fid, 'MEMORY_INITIALIZATION_VECTOR =\n');%- write data in coe filefor i = 1:1:Nfprintf(fid,'%d,\n',y(i,1)); endfclose(fid);
2.三角波
代码如下(示例):
%% triangle wave data write in coe fileclear all ;clc ;N = 4096 ;y = zeros(N , 1) ;for i = 1:1:N if(i < 2049)y(i,1) = fix( (i/8) - 1 ) ;elsey(i,1) = fix( ((4096 - i )/8) ) ;endend plot(y);hold on;fid = fopen('triangle_4096.coe','wt'); %- standard formatfprintf( fid, 'MEMORY_INITIALIZATION_RADIX = 10;\n'); fprintf( fid, 'MEMORY_INITIALIZATION_VECTOR =\n');%- write data in coe filefor i = 1:1:Nfprintf(fid,'%d,\n',y(i,1)); endfclose(fid);
3.矩形波
代码如下(示例):
%% rectangle wave data write in coe fileclear all ;clc ;N = 4096 ;y = zeros(N , 1) ;for i = 1:1:N if(i < 2049)y(i,1) = 255 ;elsey(i,1) = 0 ;endend plot(y);hold on;fid = fopen('rectangle_4096.coe','wt'); %- standard formatfprintf( fid, 'MEMORY_INITIALIZATION_RADIX = 10;\n'); fprintf( fid, 'MEMORY_INITIALIZATION_VECTOR =\n');%- write data in coe filefor i = 1:1:Nfprintf(fid,'%d,\n',y(i,1)); endfclose(fid);
总结
这些是最基础最简单的代码,对于初学者来说一定要理解每一步的意义,便能根据任意需求便写出任意波形、深度、宽度的COE文件。