首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于机器视觉的嵌入式高速图像通信系统设计
来源:本站整理  作者:佚名  2009-10-19 09:09:50



(2)图像信号的处理和控制模块,该模块由 DSP和两片 SRAM组成,完成了整个系统图像数据的处理和对各模块的集中控制与处理,DSP选用了 TI公司的通用 16位定点 DSP芯片 TMS320VC5409,其指令的处理速度达到 100MIPS,通过片内的锁相环倍频使 DSP内部工作在 100M的频率上,而外部的工作频率可以相对较低,这就降低了电路设计的要求,提高了工作的稳定性。该系统图像采集的一帧图像是 720×576象素,如果取彩色图像,每象素用 2个字节表示,每帧图像是 720×576×16=6.4Mb,分成奇数场和偶数场分别存储在两片 SRAM中,则每片的 SRAM存储 3.2Mb的图像数据,因此选用了 256K×16=4M位的静态存储器(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接口接受数据,然后存储到终端硬盘上,进行图像的还原和处理。


图 1 系统模块
系统工作流程:系统上电以后, 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:; }}

上一页  [1] [2] [3] 

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:79,453.13000 毫秒