|
步信号。当检测到图像开始位置时,控制器自动产生地址和读写控制信号将图像数据直接写入内存中。图像采集完成后,控制器自动将总线控制权交还处理器,处理器继续运行,控制器中与采集相关的状态复位。控制器可以根据同步信号或设定的采集图像大小确定采集是否完成。
在图5中,控制器包括同步信号检测、地址发生器、SRAM写控制器、总线控制器和处理器握手电路等主要部分。同步信号检测确定每一场(帧)和每一行的起始位置;地址发生器产生写SRAM所需的地址;SRAM写控制器产生写入时序;总线控制器在采集图像时管理总线,采集完成后自动释放;处理器握手电路接受处理器命令、发总线管理请求和应答处理器。
2、SRAM写控制时序
采集图像过程中,控制器自动将数据写入到硬件设定的内存中。写内存时,控制器产生RAM地址(A)、片选信号(/CS)、读信号(/RD)和写信号(/WD),同时锁存传感器输出的数据并送到数据总线(D)上。每写入一个数据后,地址(A)自动增1。采集时/CS保持有效(‘0’)状态而/RD处于无效状态(‘1’)。地址A的变化必须与/WD和数据锁存器协调好才能保证图像数据的有效性。
图6是控制器产生的SRAM信号时序图。用PCLK作为地址发生器的输入时钟,且在其上升沿更新地址值。同样,在PCLK的上沿锁存数据并输出到总线上。将PCLK反相,作为/WD信号,使得在/WD的上升沿地址和数据稳定,确保写入数据的有效性。
3、控制器主要功能的VHDL描述
描述控制器中全部功能的VHDL代码较长,而且有些部分是常用的(如计数器等)。图像采集状态产生和同步信号的检测是其中重要的部分。下面介绍这两部分的VHDL描述。
图像采集状态 capture_s:
处理器的采集请求信号capture_r使capture_s从‘0’到‘1’,场地址发生器(计数器)的溢出位vcount_o,清除capture_s。
process (capture_r, reset, vcount_o)
begin
if reset='0' or vcount_o='1' then
capture_s<='0'; -- 清除
else if capture_r'event and capture_r='0' then
capture_s<='1'; -- 置状态位
end if;
end process;
同步信号检测:
只有在采集状态capture_s有效时(‘1’)才检测场同步信号,场同步信号下降沿置场有效状态(vsync_s),场地址发生器溢出位vcount_o清除场有效状态。只有在vsync_s有效情况下才检测行同步信号,行同步信号下降沿置行有效状态(hsync_s),行计数器溢出信号hcount_o清除行状态。只有在行状态有效的情况下计数器才工作,且将数据写入RAM。
Process (capture_s,reset,vcount_o, vsync)
Begin
If reset='0' or vcount_o='1' or capture_s='0' then
Vsync_s<='0'; -- 清除
Else if vsync'event and vsync='0' then
Vsync_s<='1'; -- 置状态位
End if;
End process;
Process (vsync_s, reset, hcount_o, hsync)
Begin
If vsync_s='0' or reset='0' or hcount_o='1' then
Hsync_s<='0'; -- 清除
Else if hsync'event and hsync='0' then
Hsync_s<='1'; -- 置状态位
End if;
End process;
五、讨论
我们在基于TI公司的TMS320C3X系列DSP开发的嵌入式指纹图像处理模块中分别用上述两种方法成功实现了指纹图像的采集。
采用I/O接口方式最关键的是要求处理器的频率远高于图像数据输出的频率。例如,如果处理的指令周期为20ns,读取每个数据需要10个指令周期,则数据的输出频率不能超过5MHz,它低于一般的CMOS图像传感器件最快的数据输出频率。例如国内使用
|