一种多路图像采集系统的软件设计

Zynq-7000系列FPGA使用 Video Processing Subsystem 实现图像缩放,提供工程源码和技术支持_fpga video resizer(3) 没玩过图像缩放都不好意思说自己玩儿过FPGA,这是优快云某大佬说过的一句话,鄙人深信不疑。。。目前市面上主流的FPGA图像缩放方案如下:1:Xilinx的HLS方案,该方案简单,易于实现,但只能用于Xilinx自家的FPGA;2:非纯Verilog方案,大部分代码使用Verilog实现,但中间的fifo或ram等使用了IP,导致移植性变差,难以在Xilinx、Altera和国产FPGA之间自由移植;3:纯Verilog方案; 阅读详情

     工业现场因为环境复杂,实时性要求高,常常需要对一处或多处重要位置同时进行监控,且能够在需要时切换其中一幅画面全屏显示。这就要求设计一种实时视频监控系统,既能够满足工业现场应用的特殊环境,具有体积小、功耗低、可定制的特点,又能够对多点进行同时采集和同屏显示以及对其中的一路进行切换。

  国内现有的视频监控方案一般是采用CCD摄像头+视频解码芯片(如SAA7113H/ADV7181B)+FPGA/CPLD+DSP的模式实现,其中视频解码芯片用来对CCD摄像头采集的模拟信号进行AD转换,FPGA/CPLD对数据采集进行控制,DSP终对数据进行处理。这种方法开发周期长,成本高,且可更改性差。

  本文介绍的系统主要由两片Altera公司的CycloneⅡ系列的EP2C8Q20818和飞利浦公司的视频解码芯片SAA7113H以及外存储器件SRAM等组成。两片FPGA分别完成前端图像的采集和后端数据的处理,视频解码芯片完成模拟信号向数据信号的转换,存储器件在FPGA的控制下起到数据缓存作用。

  1 系统描述

  系统主要分为采集模块、解码模块、数据格式转换模块、存储模块、UART模块和LCD/VGA显示模块,如下图1所示。四片视频解码芯片在FPGA1的控制下通过I2C总线完成配置和初始化过程,输出8位与CCIR656兼容的YCrCb 4:2:2格式的视频数据,同时还包括行同步HS、场同步VS和奇偶场RTS0等信号。由于显示终端支持的是标准的RGB格式的数据,所以要对视频解码芯片输出的YCrCb 4:2:2格式数据进行转换。经转换所得的RGB数据在FPGA2的控制下,配合相应的时序信号,截取要显示的有效的640x480个像素,乒乓存入两个SRAM中,并终在:LCD /VGA显示模块的控制下将数据显示在屏幕上。UART通讯模块集成在FPGA里,通过PC机的串口发送相应的控制命令,FPGA接收后切换相应通道的画面。

系统结构图

图1 系统结构图

  2 系统软件结构

  系统软件主要由采集模块、解码模块、存储模块、显示模块和UART模块组成,软件结构如图2所示。

软件结构图

图2 软件结构图

  3 ITU656解码

  ITU656解码模块根据ITU656标准将4:2:2的数据流解码成ITU656标准视频流。ITU656并行接口除了传输4:2:2的YCbCr视频流外,还有行、场同步所用的控制信号。PAL制式的图像一帧有625行,每秒扫描25帧;每行数据由1128字节的数据块组成。其中,PAL制式23~311行是偶数场视频数据,312~552行是奇数场视频数据,其余为垂直控制信号。

  图3为ITU656每行的数据结构。每行数据包含水平控制信号和YCbCr视频数据信号。视频数据字是以27兆字/秒的速率传送的,其顺序是:Cb,Y,Cr,Y,Cb,Y,Cr,…其中,Cb,Y.Cr这3个字指的是同址的亮度和色差信号取样,后面的Y字对应于下一个亮度取样。每行开始的288字节为行控制信号,开始的4字节为EAV信号(有效视频结束),紧接着280个固定填充数据,是4字节的SAV信号(有效视频起始)。

ITU656每行的数据结构

图3 ITU656每行的数据结构

  SAV和EAV信号有3字节的前导:FF、FF、00;1字节XY表示该行位于整个数据帧的位置及如何区分SAV、EAV。在每个时钟的上升沿读取从解码芯片传来的8位数据。当检测到一行数据的开始标志FF0000XY时,检测到SAV信号或EAV信号,提取H、F、V信号。然后发出开始命令,同时开启行列计数器,开始对接下来的图像数据进行解码,根据每个8位数据自身带的信息,判断该数据为Y,Cr还是Cb,从而得到Y,Cr,Cb各分量的值。解码流程如图4所示。

 解码流程

