0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在树莓派5的DPI接口上实现隔行扫描视频?

上海晶珩电子科技有限公司 2025-04-16 15:42 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

最早的树莓派型号支持复合视频输出,所有配备40针接口的型号均支持显示并行接口(DPI)。通过外接组件,DPI可转换为VGA或RGB/SCART信号。这些模拟接口至今仍被复古媒体和游戏玩家所青睐。

树莓派5在性能上大幅提升,但其DPI模块不再支持隔行扫描视频(这本身并非DPI标准的一部分),因此无法通过CRT电视输出全分辨率RGB信号。直到现在,这一限制终于被打破。

523549fa-1a96-11f0-9434-92fbcf53809c.jpg

什么是隔行扫描视频?

早期的电视系统通过从左到右、从上到下逐行扫描图像。由于需要在帧率、分辨率和无线电带宽之间权衡,隔行扫描技术应运而生。隔行扫描将每帧分为奇数行和偶数行,先扫描奇数行(上半场),再扫描偶数行(下半场)。这种方式在不增加带宽的前提下减少了闪烁并提升了画面流畅度。两个半场分别称为“场”(Field)。

5253323a-1a96-11f0-9434-92fbcf53809c.gif

逐行扫描和隔行扫描的图示

模拟电视无需特殊处理即可区分场序。只要水平扫描速率是垂直扫描速率的半奇数倍,扫描线就会正确落在屏幕上。隔行视频的关键特性在于垂直同步脉冲(VSync)相对于水平同步脉冲(HSync)的相位可以有两种状态。

技术难题与解决方案

实现隔行视频需解决三方面问题:

1.让DPI逐场(帧缓冲区的偶数或奇数行)而不是逐帧输出

2.对这些信号进行计时,以便它们能以适当的方式交错排列

3.产生适当的同步脉冲

第一部分很简单。通过改变一个地址并使行与行之间的“步幅”加倍,我们可以安排DPI只读取和显示帧缓冲区的偶数或奇数行。我们使用一个中断在偶数场和奇数场之间来回切换,每秒50或60次。

第二个问题通过入侵DPI外设解决。如果我们把时间安排得恰到好处,我们可以动态地改变它的配置,这样每一秒钟的帧——我应该说是每一秒钟的场——最后都会多一个空行。额外的一行应该在上一个字段之后,下一个字段之前。

第三个问题更难。RP1的DPI无法使垂直同步脉冲在一行的中间开始。

PIO(可编程输入输出)的救场

像Raspberry Pi的RP2040和RP2350微控制器一样,我们的RP1芯片也有一个可编程输入/输出(PIO)模块。它可以产生多种实时波形。近期,Linux内核版本中增加了PIO支持,并且向设备驱动程序和用户程序公开了它。

这里,PIO监听DPI的水平同步(HSync)和数据使能(DE)引脚,以产生垂直同步(VSync)。PIO的四个状态机(SMs)中有两个被使用:一个SM作为计时器,在每行的开始和中间产生一个“中断”。另一个SM找到垂直消隐间隔的开始(没有DE的第一行),然后计算半行,以确定何时开始和结束VSync脉冲。最后,它再次对DE进行采样以检测额外的空白行,以确保它在下一次具有正确的场相位。

5263b6fa-1a96-11f0-9434-92fbcf53809c.png

PIO 对 HSync 和 DE 进行窥探,以生成 VSync;奇数场显示为较暗的波形

有一些问题:无论是否使用,DE信号都必须在GPIO1上输出。PIO与DPI时钟不同步,其VSync输出抖动可达5 ns。这在标清电视速率下并不显著,但在更高的分辨率下可能是个问题!最后,同步修复消耗了RP1的大部分PIO指令内存,因此PIO不能在生成隔行扫描DPI的同时运行其他任务。

如果您有一个Raspberry Pi 5、一个VGA666 HAT和一个可以以50Hz电视速率运行的VGA监视器,您可以通过将它添加到config.txt来测试它:

dtoverlay=vc4-kms-dpi-genericdtparam=clock-frequency=13500000dtparam=hactive=720,hfp=12,hsync=64,hbp=68dtparam=vactive=576,vfp=5,vsync=5,vbp=39dtparam=vsync-invert,hsync-invertdtparam=interlaced

确保您已经升级到最新的 Raspberry Pi 操作系统。请注意,上述配置将在GPIO0上输出DPICLK(未使用),在GPIO1上输出DE(PIO需要监听),并排除在这些引脚上使用I2C/DDC。其他HATs可能需要自定义覆盖,以在GPIO1上启用DE输出(这样做是安全的)。

复合同步

VGA线有单独的线用于水平和垂直同步,但电视将所有内容合并在一个信号中(复合视频)。SCART中使用的中间站是“复合同步”,它多路复用两个同步信号,但保持它们与RGB分离。

大多数现有的SCART HATs都有产生复合同步的电路,但是PIO也能做到!为了减少代码量,它不在内核驱动中;PIO代码样本可以在这里找到。要测试它,您很可能需要修改硬件,这次您需要一个不在GPIO1上输出DE的引脚控制。选择隔行扫描视频模式,然后用sudo和几个参数运行示例PIO程序。

记住RP1的DPI不能在隔行模式下生成VSync。相反,我们让它输出一个在单线和双线脉冲之间交替的“辅助信号”。PIO监视HSync和辅助信号以合成CSync。

