Altera FPGA EMIF 设计与调试
本文主要介绍 Altera FPGA 外部存储器接口 EMIF 的技术选型、设计实现、仿真验证与硬件调试。
一、Altera FPGA EMIF 简介
EMIF,全称 external memory interface,是 Altera FPGA 中用于连接外部存储器的专用接口控制器,当前支持系列有 20nm 的 Cyclone® 10GX、Arria® 10GX/SX;14nm 的 Stratix® 10 全系列和 Agilex® 5 全系列、7nm 的 Agilex® 7 全系列。EMIF 目前支持的协议如下:
- DDR5、LPDDR5
- DDR4、LPDDR4
- DDR3、LPDDR3
- QDR II、QDR IV
EMIF 结构与特点:
EMIF 的核心结构如下:几乎每个 IO Bank 都会有 EMIF 硬核控制器(Agilex® 系列是两个,其他系列是一个),每个 IO Bank 的 EMIF 主要相关模块有做校准的 Hard Sequencer,做 DDR 时序控制的 Memory Controller,做 High-Speed PHY Clock Tree,做时钟相位对齐的 Clock Phase Alignment。
EMIF 具备以下三个显著特点:
- 专用存储器存放校准算法代码,由片上晶振提供时钟源,确保时序精度。
- 预留调试接口,可与 Quartus Prime Debug Toolkit 等工具对接,便于系统级调试。
- IO-AUX 模块专门用于存储器接口校准,该模块为硬件专用,用户无法直接调用。
下图(图3)罗列了 EMIF 支持的类型:
二、芯片选型与带宽评估
在选择 FPGA 芯片时,需根据存储器接口的带宽需求进行评估。Altera 提供了以下两个实用工具:
1、EMIF 设备评估表
- 确定实现预期带宽所需的内存接口
- 根据所选的内存配置计算带宽
- 显示支持所选内存接口的所有 Altera Agilex®、Altera Stratix® 10 和 Altera Arria® 10
2、EMIF 规范估算器
- 确定实现预期性能所需的 Altera FPGA 设备产品家族和速度等级
- 显示不同内存选择所提供的最大频率和 DQ 宽度
🔗 推荐访问:Altera EMIF 支持页面
三、EMIF 设计要点
(一) I/O Lane 配置
I/O Bank 的一个 Lane 可以用作一个 x8/x9 的 DQ 组,包括一对 DQS/DQS# 和最多 10 根数据线(包括 DQ 和 DM);当然也可以把一个 Lane 用作两个 x4 的 DQ 组,这种情况下有两对 DQS/DQS# 和 8 根 DQ,不支持 DM;还可以用多个 Lane 构成 x18 和 x36 的 DQ 组。
需要注意:
- 在一组 DQ 中,DQS 位置基本是固定的,多为 DQ 组的中间,以保证信号完整性
- 在一组 DQ 中,DQ 的顺序可以调换,正常 fitter 都能通过
- 一个 Lane 里,使用 DQ 组后,剩下的 IO 可以作为普通 GPIO 使用
(二) AC 信号布局
对于 AC 信号(Address/Command),每个信号都有其固定的位置,不可随意摆放。
对于跨 Bank 的 EMIF,需保证 IO Bank 是连续的,AC 信号要放置于信号簇的中间,且 AC 信号不能跨 Bank。
- Bank 区不连续的地方不能组合一个 EMIF 设计
- 不同列的 Bank 不能组合一个 EMIF 设计
(三) 在 HPS 的 EMIF 设计上,Bank 位置是固定的
- A10 HPS 的 EMIF 里,I/O Banks 2K 和 2J 用于 x32/ x40 设计,2K、2J、2I 用于 x64/x72 设计
- AC 信号簇和 ECC 数据都要位于 2K Bank
- PLL 参考时钟、RZQ 信号必须位于 2K Bank
- 在单个数据通道内(实现单个 x8 DQS 组):
- DQ 引脚必须使用序号 1,2,3,6,7,8,9,10 的引脚。DQ 位之间可以交换位置(例如可以交换 DQ[0] 和 DQ[3] 的位置),只要结果引脚只使用规定的这些序号引脚
- DM/DBI 信号必须使用序号 11 的引脚
- DQS/DQS# 必须使用序号 4、5 的引脚
四、IP 配置与仿真
接下来介绍 IP 配置与仿真。根据下图(图10)操作先选择需要用到 DDR 类型,再生成 example 工程。
仿真选择
- 建议跳过校验、使用隔离 PHY,以提升仿真速度。
- 勾选 Simulation,选择仿真语言格式。
使用 EMIF 生成的 Example 在 Modelsim 上进行仿真
其他仿真平台请参考“External Memory Interfaces Altera Arria® 10 FPGA IP Design Example User Guide”文档。自建工程仿真时,需要在 IP生成时选择生成仿真文件,然后在搭测试环境时就可以在测试文件里添加 example 时生成的 DDR 仿真模型,或者到 DDR 原厂网站下载对应型号的仿真模型进行添加。
五、硬件调试与故障排查
在做 memory 的调试时,建议优先使用 IP 生成的 example 进行测试,该 example 里头有着丰富的样本与指示信号,便于调试。
下图(图16)为硬件检查清单:
当出现校准失败或有误码时,可参考以下方向进行排查:
- 检查 DDR 端电压、VREF、FPGA IO Bank 电压、FPGA 侧 VREF 等是否在要求范围里;
- 检查 FPGA 与 DDR 端的 RZQ 电阻值是否焊接 240Ω;
- 检查 IP 里 memory timing 栏参数是否与颗粒手册要求的一致;
- 在手册要求范围内,加大 CWL 和 CL 的值;
- 查看 Quartus report,看报告是否有时序违规,消除违规;
- 降低 memory 的数据速率;
- 减少控制的颗粒数量;
- 对于 DDR3L 可尝试把电压抬升到 1.5V;
- ……
六、使用 Signal Tap 与 Debug Toolkit
Altera 的 EMIF IP 设置完参数后均可生成一个 example,所有样机调试都可以通过这个 example 来调试,可以通过 signal tap 抓取以下信号进行分析指导:
- Local_cal_fail:校准失败
- Local_cal_success:校准成功
- Traffic_gen_fail:有误码
- Traffic_gen_pass:没误码
- Pnf_per_bit:指示当前数据位置是否错误
- Pnf_per_bit_persist:指示整个测试流程当前位置是否发生过错误
- Avalon-mm:逻辑与 IP 的数据交互接口
运行Debug Toolkit:
- 点击 “Initial Connections”
- 点击 “Link Project to Device”
- 点击 “Create Memory Interface Connection”
- 可选点击 “Create Efficiency Monitor” 查看效率
- 点击 “Report Calibration” 获取校准报告
校准报告:
- 各 DQS 组校准状态
- DQS 信号的延时校准数据
- 2D 眼图(静态显示,可用于初步判断信号质量)
七、总结
Altera FPGA 的 EMIF 接口为高性能存储器连接提供了完整的硬件与软件支持。从芯片选型、IP 配置、仿真验证到硬件调试,每个环节都有相应的工具与方法论支持。建议在设计初期就充分利用官方工具进行评估,并在调试阶段善用 Example Design 与 Debug Toolkit,可显著提升开发效率与系统稳定性。
欲了解关于更多 Altera 相关方案或技术信息,请与骏龙科技当地的办事处联系或点击下方「联系我们」,提交您的需求,骏龙科技公司愿意为您提供更详细的技术解答。
更多信息: