基于CameraLink的实时显示技术

点赞:5609 浏览:19712 近期更新时间:2024-01-14 作者:网友分享原创网站原创

文章编号:1006-6268(2008)10-0031-05

摘 要 :由于目前基于CameraLink接口的各种相机都不能直接显示,因此本文基于Xilinx公司的Spartan3系列FPGA XC3S1000-6FG456I设计了一套实时显示系统,该系统可以在不通过系统机的情况下,完成对相机CameraLink信号的接收、缓存、读取并显示.系统采用两片SDRAM作为帧缓存,将输入的CameraLink信号转换成帧频为75Hz,分辨率为1,024×768的XGA格式信号,并采用ADV7123JST芯片实现数模转换,将芯片输出的信号送到VGA接口,通过VGA显示器显示出来.设计的系统可以应用于各种基于CameraLink接口的相机输出信号的实时显示.

关 键 词 :CameraLink;FPGA;SDRAM控制器;实时显示

中图分类号:TN141文献标识码:A

Research on the Real-time Display Technology Based on CameraLink

HE Zhong-xiang1,2, YANG Shi-hong1

(1.The Institute of Optics and Electronics, the Chinese Academy of Sciences,

Chengdu 610209, China,2.Graduate School of the Chinese Academy of Sciences,

Beijing 100039,China)

Abstract: All cameras based on the CameraLink interface cannot be displayed directly at present. Therefore, we designed a real-time display system based on the Xilinx Spartan3 FPGA XC3S1000-6FG456I. Our system could receive, store, read and display the CameraLink signal without the system puter. Two SDRAMs were used as frame storage. Input CameraLink signal was converted to XGA signal with 1024×768 pixles/frame at 75 frame/s. The ADV7123JST was used as D/A convertor. Its output signal was tranitted to the VGA interface and displayed on the screen of the VGA monitor. Our system could display the output signal of all cameras based on the CameraLink interface.

Keywords:CameraLink, FPGA, SDRAM controller, real-time display

引言

目前基于CameraLink接口的各种相机都不能直接显示,只能通过专用采集卡连接到系统机上在系统机的屏幕上显示,系统比较庞大,使用不方便;或者通过自行研制的专用采集显示接口显示,通用性比较差.为了实现基于CameraLink接口的CCD相机输出信号的实时显示,就需要设计一套实时显示系统,在不通过系统机的情况下完成对相机信号的接收、缓存、读取并显示.本文设计的实时显示系统通过DS90CR288芯片接收CCD相机输出的CamerLink信号,基于Xilinx公司的Spartan3系列FPGAXC3S1000-6FG456I完成显示控制器的设计,以两片SDRAM作为缓存,最终将输入的相机信号转换成分辨率为1,024×768,帧频为75Hz的标准VGA格式信号,并通过ADV7123JST数模转换芯片接收,将信号送到VGA接口,由VGA显示器显示出来.

1.实时显示系统总体设计

系统设计包含三个主要的模块:输入信号接收模块,数据缓存模块,以及VGA信号产生与输出模块.这三部分都需要通过FPGA的控制才能实现各自的功能,FPGA的控制程序可以通过JTAG下载线下载到Xilinx的PROM XCF04S中,系统上电时由PROM对FPGA进行配置,这样就可以在不通过系统机的情况下完成相机信号的实时显示.系统的总体设计框图如图1所示.

