基于zynq的视频采集与hdmi显示(未完)

一、项目整体框架

在这里插入图片描述片描

一、传感器配置与驱动

camera信息:索尼IMX222摄像头

  1. SPI(Sereial Peripheral Interface)串行外设接口,一般情况下有四根线,时钟线(sck)、片选线(cs)、输入数据线(SDI)和输出数据线(SDO)。
  2. 由下图可知SPI的配置时序要求先发LSB最后发MSB,这与zynq的PS端提供的驱动程序相反,所以在发送数据的时候要进行高低位对调操作。
    芯片的spi时序
    其中chip id可以在手册中查询:
    在这里插入图片描述
    本次项目采用:
    写:CHIP ID=0x02
    读:CHIP ID=0x82

数据高低位对调代码:
在这里插入图片描述

  1. 1080p模式需要如何配置寄存器可在芯片手册中进行查看,配置过程需要先进入Standby模式,配置完成后,再退出Standby模式。

二、IMX222 1080P 模式图像解析(bayer 2 rgb 模块)

在这里插入图片描述
图像解析包括两部分:1.解析出有效像素(bayer格式) 2.完成bayer→rgb的转化

2.1 解析有效像素(gen_sync)

问:哪些是有效像素?
本次选择的是imx222的1080P模式,有图可知有效像素为黄色部分(注:为了方便后面的图像处理,真正提取有效像素的时候需要在1920*1080的基础上外扩两行两列,即有效像素为:1082行,1922列)
在这里插入图片描述
注:本次时钟采用SDR模式
在这里插入图片描述

问:如何解析出有效像素?

答:首先根据同步字给出有效像素(vline_flag)和无效像素的标志(invline_flag)

2.1.1同步字详细介绍:

在这里插入图片描述
根据手册可知,传感器会传输一些同步字:
SAV(valid line):有效行开始
EAV(valid line):有效行结束

SAV(invalid line):无效行开始
EAV(invalid line):无效行结束
注:(本次项目截取12bit数据位的高8位),因此实际同步字为
在这里插入图片描述
时序如下:
在这里插入图片描述

然后设置状态机,通过状态机来控制什么时候开始提取有效像素
在这里插入图片描述
在这里插入图片描述
vsync:场同步信号
在这里插入图片描述
hsync:行同步信号

2.2 bayer 2 rgb

bayer格式图像特点:
在这里插入图片描述
bayer转rgb算法:
(奇行奇列)R11=R11;G11=(G01+G10+G21+G12)/4;B11=(B00+B02+B20+B22)/4
(奇行偶列)R12=(R11+R13)/2;G12=G12;B12=(B02+B22)/2
(偶行奇列)R21=(R11+R31)/2;G21=G21;B21=(B20+B22)/2
(偶行偶列)R22=(R11+R13+R31+R33)/4;G22=(G12+G21+G32+G23)/4;B22=B22;

根据Sobel 算法的经验,可以建立两个 FIFO 深度为 20488bit,用于建立 33 的矩阵
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

ila验证:
在这里插入图片描述

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 10:32:02       70 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 10:32:02       74 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 10:32:02       62 阅读
  4. Python语言-面向对象

    2024-07-19 10:32:02       72 阅读

热门阅读

  1. Github 2024-07-18 开源项目日报Top10

    2024-07-19 10:32:02       20 阅读
  2. React Router 6笔记

    2024-07-19 10:32:02       19 阅读
  3. dnd-kit for react: modern and light drag

    2024-07-19 10:32:02       21 阅读
  4. 模板方法设计模式

    2024-07-19 10:32:02       21 阅读
  5. 如何查询Oracle数据库一周内每天的SQL执行次数

    2024-07-19 10:32:02       17 阅读
  6. 小程序为什么要做分包处理

    2024-07-19 10:32:02       20 阅读
  7. C++ Primer:4.3 逻辑和关系运算符

    2024-07-19 10:32:02       22 阅读
  8. 【Android】Intent基础用法及作用

    2024-07-19 10:32:02       18 阅读
  9. WPF项目实战视频《一》(主要为WPF基础知识)

    2024-07-19 10:32:02       24 阅读