• FPGA中.mif文件的创建和使用


    FPGA设计中ROM的应用时比较常见的,在调用ROM时经常要加载mif文件,对于初学者,无论mif还是hex都是很令人疑惑的东西,这里就对mif文件的格式及其创建做一点简单的说明。

    mif在fpga设计中试memory initialization file 的缩写,中文意思就是存储器初始化文件。直接说就是给rom赋值的文件。先看一个简单的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;      %结束

    至于mif文件的创建,最简单的方法就是用记事本了。也可以在Quartus II 里新建,然后保存。

    mif文件的使用,在bdf模块调用中找出lpm_ROM 在有一项设置中要添加文件那里加入就可以用了。

    ----------------------------

    以下这些据说是Altera的官方说明;

    Memory Initialization File (.mif) Definition

    An ASCII text file (with the extension .mif) that specifies the initial content of a memory block (CAM, RAM, or ROM), that is, the initial values for each address. This file is used during project compilation and/or simulation. You can create a Memory Initialization File in the Memory Editor, the In-System Memory Content Editor, or the Quartus II Text Editor.

    A Memory Initialization File serves as an input file for memory initialization in the Compiler and Simulator. You can also use a Hexadecimal (Intel-Format) File (.hex) to provide memory initialization data.

    A Memory Initialization File contains the initial values for each address in the memory. A separate file is required for each memory block. In a Memory Initialization File, you must specify the memory depth and width values. In addition, you can specify data radixes as binary (BIN), hexadecimal (HEX), octal (OCT), signed decimal (DEC), or unsigned decimal (UNS) to display and interpret addresses and data values. Data values must match the specified data radix.

    When creating a Memory Initialization File in the Quartus II Text Editor, you must start with the DEPTH, WIDTH, ADDRESS_RADIX and DATA_RADIX keywords. You can use Tab "\t" and Space " " characters as separators, and insert multiple lines of comments with the percent "%" character, or a single comment with double dash "--" characters. Address : data pairs represent data contained inside certain memory addresses and you must place them between the CONTENT BEGIN and END keywords, as shown in the following examples.

    % multiple-line comment

    multiple-line comment %      

                                        

    -- single-line comment

    DEPTH = 32;                    -- The size of data in bits

    WIDTH = 8;                     -- The size of memory in words

    ADDRESS_RADIX = HEX;           -- The radix for address values

    DATA_RADIX = BIN;              -- The radix for data values

    CONTENT                        -- start of (address : data pairs)

    BEGIN

    00 : 00000000;                 -- memory address : data

    01 : 00000001;

    02 : 00000010;

    03 : 00000011;

    04 : 00000100;

    05 : 00000101;

    06 : 00000110;

    07 : 00000111;

    08 : 00001000;

    09 : 00001001;

    0A : 00001010;

    0B : 00001011;

    0C : 00001100;

    END;

    % multiple-line comment

    multiple-line comment %      

                                        

    -- single-line comment

    DEPTH = 32;                    -- The size of data in bits

    WIDTH = 8;                     -- The size of memory in words

    ADDRESS_RADIX = HEX;           -- The radix for address values

    DATA_RADIX = BIN;              -- The radix for data values

    CONTENT                        -- start of (address : data pairs)

    BEGIN

    00 : 00000000;                 -- memory address : data

    01 : 00000001;

    02 : 00000010;

    03 : 00000011;

    04 : 00000100;

    05 : 00000101;

    06 : 00000110;

    07 : 00000111;

    08 : 00001000;

    09 : 00001001;

    0A : 00001010;

    0B : 00001011;

    0C : 00001100;

    END;

    Address : Data Pairs Syntax Rules

    Definition

    Example

    A : D

    Addr[A] = D

    2 : 4

    Address: 01234567

    Data:     00400000

    [A0..A1] : D

    Addr[A0] to [A1] contain data D

    [0..7] : 6

    Address: 01234567

    Data:     66666666

    [A0..A1] : D0 D1

    Addr[A0] = D0,

    Addr[A0+1] = D1,

    Add [A0+2] = D0,

    Addr[A0+3] = D1,

    until A0+n = A1

    [0..7] : 5 6

    Address: 01234567

    Data:     56565656

    A : D0 D1 D2

    Addr[A] = D0,

    Addr[A+1] = D1,

    Addr[A+2] = D2

    2 : 4 5 6

    Address: 01234567

    Data:     00456000

    转自:http://hi.baidu.com/chentao841117/item/3b924522a2ef21130975084b

  • 相关阅读:
    win7 windows server 2008R2下 https SSL证书安装的搭配(搭配https ssl本地测试环境)
    (转载)数据库表设计-水电费缴费系统(oracle)
    考勤系统——代码分析datagrid
    (转载)模拟银行自助终端系统
    Amazon验证码机器算法识别
    [译] 理解 LSTM 网络
    循环神经网络(RNN, Recurrent Neural Networks)介绍
    机器学习之线性分类器(Linear Classifiers)——肿瘤预测实例
    word2010无法显示endnote x7插件及破解endnote x7
    ubuntu16.04+caffe训练mnist数据集
  • 原文地址:https://www.cnblogs.com/cdwodm/p/2841915.html
Copyright © 2020-2023  润新知