AZsnake /
sensor-test-framework-soft-core
VU13P FPGA MIPI CSI-2 验证框架(MicroBlaze):Vivado BD + Vitis 固件 + PySide6,2-Lane RAW10(IMX298)
72/100 healthLoading repository data…
AZsnake / repository
VU13P FPGA MIPI CSI-2 验证框架(纯 RTL):Vivado BD + mipi_sys_ctrl + PySide6,2-Lane RAW10(IMX298)
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
面向 Xilinx VU13P + IMX298 的 MIPI CSI-2 相机采集与验证框架:传感器 I2C 配置、2-Lane RAW10 接收、URAM 帧缓冲、纯 RTL 系统控制与 PySide6 上位机联调。
Vivado Block Design: mipi_platform · 系统控制: mipi_sys_ctrl(RTL,无 MicroBlaze/Vitis)
本仓库为开源 FPGA 验证参考实现。不含板级原理图或未公开的硬件资料。引脚约束需结合具体板卡自行准备(参考
fpga/constraints/vu13p_pins.template.xdc),clone 后不能直接综合上板。
许可证:MIT(第三方模块见 THIRD_PARTY_NOTICES.md)
同一 VU13P + IMX298 MIPI CSI-2 验证平台的两套实现,共享 Vivado Block Design(mipi_platform)与 PySide6 上位机(tools/ UART 协议兼容):
| 仓库 | 说明 |
|---|---|
| sensor-test-framework-soft-core | 姊妹项目 — MicroBlaze 固件 + Vitis;D-PHY / Lane 深度联调、HS_SETTLE 扫描 |
| sensor-test-framework-pure-rtl | 本仓库 — 纯 RTL mipi_sys_ctrl,无 MicroBlaze / Vitis;init mem BRAM 上电初始化 |
| 方向 | 内容 |
|---|---|
| 端到端采集 | init mem BRAM 初始化 → CSI-2 RAW10 接收 → URAM 缓存 → UART 回传 → PC 解码显示 |
| CSI-2 / D-PHY | 2 数据 Lane + 1 时钟 Lane,800 Mbps/Lane;ECC/CRC 链路状态可读 |
| 纯 RTL 控制 | UART 921600 协议、mipi_sys_ctrl 硬件 I2C/CSI/抓图,无软核 |
| init mem | 上电从 BRAM 预载 IMX298 默认表(1076 条);主机可 UART 覆写(CMD_MEM_*) |
| 主机工具 | PySide6 GUI 串口联调 + download_regs.py 寄存器批量下发 |
| 工程化 | create_project.tcl 一键重建 BD;build_all.tcl 综合→实现→bitstream |
传感器输出: 2016×1512 RAW10 @ ~21 fps(2-Lane)。
UART 抓图: 支持 2016×128 快速条带、2016×512、2016×1512 全幅(高度可截断以缩短传输)。
sensor-test-framework-pure-rtl/
├── fpga/
│ ├── rtl/ # 纯 RTL(mipi_sys_ctrl、axis_uram_framebuf 等)
│ ├── data/ # imx298_init.mem / .coe / .h
│ ├── constraints/ # vu13p_pins.template.xdc(需复制为 vu13p_pins.xdc)
│ ├── scripts/ # create_project.tcl、build_all.tcl、gen_init_coe.py
│ ├── sim/ # 模块级 testbench + run_sims.ps1
│ └── vivado/ # 生成工程目录(.gitignore,本地构建产物)
├── tools/ # PySide6 上位机 + UART 协议库 + CLI
├── docs/
│ ├── mipi_platform_v0.0.1.png
│ ├── python_gui.png
│ └── bd_design/ # Block Design PDF
└── README.md
Selected from shared topics, language and repository description—not editorial ratings.
AZsnake /
VU13P FPGA MIPI CSI-2 验证框架(MicroBlaze):Vivado BD + Vitis 固件 + PySide6,2-Lane RAW10(IMX298)
72/100 health传感器 (I2C) MIPI CSI-2 RX URAM 帧缓冲 UART 921600 上位机
─────────── → D-PHY + 协议解析 → AXIS 写缓存 → 分块传输 → RAW10 解码 / GUI
mipi_platform (BD)
├── clk_wiz_0 19.2 MHz → 100 MHz AXI + 200 MHz D-PHY ref
├── u_sys_ctrl mipi_sys_ctrl(UART / I2C / AXI master / init mem)
├── mipi_csi2_rx_0 MIPI CSI-2 RX Subsystem(2-Lane RAW10, Bank 62)
├── u_framebuf axis_uram_framebuf(4 MiB,容纳全幅单帧)
├── axi_ic sys_ctrl → CSI RX + framebuf 寄存器访问
├── u_cam_gpio 相机 GPIO 三态缓冲(XCLR / PWDN / I2C)
├── u_vsync_probe VSYNC 同步探针
└── system_ila_0 联调 ILA(AXIS / AXI / 状态探针)
RTL 模块(fpga/rtl/): mipi_sys_ctrl · uart_921600 · protocol_parser · i2c_master · sensor_sequencer · init_mem_bram · axi_lite_master · axis_uram_framebuf · cam_gpio_iobuf · sync_probe · led_heartbeat
PySide6 图形界面提供串口连接、链路状态(速率 / ECC / CRC)、多档抓图分辨率、RAW10 解码预览,以及 PNG / RAW 保存。详见 tools/README.md。
| 功能 | 说明 |
|---|---|
| 串口 | 921600 8N1,自动枚举 COM 口 |
读状态 0x03 | MIPI 端口、速率、ECC/CRC 计数、链路状态 |
抓图 0x04 | 指定宽×高,512 B/chunk + 信用窗口流控回传 |
| 暗黑模式 | 亮色 / 暗色主题切换 |
环境: Vivado 2024.2 · Python 3.10+
复制引脚模板,按实际原理图填写 PIN_* 变量:
cp fpga/constraints/vu13p_pins.template.xdc fpga/constraints/vu13p_pins.xdc
Windows CMD:copy fpga\constraints\vu13p_pins.template.xdc fpga\constraints\vu13p_pins.xdc
生成 init mem(可选,仓库已含预生成文件):
python fpga/scripts/gen_init_coe.py
生成 Vivado 工程:
vivado -mode batch -source fpga/scripts/create_project.tcl
或一键综合到 bitstream:
vivado -mode batch -notrace -source fpga/scripts/build_all.tcl
Vivado 中(或 batch 完成后)下载比特流至板卡。
安装主机工具并启动 GUI:
cd tools
pip install -r config/requirements.txt
./run_gui.sh # Linux / macOS
run_gui.bat # Windows
连接串口 → 读状态 确认链路已建立 → 抓图 验证出图。
| 文档 | 说明 |
|---|---|
tools/README.md | Python 上位机、CLI 与单元测试 |
fpga/scripts/create_project.tcl | Vivado 工程 / BD 一键生成 |
fpga/scripts/build_all.tcl | 综合 + 实现 + bitstream |
fpga/rtl/mipi_sys_ctrl.v | 纯 RTL 系统控制器顶层 |
fpga/rtl/hw_defs.vh | 协议常量、地址映射(与 Python 同步) |
tools/lib/protocol.py | UART 协议实现 |
docs/bd_design/mipi_platform_v0.0.1.pdf | Block Design 导出 PDF |
传感器数据手册请从厂商官网获取:
| 器件 | 官网 |
|---|---|
| IMX298 | sony-semicon.com |
帧格式:AA 55 | CMD | LEN[15:8] | LEN[7:0] | PAYLOAD | XOR 校验
| 命令 | 码 | 用途 |
|---|---|---|
| 写寄存器 | 0x01 | 单条 I2C 写(16-bit 地址 + 8-bit 数据) |
| 读寄存器 | 0x02 | 单条 I2C 读 |
| 读状态 | 0x03 | 链路速率 / ECC / CRC / link_up |
| 抓图 | 0x04 | ARM 帧缓冲 + UART 分包回传 |
| MEM 写入 | 0x10 | 写入 init mem 条目 |
| MEM 执行 | 0x11 | 从 mem 完整初始化传感器 |
| ACK | 0x80 | 命令成功 |
| ERR | 0x81 | 错误码(I2C NACK、忙、校验失败等) |
图像流:BB 66 数据块(512 B + XOR)→ 主机回 A5 ACK → BB 99 EOT。完整定义见 tools/lib/protocol.py 与 fpga/rtl/hw_defs.vh。
xcvu13p-fhga2104-2-i(请按实际板卡调整)。pad_clk_19m2)。fpga/data/imx298_init_regs.h,仅为参考配置。fpga/sim/run_sims.ps1(需本地 Vivado simulator)。