跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言

FPGA 读写 DDR4(一)MIG IP 核控制信号

FPGA DDR4 读写控制基于 MIG IP 核实现。核心涉及全局接口、命令接口、写接口及读接口四类信号。全局接口包含时钟与复位;命令接口负责指令下发与就绪确认;写接口处理数据总线、掩码及结束信号;读接口依赖延迟后的数据有效标识。配置时需注意 Burst Length 对地址步进的影响,以及背靠背与非背靠背写入时序的区别。跨时钟域传输通常需配合 FIFO 使用。

月光旅人发布于 2026/4/7更新于 2026/6/724 浏览
FPGA 读写 DDR4(一)MIG IP 核控制信号

前言

近期完成了 FPGA DDR4 内存读写控制开发,本文总结基础内容,重点讲解 DDR4 控制 IP 核 MIG 的控制信号。

主要参考文档:Xilinx PG150 Ultrascale Memory IP User Guide.

MIG IP 核控制信号

IP 核创建界面

MIG IP 核(Memory Interface Generator)是用户与 DDR4 进行沟通的桥梁。直接编写 DDR4 代码复杂度极高且性能难以保证。以 Xilinx 提供的 MIG IP 核为例,综合布线后约使用 7500 个 LUT 和 9000 个 Register 资源。普通用户只需操作 MIG 提供的用户接口即可。

文章配图

文章配图

需特别注意 Burst Length 参数。在固定 Burst Length=8 的 DDR4 芯片中,给定地址 ADDR 并启动传输后,DDR4 会同时将 Burst Length * Data Width 大小的数据传送到数据总线。实际传输地址范围为 ADDR ~ ADDR + Burst Length - 1。例如地址 ADDR=0,读指令发出后,在 8*16=128 位的数据总线上得到 0~7 这些地址单元的数据。因此顺序读写时,每次给控制器的地址均以 8 为步进。

IP 核控制信号

PG150 文档给出了用户接口的所有控制信号。

文章配图

文章配图

图中标黄信号分为四类:全局接口、命令接口、写接口、读接口。

全局接口

文章配图

三个全局接口分别代表用户时钟、校准完成指示、与用户时钟同步的复位信号。所有用户接口逻辑必须等到校准完成信号拉高后才能进行。

命令接口

命令接口用于指示 DDR 接受读取或写入命令及类型。

文章配图

以读命令为例:将 app_cmd 设为 3'b001,等待 app_rdy 拉高表示 DDR 就绪,然后拉高 app_en 并给出地址 app_addr。若干周期后,数据连同有效信号出现。

文章配图

一次成功的命令传输时序如下:

文章配图

注意只有三个周期的最后一个周期命令才被写入 IP 核,此时 app_rdy 才拉高。app_autoprecharge 信号通常不操作,除非在 IP 核设置中额外启用以提高同一 Bank 内读写效率。

写接口

文章配图

  • app_wdf_data:写数据总线。
  • app_wdf_rdy:写操作的就绪信号。仅当 app_rdy 和 app_wdf_rdy 同时为高时,写命令有效。
  • app_wdf_wren:拉高表示当前数据总线数据为待写入数据。
  • app_wdf_mask:屏蔽位。被写入为 1 的字节不会被写入 DDR。对于位宽 16、Burst Length 8 的 DDR,一次传输 128 位(16 字节),mask 大小为 16bit。
  • app_wdf_end:表示当前时钟周期是写入数据的最后一周期。若分频比为 1:4,每个用户时钟周期进行一次完整 Burst 传输,则 app_wdf_end 与 app_wdf_wren 一起拉高。

写数据时序有两种:

  1. 非背靠背(单次写入):给出写命令的前一个到后两个周期给出写控制信号及数据。app_wdf_wren 和 app_wdf_en 一同拉高时,该周期数据总线上的数据才会被写入;app_en 拉高的周期地址和控制命令才会被写入。

文章配图

  1. 背靠背写入:与非背靠背相比仅在连续性上不同。app_en 信号和 app_wdf_wren 以及 app_wdf_end 信号对其。在 app_rdy 以及 app_wdf_rdy 为高时一起拉高即可实现写入。

文章配图

读接口

文章配图

读接口无需额外控制,操作命令接口即可。DDR 读数据延迟较大,给出读指令后需多个时钟周期数据和有效标识才会出现。data_valid 会和有效的读出数据一起出现。

两种读操作时序如下:

文章配图

除上述四组接口外,还有部分_ref 或_req 信号未使用。需注意 app_hi_pri 信号,PG150 中描述保留且置为 0。

总结

通过上述时序分析,MIG 操作时序并不复杂,但代码编写注意点较多。MIG IP 核用户逻辑工作在高时钟下,例如 DDR 工作时钟 1200MHz,用户时钟 300MHz。若对 ADC 进行数据采集并存入 DDR,FIFO 是必不可少的。跨时钟域数据传输中,FIFO 的复杂操作是主要难点。

目录

  1. 前言
  2. MIG IP 核控制信号
  3. IP 核创建界面
  4. IP 核控制信号
  5. 全局接口
  6. 命令接口
  7. 写接口
  8. 读接口
  9. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Flutter for OpenHarmony 集成通义万相 AIGC 与相册持久化
  • C++ 内存管理:malloc 底层原理与实现
  • Windows 10/11 部署 OpenClaw 指南:环境搭建与机器人互联
  • 向量数据库与大语言模型集成实践指南
  • IDEA 迁移至 Trae AI IDE:SpringBoot+Maven+Vue 项目配置
  • 基于 YOLO11 的无人机航拍小目标检测算法研究
  • Kimi K2.5 开源部署、API 接入、Agent 集群与多模态视觉实战
  • .NET Web API 控制器与 Action 注解详解
  • Python 中国节假日库 chinese-calendar 使用指南
  • 大型语言模型 (LLM) 入门与实践指南
  • 首个美术教育行业大模型问世,技术解析与应用前景
  • 无人机图像中的鸟类目标检测:使用 YOLOv5-ACT 提升精度与速度
  • TRAE、Qoder、Cursor 与 GitHub Copilot 深度对比:选型指南
  • C++ map 与 set 容器详解:从原理到实战
  • Web 安全实战:PHP 弱类型与正则替换漏洞分析
  • Windows 11 下使用 llama.cpp 运行 Qwen3.5 量化模型测试
  • 加装固态硬盘重装系统后开机显示 PXE2.0 界面解决方法
  • Dify 平台集成 OCR:低代码构建智能表单识别系统
  • DGX Spark 部署 vLLM + Open WebUI 运行 Qwen3-Coder-Next-FP8(CUDA 13.0 兼容版)
  • 无人机避障:Mid360+Fast-lio 感知建图与 Ego-planner 规划

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online