器件型号: TDA4VH-Q1
Thread 中讨论的其他器件: TDA4VH
TI 团队大家好、
我们正在使用基于 CCS/GEL 的 DDR 初始化在定制 J784S4/TDA4VH 板上调试 LPDDR4 初始化。
我们将使用相同的调试流程将该行为与 J784S4 EVM 进行比较。 在 EVM 上、所有 DDR 实例都成功完成 FSP 握手和 DDR 初始化。 但是、在我们的定制电路板上、只有 DDRSS2 成功完成。 DDRSS0、DDRSS1 和 DDRSS3 在同一点都失败:从不生成 FSP_REQ 信号。
测试环境
- 器件:J784S4/TDA4VH
- DDR 类型:LPDDR4
- DDR 实例:DDRSS0、DDRSS1、DDRSS2、DDRSS3
- 待测 DDR 速率:LPDDR4-21132/DDR 533MHz 设置
- 调试方法:CCS GEL DDR 初始化
- 多 DDR 配置:
- MULTI_DDR_CFG0 = 0x000C0003
- MULTI_DDR_CFG1 = 0x0000180F
- DDR_CFG_LOAD = 0x60000001
- 启用四通道 DDR、128B 粒度
EVM 行为
在 J784S4 EVM 上、所有 DDR 实例都正常生成 FSP_REQ 并完成初始化。
对于每个 DDRSS 实例、我们观察预期的序列:
- PI_0 起始位被锁存
- CTL_0 起始位被锁存
- 生成 FSP_REQ
- GEL 检测到 FSP_REQ 并更新 DDR PLL
- GEL 写入 FSP_ACK
- 清除 FSP_REQ
- 对于所有预期的 FSP 请求、这会重复进行
- Ack_Freq_Upd_Req 通过 PASS 退出
- PI_79 达到完成
- CTL_293 达到 0x200
- 单个 DDRSS 测试以 PASS 结束
EVM 行为示例:
DDRSS0:
FSP_REQ = 0x00000081
ALL_REQ = 0x00000081/0x00000000/0x00000000/0x00000000
Ack_Freq_Upd_Req EXIT PASS
PI_79 DONE
CTL_293 = 0x00000200
SINGLE TEST END = PASS
DDRSS1:
FSP_REQ = 0x00000081
ALL_REQ = 0x00000000/0x00000081/0x00000000/0x00000000
Ack_Freq_Upd_Req EXIT PASS
PI_79 DONE
CTL_293 = 0x00000200
SINGLE TEST END = PASS
DDRSS2:
FSP_REQ = 0x00000081
ALL_REQ = 0x00000000/0x00000000/0x00000081/0x00000000
Ack_Freq_Upd_Req EXIT PASS
PI_79 DONE
CTL_293 = 0x00000200
SINGLE TEST END = PASS
DDRSS3:
FSP_REQ = 0x00000081
ALL_REQ = 0x00000000/0x00000000/0x00000000/0x00000081
Ack_Freq_Upd_Req EXIT PASS
PI_79 DONE
CTL_293 = 0x00000200
SINGLE TEST END = PASS
这样可确认 FSP_REQ/FSP_ACK 地址映射和 GEL 轮询逻辑正确。
定制电路板行为
在定制电路板上、DDRSS2 的行为与 EVM 相同并成功完成。
但是、DDRSS0、DDRSS1 和 DDRSS3 的故障方式都相同。
对于失败的 DDRSS 实例:
PI_0 = 0x00000B01
CTL_0 = 0x10460B01
PHY_1381 = 0x00000001
FSP_REQ = 0x00000000
FSP_ACK = 0x00000000
ALL_REQ = 0x00000000/0x00000000/0x00000000/0x00000000
PI_79 = 0x00000000
CTL_293 = 0x00000000
PI_0 和 CTL_0 起始位被锁存、因此基本的寄存器写入似乎被接受。 但是、失败的 DDRSS 实例永远不会生成 FSP_REQ。
故障点位于 PI_79 进行之前、CTL_293 达到完成之前。
比较摘要
| 项目 | EVM DDRSS0/1/2/3 | 定制 DDRSS2 | 定制 DDRSS0/1/3 |
|---|---|---|---|
| 寄存器编程 | 好的 | 好的 | 好的 |
| PI_0 启动锁存 | 好的 | 好的 | 好的 |
| CTL_0 启动锁存 | 好的 | 好的 | 好的 |
| FSP_REQ 生成 | 好的 | 好的 | 未生成 |
| FSP_ACK 处理 | 好的 | 好的 | 未达到 |
| PI_79 完成 | 好的 | 好的 | 未达到 |
| CTL_293 = 0x200 | 好的 | 好的 | 未达到 |
| 最终结果 | 开来 | 开来 | 失败 |
其他检查已完成
我们检查了定制电路板上的以下各项:
- 从外部下拉 DDR_RET。
- EMIF_DATA 的 PSC 状态、EMIF_CFG 显示 STATE = 3 且 NEXT = 3。
- 在外部电源/复位检查中未发现明显的问题。
- 在 DDR 复位/ZQ 相关检查中未发现明显的短路或异常电阻。
- 同一定制板上的 DDRSS2 以相同的 GEL 流程通过。
问题
由于 DDRSS0、DDRSS1 和 DDRSS3 锁存 PI_0/CTL_0 会启动、但始终不会生成 FSP_REQ、而 DDRSS2 通过了所有 DDRSS 实例并且 EVM 都通过了这些指令、我们想了解可能的根本原因。
这是否表明 DDRSS0/1/3 本地 PHY 时钟/复位/隔离域、SoC BGA 连接或 SoC DDR PHY 宏中存在问题?
TI 可否告知应检查哪些内部状态寄存器、以确认是否已正确释放 DDRSS0/1/3 本地时钟、复位或隔离?
具体而言、我们想知道:
- 哪些寄存器指示每个 DDRSS 实例的 DDRSS 本地时钟有效状态?
- 哪些寄存器指示 DDRSS/PHY 复位释放状态?
- 哪些寄存器指示 DDRSS/PHY 隔离释放状态?
- 在生成 FSP_REQ 之前、是否有任何应更改的 PHY 状态位?
- FSP_REQ 应该只在 PI_0/CTL_0 启动后由内部 DDRSS/PI/PHY 序列发生器生成吗?
- 如果 PI_0/CTL_0 正确启动锁存、但从未出现 FSP_REQ、建议的调试步骤是什么?
希望提供有关下一个调试步骤的任何指导。
此致、