首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

DSP+FPGA折反射全景视频处理系统中双核高速数据通信

DSP+FPGA折反射全景视频处理系统中双核高速数据通信

1 引言
全景视频技术可以在任意时刻同时获取周围360°观察方向上的场景,使得观察者能够更快更准确地感知周围场景的变化,该技术可广泛应用于战场环境侦察、视频监控、机器人导航等领域[1−4]。
在嵌入式系统上实现折反射全景成像处理获取全景视频,需要对折反射全向视频图像进行实时采集、预处理及柱面全景展开等,整个过程算法复杂、计算量大,一般的单核嵌入式视频处理系统难以达到实时处理的要求[5],因此在实际应用中常采用多个嵌入式处理器协同的方法(例如DSP+FPGA 协同)完成折反射全景成像处理。文献[6]采用FPGA 和多个DSP 互连的并行处理结构,实现了一个高速数据传输带宽、低延迟且计算性能强大的实时图像处理系统。文献[7]采用双FPGA 加双DSP 的结构,使用流水线的技术,设计了每秒可处理50 帧分辨率为240×320 的视频图像的嵌入式系统。
但是,在这种多核协同的结构中,各个处理器芯片之间需要进行大数据量高速传输。以每秒采集处理25 帧400 万像素的折反射全向图为例,假设图像中每像素2 个字节的YCbCr 4:2:2 格式为例计算,则多核之间的数据传输速率约为1.6 Gbps(即200MBps)。若进一步要求每个芯片至多只能用50%的时间用于数据传输,另外50%的时间用于其他运算处理,这样,实际设计中要求多核之间的数据传输速度至少在3.2 Gbps(即400 MBps)以上。
为了解决上述问题,本文提出一种DSP+FPGA 协同处理结构中的双核间高速数据通信方法。在硬件上将DSP 的EMIF 接口与FPGA 相连建立了双核高速数据传输通道;使用基于地址总线的控制指令编码解析的方法实现了双核之间控制指
令的快速交互,有效协同了FPGA 和DSP 的工作;通过逆向波形分析的方法[8]分析研究DSP 执行DMA 操作的时序,在FPGA 上模拟DMA 传输模块,使用基于乒乓缓存机制的间接DMA 通信方法[9]实现DSP 和FPGA 之间高速数据通信。实验结果表明,DSP 与FPGA 之间的双核数据传输速度最高可达4.683 Gbps(即585 MBps)。
2 DSP+FPGA 双核全景视频处理系统结构
基于DSP+FPGA 双核折反射全景视频处理系统的结构如图1 所示,系统核心为DSP 和FPGA,并集成了感光CMOS 图像采集设备、大容量的存储器(FLASH 和SDRAM)、多个标准的外部接口(视频、网络和ATA 接口)。其中,DSP 作为系统的主控芯片,控制整个系统的运行。并根据DSP 和FPGA 的特点,对系统任务进行了划分,平衡二者的任务负载。FPGA 负责折反射环状全向图像采集、预处理及展开运算,DSP 则负责柱面全景图的后期处理(视频压缩、目标检测等)、视频输出和存储等工作。该系统具体的工作流程如下:

