APP下载

基于FPGA的Camera Link输出编码设计

2015-05-10王建立吕耀文曹景太

液晶与显示 2015年2期
关键词:时序时钟摄像机

刘 彪,王建立,吕耀文,2,曹景太

(1.中国科学院 长春光学精密机械与物理研究所,吉林 长春 130033;2.中国科学院大学,北京 100049)

1 引 言

目前,数字摄像机向着高分辨率、高帧频的方向发展,带来了数据传输速度的大幅度提升。Camera Link通过不同的配置方式可以适应不同摄像机对于传输带宽的要求,因此应用极为广泛[1-3]。Camera Link在传输物理层上采用低电压差分信号(Low Voltage Differential Signal)电平标准,有效防止了电磁干扰和信号线之间的交叉串扰(Cross Talk)[4]。同时它的数据线多路技术,使线缆使用量大大缩减[5]。根据文献[6],需要使用编解码芯片实现Camera Link传输协议,文献[7-8]使用DS90CR287将28路TTL信号转换成4路LVDS信号。根据DS90CR287的功能可知,如果要实现FULL模式的编码输出则需要三块DS90CR287芯片,这样增加了电路板的走线、焊盘和管脚,不利于摄像机的集成化。现场可编程逻辑阵列(Field Programmable Gate Array)由于其灵活的可配置性能,在摄像机硬件电路设计和图像采集卡中得到了广泛的应用[9-10]。从查阅的文献来看,目前还没有关于详细介绍使用FPGA实现Camera Link输出编码的文献。因此,本文在Camera Link协议的基础上通过理解Camera Link输出编码芯片DS90CR287的编码功能,选择了Xilinx公司的Virtex4系列中XC4VLX15型号芯片作为核心芯片,采用VHDL硬件描述语言,在FPGA中实现了Camera Link协议的输出编码功能。在降低硬件成本的同时,有效地节省了电路板的面积,有利于摄像机设计的集成化和小型化。

本文首先给出了采用FPGA实现Camera Link输出编码的具体方法;接着通过功能仿真和实物实验验证编码的正确性;最后对全文进行归纳和总结。

2 Camera Link输出编码实现

为了采用FPGA实现Camera Link输出编码的功能。本文将编码过程分为3个步骤:(1)像素数据信号映射成为Camera Link中抽象出来的PORT;(2)对数据信号和同步时钟信号进行Camera Link编码;(3)并串转换,将28路并行信号转换成4路串行信号。图1为Camera Link输出编码框图。下面分别对这3个步骤做重点说明。

图1 Camera Link输出编码框图Fig.1 Diagram of Camera Link output encoding

2.1 像素数据与 Camera LinkPORTA\B\C的映射

根据Camera Link编码输出协议,本文重点阐述Base型Camera Link的8-bit像素点的编码方式,FULL模式的拓展是简单的。表1是Camera Link协议中抽象出来的 Port A/B/C与像素数据对应的映射关系。对于其他比特位像素点如10-bit,12-bit等根据Camera Link协议进行类比映射。

表1 Base型8-bit字节分配Tab.1 Bit assignments for BASE configuration

对应上述映射关系的VHDL代码如下所示:

定义:

其中,cl_ports信号对应于portA\B\C,chan_0,chan_1,chan_2为8-bit像素数据信号。

图2 DS90CR287信号时序图Fig.2 Timing diagram of DS90CR287data

2.2 数据信号和同步时钟信号的编码

三个8bit PORT A\B\C和FVAL、LVAL、DVAL以及Spare信号,一起构成了Camera Link的28路数据信号。对这28路信号按照DS90CR287的输入定义映射位序进行编码即实现了Camera Link的输出数据编码功能。Camera Link为了便于传输数据在采集端的正确性,在对数据编码的同时也对采样时钟进行了编码。图为DS90CR287数据信号和同步时钟信号的编码输出时序图[11]。28路数据信号与输出时序图中TxIN信号的映射如表2所示。

相应的VHDL代码如下所示:

定义:

type t_cl_bits is array(4downto 0)of unsigned(6downto 0);

signal cl_bits: t_cl_bits:= (others=>(others=>'0'));

比特分配:

其中:cl_bits是1×1维数组,cl_bits(i)是位宽为7,最左边一位是 MSB的信号。Cl_bits(4)为数据同步时钟信号,即如图1中的TxCLK OUT信号,根据图2的时序图,确定cl_bits(4)的值为“1100011”。

表2 Camera Link比特分配Tab.2 Camera Link bit assignment

2.3 并串转换

