基于DSP+CPLD的嵌入式高速图像通信系统设计
将程序引导进入片内高速 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个子系统的无缝连接集成开发。
- 基于视觉的ADAS解决方案,近在咫尺!(05-07)
- 精通信号处理设计小Tips(6):卷积是怎么得到的?(11-24)
- 精通信号处理设计小Tips(7):应用极其广泛的相关(12-01)
- 精通信号处理设计小Tips(8):检测淹没在噪声中的信号(02-06)
- 精通信号处理设计小Tips(9):估算信号在模拟通道的延时(02-10)
- 什么是OpenCL?面向FPGA的OpenCL有何优点?(03-12)