跳转到主要内容

HDMI数据的接收发送实验(五)

概述

    使用两个DDR4控制器实现数据流水操作可以显著提高内存带宽和系统性能。这种设计通常用于需要高吞吐量的应用,如视频处理、科学计算、网络数据包处理等。

设计思路

1. 双控制器并行工作:两个DDR4控制器可以独立操作,每个控制器连接到一个独立的DDR4内存。这样,每个控制器都可以同时执行内存操作,从而理论上可以将内存带宽翻倍。

    2. 数据流水操作:将数据流分成多个阶段,并让两个控制器交替处理不同阶段的数据。例如,一个控制器负责从内存中读取数据,另一个控制器负责将处理后的数据写回内存。或者,将数据块交错地分配给两个控制器,实现并行访问。

  作用:

· 提高带宽:通过两个控制器同时操作,可以增加总体内存带宽。

· 降低延迟:通过流水线操作,可以隐藏部分内存访问延迟。

· 提高系统并发性:允许同时进行多个内存操作,提高系统整体性能。

  适用情况:

· 高带宽需求应用:如高清视频处理、实时图像处理、大数据分析等。

· 多数据流处理:需要同时处理多个数据流,每个控制器处理一个数据流。

· 读写分离:一个控制器专门负责读取,另一个专门负责写入,实现读写并发。

  硬件架构:

· 两个DDR4控制器:每个控制器有独立的用户接口。

· 数据通路:数据通过两个控制器在输入、处理和输出之间流动。

设计实现

 在工程示例中,双DDR4流水实现的是读写分离功能,DDR0负责数据处理模块(DATA_CTRL)的数据写入功能,DDR1负责数据处理模块(DATA_CTRL)的数据读取功能。这样每个控制器负责自己的读写数据操作,实现读写分离的功能。可以实现两个DDR4同时读写。

   例程介绍:

  在示例工程中,对于数据处理模块没有进行操作,在这里直接使用FIFO对数据做了一个缓存。先生成数据写入DDR0中,最后再将数据从DDR1中读出。我们共发起25600个递增数,可以从DDR1读出的值判断数据的对错。

   分为4步:写ddr0、读ddr0、写ddr1、读ddr1。

   第一步:写ddr0:共发起100次突发,每次突发256长度。

   第二步:读ddr0:使用(写地址计数-读地址计数)来判断可以读出的ddr0的地址数量able_rd_addrcnt,当able_rd_addrcnt的值大于等于’h4000,并且缓存fifo剩余深度大’d256时,发起ddr0的读命令,同样每次突发长度为’d256。

   第三步:写ddr1:当缓存fifo中数据数量大于等于’d256时,发起写ddr1命令,每次突发长度为’d256。

   第四步:读ddr1:同样只要ddr中数据数量大于等于’d256时,就将数据读出。每次突发256长度。

主要作用与优势

  性能提升

· 带宽倍增:两个控制器可同时工作,理论带宽翻倍

· 隐藏延迟:读写操作重叠,隐藏DDR4访问延迟

· 并行处理:数据处理与内存访问完全并行资源优化

· 减少冲突:避免单个内存控制器的读写竞争

适用情况

 1.高带宽需求:单个DDR4控制器无法满足带宽要求

 2.复杂流水线:多阶段处理需要中间结果存储

 3.实时系统:需要隐藏内存访问延迟

 4.大数据处理:需要并行读写操作

功能总结

这种双DDR4控制器架构在需要高吞吐量和低延迟的应用中特别有效,能够充分利用FPGA的并行处理能力。在这一张主要讲述DDR4流水的作用与功能描述和适用情况,在工程中数据处理需要高带宽需求、复杂流水线、实时系统等情况,就可以使用DDR4的流水线处理。

    在下一章来详细列出例程的模块接口,并对接口信号进行说明,对数据传输流程进行分析。

文章来源:威视锐科技