基于DSP和FPGA的全景图像处理系统设计与实现
扫描二维码
随时随地手机看文章
摘 要: 设计了基于DSP和FPGA的全景图像处理方案,FPGA完成图像采集,DSP完成图像的各种处理算法。利用FPGA设计了基于乒乓缓存机制的SDRAM控制器;采用EDMA方式,完成了DSP与FPGA的数据交换。测试结果表明,DSP+FPGA折反射全景图像处理系统完成了对分辨率为2 048×2 048、每秒15帧的Camera Link接口的全景图像的实时采集及缓存解算,并以1 024×768的分辨率进行实时显示。
关键词: DSP;FPGA;SDRAM控制器;乒乓缓存
全景图像实时处理系统可以获取周围方向上的场景图像,可广泛应用于军事侦察、视频监控、机器人视觉等领域[1]。
对于高分辨率折反射全景图像处理系统,如果按照分辨率为2 048×2 048、帧率为15 f/s、每个像素为8 bit的灰度来计算,相机的数据吞吐量为480 Mb/s。在图像采集、缓存、解算以及显示输出过程中,需要选择合适的算法进行大量的计算,一般单独的处理器组成的嵌入式系统很难完成高分辨、实时性的图像快速采集[2],因此需采取多个并行嵌入式处理器结构完成折反射全景成像处理[3-4]。
本文利用并行嵌入式处理结构,设计了基于FPGA和DSP的双核全景图像处理系统。主要包括基于FPGA的SDRAM控制器设计以及采用双SDRAM在乒乓模式下轮流存储采集图像的策略,实现了高速全景图像的存储。在FPGA与DSP之间建立合理的握手机制,避免在同一时刻对同一个SDRAM进行读和写;设计了DSP与FPGA通信接口,实现了二者之间的高速数据通信。本系统为后续算法处理提供了更加充足的时间裕度,为高速实时图像处理提供了坚实的基础。
1 全景图像处理系统结构
DSP+FPGA构成的高分辨率折反射全景图像处理系统的结构如图1所示。由Camera Link 接口的CCD相机采集的灰度图像数据经过LVDS串并转换芯片转换,在FPGA的控制下,完成图像的采集,通过FPGA进行乒乓缓存操作,64 bit SDRAM控制器完成对缓存器的突发式读写控制,为整个系统提供高速缓存器;FPGA利用DSP的EMIF接口将已经存储的图像数据以DMA方式传送给DSP,DSP接收数据后完成全景图像柱面展开、分割识别等算法;DSP再通过EMIF接口把数据以DMA方式传送回FPGA;利用FPGA把数据写入到缓存器中,最后发送到显示器进行显示。
2 乒乓缓存模式下SDRAM控制器的设计及实现
2.1 SDRAM控制器的结构设计
SDRAM控制器的结构组成包括:系统控制接口模块、命令接口与解析模块、刷新模块、操作信号生成模块、数据通路模块。其中,系统控制接口模块用以接收系统的控制信号从而产生相应的CMD命令组合;命令接口与解析模块用以接收CMD命令解码并生成相应操作指令;操作信号生成模块用以接收操作指令,并根据相关时序生成对SDRAM的操作信号;数据通路模块用以控制数据流的方向以及产生有效的数据输入输出;刷新模块包含在命令接口与解析模块中用以产生刷新以及自动刷新逻辑。
2.1.1 系统控制接口模块
该模块包含初始化进程以及系统指令分析机制。初始化进程要完成对SDRAM器件和SDRAM控制器的初始化,以保持SDRAM控制器与外部SDRAM器件的工作模式匹配[5]。初始化完成后,系统的指令分析机制就可以接收并且分析外部数据、地址、控制信号以及从命令接口与解析模块返回的命令响应信号(CMDACK),从而以此产生对应的CMD命令和SADDR地址信息给命令接口与解析模块。此外,SADDR是分时复用的,在初始化阶段SADDR用来传输用户设定的工作模式控制字,而正常读写操作中,SADDR又可作为分时复用的地址线传输SDRAM所需要的row、column以及Bank地址。
2.1.2 命令接口与解析模块
此模块对由系统控制接口模块接收到的CMD命令进行判断并解码,其输出就是发送给下一级即操作信号生成模块的操作指令。同一时刻只允许输出一个有效操作指令。该模块中含有模式寄存器用来预设控制器的模式参数,为控制提供具体的依据。
2.1.3 操作信号生成模块
此模块根据命令接口和解析模块发送过来的操作指令,按照SDRAM读写时序规范产生操作动作以及相应的操作信号。程序中,CMD命令WRITEA和READA是实际上隐含了ACTIVE命令的WRITE和READ,它的实际工作过程是:当该模块收到do_write或do_read指令后,其反馈给命令接口及解析模块的CMDACK置为1,表示响应命令标志,同时发出ACTIVE激活操作;紧接着产生一个延时动作,经过初始化时配置规定的CAS Latency延时时间后再进行写或读操作。
2.1.4 数据通路模块
此模块在OE信号控制下,保持数据的输入输出和相应的操作指令在时序上同步,并且根据SDRAM器件的时序参数加入一定的延时以满足宏观的时序符合数据手册的要求。当OE=1时,数据由控制器经过DQ引脚写入SDRAM器件;当OE=0时,数据由SDRAM器件的DQ引脚读入到控制器。
2.2 乒乓缓存模式
将输入数据流通过输入数据选择单元实时地分配到两个数据缓存区。分别利用两组SDRAM作为乒缓存器和乓缓存器,使用“空间换取时间”的方法,使两组缓存器在同一时间分别作为读和写的缓存,达到并行的目的。
在乒状态时,乒乓操作控制器向SDRAM B中写入数据,与此同时从SDRAM A中读取状态交换之前已经存入的数据;在乓状态时,乒乓操作控制器向SDRAM A中写入数据,同时从SDRAM B中读取状态交换之前已经存入的数据,同时乒乓操作控制与其他的采集、算法和显示模块进行数据交换。乒乓缓存结构如图2所示。
2.3 SDRAM控制器实现及时序仿真
SDRAM控制器实现:SDRAM控制模块与FPGA端的SDRAM存储器相连,以FullPage模式从FPGA端的SDRAM存储器中高速读写数据;触发FullPage的REFRESH的命令,既保证数据不丢失,也能保证刷新的完成。在发出FullPage命令以后,必须给出一段空操作的延时或读操作。时序仿真分别如图3、图4、图5所示。
3 DSP与FPGA的数据通信
为了提高数据传输的吞吐量,DSP与FPGA之间使用DMA方式进行数据传输[6],每次突发传输一行图像数据,使传输速率最大化。DSP采用EMIF接口,EMIF数据接口可以配置为多种传输方式并且可以DMA传输,而且是无缝接口。由于DSP与FPGA是跨时钟域系统,所以必须利用FPGA做好跨时钟域处理,使用FIFO作为接口进行数据缓存。
FPGA将采集到的数据经过预处理之后以64 bit的数据宽度开始向DSP传送,同时FPGA通过发出脉冲沿触发DSP外部中断管脚来触发DSP的全局中断。全局中断触发EDMA把外部数据传送给DSP内部的RAM,当EDMA(接收)传输完成后,DSP的EDMA传输事件管理器会触发“EDMA传输完成中断”,此时DSP可以进行相应的算法处理并且将处理后的目标数据存放到内部RAM中;然后再触发EDMA(发送)数据传输,通过EMIF数据接口将处理后的数据传回给FPGA。数据流向示意图如图6所示。