图4 解码流程

  4 帧存储控制器与LCD/VGA显示控制器的设计

  4.1 数据格式的转换

  根据前面第2节的介绍,从ITU656解码模块出来的数据为8位4:2:2的YUV空间图像数据,而LCD/VGA显示器只能接收RGB数据。因为Y-CrCb4:2:2格式不能直接转换为RGB,所以需要先转换为YCrCb4:4:4格式。

  我们知道解码芯片得到的视频数据是顺序为Cb,Y,Cr,Y,Cb,Y,Cr,……的序列,存储的时候将一个Y与一个C(Cb或Cr)结合起来组成一个16位的数据。而当数据被读出来时就要将这些视频数据转换为每个像素占24位(Y、Cb、Cr各占8位)的4:4:4的数据流。4:2:2到4:4:4的转换采用简单的插值算法,在采样的时候,每隔一个像素才采色度值(Cb和Cr)。在转化时,直接将前一个有色度信息的像素点的Cr以及Cb的值直接赋给后一个像素的Cr和Cb,这样就能得到4:4:4的像素数据,每个像素占用24位位宽。

  4.2 帧存储控制器

  作为系统的重要组成部分,帧存储控制器主要用来进行有效数据的缓存。视频数据在FPGA1的控制下乒乓写入两片SRAM。乒乓技术应用的关键在于乒乓切换信号frame的产生,本系统中根据视频解码芯片的奇偶场信号RTS0来产生帧切换frame信号,也就是一个RTS0周期切换。一个RTS0周期由一个奇场和一个偶场组成,是一副完整的画面。当frame为1是,FPGA通过计数器的计数截取终显示所需要的有效的像素点信息按照SRAM的控制时序写入SRAM1,同样当frame为0时,将对应的像素信息写入SRAM2,如图5所示。

乒乓存储示意图

图5 乒乓存储示意图

  系统加电的同时,4片视频解码芯片同时工作,为了保证数据采集的准确性和显示的同步性,系统内生成一个八倍于像素时钟的写时钟信号write_clk,这样,在一个像素时钟周期,写时钟信号已经过了八个周期,而每两个周期分别完成一路图像数据的写过程。

  由于SRAM是一维存储空间,一个地址对应一个数据。所以在写入数据时将SRAM的地址空间划分为4段,每一段用来存储一路图像数据。

  用程序实现比较简单,设置一个地址寄存器sram_addr_reg,将它赋给SRAM的地址控制信号sram_addr。然后在对每一路图像写入时,将对应的SRAM的起始地址加上一个固定的基数。如:


  这样就保证了SRAM中对应地址的数据和屏幕上显示位置的一一对应关系,在读程序中,只需要按照顺序读SRAM即可,如图6所示。

SRAM地址验证

图6 SRAM地址验证

  4.3 LCD/VGA显示控制器

  本模块主要是用FPGA来产生LCD/VGA显示时所需要的时钟信号CLK(像素时钟信号)、VSYNC(帧同步信号)、HSYNC(行同步信号)和使能信号(VDEN),并在相应控制时序的作用下,依次将显示缓存即SRAM中的数据依次读出,输出到LCD上的过程。

  LCD显示所需的主要时序信号的关系如图7所示。

LCD时序信号图

图7 LCD时序信号图

  在系统中,LCD屏幕分辨率为640x480,像素时钟CLK为25MHz,由于FPGA的主时钟输入选用了20 MHz的有源时钟,那么就要求利用Cyclone芯片的内部逻辑资源来实现时钟倍频,以产生所需要的CLK(25 MHz)、用Verilog语言编写参数化的时序生成模块,产生HSYNC(32 kHz)及VHY-NC(60 Hz)时钟信号,如图8所示。

 时序验证

