1 TMS320C6416处理器特点
TMS320C6416是TI公司推出的TMS320C6000平台上高性能定点系列处理器。适合实时图像处理的内部结构主要特点包括:
①定点/浮点系列兼容DSP、CPU主频达到720MHz;
②具有VelociTI先进VLIW结构内核;
③片内集成大容量SRAMt,最大可达8Mb;
④16/32/64位高能外部存储器接口(EMIF)提供了同步/异步存储器的直接接口;
⑤片内提供多种集成外设。
2 系统硬件设计
2.1硬件设计所用器件
采用TI公司的TMS320C6416DSK开发板作为DSP平台。开发板提供的三排扩展引脚连接器,针对应用设计的子板可以插入引脚连接器,利用TMS320C6416DSK板提供的硬件设计资源。扩展引脚类型包括存储器信号引、外围设备信号引脚和主机端口接口信号引脚。存储器信号引脚提供DSP异步EMIF信号访问存储器或者存镕器映射设备。外围设备信号引脚提供DSP外围设备信号.例如多道缓冲串行El(MCBSP)、时钟(TIMER)。这两类型的引脚连接器提供子板的电源和地信号。采用美国Syscan公司的黑白线阵CIS图像传感器SV253A4,分辨率为200dpi,扫描长度为216ram,扫描速度为0.36ms/行,单一模拟视频输出信号。采用美国Exar公司的高速线阵CIS/CCD传感器处理器XRD98L23ACD完成对CIS图像传感器输出信号的放大、A/D等处理,其分辨率为8位,具有6位程控增益放大器,8位程控偏移调节器。采用缓冲器74HC244完成传感器处理器输出数据的缓冲。
2.2硬件设计框图
利用DSP芯片支持库开发方法,将软件模块对应为硬件模块,系统的框图如图1所示。由TMS320C6416DSK开发板定时器(TIMER)模块提供图像传感器SV253A4和传感器处理器XRD98L23ACD的时钟信号。通用输入输出口(GPIO)模块和多道缓冲串行口(MCBSP)模块配合,模拟传感器处理器XRD98L2 3ACD控制字的写入时序,完成控制字的写入。EDMA模块和EMIFA模块配合采用EDMA方式读取外部存储器数据的方法读取缓冲器74HC244内数据到DSP内部存储器。中断模块完成TIMER模块的时钟中断设置,该时钟中断触发EDMA模块相应通道完成数据读取。
2.3硬件设计电路
硬件电路如图2所示,图像传感器SV253A4的VOUT引脚信号为输出视频信号, CP引脚信号为时钟脉冲输入信号, SP引脚信号为开始脉冲信号。
传感器处理器XRD98L23ACD的RED引脚信号为红分量输入信号,DB0~DB4引脚信号为数据输出位0~4信号,复用DB5/SCLK引脚信号数据输出位5或者数据输入SCLK信号,复用DB6/SDA7A引脚信号数据输出位6或者数据输入SDATA信号,复用DB7/LD引脚信号数据输出位7或者LD信号,ADCCLK引脚信号为A/D转换时钟信号,CLAMP引脚信号为钳位和视频采样信号,SYNCH引脚信号为新行开始和串行数据输入控制信号。
缓冲器74HC244的1A1~1A4和2A1~2A4引脚信号为两组数据输入信号, 1Y1~1Y4和2Y1~2Y4引脚信号为两组数据输出信号, 1G和2G引脚信号为低电平有效使能信号。
TMS320C6416DSK的T0UT0和T0UTl引脚信号为定时器0和定时器1输出信号,CLKX0引脚信号为MCBSP0传输时钟信号,DX0引脚信号为MCBSP0传输数据信号,GPIOx引脚信号为通用输入输出信号,AED0~AED7引唧信号为EMIF数据引唧0~数据引脚7信号,AARE引脚信号为EMIF异步读使能信号, AEA21引脚信号为EMlF地址引脚21信号。
TMS320C6416DSK的TOUT0输出引脚为传感器处理器XRD98L23ACD提供占空比为50%的10MHz时钟ADCCLK输入信号,TOUTl输出引脚为图像传慼器SV253A4提供占空比为25%的5MHz时钟CP输入信号;CLKX0、DX0、GPIOx输出引脚分别为传感器处理器XRD98L23ACD提供控制字写入时序的SCLK、SDATA、LD、SYNCH输入信号;GPIOx输出引脚提供图像传感器SV253A4的SP输入信号和传感器处理器XRD98L23ACD的钳位和视频采样CLAMP输入信号;AARE、AEA2l输出引脚与逻辑组合提供缓冲器74HC244的1G和2G输入信号:AED0~AED7输入引啣接收缓冲器74HC244的lYl~2Y4输出信号。
图像传感器SV253A4的VOUT输出信号为传慼器处理器XRD98L23ACD提供单通道RED输入信号。传感器处理器XRD98L23ACD的DB0~DB7输出信号为缓冲器74HC244提供1A1~2A4输入信号。
2.4 硬件工作流程
系统上电后,TMS320C6416DSK由MSBSP和GPIO模块按照传感器处理器XRD98L23ACD写入时序写入控制字,使传感器处理器开始工作。GPIO模块发送SP输入信号,使图像传感器开始行采集;TIMER模块发送CP输入信号模块,使图像传感器开始采集一个点,同时产生时钟中断事件, 触发EDMA模块的时钟中断事件通道完成一次EDMA操作,即EDMA模块通过EMIF模块使能缓冲器, 读取经过传感器处理器A/D转換过采集点的数字信号。 然后触发EDMA中断,完成对采集到的数据处理、修改EDMA目的地址和其它计算。当采集了一行后, 发送SP输入信号开始新的一行采集, 工作时序如图3所示。
3 系统软件设计
软件采用TI公司提供的Code Composer Studio开发环境,用TMS320C6416芯片支持库API开发方式,C语言编程开发。软件设计包括CMD连接命令设计、中断服务表设计、主程序设计。
3.1 连接命令设计
由于采用TMS320C6416DSK硬件平台,根据其存储器映射,如表1所列,使用连接器伪指令MEMORY定义了5个区域反映TMS320C6416DSK存储器映射情况,然后使用连接器伪指令SECTIONS把目标文件的各个代码段和数据段分配到上述5个区域。采用Daughter Card区域的EMIFA CE2区域的首地址OxA0000000作为缓冲器74HC244的地址。
3.2中断服务表设计
中断服务表包含中断服务代码的取址包的一个地址表,当CPU开始处理一个中断时,参照中断服务表进行。C6000的CPU有3种类型中断:RESET(复位)、不可屏蔽中断(NMI)和可屏蔽中断(INT4一INTl5)。中断服务表包含16个连续取指包,每个中断服务取指包都包含8条指令。需要设置REsET复位向量指向C运行环境的入口点_c_int00。由于系统使用的时钟中断和EDMA中断,需要设置时钟中断和EDMA中断向量指向各自中断服务程序的入口。设置其它中断向量指向虚拟中断服务程序入口,即不作任何处理,直接中断返回。
3.3主程序设计
主程序描述了完成系统功能的变量、常量、main函数、EDMA中断服务程序和系统初始化程序的定义。系统初始化函数完成芯片支持库、中断服务表、中断模块、GPl0模块、EDMA模块、MCBSP模块、EMIFA模块、定时器模块和传感器处理器XRD98L23ACD的初始化。E3MA中断服务程序完成EDMA目标地址参数的修改和相关变量计算。Main函数调用系统初始化函数,然后启动定时器,响应EDMA中断。
使用芯片支持库编程必须首先初始化芯片支持库,调用芯片支持库API函数CSL—init完成。
调用芯片支持库API函数IRQ_setVecs完成中断服务表初始化,参数为连接命令文件定义的中断服务表全局标识符。
调用芯片支持库API函数IRQ_globalEnable、IRQ_nmiEnable分别使能全局中断和不可屏蔽中断。这样系统才能响应EDMA中断,调用支持库API函数IRQ_enable使能EDMA中断。参数为IRQ_EVT_ EDMANT表示响应EDMA中断事件。
使用GPIO设备前,必须调用芯片支持库API函数GPIO_open打开GPIO设备,然后调用芯片支持库API函数GPIO—configArgs设置GPIO模式,参数为GPIO相关寄存器值。GtIO模式主要包括各GPIO的使能、方向和初值。
使用EDMA设备前必须调用EDMA_open打开EDMA一个通道。因为系统使用定时器l中断事件作为EDMA的触发事件,所以打开的通道参数为EDMA_CHATINl 。调用芯片支持库API函数EI)MA—configArgs设置EDMA定时器1通道,参数为EDMA相关寄存器值。通道设置主要包括EDMA的数据单元的字长为8位、传输结束中断使能、事件链接不使能、源地址为OxA0000000、数据单元数为l、目的地址为存储数组首地址。目前是用定时器l中断事件触发EDMA传输一采集点数据,同时定时器l中断事件产生TINTl输出信号也是CP输入信号,这样EDMA触发时序和CP输入信号同步。只要传感器处理器能够在两次CP信号间隔内完成一次采集点A/D等处理,就可以实现图像传感器采集一个点后,进行一次EDMA传输,确保EDMA传输采集点无重复无遗漏。如果采用定时器l中断事件触发方式,即CP输入信号同步方式,那么数据单元数为l,使能传输结束中断。在完成一次传输后,触发EDMA传输完成事件中断,完成目的地址的修改和其它计算。因为需要采集的点很多,远远超过参数链接的数目限制,不能静态设置参数链接,只能动态修改EDMA目的地址,所以不使能事件链接。
可以采用SP输入信号作为外中断事件触发信号,触发EDMA外中断事件通道传输一行采集点数据。数据单元数为一行采集点数,根据数据单元字长设置自动修改EDMA目的地址。采用这种触发方式后,EDMA目的地址修改和各采集点传输可以自动完成,为了确保EDMA传输采集点无重复无遗漏,必须控制EDMA与图像传感器时序同步。同步的含义是考虑到传感器处理器A/D等处理的延时的同步,可这样的外中断事件触发方式需要考虑到TMS320C6416DSK的EMDA的工作时序、图像传感器工作时序和传感器处理器工作时序,不如定时器中断事件触发容易实现,但是数据传输性能要高。
使用MCBSP设备前必须调用芯片支持库API函数MCBSP_open打开MCBSP的一个设备,因为系统使用MCBSPO的CLKXO引脚信号和DXO引脚信号,所以打开的设备参数为MCBSP_DEV0。调用芯片支持库API函数McBSP_configArgs设置MCBSPO设备,参数为MCBSP相关寄存器值。设备设置主要包括,根据传感器控制器控制字写入时序的SCLK信号,设置采样频率发生器时钟模式为内部时钟和分频值。 由GPIO模块产生控制器控制字写入时序的SYNcH信号和LD信号,由MCBSP模块产生控制器控制字写入时序的SCLK信号和SDATA信号,将控制字写入到传感器处理器。控制字为11位,前三位S2、S1、SO组合表示写入寄存器的编码,D7~DO表示写入寄存器的8位数据。传感器控制器XRD98123ACD写入时序如图4所示。
由于系统分配缓冲器地址为OxAOOOOOOO,即EMIFACE2首地址,所以需要调用芯片支持库API函数EMIFA_configArgs设置EMIFA。设置主要包括CE2的读图4传感器控制器XRD98L23ACD写入时序写建立时间、触发时间、保持时间和存储器类型为8位异步类型。因为缓冲器可以理解成外部存储器,但是不是实际的标准存储器类型,不具有标准的EMIFA引脚连接方式,所以不能按照标准类型进行设置,需要进行实验调试设置。
使用定时器设备前,必须调用芯片支持库API函数TIMER_open,打开TIMER的一个设备。由于系统使用定时器O和定时器1,所以打开的设备参数为TIMER_DEVO和TIMER_ DEVl。调用芯片支持库API函数TIMER_configArgs设置TIMERO和TIMERl设备,参数为TIMER相关寄存器值。系统CPU时钟为72OMHz。TIMERO设置主要包括时钟源为内部时钟源,频率为CPU时钟8分频,即9OMHz、时钟模式使能、TOUTO为时钟输出引脚和时钟周期为9。TIMERl设置主要包括时钟源为外部时钟源,频率为2OMHz、脉冲模式使能、脉冲宽度为1、TOUTl为时钟输出引脚和时钟周期为l。通过这样的设置,TOUTO可以提供1OMHz,50%占空比时钟输出信号;TOLTl可以提供5MHz,25%占空比时钟输出信号。
结语
本文分析了基于TMS320C6416处理器的嵌入式实时图像采集系统设计方案,充分利用了TMS32Oc6416DSK硬件和软件资源,为基于DSP芯片的有关图像的嵌入式实时系统应用,提供了一个技术参考。