(1)系统起始运行时,首先由DSP 发起指令,通知FPGA 控制CMOS 图像采集设备采集一帧折反射环状全向视频;
(2)FPGA 采集一帧原始的折反射环状全向视频并对其进行颜色空间转换等预处理操作,最后将结果存入外部SDRAM;
(3)FPGA 对该帧全向视频执行柱面展开运算,得到柱面全景图像;
(4)DSP 从FPGA 读取展开的柱面全景图像,然后对其进行运动目标检测、图像压缩等后期处理;
(5)通过外部的ATA、网络和视频输出等接口对处理完的柱面全景视频数据进行存储和输出。
3 DSP 与FPGA 硬件互连
基于FPGA+DSP 双核架构的折反射全景视频处理系统在运行过程中,DSP 和FPGA 之间存在大量的高分辨率柱面全景视频数据需要传输。在双核之间建立一条高速、可靠的数据传输通道,实现对海量视频数据的实时传输,就成为影响整个系统性能的关键因素。
通过研究DSP 和FPGA 芯片实现外部数据存储、传输常用的方法和特点,在设计基于DSP+FPGA 的双核视频处理系统时,使用了DSP 的EMIF 接口与FPGA 互连。EMIF 接口是DSP 的外部存储器接口,通过对该接口寄存器进行设置,可
以将其灵活配置成同步、异步等各种类型的高速数据接口,使用该接口,DSP 可以与外部据存储器实现每秒数百兆字节的数据传输速率;相应地,FPGA只需要根据DSP EMIF 接口的工作时序,灵活地配置芯片内部资源和外部通用IO,即可实现与DSP EMIF 接口的无缝对接,在双核间建立高速数据传输通道。
如图2 所示,将FPGA 的IO 引脚分别与DSP EMIF 接口的数据、地址、读/写控制、GPIO 等信号线相连,在双核之间构建了64 位宽的数据总线、25 位宽的地址总线、以及读/写、时钟、命令使能等信号用于双核数据通信。其中,通过数据总线、地址总线、命令使能信号实现了DSP 和FPGA 之间控制指令的交互,协同双核工作。使用FPGA 内部的Block RAM 模拟了2 个数据缓存和1 个状态寄存器,状态寄存器用于标识数据缓存和SDRAM 存储器的状态, 而数据缓存则作为视频数据从SDRAM 到DSP 传输过程的中间缓存,它们采用乒乓机制轮流将全景视频数据从SDRAM 送到DSP,实现双核之间无缝的高速数据通信。并且,在FPGA内部构建了一个主控逻辑,用于接收和解析DSP发送的地址、数据和控制指令,并根据接收的控制指令,控制数据缓存和SDRAM 等模块的工作,保证了DSP 与FPGA 高效协同工作,实现双核之间的高速数据通信。

4 DSP 与FPGA 高速数据通信
根据上述的硬件电路设计方案,建立DSP 与FPGA 数据通道,通过基于地址总线的控制指令编码解析方法实现双核之间控制指令交互,协调双核工作;通过DMA 逆向波形分析在DSP 与FPGA之间模拟DMA 传输,使用基于乒乓缓存机制的间接DMA 通信等方法完成全景视频数据在DSP 和FPGA 之间的高速传输。
4.1 基于地址总线的控制指令编码解析机制
基于DSP 与FPGA 架构的全景视频处理系统中,双核之间不仅要进行视频数据传输;同时,DSP作为主控芯片,还要控制和协调双核的工作,双核之间需要进行控制指令的交互,以保证整个视频处理系统正常、高效的运行。常用的控制指令传输方法是主控芯片通过一次写操作将控制指令写入外部芯片的指令寄存器,然后外部芯片读取指令寄存器并执行相关操作,最后再由主控芯片通过一次读操作读取返回结果或应答信息。使用该方法在DSP 与FPGA 之间进行控制指令交互,每次都需要一读一写共两个周期。对于一些简单的控制指令,还可以进一步简化该过程,以减少控制指令传输时占用的双核通信时间,提高双核通信效率。文中提出了基于EMIF 接口异步通信模式下的使用地址总线进行控制指令交互的方法,将控制指令进行编码后通过地址总线进行传输,接收方FPGA 根据地址总线的信号解析并执行控制指令,最后通过数据总线返回执行结果,这样每次只需要一个读周期就可以在DSP 与FPGA 之间完成指令传输和结果返回整个过程。
使用基于地址总线的控制指令编码解析的方法传输控制指令,通过DSP EMIF 接口的信号,在DSP 和FPGA 之间构建命令使能、地址总线和数据总线用于实现双核之间的控制指令交互。命令使能信号线为双核通信提供指令收发的使能信号,通过地址总线的不同编码组合表示DSP 向FPGA 发送的不同指令,而数据总线则用于返回执行结果。
为了完成DSP 与FPGA 之间控制指令交互,实现双核高效协同工作,控制指令交互过程如图3所示。DSP 首先进行通信命令使能表示即将传输控制指令,通过地址总线向FPGA发出控制指令编码,FPGA 解析地址总线上的控制指令后立即执行相关操作,并将相关执行情况或结果通过数据总线返回给DSP。具体过程如下:

(1)指令使能:DSP 进行通信指令使能,通知FPGA 接收控制指令。
(2)指令发送:DSP 通过EMIF 接口向FPGA发起一次“读”操作周期,并根据控制指令的内容进行编码给地址总线赋值。
(3)指令解析:FPGA 接收地址总线上的地址数据,并将其解析成相关的控制指令。
(4)执行指令:FPGA 按照解析的控制指令执行相关操作。
(5)结果返回:FPGA 将指令执行状态或者返回结果“赋值”给数据总线,DSP 采集数据总线的数据,得到FPGA 对该控制指令的执行情况。
对于简单的控制指令使用上述的方法在双核之间进行控制指令交互,而对于复杂的控制指令仍采用传统的写指令寄存器的方法传输控制指令,综合使用这两种指令交互方式,提高双核之间控制指令的传输效率,高效协同DSP 和FPGA 的工作。
4.2 DSP 与FPGA 高速DMA 通信
4.2.1 DSP 与FPGA 双核DMA 时序逆向波形分析
在DSP+FPGA 的双核嵌入式系统中,DSP 和FPGA 分别有各自的SDRAM 存储器。而双核数据传输过程中,DSP 需要通过EMIF 接口读取FPGA端SDRAM 存储器中的视频数据。此时,由于FPGA端SDRAM 存储器并未直接与DSP 相连,DSP 如果直接读取FPGA 端SDRAM 中的数据,就会存在了两级I/O Pad、三态门开关逻辑等导致的延迟,无法满足DSP 的EMIF 接口访问SDRAM 的时序要求,因此DSP 不能直接采用高速的DMA 方式访问FPGA 端SDRAM 存储器。
为了使DSP 与FPGA 进行双核DMA 通讯,需要在FPGA 上实现模拟DMA 传输模块,这样,当DSP 发出DMA 请求时,FPGA 上的模拟DMA传输模块就可以给出数据响应,完成DMA 方式的高速数据传输。
为了解决此问题,结合逆向工程的思想,使用逆向波形分析方法[8]分析、总结并归纳DSP 上的DMA 操作中通讯双方的信号波形时序关系,然后用FPGA 模拟满足DMA 时序要求的模拟DMA传输模块,从而实现DSP 和FPGA 之间的双核DMA模式的高速数据传输。其原理如图4 所示。


(1)获取DSP 在DMA 模式下数据通讯波形。具体方法是,在DSP 上运行一个对DSP 端SDRAM存储器进行DMA 读/写的小程序,同时在FPGA上利用在线逻辑分析工具(例如Xilinx ChipScope)实时获取EMIF 总线上在进行DMA 通信时的信号
波形(如图5 所示)。
(2)在获得的DSP 进行DMA 操作的波形后,再利用逆向波形设计方法,依据该波形在FPGA 上模拟实现能与DSP 进行DMA 通讯的模拟DMA 传输模块。
4.2.2 基于乒乓缓存机制的间接DMA 通信
在DSP+FPGA 双核全景视频处理系统中,展开后的柱面全景数据存储在FPGA 端的SDRAM 存储器中,但是该SDRAM 存储器并未直接与DSP 相连,DSP 无法直接采用高速的DMA 方式从存储器中读取视频数据。因此,通过逆向波形分析的方法在FPGA 端模拟双核DMA 的传输模块,并使用基于乒乓缓存机制的间接DMA 通信方式[9]实现双核DMA 高速数据传输。
DSP 与FPGA 的间接DMA高速通信方法如图6 所示,在FPGA 上定义了3 个模块,即双核DMA控制模块、乒乓缓存模块、SDRAM 控制模块。其中,双核DMA 控制模块与DSP 相连,负责接解析来自DSP 的DMA 指令,并将乒乓缓存的数据转发给DSP;乒乓缓存模块中包含有两个独立的双口数据缓存,用于缓存双核DMA 传输的数据;SDRAM控制模块与FPGA 端SDRAM 存储器相连,以FullPage 模式从FPGA端SDRAM存储器中高速读写数据。其中,FPGA 与外部SDRAM 存储器接口数据总线为64 位宽,当以FullPage 模式从SDRAM中读取数据时,会连续读取256 个时钟周期的数据,大小正好2 kB;因此建立的每个乒乓缓存容量为2kB,并同时对FPGA 端SDRAM 存储器进行分块,每块大小也为2 kB,以便于数据传输。