图8 时序验证

  VGA显示原理与LCD相似,除了在硬件上正确连接ADV7125芯片电路外根据需要的分辨率来生成相应时钟信号即可。

  5 图像抖动的分析与解决

  在系统完成后软硬件联调时,出现画面抖动现象,其中以RTSO为基准而产生乒乓切换的那一路图像稳定,其他三路都出现不同程度的抖动现象。对此我们做了深入的分析和实验,分析整个系统的结构可知,系统在多个时钟控制下共同工作,也就是所说的典型的异步系统。我们知道,数据在异步系统传输时对时钟要求非常严格,稍微的一点时钟偏差都会带来对有效像素截取的偏差,终影响图像的显示质量。

  解决的办法有两个,一是加入缓冲机制,利用FIFO对数据存储的特性来实现数据在异步时钟之间的无缝传输;二是同步时钟,利用状态机等方法使得异步系统的时钟能够尽可能同步。采用第二种方法对系统进行改进,首先系统中所有的分频、倍频尽量使用Quartus 6.0自带的PLL产生,并且使用专用时钟引脚进行时钟输出;其次把写时钟write_clk降为54M,也就是每隔一个像素采集。终,四路图像都能稳定显示。

  6 结束语

  本文实现了一种结合Altera公司生产的CycloneII系列FPGA与视频解码芯片ADV7181B的嵌入式图像采集系统。系统具有低功耗、低成本、高可靠和灵活性好等特点。基于FPGA的多路图像采集系统采用两片FPGA作为主控芯片,完成四路视频画面的同时显示和切换,实现两个FPGA的级联配置,采用Verilog语言编写的控制逻辑解决了画面抖动问题。系统软件集成度高,硬件结构清晰简单,即可满足一般监控场合对多处位置进行实时监控的需求,又能为功能更复杂的图像处理、压缩、传输系统提供前端图像数据采集。



  :
FPGA视频图像采集与回放系统设计 FPGA(现场可编程门阵列)是一种可以通过编程定义其逻辑功能的半导体设备。与传统的微处理器或ASIC相比,FPGA提供了极高的灵活性和并行处理能力,使其在需要高性能数据处理的应用中,如视频图像处理,成为了一个理想的选择。视频采集技术是数字视频处理领域的基石,它涉及从现实世界中获取模拟或数字视频信号,并将其转换为可由计算机处理的数据流。这一过程对于安防监控、医疗成像、工业自动化、教育科研、娱乐媒体等多个领域都至关重要。 阅读详情

相关推荐

BT 656 Encoder 编码器模块(verilog)

积分最低,BT 656 Encoder 编码器模块(verilog),已经在modelsim仿真和DE2平台测试过。

Taskbus - 基于Qt的跨平台多进程合作框架(零)增强管道数据流转架构设计

对于普通高校来说,学生的流动是很快的,水平也参差不齐。使用基于进程标准输入输出管道、增强的数据流转技术,使得使用不同语言、不同开发技术的学生可以进行紧密的合作,完成一个实时的数据处理软件。

丁劲犇技术发布空间 3599

一种基于C51单片机的图像采集处理系统设计.pdf

一种基于C51单片机的图像采集处理系统设计.pdf

单片机快速实现网络摄像机+PWM舵机+继电器+AD电压采集

供电:USB 5v 供电或 5v 引脚供电可板载 ESP32-CAM 摄像头模块、SHT30 IIc 温湿度模块、以及 ShineBlink Mini 开发板支持 8 路 IO 控制、4 路 AD 电压采集、1 路 Uar t串口通信、1 路 IIc 通信扩展。

用 Lua 语言开发物联网 IoT 硬件 2000

USB摄像头多路输入成功(三路成功)附上代码

1. 安装labview 2010 vision 模块(8.6的要装个USB驱动,装了驱动还要改下win32下的一个东东(我不记得名字了,可百度)),如果喜欢图像处理的朋友不妨把vision assistant和vision builder 也装了,这两个模块傻瓜式操作快速完成常规图像处理功能。

FIFO芯片和单片机实现的图像采集系统

摘要:基于FIFO芯片AL422B,以飞思卡尔16位单片机MC9S12DG128为,采集摄像头芯片OV7670的图像信息,设计出以低速率的单片机采集高速率图像的图像采集系统。系统采用单片机控制FIFO芯片,先由FIFO实时读取摄像头芯片的一幅完整图像信息,再由单片机以低速率从FIFO的相应寄存器读取该幅图像,读取的同时进行相应的图像处理,得出所需图像中点光源的像素距离后通过FIFO进行下一幅图像的采集。本方案通过样机实验,完满足要求,确保了一副图像的完整性。   引言   在单片机应用系统中,由于图像采集速度、程序存储器和数据存储器的寻址空间的限制,要完整存储30 fps、640×480像

【亲测免费】 高效视频处理利器:BT656 Verilog代码720*576

高效视频处理利器:BT656 Verilog代码720*576 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 BT656 Verilog代码720576是一款专为FPGA平台设计的视频处理工具,旨在将RGB888格式的图像数据高效转换为BT656格式,并输出为720576的分辨率。该项目的核心代码采用Verilog语言编写,适用于各种FPGA开发环境,能够直接在硬件上...

gitblog_09747的博客 760

单片机图像采集与网络传输

单片机图像采集与网络传输、电子技术,开发板制作交流

多路视频数据实时采集系统设计与实现

