Vivado中coe与mif的区别与联系

前几天折腾zynq下bram作为rom使用,初始化rom时需要用到.coe文件,但在vivado中“generate output products”后,还会生成.mif文件,下面看一下两个文件的内容。

.coe文件的内容如下图

.mif文件的内容如下图

对比发现.mif文件的内容就是.coe文件内容的二进制形式显示。

在ZC702_blk_mem_gen_0_0目录下,同时存在.coe与.mif文件。

那么初始化rom的到底.coe文件还是.mif文件呢?

答案是.mif文件,因为初始化时,没有.mif文件,generate output products之后才生成的。再者直接编辑.mif文件,再综合实现生成bit文件,通过sdk读取rom中的数据与编辑后的.mif文件中的内容一致。

总结起来,在使用过程中,需要注意以下几点:

1、 MIF文件是根据COE文件生成的。

2、 COE文件只会在生成ROM模块时起作用,其作用就是根据文件内容生成相应的MIF文件,而ROM真正使用的是MIF文件。

3、直接编辑.mif文件的方式不可取,因为在重新生成其他模块generate output products后会根据coe文件重新生成.mif,可能与设计不一致。

文章来源:起点博客