芯路恒电子技术论坛

 找回密码
 立即注册

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

热搜: 合集

SU200P LPDDR5X 双通道读写实验说明

Vivado 工程:lpddrmc_0_ex 工程环境:Vivado 2026.1 目标器件:xcsu200p-sbva1024-2-e

1. 实验目的

本实验使用 SU200P 开发板上的 FPGA 和板载 LPDDR5X 存储器搭建一套自动读写验证系统。完成实验后,读者应能够:

  1. 理解工程的整体结构以及各主要模块的作用;
  2. 了解 LPDDRMC IP 中与板载存储器、参考时钟和 AXI 接口有关的核心配置;
  3. 理解两路 AXI 测试模块写入、读回和比较数据的过程;
  4. 将工程生成的 PDI 下载到开发板;
  5. 通过状态信号、VIO 和 System ILA 判断 LPDDR5X 是否正常工作。

2. 工程概述

lpddrmc_0_ex 是一个面向板级验证的 LPDDR5X 读写工程。工程使用 LPDDRMC IP 完成高速存储器的初始化、校准和物理接口控制,在用户侧连接两路自定义 AXI 主机。两路主机分别向不同地址区域写入递增数据,再从相同地址读回并逐拍比较,从而检查存储器和 AXI 数据通路是否正常。

工程的设计主体位于 design_1.bd。Vivado 根据该 Block Design 生成 design_1_wrapper,并将其作为综合顶层。工程主要文件如下:

<samp>工程主要文件</samp>

文件作用
lpddrmc_0_ex.xprVivado 工程入口
lpddrmc_0_ex.srcs/sources_1/bd/design_1/design_1.bd系统 Block Design,连接控制器、测试和调试模块
lpddrmc_0_ex.gen/sources_1/bd/design_1/hdl/design_1_wrapper.vVivado 根据 Block Design 生成的综合顶层
imports/dma_test_warpper.v产生测试启动脉冲并封装 AXI 主机
imports/axi_master.v完成 AXI 写入、读回和数据比较
pl_run_indicate.v产生低速翻转的 PL 运行指示信号
imports/example_top.xdcLPDDR5X、参考时钟、复位和状态输出的管脚约束
bit/design_1_wrapper.pdi当前工程生成的器件下载文件
bit/design_1_wrapper.ltx与当前 PDI 配套的 VIO/ILA 探针文件

design_1_wrapper.v 和 IP 生成文件由 Vivado 管理。修改系统连接时应编辑 design_1.bd;修改测试过程时应编辑 dma_test_warpper.vaxi_master.v;改变存储器参数时应重新配置 LPDDRMC IP。

3. 设计结构与工作原理

3.1 总体结构

SU200P 已经在 FPGA 的 Bank 85 上连接了一颗 32 bit LPDDR5X 存储器,并提供配套的差分参考时钟。本工程的设计目标,就是利用 FPGA 内部的 LPDDRMC 建立这条存储器通路,再通过自定义测试模块验证板载 LPDDR5X 能否完成稳定的写入、读回和数据比较。

LPDDR5X双通道读写系统Block Design

<kbd>LPDDR5X双通道读写系统Block Design</kbd>

图中部的 lpddrmc_0 是整个设计的中心。其右侧 LPDDR5 接口最终连接开发板上的存储器,左侧 S0_AXIS1_AXI 则分别连接上方两个 dma_test_warpper。这样,板载 LPDDR5X 被转换成了用户逻辑可以通过 AXI 访问的存储空间。

两个测试通道的结构相同,但访问不同的地址区域。它们先写入连续递增的数据,再从相同地址读回并比较;因此,测试结果同时覆盖 LPDDRMC、FPGA 与存储器之间的物理连接,以及 AXI 读写数据通路。右上方的 System ILA 连接两路 AXI 接口和测试状态信号,用于定位握手停滞、响应错误或数据比较错误;左上方的 VIO 可以分别手动启动两路测试。

