49.关于Quartus和ISE中ROM的初始化和仿真的一些小结

最近在玩Altera的FPGA,当我用Quartus II自带的IP核生成ROM时,出现了各种问题,于是在网上各种查资料,终于解决了我的问题。这里做一下小结,方便自己日后查阅。

Quartus II 和ISE在仿真和初始化时有些些区别,这里简要介绍一下二者的初始化和仿真步骤:1、用Quartus II创建并仿真ROM

Step1:在Quatus II工程下生成一个ROM

Step2:编写.mif文件,作为ROM的初始化文件

Step3:将.mif文件拷贝到Modelsim工程下

Step4:进行Modelsim仿真

初始化文件.mif文件的编写需要按照一定的格式,很多文章都有介绍,我这里也总结一下:初始化文件一般有.hex文件和.mif文件,但是一般都是用文本文件写好初始化的数据,然后将后缀改为.mif,这样做简单方便,故使用的比较广泛。先看一个简单的mif文件的内容(可以用记事本将mif文件打开,看到里面的代码):

DEPTH=256;    %存储器的纵向容量,就是存多少个数据,本例中是256个

WIDTH=8 ;         %存储器的横向宽度,就是每个数据多少位,8位宽

ADDRESS_RADIX=DEC ;   %设置地址基值(实际就是地址用什么进制的数表示)   可以设为BIN(二进制),OCT(八进制),DEC(十进制),HEX(十六进制)

DATA_RADIX=DEC ; %设置数据基值 同上

%数据区里的地址和数据值要和这里设置的值一致,即这里如果设置了

%DEC那么,数据区的地址和数据都要用十进制来表示。

CONTENT   %开始数据区

BEGIN

       0:0;       %前面是地址,后面是数据,都是用十进制表示(上面的DEC)

       1:1;     

……%如果表示成这样 [0..255]:10; 意思就是从0到255都是数据10.

      255:255;

END;      %结束

2、用ISE创建并仿真ROM

    Step1:在ISE工程下生成一个ROM

    Step2:编写.coe文件,作为ROM的初始化文件

    这一步与Quartus II不同,因为Quartus II中ROM的初始化文件为.mif或者.hex,而在ISE中ROM的初始化文件是.coe文件,所以需要编写.coe文件。.coe文件的格式很简单,下面就是一个.coe文件的内容:

    MEMORY_INITIALIZATION_RADIX=16;     //表示ROM内容的数据格式是16进制
    MEMORY_INITIALIZATION_VECTOR=

    0a,      
    0b,
    0c;    //每个数据后面用逗号或者空格或者换行符隔开,最后一个数据后面加分号

    Step3:用Core Generator完成ROM的例化后会生成一个.mif文件,这是Modelsim进行ROM仿真时需要的初始化文件,将.mif文件拷贝到Modelsim工程下。

    Step4:进行Modelsim仿真

上一篇:App.config“配置系统未能初始化” 异常解决 C#


下一篇:Java中的ExceptionInInitializerError异常及解决方法