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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM