第一章:系统概述与需求分析

各位同学,大家好。我是你们的FPGA讲师。今天咱们正式开始这门课——HDMI与MIPI双路采集系统设计实战。

第一节课,我不会直接扔给你一堆代码。咱们先聊聊:这东西到底能干嘛?为什么要做?技术指标怎么定?

说白了,这就是一个系统的顶层设计。你想想看,盖房子之前总得先画图纸吧?做FPGA系统也是一样。需求分析做不好,后面全是坑。我当年刚入行时,就吃过这个亏——项目做到一半,甲方突然说要加一路MIPI输入,结果整个架构推倒重来。嗯,从那以后,我养成了一个习惯:开工前,先把需求聊透。

1.1 应用场景:这东西用在哪?

HDMI和MIPI,这两个接口大家应该不陌生。HDMI是电视、显示器、机顶盒的标配。MIPI呢,是手机摄像头、平板屏幕的常用接口。

那为什么要把它们俩做到一个系统里?

我举几个真实场景:

  • 视频会议终端:你需要同时采集电脑的HDMI输出(PPT画面)和摄像头的MIPI输出(主讲人画面)。两路信号要同步处理、叠加显示。
  • 医疗内窥镜:HDMI接外部监视器,MIPI接内部CMOS传感器。两路数据要实时融合,用于手术导航。
  • 工业检测:HDMI接上位机显示界面,MIPI接高速工业相机。两路信号需要精确对齐,做缺陷比对。

你看,这些场景都有一个共同点:需要同时处理两路不同接口的视频流。而且,往往对实时性、同步性要求极高。

核心痛点:市面上大多数采集卡只支持单路输入。双路采集要么用两台设备拼凑,要么用昂贵的专用板卡。我们的目标,就是用FPGA做一款低成本、低延迟、高灵活度的双路采集方案。

3.2 技术指标:定多少才算合理?

需求明确了,接下来就是定指标。我个人习惯,先列一个表格,把关键参数敲死。这样后面做设计时,心里有底。

参数项 指标要求 说明
HDMI输入分辨率 1920x1080@60Hz 支持1080p全高清,向下兼容720p
MIPI输入分辨率 1920x1080@30Hz 常见摄像头模组规格,4-lane MIPI
数据位宽 24-bit RGB 每像素8-bit,色彩深度足够
系统延迟 < 2帧 从输入到输出,不超过33ms(@60Hz)
存储带宽 ≥ 4.8 Gbps 两路同时写入DDR4,预留余量
接口类型 HDMI 1.4 + MIPI CSI-2 主流标准,兼容性好

这里我要多说一句:指标不是越高越好。比如MIPI,你非要上4K@60Hz,那FPGA的选型、DDR的带宽、PCB的层数,全都要跟着涨。成本翻倍,但实际场景用不上。我建议:够用就好,留20%余量。

避坑指南:我曾经在一个项目里,把MIPI的lane数从4条砍到2条,想着省点IO。结果发现摄像头模组不支持2-lane模式,最后只能换模组。所以,定指标前,先确认外设的规格。别想当然。

3.3 总体架构设计:怎么搭积木?

指标定好了,接下来就是画架构图。我习惯用模块化的思路来设计。每个模块各司其职,接口清晰。这样后期调试、升级都方便。

下面这张图,是我为这个系统画的顶层架构。你看一眼,大概就能明白数据是怎么流的。

HDMI与MIPI双路采集系统 - 顶层架构图 HDMI RX 接收 & 解码 MIPI CSI-2 RX 接收 & 解包 预处理 色彩空间转换 帧同步 缩放/裁剪 去隔行 DDR4控制器 写通道仲裁 读通道调度 带宽管理 HDMI TX 输出编码 & 发送 直通模式 图例: HDMI输入 MIPI输入 预处理 DDR控制器 HDMI输出 直通路径

这张图里,我画了两条数据路径:

  1. 主路径(实线):HDMI/MIPI -> 预处理 -> DDR4 -> 输出。这是标准模式,两路数据先存到DDR里,再按需读出。好处是灵活,可以做帧缓存、叠加、缩放。
  2. 直通路径(虚线):预处理 -> 输出。这是低延迟模式,数据不经过DDR,直接输出。适合对延迟极度敏感的场景,比如游戏直播。

你可能会问:为什么不用DDR直通?嗯,这里有个权衡。直通模式延迟低,但只能做简单的格式转换。一旦你要做多路叠加、画中画,就必须走DDR。所以,我设计时把两种模式都做了,通过一个寄存器来切换。这样,同一个硬件,可以适应不同场景。

注意:直通模式下,两路输入必须严格同步。否则输出画面会出现撕裂。我建议:除非你确定输入源是同步的,否则老老实实走DDR。别为了省那几毫秒延迟,搞出一堆bug。

3.4 关键模块拆解

架构图看完了,咱们再深入一层。我把几个核心模块拆开讲讲:

  • HDMI RX:负责接收HDMI信号,做TMDS解码、EDID读取、HDCP解密(如果需要)。输出并行RGB数据+行场同步信号。
  • MIPI CSI-2 RX:负责接收MIPI差分信号,做lane对齐、字节解包、长包解析。输出像素数据+帧同步信号。
  • 帧同步模块:这是整个系统的心脏。它负责把两路不同步的视频流,对齐到同一个时间基准上。我常用的方法是:写一个双口RAM,用输入帧同步信号写,用输出帧同步信号读。只要RAM深度够大,就能容忍两路之间的帧偏移。
  • DDR4控制器:负责管理DDR的读写。这里要注意带宽分配。两路写入+一路读出,总带宽要小于DDR理论带宽的70%。否则,一旦出现背压,系统就会丢帧。

个人经验:帧同步模块的深度,我一般设为4帧。为什么是4帧?因为两路输入的最大帧偏移,通常不超过2帧。留2帧余量,足够应对大部分情况。当然,如果你用的是USB摄像头,那偏移可能更大。我建议:先实测,再定深度。

3.5 本章小结

好了,第一节课的内容就到这里。咱们回顾一下:

  • 明确了双路采集的应用场景:视频会议、医疗、工业检测。
  • 敲定了技术指标:1080p@60Hz + 1080p@30Hz,延迟小于2帧。
  • 画出了顶层架构:HDMI/MIPI -> 预处理 -> DDR -> 输出,带直通模式。
  • 拆解了关键模块:RX、帧同步、DDR控制器。

这些内容,是后面所有章节的地基。地基打不牢,楼盖得再高也是危房。我建议你:把这张架构图记在脑子里。后面每讲一个模块,你都要能把它放回这张图里,知道它处在哪个位置、负责什么功能。

下一节课,咱们开始动手——搭建HDMI RX模块。我会从原理图讲到代码实现,再到仿真验证。嗯,到时候见。


可可精品资料库