vivado中bram ip核是经常会用到的,而一种比较简便的给ram赋初值的方式就是通过一个coe文件进行加载,那么如何用matlab来产生这样一个可直接使用的coe文件呢?
coe文件的通用格式
首先我们来了解下coe文件的通用格式:
coe文件是一种ascii文本文件,文件头部定义数据基数(radix),可以是2,10或16。数据则以向量的形式给出,每个向量以分号结尾。vivado会解析coe文件格式,并在生成ip核时导出相关的mif格式文件,用于行为级仿真。
coe文件的通用语法格式如下:
keyword =value ; 注释《radix_keyword》 =value ; 注释《data_keyword》 =data_value1, data_value2, data_value3;
coe语法不区分关键词的大小写;分号后为注释。
与定义数据值的基数相关的关键词:
radix:用于非存储类型ip核的基数定义;memory_initialization_radix:定义存储器初始化值的基数。
与数据值相关的关键词:
coefdata:定义滤波器的系数;memory_initialization_vector:定义块存储器与分布式存储器的数据;pattern:用于位相关器(bit correlator)coe文件;branch_length_vector:用于interleaver coe文件。
coe文件最后定义的关键词必须是coefdata或memory_initialization_vector,之后的关键词定义都会被忽略。
block memory coe
memory_initialization_radix=10;memory_initialization_vector=data_value1, data_value2, data_value3;
matlab产生coe文件的代码:
fid = fopen(‘coe_file.coe’,‘w+’); fprintf(fid,‘memory_initialization_radix = 10; ’); fprintf(fid,‘memory_initialization_vector = ’); fprintf(fid,‘%g, ’,data_value(1:end-1)); fprintf(fid,‘%g; ’,data_value(end)); fclose(fid);
生成的mif文件
coe文件提供了一种设置内存初始化值的高层次方法,但实际上并不能直接使用。当生成ip核时,vivado会将coe文件转换为mif文件。mif文件保存了原始值,用于存储类ip核的初始化和仿真模型。
mif文件中每一行代表一个存储位置,如第一行代表地址0,第二行代表地址1……每一行必须是初始化值(高位在前),与之相关的内存地址为二进制格式。在hdl仿真时,mif文件必须仿真仿真目录下。使用vivado simulator仿真时vivado会自动完成相关操作。
最好将coe文件放在与使用此文件的ip核同目录下(即与xci文件同目录),这样在使用core cotainer打包ip核时也会将coe文件打包到xcix文件中。当替换coe文件时,必须要删掉旧的coe文件,否则也会传递到工程的综合过程中;需要注意,如果只是在磁盘上删掉了文件,而不是在工程中移除,会导致报告一个error。
真正的第三代区块链:比特股Bitshares 3.0
福建省电子信息集团注册资本增至152.39亿
英创信息技术利用COM组件远程更改设备配置文件的流程
一种简单家用不间断电源的设计
小米6预售日期曝光,已经有300多万人虎视眈眈了!你抢得到吗?
教你们怎么生成BRAM初始值的coe文件
土壤墒情速测仪的作用是什么,它的优势都有哪些
如何将太阳能光伏发电系统和城市轨道交通建设结合起来?
市场规模逐渐平衡 热水器行业迎来拐点
修复笔记本电脑电源插头的方法
轻薄充电宝什么牌子口碑好?轻薄耐用的充电宝品牌推荐
5种时钟树设计在线研讨会
RISC-V SIG成功将Chromium等桌面软件适配到openEuler RISC-V
物联网领导者如何做可以获得更好的成绩
由富士康和凌华科技合资的法博智能移动FARobot已正式成立
OPPO Reno3 Pro配置参数再曝光,重量仅有17克
主从触发器,主从触发器的原理和特点有哪些?
Linux块层架构介绍 块层IO流程与块层IO调度器详解
基于zigbee应用 油井生产
工业物联网解决方案:风沙气象数据实时上云监控