5297a32a-1a96-11f0-9434-92fbcf53809c.png

PIO 使用 HSync 和一个 “辅助信号”(改进的 VSync)来实现隔行扫描 CSync

详情

你可能想知道为什么PIO不能完全取代DPI。这主要取决于带宽和时钟。DPI块具有更大的FIFOs,可以更高效地通过PCIe链路传输数据。DPI得益于专用时钟,可生成任意像素速率。PIO也将与一些像素格式转换斗争。

幸运的是,DPI可以处理像素,让PIO来处理同步信号。

52a707d4-1a96-11f0-9434-92fbcf53809c.png

PIO有两种方法可以帮助DPI: (a)修复隔行扫描的垂直同步;(b)生成复合同步

这两个模块仅通过GPIO引脚通信,通常是GPIOs 1、2和3。

我们希望这有助于人们在真正的CRT电视上享受他们最喜爱的电视节目和游戏的真实复古体验!

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 接口
    +关注

    关注

    33

    文章

    9449

    浏览量

    156155
  • DPI
    DPI
    +关注

    关注

    0

    文章

    41

    浏览量

    11859
  • 树莓派
    +关注

    关注

    122

    文章

    2069

    浏览量

    109730
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    树莓5,Raspberry Pi 5 评测

    的B+改进设计,但仔细看!“极为先进”的3.5毫米的音视频插孔已经消失了,所以本代树莓没有模拟视频/音频接口。话虽如此,自
    发表于 06-19 14:51

    树莓4b连接DLPDLCR230NPEVM,HDMI和DPI可以同时用嘛?

    树莓4b连接DLPDLCR230NPEVM,HDMI和DPI可以同时用嘛
    发表于 02-21 11:48

    什么叫做隔行扫描啊??越详细越好

    何为隔行扫描啊?
    发表于 10-02 17:03

    例说FPGA连载70:AV视频采集之去隔行处理实现

    隔行扫描就是每一帧被分割为两场,每一场包含了一帧中所有的奇数扫描行或者偶数扫描行,通常是先扫描奇数行得到第一场,然后扫描偶数行得到第二场。
    发表于 02-07 18:06

    树莓遥控视频小车的方法

    树莓遥控视频小车实现功能硬件材料控制程序PS2手柄驱动程序运动控制程序源码链接扩展功能实现功能基于树莓
    发表于 02-08 06:02

    何在i.MX8QM板上的HDMI端口上生成隔行扫描视频

    我想测试 i.MX8QM 板上 HDMI 端口上隔行视频输出,如何在 HDMI 端口上生成隔行
    发表于 05-25 08:36

    隔行扫描光栅的形成过程及其扫描电流的波形

    隔行扫描光栅的形成过程及其扫描电流的波形
    发表于 07-31 11:58 1491次阅读

    隔行扫描原理

    隔行扫描原理
    发表于 07-31 12:05 1425次阅读

    用于视频应用的去隔行处理和格式重定处理的优化方案

    被捕获帧的Y/U/V分量一般进行隔行扫描,通常采用YUV 4:2:2的格式。有两种方法构成这些数据,但为了简单起见,假设数据是以UYVY 4:2:2隔行扫描格式构成的(图1)。
    的头像 发表于 06-08 08:31 3399次阅读
    用于<b class='flag-5'>视频</b>应用的去<b class='flag-5'>隔行</b>处理和格式重定处理的优化方案

    微雪电子5树莓IPS显示屏5inch DPI LCD简介

    5树莓显示屏 800×480 IPS 支持Raspbian、Ubuntu、OSMC… 型号 5inch DPI LCD
    的头像 发表于 01-06 10:46 2885次阅读

    树莓音频视频播放

    树莓音频视频播放
    的头像 发表于 06-21 11:41 1011次阅读

    使用Resizer在DM6446上进行去隔行扫描和YUV 4:2:2到4:2:0转换

    电子发烧友网站提供《使用Resizer在DM6446上进行去隔行扫描和YUV 4:2:2到4:2:0转换.pdf》资料免费下载
    发表于 10-15 09:53 0次下载
    使用Resizer在DM6446上进行去<b class='flag-5'>隔行扫描</b>和YUV 4:2:2到4:2:0转换

    何在树莓 AI HAT+上进行YOLO目标检测?

    大家好,接下来会为大家开一个树莓5和YOLO的连载专题。内容包括四个部分:在树莓5上使用YO
    的头像 发表于 07-19 08:34 1209次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b> AI HAT+上进行YOLO目标检测?

    何在树莓 AI HAT+上进行YOLO姿态估计?

    大家好,接下来会为大家开一个树莓5和YOLO的连载专题。内容包括四个部分:在树莓5上使用YO
    的头像 发表于 07-20 20:34 617次阅读
    如<b class='flag-5'>何在</b><b class='flag-5'>树莓</b><b class='flag-5'>派</b> AI HAT+上进行YOLO姿态估计?

    如何使用树莓与OpenCV实现面部和运动追踪的云台系统?

    使用树莓和OpenCV实时扫描并存储二维码使用树莓和OpenCV实现物体与动物识别使用
    的头像 发表于 08-14 17:45 976次阅读
    如何使用<b class='flag-5'>树莓</b><b class='flag-5'>派</b>与OpenCV<b class='flag-5'>实现</b>面部和运动追踪的云台系统?