图下方是时钟、复位和运行指示部分。LPDDRMC 接收板上的差分参考时钟,并通过 clk_gen_sim_0 为 AXI 测试模块、VIO 和 ILA 提供用户时钟;rst_design_1_0M 综合外部低有效复位与 pll_lock 状态,确保控制器时钟稳定后再释放用户逻辑。pl_run_indicate_0 利用同一用户时钟产生低速运行指示。

ddrmc5_responder_0 是 Vivado 配套的存储器接口响应模块,主要用于存储器接口仿真并将 LPDDR5 接口导出到设计顶层。进行板级验证时,LPDDRMC 实际访问的是开发板上的 LPDDR5X 器件。

3.2 LPDDRMC:连接 AXI 与 LPDDR5X

LPDDRMC 是本工程的核心模块。它面向板载 LPDDR5X 提供 CK、WCK、CA、DQ、DMI、RDQS 和复位等物理信号,并在用户侧提供 S0_AXIS1_AXI 两个 AXI4 从接口。用户逻辑只需按照 AXI 协议读写地址和数据,不需要直接产生 LPDDR5X 的命令时序。

控制器上电后先建立内部时钟并训练存储器接口。pll_lock 表示内部 PLL 已锁定,cal_done 表示初始化和校准完成,cal_error 表示校准过程出现错误。只有时钟稳定、复位释放并且校准完成后,后续 AXI 读写才具备正常工作的条件。

3.3 dma_test_warpper:管理测试启动

工程中放置了两个 dma_test_warpper 实例,分别连接 LPDDRMC 的两路 AXI 接口。该模块负责:

  • 复位释放后自动产生第一次测试启动脉冲;
  • 在一轮测试完成或发生错误后启动下一轮测试;
  • 检测 VIO 输入的 0→1 上升沿,支持手动启动;
  • 输出 TXN_START_FLAGTXN_DONEERRORWR_FRE,供 ILA 观察。

WR_FRE 记录相邻两次启动之间的用户时钟周期数,可用于比较两路测试完成一轮读写所需的时间。

3.4 axi_master:写入、读回并比较

axi_master 是实际产生 AXI 事务的模块。一轮测试按以下顺序进行:

  1. 从指定基地址开始写入连续递增的 256 bit 数据;
  2. 等待写阶段完成后,从相同地址发起读取;
  3. 同步生成期望数据,并与每一拍读回数据比较;
  4. 检查 AXI 写响应 BRESP 和读响应 RRESP
  5. 无异常时产生 TXN_DONE,数据不一致或响应错误时置位 ERROR

两个测试通道使用相同的事务参数,但访问不同的地址区域。

<samp>测试通道</samp>

测试通道LPDDRMC 接口起始地址AXI 数据宽度突发长度
dma_test_warpper_0S0_AXI0x2000_0000256 bit128 拍
dma_test_warpper_1S1_AXI0x1000_0000256 bit128 拍

每拍数据为 32 byte,单个突发传输 128 × 32 = 4096 byte。代码每轮执行 4 个突发,因此每个通道每轮写入并读回 16 KiB 数据。两个通道使用不同起始地址,测试数据不会互相覆盖。

3.5 时钟、复位和状态指示

板上约 266.5 MHz 差分参考时钟从 M5/L5 输入 LPDDRMC。控制器输出的用户时钟驱动两路 AXI 测试模块、VIO、System ILA 和运行指示逻辑,使控制器用户接口与测试逻辑处于同一时钟域。

外部低有效复位连接 FPGA 管脚 F23,对应板上普通按键 SW13。复位模块同时参考外部复位和 pll_lock:SW13 释放且 PLL 锁定后,AXI 测试逻辑才会退出复位。

工程还将以下状态引出到板载 LED。原理图中 LED 信号通过 Q26~Q33 低侧驱动,FPGA 输出高电平时对应 LED 点亮。因此,除了 FPGA 管脚外,还需要根据板上器件编号观察实际现象。

<samp> 状态信号与LED对应关系</samp>

信号FPGA 管脚板上器件作用正常板级现象
cal_doneB17Q26(LED1)LPDDR5X 初始化和校准完成Q26 点亮
cal_errorC18Q27(LED2)初始化或校准错误Q27 熄灭
pll_lockD17Q30(LED5)LPDDRMC PLL 锁定Q30 点亮
led_out_0D16Q31(LED6)PL 运行指示,周期翻转Q31 周期闪烁
clk_out_0C17Q32(LED7)导出的 AXI 用户时钟Q32 通常呈稳定点亮

