step1:寻找LPM_ROM
很多人在运用QUARTUS II 9.0创建LPM_ROM时,都惊讶地发现它不翼而飞了。(LPM_ROM的原地址为tools->Mega Wizard Plug -In Manager->Storage)事实上,它还是在元件库里的,只不过它改头换脸了一下,让人不容易找出来。现在的LPM_ROM变成了在Memory Compiler里,而且名字还改为了ROM:1-PORT(一个输出接口)和ROM:2-PORT(两个输出接口),创建方法跟LPM_ROM一致,详细步骤我会在后文阐述的。这是方法一。
如果你觉得这个LPM_ROM不够正宗的话,你可以用方法二:首先创建一个Block Diagram/Schemaic File文件,然后点击左边的工具栏上的Symbol Tool。这时候会弹出如下界面。
然后打开Libraries中的c:/altera/90/quartus/libraries->megafunctions->storage,你会发现LPM_ROM还是乖乖地在里面。
step2:创建LPM_ROM
好了,说完了如何寻找出LPM_ROM以后,该是阐述创建LPM_ROM的时候了。这里我用创建一个10位宽,256个数据个数的正弦波ROM来说明(这里使用的是ROM:1-PORT)。
首先先创建一个ROM文件。打开tools->Mega Wizard Plug -In Manager->Memory Compiler,选中ROM:1-PORT,并建立文件名为sine_rom。
点击Next出现如下界面,这里设置ROM的信息如下:
接着再一直Next到以下界面(这里我是没有设置时钟使能与异步清零的功能的,有需要的同学可以在其中一步的设置):
看到Browse...的按钮没有,这里需要选择ROM的正弦波数据文件(.mif或.hex)才能真正有效的。这里我是添加了sine.mif文件。ROM的正弦波数据文件不能够直接得出,需要利用软件创建才可以得到,在step3里会讲述.mif文件的创建。
当你以上步骤都做好以后,点击Finish就创建成功了。
step3:创建.mif数据文件
创建.mif文件的方式也是有两种。一种是在QUARTUS II 9.0主界面下选择File->New->Memory Files里选择Memory Initialzation File,这时会出现如下界面:,这时候你就需要一个一个的数据填进去。不过这种方法太费时了,而且你还不知道数据值是多少。所以一般都是采取第二种方法:用程序自动生成。
这里我使用C++编程来创建.mif文件。首先运用MS C++ 6.0创建一个C++源文件:romgen.cpp,接着写入如下程序并编译为exe文件。
程序清单:
#include "stdio.h"
#include "math.h"
int main(int argc,char* argv[])
{
int i;
double s;
for(i=0;i<256;i++)
{
s=sin(atan(i)*8*i/256);
printf("%d:%x;n",i,(int)((s+1)*1023/2));
}
return 0;
}
当生成了romgen.exe文件后,在DOS命令行下执行:
romgen>sine.mif //运行时要在romgen.exe文件所在的目录
生成了sine.mif文件后,再加上头部说明即可,格式如下:
DEPTH=256;
WIDTH=10;
ADDRESS_RADIX=DEC;
DATA_RADIX=HEX;
CONTENT
BEGIN
0:1ff;
1:20c;
2:222;
3:23b;
4:253;
...
253:1a4;
254:1bd;
255:1d6;
END
(注意:mif文件需要在txt下修改)