阶段目标:在第一步的基础上,集成 VDMA 和 DDR2 内存,实现从帧缓存读取并显示图像。

输出结果:Cortex-M3 软核在 DDR2 中写入图像数据,VDMA 自动读取并通过 VGA 显示

设备:NEXYS A7开发板

架构梳理

  • MIG 7 Series:配置 DDR 物理层控制器,提供 ui_clk 和高带宽 AXI-MM 接口。
  • AXI VDMA (MM2S 通道):配置为单缓冲循环读取模式,作为纯粹的像素中转。
  • Cortex-M3 软核控制:通过 AXI-Lite 接口向 VDMA 下发寄存器配置(源地址、HSIZE、VSIZE),启动传输。

    和第一步不同在于,第一步图像是实时生成实时显示,这一步会多一个帧缓存的步骤,M3写入DDR一幅图片由VDMA进行读取

系统总体架构

2.png

硬件模块配置

1. AXI VDMA

作用:自动从 DDR2 读取帧缓存,转换为 AXI Stream 视频流

传统方式:CPU 循环读取每个像素 → 写到 Video Out 问题: CPU 占用高

VDMA 方式:配置一次 → VDMA 自动循环读取 优势: CPU 只需写帧缓存,显示自动刷新

可以先取消勾选Enable Write Channel,只启用Enable Read Channel,Stream Data Width根据自己需要更改
3.png

2. MIG (Memory Interface Generator) - DDR2 控制器

作用:提供 DDR2 SDRAM 的 AXI4 接口

配置比较麻烦,建议参考自己板子的手册,找官方的DDR约束。
4.png

3. AXI SmartConnect

作用:用于管理多个 AXI 主设备(Master)和从设备(Slave)之间互联和仲裁

配置好主从通道数即可

时钟方案

Clocking Wizard 配置

根据mig里的实际配置新增时钟供给clk_ref_i和sys_clk_i

mig输出的ui_clk时钟域:AXI SmartConnect m_axi_mm2s_aclk

接线

首先求助Run Connection Automation大人

记得从AXI Interconnect引出来M0x_AXI给VDMA,保证M3软核对DDR的访问

数据平面:读取 VDMA->AXI SmartConnect->Memory Interface Generator (MIG 7 Series)

​ 输出 VDMA->AX14-Stream to Video Out->rgb888_to_rgb444_vga_v1_0

控制平面:Cortex-M3->AXI Interconnect

尾声

Generate Output Products

Create HDL Wrapper

分配引脚生成.xdc

综合实现生成比特流