DDR4系列之ECC功能(十)
2026/6/4 17:51:58 网站建设 项目流程

一、 概述
在上一章节中,我们详细阐述了乒乓操作的具体流程与核心功能,并据此完成了整体架构的设计与流程框图的绘制。本章将继续依据已确立的流程图,展开对DDR4 乒乓操作功能的具体实现,将理论设计转化为可执行的硬件逻辑。

二、 流程框图

对于ddr4的乒乓操作,核心在于需要控制何时读写ddr4,我们今天将介绍乒乓操作的控制模块。
三、 ddr_pp_ctrl模块

这个状态机在上一章节章中进行了详细介绍,本章节为了更直观讲述代码,所以继续沿用这个状态机。
首先设置DDR4的最大存储大小MAX_ADDR。当DDR_0写入的数据数量等于MAX_ADDR后,切换另一个DDR_1进行写入,并同时读取之前写满的DDR_0。当DDR_0读取的数据数量和DDR_1写入的数据数量等于MAX_ADDR后,切换另一个DDR进行读写操作。

模块接口列表:

awaddr_cnt:DDR_0的写地址计数。
awaddr_cnt_1:DDR_1的写地址计数。
araddr_cnt:DDR_0的读地址计数。
araddr_cnt_1:DDR_1的读地址计数。
wr_ready_0:写DDR_0控制信号,拉高表示可以向DDR_0写入数据。
wr_ready_1:写DDR_1控制信号,拉高表示可以向DDR_1写入数据。
rd_ready_0:读DDR_0控制信号,拉高表示可以从DDR_0读取数据。
rd_ready_1:读DDR_1控制信号,拉高表示可以从DDR_1读取数据。

模块信号声明:

MAX_ADDR:设置的DDR4的读写突发的最大地址。比如设置的DDR4最大地址为’h40000,那么读写突发的最大地址为’h3ffc0。
clk_cnt:时钟计数器,计数到固定值后开始发送数据。
send_data_start:开始发送数据标志
ddr_0_wrall:DDR_0写满标志
ddr_0_rdall:DDR_1写满标志
ddr_1_wrall:DDR_0读空标志
ddr_1_rdall:DDR_1读空标志

当时钟计数器计数到’d999时,拉高send_data_start,开始发送数据。

当DDR_0写满后,开始写DDR_1同时读DDR_0。当DDR1写满并且DDR0读空后,再写DDR_0,同时读DDR_1。如此往复循环。
当DDR_0写满后,拉高ddr_0_wrall,当DDR_0读空后,再拉低ddr_0_wrall。
当DDR_0读空后,拉高ddr_0_rdall,当DDR_0写满后,再拉低ddr_0_rdall。
当DDR_1写满后,拉高ddr_1_wrall,当DDR_1读空后,再拉低ddr_1_wrall。
当DDR_1读空后,拉高ddr_1_rdall,当DDR_1写满后,再拉低ddr_1_rdall。

wr_ready_0:
在WR0和WR0_RD1状态时,可以写DDR_0,在DDR_0写满之前,ddr_0_wrall为0,所以在WR0和WR0_RD1状态时,并且在DDR_0写满之前可以向DDR_0中写入数据。
wr_ready_1:
在WR1_RD0状态时,可以写DDR_1,在DDR_1写满之前, ddr_1_wrall为0,所以在WR1_RD0状态时,并且在DDR_1写满之前可以向DDR_1中写入数据。
rd_ready_0:
在WR1_RD0状态时,可以读DDR_0,在DDR_0读空之前,ddr_0_rdall为0,所以在WR1_RD0状态时,并且在DDR_0读空之前可以从DDR_0中读取数据。
rd_ready_1:
在WR0_RD1状态时,可以读DDR_1,在DDR_1读空之前,ddr_1_rdall为0,所以在WR0_RD1状态时,并且在DDR_1读空之前可以从DDR_1中读取数据。

四、 总结
在本章节中,介绍了DDR乒乓操作的控制模块,模块主要作用是输出了何时读写DDR_0和DDR_1的控制信号。后面再继续讲述如何使用这四个输出信号来控制读写这两个DDR,展开对DDR4 乒乓操作功能的具体实现。
本文章由威三学社出品
对课程感兴趣可以私信联系

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询