clk_out_0 是高频时钟,Q32 的闪烁速度远超肉眼分辨能力,因此通常呈现稳定亮度,不能用它判断 AXI 读写是否正确。Q26 点亮、Q27 熄灭和 Q30 点亮只能说明控制器完成了时钟锁定与存储器校准;读写结果还应结合两路测试模块的 TXN_DONEERROR 判断。

4. LPDDRMC IP 配置

前一节中的模块连接建立了测试流程,而 LPDDRMC 的参数决定这套逻辑能否真正驱动 SU200P 上的 LPDDR5X。配置时首先要匹配板载器件和参考时钟,再根据测试逻辑设置 AXI 接口;这些参数来自硬件连接和设计需求,并不是彼此独立的选项。

4.1 基础配置:控制器类型与参考时钟

LPDDRMC基础时钟配置

<kbd>LPDDRMC基础时钟配置</kbd>

SU200P 的板载时钟电路为 LPDDR5X 提供 CLK95211_OUT2_LPDDR5_SYSCLK_P/N 差分参考时钟,并将其连接到 FPGA 管脚 M5/L5。因此,Controller Type 选择 LPDDR5 SDRAM,输入系统时钟选择差分形式,周期设置为 3752 ps,对应约 266.525 MHz。

在此参考时钟基础上,Memory Clock Period 设置为 1876 ps,即约 533 MHz。配置界面同时给出 WCK 约 2132 MHz 和 4264 Mb/s 的数据传输信息。这组参数共同决定控制器内部 PLL、PHY 和存储器时序;若更换参考时钟或存储器型号,应重新核对整组参数,不能只修改其中一项。

4.2 存储器配置:容量与物理位宽

LPDDRMC存储器参数配置

<kbd>LPDDRMC存储器参数配置</kbd>

原理图中的板载存储器为 U35,型号 MT62F512M32D1DS-023,采用 1×32、共用 CA/CK 的连接方式。与此对应,IP 的 Speed Bin 选择 LPDDR5X-8533,数据宽度设置为 32 bit,界面计算得到总容量为 2 GB。32 bit 物理宽度对应板上的 32 根 DQ,并配套使用 4 组 DMI、RDQS 和 WCK 信号。

组件密度、行地址、Bank、Bank Group 和读写延迟进一步描述 U35 的内部组织和时序。Vivado 会利用这些信息生成初始化寄存器设置和访问时序,因此这里既关系到控制器能否完成校准,也关系到后续读写能否落到正确的存储单元。

LPDDR Address Mapping 页面保持 Vivado 默认的 ROW_BANK_COLUMN 映射即可,本实验不需要在该页面进行额外配置。

4.3 AXI 配置:为两路测试模块提供访问入口

LPDDRMC AXI接口配置

<kbd>LPDDRMC AXI接口配置</kbd>

前面的配置解决了 LPDDRMC 如何匹配板载存储器,本页则决定测试逻辑如何使用控制器。工程同时启用 AXI-0 和 AXI-1,分别形成 S0_AXIS1_AXI 接口,两路数据宽度均为 256 bit。这个宽度与两个 dma_test_warpper/axi_master 实例的 C_M_AXI_DATA_WIDTH 一致,所以测试数据可以直接通过接口传输,无需额外的数据宽度转换模块。

两路 AXI 接口共享同一个 LPDDR5X 控制器和存储空间。它们并不代表两片独立存储器,而是为两个用户主机提供独立的访问入口,具体访问顺序由 LPDDRMC 在内部调度。

核心配置汇总如下。

<samp>LPDDRMC核心配置</samp>

