图像采集与显示

2024-09-12

图像采集与显示(精选7篇)

图像采集与显示 篇1

引言

当前,视频图像技术在工业生产和日常生活中的应用越来越广泛,生活中随处可见的图像信息的快速增加,使得人们对图像的质量和实时性的要求也越来越高[1]。图像采集与显示是所有视频图像处理基础。目前,数字图像传感器主要有CCD和CMOS两种。CMOS图像传感器可通过互补金属氧化物半导体技术将像素阵列与外围支持电路(如时钟、所有的时序逻辑、可编程功能和A/D转换器)集成在同一块芯片上[2]。这样使得CMOS具有高集成性,且可控性强,而且CMOS的制作工艺简单,芯片损耗低,成本低。FPGA(Field-Programmable Gate Array)即现场可编程门阵列,是目前的嵌入式研究的热点,具有性价比高、开发周期短、反复现场编程修改、保密性好、集成度高、低功耗、开发工具智能等特点。当前各种基于FPGA的产品方案层出不穷。

本设计采用Altera公司CycloneIV E系列的FPGA作为主控芯片,以OV7670这款CMOS图像传感器为图像源,实现图像数据的实时传输及显示。

1 系统结构设计

本设计系统采用Altera公司CycloneIV E系列的EP4CE22F17作为主控芯片,以Omni Vision公司的OV7670图像传感器为数字图像输入信号,采用SDRAM(动态随机存储器)对图像数据进行缓存,FPGA输出的数字图像信号经ADV7125数模转换器转换后输入到VGA显示器上进行显示。其总体结构框图如图1所示。

设计的工作原理:系统以FPGA为主控平台,通过控制SCCB接口设置图像传感器输出格式为RGB565,完成芯片初始化,FPGA为OV7670提供主频为25MHz的时钟信号,并通过SCCB接口对OV7670存储器进行实时读写。SCCB将实时读出的行、帧同步信号以及像素时钟和8位图像数据信号传输到FPGA中,FPGA将读入的8位图像数据转换成16位RGB数据,由于OV7670芯片,VGA和SDRAM数据传输不同步,需要2个FIFO进行数据缓冲。FIFO写模块由7670IP控制,将图像信号写入SDRAM,FIFO读模块由VGA模块控制,读取SDRAM中的图像信息,再传送到D/A转换器ADV7125,图像数据最终经D/A转换和模拟VGA接口传送到VGA显示器中进行显示。

2 图像数据采集

2.1 芯片介绍

Omni Vision公司的OV7670是数字图像传感器,它具有体积小,工作电压低等优点,OV7670的VGA图像刷新最高速为30帧/秒。使用时可以通过SCCB总线进行自由设置图像的质量、数据的格式和图像信息传输的方式[3]。OV7670作为CMOS图像传感器应用于本设计中。

2.2 SCCB总线

SCCB(Serial Camera Control Bus)总线是Omni Vision公司定制的串行摄像头控制总线,通过SCCB总线可以实现图像的控制与传输。SCCB总线与I2C总线类似,它是一种双向二线制同步串行总线。SIO_C和SIO_D分别为SCCB总线的时钟线(输入)和数据线(输入输出)。其时序图如图2。

SCCB接口通过OV7670IP发出的时钟信号,数据传输启动信号和传送截止信号对OV7670内部存储器进行配置,完成对图像信号的读写,以实现对FPGA的数据传送。

2.3 图像数据格式转化

由OV7670传送到FPGA的有8位图像数据信号和行、帧同步信号以及像素时钟。其中8位图像数据是以RGB565格式进行传送的,其时序图如图3。

由图3可知,在RGB565格式中,前后两个字节的数据信号来表示一个像素信息,其中第一字节的前5位代表R,第一字节的后3位和第二字节的前3位代表G,剩下的5位代表B。而为使在后续环节中图像数据传输准确,方便,利用Verilog HDL编写图像转化模块,将前后两个8位信号转换成16位像素信号,再将这16位信号连接DA转换器3组输入的高5位或高6位,这样就保证了图像信息的完整性。

SCCB总线和图像格式转化部分都是7670IP控制实现的,通过编写该模块,产生SCCB控制信号,同时接收OV7670传输的图像信号,并将收到的8位图像信号转换为更便于传输的16位信号,然后发出信息存储命令,将16位的像素信息存储到SDRAM中。7670IP模块是完成图像采集的重要模块。

3 图像数据存储与显示

3.1 数据存储

同步动态随机存储器(Synchronous Dynamic Random Access Memory,SDRAM),体积小,容量大,成本低,且其读写速度的也大幅提升,因此本系统采用SDRAM作为数据缓存。

SDRAM主要用于16位像素信息的读写,实现对数据的缓冲。但SDRAM的读写时钟为100MHz,而OV7670的主时钟与VGA时钟均为为25MHz,这样前后图像数据传输不同步。为了保证数据完整,准确,因此需要两个FIFO(First Input First Output)来实现在不同时钟域之间的数据传输。通过7670IP控制FIFO写模块将图像信息写入SDRAM中,然后在VGA控制模块要求读数据时经FIFO读模块输出图像信号。由于时钟频率不同,因此FIFO两个端口的数据吞吐率不一致,设计时要开好缓冲区,并通过监控确保数据不会溢出[4]。

3.2 VGA控制

VGA(Video Graphics Array)视频图形阵列,是一种流行广泛的视频传输标准,具有高分辨率、高显示速率、色彩丰富等优点。数据来源、数据存储、时序实现等是VGA显示控制的主要内容,但关键还是在于VGA时序实现。VGA时序如图4所示。行时序(像素数)和帧时序(行数)都分为四部分:同步脉冲部分(Sync a)、显示后沿部分(Back porch b)、显示段部分(Display interval c)和显示前沿部分(Front porch d)。虽然显示段占时序的绝大部分,但其他3部分控制着显示的同步性,稳定性,保证行,帧显示的同时同步。

VGA控制模块主要是产生符合要求的VGA时序,以达到在VGA显示器上进行正确显示的目的。本设计中VGA采用640*480@60Hz显示标准,采用该模式下工业时序(见下表1)。

VGA控制模块最主要的目的是产生符合条件的VGA时序。它可简单分为三部分:分频部分,同步部分和控制部分。VGA模块通过VHDL语言编写将产生帧同步信号,行同步信号,5位R信号,6位G信号和5位B信号,并将这些输出数字信号传送到D/A转换模块。

3.3 DA转换

VGA显示器通过VGA接口接收图像信息,但VGA接口是模拟接口,只能传输模拟信号,而经过FPGA处理的都是数字信号,故需经过一个数模转换器实现VGA显示器显示。VGA显示对模数转换DAC有如下要求:一是高速转换,转换速度在80MHz以上;二是同步性好,保证RGB三路信号的同步性;三是有相应的精度。

本系统采用ADI公司的ADV7125KSTZ140,它是有48PinLQFPF封装的具有三个高速DA转换器的单芯片。ADV7125的3组输入端分别对应RGB3组视频图像数据。实现D/A转换只需将VGA控制模块输出的5位R信号,6位G信号和5位B信号,分别连接到ADV7125的3组8位的数字视频数据输入端的高5位,高6位和高5位。这样连接使得图像表示范围远大于接收到的RGB信息范围,保证了图像模拟信号的完整性,准确性。

4 测试结果和分析