28路数据信号和同步时钟信号编码完成后,需要对这35路数据进行7∶1并串转换,以最终完成Camera Link协议的4路LVDS数据编码输出和1路LVDS时钟编码输出。具体来说就是将已经编码的cl_bits(i)(其中i取0,1,2,3,4)信号进行7∶1数据并串转换。数据并串转换分为两个步骤:第一步,将cl_bits(i)中的并行7路数据转换成并行4路数据完成数据的7∶4并串转换。第二步,采用Virtex4FPGA内部输出功能模块OSERDES[12]实现数据的4∶1并串转换。并串转换的设计框图如图3所示。

图3 并串转换框图Fig.3 Block diagram of parallel-to-serial

具体实现如下:

(1)使用FIFO实现7∶4数据转换。该过程的重点是对写和读的控制信号的实现。对于每个cl_bits(i)(其中i取0,1,2,3,4),分别建立了一个28×1bit的分布式FIFO,设像素时钟为tw对应的频率为fw,即FIFO写入频率为fw,为实现7∶4的数据转换,则读出频率fr=7/4fw。

图4所示为FIFO的读写示意图。图中waddr为写节拍指示信号,使用VHDL语言将其定义为2位的unsigned信号,初始值为3,raddr为读节拍指示信号,定义为3位的unsigned信号,初始值为6;wclk为写时钟,比如为40MHz,则读时钟rclk应该是70MHz。

图4 FIFO读写示意图Fig.4 FIFO write and read diagram

写进程。第一个写时钟(图中1stwclk),cl_bits(i)的MSB装入到FIFO的27位,依次至cl_bits(i)的LSB装入到FIFO的21位,waddr减1。第二个写时钟(2ndwclk),cl_bits(i)的 MSB装入到FIFO的20地址,依次到cl_bits(i)的LSB装入到FIFO的14位,waddr减1。以此类推,直到第四个写时钟,waddr为0,此时将waddr设置为3。重复以上过程。

读进程。定义一个4位的信号data_4b(3 downto 0),用于读取FIFO中的数据。第一个读时钟(图中1strclk),将FIFO地址为27~24的数据分别装入到data_4b的 MSB~LSB,raddr减1。第二个读时钟(2ndrclk),将FIFO地址为23~20的数据分别装入到data_4b的 MSB~LSB,raddr减1。以此类推,第七个时钟(7thrclk),将FIFO地址为3~0的数据装入到data_4b的MSB~LSB,raddr为0,此时将raddr设置为6。重复以上过程。

(2)设计中使用了Xilinx公司的Virtex-4系列芯片XC4VLX15作为核心芯片,使用了OSERDES原语[13]例化功能模块OSERDES。根据设计方案,将数据率参数设置为DDR,TRISTATE_WIDTH 和DATA_WIDTH 参数设置为4,SERDES_MODE参数设置为“MASTER”。实现数据4∶1串并转换要求。

3 仿真与实验

本实验以Xilinx公司的ISE14.1作为编译调试软件,使用 ModelSim SE 10.0a作为仿真平台。本实验使用了Camera Link采集卡作为接收端,上位机端使用了DalsaCamExpert软件作为人机交互端。为验证Camera Link编码的正确性,实验分为两个部分:(1)Camera Link编码的时序仿真;(2)上位机端图像数据的Camera Link编码接收。

3.1 仿真

Testbench文件中,时钟clk_sys为像素时钟,设置为40MHz;clk_tx_l为FIFO读出时钟,根据所设置的像素时钟,该时钟应该为70MHz,同时它也是OSERDES的CLKDIV;clk_tx_h是2.3步骤(2)中OSERDES的CLK,为140MHz。将chan_0,chan_1,chan_2 设 置 为 全 1,chan_0< =“11111111”;chan_1< =“11111111”;chan_2<=“11111111”。LVAL和DVAL有效时间(值为逻辑1)为20个像素时钟,每帧为2行有效数据,行消影时间设置为2个像素时钟。仿真结果如图5所示。

图5中,竖直虚线之间是1帧数据。包含两行数据。为验证编码的正确性,只需验证时钟信号cl_bits(4)编码的正确性就可以了,其他4路数据编码与其完全一样。图中cl_bits(4)编码后对应信号cl_xclk,时序如图5中放大图所示,频率为40MHz,高低电平比为4∶3,时序图完全符合图2中的时钟信号TxCLK OUT,仿真结果验证了编码的正确性。

3.2 实际实验

图6是实验平台,采用的FPGA芯片是Xilinx公司的Virtex-4系列XC4VLX15芯片,图像传感器采用了CMOSIS公司的CMV2000。实验根据BASE型Camera Link编码方法,通过拓展实现FULL模式下的图像编码。实验板将图像数据经过相应的处理和Camera Link编码,通过Camera Link传输线,将编码数据传递到上位机的Camera Link采集卡,经采集卡解码,由DalsaCamExpert软件显示图像相应的信息。

