如何使用纯FPGA来实现嵌入式视觉方案

电子说

1.3w人已加入

描述

 

嵌入式视觉是当今科技最激动人心的领域之一。

关于使用Zynq SoC的嵌入式视觉应用,热心群众们说的太多,我就不赘述了。今天我们换一个新的视角,来看看如何使用纯FPGA来实现嵌入式视觉方案。

这篇文章,将带你了解如何使用Digilent Nexys Video Artix-7 FPGA多媒体音视频开发板来实现一个简单的HDMI输入/输出视频处理系统。特别是如果你是一名新手,通过本文,你会对基于FPGA的视频处理有更多基本的理解。

坦白说,Digilent Nexys Video开发板可能是市面上性价比最高的音视频处理FPGA口袋实验室了。作为一款专用于音视频处理教学以及视频和视觉应用原型开发的评估板,此板搭载了Xilinx Artix-7系列中资源最大的器件Aritx-7 XC7A200T FPGA。

今天我们就来介绍一下如何使用Nexys Video来实现一个简单的HDMI输入/输出视频处理系统。先来看下此板所集成的支持视频接收、处理和生成/输出的下列I/O和外设接口:

HDMI输入

HDMI输出

显示输出端口

以太网

UART

USB

512MB DDRSDRAM

线路输入(Line In)/麦克输入/耳机输出/线路输出(Line Out)

FMC

使用VHDL与RTL方法,要创建一个简单的图像处理流水线,我们需要实现如下架构:

Zynq

监控处理器(本例中采用Xilinx Artix-7 FPGA实现的MicroBlaze软核RISC处理器)用于监控与用户接口间的通信并根据应用的要求配置图像处理流水线。在本例这个简单的架构中,HDMI输入口接收的数据从原始的并行格式的视频数据、Hsync和VSync转换为AXI Streaming(AXIS)格式。我们想要将数据转换成AXIS格式是因为Vivado提供多个使用这种数据格式的图像处理IP。如果我们使用Vivado HLS来创建我们自己的图像处理模块,那么能够支持AXIS接口也很重要。

MicroBlaze处理器需要支持如下外围设备:

AXI UART – 支持系统的通信和控制

AXI Timer – 使MicroBlaze可以实时运行事件

MicroBlaze调试模块 – 支持MicroBlaze的调试

MicroBlaze本地存储 – 连接到DLMB和ILMB(数据&指令本地存储总线)

我们将使用存储接口生成器来创建与板上SDRAM对接的DDR接口。这个接口和SDRAM创建了一个公共的存储框架,可以访问图像处理管道以及使用AXI interconnect访问监控处理器。

创建一个简单的图像处理流水线需要使用如下IP:

DVI2RGB – Digilent提供的HDMI输入IP

RGB2DVI – Digitlent提供的HDMI输出IP

Video In to AXI4-Stream – 将并行视频输入转换为AXI Streaming协议(Vivado IP)

AXI4-Stream to Video Out – 将AXI-Stream转换为并行视频输出(Vivado IP)

Video Timing Controller Input – 检测输入视频流参数(Vivado IP)

Video Timing Controller Output – 生成输出视频流时序参数(Vivado IP)

Video Direct Memory Access – 支持图像写入和从DDR SDRAM读出

视频处理链的核心是VDMA,我们借助它来将图像移动到DDR内存中。

Zynq

上图展示了IP如何将流式数据转换为读和写管道中内存映射的数据。两个VDMA通道都提供了在流式数据和内存映射数据之间转换的能力。写通道支持流到内存映射的转换而读通道提供内存映射到流的转换。

当把所有这些集中到Vivado中创建初始的基本系统,我们得到了如下架构,这是Nexys Video HDMI示例提供的。

Zynq

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分