Matlab&Vivado生成ROM IP核

做一开头,因为要用ROM IP核。

**主要的步骤:

  1. 用matlab将灰度图像生成txt文件
  2. 生成coe文件
  3. 用vivado创建IP核
  4. Generator例化后会生成一个.mif文件
  5. 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/

越是憧憬,越要风雨兼程。

  • 3
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值