本设计实现了在VGA显示器上实时显示OV7670采集的图像。由于OV7670本身具有控制图像质量的功能,因此,在面临不同要求的图像处理时,既可以通过OV7670本身对图像的伽玛曲线、白平衡、饱和度、色度等进行处理,也可利用FPGA现场可编程门阵列的可添加性,可删减性及反复现场编程修改的性能,建立可添加的专门的图像处理模块来完成对图像进行优化处理。另外,DA转换器也是影响图像质量的重要因素,除了可采用专业化芯片外,还可采用权电阻网络来实现RGB565信号到VGA接口三基色信号转换的电路。

5 结语

系统通过Altera公司Cyclone IV E系列的FPGA作为主控芯片,实现了对OV7670图像传感器采集图像信息的实时显示。可编程逻辑器件FPGA的集成度很高,它的器件密度可以从数万系统门到数千万系统门不等,高度集成化的FPGA可以完成极其复杂逻辑电路功能。FPGA可以适用于高速、高密度的高端数字逻辑电路设计领域[4]。同时,伴随着各种技术不断刷新与涌现,我们可以依托FPGA对OV7670进行模块化的设计,完成更多视频算法,便于对模块实现进一步的开发与升级,同时为后续的设计提供了更有力的保障。

参考文献

[1]李德明,韩建,江国强.基于OV7670的图像采集及显示系统设计.仪器仪表学报,2010[8],30-33

[2]丁昊杰,刘敬彪,盛庆华.基于CMOS图像传感器的视频采集系统设计.现代电子技术,2012[14],178-181

[3]OmniVision Technology,Inc.OV7670/OV7171COMS VGA(640*480)CAMERACHIPTM with omni pixeltechnology,Version 1.3[EB/OL].[2009-09-17].http://www.ovt,com

[4]王诚,蔡海宁,吴继华.Altera FPGA/CPLD设计[M].北京:人民邮电出版社,2005

图像采集与显示 篇2

视频图像经过数字化后的数据量相当庞大, 传统的图像采集系统已经不能满足高速数据处理要求。嵌入式系统以其体积小、可靠性强、功耗低等为图像采集系统的发展提供一种新的解决方案, 尤其是以FPGA、DSP为核心处理器的图像采集方法, 正在成为实时图像采集领域新的发展趋势。

2 系统原理介绍

本设计的图像采集控制系统的工作主要包含以下5个步骤, FPGA通过I2C协议对图像传感器芯片OV7670进行初始化设置, 如设置控制寄存器工作方式 (曝光时间、工作模式等) ;待OV7670初始化完毕后, FPGA为图像传感器提供主时钟, 读出图像传感器的行、场、帧同步信号以及图像数据信号;在FPGA中使用行缓冲加流水线的处理方式将读入的行数据实时转换成标准的30位RGB数据;将SDRAM数据端口仿真成四个虚拟的数据端口 (2个写端口和2个读端口) , 对RGB数据进行存储;在FPGA中产生VGA的同步信号, 并从SDRAM中读出图像数据进行显示。

3 系统硬件设计

硬件电路主要包括FPGA控制电路、图像采集电路、SDRAM存储电路、D/A转换电路四个部分。系统上电后, FPGA内部的I2C控制器配置程序经过I2C总线引脚SDATA与SCLK传输至CMOS的寄存器中, 使摄像头按照配置的模式工作, 输出行场同步信号、像素时钟、图像数据。CMOS模块检测行场同步信号, 生成写使能信号, 在像素时钟的上升沿将数据采集到寄存器中, RGB数据转换模块将采集的原始RAW数据转换成RGB信号, 通过SDRAM控制器模块将数据写入SDRAM。FPGA产生行、场、帧同步信号, 将数据通过DA转换器, 将数据转换成VGA接口所需的模拟信号, 输出至液晶屏上显示。

4 系统软件设计

系统软件程序设计主要包括5个部分:I2C控制部分、CMOS摄像头采集控制部分、RGB格式转换控制部分、SDRAM控制器部分和VGA控制部分。

I2C总线为串行数据传输总线, 由S C L K信号的升降沿和S D A T A信号的高低电平来控制数据传输的开始与结束。依据ov7670的工作原理, 需要先对ov7670的控制寄存器进行配置图像传感器ov7670才能正常工作, 而该配置过程需要通过I2C总线来完成。本设计通过编写硬件描述语言在FPGA中模拟I2C总线时序, 从而实现ov7670的寄存器配置。其具体工作流程为, 在I2C总线开始信号发出后, 送出的第一个字节数据用来选择从器件地址, 它的前7位为地址码, 第8位为方向位 (R/W) 。方向位为“0”表示发送, 即主器件把信息写到所选择的从器件;方向位为“1”表示主器件将从从器件读取信息。系统中的各个器件将自己的地址和主器件送到总线上的地址进行比较, 如果与主器件发送到总线上的地址一致, 则该器件即为被主器件寻址的器件, 其接收还是发送信息则由第8位 (R/W) 确定。

ov7670芯片内部自带时序发生器和ADC, 当完成对ov7670的寄存器配置后, 只需输入时钟信号, 图像数据便随同行有效信号、场有效信号、像素时钟依照时序关系一同发出。而FPGA读入图像数据的同时, 也将消隐期的图像数据读入。因此, 需要此图像采集模块要在读取数据的同时, 检测CMOS摄像头输出的行场同步信号, 来判断出有效信号和消隐信号并读出有效的图像信号, 同时对像素时钟计数, 产生对应有效信号的坐标, 将有效数据采集到FPGA中。

一般CMOS摄像头由三个单色CMOS分别获得彩色图像的R、G、B, 每个CMOS只采集对应图像的一种颜色, 这样需要的CMOS数量非常大。为了较低成本, ov7670摄像头采用单CMOS通过彩色滤波阵列 (CFA) 获得图像的彩色信息。而这样的采集方法在每个像素的位置上只有一种颜色分量可以获得, 所以要复原另外两种缺少的颜色分量, 这个转换过程就由图像格式转换模块来完成。ov7670使用一组红色和绿色滤镜以及一组绿色和蓝色滤镜, 其中绿色像素个数占总像素的1/2, 因为绿色占据了可见光谱中最重要且最宽的位置, 使得人眼对绿色最为敏感, 能分辨更多的细节, 红色和蓝色则占1/4。ov7670输出的图像数据为Bayer格式, 数据输出的顺序为从左到右、从上到下。

由于图像采集与显示的时钟频率不同, 两者之间的工作速度不同。为了完成二者之间的速度匹配, 输出一帧完整的画面, 需要使用SDRAM作为帧缓冲器。该SDRAM控制器主要用来产生SDRAM的读写控制信号, 来正确的进行一帧图像数据的存储与输出。由于目前对SDRAM的控制研究比较成熟, 自己在设计主程序中直接调用了ALTERA公司开发的SDRAM控制模块。

5 结语

本设计在充分了解了国内外图像采集系统现状及发展趋势的基础上, 结合图像采集系统的原理和FPGA技术特点, 提出了以FPGA为控制核心, 利用硬件加速代替软件实现全硬件的高性能的视频采集系统的思想, 通过理论分析和结果验证, 本论文提出的方案合理。同传统的技术相比, FPGA技术在视频采集系统中的引入是一次全新的尝试, 该方案具有性能优越、体积小、成本低以及功能可扩展和硬件可升级等众多优势, 具有很强的应用潜力。

参考文献

[1]王磊.基于FPGA的嵌入式系统设计[D].哈尔滨:哈尔滨工程大学, 2006.

