TA的每日心情 | 开心 2014-2-20 10:23 |
---|
签到天数: 45 天 连续签到: 1 天 [LV.5]常住居民I
|
方法1:利用Quartus自带的mif编辑器
优点:对于小容量RAM可以快速方便的完成mif文件的编辑工作,不需要第三方软件的编辑;
缺点:一旦数据量过大,一个一个的输入会使人崩溃;
使用方法:在quartus中,【file】/【new】,选择Memory Initialization file,弹出如下窗口:
Number of words:可寻址的存储单元数,对于8bit地址线,此处选择256;
words size:存储单元宽度,8bit;
然后点击“OK”.
- 在表格中输入初始化数据;
- 右键单击左侧地址值,可以修改地址和数据的显示格式;
- 表中任一数据的地址=列值+行值,如图中蓝色单元的地址=24+4=28;
对每个单元填写初始值之后,将文件保存即可。
方法2:利用mif软件来生成
无论使用什么编辑器,必须保证mif文件的格式如下:冒号左边是地址,右边是数据;分号结尾;
DEPTH = 256;
WIDTH = 8;
ADDRESS_RADIX = HEX;
DATA_RADIX = HEX;
CONTENT
BEGIN
0000 : 0000;
0001 : 0000;
0002 : 0000;
……(此处省略一千字*.*)
00FA : 00FF;
00FB : 00FF;
00FC : 00FF;
00FD : 00FF;
00FE : 00FF;
00FF : 00FF;
END;
方法3: 高级语言 生成 C语言
- #include <stdio.h>
- #include <math.h>
- #define PI 3.141592
- #define DEPTH 128 /*数据深度,即存储单元的个数*/
- #define WIDTH 8 /*存储单元的宽度*/
- int main(void)
- {
- int i,temp;
- float s;
- FILE *fp;
- fp = fopen("TestMif.mif","w"); /*文件名随意,但扩展名必须为.mif*/
- if(NULL==fp)
- printf("Can not creat file!\r\n");
- else
- {
- printf("File created successfully!\n");
- /*
- * 生成文件头:注意不要忘了“;”
- */
- fprintf(fp,"DEPTH = %d;\n",DEPTH);
- fprintf(fp,"WIDTH = %d;\n",WIDTH);
- fprintf(fp,"ADDRESS_RADIX = HEX;\n");
- fprintf(fp,"DATA_RADIX = HEX;\n");
- fprintf(fp,"CONTENT\n");
- fprintf(fp,"BEGIN\n");
- /*
- * 以十六进制输出地址和数据
- */
- for(i=0;i<DEPTH;i++)
- {
- /*周期为128个点的正弦波*/
- s = sin(PI*i/64);
- /*将-1~1之间的正弦波的值扩展到0-255之间*/
- temp = (int)((s+1)*255/2);
- /*以十六进制输出地址和数据*/
- fprintf(fp,"%x\t:\t%x;\n",i,temp);
- }//end for
-
- fprintf(fp,"END;\n");
- fclose(fp);
- }
- }
复制代码 |
|