1 系统硬件平台器件选型
1.1 TMS320C6416简介
系统的核心部分选择TI的TMS320C6416 DSP芯片,这款DSP具有如下特点:
① 8 Mbit的片内存储器
② 扩展的直接存储器访问(EDMA)
③ 主机接口(HPI)
④ PCI接口
⑤ 外部存储器接口EMIFA和EMIFB。其中EMI⁃
FA总线宽度为64 bit,EMIFB总线宽度为16 bit
⑥ 多通道缓冲串口(McBSP)
⑦ UTOPIA接口(ATM从设备接口)
⑧ 32位定时器
⑨ 16个通用I/O口(GPIO)
由于进行在线图像处理、图像校正、目标识别,所以,系统的运算数据量较大,而这款芯片提供了高运算速度、大内存空间、足够的I/O接口、多样的通讯方式、宽范围的使用温度,给系统的软件设计提供了充分的时间及空间运算余地,以及适应严酷运行环境的能力。另外,BGA封装也为系统的抗干扰能力提供了保障[4]。
1.2 Virtex-4简介
系统的FPGA 选择Xilinx 公司的XC4VLX100-10FF1513芯片[5],该型器件具有丰富的逻辑资源,能够满足设计要求。Virtex-4 FPGA 是Xilinx 公司推出的第四代Virtex 系列FPGA产品。Xilinx 的Virtex-4 系列将高级硅片组合模块(ASMBL)架构与种类繁多的灵活功能相结合,大大提高了可编程逻辑设计能力,从而成为替代ASIC技术的强有力产品。该产品采用先进的深亚微米设计技术、集成硬IP模块以及三次氧化90 nm铜CMOS工艺技术,使用300 mm(12 英寸)晶片技术生产,因而
其器件成本和功耗降低了50%。基本的Virtex- 4 构建模块是原来的构建模块(可见于流行的Virtex、Vir⁃tex-E、Virtex-II、Virtex-II Pro 和Virtex-II Pro X 产品系列)的增强版本,所以上一代设计可以向上兼容。
2 系统设计
主要分为三部分,分别是图像预处理模块、图像并行处理模块和图像综合处理模块[6]。其系统原理框图如图1所示。
系统详细设计框图如图2所示。
2.1 图像预处理模块
采用Xilinx 公司的Virtex-4 系列芯片和XCF32PVO48C 系列芯片,主要实现对图像数据在FPGA内部进行分割,并将图像传送至4片DSP(图像并行处理模块)中并行处理,DSP对接收的图像实时处理后经FPGA传送至图像综合处理模块中的DSP作综合处理。FPGA内定制8个双口RAM,其中为4片DSP传输图像数据,另外4个传输图像并行处理模块处理后的图像到图像综合处理模块DSP的EMIFA接口。
2.2 图像并行处理模块
采用了TI公司的TMS320C6416系列DSP芯片、AMD 公司的AM29LV800A 系列FLASH芯片和Mi⁃
cron 公司的MT48LC16M16A2BG 系列SDRAM 芯片,主要完成图像数据的并行处理。信号并行处理模块上有4 个TI6416DSP, 分别为DSP1、DSP2、DSP3,DSP4。其中只有DSP1,DSP3带有FLASH,因此上电时需要DSP1通过HPI方式引导DSP2,DSP3通过HPI方式引导DSP4。每个DSP接收1/4帧图像。DSP通过EMIFA的CE2从FPGA中读取图像数据,图像处理后通过EMIFB 写入4 个256 Mb 的DPRAM,并通过EMIFB的CE2将处理后的数据传给FPGA。DSP1的GPIO1用于复位FPGA,GPIO1为低电平时FPGA为复位状态,高电平时为工作状态。DSP1 的GPIO7,DSP2、DSP3,DSP4的GPIO5用于接收FPGA的信号,当FPGA准备好图像数据时,会将这几个信号拉低2ms 左右,以通知DSP 读取图像数据。DSP4 的GPIO15 通过FPGA 与信号综合处理模块的DSP 连接,用于通知DSP读取信号并行处理模块处理好的数据。
2.3 图像综合处理模块
采用和图像并行处理模块相近的硬件平台。其中DSP通过EMIFA接口读取信号并行处理模块处理
过的数据,并对数据进行综合处理。DSP通过EMIFB连接了一个FLASH和SDRAM。当图像并行处理模块处理完数据后,先是由FPGA给图像综合处理模块DSP的外部中断管脚GPIO5发送一个低电平,触发DSP外部中断,DSP再通过其EMIFA的CE0从FPGA综合出的SRAM中读取数据。DSP1预留3个MCBSP通道,实现图像综合处理模块与PC机等上位机之间的信息通讯。
2.4 电源设计
由于采用了多种型号的集成芯片,如FPGA和DSP自身就是多电压工作,需要的工作电压为3.3、2.5、1.8、1.25、1.2 V等。采用TI公司的TPS54310开关电压转换芯片,通过外接不同的配置电阻电容实现输出所需的电压值。
2.5 DSP程序引导
(1)FLASH引导
图像并行处理模块的DSP1、DSP3和图像综合处理模块的DSP是采用这种方式引导的。该引导方式是从8 bit FLASH引导(Bootmode [1:0]=10),采用的FLASH容量为1 M×8 bit,最快读写周期为90 ns。图3为DSP与FLASH的连接图[7]。DSP的EMIFB按照异步存取模式与FLASH连接,FLASH的1 M字节对应DSP的0×64 000 000-0×64 100 000(EMIFB CE1)寻址空间。FLASH工作在8 bit模式。
DSP上电复位后,CPU自动将EMIFB的CE1区间的最开始1 K 字节数据(0×640 00 000-0×64 000400)拷贝到内部RAM(0×00 000 000- 0×00 000400),执行一次引导(被拷贝的代码包括两部分:中断向量表(0×64 000 000-0×64 000 200)和secondarybootloader程序,这部分代码应事先烧入FLASH)。然后CPU产生复位中断,程序指针指向地址0×00 000000,执行跳转指令后程序指针指向secondary boot⁃loader的开始。secondary bootloader实现的功能是将整个应用程序(事先已烧入FLASH)拷贝到其运行地址(内部RAM,这样程序运行的最快),执行二次引导。在secondary bootloader程序的最后,是一个跳转指令,CPU跳转到_c_int00,开始执行应用程序[8]。
(2)HPI引导
图像并行处理模块的DSP2和DSP4是采用HPI方式引导的,DSP2通过HPI接口由DSP1引导程序。DSP1/DSP2 的程序都存放在DSP1 的片外FLASH中。DSP1上电后程序引导结束后,DSP1程序指针跳转至DSP1 应用程序代码的起始地址开始执行程序。DSP1的应用程序首先复位DSP2;然后从FLASH中读取DSP2的程序代码,通过HPI接口写入DSP2的内存中相应地址空间;最后DSP1通过HPI接口唤醒DSP2,完成对它们的程序引导[9]。
3 软件设计
3.1 FPGA部分
FPGA编程语言使用Verilog HDL语言[10],软件环境为XILINX ISE10.1。软件主要包括顶层模块,
FPGA 与图像数据接口驱动模块,双口RAM 模块,EMIF接口模块[11]。
FPGA软件组成图如图4所示。
3.2 DSP部分
DSP程序用C语言和TMS320C6000系列汇编语言编写,编程环境为CCS3.1或CCS3.3[12]。DSP程序由主函数main.c、多个功能模块函数和驱动函数Drive_EMI⁃FA.c、Drive_GPIO.cDrive_HPI.c、Drive_EDMA.c 等组成。second_level bootloader.asm 中的内容是二级引导程序,目的是将程序的各段从LOAD地址搬运到RUN地址,烧写时二级引导程序存入FLASH的起始1 K的空间,DSP上电复位后自动将这段代码拷贝到内部RAM,然后执行这段代码。vectors.asm 是中断向量表,当中断(必须是被使能的中断)产生时,CPU自动跳到中断向量表中相应的位置。DSP软件流程图如图5所示。
信号并行处理板中DSP的软件主要为接口驱动部分,其中主要接口驱动为DSP读写FPGA,4个DSP的接口驱动相同,以下是DSP从FPGA中读取数据的程序。
emif=(unsigned int *)0×00090000;
emif1=(unsigned int *)0×000b0000;
dualram=(int *)0×a0000000;
Drive_GPIO(12, DRIVE_GPIO_Output, 0,0);
memmove(emif,dualram,131072);
Drive_GPIO(12, DRIVE_GPIO_Output, 0,1);
memmove(emif1,dualram,32768);
由于采用了DSP的GPIO12作为连接FPGA的最高位地址线。因此,要从FPGA中读取128 K字节的数据需要用到上段程序。
4 实验测试结果
利用上述图像处理平台,对输入640×512×25(帧)4 bit/s的红外图像进行了实时处理,测试结果表明,该处理平台可以实时检测出满足条件的目标信息,满足设计要求。此前利用单DSP平台实现了数据量为256×256×10(帧)×8bit/s图像的实时处理,相比之下,采用多DSP平台的处理能力较单个DSP有了较大提高。
5 结束语
运用TI的高性能DSP(TMS320C6416)设计了一种通用实时图像处理系统,讨论了系统设计的关键结构和系统处理实时性要求。基于多DSP和FPGA的图像处理系统针对图像数据量大,数据复杂的特点,充分利用了DSP计算庞大数据的高效性和FPGA精于并行处理的优点,具有集成度高、存储量大、处理速度快和方便传输等特点。结果表明该系统能够有效地实现大量的实时图像处理任务,具有广泛的应用前景,同时也可在更快速度的平台上进行拓展[13]。