[2]祝长锋.基于FPGA的实时图像检测技术的研究[D].江苏:江苏大学, 2008.

[3]吴继华, 王诚.Altera FPGA/CPLD设计 (基础篇) [M].北京:人民邮电出版社, 2005.

图像采集与显示 篇3

1、原理概述

本系统基于STM32高位单片机通过软件编程设置OV7670摄像头内部参数采集图像, 并将采集到的图像转换为数字信号存储在AL422里;随后STM32将存储在AL422内部的数字代码提取出来, 再经过算法处理将数据显示液晶显示屏TFT上。

该系统可分为数据采集, 数据存储, 数据处理, 数据显示四个板块, 通过整合后合并为数据采集与存储和数据处理与显示两大模块。

2、数据的采集与存储

2.1 数据的采集[1]

图像的采集选用的是图像传感器OV7670, 它体积小, 工作电压低, 功能强大且使用方便灵活。其通过SCCB总线接口编程实现伽玛曲线、白平衡、饱和度、色度等图像处理功能, 其中Ommi Vision图像传感器应用独有的传感器技术, 通过减少或消除光学或电子缺陷如固定图案噪声、托尼、浮散等, 提高图像质量, 得到清晰的稳定的彩色图像, 同时其外部硬件电路配置灵活。

2.2 数据的存储

采用AL422进行数据存储存。一帧图像信息通常包含640X480或720X480个字节, 市面上很多存储器由于容量有限, 无法存储一帧的图像信息;而AL422容量很大可存储一帧图像的完整信息, 并能够自行刷新数据, 其工作频率可达50MHZ, 大大提高了存储速度;同时价格相对来说比较便宜, 因此选择AL422作为数据中转站。

3、数据的处理与显示

3.1 数据的处理[2,3]

为了更好地处理图像信息, 使数据信息的采集效果更好, 选用STM32系列单片机做为系统的控制核心。STM32系列单片机具有大容量的flash存储容量, 采用ARM Cortex-M3内核, 性能高、功耗低、成本低且处理速度快, 选用这类单片机性价比较高。该系列单片机按性能分为STM32F103“增强型”系列和STM32F101“基本型”两个系列。增强型系列是同类产品中性能最高的产品, 时钟频率可达到72MHz;基本型时钟频率为增强型的一半, 频率较低, 综合后选用了频率较高的STM32F103“增强型”系列。

3.2 数据的显示

数据显示采用2.4寸TFT液晶显示屏, 大小为240X320, 显示图像范围较大;STM32采集的数据为240X320X2的数据, 刚好是2.4寸的TFT液晶显示屏的数据, 使用TFT液晶显示屏不需要去设置一些数据, 使用起来非常方便。

4、软件设计

整个系统只有在软件的支持下才能正常工作。本设计在kail软件中进行程序设计, 通过jlink仿真器将程序下载到STM32中, 当每次上电或者系统复位后行头开始执行程序。的软件设计思路如图2:

5、结论及总结

在本次设计中, 经过不断地调试与改进, 最终成功通过对STM32编程将OV7670采集到的图像信息显示在TFT液晶上并总结出以下两点经验:

(1) 选取的摄像头的类型要合适。不同类型的摄像头有各自的适用环境, 其在参数和功能上有很大的差别, 选择不合适会严重影响采集数据的准确性。

(2) 应将采集到的数据先存储再进行数据处理。将采集到的数据线存储起来再处理, 一方面可以防止数据丢失, 另外一方面可以避免一下处理太大的数据。

参考文献

[1]李德明, 韩剑, 江国强.基于OV7670的图像采集及显示系统设计[J].仪器仪表学报, 2010 (08) :30—33.

[2]龚跃玲, 汪玲彦.基于STM32的USB OTG数据通信的实现[J].微型机与应用, 2011 (30) :32-34.

图像采集与显示 篇4

伴随着半导体制造工艺的进步,现场可编程门阵列(Field Programmable Gate Array,FPGA)器件的设计技术也取得飞跃性的发展[1]。凭借日益丰富的片内资源以及固有的并行处理能力,FPGA的应用范围已经超出通信行业,逐渐扩大到数字信号处理、硬件加速[2,3,4]、汽车电子等领域。色选机通过对被测物体的图像进行处理,判断被测物体是否符合要求,实现筛选[5],其电子系统涉及图像采集、信号处理、图像显示、串口通信等。FPGA可实现上述功能。与常见的FPGA+ARM/DSP+PC方案相比,在FPGA内实现图像采集、处理与显示可简化色选机系统结构,提高经济性。本设计搭建了实现图像采集、图像处理与图像显示的完整的硬件平台,完成了图像采集与图像显示的逻辑设计,并预留了充裕的FPGA片内资源,留作图像处理模块使用,具有较高的实用性。

1 系统设计

如图1所示,本系统由图像采集子系统与图像显示子系统组成。图1中大虚线框内的各模块均为FPGA内部逻辑设计模块,细箭头表示控制信号流向,空心粗箭头表示图像信号流向。采集子系统包括RS232通信芯片、总线缓冲器、线阵电荷耦合器件(Charge Coupled Device,CCD)传感器、CCD缓冲放大器、CCD模数转换器、双口随机存取存储器(Random-Access Memory,RAM)模块和图像采集模块。显示子系统包括同步动态随机存储器(Synchronous Dynamic Random Access Memory,SDRAM)、视频解码芯片、视频图形阵列(Video Graphics Array,VGA)监视器、图像缓存模块和图像显示模块。顶层控制模块统一控制图像信号的采集、缓存与显示。下文分别就两个子系统进行阐述。

1.1 图像采集子系统设计

图1中,CCD采用东芝公司生产的TCD2566BFG彩色线阵图像传感器。该型传感器灵敏度高,暗电流小,采用两相5 V时钟脉冲驱动,含有3行彩色光电二极管阵列与1行黑白光电二极管阵列,每行阵列中光电二极管数量为5 340个[6]。FPGA采用Altera公司生产的Cyclone III型EP3C5E144C8芯片。该芯片内含5 136个LE、46个M9K Block、23个乘法器,以及414K片内RAM[7]。串口通信芯片为MAXIM公司生产的MAX3232。

图像采集模块完成采集子系统的核心功能———驱动CCD传感器。该模块接收外界指令,配置CCD行频及每英寸点数(Dots Per Inch,DPI),产生CCD时钟脉冲与控制信号。模块由驱动子模块、单口RAM子模块以及RS232子模块构成。驱动CCD传感器前,应先在驱动子模块内设置好CCD的行频与DPI。设置过程如下:单口RAM加载.mif文件进行初始化,在不同的地址预存不同的配置信息。用户根据实际需要,通过RS232子模块,向单口RAM子模块发送不同的读取地址。读取出的不同配置信息传输至驱动子模块,驱动子模块据此向CCD传感器发送不同频率的时钟脉冲,达到改变行频与DPI的目的。参照CCD技术手册,驱动子模块还产生CCD传感器所需的控制信号,经过总线缓冲器传输给CCD传感器,实现驱动。驱动TCD2566BFG需要10路信号,如图2所示。

