摘要:本文介绍了一种利用DSP处理DM642、CPLD及USB芯片等器件构造的带有USB接口的图像采集和处理系统。设计了USB通信接口的硬件电路,在DSP/BIOS架构上编写了USB的固件程序和主机端的设备驱动程序。该系统可用于香烟包装流水线上的条包检测等对生产速度要求较高的工业流程领域。
1 引言
目前国内各大烟草制造企业的香烟包装都是在高速流水线上进行的,设备自动化程度 高,机械和电气控制复杂,生产中经常产生包装不合格的产品。目前的解决方法主要是通过 采集卡将烟包图像传输到工控机中,应用图像处理技术[1],检测出不合格的产品。这是一种 PC-based 的检测方法。现有的采集卡一般不具备图像处理的能力并且多是PCI 接口,存在 安装和使用不方便,不支持热插拔等问题。
本文提出了一种应用TI 公司高性能DSP 处理器TMS320DM642,视频解码器和Altera 新推出的CPLD EPM240 组成的嵌入式的具有初步图像处理功能的采集系统[2]。应用USB 接口将检测到的不合格产品图像信息实时传输到工控机上,供生产人员做进一步分析和统计 包装中出现的问题,以及时对生产设备进行维护,降低企业生产成本。
2 系统设计
DSP 处理器[3]的视频口接收视频解码器输出的视频数据,采集一帧图像,通过EDMA[4] 将缓存在视频口FIFO 中的数据搬移到SDRAM 中。经过图像处理判定有无反包,拉线错位 及破损等错误。若要剔除烟包,工控机发出读请求唤醒USB 芯片EZ-USB SX2(CY7C68001) [5],DSP 启动EDMA 将SDRAM 中的图像传输到USB 的FIFO(EP6)中。系统框图如图1 所示。
DM642 是TI 公司推出的一款面向多媒体应用的定点数字信号处理器,设计主频为 500~ 720MHz,采用C64x 内核,2 级存储器结构,同时片上还集成了视频口(VP),外部 存储器接口(EMIF)等丰富的资源。DM642 特有的EDMA 负责片内L2 存储器与其他外设 之间的数据传输。EPM240Z 是Altera 最新推出的MAX II Z 系列CPLD。该系列采用非易失 的嵌入Flash 工艺,以及创新的查找表(LUT)逻辑结构,突破了传统宏单元器件的成本和功 耗限制。在MAX 系列基础之上,功耗只有十分之一,而容量增加了四倍,性能提升了一倍。
EZ-USB SX2(CY7C68001)集成有USB2.0 收发器,串行接口引擎SIE,4KB 的FIFO, 可以选择的8 位或16 位总线方式。片上SIE 能完成大部分的USB 协议操作,简化了用户设 置代码,但由于其内部不含微处理器,应用层协议由DSP 编程实现。
3 USB 通信接口硬件设计
系统中将 SX2 配置在DM642 的CE1 空间,四个端点(EP2,EP4,EP6,EP8)的地址空 间是0xA0000000~0xA0001BFF。控制接口(EP0)的地址空间为0xA0002000~0xA000203F。 CY7C68001 与DSP 之间使用异步读写方式完成二者之间数据和命令的交换。中断信号占用 DM642 的外部中断EXT_INT5,四个状态信号(READY、FLAGA、FLAG 和FLAGC)和 唤醒信号分别配置在EPM240G[6]中的USB 状态寄存器(USB_STS)和USB 唤醒积存器中 (USB_WAKEUP) 。EPM240G 占用DM642 的CE1 空间, 地址范围是 0x9A080000~0x9A080020。接口电路如图2 所示。
主要接口信号包括控制信号,数据总线和地址总线。
控制信号: USBINT:中断信号。由SX2 提供,SX2 有六个中断源,中断发生时,DSP 读数据总线, 获取中断标志位判断具体哪个中断发生了。
FLAGA,FLAGB,FLABC:状态信号。由SX2 提供,分别反映当前选中的FIFO 的状态,可编程,满,空。
CE1,CE2:片选信号。由DSP 提供,选中CE1 或CE2 空间。
OE,RE,WE:输出允许信号,读使能信号,写使能信号。由DSP 提供。
地址总线:
AEA22,AEA[15..13],AEA[7..3]:地址总线。由DSP 提供,设定外设地址。
4 USB 通信接口DSP 端软件设计
DSP 图像采集与处理系统的软件包括设备驱动和客户应用程序。系统软件是在TI DSP/BIOS 操作系统的基础上开发的,如图3 所示。DSP/BIOS 是整个DSP 系统软件的核心, 各底层设备驱动程序完成硬件的驱动与管理,并对上层提供统一的接口;各应用任务模块完 成相应的应用功能,并由DSP/BIOS 提供实时任务调度与操作系统的支撑。VP driver、USB driver[7]分别是DM642 视频口和与SX2 通信的EMIF 口的底层驱动,完成对相应硬件外设的 硬件抽象与配置管理。
DSP/BIOS[8]中的设备驱动程序由两层组成,上层是类驱动(Class driver),其典型功能 是提供多线程的串行化与服务请求的同步,另外还要处理设备实例的管理。这一层与驱动无 关,它是DSP/BIOS 本身所集成的一部分模块,主要包括SIO、PIP 及GIO 三种类驱动模型, 本系统采用的是GIO 类驱动。下层是微驱动程序(Mini driver),GIO 类驱动使用与具体设 备相关的微驱动程序来操作SX2,以实现主机应用程序图像发送与接收的功能。微驱动程序 对SX 的配置过程见图4。
5 USB 通信接口主机端驱动程序设计
与传统的 PC 总线(如PCI 总线)设备的驱动程序相比,USB 设备驱动程序不直接与硬 件对话。这些工作由微软提供的USBD.SYS 来完成。USB 设备驱动程序的主要工作就把客 户软件的请求翻译成USBD.SYS 能执行的事务。USB 设备驱动程序主要完成以下功能:发 现、配置、关闭USB 设备。
USB 设备驱动程序向主机应用程序提供函数接口,如像Ezusb_Creat(),Ezusb_Close() 等函数。应用程序调用函数Ezusb_Create(),返回唯一的Windows 句柄后,才能调用驱动程 序的其他函数。应用程序通过调用标准Win32 API 函数CreateFile()来实现对Ezusb_Create() 的访问。 控制与数据传送接口。应用程序使用 API 函数DeviceIoCONtrol()来执行这样的操作。 驱动程序将这个函数调用转化为一个带IRP_MJ_DEVICE_CONTROL 功能码的IRP。像读取与写 入FIFO 数据、endpoint0 的操作均是通过异步IO 的方式来完成的。
6 结论
本文所设计的带有 USB 接口的DM642 图像采集与处理系统,一方面充分利用了DM642 的强大处理能力和丰富的外设功能,另一方面使用了新架构的MAXIIZ 系列CPLD 有效的 降低系统的功耗。软件方面,以DSP/BIOS 为核心,实现了USB 的固件程序,并在主机端 开发USB 的设备驱动程序。该嵌入式图像采集与处理系统针对香烟生产流水线上的包装检 测而设计,基本上满足香烟条包在线检测的需要。