博客首页 | 排行榜 |

jevei01的博客

个人档案
博文分类
FPGA设计中几种初始化文件的格式比较  2010-03-26 16:34

 

一、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;
0B : 00001011;
0C : 00001100;

END;

 

 

可以通过c语言很简单地得到mif文件,下面是求sina()256点用于DDS

 

#include
#include
#include
#define Pi 3.1416
#define DEPTH 256
#define LENTH DEPTH/2
void main()
{
FILE *fp;
int j;
unsigned char i="0";
unsigned char x="0";

if((fp=fopen("d:\\sin.mif","w"))==NULL)
{
printf("can't open this file..\n");
exit(0);
}

fprintf(fp,"width=8;\n");
fprintf(fp,"depth=%d;\n",DEPTH);
fprintf(fp,"address_radix=hex;\n");
fprintf(fp,"data_radix=hex;\n");
fprintf(fp,"content begin\n");

for(j=0;j
{
x=(int)(LENTH+LENTH*sin(2*Pi*i/DEPTH));
fprintf(fp,"  %x:  %x;\n",i,x);
i++;
}

fprintf(fp,"\n");
fprintf(fp,"end;\n");
printf("success");
getch();
}

 

 

二、Xilinx ROM初始化文件——coe文件格式

ISE初始化ROM的时候要用到一个扩展名为.coe的文件,一个标准的coe文件的格式如下:


MEMORY_INITIALIZATION_RADIX=2; //
数据格式,此为2进制,还可以为81016进制
MEMORY_INITIALIZATION_VECTOR=
01110100,
00100000,
11110101,
10000000,
01111000,
00100010,
00000001,
00010100,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
01110100,
00000101,
11110101,
10000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000,
00000000;

三、Xilinx FIR滤波器系数文件格式

 

radix = 10;        //系数的进制,此为10进制,也可以为2 1016进制

coefdata =

coef1,

coef2,

coef3,

coefN;

文件扩展名为.coeFIRdatasheet里没有写进制位8的情况。

 

类别:FPGA |
上一篇:redhat5.2下安装Marvel Yukon 88E8056网卡驱动 | 下一篇:<转载><科普>FPGA的速度等级
以下网友评论只代表其个人观点,不代表本网站的观点或立场