FPGA学习笔记之LPM RAM使用

转自: http://bbs.ednchina.com/BLOG_ARTICLE_3007031.HTM


1、RAM初始化文件的生成,其格式必须满足一定的要求,对于Quartus II,其能接受的两种格式初始化文件:.mif格式(即memory initialization file )和.hex格式(即hexadecimal 16进制),下面是两种格式的建立方法:

    (1).MIF文件
     如果要生成的数据表相对简单,那么可以手动填写。即在quarter ii 中File,new, 选择memory file中的memory initialization file。,点击OK后需要选择存储器地址和数据宽度,比如说对应地址线是八位的,那么number应该是256,word size是8位,OK后即生成数据表格,然后自己填就行,填完保存。
     如果要生成的数据表比较复杂和庞大,那么就必须用高级语言编写生成,如用matlab或C写。此外,还有专门的MIF文件生成器,康芯电子mif-maker。
    (2).hex文件 
    在quarter ii 内部建立方法和.mif文件类似,第二种方法则是利用51编译器来,这个比较简单,学过51的都会。
  
2、具体操作:
    (1)从quartus ii 菜单栏tools下拉菜单中选择megawizard plug-in manager ,然后点击新建一个新宏模块变量;
   (2)next ,然后再选择你要调用的RAM模块,在左边memory 下有1port ,2port,等RAM宏模块,根据自己需要选择,这里选择1port,Device 选择Cyclone II ,语言选择Verilog, 在下面路径中选择你项目路径,并为RAM命名,下面那个return to this page for another create operation ,意思我想是当你下次创建类似操作时会跳过前面页面,直接来到当前页面,所以这里我不必选它;
   (3)选择长度和位宽后,我一般选择AUTO 自动分配所需存储空间大小,也有常用M4K的,当然看自己所需要的空间大小,若是小于4KB的,选M4K就好了。这是固定分配的存储器,比较节约逻辑资源;然后选择Single block ;
    (4)接着便是使能端和清零端口设置的选择,这里直接默认就可以了;
    (5)下一个选择便是选择是要空白的数据表,还是加载你已经做好的MIF文件,这里我选加载mif;
     (6)是产生仿真需要的网络表,要仿真的话,就需要这个咯;
    (7)最后是选择你需要产生的文件,.V文件是肯定要的, 不然在顶层模块或其他模块里无法例化调用这个RAM宏模块了,其他暂时不清楚是干什么,干脆就默认。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LPM_ROM和LPM_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_ROM,lpm_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、付费专栏及课程。

余额充值