Board logo

标题: 基于FPGA的DDR3多端口读写存储管理系统设计 [打印本页]

作者: 520503    时间: 2015-6-12 10:50     标题: 基于FPGA的DDR3多端口读写存储管理系统设计

 机载视频图形显示系统主要实现2D图形的绘制,构成各种飞行参数画面,同时叠加实时的外景视频。由于FPGA具有强大逻辑资源、丰富IP核等优点,基于 FPGA的嵌入式系统架构是机载视频图形显示系统理想的架构选择。视频处理和图形生成需要存储海量数据,FPGA内部的存储资源无法满足存储需求,因此需要配置外部存储器。
  与DDR2 SDRAM相比,DDR3 SDRAM带宽更好高、传输速率更快且更省电,能够满足吞吐量大、功耗低的需求,因此选择DDR3 SDRAM作为机载视频图形显示系统的外部存储器。
  本文以Kintex-7系列XC7K410T FPGA芯片和两片MT41J128M16 DDR3 SDRAM芯片为硬件平台,设计并实现了基于FPGA的视频图形显示系统的DDR3多端口存储管理。
  1 总体架构设计
  机载视频图形显示系统中,为了实现多端口对DDR3的读写访问,设计的DDR3存储管理系统如图 1所示。主要包括DDR3存储器控制模块、DDR3用户接口仲裁控制模块和帧地址控制模块。

  


  DDR3存储器控制模块采用MIG(Memory Interface Generator)方案,通过用户接口建立FPGA内部控制逻辑到DDR3的连接,用户不需要管理DDR3初始化、寄存器配置等复杂的控制逻辑,只需要控制用户接口的读写操作。
  DDR3用户接口仲裁控制模块将每一个数据读写请求设置成中断,借鉴中断处理思想来进行仲裁控制,从而解决数据存储的冲突。
  帧地址控制模块控制帧地址的切换。为了提高并行处理的速度,简化数据读写冲突,将图形数据和视频数据分别存储在不同的DDR3中。
  2 DDR3存储器控制模块设计
  MIG生成的DDR3控制器的逻辑框图如图 2所示,只需要通过用户接口信号就能完成DDR3读写操作,大大简化了DDR3的设计复杂度。

  


  2.1 DDR3控制模块用户接口写操作设计
  DDR3存储器控制模块用户接口写操作有两套系统,一套是地址系统,一套是数据系统。用户接口写操作信号说明如表 1所示。

  


  地址系统的内容是app_addr和app_cmd,两者对齐绑定,app_cmd为000时为写命令,当app_rdy(DDR3控制)和 app_en(用户控制)同时拉高时,将app_addr和app_cmd写到相应FIFO中。数据系统的内容是app_wdf_data,它在 app_wdf_rdy(DDR3控制)和app_wdf_wren(用户控制)同时拉高时,将写数据存到写FIFO。
  为了简化设计,本文设计的用户接口写操作时序如图 3所示,使两套系统在时序上完全对齐。

  


  2.2 DDR3控制模块用户接口读操作设计
  用户接口读操作也分为地址系统和数据系统。用户接口读操作信号说明如表 2所示。

  


  地址系统与写操作相同,在时钟上升沿且app_rdy为高电平时,用户端口同时发出读命令(app_cmd=001)和读地址,并将app_en拉高,将读命令和地址写到FIFO中。对于数据系统,当app_rd_data_valid有效,则读数据有效,读回的数据顺序与地址/控制总线请求命令的顺序相同。
  读操作地址系统和数据系统一般是不对齐的,因为地址系统发送到DDR3后,DDR3需要一定的反应时间,读操作时序如图 4所示。

  3 DDR3用户接口仲裁控制模块设计


  每片DDR3只有一组控制、地址和数据总线,因此同一时刻只能有一个设备在访问。常见的总线切换方式有两种:一种是轮询机制,软件实现简单,但实时性不高;一种是仲裁机制,设备发送中断请求,从而进行总线切换。由于视频图形显示系统对实时性要求高,因此选择仲裁机制。
  DDR3用户接口仲裁控制框图如图 5所示。为了提高并行速度,将图形和视频分别进行中断处理。将设备中断请求解析成多个子请求,进行优先级判断,每个子请求对应一个中断处理逻辑。

  


  3.1 视频处理写请求中断处理器设计
  由于视频处理写请求不涉及到图形中断处理,所以对应一个子请求:视频处理写子请求。
  视频处理模块将采集到的视频经过缩放、旋转等操作后存储在缓存区中,当缓存区满时发送视频处理模块写请求。视频处理写中断处理主要是从视频处理模块的缓存区中将地址和数据取出,写入到视频存储DDR3中。

  


  视频处理写请求中断处理流程图如图 6所示。当视频处理模块写请求信号有效时,生成子中断请求信号,若总线空闲则响应该中断。当命令接收就绪(app_rdy=1)且数据接收就绪 (app_wdf_rdy=1)时,从视频处理缓存区中读取地址和数据,同时发送写命令、写地址和写数据。若缓存区为空,说明全部写完,视频处理写中断结束。
  3.2 叠加输出读请求中断处理器设计
  叠加输出模块需要从DDR3中将待输出的图形数据和视频数据存储到行缓存中,因此分为两个子请求:视频输出读请求和图形输出读请求。由于两者分别在图形中断处理和视频中断处理中完成,因此可以同时进行。
  视频输出读中断处理主要从视频存储DDR3中读取1行视频数据写入到叠加输出模块的视频缓存区中,流程图如图 7所示。本系统中突发长度为BL=8,即每个用户时钟周期对应接收同一行地址中相邻的8个存储单元的连续数据。输出视频分辨率为cols×rows,则地址系统需要发送cols/8个突发读命令。数据系统接收读数据时,若读数据有效(app_rd_data_valid=1),则将读到的数据存储到叠加输出模块的视频缓存区中,同时读数据个数加1。当读数据个数为cols/8时,所有读命令对应的读数据全部接收,视频输出读中断处理结束。

  


  图形输出读中断处理包含两个步骤:从图形存储DDR3中读取1行图形数据写到叠加输出模块的图形缓存区中;将刚刚搬移数据到图形缓存区的DDR3存储空间清零。前者与视频输出读中断的处理过程类似。
  图形数据写入DDR3时只写入有图形的位置,而不是全屏扫描,如果不进行清屏操作会导致下一帧图形画面上残留上一帧的图形数据。清屏操作指图形输出后将DDR3中对应地址的存储空间全部写入数值0,从而将当前图形数据清除。
  3.3 图形生成写请求中断处理器设计
  图形生成是接收CPU的图形命令并进行光栅化,将结果先存储在直接结果缓存区和插值结果缓存区中,从而存入到DDR3中。当一帧图形全部绘制完成后发送图形生成模块写请求。图形生成写请求分为三个子请求:直接结果写中断请求、插值背景读中断请求、插值结果写中断请求。
  直接结果缓存区存放直接输出的与背景颜色无关的像素值数据;插值结果缓存区存放需要读回对应位置的背景视频进行插值修正的像素点的数据。插值结果写到 DDR3时,首先从视频存储DDR3中读出需要修正的像素点对应位置的视频像素值作为背景,然后用流水线处理实现插值修正,最后将修正结果写到图形存储 DDR3中。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0