摘要: 基于AXI4Stream总线协议,在Xilinx公司提供的FPGA上实现了一个具有缺陷像素校正、色彩滤波阵列插值、图像降噪实时图像采集与显示功能的视频系统。AXI4Stream总线协议由ARM公司提出,该协议专门针对视频、音频、数组等数据在片内通信设计。利用IP核进行嵌入式系统开发具有简化设计、缩短开发周期等明显优势。设计结果显示,基于AXI4Stream总线的视频系统具有通用性强、独立、简洁易维护等优势。
引言
随着科技的发展,实时视频处理技术作为数字信号处理领域最活跃的研究方向之一得到了普遍的研究关注,并在通信、航空航天、雷达、遥测遥感和多媒体等行业中广泛应用。与用分离元器件构建电路的模式相比,基于现场可编程门阵列(FPGA)技术的新型视频采集系统在处理速度、可靠性、成本、扩展能力和开发周期等方面具有明显的优势。
近年来,基于FPGA的视频采集系统得到了充分的研究[1,2,3,4],但鉴于此类研究对图像数据未做通用的格式处理,使得系统过于集成,模块间过于依赖,降低了系统通用性。AXI(Advanced eXtensible Interface)是一种总线协议,该协议是ARM公司提出的AMBA(Advanced Microcontroller Bust Architecutre)协议中重要部分,是一种面向高性能、高带宽、低延迟的片内总线。AXI4于2010年由ARM公司发布,其中AXI4Stream属于AXI4的子类,特别适宜流媒体数据的传输[5]。本文以一种专门针对视频数据传输的总线,即AXI4Stream总线,对整个视频采集系统进行重新研究。在保证高集成度的情况下,通过简化模块间通信接口大大提高了系统的通用性,具备良好的实用性和可扩展性。
1 AXI4Stream总线介绍
AXI4Stream总线主要应用于数字信息单向传递的系统中。经过采样的物理量,例如图像像素点数据、音频采样数据和经过离散数字信号系统处理的数据等,尤其适用于此总线协议。AXI4Stream 是一种单向的,由主机(master)到从机(slave)的基于握手信号传递数据的总线。系统采用的AXI4Stream总线是基于ARM公司发布的AMBA4 AXI4Stream Protocol v1.0参考手册[6],该标准已广泛应用在主流市场上的嵌入式系统当中。在保证功能完整的情况下,设计仅采用了部分信号线进行数据传输。相关信号线名称和功能解释图略——编者注。
2 系统结构简介系统基于AXIStream总线,以FPGA为主控芯片,由DDR2缓存图像数据,从CMOS图像传感器读取数据并处理后,送入视频编码芯片,最终通过DVI接口输出,实现了一个实时图像采集与显示的视频系统。该系统硬件框图如图1所示。
图1 系统硬件结构框图
系统选用芯片组分别为:CMOS图像传感器选用ApTIna公司的MT9V022,有效分辨率为752H×481V,该芯片广泛应用于视频监控、机器视觉等系统中;FPGA主控芯片选用Xilinx公司的Spartan6LX16,该芯片采用45 nm低功耗工艺技术,提供多达15 000个逻辑单元,满足了低成本、大容量应用的市场要求,并极大地降低了总功耗;DDR缓存芯片选用Micro公司提供的MT47H64M16HR25E,存储容量为1 Gb;视频编码芯片选用Chrontel公司提供的CH7301芯片,该芯片已广泛应用于显示接口电路中。
由于主控芯片选用Xilinx公司生产的FPGA,所以开发软件采用由该公司提供的ISE(Integrated Software Environment) Design Suit套件。
系统功能模块结构图如图2所示,所有模块均采用硬件描述语言Verilog HDL在ISE内实现。
图2 系统功能模块结构框图
对于图1中所示功能模块主要考虑以下几点:
① CMOS图像传感器芯片和视频编码芯片与主控FPGA芯片通信采用的是I2 C协议,所以加入了专门的I2C通信模块。
② 由CMOS图像传感器送出的图像数据并非基于AXI4Stream总线,引入了一个通用视频数据转AXI4Stream模块对数据进行AXI4Stream格式化处理。
③ 图像传感器存在缺陷像素(DefecTIve Pixel),需要算法进行去除,所以数据需经过缺陷像素校正(DefecTIve Pixel CorrecTIon)模块处理。
④ 从图像传感器获取来的像素数据是Bayer格式(Bayer Patten)的,需要转换为RGB格式,引入了色彩滤波阵列插值(Color Filter Array Interpolation)模块。
⑤ 经过格式转换后的原始数据噪点较多,需要引入图像降噪(Image Noise Reduction)模块。
⑥ 图像数据量庞大,而FPGA有限的存储空间不能满足数据吞吐需求,为了解决这个问题本文引入了外部存储芯片DDR2,并采用专用的内存接口管理(Memory Interface Controller)模块进行管理。
⑦ 图像数据需要匹配相应的时序信号进行输出,所以系统内设计了一个视频时序信号控制(Video Timing Controller)模块解决这个问题。
⑧ 送入视频编码芯片的数据格式基于AXI4Stream协议,需要引入AXI4Stream转视频数据模块将图像数据和视频时序控制信号进行整合,转换为编码芯片可直接利用的数据格式。
3.1 I2C总线通信模块
I2C总线协议有以下几种不同的传输编码,按顺序依次为:开始位(start bit)、从设备地址(slave device address)、应答位(acknowledge bit)、数据信息(data message),以及停止位(stop bit)。一个典型的I2C总线读、写时序如图3所示。其中SCK为时钟信号线,SDA为数据信号线。空闲状态下SCK和SDA都为高电平,读写开始的标志是SDA信号线拉低电平,生成一个开始位,随后主设备送出8位从设备地址信号。从设备地址的最后一位决定了此次 *** 作的读写性质,低电平表示写 *** 作,高电平表示读 *** 作。从设备随后拉低SDA信号线以应答。主设备随后以8位为单位进行读或写 *** 作,并在应答后拉高SDA信号线表示停止位,回到空闲状态。
图3 I2C总线时序传输图
3.2 视频数据转AXI4Stream模块
由CMOS图像传感器MT9V022输出的时序如图4所示,其中LINE_VALID表示行数据有效,FRAME_VALID表示帧数据有效。本模块通过侦测FRAME_VALID和LINE_VALID信号的上升和下降沿,以判断图像中每一行数据的开始和结束,通过结合并行传输的10位像素点信息,对AXI4Stream接口信号进行匹配。该模块以主模式(master mode)接口输出,接口信号包含:tdata表示像素点数据;TVALID和tready表示握手信号;tuser表示一帧图像第一行第一个像素点;tlast表示每一行最后一个像素点。
该模块在ModelSim软件中的功能仿真图略——编者注。经验证,该模块可实现数据格式转换功能。
3.3 缺陷像素校正模块
由于生产制造上的缺陷、日常 *** 作中的故障,或是基于温度或曝光差异等引起像素点电压变化,从图像传感器获取来的数据存在一定数目的缺陷像素数据。这些缺陷像素的特征大体可概括为以下几个方面:失活(总为低),活跃(总为高),粘连(固定值)。这些异常可以进一步表征为静态的(总是存在的)或动态的(作为曝光量或温度的函数)。
模块核心代码采用Xilinx公司提供的IP核——Defective Pixel Correction IP Core[7],其编程接口如图5所示。
图5 缺陷像素校正模块编程接口
对于图像中较大的固定区域,此模块需要去判断该区域是图像里静止的部分还是奇异点,也就是有缺陷的像素。由于处理的数据是原始的Bayer格式,此模块将对一个像素点相邻且相同格式(例如同为绿色分量)的像素点进行追踪比对,并将差值超过阈值的像素点间的信息记录下来。
模块里预先设定好阈值和连续比对帧数,当像素点差异在连续若干帧内都超出预定的阈值时,即可定为缺陷像素点。对于缺陷像素点,本模块通过内插的方式将相邻格式像素数据替换过来。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)