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

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

3天内不再提示

基于使用FPGA实现低延迟的成像系统

OpenFPGA 来源:OpenFPGA 作者:OpenFPGA 2022-10-08 09:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

目前商用领域的成像系统还是以嵌入式ASIC为主(成品时间快,性价比高),对于一些军工、医学等特殊领域还是以FPGA为主,在特殊领域里延迟是最先考虑的问题(成本不是主要问题),所以今天介绍一下使用FPGA实现低延迟的成像系统,这里说明一下,整个系统调试比较麻烦(和sensor有关),很大可能调试不出图像,所以大家只需要知道有这个架构即可,有需求可以自己调试。

低延迟架构

我们这次使用的是AMD-Xilinx FPGA,大部分的图像处理都有IP可以使用,在官方文档中有相关的架构,具体如下:

24321ce8-46a1-11ed-96c9-dac502259ad0.png

上面的架构是比较通用的架构,官方也有例程可以参考,但是上面架构多了一个VDMA,这就导致视频传输的时候有1到几帧的延迟,这对于低延迟、高分辨率的情形肯定是不能容忍的。所以官方对于特殊情况建议使用下面的架构:

245f5fdc-46a1-11ed-96c9-dac502259ad0.png

去掉了VDMA,但是对于时钟系统要去更高,对于视频输入输出在不同时钟域情况下是使用不了的,所以整体要求比较高。但是砍掉了VDMA和DDR,所以整体成本会低很多。关于没有VDMA情况下的各个IP的设置及测试可以看下面的文章《不使用VDMA情况下使用AXI4总线实现视频输入输出(低延迟首选)》。

FPGA系统架构设计

我们还是参考上面的架构来设计我们的系统。

当我们与图像sensor对接时,我们通常会以不同的格式接收图像,例如 MIPI 、并行接口,在我们接收视频之前,我们需要先配置sensor按照我们的需求运行。通常,sensor需要通过 I2C 或 SPI 进行配置。

这次演示的平台:

7系列FPGA

MT9M114 sensor

24914e84-46a1-11ed-96c9-dac502259ad0.png

sensor 的接口非常简单,可以分为视频接口和配置接口(IIC)。

视频接口由 10 位数据(分为 8 位和 2 位)、帧和行有效、像素时钟和参考时钟 (24 MHz) 组成。

配置接口由连接到sensor的 I2C 和 复位IO组成。

该解决方案的架构如下:软核处理器(MicroBlaze)通过 I2C 配置sensor。虽然图像处理路径将在 FPGA 中实现,但由于这是一种低成本应用,该解决方案不会使用 DDR 存储器中实现外部帧缓冲区,而是图像处理流水线将完全在 FPGA 中实现。

Sensor中由于我们配置的是RAW数据,所以还需要使用Sensor Demosaic和Gamma(基本成像IP)IP。

该设计还将使用软核处理器来控制视频时序和图像处理路径的其他相关配置任务。

Vivado 工程构建

搭建MicroBlaze 系统

这一部分比较简单,可以看看之前的文章《【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化》

添加其他IP

整个系统需要的IP主要如下:

CAM 接口 - 此接口与 sensor接口连接,简单处理数据(选择RAW数据的位数),此IP非必须

Video to AXIS - 这会将并行视频转换为 AXI 流格式

Sensor Demosaic - 将代表 R、G 或 B 的 RAW 像素值转换为 24 位 RGB 格式

Video Timing Generator - 生成输出格式的视频时序信号

AXI Stream to Video Out - 将 AXI Stream 转换为并行视频

AXI IIC - 连接到 MicroBlaze,用于配置sensor

AXI UART - 连接到 MicroBlaze,用于软件调试

添加完后就可以连线了,完整的框图应如下所示。完整的工程在文章最后给出。

24bf2854-46a1-11ed-96c9-dac502259ad0.png

在 AXI Stream 中,使用 TUser 指示帧的开始,使用 TLast 指示行的结束。

IP的关键设置

Video to AXIS

252b045c-46a1-11ed-96c9-dac502259ad0.png

Sensor Demosaic

25a4807a-46a1-11ed-96c9-dac502259ad0.png

AXI IIC 设置

2605c56a-46a1-11ed-96c9-dac502259ad0.png

其他IP可以查看文章最后的工程查看。

资源使用率

在Arty S7-50 的总利用率如下所示。

2656a76e-46a1-11ed-96c9-dac502259ad0.png

SDK 中编写软件

生成 Vivado 硬件后,下一步就是编写应用软件,用于配置sensor和视频处理IP核。

因此,软件中将执行以下操作:

初始化 AXI IIC、VTC 和中断控制器

设置AXI 相关中断控制器 - 这包括三个中断服务例程。IIC 发送、接收和状态各一个。

在 VTC 配置输出时序

通过 I2C 复位sensor并点亮 sensor板子上 LED

通过I2C读取sensor-MT9M114的ID,来检测相机是否存在(外围设置是否正确)

通过 I2C 配置和初始化相机 - 这是最浪费时间的,好在有很多资料可以参考

初始化相机后,我们将能够在 ILA 上看到视频流。

调试过程中测量的FPGA和sensor之间的 I2C 通信信号。

26821912-46a1-11ed-96c9-dac502259ad0.png

使用 AXI UART 调试软件:

27620ac2-46a1-11ed-96c9-dac502259ad0.png

一旦相机初始化,我们可以使用 ILA 采集信号:

27c5fabe-46a1-11ed-96c9-dac502259ad0.png

上图显示了 1280 像素的线宽。

AXI Stream 是一种单向总线,用于将数据从主机传输到从机,作为数据流,它不包含地址通道。为了通过 AXI 流控制流和传递视频时序信息,我们使用了以下信号:

