做一开头,因为要用ROM IP核。
**主要的步骤:
- 用matlab将灰度图像生成txt文件
- 生成coe文件
- 用vivado创建IP核
- Generator例化后会生成一个.mif文件
- modulesim的仿真
**
1.用matlab将灰度图像生成txt文件
%%灰度图像生成txt文件
[file,path]=uigetfile({'*.jpg';'*.bmp';'*.png'},'选择图片');
I_rgb=imread([path,file]);
subplot(221),imshow(I_rgb),title('原图')
I_gray=rgb2gray(I_rgb);
subplot(222),imshow(I_gray),title('灰度图')
fid=fopen('./lena.txt','wt'); %打开文件lena.txt
for i=1:size(I_gray,1) %遍历像素
for j=1:size(I_gray,2)
fprintf(fid,'%d',I_gray(i,j));
end
fprintf(fid,'\n'); %每行回车
end
fid=fclose(fid); %关闭文件
I_data=load('./lena.txt') %放在当前的目录下
结果
2.生成coe文件
%生成.coe_file
[m,n]=size(I_gray);
N=m*n; %数据长度,即存储器的深度
word_len=8; %每个单元的位数
data=reshape(I_gray',1,N); %变成特定的矩阵,1行n列
fid=fopen('lena.coe','wt'); %打开lena.coe文件
fprintf(fid,'MEMORY_INITIALIZATION_RADIX=16;\n'); %这两行不变,进制数
fprintf(fid,'MEMORY_INITIALIZATION_VECTOR=\n'); %数据
for i=1:N-1
fprintf(fid,'%x,\n',data(i));
end
fprintf(fid,'%x;\n',data(N)); %每个数据回车
fclose(fid);
结果
3.用vivado创建IP核
1.选择IP Catalog
2.Memories & Storages Elements->RAMs & RAMs & BRAM->block memory generator
文件添加进去就OK
reference:
https://www.cnblogs.com/happyamyhope/
越是憧憬,越要风雨兼程。