FPGA设计中几种初始化文件的格式比较
一、Altera ROM初始化文件——mif文件格式
以下文字引自Altera公司的资料。
Memory Initialization File (.mif) Definition
An ASCII text file (with the extension .mif) that specifies the initial conte nt of a memory block (CAM, RAM, or ROM), that is, the initial values for ea ch 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 initializati on in the Compiler and Simulator. You can also use a Hexadecimal (Intel-For mat) File (.hex) to provide memory initialization data.
A Memory Initialization File contains the initial values for each address i n the memory. A separate file is required for each memory block. In a Mem ory Initialization File, you must specify the memory depth and width values. I n addition, you can specify data radixes as binary (BIN), hexadecimal (HEX), o ctal
(OCT), signed decimal (DEC), or unsigned decimal (UNS) to display and in terpret 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 ke ywords. You can use Tab "\t" and Space " " characters as separators, and in sert multiple lines of comments with the percent "%" character, or a single c omment with double dash "--" characters. Address : data pairs represent data contained inside certain memory addresses and you must place them betwe en the CONTENT BEGIN and END keywords, as shown in the following examp les.
% 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<DEPTH;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进制,还可以为8,10,16进制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,10,16进制coefdata =
coef1,
coef2,
fprintf格式coef3,
…
coefN;
文件扩展名为.coe。FIR的datasheet里没有写进制位8的情况。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论