1 引言
随着社会的发展,机动车辆的日益增多,对现代化的交通提出了更高的要求,智能化的交通管理成为一种需要。在多种交通违规现象中,闯红灯违章无疑是很普遍,也是危害很大的一种,为了遏制闯红灯违章行为,减少交通事故的发生,并为交通部门提供有效的执法依据,闯红灯违章检测已经成为交通监控的重要组成部分。
自从20世纪70年代末第一片数字信号处理芯片(digital signal processors,dsps)问世一来,dsps极大的促进了数字信号处理的发展。尤其近年来,随着半导体技术的发展,dsps芯片的功能越来越强大,ti公司发布的新一代dsps芯片tms320c6000首次突破1000mips,这使得很多以前要在pc机上完成的工作,现在已经可以由dsps 来完成。
在dsps出现之前,实时信号处理一般是在通用处理器中完成,以往的闯红灯检测系统也大都以pc机为核心,从数据采集、图像处理,以及图像的保存,所有工 作都在主机上完成,但是存在成本较高,而且系统扩展性不好的问题。本文提出了基于ti公司tms320c6211的闯红灯检测软件设计实现,将检测的主体工作在dsps上完成,从而减轻了主机的负担,而且易于进行系统的扩展。
2 系统总体设计
tms320c6211是ti公司的tms320系列产品中的新一代高性能定点dsps芯片,芯片的工作频率可达200mhz。芯片内有8个并行处理单 元,分为相同的两组;其体系结构采用甚长指令字(vliw)结构,单指令字长为32bit,8个指令组成一个指令包,总字长为256bit;芯片内部设置 了专门的指令分配模块,可以将每个256bit的指令包同时分配到8个处理单元,由8个处理单元并行执行。
目前dsps芯片的应用开发基本包括两种方案,一种是在微型计算机上插上dsp芯片开发处理扩展板及输入/输出扩展板,利用现有微机及操作环境开发算法软件;另一种是根据控制对象要求设计dsp芯片控制器电路和有关输入/输出接口硬件。
两种方案各有其特点,考虑到系统的开发效率和扩展性,本系统选 择了前一种方案。该方案由dsps、现场可编程器件(cpld),以及工控机等组成,完成图像采集、视频检测、以及图像保存等一系列工作。系统结构如图1 所示。

3 软件系统结构
3.1 功能模块划分
软件系统结构如图2所示。

从总体结构上看,系统由图像数据采集模块、视频检测模块、jpeg压缩模块,以及数据上载模块这四部分组成。
图像数据采集模块是整个系统的基础,完成图像数据的采集,考虑到数据量以及实时性的要求,应当使用edma的方式。视频检测模块是整个系统的核心,在获得 交通灯信息的前提下,它对数据采集模块得到的图像数据进行分析,提取车辆的运动信息,判断车辆是否闯红灯。如果车辆没有闯红灯,则对以后的图片继续进行检测,如果有车辆闯红灯,为了保存车辆闯红灯的图片,就需要由jpeg压缩模块对上述图片进行jpeg压缩,最后,数据上载模块通过pci将图片数据上载到主机。
3.2 功能模块实现
(1) 图像数据采集模块
系统使用的视频图像输 入符合ccir 601建议,ccir 601规定,对于所有制式,每一行有效采样点数为720点,但对于不同制式,每帧图像有效行数不同,这里采用pal制式,按照参数定义其分辨率为 720×576,像素输出格式为4:2:2的16位yuv数据,其中y、u、v各为8位数据。
每帧图像包含奇偶两场,分别进行采样,这里我们只需要取一场的数据进行处理,所以实际使用的一帧图像大小为360×288×4 byte。另外,在每行开始时,要插入4 byte的标志位,因此实际一行占用361×4 byte大小的空间。因为每秒钟采样25帧图像,所以每两行图像的间隔时间为1000/25/576=0.07ms,在这么短的时间内要完成1k byte的数据搬移,使用cpu中断的方式是不适合的,只能采用edma方式。
扩展的直接存储器接口访问(edma)是c6211/c6711独有的特征。与其它几种c6000芯片相比,c6211中的edma控制器在结构上有很大 的不同。edma对于dma的增强之处包括:提供了16个通道,通道优先级可设置,可以实现数据传输的链接[1]。
edma的16个通道分别有一个事件与之关联,由这些事件触发相应通道的传输。通过eer寄存器可以控制每个事件的使能/禁止,事件寄存器er负责捕获所 有的事件,不论该事件是否被使能,edma都会进行这样的捕获。
edma在结构上与其他c6000的dma有很大的不同,这表现在,c6201/c6701的dma控制器是基于寄存器结构的,而c6211/c6711 的edma控制器是基于ram结构的。
参数ram(parameter ram)容量为2 kb,其中存放每个edma通道需要的各个传输控制参数。另外,多组参数的入口还可以被彼此链接起来,从而实现某些复杂数据流的传输。2 kb的参数ram内容包括:16个edma事件对应的16个参数组;69个传输参数组,用于实现事件的链接控制;8byte空闲的ram,作为“草稿区”。
本系统中,使用中断管脚int4作为图像帧中断,int5作为图像行中断,程序启动以后,等待发生第一个帧中断,表示新的一帧图像开始,此时即可开始启动edma进行数据传输。由于其中涉及两个外部中断,为了保证从一帧新的图像产生时开始edma传输,因此程序应该按照一定的顺序启动 edma传输图像数据。edma启动流程图如图3所示。

