当前位置:首页 > 嵌入式 > 嵌入式硬件

摘 要: 设计了基于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所示。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

hmi是Human Machine Interface 的缩写,"人机接口",也叫人机界面。人机界面(又称用户界面或使用者界面)是系统和用户之间进行交互和信息交换的媒介, 它实现信息的内部形式与人类可以接受形式之间的转换...

关键字: HMI 人机界面 系统

数字信号处理器(DSP)在通信、控制、图像处理等多个领域扮演着越来越重要的角色。TMS320F2808PZA作为德州仪器(Texas Instruments)推出的一款高性能DSP控制器,其独特的架构和强大的功能使其在众...

关键字: tms320f2808pza 数字信号处理器 DSP

从世界上第一颗DSP诞生至今30年来,国际一线老牌芯片厂商长期占据领先技术和市场地位,国内芯片厂商在DSP上的声量很小。然而经过了6年的沉心打磨之后,湖南进芯电子开始在这一领域崭露头角。凭借着更贴近中国本土特色的差异化产...

关键字: DSP MCU 电机控制 进芯电子

在嵌入式系统开发、调试和测试过程中,J-Link作为一种高效的调试工具,为开发者提供了极大的便利。然而,要想充分发挥J-Link的功能,首先需要正确安装其驱动程序。本文将详细介绍J-Link驱动的安装过程,并深入解析其中...

关键字: jlink 嵌入式系统 嵌入式开发

与谷歌的合作使 Nordic 能够在 nRF Connect SDK 中嵌入开发人员软件,以构建与安卓移动设备兼容的谷歌Find My Device和未知跟踪器警报服务

关键字: 谷歌 SoC 嵌入式开发

嵌入式开发作为当今电子工程和信息技术领域的核心分支,涵盖了广泛的软硬件技术和系统集成方法,用于构建高性能、低成本、低功耗、体积小巧且功能专一的嵌入式系统。这些系统无处不在,从微型传感器节点到复杂的工业控制设备,从日常使用...

关键字: 嵌入式开发 Python

嵌入式开发是当今信息技术领域不可或缺的一部分,它融合了硬件设计、软件开发和系统集成等多个学科,专门用于创建那些被嵌入到特定设备或系统中的专用计算机系统。嵌入式开发的主要过程包括利用分立元件或集成器件进行电路设计、结构设计...

关键字: 嵌入式开发 硬件设计 软件开发

嵌入式开发作为一种专业且技术密集型的领域,涵盖了从硬件底层驱动、中间件到应用层软件开发等多个层面的工作,其所需的工具种类繁多,各有针对性,旨在提升开发效率、保证代码质量以及简化调试过程。

关键字: 嵌入式开发 keil

嵌入式开发作为信息技术领域的重要分支,其涉及的语言种类繁多,各具特色。这些语言的选择取决于目标平台的特性、性能需求、开发者的熟练程度以及项目的具体要求。本文将详细介绍几种常见的嵌入式开发语言,包括C语言、C++、汇编语言...

关键字: 嵌入式开发 C语言

嵌入式开发是一项综合了硬件设计、软件编程以及系统整合的技术活动,其目的是为了创造出能够在特定环境中高效、稳定运行的嵌入式系统。这一流程涵盖了多个紧密关联且不可或缺的阶段,从最初的客户需求分析到最终的产品测试和交付,每个环...

关键字: 嵌入式开发 硬件设计
关闭
关闭