图7是上位机DalsaCamExpert软件显示的采集卡解码的条纹图像。条纹图像为实验者设定。具体参数设定为:设置了8通道的数据,即chan_0至chan_7,将其像素点的值对应设置为255,223,191,159,127,95,63,31,构成一定的梯度,像素时钟为40MHz;设置LVAL有效时间为256个像素时钟,由设置的8个通道,可知图像每行有2 048个像素点;设置每帧包含1024行数据。根据所设置的LVAL和FVAL信号可以知道图像大小为2048×1024。

通过观察分析图7中的条纹图像,获得的图像与实验设置的图像参数完全符合,说明本文设计的编码方式是可行的。

图6 实验平台Fig.6 Experiment flatform

图7 条纹采集图像Fig.7 Acquired image of stripe

4 结 论

为了实现设计Camera Link接口摄像机的集成化和小型化,本文介绍了一种采用Xilinx Virtex4系列FPGA完成Camera Link协议编码输出的方法。首先介绍了Camera Link接口标准以及专门输出编码芯片DS90CR287的时序映射图。其次,重点分析了在FPGA中用VHDL语言实现Base模式输出编码的具体步骤和实现方法。最后,通过仿真和实际图像采集实验验证了本文编码方法的正确性。采用FPGA实现Cam-era Link输出编码功能,能够减少硬件设计成本和硬件电路设计复杂度,便于设计摄像机的小型化和轻量化,在实际中具有很高的应用价值,已在工程上得到了应用。

[1] 刘仲宇,张涛,李嘉全,等.超小型无人机相机系统关键技术研究 [J].光电工程,2013,40(4):80-85.Liu Z Y ,Zhang T,Li J Q,et al.Key Technology of camera system for ultra-small UAV [J].Opto-Electronic Engineering,2013,40(4):80-85.(in Chinese)

[2] 辛光泽,侯宏录,李飞,等.基于Camera Link接口的高速视频图像采集系统 [J].国外电子测量技术,2014,33(3):85-88.Xin G Z,Hou H L,Li F,et al.Image collection system based on Camera Link interface[J].Foreign Electronic Measurement Technology,2014,33(3):85-88.(in Chinese)

[3] 黄德天,刘雪超,吴志勇,等.基于Camera Link的高速图像采集处理系统设计 [J].吉林大学学报:工学版,2013,43(Sup):309-312.Huang D T,Liu X C,Wu Z Y,et al.Design of high-speed image acquisition and processing system based on cameralink [J].Journal of Jilin University:Engineering and Technology Edition,2013,43(Sup):309-312.(in Chinese)

[4] LVDS Owner's Manual [M].4th Ed.Texas Instruments,2008:59-75.

[5] 魏明.基于CameraLink接口的CMOS数字相机技术研究[D].长春:长春理工大学,2005:8-17.Wei M.Research on CMOS digital camera based on camera link interface[D].Changchun:Changchun University of Science and Technology,2005:8-17.(in Chinese)

[6] Specification of the Camera Link Interface Standard for Digital Cameras and Frame Grabbers[S].

[7] 张宇,杨世洪.基于CMOS图像传感器的高帧频相机的设计 [J].EIC,2011,18(4):41-44.Zhang Y,Yang S H.Design of high-frame camera based on CMOS image sensor[J].EIC,2011,18(4):41-44.(in Chinese)

[8] 沈鸽,王美娇,嵇晓强.基于CameraLink的视频图像采集与传输系统 [J].微计算机信息,2011,27(8):99-100.Shne G,Wang M J,Ji X Q.The system of video image collection and transmission based On CameraLink[J].Microcomputer Information,2011,27(8):99-100.(inChinese)

[9] 李飞,刘晶红,李刚,等.基于FPGA的数字摄像机输出视频 DVI显示 [J].激光与红外,2011,41(11):1258-1262.Li F,Liu J H,Li G,et al.Displaying digital camera video on DVI monitor based on FPGA [J].LASER &INFRARED,2011,41(11):1258-1262.(in Chinese)

[10] 李勇,刘文怡.一种高速图像数据采集存储系统设计 [J].计算机测量与控制,2013,21(2):535-539.Li Y,Liu W Y.Design of high-speed image and data storage system [J].Computer Measurement & Control,2013,21(2):535-539.(in Chinese)

[11] DS90CR287/DS90CR288A +3.3VRising Edge Data Strobe LVDS 28-Bit Channel Link-85MHZ[R].

[12] Virtex-4FPGA User Guide[R].Xilinx,UG070(V2.6),2008:386-399.

猜你喜欢

时序时钟摄像机
清明
别样的“时钟”
古代的时钟
基于不同建设时序的地铁互联互通方案分析
基于FPGA 的时序信号光纤传输系统
有趣的时钟
摄像机低照成像的前世今生
新安讯士Q6155-E PTZ摄像机
时钟会开“花”
基于模体演化的时序链路预测方法