面对越来越多的实时视频采集、播放的应用,如何能更加方便的操控视频采集,保证流畅的播放效果,成为近几年实时媒体流的一个重要研究方向。本文介绍了视频数据的采集、记录、编解码、多路视频数据间的切换,基于多网络协议组合下的多媒体流传输,动态切换四路视频数据实时传输与播放,从而使远端操控、优质播放有了很大的提高。

luckst的专栏 9143

多摄像头视频采集系统中摄像头 切换方案的设计与实现

目前使用的图像传感器主要有CMOS和CCD两类。CMOS器件功耗低、集成度高,但成像质量不如CCD器件好。因此该多摄像头视频采集系统采用了CCD和CMOS两种器件,以满足多种需求。提出了一种基于TI公司TMS320DM365处理芯片、采用CCD和CMOS器件的摄像头软硬件切换设计方案。

基于DSP/BIOS的视频图像采集处理平台软件设计

采用TI公司的TMS320C5402和DaVinci系列TMS320DM6437双DSP芯片为主要处理器,构建了一个基于DSP/BIOS的视频图像采集处理平台。从功能的角度将系统划分为视频采集任务、视频算法处理任务、数据通信任务和人机交互任务4个相对独立的线程,这4个线程在实时操作系统DSP/BIOS不同优先级的调度下有序地工作。测试结果表明,整个系统运行稳定,实时性较高。

基于 XILINX FPGA 的 Cameralink Full 模式相机采集系统技术实施方案研究报告

通过对系统的硬件设计、软件设计、算法实现、测试与验证等方面的深入分析和探讨,成功实现了该系统的高分辨率、高帧频、图像目标识别、质心算法、HDMI 显示器画面显示、多路输出以及图像采集、识别、可靠存储、高速计算和高可靠性存储不丢帧等功能。同时,实现了多路摄像头采集图像后的多路输出,以及图像采集、识别、可靠存储、高速计算和高可靠性存储不丢帧等功能。7. 图像采集、识别、可靠存储、高速计算和高可靠性存储不丢帧:确保图像采集的准确性和完整性,实现图像的快速识别和处理,同时保证图像的可靠存储,不出现丢帧现象。

chenlance的专栏 1769

ROS 2实战:用MoveIt Task Constructor让机械臂完成抓取任务(附避坑指南)

本文详细介绍了如何在ROS 2环境中使用MoveIt Task Constructor框架,为Franka Panda机械臂构建一个完整的拾取放置任务流水线。通过分解任务阶段、配置规划器并处理实际部署中的常见问题,帮助开发者从基础运动规划升级到可靠的多步骤任务编排,并附有核心避坑指南。

vvv99的博客 507

matlab 数据处理与应用 李强 赵伟,基于DSP的高速数据采集系统设计_赵伟

