技术频道

基于DSP的空啤酒瓶图像数据处理系统研制

  1 引言

  空瓶检测机的机器视觉系统分为基于PC机、基于DSP和基于智能相机三种结构。不论哪种结构,成像系统都是采用高速工业相机和光学照明系统对被检测对象进行清晰成像,然后图像进行后续的转换和处理。基于智能相机的嵌入式系统,将图像的采集、传输、处理都在智能相机内部完成,系统集成化程度高,处理速度快,但是专用性强,开发周期长。目前,主要应用的是前两种方式。

  在对瓶口和瓶底图像的处理中使用了包括低通滤波、边缘提取等算法,这些卷积算法需要进行大量的乘加运算,而且要求很高的图像处理速度。结合处理器速度和片上外设的要求,板上的处理器采用德州仪器(TI)的TMS320VC5502高性能数字信号处理器。

  本文首先介绍了VC5502DSP的特点,然后介绍了系统时钟、扩展内存接口、串行通信接口等外设接口,阐述了启动模式和目标程序内存空间定址等内容,最后给出了扩展程序内存的烧写时序。

  2 VC5502DSP简介

  2.1 TMS320VC5502的特点

  TMS320VC5502是一款定点数DSP,它的主要特征:

  基于高性能,低功耗的TMS320C55x的CPU内核。3-/5-ns的指令周期,300/200MHz的时钟速率;16K字节指令缓存;600/400兆次/秒的乘累加运算(MMACS)。

  内部总线结构包括1条内部程序总线,3条内部数据读总线,2条内部数据写总线。没有外部总线竞争时,可以在一个时钟内实现三次数据读和两次数据写,并行度很高。

  两个40位乘累加单元(MAC),每个都可在一个时钟周期内实现一次17bit×17bit运算,一个40位的算术逻辑单元(ALU)辅以一个16位的算术逻辑单元。

  使用可变长度指令增加指令密度,指令单元(IU)每次取指32bit放入程序单元(PU)进行排队。PU进行指令译码,执行指令,分配任务到地址单元(AU)和数据单元(DU),并且维护完全保护性指令流水线。分支预测技术减少因为条件指令造成指令流水线的刷新。

  EMIF接口提供对异步EPROM、SRAM、SDRAM和异步突发式SRAM(SBSRAM)的无缝连接。程序内存和数据内存统一编址,支持8M16位字的内存空间,分为四个区域(CE)。

  另外,TI还提供了一系列开发工具和开发包,包括eXpressDSP,CodeComposerStudio,DSP/BIOS,TI标准算法库,信号处理算法库,视频和图像处理算法库等,提高了用户的开发效率。

  2.2 系统时钟设置

  TMS320VC5502可以使用外部晶振和内部的振荡器作为时钟源,也可以直接使用外部的时钟源。VC5502内部具有锁相环,可以被使能或旁路,上电复位时锁相环缺省被旁路。DSP的时钟源由复位时GPIO4引脚的状态决定。

  TMS320VC5502分为四个时钟组:C55x核系统时钟组,快速外设时钟组,慢速外设时钟组和EMIF接口时钟组,分别对应CLKOUT3、SYSCLK1、SYSCLK2、SYSCLK3四个内部时钟信号。快速外设时钟SYSCLK1主要提供给DMA和HPI接口使用,慢速外设时钟SYSCLK2在本应用中主要供I2C模块使用,EMIF接口时钟SYSCLK3用作内存访问时钟。

  在本图像处理卡中,使用频率为200MHz的MK1711作为外部时钟源,MK1711是德州仪器推荐的DSP外部时钟。GPIO4引脚在复位时接高电平,其状态会被bootloader检测并将CLKMD[0]位置1。

  当EMIF模块使用内部时钟作为时钟源时,SYSCLK3的频率必须小于或等于100MHz;当EMIF模块使用外部时钟源时,SYSCLK3的频率必须小于或等于SYSCLK1,但是外部时钟源CLKIN的频率必须小于100MHz。SYSCLK2的频率必须小于或等于SYSCLK1的频率。

  修改C55x子系统时钟控制寄存器(PLLCSR),PLL分频寄存器(PLLDIV0)和PLL倍频器(PLLM),需要遵从一定的顺序。本系统修改如下:

  1) 将PLLCSR的PLLEN位清零,使PLL处于旁路状态;

  2) 将PLLCSR的PLLRST位置位,使PLL进入复位状态;

  3) 清零PLLDIV0的D0EN位,不使能PLL分频器;

  4) 修改PLLDIV0寄存器的分频数值为100b;

  5) 置位PLLDIV0的PLLEN位,使能PLL分频器;

  6) 修改PLLM寄存器的倍频数值为100b;

  7) 延时1微秒(仍按原来频率计);

  8) 清零PLLCSR的PLLRST位,使锁相环脱离复位状态;

  9) 轮询PLLCSR的LOCK位,直到该位为1表示锁相成功,锁相环具有稳定的频率输出;

  10) 将PLLCSR的PLLEN位置1,使系统进入锁相环使能模式。

  缺省时,SYSCLKx这三个时钟的分频系数都是4,为了加快访问外设的速度,需要进行修改。在修改相应的PLLDIVx寄存器时,TI推荐首先使相应接口进入IDLE状态,以避免外设访问发生错误。

  通过修改PLLDIV1=2使SYSCLK1时钟频率运行在100MHz;PLLDIV2使用缺省值4不作修改,SYSCLK2运行在50MHz;修改PLLDIV3=2使EMIF接口时钟SYSCLK3运行在100MHz。

  ECLKOUTx两个时钟仅在使用同步动态内存和同步突发式SRAM时需要,使用异步SRAM时不需要。为了减少电磁干扰,将此两个时钟引脚关闭,可以通过设置EMIF全局控制寄存器EMIFGCRx的EKxEN和EKxHZ为0来完成。

  为了加快启动加载过程,锁相环和各外设时钟分频寄存器可以在加载应用程序代码前通过启动表格由bootloaer做修改。但是在启动表格中无法进行步骤6中LOCK位的轮询,为此可以采用一定的延时(如1微秒),只要保证PLL能够成功锁相有稳定频率输出即可。相应命令文件代码参见启动表格结构节。

  2.3 扩展内存接口EMIF

  EMIF接口支持CPU/DMA对外部数据的8位、16位、32位访问,支持的外设包括异步内存(SRAM、ROM、FLASH内存),同步动态内存(SDRAM)和同步突发式SRAM(SBSRAM)。内存字节顺序只支持大端模式。

  在图像处理卡中,EMIF的CE1内存空间接DSP的程序FLASH,CE2空间通过CPLD内存切换模块接SRAM,内存访问参考时钟选择ECLKOUT1,时钟频率100MHz。

  EMIF可编程控制异步内存的时序,这些时序参数是通过各个内存空间的CExCTL寄存器实现的。主要参数有:

  1) 建立时间(SETUP):指从内存访问周期开始到读或写选通信号有效的时间。最小值为1,对于一次单一或突发访问的几次连续访问的第一个访问,SETUP最小值为2;

  2) 选通时间(STOBE):读或写选通信号从有效到无效的时间,最小值为1。

  3) 保持时间(HOLD):指读或写选通信号从失效到访问周期结束的时间,留作地址总线的变化时间,最小值可以为0;

  这些时间参数以SYSCLK3(ECLKOUT1)为基准。EMIF为每个CE内存空间的读和写访问提供独立的SETUP、STOBE、HOLD时间。

  为了使这些参数能够在加载外部程序代码时起作用,这些参数必须在启动表格中通过bootloader进行修改,要注意保证足够的延时,使输出时钟稳定。DSP的外部扩展SRAMCY7C1061AV33的配置在CE2内存空间,作为图像内存,16位字地址空间为400000H-4FFFFFH。对于读CY7C1061AV33操作,不使用VC5502EMIF的/ARE引脚,直接用/AOE和CY7C1061AV33的/OE引脚连接,则此时地址信号、片选/CE1、输出允许/OE会同时给出,此时CY7C1061AV33处于连续读状态,数据的输出只受地址总线的控制。地址总线变化时,便给出相应单元的数据

文章版权归西部工控xbgk所有,未经许可不得转载。

DSP