另外,为了实现连续的图像采集,还要使用多组edma参数的连接(linking)。可以将edma的参数连接起来,组成一个参数链,为同一个通道服务。在edma传输中,一次传输任务的结束会自动从参数ram重载下一次传输需要的参数。
连接由edma参数ram中的16bit连接地址和link 位控制,link位负责连接操作的使能,连接地址用来指向传输链中下一个传输参数组。
本系统中,因为使用int5作为外部事件,因此需要配置事件5的参数,在此使用事件16作为连接地址,则事件5的可选参数(option parameter)和连接地址(link address)配置如下所示:
*(unsigned volatile int *)(event5_params+opt)=0x20350003;
*(unsigned volatile int *)(event5_params+lnk)=0x00000180;
同时,在对事件16的参数进行配置时,也将其连接地址设定为link=0x0180,就可以实现连续的edma传输。
(2) 视频检测模块
在进行视频检测之前,首先要得到图像数据,由于edma传输是连续进行的,因此直接使用数据采集模块的缓冲区数据是不行的,需要在sdram中划分出两帧图像大小的空间,作为视频检测的数据来源。
首先,使用#pragma data_section指令在sdram中分配两帧图像大小的区域,代码如下:
#pragma data_section(porigin,".buff2")
unsigned int porigin[361*288];
#pragma data_section(pnew,".buff3")
unsigned int pnew[361*288];
其次,设定一个edma事件传输两帧图像。这样,每当一个edma事件结束时,就会产生edma中断,表明两帧图像传输完成,这时就可以通过qdma完成 sdram内的数据搬移。
qdma,快速dma,支持edma所有的传输模式,但是前者提交申请的速度要比后者快很多,尤其时候需要由cpu直接 控制搬移一块数据的场合。qdma的操作由两组寄存器控制,第一组的5个寄存器中定义了qdma传输所需的所有参数,第二组的5个寄存器是第一组的“伪映 射”。qdma传输要求采用帧同步,因此可选 参数寄存器中的fs字段没有意义,qdma传输也没有中间传输状态,每次任务只提交1次申请。
使用qdma的操作如下:
*(unsigned volatile int *)qdma_src=0xb0000000;
*(unsigned volatile int *)qdma_dst=0xb00cb100;
*(unsigned volatile int *)qdma_cnt=0x023f0169;
*(unsigned volatile int *)qdma_idx=0x00000000;
*(unsigned volatile int *)qdma_s_opt=0x45a00001;
需要注意的是,因为程序中同时使用了edma和qdma,为了避免出现冲突,应当注意对edma和qdma优先级的设定,pri对应的位决定了其优先级顺 序,在此设定edma优先级较高。
视频检测算法是本模块的核心部分,为了通过图像数据判断经过车辆的运动状态,使用了基于虚拟线圈运动矢量的检测方法。
虚拟线圈(virtual loops)是在图像序列中仿照感应线圈探测器(ild)的功能定义的。在获得了图像序列的基础上,一帧图像中一定区域可以被定义并称作虚拟线圈,这一定 义可以扩展到整个图像序列,或者在其它图像序列中重新定义[2]。
该检测算法的基本思想是:首先,根据道路方向、车道数、摄像机位置在图像序列中 设置虚拟线圈,其依据是设置的虚拟线圈能够反应经过车辆的运动状态,该步骤是整个检测模块的基础,虚拟线圈位置的选择会对检测的效果产生直接的影响;其 次,对连续采集的图像序列中的虚拟线圈进行匹配,估算虚拟线圈的运动矢量(幅值和方向),该过程的关键在于匹配算法的选择,既要达到一定的准确性,又要满 足实时性的要求;最后,对虚拟线圈的运动矢量信息进行分析,从而确定车辆的运动情况。
(3) jpeg压缩模块
如上所述,一幅图像需要占用的空间大小为361×288×4byte,这样大的数据量,无论是对于接下来的数据上载,还是在主机上的存储,无疑都是很不方 便的<




