If P_EN ='1' then A1<=(others=>'0'); elsif A1_WR'event and A1_WR ='1' then A1<=A1+1; end if;
3.5乒乓存储功能的总线切换
为了提高系统的效率,当 CPLD在采集数据时,微处理器同时完成前幅图像数据的处理,因此在系统中采用双缓冲存储区[2]。当 CPLD向 RAM1写数据时,缓冲区 RAM2的总线控制权交给微处理器。当微处理器完成 RAM2中数据的处理且 CPLD完成当前幅图像的采集后,总线进行切换,使 CPLD将下一幅图像的数据写入 RAM2,此时 RAM1的总线控制权切换给微处理器。总线切换由 P_EN的上升沿触发 EXCH信号取反。下面的程序是 EXCH信号在不同情况下,各总线工作状态的硬件描述。双向数据总线的 VHDL硬件描述如下。
D<=R1D when EXCH='0' and RD='0' else
R2D when EXCH='1' and RD='0' else
"ZZZZZZZZ";
R1D<=D when EXCH='0' and WR='0' else
D1 when EXCH='1' and A1_WR='0' else
"ZZZZZZZZ";
R2D<=D1 when EXCH='0' and A1_WR='0'else
D when EXCH='1' and WR= '0' else
"ZZZZZZZZ";
地址总线和控制总线切换过程的硬件描述如下。
if EXCH ='0' then
R1A<=A;R1_WR<=WR;R1_RD<=RD;
R1_CE<=CS;R2A<=A1;R2_WR<=A1_WR;
R2_RD<='1';R2_CE<='0';
else
R1A<= A1;R1_WR<= A1_WR; R1_RD<='1';
R1_CE<='0'; R2A<= A;R2_WR<= WR;
R2_RD<=RD; R2_CE<= CS;
end if;
4 结论图 5给出了在 Quartus II 6.0中采用 EPM7128QC160型 CPLD对上述方案的仿真时序波形图,仿真结果与设计思想完全吻合。此驱动电路已在纸币清分设备中得到较好的应用。

本文作者创新点:以 CPLD为核心实现 CIS传感器时序驱动、A/D转换器控制、双缓冲区的乒乓总线切换以及微处理器接口等功能;微处理器不直接控制底层器件,提高了微处理器的效率;采用双缓冲区的乒乓工作方式,图像采集和图像处理实现并行工作,提高了图像处理系统的性能。