嵌入式 > 嵌入式开发 > 详情

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

发布时间:2024-11-29 发布时间:
|

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

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

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

/zixunimg/eepwimg/sine.ni.com/nips/cds/view/p/lang/zhs/nid/210272

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

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

/zixunimg/eepwimg/sine.ni.com/nips/cds/view/p/lang/zhs/nid/212692

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

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

FPGA存储器项使用DRAM

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

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

DRAM配置Mode

步骤二:配置为LabVIEWFPGAMemory

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

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

对参数进行配置

步骤三:设置Memory参数

1)设置需要的点数

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

2)设置Datatype

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

Datatype参数设置

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

配置DRAMBank的数据类型

步骤四:访问DRAM

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

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

读取DRAM数据

向DRAM写入数据

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

DRAMMemory使用范例

参考链接:

在NIFlexRIO中使用DRAM

/zixunimg/eepwimg/www.ni.com/white-paper/14571/zhs/

访问DRAM(FPGA模块)

/zixunimg/eepwimg/zone.ni.com/reference/zhs-XX/help/371599N-0118/lvfpgaconcepts/fpg...

高效使用DRAM和NICompactRIO

/zixunimg/eepwimg/zone.ni.com/reference/zhs-XX/help/373197K-0118/cserieshelp/dram_u...



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于CAN总线的汽车车身控制系统设计