图2中,SW1为彩色模式与黑白模式选择信号;SW2为时间延迟积分(Time Delay Integration,TDI)功能选择信号;SCG为存储清除栅(Storage Clear Gate)脉冲信号;SH为转移栅(Shift Gate)脉冲信号,其为高电平时,转移栅下势阱允许MOS电容中的信号电荷包转移到模拟移位寄存器中,为低电平时,二极管进入光积分状态[8]。时钟Φ1A与Φ2A为三行彩色光电二极管阵列的驱动时钟,频率均为35 MHz,相位差为180°。时钟Φ1B与Φ2B为一行黑白光电二极管阵列的驱动时钟,CCD工作在彩色模式时维持低电平。Φ1A、SCG、SH、RS、CP可利用计数器产生其波形。对Φ1A取反可得Φ2A。复位信号RS与电平钳制信号CP的占空比为1:8。关键源代码如下(pixel_counter为140 MHz时钟下的18位计数器):

CCD被正常驱动后,产生的模拟图像信号,经过缓冲放大器传输至CCD专用模数转换器AD9945。AD9945完成图像信号的模数转换,并将采集到的一行数字图像信号写入片内双口RAM中。至此,采集子系统完成CCD图像信号的采集。

1.2 图像显示子系统设计

显示子系统中,图像缓存模块与图像显示模块完成显示子系统的核心功能,即缓存图像与显示图像。图1中,SDRAM采用Hynix公司生产的HY57V64820HG芯片,位宽8 bit,内含4个Bank,总存储空间为64 MB,用于缓存双口RAM输出的图像信号[9]。视频解码芯片采用Analog Devices公司生产的ADV7123KSTZ140,最高数据吞吐率为330 MS/s[10],可将数字图像信号转换为VGA标准时序的模拟图像信号。

1.2.1 图像缓存模块逻辑设计

当CCD传感器工作在300DPI模式下且行频为3 500 Hz时,其每秒钟产生的数据量为9.345 MB,小于VGA(1366×768@60Hz)每秒钟显示的数据量73.764 MB,因此有必要对CCD图像数据进行缓存,当缓存的图像数据达到VGA一帧的数据量时,再将数据发送至视频解码芯片进行显示。显然,FPGA片内RAM无法提供足够的存储空间,使用片外SDRAM很有必要。

图像缓存模块内含图像裁剪、片内FIFO以及SDRAM控制器3个子模块。

在缓存图像之前,需要对图像信号进行裁剪,使其符合VGA标准时序。TCD2566BFG传感器工作在300DPI模式下,输出图像一行像素点数量为2 670,工作在600DPI模式下,一行像素点数量则为5 340。对于1 366×768分辨率的监视器,每行能够显示的最大像素点数量为1 366点。为此,对双口RAM输出的图像数据进行了裁剪:即300DPI模式下,每读取双口RAM数据一次,读取地址递增2;600DPI模式下,每读取一次数据,读取地址递增4。经过裁剪后,实际显示的图像每行为1 335像素,在首尾各添加15点空白像素后,图像信号符合VGA显示标准时序。采用多监视器或高分辨率监视器显示,也可以解决CCD图像与监视器每行像素点数量不同的问题。

图像信号从双口RAM输出的时钟频率是40 MHz,而SDRAM读写数据的时钟频率为100 MHz。因此,在SDRAM控制器两端各例化一片异步先进先出(First In First Out,FIFO)存储器,实现图像数据的异步读写。SDRAM工作在页读写模式,突发长度512 B。读写FIFO位宽8 bit,深度1 024 word,利用其先入先出与可同时读写的特性,可实现一帧图像的持续写入与读出。图像缓存模块的工作流程如图3所示。

图像经过裁剪后,即可传输进SDRAM内。SDRAM正常读写数据前必须进行初始化,以设置突发长度、列地址控制器(Column Address Strobe,CAS)潜伏期和操作模式。SDRAM初始化完毕后,即拉高wrfifo的写使能。图像数据以40 MHz的频率从双口RAM向wrfifo写入,直到写完一帧VGA图像后才拉低wrfifo写使能。当wrfifo内部数据大于512 word(半满)时,则拉高wrfifo的读使能,读出图像数据,以100 MHz的频率写入SDRAM。SDRAM完成一页(512 B)数据的写入后,暂时关闭wrfifo的读使能以及SDRAM的写使能,当wrfifo内部数据量再次大于512 word时,则再一次读取数据,写入SDRAM。重复该过程,持续向SDRAM写入图像数据。SDRAM内部写满一帧图像后,开始读SDRAM过程。检测rdfifo内部数据量,小于512 word时,拉高SDRAM读使能,以100 MHz频率向rdfifo写入图像数据。读完SDRAM内一页数据时,暂时关闭SDRAM读使能以及rdfifo写使能,等待VGA显示请求。收到VGA模块的显示请求后,拉高rdfifo的读使能,数据以85.5 MHz的频率传输至显示模块。凭借FPGA的并行特性,缓存模块在每一个时钟上升沿都可检测rdfifo的内部数据量。在rdfifo读出数据到VGA过程中,一旦检测到rdfifo内部数据量小于512 word,即拉高rdfifo的写使能,在读取数据的同时,写入数据。上述过程可实现一帧图像数据的连续写入和读出。由于系统采用的SDRAM无法同时进行写和读两种操作,因此本文采用了两片HY57V64820HG进行乒乓操作:SDRAM1进行读出操作,向ADV7123KSTZ140输出信号时,SDRAM2则从双口RAM写入数据;反之亦然。通过乒乓操作,实现了图像帧与帧之间的连续传输。

1.2.2 图像显示模块逻辑设计

VGA是IBM公司于1987年提出的一个使用模拟信号的显示标准。在1 366×768@60 Hz模式下,扫描一帧图像需要16.7 ms,其中实际显示图像的时间为12.3 ms。图像扫描过程从左往右,从上往下。设置一个计数器记录扫描的位置。当扫描至一行图像的左端点时,则开始将一行图像信号传输至视频解码芯片,扫描至右端点时,则停止图像信号的传输。纵向扫描的原理与此相似。图像显示模块还生成视频解码芯片需要的时钟脉冲、行场同步信号以及消隐信号。图像显示模块关键源代码如下:

2 软硬件综合调试

利用FPGA集成开发环境Quartus II 11.0软件自带的Signal Tap工具,可以检测FPGA内部信号的真实值。将逻辑设计的顶层模块文件在Quartus II 11.0软件中全编译,生成.sof文件,利用JTAG接口将文件烧录进FPGA在线调试。驱动模块输出的驱动信号以及双口RAM输入的数字图像信号如图4所示。对比技术手册时序图,Signal Tap抓取的信号表明,驱动线阵CCD所需的10路信号被正确地产生了。结果如图4中的DATA_R、DATA_G、DATA_B信号所示,FPGA成功接收到了由线阵CCD产生的数字图像信号。图像采集子系统完成了设计目标。图像在监视器上显示结果如图5所示。线阵CCD传感器需以特定速度扫描被测物体才能得到二维图像。测试中,被测物体油茶果匀速通过CCD传感器下方,CCD传感器保持固定。显示设备为通用即插即用监视器,分辨率1 366×768。显示画面稳定,无失帧,无噪点。

3 结论

Signal Tap抓取的信号波形和监视器显示的画面表明系统基本上实现了设计目标,即使用FPGA芯片完成CCD图像信号的采集和显示,证明了系统软硬件设计的正确性。全编译结果显示,FPGA内部LE只使用了44%。利用剩余的资源,可以对图像信号进行图像处理,处理结果通过串口传输至筛选执行机构,执行筛选动作。配合不同的CCD传感器,该系统可广泛应用于安检、医疗影像、遥感测绘等领域,具有较高的实用价值。

参考文献

[1]杨海钢,孙嘉斌,王慰.FPGA器件设计技术发展综述[J].电子与信息学报,2010,32(3):714-727.

