FPGA DDR4读写实验(1)

DDR4 SDRAM(Double-Data-Rate Fourth Generation Synchronous Dynamic Random Access Memory,简称为 DDR4 SDRAM),是一种高速动态随机存取存储器,它属于 SDRAM 家族的存储器产品,提供了相较于 DDR3 SDRAM 更高的运行性能与更低的电压,并被广泛的应用于计算机的运行缓存。

1 DDR4 介绍

DDR4 芯片的行地址是 16bit 位宽,列地址是 10bit 位宽,而整个存储区域分为两个 BANK 组,每个 BANK 组又由 4 个子 BANK 组成,所以整片 DDR4 的容量就是2^16*2^10*8*16bit=512M*16bit。DDR4 相较于 DDR3 在指令引脚上也发生了变化,DDR4 取消了我们所熟悉的使能 WE、列激活 CAS 和行激活 RAS 这三个命令引脚,而是将这三个命令引脚和地址线 A14、A15 以及 A16 复用了。除此之外在寻址的时候也不再是直接去寻址 BANK,而是先寻址 BANK 组,然后再找到这个 BANK 组中的某个子 BANK。整个数据的吞吐是 8 倍预取,因此用户端数据在读写的时候就是16bit*8=128bit 的数据量进行吞吐(注意虽然是 8 倍预取,但是每一次 IO 引脚上的数据传输依旧是 16bit,因为数据线就 16 根,至于为何可以达到 8 倍预取和 DDR4 内部的双沿采样,FIFO 缓冲,写数据逻辑结构有关)。

2 MIG IP介绍

MIG IP 核是 Xilinx 公司针对 DDR 存储器开发的 IP,里面集成存储器控制模块,实现 DDR 读写操作的控制流程,下图是 MIG IP 核结构框图。MIG IP 核对外分出了两组接口,左侧是用户接口,就是用户(FPGA)同 MIG 交互的接口,用户只有充分掌握了这些接口才能操作 MIG;右侧为 DDR 物理芯片接口,负责产生具体的操作时序,并直接操作芯片管脚,这一侧用户只负责分配正确的管脚,其他不用关心。

DDR4 的读或者写都包含写命令操作,其中写操作命令(app_cmd)的值等于 0,读操作 app_cmd 的值等于 1。首先来看写命令时序,如下图所示。首先检查 app_rdy,为高则表明此时 IP 核命令接收处于准备好状态,可以接收用户命令,在当前时钟拉高 app_en,同时发送命令(app_cmd)和地址(app_addr),此时命令和地址被写入。

写数据的时序

写数据有三种情形均可以正确写入:

(1)写数据时序和写命令时序发生在同一拍;

(2)写数据时序比写命令时序提前一拍;

(3)写数据时序比写命令时序至多延迟晚两拍;

写时序总结如下:首先需要检查 app_wdf_rdy,该信号为高表明此时 IP 核数据接收处于准备完成状态,可以接收用户发过来的数据,在当前时钟拉高写使能(app_wdf_wren),给出写数据(app_wdf_data)。这样加上发起的写命令操作就可以成功向 IP 核写数据。这里有一个信号 app_wdf_mask,它是用来屏蔽写入数据的,该信号为高则屏蔽相应的字节,该信号为 0 默认不屏蔽任何字节。

对于背靠背写,其实也有三种情形,唯一点不同的是,它没有最大延迟限制。

接着来看读数据

读时序比较简单,发出读命令后,用户只需等待数据有效信号(app_rd_data_valid)拉高,为高表明此时数据总线上的数据是有效的返回数据。需要注意的是,在发出读命令后,有效读数据要晚若干周期才出现在数据总线上。下面是背靠背读的情况。

需要注意的是,在连续读的时候,读到的数据顺序跟请求的命令/地址是相对应的。通常使用 DDR4 的时候,为了最大限度地提高 DDR4 效能,充分利用突发写的特点,非背靠背很少用,而更多地采用背靠背操作。

相关推荐
FPGA小迷弟4 小时前
用 Claude Code 重构遗留系统:从评估到落地的完整指南
fpga开发·dsp开发·fpga·1024程序员节·sdr·无线电
专注仿真10 小时前
Vivado FPGA 开发实战项目:从入门到上板
fpga开发
NamoAmitabha12815 小时前
BSP,板级支持包--deepseek
单片机·嵌入式硬件·fpga开发
szxinmai主板定制专家15 小时前
ARM 还是 x86?CODESYS 数控机床控制器选型、FPGA 取舍与实时性真相
arm开发·人工智能·fpga开发·zynq·1024程序员节·codesys
星夜离尘561 天前
FPGA 小数据字如何纠错:完整实现并验证扩展 Hamming (13,8) SECDED
fpga开发
通信王661 天前
ZYNQ架构下的AXI_Lite 总线详解(1)
fpga开发
星夜离尘561 天前
FPGA 不用浮点开平方:逐位恢复整数平方根、余数与完整握手验证
fpga开发
Enclustra_China1 天前
FPGA设计的隐藏难题:算力、功耗与散热如何平衡?
fpga开发·fpga·fpga解决方案
好焊孙辉2 天前
从六代螺柱焊机到AI质检:鸿栢科技的螺柱焊国产化路径
人工智能·python·科技·fpga开发
unicrom_深圳市由你创科技2 天前
高帧率机器视觉 FPGA 图像板卡及传输开发定制解决方案
fpga开发