COMS图像传感器是近几年发展较快的新型图像传感器,由于采用了相同COMS技术,因此可以将像素阵列与外围支持电路集成在同一块芯片上,是一个完整的图像系统(Camera on Chip)。本系统采用的是Ommnvision公司推出的一块CMOS彩色图像传感器OV7620,分辨率为640x480。它能工作在逐行扫描方式下,也能工作在隔行扫描方式下。它不仅能输出彩色图像,也可用作黑白图像传感器。这块芯片支持的图像输出格式有很多种:1)YCrCb4:2:2 16 bit/8 bit格式;2)ZV端口输出格式;3)RGB原始数据16 bit/8 bit;4)CCIR601/CCIR656格式。其功能包括有对比度、亮度、饱和度、白平衡及自动曝光、同步信号位置及极性输出,帧速率和输出格式等都可以通过I2C 总线进行编程配置片内寄存器控制。
聚光镜头选用桑来斯公司生产的DSL103镜头。此镜头体积小,适合嵌入式视觉传感器的应用场合。
四、FPGA接口模块
FPGA采用Xilinx公司的xc2s100,这款芯片内部集成了10000个逻辑门。接口程序采用VHDL(Very High Speed Integrated Circuit Hardware Description Language)书写。为了提高数据的传输速率,在xc2s100 内部分配了2个双口RAM缓冲区,其大小为127KB,每个双口RAM存储1行的图像数据。两组双口RAM进行奇偶行计数器进行切换。当一行存储完毕后,立即向SH4传生一个读取该行数据的中断的申请信号。FPGA内部结构如图2所示。这里主要问题在于FPGA内部的双口RAM读写操作共用同一数据总线和地址总线,当同时进行读写操作的时候就会产生时序问题导致写入或读出的数据错误。在这两个过程中为了防止数据和地址总线冲突,在FPGA内部设计了一个中央总线仲裁器。根据公共数据传输的先后顺序,中央仲裁器先接受图像传感器的总线请求,当图像存储到RAM之中后,中央仲裁器才响应单片机系统的读信号请求。
这里给出双口RAM的构造及读写控制程序:
Entity dual_port_ram is
Generic(d_width:integer:=2;
Mem_depth:integer:=8);
Port(clk:in STD_LOGIC;
CS:in STD_LOGIC;
We: in STD_LOGIC;
Indata: in STD_LOGIC_VECTOR(7 downto 0);
Outdata:out STD_LOGIC_VECTOR(7 downto 0);
Raddr,waddr:in STD_LOGIC_VECTOR(1 downto 0));
End dual_port_ram ;
Architecture data of dual_port_ram is
Type mem_type is array(3 downto 0) of
STD_LOGIC_VECTOR(7 downto 0);
Signal mem:mem_type;
Begin
Process(clk,we,waddr)
Begin
If(rising_edge(clk))then
If(we='1')then
Mem(conv_integer(waddr))<=indata;
End if;
End process;
Process(raddr,clk)
Begin
If(rising_edge(clk))then
If(CS='0')then
Outdata<=mem(conv_integer(raddr));
End if;
End if;
End process;
End data;
参考文献
1、OV7620 single-chip CMOS CIF color digital camera Data Sheet. OmmVision,2001
2、王红军。机器视觉-现代工业的眼睛。机电一体化。1999.3
3、钟玉琢等。 机器人视觉技术。 北京:国防工业出版社,2002
4、李振玉。图像通信与监控系统。 北京:中国铁道出版社,2001