[2]RUBIN G,OMIELJANOWICZ M,PETROVSKY A.Reconfigurable FPGA-based hardware accelerator for embedded DSP[C].14th International Conference on Mixed Design of Integrated Circuits and Systems,2007:147-151.

[3]POSSA P,SCHAILLIE D,VALDERRAMA C.FPGA-based hardware acceleration:A CPU/accelerator interface exploration[C].Electronics Circuits and Systems(ICECS),2011 18th IEEE International Conference on.IEEE,2011:374-377.

[4]ZARIFI T,MALEK M.FPGA implementation of image processing technique for blood samples characterization[J].Computers&Electrical Engineering,2014,40(5):1750-1757.

[5]温强,胡明明,桑楠.基于彩色线阵CDD的大米色选算法[J].农业机械学报,2008,39(10):105-108.

[6]TOSHIBA.TCD2566BFG[Z].2012.

[7]ALTERA.Cyclone III Device Handbook[Z].2011.

[8]王庆有.CCD应用技术[M].天津:天津大学出版社,2000.

[9]HYNIX.HY57V64820HG[Z].2002.

图像采集与显示 篇5

关键词:FPGA,CameraLink

在靶场光学测量设备中, 其数字图像信号处理主要是由相机与图像传输显示系统组成, 相机作为其核心部件, 需要高帧频, 高精度, 能够实时输出数字图像。一般采用Camera Link接口的相机在实际应用中, 由于整个系统均处于恶劣的自然环境中, 经常转场运输颠簸, 会导致整个系统的损坏, 在实际使用时, 无法甄别是相机问题还是传输显示系统原因造成的, 由于相机昂贵, 无法备份, 常需要一套简单的设备来判断相机是否损坏。本文设计了一种以FPGA为核心, 对数字图像进行采集, 并转换成VGA格式的数据, 可方便的实时显示, 用于判断相机是否出现问题。当整个测量系统出现问题时, 接入设计的模块后, 能够显示出正常图像, 表示相机没有问题;不能够显示正常图像时, 则代表相机出现问题。

1 系统整体介绍

整个模块系统组成包括:Camera link接口Camera link解码电路, 电源, FPGA芯片 (EP1C12Q24017) 及其配置芯片 (EPCS4) , 晶振, 编码电路, 显示电路等。其中FPGA主要是实现以下三个功能: (1) 采集传感器生成的图像, 并进行相应的格式转换; (2) 对图像数据进行缓存; (3) 将图像数据进行处理, 并进行实时显示控制, 如图1所示。

2 系统各模块介绍

2.1 Camera Link接口简介及其联接方式

Camera Link协议是高速数字相机的串口数据和连接标准, 用于连接数字相机与数字采集卡, 此协议主要规范了相机控制信号与视频信号的传输, 使用低压差分信号传输。在Camera Link协议中, 共有26根线, 其中有4条地线, 4对用于并行传输相机控制的差分信号线, 2对用于相机与采集卡之间串行通信的差分信号线, 5对差分信号线用于传输视频数据信号, 由28位数据信号和1个时钟信号按7比1的比例转行成而成。4位视频控制信号和24位图像数据信号构成视频数据信号。4种控制信号分别为FVAL, LVAL, DVAL, CLOCK。FVAL:帧同步信号, 当为高时, 表示相机输出一帧有效;LVAL:行同步信号, 为高时, 表示相机输出的行数据有效;DVAL:数据有效信号, 用于判断信号可用性;CLOCK:像素时钟信号, 时钟信号一直处于有效的状态。

CC1, CC2, CC3, CC4这4对LVDS线缆可以实现对相机的控制。CC1是外部同步信号, 下降沿到来时, 读取数据;当CC2为低电平时, 像素重置;当CC3为高电平时有效, 低电平翻转, CC4为保留信号, 没有定义。

相机与图像采集卡之间的异步串行通信用2对LVDS线缆实现。这两个串行信号分别是Ser TFG, Ser TC;Ser TFG:相机串行输出端至图像采集卡串行输入端, Ser TC:图像采集卡串行输出端至相机串行输出端。由1位起始位、8位数据位、1位停止位构成通信格式。

Cameralink解码电路将相机输出的LVDS电平标准串行信号转换为FPGA可以识别的TTL信号, 编码电路将FPGA输出的并行信号转换为VGA图像。RS422接口主要接收相机上的其他控制信号, 比如相机焦距的调整, 曝光量的选择, 镜头盖开启的信号等。通过电平转换芯片转换成FPGA可识别的差分信号。

camera link数字图像通过NI半导体公司的ds90cr285完成TTL电平到LVDS电平的转换, 利用DS90LV047以及DS90LV048完成对相机控制信号的转换, 利用DS90LV019完成对相机外触发信号的电平转换。

2.2 配置电路

配置电路又称加载或下载, 是对FPGA的内容进行编程的一个过程。FPGA共提供了6中配置模式, 由模式选择引脚MSEL决定。本文使用JTAG模式, 通过IEEE的标准1194.1引脚实现配置。JATG接口是一个工业界的标准接口, 主要用于芯片测试等功能。JATG配置方式比其他任何一种配置方式的优先级都高。在JATG下载模式下, 采用主动串行模式其配置芯片为EPCS4, EPCS4具有系统可编程 (ISP) 、Flash存储访问接口、节省空间的小外形集成电路封装等特点, 是一种低成本, 大容量, 灵活性很强的带电可擦可编程存储器。

2.3 时钟电路

电路板中提供频率基准的元器件可分为有源晶振和无源晶振两类, 无源晶振内部需要振荡器, 起振电路决定晶振的信号电压, 但无源晶振通常信号质量和精度精度较差, 同时需要精确配备电阻、电感或者电容, 如需更换晶振同时要更换外围电阻或者电容的大小;有源晶振不需要芯片内部有震荡器, 信号质量也较无源晶振好。本系统采用的是40MHz的有源晶振作为FPGA芯片的时钟输入。

2.4 显示电路

显示电路主要用于输出VGA显示器所需要的RGB数据信号和控制信号, 根据输入时钟, 显示控制器可以产生VGA所需要的控制信号, 包括场同步、行同步和复合消隐信号等。

FPGA输出8个信号, 其中行同步HS和场同步VS送入VGA接口, 剩余信号介入转换芯片。其余6个信号分别为:VGA R[0.9], VGA G[0.9], VGA B[0.9], VGA CLOCK, VGA BLANK, VGA SYNC.其中VGA CLOCK为时钟信号, VGA BLANK为复合消隐控制信号, VGA SYNC.为复合同步信号。R、G、B是三基色信号。产生图像程序的主要过程是:系统时钟经过分频后得到VGA的时钟信号, 根据行计数和场计数产生相应的RGB颜色信息和同步信号 (行同步和场同步) 。

3 软件设计及仿真

软件功能主要是在FPGA内部实现对多路数据进行统一编码及解码, 由于通道中传输的信号种类较多, 各种数据流的所占带宽不同、实时性要求也不一样, 因此在FPGA内部引入了时分复用, 利用不同的时间片传输不同额数据流, 如图2。

FIFO:先入先出对垒, 是一种按序执行的方法, 先进入的指令先完成退出, 之后才执行第二条指令。当处理器在某段时间内无法完成程序时, 指令就会被安排在FIFO队列中。基于FIFO的队列结构, 可能会出现FIFO数据溢出的情况, 当FIFO中满时会出现上溢, 当FIFO出现空时, 有时就会出现下溢。

