常用的matlab/Verilog读写文件
matlab写dat文件
dat文件可以直接在vivado中读取
fid = fopen('test.dat','w');
fprintf(fid,'%d\n',test_data);
fclose(fid);
matlab读dat文件
读出为列向量
load('test.dat');
vivado verilog读dat文件
每次读出一个数
相对路径,数据源保存在同一工程下即可
integer handle;
integer read_st;
integer i;
reg din;
initial begin
handle = $fopen("../../../../data/input.dat", "r");
for(i=0;i<10000;i=i+1) begin
read_st = $fscanf(handle, "%d", din);
end
end
vivado verilog写dat文件
每次保存一个数
相对路径,数据保存在同一工程下
integer write1;
wire dout_en; // output data en
wire signed [11:0] dout; // output data
initial begin
write1 = $fopen("../../../../data/output.dat", "w");
end
always @(posedge clk) begin
if ( dout_en ) begin
$fwrite(write1, "%d\n", dout);
end
end
matlab写coe文件
以二进制为例
rom_sin rom_cos 为行向量
rom = [ dec2bin(rom_sin.') dec2bin(rom_cos.') ];
fid = fopen('rom_wave.coe','w');
fprintf(fid,'MEMORY_INITIALIZATION_RADIX=2;\n');
fprintf(fid,'MEMORY_INITIALIZATION_VECTOR=\n');
for k = 1:1:length(rom)
fprintf(fid,'%s',rom(k,:));
if k==length(rom)
fprintf(fid,';');
else
fprintf(fid,',');
end
fprintf(fid,'\n');
end
fclose(fid);