[转载]基于FPGA的LPM_ROM创建_Detective_ALong_新浪博客

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。这时候会弹出如下界面。[转载]基于FPGA的LPM_ROM创建

然后打开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。[转载]基于FPGA的LPM_ROM创建

点击Next出现如下界面,这里设置ROM的信息如下:[转载]基于FPGA的LPM_ROM创建
接着再一直Next到以下界面(这里我是没有设置时钟使能与异步清零的功能的,有需要的同学可以在其中一步的设置):
[转载]基于FPGA的LPM_ROM创建
看到Browse...的按钮没有,这里需要选择ROM的正弦波数据文件(.mif或.hex)才能真正有效的。这里我是添加了sine.mif文件。ROM的正弦波数据文件不能够直接得出,需要利用软件创建才可以得到,在step3里会讲述.mif文件的创建。

    当你以上步骤都做好以后,点击Finish就创建成功了。

step3:创建.mif数据文件

    创建.mif文件的方式也是有两种。一种是在QUARTUS II 9.0主界面下选择File->New->Memory Files里选择Memory Initialzation File,这时会出现如下界面:[转载]基于FPGA的LPM_ROM创建,这时候你就需要一个一个的数据填进去。不过这种方法太费时了,而且你还不知道数据值是多少。所以一般都是采取第二种方法:用程序自动生成。

    这里我使用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下修改)

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LPM_ROMLPM_RAM设计 一 实验目的 掌握FPGALPM_ROM的设置: 1 作为只读寄存器ROM的工作特性和配置方法; 2 学习将程序代码或数据以MIF格式文件加载于LPM_ROM中; 掌握lpm_ram_dp的参数设置和使用方法: 1 掌握lpm_ram_dp作为随即存储器RAM的设置; 2 掌握lpm_ram_dp的工作特性和读写方法; 3 掌握lpm_ram_dp的仿真测试方法。 二 实验要求 1 LPM_ROM定制和测试 LPM_ROM的参数设置: LPM_ROM中数据的写入,即初始化文件的编写; LPM_ROM的实际应用,在GW48实验台上用N0.0电路模式测试。 2 LPM_RAM定制和测试 LPM_RAM的参数设置; LPM_RAM的实际应用,在GW48实验台上用N0.0电路模式测试。 三 实验原理 用户可编程硬件FPGA芯片设计,有许多可调用参数化库模块LPM(Library Parameterized Modules),课直接调用设置,利用嵌入式阵列块EAB(Embed Array Block)构成lpm_ROMlpm_RAM等各种存储器结构。 Lpm_ROM有5组信号: 地执信号address[]; 数据信号q[]; 时钟信号inclock、outclock; 允许信号memenable. 其参数是可以设定的。由于ROM是只读寄存器,它的数据口试单向的输出端口,数据是在对FPGA现场配置时,通过配置文件一起写入存储单元的。 Lpm_ram_dq的输入/输出信号如下: 地址信号 address[]; RAM_dqo的存储单元地址; 数据输入信号DATA[] RAM_dqo的数据输入端; 数据输出信号Q[]; RAM_dqo的数据输出端; 时钟信号CLK; 读/写时钟脉冲信号; 读写信号W/R 读/写控制信号端 数据从总线端口DATA[]输入。丹输入数据和地址准备好以后,由于在inclock上的信号是地址锁存时钟,当信号上升沿到来时,地址被锁存,于是数据被写入存储单元。数据的读出控制是从A[]输入存储单元地址,在CLK信号上升沿到来时,该单元数据从Q[]输出。W/R为读/写控制端,低电平时进行读操作,高电平时进行写操作; 四 实验步骤

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值