基于DSP+CPLD的嵌入式高速图像通信系统设计
1 引言
本文引用地址:http://www.amcfsurvey.com/article/247933.htm随着现代的图形采集技术发展迅速,各种基于ISA,PCI,USB1.1等总线的图形采集卡速度已经不能满足用户的需求,而采用 USB2.0以后就可以解决这个传输速度上的瓶颈,USB2.0的速度是480Mbits/s,完全可以满足图像采集、传输以及后续处理的要求。系统中采用 DSP+CPLD的硬件设计方案,采用现场可编程芯片 CPLD及两片 SRAM构成的图像采集和存储系统,可以根据不同的需要进行现场编程,具有通用性好、价格相对便宜,易于系统调试,升级等特点。系统中 CPLD选择的型号是 ALTERA公司的MAX7000系列低功耗芯片EPM7128A。片外大容量 SRAM是DSP与 CPLD的联系桥梁,系统设计也利用这座桥梁将 USB和 CPLD有机地联系起来。该系统的市场调查表明,适应于各种主动或被动的监测场合,以及医疗、公安和工业检测当中。 2 系统的硬件设计方案图像通信系统包括以下四个部分,如图 1所示:
(1) 图像采集模块,由线阵 CCD、CCD 驱动信号增强电路、CPLD 和 A/D 组成,用于采集图像信号,并将模拟信号数字化,以便 DSP 处理。本系统采用黑白高速线阵TH7814A,该 CCD 为双路输出,像敏单元尺寸7 ?m,最高驱动频率 50 MHz;CCD 驱动信号增强电路是为满足该 CCD 所需的 9 V 高速驱动而设计的;A/D 芯片采用 SAA7111A,它由双通道模拟预处理电路、自动钳位和增益控制、时钟产生电路、数字多标准译码器色度/饱和度/对比度控制电路、彩色空间矩阵和 27MHz数据处理通道七部分组成,并由 DSP模拟I 2C总线进行时序配置,以上器件同步驱动脉冲均由 CPLD 产生。
(2)图像信号的处理和控制模块,该模块由 DSP和两片 SRAM组成,完成了整个系统图像数据的处理和对各模块的集中控制与处理,DSP选用了 TI公司的通用 16位定点 DSP芯片 TMS320VC5409,其指令的处理速度达到 100MIPS,通过片内的锁相环倍频使 DSP内部工作在 100M的频率上,而外部的工作频率可以相对较低,这就降低了电路设计的要求,提高了工作的稳定性。该系统图像采集的一帧图像是 720×576象素,如果取彩色图像,每象素用 2个字节表示,每帧图像是 720×576×16=*Mb,分成奇数场和偶数场分别存储在两片 SRAM中,则每片的 SRAM存储 3.2Mb的图像数据,因此选用了 256K×1*M位的静态存储器(SRAM)。在图像处理领域,通常只需要黑白图像,可以只取图像的黑白部分,每象素用 1个字节表示,每帧图像是 3.2Mb ,每片 SRAM存储 1.6Mb的图像数据。所采用的 EZ-USB芯片理论速率是 480Mbps,实际测得的速率是 320Mbps,因此图像采集卡每秒传输约 5帧彩色图像或 10帧黑白图像。
(3)USB传输和控制模块,设计中选用的芯片是EZ-USB FX2系列的CY7C68013芯片,该芯片是针对 USB2.0的,而且和 USB1.0兼容,由于 USB2.0的速度可以达到480Mb/S,并且FX2自身具有EP2,EP4,EP6和EP8的4个大流量端点,CY7C68013可以实现从外部存储器高速的读取和写入数据。在图像的采集、存储和传输设计上,不再是奇数场存储在奇数SRAM,偶数场存储在偶数SRAM。最重要的改进是一帧图像在完成行延时和像素延时之后,当偶数场到来后,先把偶数场的一半存储在紧邻奇数场数据的奇数 SRAM中,然后再把余下的偶数场数据的一半存储在紧邻偶数场数据的偶数 SRAM中。CY7C68013拥有 4个大容量端点,恰好满足了整个系统对实时性的要求。在 USB从两个 SRAM读取图像数据时,USB并不是从两个SRAM“乒乓”式的读取图像数据,而是充分地利用 USB2.0的速度特点,由 CPLD的时序调度来先读取奇数SRAM,然后读取偶数SRAM。
(4)系统接口以及终端图像还原和存储模块,系统中各个模块之间都需要通过接口来实现模块间通信,因此接口的选择是系统是保证系统通信速度的关键。其中 CPLD 和 DSP 都具有很高的数据处理速度 ,如何将这两个器件的处理速度协调起来 ,会直接影响整体系统的运行速度 ,这就涉及到 CPLD如何与 DSP接口的问题。关键是选择 DSP的接口方式和配置CPLD的片内RAM。系统中DSP与 SDRAM 用EMIF 的方式接口。同时,CPLD内部的存储器主要是 Block RAM ,可用作双口 RAM ,正好可将 CPLD 模块中的结果缓冲器设为双口 RAM ,一端是输入 ,另一端则模拟为SDRAM 的接口。这样就将 CPLD 与 DSP 有机地连接在一起。系统与终端的接口采用的是 480Mb/s的 USB2.0通用串行接口,用于发送和接受各种数据及控制信号。PC机端通过 USB接口接受数据,然后存储到终端硬盘上,进行图像的还原和处理。
系统工作流程:系统上电以后, DSP从外部 FLASH进行程序自举,将程序引导进入片内高速 RAM中运行。DSP对 SAA7111A,TL16C750(异步通信芯片)进行初始化配置。初始化结束后,DSP进入等待状态。当接收到手动或是软件自动链路请求时, DSP进行链路拨号。链路成功后, DSP通过 CLKX产生触发脉冲通知 CPLD可以采集图像。从 CCD捕捉到的模拟视频信号经过SAA7111A的模数转换,由CPLD控制写入片外高速大容量SRAM储存,直到一帧图像存储完毕, CPLD交出总线。然后 USB控制器 FX2从两片 SRAM中读取奇数场和偶数场的图像数据。一帧图像采集结束后,CPLD置高 HOLD,同时产生中断,通知 DSP。DSP收回总线,进行图像传输。图像采集部分的 TOKEN信号外接 LED,LED的亮、灭状态可以直观地显示系统进程阶段。
3 系统程序设计
3.1 DSP控制程序设计
DSP硬件控制程序用来管理硬件各部分工作方式及指定数据流向和组织方式 , 从 DSP执行的内外影响主要可以分为内部的算法操作,和对外部的控制操作两个部分。其中外部的联系主要是两个方面:一个是和CPLD控制通道的相互交换;一个是和DSP与CPLD数据交换存储器进行数据交换。系统的 DSP部分的软件编写采用模块化编程,主程序只是在循环检测按键情况,如果需要就调用需要的功能模块函数,其主函数中的部分代码如下:
While (1) { order num=scan key()://扫描按键 switch (order num)
{ case collection order://图像采集命令 image_collection();//图像采集
image_process();//图像处理
image_save();//图像保存 case usb_transfer://USB传输数据命令 set usb_transfer();//调用相应模块 default:; }}
3.2 CPLD控制程序设计
CPLD的作用是产生 CCD、A/D及 DSP视频端口的同步驱动脉冲。每次采样时, CPLD将从 SAA7111A接收到一帧图像数据保存到 SRAM中,此时 DSP等待;采样结束后, DSP与 CPLD进行总线切换,分别连接到与上次不同的 SRAM上,DSP开始读取数据,CPLD开始采集数据。每当 DSP和 CPLD 都完成各自的任务时,就进行总线切换 ,交换连接的 SRAM。此过程中由 CPLD控制程序的流程如图 2所示。
3.3 USB的固件程序及驱动程序
固件程序在该系统中其主要功能是实现 USB芯片的初始化和配置;控制 USB芯片接收并处理 USB驱动程序请求;控制芯片接收控制程序的控制指令。固件程序首先初始化所有的内部状态变量,调用用户初始化函数 TD-Init(),初始化 USB总线设备接口为非配置状态,并打开中断。当完成上面的任务后,固件程序就开始重新枚举设备直到在端点收到 SETUP包为止。一旦 CY7C68013收到 SETUP包,固件程序就开始进行任务分配。固件程序流程图如图 3所示。
3.4 主机应用应用程序
在 PC机端,用 Visual C++ 6.0编写客户应用程序,应用程序通过 USB接收原始的奇数场和偶数场图像数据,待接收完奇数场和偶数场图像数据后,应用程序把它们组成完整的一帧图像,并且把该帧图像数据存储到硬盘上,然后把这帧图像转化成 BMP格式的图像存储在硬盘上,同时以 BMP的形式显示图像。
4 结论
从总体来看,该系统以嵌入式设备为核心平台,在此平台上完成了机器视觉、图像实时采集、数据传输 3个子系统的无缝连接集成开发。使得本系统只需较少的成本,拥有监测终端,就能完成主动智能监测、用户远程现场监控等功能。此外,本系统可针对不同需求,在添加各类相应的传感器后,将可运用到包括消防、车辆防盗以及工业控制等很多实用领域。
本文作者创新点 :介绍了 DSP与 CPLD协同控制的高速图像通信系统的设计,采用高速 USB2.0作为图像传输的接口,完成了机器视觉、图像实时采集、数据传输 3个子系统的无缝连接集成开发。
c++相关文章:c++教程
通信相关文章:通信原理
锁相环相关文章:锁相环原理
评论