一、
Altera ROM
初始化文件——
mif
文件格式
以下文字引自
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;