news 2026/7/7 20:57:33

DDR4系列之ECC功能(十)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DDR4系列之ECC功能(十)

一、 概述
在上一章节中,我们详细阐述了乒乓操作的具体流程与核心功能,并据此完成了整体架构的设计与流程框图的绘制。本章将继续依据已确立的流程图,展开对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 乒乓操作功能的具体实现。
本文章由威三学社出品
对课程感兴趣可以私信联系

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/4 17:20:48

行业科普:什么是物流可信数据空间

在数字经济赋能实体经济的浪潮中,物流行业作为产业链枢纽,积累了海量运力、仓储、交易及供应链数据。但“数据孤岛”林立、权属界定模糊、安全流通受阻等痛点,始终制约着数据要素价值的释放。在此背景下,物流可信数据空间应运而生…

作者头像 李华
网站建设 2026/7/7 7:11:16

从进程到协程【深度解析】——必懂的并发编程

作为开发者,我们每天都在和 “并发” 打交道 ——APP 里的网络请求要异步执行、后台下载文件不能阻塞 UI、多任务同时处理要避免卡顿…… 而理解进程、线程、协程的本质及关系,是搞定客户端并发编程的核心基础。尤其是协程,如今已成为 Androi…

作者头像 李华
网站建设 2026/7/7 18:09:47

麒麟操作系统用户和组管理

Kylin(麒麟)操作系统是基于 Linux 内核开发的国产操作系统,其用户和组管理机制与 Linux 系统一脉相承,核心目标是通过用户身份标识(UID) 和组身份标识(GID) 实现对文件、进程、系统资…

作者头像 李华
网站建设 2026/7/7 20:06:58

淀粉下游应用,从餐桌到工业,无处不在!

提到淀粉,很多人只想到用它来勾芡、制作粉条,其实作为一种重要的天然高分子材料,淀粉的下游应用早已超越了食品的范畴,深入到医药、化工、环保等多个领域,成为支撑现代产业发展的关键原料之一,以前我也只知…

作者头像 李华
网站建设 2026/7/7 20:06:56

eventpp终极集成指南:5种快速配置C++事件处理库的方法

eventpp终极集成指南:5种快速配置C事件处理库的方法 【免费下载链接】eventpp eventpp - 一个为C提供的事件分派器和回调列表库。 项目地址: https://gitcode.com/gh_mirrors/ev/eventpp eventpp是一个强大的C事件处理库,提供事件分发器和回调列表…

作者头像 李华
网站建设 2026/7/7 6:19:06

项目风险管理 论文框架

为适配软考高项论文“结合实际项目、突出方法论落地”的核心要求,以下框架聚焦“全流程工具应用问题解决”,既覆盖风险管理7大过程,又融入实战细节,助力论文结构清晰、论据扎实: 一、摘要(300字左右&#x…

作者头像 李华