用matlab生成mif文件
在FPGA中,rom模块的初始化文件分为两种,一种是hex文件,另外一种是mif文件,这两种文件都可以通过Quartus进行手工创建,进行手工输入数据,也可以借助于专用的文件编辑器完成编辑。
在此介绍使用matlab生成mif文件的方法。
miffile.m文件的源程序如下:
function miffile(filename,var,width,depth)
%输入4个参数:
% filename: 所要生成的.mif文件的文件名,即目标文件名
% var :数据输入的文件,即源文件
% width :数据位宽
% depth : 数据深度
%
% example:
% a=unit8(rand(16,16),*255);
% miffile('randnum.mif',a,8,255);
%
if(nargin~=4) %输入必须是四个参数!
error('Need 4 parameters! Use help miffile for help!');
end,
%模拟输出mif文件的格式
fh=fopen(filename,'w+');
fprintf(fh,'--Created by xxxx.\r\n');
fprintf(fh,'--xxxx@126.com.\r\n');
fprintf(fh,'--%s.\r\n',datestr(now));
fprintf(fh,'WIDTH=%d;\r\n',width); %位宽
fprintf(fh,'DEPTH=%d;\r\n',depth); %深度
fprintf(fh,'ADDRESS_RADIX=HEX;\r\n'); %地址采用十六进制数表示
fprintf(fh,'DATA_RADIX=HEX;\r\n'); %数据采用十六进制数表示
fprintf(fh,'CONTENT BEGIN\r\n'); %数据开始标志
%%%%%%%%%%
%%%%%%%%%%
var=rem(var,2^width);
[sx,sy,sz]=size(var);
value=var(1,1,1);
sametotal=1;
idepth=0;
addrlen=1;
temp=16;
while(temp<depth) %计算所需地址的个数,地址长度
temp=temp*16;
addrlen=addrlen+1;
end,
datalen=1;
while(temp<width) %计算数据的个数,数据长度
temp=temp*16;
datalen=datalen+1;
end
for k=1:sz,
for j=1:sy,
for i=1:sx,
if(~((i==1) && (j==1) && (k==1)))
if(idepth<depth),
idepth=idepth+1;
if(value==var(i,j,k))
sametotal=sametotal+1;
continue;
else
if(sametotal==1)
fprintf(fh,['\t%' num2str(addrlen) 'X:%' num2str(datalen) 'X;\r\n'],idepth-1,value);
else
fprintf(fh,['\t[%' num2str(addrlen) 'X..%' num2str(addrlen) 'X]:%' num2str(datalen) 'X;\r\n'],idepth-sametotal,idepth-1,value);
end,
sametotal=1;
value=var(i,j,k);
end,
else
break;
end,
end,
end,
end,
end,
if(idepth<depth)
if(sametotal==1)
fprintf(fh,['\t%' num2str(addrlen) 'X:%' num2str(datalen) 'X;\r\n'],idepth,value);
else
fprintf(fh,['\t[%' num2str(addrlen) 'X..%' num2str(addrlen) 'X]:%' num2str(datalen) 'X;\r\n'],idepth-sametotal+1,idepth,value);
end,
end,
if(idepth<depth-1)
if(idepth==(depth-2))
fprintf(fh,['\t%' num2str(addrlen) 'X:%' num2str(datalen) 'X;\r\n'],idepth+1,0);
else
fprintf(fh,['\t[%' num2str(addrlen) 'X..%' num2str(addrlen) 'X]:%' num2str(datalen) 'X;\r\n'],idepth+1,depth-1,0);
end,
end,
%%%%%%%%%
%%%%%%%%%
fprintf(fh,'END;\r\n');
fclose(fh);
使用miffile函数的例程如下,将一幅RGB图片的R基色转换为灰度值后,存入到mif文件中:
clc;
clear all;
%注释
RGBImage=imread('test.JPG');
RImage=RGBImage(:,:,1);
[row,col]=size(RImage);
OutDate=zeros(1,row*col);
for i=1:row
for j=1:col
OutData((i-1)*col+j)=RImage(i,j);
end
end
miffile('data.mif',OutData,8,row*col)
imshow(RImage);
disp('OK!');
用matlab生成mif文件的更多相关文章
- matlab 生成.exe文件 转
本文链接:https://blog.csdn.net/qq_20823641/article/details/51863737 如何将MATLAB程序编译成独立可执行的程序?如何将编译好的独立可执行程 ...
- 生成mif文件的几种方法总结
mif文件就是存储器初始化文件,即memory initialization file,用来配置RAM或ROM中的数据.生成QuartusII11.0可用的mif文件,有如下几种方式: 方法1:利用Q ...
- FPGA工程中用C语言对文件进行处理_生成mif文件
本博客中有用verilog处理文件数据的代码,本博文采用C 处理文件中的数据. 有时候要生成一个mif文件—— altera memory initial file.本次工程中我得到的是一个大型的数 ...
- java调用matlab生成exe文件
一.Matlab生成Java Package 1.在MATLAB的Command Window输入deploytool命令,选择Library Compiler. 2.在弹出的窗口选择Java Pac ...
- matlab 生成mat文件
生成MAT文件 假如你的矩阵A.B都已赋值,现在需要将A,B矩阵保存成mat格式文件,执行如下命令:save mydata A B 就会把A B矩阵数据保存在yourdata.dat文件中了 保存指定 ...
- ABAQUS粘弹性边界及地震荷载施加的简单实现(Matlab生成input文件)
思路 粘弹性边界因为能够考虑地基辐射阻尼而使得结构抗震的计算结果更趋于合理,所以在需要考虑结构地基相互作用的结构抗震计算时,是较为常用的地基边界处理和地震荷载施加方法.而ABAQUS软件是经常用来进行 ...
- matlab生成HEX文件-任意信号 大于64K长度
HEX文件格式不赘述,写里直接放上代码.请批评改正. %%convert a signal data into hex file format % data format:16bit % signal ...
- Matlab生成.dll文件在.NET中加载失败与平台的关系及解决方案
问题链接地址:http://bbs.elecfans.com/forum.php?mod=viewthread&tid=207995
- MIF文件生成说明
mif文件就是存储器初始化文件,即memory initialization file,用来配置RAM或ROM中的数据.生成QuartusII11.0可用的mif文件,有如下几种方式: 方法1:利用Q ...
随机推荐
- eclipse启动时自动多一个javaw.exe的进程解决办法
问题描述:(My)Eclipse软件打开时,通过任务管理器发现有一个javaw.exe的进程自动启动. 并且关闭此进程时,(My)Eclipse会随之报错终止运行. 原因:启动(My)Eclipse的 ...
- oracle 死锁
oracle 死锁 --查用户名,查客户端机器 SELECT distinct s.username,s.MACHINE, s.sid||','||s.serial# FROM gv$session ...
- bzoj3437 小P的牧场(斜率优化dp)
3437: 小P的牧场 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2025 Solved: 1110[Submit][Status][Discu ...
- keepalived + lvs
Keepalived原理 Keepalived原理 keepalived也是模块化设计,不同模块复杂不同的功能,下面是keepalived的组件 core check vrrp libipfwc li ...
- Virtual DOM 和 diff 算法
virtual DOM : virtual DOM 用 js 模拟 DOM 结构,用 js 来对比前后变化,提高重绘性能. diff: 比如在 git 中,如果用命令 git diff xxx文件 ...
- Servlet运行原理以及生命周期
一.Servlet生命周期: Servlet加载.实例化.初始化.服务.销毁. 1.初始化init(): 当服务启动时,Servlet被装入tomcat或者其他服务器容器时执行(服务器容器从启动到停止 ...
- WDTP注册破解
简介 WDTP 不止是一款开源免费的 GUI 桌面单机版静态网站生成器和简单方便的前端开发工具,更是一款跨平台的集笔记.个人知识管理.写作/创作.博客/网站内容与样式管理等功能于一体的多合一内容处理/ ...
- [BOZJ2721]樱花
题目求\(\frac{1}{x}+\frac{1}{y}=\frac{1}{n!}\)已知n, x和y的正整数解的个数 设z=\(n!\) \(\frac{1}{x}+\frac{1}{y}=\fra ...
- Vue:(三)路由
(一)基础介绍 vue-router用来构建SPA <router-link></router-link>或者this.$router.push({path:' '}) < ...
- centos7中安装python3.7遇到的问题
安装python3.7的步骤 wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz yum install -y gcc ...