配置项当前值在本工程中的作用
Controller TypeLPDDR5 SDRAM生成 LPDDR5/LPDDR5X 控制器和 PHY
Speed BinLPDDR5X-8533描述目标器件的速率等级
Physical Data Width32 bit匹配板载存储器的 DQ 宽度
Memory Size2 GB定义控制器管理的存储空间
Memory Clock Period1876 ps设置控制器存储器时钟参数
Input System Clock Period3752 ps匹配约 266.525 MHz 差分参考时钟
Address Mapping默认 ROW_BANK_COLUMN保持默认值,无需手动配置
AXI PortsS0_AXIS1_AXI连接两路自定义测试主机
AXI Data Width256 bit匹配 axi_master 的数据宽度

至此,LPDDRMC 的硬件侧和用户侧均与工程匹配。接下来只需将生成结果下载到开发板,并观察校准状态和两路自动读写结果。

5. 板级验证

5.1 实验准备与硬件连接

烧录验证之前,需要准备 SU200P 开发板、配套电源、JTAG 下载器。操作步骤如下:

  1. 保持开发板断电,连接 JTAG 下载器;
  2. 确认下载线方向正确;
  3. 连接板卡电源并上电;
  4. 确认普通按键 SW13 未被按下,使低有效复位保持释放。

SU200P DDR5实验硬件连接

<kbd>SU200P DDR5 实验硬件连接</kbd>

图中开发板已经连接电源和 JTAG 下载线,板载 LPDDR5X 不需要额外接线。完成连接后,应先确认电源和下载器工作正常,再打开 Hardware Manager 进行器件下载。

5.2 打开工程并下载 PDI

以下路径均以 SU200P 工作目录为基准。打开工程:

lpddrmc_0_ex/lpddrmc_0_ex.xpr

实验发布用的下载文件统一放在工程的 bit 文件夹中:

lpddrmc_0_ex/bit/design_1_wrapper.pdi
lpddrmc_0_ex/bit/design_1_wrapper.ltx

在 Vivado 中按以下步骤操作:

  1. 选择 Open Hardware Manager
  2. 选择 Open Target → Auto Connect
  3. 识别到 FPGA 后选择 Program Device
  4. 从工程的 bit 文件夹加载 design_1_wrapper.pdi
  5. 需要使用 VIO 和 System ILA 时,同时加载 bit 文件夹中的 design_1_wrapper.ltx
  6. 单击 Program,等待下载完成。

bit 文件夹中的 PDI 和 LTX 为本实验对外提供的配套文件,板级验证时应直接使用这组文件。工程根目录中的 backup_8533_* 是备份结果,lpddrmc_0_ex.runs/impl_1 则是 Vivado 的实现输出目录,均不作为实验文档中的烧录入口。使用在线调试功能时,PDI 与 LTX 必须来自同一次实现。

5.3 先检查控制器初始化

Q31点亮时的DDR5状态LED

<kbd>Q31 点亮时的 DDR5 状态 LED</kbd>

Q31熄灭时的DDR5状态LED

<kbd>Q31 熄灭时的 DDR5 状态 LED</kbd>

下载完成后,先不要急于判断 AXI 数据是否正确,应先确认 LPDDRMC 已具备工作条件:

  1. pll_lock = 1:内部 PLL 已锁定;
  2. cal_done = 1:LPDDR5X 初始化和校准完成;
  3. cal_error = 0:校准过程中没有检测到错误;
  4. led_out_0 周期变化:用户时钟和 PL 运行指示逻辑正在工作。

对应的板上现象应为:Q30 点亮、Q26 点亮、Q27 熄灭,Q31 周期闪烁;Q32 因连接高频用户时钟,通常呈稳定点亮状态。

两张实测照片记录了运行过程中的不同瞬间。Q26、Q30 和 Q32 在两张照片中均保持点亮,分别表明 LPDDR5X 初始化与校准完成、LPDDRMC PLL 已锁定以及 AXI 用户时钟正在输出;Q27 保持熄灭,说明控制器没有报告校准错误。Q31 在第一张照片中点亮、在第二张照片中熄灭,证明 pl_run_indicate 正在周期翻转,用户逻辑并未停滞。

因此,板载 LED 已经确认 LPDDRMC 具备正常工作的时钟和校准条件。不过,LED 无法证明写入数据与读回数据完全一致,仍需结合 VIO 和 System ILA 检查两路自动读写状态。