当DSP 通过双核DMA 模式访问FPGA端SDRAM 存储器中的数据时,首先发送DMA 指令,并指定访问FPGA 端SDRAM 存储器的块地址;FPGA 则根据地址信息,每次以2 kB 为单位从SDRAM 将数据搬移到数据缓存1 或缓存2;然后双核DMA 控制模块将缓存1 或缓存2 中数据以DMA 方式传入DSP 端SDRAM 存储器。其中,数据缓存1 和缓存2 以乒乓模式交替工作,即在FPGA向缓存1 中写入数据的同时将缓存2 中的数据传输给DSP,而在DSP 读取缓存1 中数据的同时FPGA向缓存2 中写入新的数据,实现了对双数据缓存读写访问时间的交叉隐藏,减少了DMA 通信过程中数据准备的时间,提高了双核DMA 通信的速度。
5 实验结果
本文所设计的DSP+FPGA 双核架构的折反射全景视频处理系统如图7 所示。其中,DSP 芯片选取TI 公司的C6000 系列TMS320DM642 芯片,主频为600 MHz,通过EMIF 接口与FPGA 和外部SDRAM 相连,该接口工作时钟为1/6 主频(100
MHz),数据总线宽度为64 bit。FPGA 是选用Xilinx公司的Spartan 3 系列的XC3S1000,内部工作频率为120 MHz,与外部SDRAM 接口的数据总线宽度64 bit,同步时钟频率为120 MHz。外部SDRAM存储器使用Micron 公司的MT48LC4M32B2 芯片,最高可支持166 MHz 的工作频率。在FPGA 内部构建乒乓缓存,大小为2 kB;同时根据乒乓缓存大小对FPGA 端SDRAM 进行分块,每块大小2 kB。

基于上述的实验设定,对DSP+FPGA 折反射全景视频处理系统进行反复测试运行。经统计,系统每采集一帧2560×2560 分辨率的环状全向视频,并将其展开为3264×1076 分辨率的柱面全景视频,最后输出到显示设备,平均耗时为36.3 ms,帧速率可达27 fps。
在DSP 与FPGA 的双核数据通信中,每帧待传输的柱面全景视频分辨率为3264×1076,格式为YCbCr 4:2:2,大小为6.7 MB,共分成3430 个2 kB大小数据块。这里,每个数据块从FPGA 端SDRAM以FullPage 模式传输到乒乓缓存,平均耗时2.20μs,整帧视频共耗时7.55 ms;同时,测得DSP 通过DMA 方式从乒乓缓存连续读取一帧全景视频数据大约需要12.0 ms,比乒乓缓存的数据准备时间长;由此得出DSP 与FPGA 之间每帧6.7 MB 的视频数据传输时间为12.0 ms。经过计算,使用本文方法得到的DSP 与FPGA 之间数据传输速度高达4.683 Gbps(585 MBps)。
6 结论
本文针对双核处理平台中高速数据通信困难的问题,设计了DSP 和FPGA 双核的硬件连接方案,使用地址总线传输DSP 与FPGA 之间的控制指令,提高控制指令传输效率,使用逆向波形分析和基于乒乓缓存的间接DMA 通信方式,实现DSP 与FPGA 之间的双核DMA 高速数据通信,其传输速度高达585 MBps,满足了基于DSP+FPGA 结构的高分辨率全景视频处理系统中对控制指令和视频数据高速通讯的需要。在后续的工作中,将通过提高DSP 和FPGA 通信的时钟频率来提高双核数据通信速度,通过数据压缩来提高双核之间数据传输效率,从而提高DSP+FPGA 全景视频处理系统的性能。
作者:李 乐,熊志辉,王 斌,张茂军,陈立栋
记录学习中的点点滴滴,让每一天过的更加有意义!
返回列表