matlab 生成mif文件导入quartus rom中

用Quartus II创建并仿真ROM的步骤:

1.在Quatus工程下生成一个ROM

2.编写.mif文件,作为ROM的初始化文件

3.将.mif文件拷贝到Modelsim工程下

4.进行Modelsim仿真

图像保存的步骤:

1.使用matlab将图像生成txt文。

%将256位的BMP灰度图像128*128大小生成TXT文档,再生成mif文件;
clc
clear all
close all
I_rgb = imread('lena.jpg');
subplot(2, 2, 1), imshow(I_rgb), title('lena-rgb')
 
I_gray = rgb2gray(I_rgb);
subplot(2, 2, 2), imshow(I_gray), title('lena-gray')
 
I = imresize(I_gray, 0.25);
subplot(2, 2, 3), imshow(I), title('lena-qtr')
 
fid = fopen('./lena.txt','wt');
for i = 1 : size(I, 1)
    for j = 1 : size(I, 2)
        fprintf(fid, '%d ', I(i, j));%每个数据之间用空格分开%
    end
    fprintf(fid, '\n');
end
fid = fclose(fid);
I_data = load('./lena.txt');

2.创建mif文件(Memory Initialization File):使用mif生成器、C语言或者matlab语言来生成;

   选择直接使用matlab生成mif文件gray_image.mif;
%mcode to create a mif file
src = imread('lena.jpg');
gray = rgb2gray(src);
[m,n] = size( gray );                  % m行 n列
 
N = m*n;                               %%数据的长度,即存储器深度。
word_len = 8;                          %%每个单元的占据的位数,需自己设定
data = reshape(gray', 1, N);% 1行N列
 
%fid=fopen('gray_image.mif', 'w');       %打开文件
fid=fopen('gray_image.mif', 'w');       %打开文件
fprintf(fid, 'DEPTH=%d;\n', N);
fprintf(fid, 'WIDTH=%d;\n', word_len);
 
fprintf(fid, 'ADDRESS_RADIX = UNS;\n'); %% 指定地址为十进制
fprintf(fid, 'DATA_RADIX = HEX;\n');    %% 指定数据为十六进制
fprintf(fid, 'CONTENT\t');
fprintf(fid, 'BEGIN\n');
for i = 0 : N-1
    fprintf(fid, '\t%d\t:\t%x;\n',i, data(i+1));
end
fprintf(fid, 'END;\n');                 %%输出结尾
fclose(fid);                            %%关闭文件
生成的mif文件如下图所示:
matlab 生成mif文件导入quartus rom中_第1张图片

3.调用mif文件生成ROM(verilog文件即.v文件)

你可能感兴趣的:(matlab 生成mif文件导入quartus rom中)