考虑相机输出时钟有可能受传输Camera Link输出线路或者供电等其他因素的影响, 致使像素时钟相位发生不同程度变化, 因此系统中采用双端口ram对图像进行缓冲, 为了使得图像延迟最小以及尽可能复原图像原始时序关系, 设计如下时序。根据图像输出场信号, 产生双端口ram的读写使能信号, 读写时钟和读写地址信号主要信号关系见图3。

从图3可知, 根据图像输出的FRAME信号, 产生双端口ram的读写使能信号, 即Rd_en和We_en信号, 时序中通过控制T1和T2两个时间参数达到调整读写缓冲时序的目的。

根据上述原理, 该模块经过Moderlsim仿真后的结果如图4所示, 其中wren为写使能时钟, data为输入数据流, wraddress为写入地址, rdaddress为读出地址, wrclock为写入时钟, rdclock为读出时钟, rden为读使能信号, q为输出数据流, 图4中可以看到看到图像数据memory缓存形成五行数据memory0、memory1、memory2、memory3、memory4, 在读写地址信号和时钟共同作用下发生的变化。

4 结束语

经过仿真实验表明, 该硬件模块设计能够实现对Camera Link图像的采集与显示。模块编程灵活, 体积小, 重量轻, 价格便宜, 能方便的用于判断相机是否出现问题。在数字图像的高速处理方面以FPGA为核心, 能够完成对高速数据流的采集与缓存, 充分发挥了FPGA功耗低, 开发周期短, 处理高速信号的优势。在诊断相机是否出现问题方面, 具有很强的实际应用价值。

参考文献

[1]Camera Link Specification V1.1.January 2004:5-10.

[2]任文平, 梁竹关, 李鹏等.EDA技术与FPGA工程实例开发[M].北京:机械工业出版社, 2013-09-01.

图像采集与显示 篇6

关键词:FPGA,NIOSII,图像采集,VGA

随着汽车工业的发展,汽车安全性技术的研究已由被动式安全技术发展到主动式安全技术,“汽车自动防撞系统”正是当前主动式安全技术的研究热点。

作为汽车自动防撞系统的前端图像采集模块,需对采集到的图像数据进行实时处理,其特点是数据量大,实时性要求高。嵌入式技术的发展为解决上述难题提供了重要的技术支持。目前,嵌入式数字图像处理技术主要有基于专用芯片、基于DSP和基于FPGA 3种处理方式[1]。基于专用芯征方式的灵活性和系统可更改性差,不适合前期未成熟产品的开发工作。基于DSP的方式在吞吐量,运行速度,系统结构的可重配性,功能升级等方面存在约束,也不适合用在前端图像采集系统中。基于FPGA的方式除了FPGA芯片本身的灵活性外,还有以下几点优势:

(1)FPGA单片逻辑门数越来越多,内嵌功能越来越强,体积越来越小;

(2)FPGA有完整的多平台设计环境,还可以利用第三方的综合、仿真工具;

(3)QuartusⅡ的设计方法十分灵活,支持多种编辑方式,具备LPM模块,可调用SOPC Builder完成Nios系统的配置、生成,还提供了Nios系统的软件开发环境;

(4)可进行静态重复编程和动态在系统重配;

(5)可在FPGA内部生成外围器件连接模块,简化外围器件的电路和功能,提高电路的稳定性[2,3]。

1 系统总体方案

系统采用Altera公司的CycloneII系列FPGA(EP2C20Q240C8)作为主控制器,该芯片具有18 752个LE,240 kB的内部RAM容量,26个内嵌乘法器单元,4个模拟锁相环等[4],广泛应用于汽车电子、消费电子、音/视频处理、通信以及测试测量等终端产品市场。系统还包括:32MB SDRAM,4MB NOR FLASH,一路调试用串口,视频AD+DA,以及40芯扩展DSP接口等,硬件结构如图1所示。

系统通过CCD摄像头获取外界图像信号,经视频AD芯片转换成数字信号后输出至FPGA中。在FPGA中构建了AD接口模块、去隔行模块、VGA显示模块和NIOS II处理器模块,其中AD接口模块完成从接收到的图像数据中提取有效的亮度信号和时序控制信息,供后续模块使用;去隔行模块完成将摄像头输出的隔行图像数据按照一定的算法转换成逐行输出的图像格式;VGA显示模块完成标准VGA(640×480,60 Hz)时序信号输出以及与视频DA芯片的连接;系统中各模块的控制及外部芯片的初始化均由NIOS处理器模块实现。

2 各模块的具体实现

2.1 视频AD接口模块

本系统使用的视频解码芯片为菲利普公司的SAA7113,它是1种集成了解码、采样和量化于一体,并且支持隔行扫描、多种数据输出格式的视频解码器,内置了A/D转换电路、预处理电路及I2C(inter-integrated circuit)接口[5],通过I2C接口对内部寄存器进行配置,即可实现对芯片内部电路的控制。

SAA7113在工作之前需通过I2C总线对其内部寄存器进行配置,系统中采用NIOS处理器来模拟I2C时序。首先通过SOPC Builder为该NIOS处理器添加2个双向的IO口(分别用来模拟SDA和SCL),然后利用NIOS II IDE中自带的底层驱动来对它们进行操作,比如需要通过SDA引脚向外部写'1',可以采用如下的语句[6]:

IOWR_ALTERA_AVALON_PIO_DIRECTION(SDA_BASE, 0x0);

IOWR_ALTERA_AVALON_PIO_DATA(SDA_BASE, 0x1);

在上述函数中,SDA_BASE为对应于SDA引脚的寄存器,第1条语句的作用是将SDA引脚设置为输出模式,第2条语句的作用是将SDA引脚置为“1”。如果要从SDA引脚读入数据,必须首先将SDA引脚设置为输入模式。

本系统中,CCD摄像机输出的是NTSC信号,因此,在配置SAA7113时应按照NTSC制式进行配置,否则可能工作不正常。表1为本系统中SAA7113的寄存器配置值。

SAA7113配置完成后,输出位宽为8 bit的YUV4:2:2格式的视频信号,前8位输出亮度信号,后8位输出色度信号。当输入视频信号为NTSC制式时,SAA7113输出30帧/s图像,每帧图像按照先奇行后偶行的顺序传输。SAA7113的时序信息由4 B组成,即“FF 00 00 *”。其中*为时序控制字,具体含义如表2所示。

该控制字是判断行、场同步信号和有效数据的依据,必须准确检测出这个控制字,方法是:在时钟的上升沿对SAA7113输出的VPO数据进行采样,当连续采到的3个B为“FF 00 00”时,即可判断下一个B为时序控制字,然后根据下一个采到的数据判断出当前帧的状态,并输出给后续模块。后续模块根据各控制位的电平及跳变情况确定后面各控制信号的转换。

2.2 去隔行操作

SAA7113是按照先奇场后偶场的顺序输出的,即隔行输出,而本系统采用VGA显示,因此需要进行去隔行操作。目前普遍采用的去隔行算法主要有组合帧法、帧内行平均法、修正沿自适应法和运动补偿法4种算法。组合帧法是将隔行扫描的奇偶场信号直接拼接,以2倍场频输出。这种方法未对数据进行复杂的处理,容易实现,对静态图像处理较好;帧内平均法是对同一场的上下2行求平均值的方法来计算插值,达到去隔行的目的,这种去隔行算法实现比较方便,但对画面清晰度损伤较大,会导致锯齿状边沿的产生;修正沿自适应法利用沿的方向相关性对图像进行去隔行,这种算法可以消除图像的锯齿状沿,但在画面细节的显示方面略有不足;运动补偿滤波算法去隔行效果较好,但算法复杂。