TReady - 当准备好接收数据时由下游外设断言

TValid - 当输出数据有效时通过发送外设断言

TUser - 为帧的开始发出

TLast - 为行尾标志

28121b38-46a1-11ed-96c9-dac502259ad0.png

由于我们没有 使用VDMA,所以 AXIS 流上的视频输出是一个连续块,并且 TValid 在活动像素周期内不会断言和取消断言。

我们可以通过使用图像处理链的像素时钟来确保 Tvalid 是连续的。

软件部分还是参考最后的工程吧,除了sensor需要单独编写,其他都是由SDK自带的例程修改而来。

总结

虽然上面的架构和最后的设计比较简单,但是调试起来还是很难得,只不过我写的比较简单,一旦出不来视频,重点按照最开始官方架构检查PCLK。

该工程主要参考架构和架构中时钟域的处理,注意pCLK(像素时钟)和ACLK的走向。

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

    关注

    1655

    文章

    22288

    浏览量

    630340
  • asic
    +关注

    关注

    34

    文章

    1269

    浏览量

    124061
  • 成像系统
    +关注

    关注

    2

    文章

    214

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FPGA的B超成像系统图像采集的原理和实现

    FPGA的B超成像系统图像采集的原理和实现 1、引言 医学超声诊断成像技术大多数采用超声脉冲回波法,即利用探头产生超声波进入人体,由人体
    发表于 04-21 10:02 1841次阅读
    <b class='flag-5'>FPGA</b>的B超<b class='flag-5'>成像</b><b class='flag-5'>系统</b>图像采集的原理和<b class='flag-5'>实现</b>

    ISPl362在基于FPGA的红外成像系统中的应用

    ISPl362在基于FPGA的红外成像系统中的应用
    发表于 08-12 12:23

    如何实现视频采集与DVI成像设计?

    视频采集是进行图像及图形处理的第一步,目前视频采集系统一般由FPGA和DSP组成,FPGA作为视频采集控制芯片,DSP作为图像处理与成像控制芯片。随着
    发表于 08-14 07:17

    怎么设计基于FPGA多波束成像的声纳系统

    多波束成像声纳利用了数字成像技术,在海底探测范围内形成距离一方位二维声图像,具有很高的系统稳定性和很强的信号处理能力。但是由于数字成像系统
    发表于 10-09 06:04

    【MPS电源评估板试用申请】基于FPGA的红外热成像系统

    项目名称:基于FPGA的红外热成像系统试用计划:申请理由本人从事红外热成像的研发工作,在公司主要负责基于FPGA的红外热
    发表于 06-18 13:45

    新手求助如何实现延迟变化的CPRI?

    如何利用低成本FPGA实现延迟变化的CPRI?
    发表于 04-30 07:03

    请问如何实现无线电信设备的延迟变化CPRI?

    请问如何实现无线电信设备的延迟变化CPRI?
    发表于 05-07 06:55

    怎么实现IGBT延迟导通时间测量系统的设计?

    本文从精简结构,同时兼顾精度的角度出发,提出一种基于时间测量芯片TDC-GP2来精确测量IGBT导通延迟时间系统,用于测量IGBT的导通延迟时间,实现简单且成本
    发表于 05-14 06:07

    基于FPGA的低成本延时成像系统设计方案资料分享

    考虑的问题(成本不是主要问题),所以今天介绍一下使用FPGA实现延迟成像系统,这里说明一下,
    发表于 10-08 15:36

    FPGA的多路可控脉冲延迟系统设计

    FPGA的多路可控脉冲延迟系统设计 采用数字方法和模拟方法设计了一种最大分辨率为0.15 ns级的多路脉冲延迟系统,可以
    发表于 03-29 15:09 2951次阅读
    <b class='flag-5'>FPGA</b>的多路可控脉冲<b class='flag-5'>延迟</b><b class='flag-5'>系统</b>设计

    FPGA运行时重构的延迟隐藏机制研究与实现

    FPGA运行时重构的延迟隐藏机制研究与实现_刘伟
    发表于 01-07 19:08 0次下载

    基于FPGA多波束成像的声纳系统设计

    给出了一种基于FPGA的多波束成像声纳整机的硬件电路设计方案,介绍了该方案中各分系统的具体电路实现,以Xilinx公司的FPGA芯片作为核心
    发表于 11-18 09:38 4854次阅读
    基于<b class='flag-5'>FPGA</b>多波束<b class='flag-5'>成像</b>的声纳<b class='flag-5'>系统</b>设计

    基于Flash FPGA器件实现脉冲延迟控制系统的设计

    高分辨率的要求;模拟方法采用专用的脉冲延迟器件实现延迟控制,其缺点是抗干扰效果不好,容易产生抖动和电压不稳等问题。于是我们提出构建数模结合的系统
    发表于 08-11 17:36 1747次阅读
    基于Flash <b class='flag-5'>FPGA</b>器件<b class='flag-5'>实现</b>脉冲<b class='flag-5'>延迟</b>控制<b class='flag-5'>系统</b>的设计

    介绍一下使用FPGA实现延迟成像系统

    当我们与图像sensor对接时,我们通常会以不同的格式接收图像,例如 MIPI 、并行接口,在我们接收视频之前,我们需要先配置sensor按照我们的需求运行。通常,sensor需要通过 I2C 或 SPI 进行配置。
    发表于 10-08 09:05 1366次阅读

    采用FPGA实现医疗成像总结

    电子发烧友网站提供《采用FPGA实现医疗成像总结.pdf》资料免费下载
    发表于 10-07 16:34 2次下载
    采用<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>医疗<b class='flag-5'>成像</b>总结