Menu Close

Quartus 下 mif文件的使用

在开发ROM,RAM等存储器类的FPGA应用时,会经常使用存储器的初始化文件,比如在一个嵌入式CPU的开发中,经常会碰到程序代码,数据代码等这些内容往往希望在FPGA上电的时候随着FPGA的配置一起成为ROM,RAM的初始值。在Quartus和Vivado系统中都支持一种扩展名为.mif的文件可以很好的支持上述功能。当然还有其它的格式文件也可以使用,如16进制文件(Intel-Format).hex,Vivado下的文件.coe等

1. mif文件的构成

Quartus 下mif文件是一种具有一定格式的ASCII码的文本文件,文件的扩展名为.mif。主要用来指定CAM,RAM或ROM存储器内的初始内容。该文件在编译时会一起打包到对应的可下载文件中如Quartus 中的.sof文件,在FPGA上电配置时一起作为ROM,RAM等存储器的初始化文件。mif文件也可以作为仿真文件的一部分在仿真过程中使用。

2. mif文件编辑

由于mif文件是ASCII码文本文件,因此只要能编辑ASCII码文件的编辑器都可以使用,如notepad, notepad++, 也可以在Quartus 下使用the Memory Editor, the In-System Memory Content Editor, 或 the Quartus Text Editor进行创建或编辑。

3. Quartus 下的mif文件格式

mif文件是存储器的初始化内容文件,其内容和地址一一对应。每个ROM,RAM都需要一个独立的mif文件。文件的格式如下:

    • 指定存储器的深度,也就是对应多少存储单元。
      • 如:DEPTH = 32;    表示有32个存储单元
    • 存储单元的数据宽度,这个宽度要与ROM,RAM生成时指定的宽度一致。
      • 如:WIDTH = 8;      表示存储单元的数据宽度为8位。
    • 地址的表示方法,可以是2进制(BIN),16进制(HEX), 8进制(OCT),有符号的10进制(DEC),无符号的十进制(UNS)表示。地址的数值应与对应的进制一致。
      • 如: ADDRESS_RADIX = BIN;
    • 存储器内容的表示方法,可以是2进制(BIN),16进制(HEX), 8进制(OCT),有符号的10进制(DEC),无符号的十进制(UNS)表示。存储器内容的数值应与对应的进制一致。
      • 如:DATA_RADIX = HEX;
    • 地址数据由 CONTENT开始,具体的地址、内容映射由BEGIN …END;包括起来的部分。
    • mif文件内由空格或TAB制表符分隔。
    • mif文件内的注释语句可以由%…%括起来的部分,可以写在一行也可以写在多行。如:

%  multiple-line comment

multiple-line comment  %

也可以用 — 注释单行,如:— single-line comment。

    • 地址和数据之间用冒号 : 分隔 。

 

例1:4位2进制到4格雷码的转换


例1中,只要将16进制数作为ROM地址,在ROM的输出端的低4位就是4位2进制格雷码。

例2: 8bit , 256深度, hex 格式 ,ROM带有填充的初始化


 

 

 

4. mif的扩展应用

利用mif文件与ROM ,RAM 配合,可以生成各种编码,如 :减法器,格雷码,8b/10b转换,三角函数表等,在数据编码,科学计算,DSP等领域获得广泛应用。

 

练习题:利用mif文件生成8位二进制格雷码。

 

Posted in FPGA, FPGA 教材教案, Quartus II, Verilog, 开发工具, 教材与教案, 文章