对研究很有价值!第 24 卷第 2 期 电 力 科 学 与 工 程 Vol.24, No.264 2008 年 3 月 Electric Power Science and Engineering Mar., 2008收稿日期:2007-08-20.作者简介:赵伟 (1980 -), 男, 华北电力大学电气与电子工程学院硕士研究生.基于 DSP 的高速数据采集系统设计赵 伟,鲍 慧,刘云峰(华北电...

weixin_39892447的博客 286

从零开始构建AURIX TC397开发环境:硬件选型与IDE配置全攻略

本文详细介绍了如何从零开始构建AURIX TC397开发环境,涵盖硬件选型、IDE配置及外设驱动开发等关键步骤。针对TriCore架构的高性能特性,提供了开发板选型建议、AURIX Development Studio(ADS)安装配置指南,以及GPIO和CAN FD驱动的实战代码示例,帮助开发者快速上手TC397系列微控制器的开发工作。

7up55的博客 205

eCognition易康面向对象分类批量选择样本,批量导出shp

可以的,使用这个工具条最右边那个三角尺manual editing toolbar,这是用来直接指定类别的,咱们可以拿它选完以后把指定的类别转成训练样本。另一个好处是,这个选出来的样本可以直接导出成shp,但select sample是不可以的,只能导出TTAMask也就是栅格掩膜。如果要导出shp,要在转之前导出。中间那条有点点的红线就是我的鼠标轨迹,只要碰到的对象就会全部选中,然后一点3的那个按钮就直接全部划分为林地了,十分丝滑。在弹出来的工作条里,首先选择你的类别,比如这里选一个forest。

qq_61845364的博客 4069

基于ARM平台的远程视频监控系统的研究

基于ARM平台的远程视频监控系统的研究The Research Of Remote Video Monitor System Based On The ARM 王宪  刘井权  戴旻 来源:微计算机信息                  (江南大学通信与控制工程学院 江苏 无锡 214122)摘要 介绍了一种基于S3C2440[1]硬件平台和嵌入式Linux操作系统[2]的远程视频

wuxi_liujq的专栏 4941

【亲测好用】解决Windows系统Vscode终端无法使用yarn报错无法加载文件

我明明使用`npm i -g yarn ` 安装成功了 甚至在文件夹处 CMD 也可以看到yarn 的版本 甚至在Vscode中又重新安装了一遍yarn 为什么还是报错呢?

Aeporn的博客 888

LabVIEW红外热波图像缺陷检

开发使用LabVIEW开发的红外热波图像缺陷检测系统。该系统结合红外热像仪、工业相机和高效的数据采集硬件,实现对工件表面缺陷的自动检测和分析。通过LabVIEW的强大功能,系统能够实时采集、处理和显示红外热波图像,有效提高了检测的精度和效率。

bjcyck的博客 756

千兆以太网的接收和crc校验

解析该以太网帧,包括统计该以太网帧长度+过滤功能(端口号对不对,是否为udp协议)+CRC校验,将解析结果存入状态fifo,一旦状态fifo开始有数,就开始开启读过程,读过程开始时,首先读状态fifo,根据从状态fifo里面读出的以太网帧长度,来读数据fifo(这样能够防止跨帧读),然后在根据状态fifo里面读出的crc校验正确标志和过滤标志,来确定是否将数据fifo读出来的数据送给下一个模块。改掉之后在抓一下,可以看到抓出来的数据完全正确,从最后开始看,除去4个crc校验的尾巴,数据是到255结束的。

weixin_45284871的博客 2738

SAP-MM-PR分配货源并转PO

SAP-MM-PR分配货源并转PO

yanzibing99的博客 5473

视频监控系统的软件设计开发方案

监控系统被广泛应用于保安、生产管理等需要无人值守的场合。虽然基于闭路电视的模拟监控系统已经发展得非常成熟,但当前兴起的数字视频监控系统与之相比,有许多优点。数字视频监控系统的智能性和可靠性高,能提供远程访问能力,视频资料管理保存方便,而且可以开发升级。本文介绍了一种基于IP网络的数字视频监控系统的设计开发实现方案,从采集、传输到终端控制实现了全过程数字化。     系统需要解决的问题 1、...

gjy_it的博客 4965

把时间当成数据:SAP ABAP 里的 DATS/TIMS 与 DATN/TIMN,怎么选才不踩坑

SAP项目中日期时间字段的陷阱与优化 日期时间字段(DATS/TIMS)在SAP项目中看似简单却常引发事故,主要问题包括: 非法日期(如20201331)入库后,在月结、对账时爆发异常 空值被处理为00000000导致排序错误 ABAP提供两种处理方案: 经典类型DATS/TIMS:存储为字符格式,校验宽松易存脏数据 HANA原生类型DATN/TIMN:数据库级校验,写入即拦截非法值 优化建议: 在接口层和入库前进行严格校验 新项目优先使用DATN/TIMN类型 对遗留数据使用DATS_IS_VALID等函

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 184

Crosslink-NX应用连载(15):多摄像头采集、聚合和GMSL2远程传输设计

分享一个MIPI多摄像头聚合和GMSL2远传的小设计。

haoxingheng的专栏 254

ubuntu20.04搭建QGC4.2编译环境

QGC 4.2ubuntu18.04也可以编译QGC4.2,但是由于GLBC版本较低,无法使用最新版的QTCreator,Ubuntu20.04可以使用最新版QTCreator。

超维空间科技的博客 1万+

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

泊车机器人控制系统

其中二维码识别定位子任务优先级定义为最高,执行二维码定位任务时将识别到的位置坐标信息与目标位置坐标比对,若为目标坐标点则移动到指定坐标位置此时泊车任务结束,若不是目标位置将当前位置坐标与栅格地图比对后确定出下一位置坐标点相对于当前位置坐标的方位,结合视觉巡线导航和全向运动控制使得泊车机器人移动到下一位置坐标点再次与目标位置坐标点进行比对,循环此过程直至机器人移动到指定目标位置并将运行结果上传至调度系统,至此本次泊车任务结束。话题通讯方式是单向数据传输,单个节点发布数据信息,一个或多个节点接收信息。

qq_39599752的博客 992

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: 网段划分 && 教你如何在一个有500台PC以上的局域网配置IP、子网掩码
下一篇: 复合视频信号CVBS解析
USB_ABC
博客等级 码龄16年 319粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值