cal_done 始终不置位,应先检查参考时钟、复位、IP 存储器参数和 LPDDR5X 管脚约束。控制器尚未完成校准时,继续分析 AXI 事务没有实际意义。

5.4 使用 VIO 和 System ILA 检查自动读写

两路AXI自动读写的System ILA实测波形

<kbd>单路 AXI 自动读写的 System ILA 实测波形</kbd>

两路测试模块在复位释放后会自动运行,因此通常不需要手动启动。建议按以下步骤检查:

  1. 在 Hardware Manager 中确认 VIO 和 System ILA 均已识别;
  2. 在 ILA 中加入两路 TXN_START_FLAGTXN_DONEERROR 和必要的 AXI 信号;
  3. 以某一路 TXN_START_FLAG 上升沿作为触发条件;
  4. 运行触发并捕获一轮写入、读回和比较过程;
  5. 确认 AXI 的 VALIDREADY 能够完成握手;
  6. 确认 TXN_DONE 周期性出现,两路 ERROR 始终为 0。

实测波形中,slot_0slot_1 均出现多个 Active 区间,写数据通道和读数据通道可以观察到连续的 Data Beat,说明两路 AXI 主机都在访问 LPDDR5X。TXN_START_FLAGTXN_DONE 和两个 WR_FRE 计数也在变化,表明测试模块能够重复发起并完成读写流程;截图光标位置可见的 ERROR_1 为 0。

AXI 接口行中的红色 OVERFLOW 位于 System ILA 的事务显示行,并不是工程自定义的 ERROR 信号,也不是 LPDDRMC 的 cal_error。工程是否通过仍应以 cal_done=1cal_error=0、两路 TXN_DONE 能够出现且两路 ERROR 始终为 0 为准。必要时可以缩短捕获窗口内的事务密度,或分别触发两路 AXI 接口,以获得更清晰的单次读写波形。

需要人工触发时,在 VIO 中将对应通道的 start_manually 执行一次 0→1→0。模块只检测上升沿,因此将信号一直保持为 1 不会连续产生启动脉冲。

5.5 板级验证结果

结合状态 LED 和 System ILA,本次板级验证得到以下结果:

  • Q30 和 Q26 点亮,说明 LPDDRMC PLL 已锁定且 LPDDR5X 初始化、校准完成;
  • Q27 熄灭,说明控制器没有报告校准错误;
  • Q31 在两张照片中分别处于亮、灭状态,说明 PL 运行指示持续翻转;
  • Q32 稳定点亮,说明高频 AXI 用户时钟正在输出;
  • System ILA 中两路 AXI 接口均存在有效事务和读写数据传输,测试启动、完成和写入次数信号持续变化;
  • 截图中可见 ERROR_1=0;完整判定还应确认另一通道的 ERROR 也始终为 0。

其中,cal_done 只能证明存储器初始化和校准完成;TXN_DONEERROR = 0 才能进一步证明本工程执行的写入、读回和数据比较没有检测到异常。

6. 总结与扩展

本工程围绕 LPDDRMC 构建了一套双通道 LPDDR5X 读写验证系统。LPDDRMC 负责存储器初始化、校准和 AXI 到 LPDDR5X 的协议转换;两个 dma_test_warpper 管理测试启动;内部 axi_master 分别在 0x1000_00000x2000_0000 地址区域执行 256 bit AXI 写入、读回和比较;VIO、System ILA 与状态输出用于确认控制器和测试逻辑的运行情况。

板级实测中,Q26 和 Q30 点亮、Q27 熄灭,Q31 能够周期翻转,表明 LPDDR5X 已完成校准且用户逻辑正在运行;System ILA 同时捕获到两路 AXI 的有效读写事务。实验烧录统一使用 bit/design_1_wrapper.pdi,在线调试时配套加载同一文件夹中的 design_1_wrapper.ltx

在此基础上,可以将自定义测试主机替换为图像处理、高速采集或其他 AXI 主设备,也可以进一步统计 WR_FRE、增加更丰富的数据模式,并测试两个 AXI 端口并发访问时的带宽和延迟。

QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

GMT+8, 2026-9-22 00:39 , Processed in 0.041733 second(s), 12 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

返回顶部