微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 手把手教你FPGA存储器项使用DRAM

手把手教你FPGA存储器项使用DRAM

时间:10-10 来源:互联网 点击:

某些FPGA终端,包含板载的、可以动态随机访问的存储块(DRAM),这些存储块可以在FPGA VI中直接访问,速率非常高。

DRAM可以用来缓存大批量的数据,而且速度可以非常快。针对一些特殊应用,比如:瞬时带宽非常高,而且有要保存原始数据的时候,就可以用DRAM做一个大的FIFO缓冲。

DRAM的大小每块板卡可能不同,一般在官网中对应板卡的说明中都会标明DRAM的大小(如果有DRAM的话)。比如,PXIe-7966R就有512M的DRAM空间。

http://sine.ni.com/nips/cds/view/p/lang/zhs/nid/210272

  

PXIe-7966R拥有512M的板载内存(DDR2)

不同的板卡板载内存大小不同,同时DDR系列也可能不同,7976R拥有高达2GB的板载缓存,且为DDR3,容量更大且速度更快。

http://sine.ni.com/nips/cds/view/p/lang/zhs/nid/212692

  

PXIe-7976R拥有2GB的板载内存(DDR3)

本文将以PXIe-7966R为例,手把手教大家使用DRAM Bank。

FPGA存储器项使用DRAM  

步骤一:将FPGA终端添加到项目中

配置之前,先将FPGA终端添加到项目中,在FPGA终端的属性对话框中选择“Mode” LabVIEW FPGA Memories,如下图。

  

DRAM配置Mode

步骤二:配置为LabVIEW FPGA Memory

在LabVIEW FPGA中Memory的主要特点是可以用来按地址存储索引数据,与FIFO的先进先出而言,各有自己的适用范围。

把DRAM配置成Memory之后,可以在FPGA终端上面,“右键”创建Memory,并在弹出的对话框中的“Implementation”中选择“DRAM”;在DRAM bank中可以选择是Bank0还是Bank1,对于7966R而言,每个Bank有256M。

  

对参数进行配置

步骤三:设置Memory参数

1)设置需要的点数

系统会依据设置的值计算出一个实际分配的元素数目,同时可以关注剩余的DRAM大小有多少。

2)设置Data type

可以设置Memory的数据类型。数据类型可以选择的各种常用的数据类型,同时也可以设置为“Customer Control”,特别要注意的是“数据的最大位宽”。

  

Data type参数设置

DRAM中每个访问单元是独立的,设置的元素个数相同,数据类型不同的时候,配置的Memory在DRAM Bank中占用的空间是相同的。所以,为了能够最大限度的使用DRAM中的空间,可以在这里设置Customer Control,然后选择一个含有两个U64元素的簇(2个U64刚好占用128位带宽),如下图所示。

  

配置DRAM Bank的数据类型

步骤四:访问DRAM

Memory中的数据访问是依据地址访问的,具体读写方式可以参考帮助文档。由于Memory中访问是依据地址来操作的,因此,在程序中可以将一段地址以“环形”方式反复读写,这个也是在缓存数据时候经常用到的。比如:在FPGA中实现“参考触发”方式的数据采集,就需要缓存一部分数据,并以环形FIFO的方式进行读写,保证缓冲区中的数据是最新的一段。

使用DRAM进行编程,以下为示例,提供参考:分别是环形方式写数据到FIFO中和环形方式读取FIFO中的数据。

  

读取DRAM数据

  

向DRAM写入数据

或者也可以在范例查找器中直接搜索,参考范例如下

  

DRAM Memory使用范例

参考链接:

在NIFlexRIO中使用DRAM

http://www.ni.com/white-paper/14571/zhs/

访问DRAM(FPGA模块)

http://zone.ni.com/reference/zhs-XX/help/371599N-0118/lvfpgaconcepts/fpg...

高效使用DRAM和NI CompactRIO

http://zone.ni.com/reference/zhs-XX/help/373197K-0118/cserieshelp/dram_u...

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top