当前位置: 首页 > news >正文

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 乒乓操作功能的具体实现。
本文章由威三学社出品
对课程感兴趣可以私信联系

http://www.cnnetsun.cn/news/5552.html

相关文章:

  • 行业科普:什么是物流可信数据空间
  • 从进程到协程【深度解析】——必懂的并发编程
  • 麒麟操作系统用户和组管理
  • 淀粉下游应用,从餐桌到工业,无处不在!
  • eventpp终极集成指南:5种快速配置C++事件处理库的方法
  • 项目风险管理 论文框架
  • 30+专业幻灯片模板集:轻松打造精美演示文稿
  • 传统中文手写数据集全面解析与应用指南
  • Host侧算子实现总览-解码Ascend C算子的“CPU端蓝图“
  • 科普多种mfc100u.dll丢失的解决方法!全面了解mfc100u.dll文件
  • Wan2.2-T2V-A14B在新闻摘要视频自动生成中的实验成果
  • 31、互联网用户安全防护全解析
  • 技术日报|Kaiju游戏引擎逆袭夺冠,Claude记忆插件日增779星登榜第三
  • 《2025提示工程从入门到进阶指南》正式发布 | 中科算网算泥社区
  • 换了 4 家 AI 模型,代码只动了 1 行——这个架构设计让老板随便折腾
  • 【毕业设计】基于SpringBoot的网上订餐系统设计与实现(基于java网上订餐系统的设计与实现(源码+文档+远程调试,全bao定制等)
  • Python大佬正在用的,但你不知道的几个编程技巧
  • 5步掌握pywebview与React桌面应用开发:终极跨平台解决方案
  • 如何快速获取BDD100K数据集:计算机视觉训练完整指南
  • 【C语言】分支语句(简略版)
  • IP防水等级分为几个等级
  • 2025年国内网络准入系统排行榜,六款超好用的网络准入系统推荐
  • Statuspage开源状态页面终极部署指南:30分钟搭建专业服务监控平台
  • GoldenDict-ng终极配置指南:打造你的专属词典库
  • 5步轻松掌握MinerU:智能文档转换工具完全指南
  • 自动化测试的「千里眼」:当RTSM远程控制遇上自动化,测试效率直接拉满
  • Spring AI 核心架构总览(资深架构师深度解析)
  • 改进YOLOv8结合跨尺度多头自注意力机制实现野火烟雾检测
  • 致进食障碍者
  • 深度合成算法备案超全解析!从定义到落地的4步合规法则