基于Xilinx Zynq 7020创客开发板用 Arty-Z7 搭建红外视觉系统

日期:2017-11-30 作者:佚名

Digilent 最新发布的ARTY Z7-20,使工程师,系统集成商和设计师能够快速入门嵌入式视觉设计。通过板载512MB DDR3和HDMI输入和输出,用户可以在ARTY Z7-20上运行各种实时高清(HD)视频处理设计。此外,组合的Arty Z7-20硬件平台与Xilinx SDSoC和reVISION堆栈可以使设计团队无需深度的硬件专业知识,将计算机视觉算法整合到高响应性系统中。


红外线(IR)是比可见光波长更长的电磁波辐射(EMR),可以让我们看到周围世界物体产生的热辐射。因此,当我们希望在光线不足或夜间实现视觉成像时,红外非常受欢迎,其实际应用涵盖从火灾探测到大量的国防应用场景。

今天,我们就来看一下如何利用 Digilent Arty Z7-20 和 FLIR Lepton 红外摄像头来创建一个 IR 视觉应用系统,以方便在未来嫁接到各种设计项目中。我选择 Digilent Arty Z7 是因为其板载的 HDMI 输出接口可以方便地将 Lepton 红外摄像头所采集的图像高清输出到显示器端,同时 Arty 系列开发板所特有的 Ardunio 接口,可以方便地连接Lepton 红外摄像头。



硬件设计概述

想要在 Arty Z7 开发板上启动 Lepton 红外摄像头,我们需要用到一个分线板,以便于简化电源连接,分离出摄像头的控制与视频接口,并让我们能够将摄像头模块直连在Arty Z7的 Arudino 扩展板接口上。

项目中,我们使用 Zynq I2C 控制器向摄像头发出命令,然后摄像头通过 Video over SPI(VoSPI)提供14位视频输出。这一视频接口所使用的是SCLK,CS 与 MISO 信号。理论上,摄像头模块应该是一个从模块。然而,由于我们需要在 VoSPI 传输中为每个像素接收16位数据,因此我们无法使用 Zynq SoC PS端的 SPI 外设,因为后者仅支持8位数据传输。

实际过程中,我们改为使用 Zynq SoC 可编程逻辑端(PL)实例化的 AXI QSPI IP 模块,将之正确配置为使用标准 SPI(这一简单示例向我们展示了 Zynq SoC 非常适合以 I/O 为中心的嵌入式设计。用户可以通过可配置的 IP 模块或一些HDL代码来满足所遇到的任何I/O需求)。通过实现上述功能,我们可以控制分线板上的摄像头模块,并将视频接收到PS存储空间中。

为了显示接收到的图像,我们需要能够创建一个视频流水线,从PS端的DDR SDRAM读取图像并通过HDMI输出。我们基于Digilent GitHub所提供的Arty Z7-20 HDMI参考设计,对其进行了更新优化实现了上述流水线。

软件设计概述

项目中,我们根据Digilent Arty Z7 HDMI-out示例设计来编写FLIR摄像头的控制程序。 该程序将安顺序执行以下功能操作: 

1. 使用XIICPS配置I2C和SPI外设

2. 读取状态寄存器。如果果相机配置正确并准备就绪,相机将以0x06响应

3. 读出图像并将其存储在存储器中

4. 将存储的图像移动到由VDMA访问的存储器位置以显示图像

要从Lepton摄像头模块成功读出图像,我们需要同步VoSPI输出以找到图像中第一行的起始位置。摄像机将每行输出为160字节块(Lepton 2)或两个160字节块(Lepton 3),每个节块都有一个2字节的ID和一个2字节的CRC。我们可以使用这个ID来捕捉图像,识别有效的帧,并将它们存储在图像存储器中。此外,由于我们还没有配置Lepton摄像头模块来优化其输出,单靠缩放并不能提供最佳的图像质量。实际项目中为了从摄像头模块获得最佳质量的图像,我们还需要使用I2C命令接口来启用影响输出图像的对比度和质量的AGC(自动增益控制),以及平场校正以去除像素到像素的变化。


关于OpenHW  |  OpenHW使用说明  |  FAQ  |  相关法律  |  版权声明
联系邮件: openhw@eefocus.com   联系电话: 0512-80981663-8062     Fax:0512-80981279
Powered by eefocus.com