CCD相机输出的信号经由CameraLink线缆连接到MDR26插座上,根据CameraLink接口协议规范,Base型配置需要一片DS90CR288A芯片来接收相机信号,芯片输出28路数据和1路时钟信号,28路数据中包括帧有效信号FVAL,行有效信号LVAL,数据有效信号DVAL以及24路图像数据信号.DS90LV049芯片用来发送相机同步信号等其它控制信号.FPGA在输入的行、场信号都有效时,在输入像素时钟的同步下,接收图像数据,并送到SDRAM中缓存.当SDRAM1中缓存满了一帧图像数据后,开始读取数据,读SDRAM1时写SDRAM2.当SDRAM2中写满一帧图像数据后,控制器对两个SDRAM进行读写切换,读SDRAM2时写SDRAM1.由于读取速度大于写入速度,因此不会丢失数据.读出的RGB信号经过D/A转换后,将数据转换成模拟信号,配合FPGA产生的行、场同步信号可以使其在VGA显示器上显示.外部晶振对FPGA输入27MHz的时钟,在内部经过倍频产生81MHz的主时钟,用来对两片SDRAM进行读写控制和用来产生符合VGA格式的行、场同步信号.

2.CameraLink输入部分设计

CameraLink协议是一个工业高速串口数据和连接标准,它是由摄像头供应商和其它图像采集公司在2000年10月联合推出的,目的是简化图像采集接口,方便高速图像传感器和采集系统的连接.CameraLink硬件结构分为三类:基础结构(Base)、中间结构(Medium)和完全结构(Full).根据CameraLink的硬件结构分析,在系统输入端选用一个MDR26连接器构建CameraLink的Base结构,即可用来接收相机输出的串行数据信号.

对于接收到的LVDS(低摆幅差分信号)串行信号,需要转换成并行数据流,这就需要用到CameraLink接收器. CameraLink接收器接收LVDS数据流并将其解串成CMOS/TTL数据.由于MDR26连接器接收相机信号后将LVDS串行数据流作为系统输入信号,因此本系统中选用美国国家半导体公司的Channel Link芯片DS90CR288作为CameraLink接收器.图2所示为该芯片的工作原理.

从图2可以看出,28bit并行数据经DS90CR287转换为4路LVDS串行数据流,同时在第5组LVDS链路上将时钟信号发送出去.这些数据流经过CameraLink电缆传输,当DS90CR288接收到LVDS数据流后,将其解串恢复成28bit的并行数据输出进行后续处理.

3.SDRAM控制器设计

本设计采用两片MICRON公司的MT48LM32B2型号、容量为128Mb的SDRAM,MT48LM32B2采用86引脚的TSOP封装,工作电压为3.3V,并且采用同步接口方式,与系统时钟同步运行.它含有32位数据总线,4个组(bank),每个组的行地址数是12位,列地址数是8位,每组的32Mb的存储架构是4096行×256列×32bit.它的主要引脚有A0~A11(地址输入引脚)、DQ0~DQ31(数据输入输出引脚)、CLK、CKE、/CS(芯片选择)、/RAS(行地址选择)、/CAS(列地址选择)、/WE(写使能)、BA0~BA1(Bank地址输入信号引脚)、DQM、VSS、VDD等引脚.

由于输入的图像数据量很大,速率较快,因此系统采用两片SDRAM实现乒乓缓存机制.首先将接收到的图像数据缓存到SDRAM中,写满一帧数据后开始读取,在写SDRAM2时对SDRAM1进行读操作,而在写SDRAM1时对SDRAM2进行读操作.读写切换可以由帧有效信号FVAL来控制,将一帧完整的图像缓存到一片SDRAM中,便于后续的处理.图3为SDRAM控制器部分的设计框图.

DS90CR288输出的并行数据CAM_D以及时钟信号RXCLK分别输入到两个输入FIFO中,而FVAL、LVAL、DVAL等控制信号则分别输入到两个读写控制器中,由读写控制器产生输入FIFO和输出FIFO的读写使能信号.两路SDRAM的切换由FVAL产生的flagaorb信号来选择.FIFO_IN的数据宽度为24位,与CAM_D相匹配,缓存一行图像的数据后在SDRAM控制器的控制下将其写入到SDRAM中,由SDRAM控制器向SDRAM发送读、写和刷新等命令以及相应的读、写地址,SDRAM控制器还要负责将从SDRAM中读出的数据写入到FIFO_OUT中.最后,两路FIFO_OUT的输出数据分别在各自的读使能信号控制下,将输出信号赋值给RGB_BUF作为RGB解码芯片的输入数据.

