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

基于FPGA的DDR3多端口读写存储管理系统设计(2)

基于FPGA的DDR3多端口读写存储管理系统设计(2)


图 6 视频处理写请求中断处理流程图

视频处理写请求中断处理流程图如图 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时,所有读命令对应的读数据全部接收,视频输出读中断处理结束。
图 7视频输出读中断处理流程图

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

图形的读写和DVI视频的读写不涉及帧速率的转换,因此图形存储DDR3中的第0~1帧和视频存储DDR3中的第3~4帧地址控制方式相同,都是其中一帧用于将生成数据写入到DDR3中,另一帧用于读出数据叠加输出,两帧交替使用,通过乒乓操作来实现图形数据的存储与读取。视频存储DDR3中,第0~2帧(又称A空间、B空间和C空间)用于PAL视频处理后输入帧及视频输出帧。由于PAL视频帧速率为25Hz,而最终输出DVI的帧速率为60Hz,因此需要实现帧速率转换。常见的帧速率转换算法[8]包括:帧复制法、帧平均法、运动补偿法等,由于机载系统对实时性要求比较高,因此选用帧复制法。设置三个帧存储空间,其中一帧用于读出,一帧用于写入,还有一帧空闲,分别称作输入帧、输出帧和空闲帧。用三者的切换来实现帧速率的转换,确保输出帧相对于当前输入帧的延迟最小,即当前输出帧输出的是最新写满的帧。当写入的帧存储空间已经写满,而读存储空间还没读完,将下一帧的图像数据写到当前空闲的帧存储空间。图 9为PAL输入帧和输出帧读写控制流程图。以A空间为输出帧,B空间为输入帧,C空间为空闲帧为例。若A空间读完,B空间写满,则将B空间变成输出帧并输出,将C空间变成输入帧并继续输入;若A空间还没有读完,B空间已经写满,则将下一帧数据写入到C空间,并继续从A空间输出。
图 9 PAL输入帧和输出帧读写控制流程图

5 验证结果与分析图形生成写中断处理仿真图如图 10所示。由于图形生成数据不是从左往右连续进行的,因此每次突发写操作发送的128位数据(BL=8),有效的数据只有低16位,高112位直接用掩码屏蔽(app_wdf_mask=16’hfffc)。当一帧图形全部绘制完成后发送图形生成模块写请求(graphics_done=1)。此时图形中断处理器执行直接结果写中断(graphics_wr_interrupt=1),视频中断处理器执行插值背景读中断(graphics_wr_interrupt_rd_bk=1)。当两者同时完成(rd_bk_video_finish=1)时,图形中断处理器执行插值结果写请求中断。其中,c0_app_XXX表示图形存储DDR3的用户接口,写图形数据时,用户接口地址系统和数据系统是对齐的;c1_app_XXX表示视频存储DDR3的用户接口,读视频背景时,数据系统比地址系统稍有延迟。
图 10图形生成写中断处理波形图

用本文设计的DDR3存储管理系统对文献[9]中图6.1进行中断处理。视频分辨率为1600×1200;绘制字符等直接结果点共812个像素(矩形填充忽略不算);绘制斜线等插值结果点共有4762个像素。用本文算法测试各中断处理时间如表 3所示。
视频中断处理器中,视频处理写中断将一行视频处理数据顺序写入到DDR3中耗时1.1us,则将一帧视频处理数据写入DDR3中耗时1.32ms;视频输出读中断从DDR3读出1行视频数据耗时1us,则将一帧视频读出需要1.2ms;插值背景读耗时54.2us。视频处理中断共耗时2.5742ms。图形处理中断中,图形输出读中断读出1行图形数据,并将其内存空间清零,共需要2.1us,即将一帧图形读出需要2.52ms,则图形处理中断共耗时2.5851ms。与文献[9]结果相比,本文设计的系统对图形生成读写中断速度有了明显提高。因为文献[9]中断类型较多,且图形生成中断的优先级最低,在实现的过程中会多次被打断,导致图形生成执行时间较长;而本文算法中,插值背景读操作与直接结果写操作同时在视频中断处理和图形中断处理中进行,利用并行操作减少时间,并大大降低了复杂度。结论本文设计并实现了基于FPGA的DDR3多端口存储管理,主要包括DDR3存储器控制模块、DDR3用户接口仲裁控制模块和帧地址控制模块。DDR3存储器控制模块采用Xilinx公司的MIG方案,简化DDR3的逻辑控制;DDR3用户接口仲裁控制模块将图形和视频分别进行中断处理,提高了并行速度,同时简化仲裁控制;帧地址控制模块将DDR3空间进行划分,同时控制帧地址的切换。经过分析,本文将图形和视频中断分开处理,简化多端口读写DDR3的复杂度,提高并行处理速度。
继承事业,薪火相传
返回列表