本系统主要用于采集高速运动的画面,后期还要完成各种图像的识别,因此对算法的要求是:去隔行后的图像不应出现虚影和错位,且物体的边缘不出现锯齿状沿。综合分析各算法的优缺点和实现的难易程度,决定采用修正沿自适应法来进行去隔行处理。

修正沿自适应算法的思想是利用相邻行像素点的方向相关性来计算插值。图2给出了利用像素点之间的方向性来计算像素点插值的示意图:

图中:Yi =|Y(k-1,n-2+i)-Y(k+1,n+2-i)|(i= 0,1,2,3,4),分别表示以Y(k,n)为中点的对角线上像素点上的亮度之差。其中亮度之差最小的对角线表示具有最强的方向性。当插值最小的对角线确定后,插值就在该对角线方向上进行。即如果Yi最小,则:

Y(k,n)=(|Y(k-1,n-2+i)+Y(k+1,n+2-i)|)/2

为实现上述算法,按照图3所示的框图完成了相应代码的编写。

由于从隔行向逐行转变后,数据量提高了1倍,相应的时钟频率也需要提高,首先通过1个FIFO将原始隔行数据的速率从13.5 M/s提升至25 M/s,然后将该数据送至FIFO1,当FIFO1完成1行数据的存储后,内部逻辑即开始从FIFO1中读取数据送至FIFO2,同时从FIFO2中读取上1行的第1个数据,一路直接通过二选一MUX输出,一路与FIFO1中的第1个数据一同送至插值运算模块,插值运算模块即可算出第1个插值,然后存于FIFO3中待输出。当FIFO2中的数据输出完毕后,FIFO3中也已存满1行经插值运算得到的值,此时二选一MUX选择FIFO3作为输出,如此往复,即可完成逐行数据输出。

2.3 VGA显示

本系统采用高速、高精度视频DAC芯片CS7123完成图像数据的数模转换。该芯片内部包括3路10位电流导引(current steering)结构的DAC,最大采样速度240 MHz,是1个3路高速数模转换器的单片集成电路。对于VGA显示器而言,当输入的R、G、B信号相等时显示图像为灰度图像,因此,本系统将处理后的亮度数字信号同时输出给CS7123的R、G和B接口,即可在显示器上显示出灰度图像。

标准的VGA时序如图4和图5所示[6]。图中Ta时间段为同步脉冲,Tb、Tc、Te和Tf为消隐期,Td为信号有效期,时序驱动在VGA图像显示设计中尤为重要,稍有偏差,则显示不正常,甚至会损坏显示器,因此应严格按照VGA的扫描时序进地设计。

3 实验结果与分析

图6(a)为系统的输入图像,(b)为去隔行处理后的输出图像。对比可知,采用修正沿自适应算法产生的插值与实际图像数据拟合较好,处理后图像边缘清晰,无锯齿状沿,无错位得。在进行插值运算之前,需预存2行图像数据,待处理完后才会连续输出,因此输出图像滞后于输入图像2行像素点对应的时间(约0.14 ms),可以满足实时性显示要示,插值后图像素点个数由640×240提升为640×480,图像帧频提高了1倍,显著降低了画面的抖动。

4 结束语

本系统集成了前端采集,中间处理和后续显示功能模块,充分利用了FPGA的逻辑资源和NIOSII处理器的强大功能,较好地实现了预期目标。和同类系统相比,具有开发时间短、程序可移植性强和成本低等优势。该系统作为汽车自动防撞系统的一部分,在图像采集及预处理方面已经取得较好的效果,后期将进一步研究基于FPGA内部逻辑结构的数字图像处理实用算法。

参考文献

[1]潘松,黄继业,王国栋.现代DSP技术[M].西安:西安电子科技大学出版社,2003

[2]闻见明.FPGA芯片在视频图像实时处理中的应用[J].警察技术,1994(3):10-11

[3]张志刚.FPGA与SOPC设计教程—DE2实践[M].西安:西安电子科技大学出版社,2007

[4]孔祥刚,诸静,阳涛.SAA7113 H在视频采集接口设计中的应用[J].电子技术,2003(12):26-28

[5]潘松,黄继业,曾毓.SOPC技术实用教程[M].北京:清华大学出版社,2004

图像采集与显示 篇7

视频信息采集为视频图像处理、传输、显示等提供提供原始的数字图像数据,视频采集系统的性能是影响视频图像系统性能的关键因素之一[1]。随着人们对视频图像质量的要求越来越高,对视频采集系统的性能要求也将越来越高[2]。目前视频采集系统常用的处理器包括通用处理器、DSP和FPGA。尽管通用处理器能够处理许多任务,但是它们通常缺少执行复杂数据处理任务所需要的带宽,常因速度不够快而不能满足设计目标[3];DSP虽然内部利用专用硬件实现数字信号处理中的常用算法,运算速度很快,但其采用单指令执行系统,并且仅对某些固定的运算可以优化,因此灵活性不够;FPGA作为当今主流的大规模可编程集成电路,采用硬连线逻辑实现数据处理和运算,具有集成度高、速度快、性能稳定、开发周期短、便于改进升级等一系列优点,还能实现视频采集、图像显示的外围逻辑控制,在视频采集和图像处理方面具有独特优势。使用FPGA实现该类任务已成为很好的选择[4]。

本文采用FPGA作为视频图像实时采集和显示系统的核心控制器。首先对视频图像采集显示系统的构成、工作原理及技术现状做了简单介绍,然后叙述了各功能模块和接口电路的设计方法和过程,重点介绍了FPGA应用系统设计中一些难点问题的解决办法。

1 系统的总体结构及器件选择

系统硬件框图如图1所示。其中,CMOS sensor为图像传感器,型号为MT9M111,用于实时接收视频信号;LCD的型号为TD036THEA3,用于实时显示视频图像;SDRAM采用ISSI公司的IS42S16400B,用于缓存视频数据;FPGA采用Cyclone II EP2C35F672C8,作为整个系统的控制核心。

MT9M111是美光公司推出的集成CMOS传感器和图形处理器的SOC产品;130万像素分辨率(1280H×1024V),可以支持SXGA格式输出;嵌入的可编程图像处理器提供的功能包括色彩恢复和修补、自动曝光、白平衡、镜头阴影修正、增加清晰度、可编程灰度修正、黑暗电平失调修正、闪烁避免、连续调整滤光尺寸、平滑的数字变焦、快速自动曝光模式和不工作时缺陷修正等,可以通过两线串行接口对其进行配置。

EP2C35F672C8为Altera公司Cyclone II系列FPGA芯片,在性能、功耗和性价比方面超越了第一代Cyclone系列。可以内嵌各种IP核,实现强大的控制处理功能;内嵌M4K存储器块,用于实现单端口RAM、双端口RAM、ROM以及同步FIFO和异步FIFO;除了支持LVTTL、LVCMOS、SSTL等标准的单端I/O外,还支持LVDS、RSDS、mini-LVDS、LVPECL等标准的差分信号;支持四个可编程锁相环(PLL)和最多16个全局时钟线,还有对时钟管理和频率合成的能力。价格也比较适中,所以很适合作为大批量产品的解决方案。是视频处理低成本解决方案的理想选择。