4.VGA显示接口设计

设计选择美国AD公司的ADV7123作为视频D/A转换器.ADV7123是三路高速、10位输入的视频D/A转换器,具有330MHz的最大采样速度,与多种高精度的显示系统兼容,能够满足多方面应用需求.通过ADV7123产生三路模拟输出,同时结合行场同步信号完成图像的显示.


如果要把缓存在SDRAM中的图像在VGA接口显示器显示,我们需要构造扫描时序.设计需要满足XGA75Hz格式的输出图像,即1,024×768的有效像素分辨率,帧频75Hz,行频60kHz,由于晶振输入27 MHz时钟信号,对其倍频后产生81MHz的像素时钟.因此,行周期=81MHz÷60kHz=1,350,帧周期=60kHz÷75Hz=800,行消隐=1,350-1,024=326,帧消隐=800-768=32.场同步、行同步信号可以由FPGA构建.选取倍频后产生的81MHz作为像素时钟输入,将其输入到模等于HP(=1350)的像素脉冲计数器中,当脉冲计数小于HB=326时输出低电平,其它输出高电平,以此作为行同步信号Hsys;然后以Hsys行节拍为单位进行计数,当计数值小于VB=32时输出低电平,其它输出高电平,当计数值等于VP(=800)个行同步信号后,计数器清零,以此作为场同步信号Vsys.图4为行场同步信号时序图.

5.功能验证

系统设计完成后采用一段通用CCD信号产生器模块的输出作为系统输入,以测试系统的正确性.该模块产生从黑到白的灰度图像,没有无效像素和无效行,输出有LVAL和FVAL作为行、场数据有效信号,模块输出数据宽度为12位.在设计的FPGA控制程序中加入该通用CCD信号产生器模块,编译通过后下载到板卡的FPGA中,可以在VGA显示器屏幕上看到从左到右动态变化的从黑到白的灰度图像,说明设计的系统确实正确实现了要求的功能.通过Chipscope软件观察内部信号波形,也可以看出输出到ADV7123的RGB_BUF信号是在递增变化的.

采用一块产生模拟CCD相机输出的板卡作为系统输入,验证系统在实际工程上的应用.模拟相机输出的板卡可以输出分辨率为1,024×1,024,从上到下由黑变白的灰度图像,以及从左到右由白变黑的灰度图像,同时板卡也输出FVAL、LVAL、DVAL等控制信号.由于输出图像分辨率为1,024×768,因此输出时只能截取输入图像的上半部分.将板卡的输出通过CameraLink专用连接线缆接入我们设计的系统,输入部分设置为DS90CR288芯片的输出信号CAM_D,编译通过后下载到板卡上的FPGA中,可以在VGA显示器上看到对应的灰度图像,在Chipscope软件的Weform窗口中也可以看到输出信号在累加变化,说明设计的系统符合实际应用要求.

在调试期间为了方便,将编译VHDL代码后生成的bit文件下载到板卡上的FPGA中,调试完成后可以把编译后的mcs文件下载到板卡上与FPGA相连的PROMXCF04S中,这样在板卡上电后即由PROM对FPGA进行配置,无需系统机的干预.由于设计的显示分辨率为1,024×768,当输入图像的大小超过设计尺寸时,就会截取原始图像.可以通过增大VGA输出分辨率,来包含更多的图像内容.也可以在计数时调整初始计数行和列的值,从需要观看的图像位置开始显示,这样可以看到原始图像中的一部分.

6.总 结

本文设计的图像实时显示系统实现了将输入的相机CameraLink信号接收、缓存、读取并显示的功能.信号输入模块,数据缓存模块,以及VGA信号产生与输出模块在FPGA的控制下相互配合以完成上述的功能.设计的系统原则上可以应用于各种基于CameraLink接口的相机输出信号的实时显示.