2.3.1 PPI接口功能与原理
ADSP_BF533芯片提供的PPI是一种多功能并行接口,数据线宽度可以在8位~16位之间设置。PPI支持双向数据流,能够与高速A/D转换器、D/A转换器或其它通用外围设备直接并行连接,适合大量数据的高速连续输入与输出。它包括三条同步信号线和一个与外部时钟相连的时钟引脚。在本系统中,PPI时钟由AFE9995的像素输出时钟DCLK驱动,PPI可以在驱动时钟频率高达65MHz的情况下接收数据,所以完全能够满足本系统中CCD 24MHz速率的像素数据传输。根据经A/D转换后的数据宽度设置PPI的数据线宽度为12位,由AD9995输出的水平同步信号HD和垂直同步信号VD分别输入PPI的PPI_FS1和PPI_FS2同步信号引脚(如图8所示)。
从CCD输出的像素信号并不都是有用的,每一行中在有效像元前后都存在一些黑(OPTICAL BLACK)像素,和一些哑(DUMMY)像素,同样在一场有效输出前后也存在着一些哑行,所以由AFE输出的有效图像数据中间有一定的行间隔和场间隔。当HD同步信号输入到PPI的FS1后,需要等待若干时钟周期才开始有效像元数据的传输,这时可通过延迟计数寄存器(PPI_DELAY)来设置需要等待的时钟周期数。另外,还要在PPI_COUNT和PPI_FRAME寄存器中分别设定每一行的像素数和每一场图像的行数,这样便确定了每一次PPI调用中所要传输的数据量。
2.3.2 DMA的调用
在CCD数据采集这种数据量非常大的情况下,PPI 接口只有在DMA引擎的配合下,系统才能发挥它的高效能。虽然对图像数据进行的传输也可由软件实现,但将消耗掉大量的CPU时钟周期,使DSP的高速数据处理能力难以发挥。因为有了DMA独立负责数据传输,在系统内核对DMA初始设置并启动后,便不再需要内核参与,DMA控制器直接把图像数据从PPI接口传输至SDRAM存储器进行存储。于是,在有效地解决了大批量图像数据传输这一速度瓶颈的同时,又能让DSP处理器专心从事算法处理工作,极大地提高了系统的并行性能。
ADSP-BF533的DMA可以控制六种类型的数据传输:内部存储器之间、内部存储器-外部存储器、存储器-SPI接口、存储器-SPORT接口、存储器-UART接口、存储器-PPI接口。本系统使用PPI接口与外部存储器SDRAM之间的DMA传输。DMA的建立需要如下步骤:(1)设置寄存器DMA1_0_START_ADDR_REG,写入目标地址值;(2)设置寄存器DMA1_0_X_COUNT_REG,写入传输次数;(3)设置寄存器DMA1_0_X_MODIFY_REG,写入每次数据传输的目标地址修正值;(4)设置DMA控制寄存器DMA1_0_CONFIG_REG,启动DMA数据传输。
3 系统软件实现
在ADI 公司的DSP集成开发环境Visual DSP++3.0中,采用C语言与汇编语言混合编程的方式进行CCD图像采集的软件开发。系统软件流程图如图9所示。系统初始化之后,调用AD9995设置子程序对AD9995中的众多寄存器组进行设置,使其能够产生所要求的CCD驱动脉冲;之后检查DMA通道是否空闲,若通道忙则等待,若空闲则对PPI和DMA通道的相关寄存器进行设置,并且使能PPI和DMA通道,这样当PPI接口收到HD脉冲后便启动了数据传输。
该CCD图像采集系统采用集成了模拟前端电路与时序发生器的集成元件,从而保证系统具有更高的可靠性和较强的抗干扰能力;通过软件可以方便地改变时序发生器的驱动脉冲,因此适用于多种不同型号的CCD器件,具有较好的通用性。利用PPI和DMA完成数据的传输与存储,改变了通常在高速ADC和DSP之间通过FIFO存储器连接的方式,实现了高速ADC和DSP的无缝连接,简化了系统结构。基于以上特点,本CCD图像采集系统很适合应用于数码相机以及对分辨率要求较高的图像采集与处理场合。