IS42S16400B是ISSI公司的SDRAM产品。包含67,108,864bits,可配置为具有同步接口的四块DRAM。该SDRAM包括自动刷新模式、省电模式和掉电模式。所有信号在时钟信号上升沿保存。所有输入和输出与LVTTL兼容。内部块之间交错隐藏预充电时间,支持同步猝发数据传输方式。

TD036THEA3为3.6寸有源矩阵彩色TFT液晶显示模块,采用低温多晶矽硅TFT技术,分辨率为320×240,数据格式为RGB565,具体显示为QVGA模式,输出像素时钟为19.28MHz。

2 系统的FPGA设计

系统的FPGA设计模块图如图2所示。I2C controler模块用于通过I2C总线协议控制MT9M111的寄存器配置,使摄像头按照配置的模式工作,输出行场同步信号、像素时钟、图像数据。Image Capture模块检测行场同步信号、生成写使能信号,在像素时钟的上升沿将视频数据采集到寄存器中。RAW2RGB模块将采集的数据转换成RGB信号,SDRAM controler模块用于控制数据的缓冲,将数据写入SDRAM。LCM Controller模块产生LCD控制信号,将SDRAM中的数据送到LCD上,这样就完成了视频图像的实时采集与显示。

设计中采用Verilog HDL进行编程,可以在抽象层对电路进行描述,而不必考虑特定的制造工艺,通过使用Altera公司Quartus II软件的逻辑综合工具能够将设计自动转换为任意一种制造工艺版图。

2.1 I2C controler模块设计

I2C controller模块是通过编写Verilog代码自定义逻辑实现的。模块图如图3所示。

在该模块中,由于需要把I2C总线接口的SCL和SDA信号在系统时钟下同步,因此采用系统时钟i CLK对SCL和SDA信号进行三次缓冲,得到其上升沿和下降沿脉冲信号,便于状态机处理;状态机对I2C的读/写寄存器操作进行说明,状态包括器件地址部分、寄存器地址部分和数据部分。

2.2 图像数据采集模块设计

在程序设计过程中,首先需要检测视频图像中帧标志的有效起始和结束,在判断到帧标志有效后,需要继续检测视频图像中行的有效起始和结束标志,在判断到行标志有效后,在像素时钟上升沿把图像的有效像素值存入存储器;同时,在帧标志的上升沿后,列计数器x_cnt清0,在行标志有效期间,对列计数器进行计数,记满1280为一行数据,行计数器加1;最后,输出数据的有效使能信号,供下一级图像格式转换模块使用。

部分源代码如下:

2.3 图像格式转换模块设计

由于在MT9M111图像传感器的配置中,采用原始的Bayer输出格式,使得其每次只产生一种颜色分量的响应值,而FPGA后续设计需要4:4:4的RGB颜色,因此需要对颜色分量进行处理。

本模块设计需要大量的移位寄存器,如果全部采用FPGA内部的触发器串联构成的话,需要2560个10bit的触发器,会导致LE中的触发器资源紧张,可能会出现最终逻辑资源不够用的情况。在Altera FPGA中,内嵌的M512和M4K专用IP存储模块,可以被用来支持移位寄存器模式,不仅可以节省触发器资源,同时也减少了布线资源。通过调用Altera的IP核生成器产生移位寄存器,数据宽度为10bits,抽头数(Taps)为2,如图4所示。

2.4 图像数据缓存控制模块设计

由于MT9M111工作时钟为25MHZ,因此图像数据的接收、格式转换是在25MHZ时钟频率下进行的。而FPGA板上输入时钟频率为50MHZ,因此会产生异步时钟域问题。设计中采用异步FIFO进行数据缓冲。同理,由于液晶屏输出像素时钟频率为19.28MHZ,SDRAM控制器使用的时钟为输入时钟经过FPGA内部的PLL两倍频后的100MHZ,因此在SDRAM控制器与液晶屏显示控制模块之间也通过异步FIFO进行数据缓冲。

为了满足视频图像实时采集和显示的需要,视频数据的接收和显示需同时进行。而SDRAM作为单端口器件,不能同时进行数据的写入和读出。要实现同时读写,必须采用乒乓操作来完成,原理如图5所示。具体方法是通过设计SDRAM控制器接口和FIFO缓冲接口,轮流对一片SDRAM中的两块BANK进行操作,当传感器发送数据至SDRAM时,写入BANK0,此时显示控制可以从BANK1取数据,并且传感器发送一帧数据的时间与显示器取出一帧数据的时间相同;当传感器继续发送数据时,写入BANK1,同时显示控制可以从BANK0取数据,如此不断循环。这样就可以有效地利用和节省存储器资源,并实现视频图像的实时采集和显示。

2.5 显示控制模块设计

显示控制模块LCM Controller用于按照TD036THEA3液晶屏的时序要求,产生输出帧和行控制信号,通过读取FIFO中的数据,输出RGB数据,完成液晶屏的显示控制。其时钟频率为19.28MHZ,是通过对系统时钟分频得到的。

部分实现代码如下:

3 系统的测试

通过编写测试代码,采用Modelsim仿真工具对整个FPGA中的各个模块进行仿真测试。图6为Image capture模块的仿真测试时序图,其他模块的仿真测试方法类似,不再赘述。

Image capture模块是系统中的关键部分,它根据MT9M111图像传感器输入的行有效信号、帧有效信号,采集像素数据,提供给后续模块进行格式转换、显示输出等。

如图中所示,输入时钟频率为25MHZ,在系统复位为高的情况下,当帧有效标志和行有效标志均为高时,对输入数据进行采样,同时x_cont计数器不断加一;当一行结束的时候,y_cont计数器加1,完成有效图像数据的采样。

通过对整个系统的实际测试,在50MHZ频率下,达到的指标如下:实时性:25帧/秒;最大功耗:3.5W。连续采集和显示视频图像的质量和稳定性也很高。

4 结论

本文介绍了一种采用FPGA作为核心控制器同时实现外围部件接口控制逻辑的视频图像实时采集和显示系统实例。叙述了各功能模块和接口电路的设计方法、测试方法。给出了异步时钟处理、调用IP核生成移位寄存器、SDRAM存储器乒乓式操作等FPGA应用设计中的一些难点问题的处理方法。通过仿真测试和实际验证,该系统在快速性、稳定性及体积、功耗、成本等方面均具有较优越的性能。表明,利用FPGA进行视频图像信息采集和显示系统设计,是降低产品体积、功耗,提高快速性、稳定性的有效途径。

参考文献

[1]肖文才,樊丰.视频实时采集系统的FPGA设计[J].中国有线电视,2006(2l):2104-2108.

[2]韩相军,关永,王万森.嵌入式视频采集系统的设计与实现[J].微计算机信息,2006,22(1-2):26-28.

[3]Chris Roven.IP重用和嵌入式SOC开发的逻辑方法[J].电子产品世界,2005(8):115-116.

[4]陈朗,王瑞.MPEG-4系统中基于FPGA实现数据采集及预处理[J].微计算机信息,2005,2l(9-3):109-111.

[5]科夫曼.基于Verilog语言的实用FPGA设计[M].北京:科学出版社,2000.

[6]孙恺,程世恒.NiosⅡ系统开发设计与应用实例[M].北京:北京航空航天大学出版社,2007.

[7]高韬,赵建涛.视频压缩理论及其技术发展.电子技术应用[J],2007(11):3-6.

上一篇:专业表达论文下一篇:垃圾焚烧炉渣