[RAM] RAM 突发传输(Burst ,Burst size, length) | Burst 读写过程与时序 精讲

主页: 元存储博客

文章目录

前言

在DMA(直接内存访问)和CPU(中央处理器)共用总线时,会使用两种传输模式:突发模式和循环挪用模式。

今天重点讲讲突发模式。

1. Burst 基本概念

含义

循环挪用模式是常用的一种模式。在这种模式下,每次DMA请求就会申请一次总线,传输一个字节的数据。适用于小数据量传输。

突发模式则是在DMA成功申请到总线后,会连续传输数据直到完成。例如,如果设置了4个节拍的突发传输,并且传输宽度为8位,那么一个DMA请求会连续传输4个字节的数据,相当于单次传输的4倍。

这两种传输模式在DMA和CPU共用总线时起到了不同的作用,循环挪用模式适用于传输少量数据的情况,而突发模式则适用于需要一次性传输大量数据的情况。

Burst Width &Burst Length

Burst Size(突发大小):

指定每个数据项的大小,即以字节为单位的数据位宽。常见的突发大小有:

  • 1字节(BYTE)

  • 2字节(HALFWORD)

  • 4字节(WORD)

  • 8字节(DOUBLEWORD)

Burst Length(简称BL,指突发长度):指定在一个传输事务中要传输的数据项的数量。可以是固定的值,也可以是从主设备发送的上界值。

DDR4 的 BL 都是 8, 而DDR5 的 BL 是 16.

举例: 32个字节可以分为32 * 8位, 这里 Burst Size 是 8位(1 BYTE), Burst Length是 32.

2. CPU Burst mode

CPU读存储单元
Data communication between CPU and memory

图片来源: https://img.brainkart.com/

  1. 提供地址,将其送入存储器的地址寄存器
  2. 经译码电路选取相应的存储单元
  3. 从存储单元读出的信息要先送入存储器的数据寄存器
  4. 传送给CPU

读数据前

读数据后

图片来源: https://img.brainkart.com/

写的过程相反, 可以自行在脑海里想象下。

如果使用Burst模式,就只要给出第一个列地址和突发长度,就能自动连续读出第一行的每一个数据,可以减少发送地址的交互次数,提高效率。

3. 总线 burst mode

AXI总线是支持burst传输的。

总线的仲裁

[文献2] 总线矩阵在主控总线之间起到了仲裁管理的作用,通过循环调度算法给外设分配总线使用时间片。它能够协调不同外设之间对总线的访问,保证每个外设都能够有机会进行数据的访问。

在突发传输期间,总线会被锁定,只有进行突发传输的外设能够使用总线。完成突发传输后,总线矩阵会重新分配权限,以满足其他外设的请求。

总线突发传输时序

  1. AXI 读突发传输时序

    图片来源: 知乎 文献5
    可以看到:
  • 在T2时刻,ARADR通道握手成功,并成功传输了地址信息。
  • 从设备根据该地址信息准备相应的读取数据。
  • RVALID 表示返回一个数据,RREADY表示主设备取走了这个数据,这被称为一次传输。
  • 当返回最后一笔数据时,相应的RLAST信号也需要被拉高,以表示最后一笔数据已经传输完毕,整个传输到此结束。
  1. AXI 写突发传输时序

    当主设备给出写地址,从设备开始准备,接着给出写数据。

返回最后一个写数据时,WLAST信号被拉高,然后从设备通过返回BRESP和BVALID信号,表示写操作已完成。

4. Burst Chop (突发终止)

[文献4] Burst mode 一次寻址,传输多次数据。BL个数据对应的地址分别是ADDR,ADDR+1,ADDR+2...ADDR+BL。

DDR3的突发长度是8,DDR2的突发长度是4/8。针对突发长度为 4 的场景,为了向下兼容,DDR3将8-bit中的后4bit屏蔽掉,这就叫作burst chop4 mode(BC4)

图片来源: https://blog.csdn.net/weixin_42005993/article/details/103827566

5. Burst Mode 应用

什么时候用突发模式

适用于大数据量传输。

[文献1] 在数据完全封装/解封之前中断操作可能导致数据损坏的危险,主要是由于封装和解封过程需要对数据进行处理和转换。如果在封装过程中,数据的一部分已经被封装,而另一部分尚未完成封装,中断操作会导致封装不完整的数据被使用或传输,从而导致数据损坏。

类似地,在解封过程中,如果数据的一部分已经被解封,而另一部分尚未解封,中断操作会导致解封不完整的数据被使用或处理,同样导致数据损坏。

为确保数据一致性,可以采用生成突发传输的方式来配置数据流。这意味着在封装和解封时,必须确保数据一次性地完全封装或解封完成,避免部分数据未处理的情况。这种方式可以确保数据的完整性和一致性,减少数据损坏的风险。

总结


参考文献

  1. https://www.zhihu.com/question/53854189
  2. https://www.xiaopingtou.cn/q-104415.html
  3. https://zhuanlan.zhihu.com/p/643207749
  4. https://blog.csdn.net/weixin_42005993/article/details/103827566
  5. https://zhuanlan.zhihu.com/p/641978200

声明
本文仅为学习交流目的。
文中部分文字和图片来源于互联网,列在参考的文献,但可能有遗漏。如有侵权,请告知我删除。

相关推荐
Projectsauron1 个月前
ROM、RAM 和 Flash 的区别
内存·flash·ram·存储器·rom
木头分享2 个月前
怎么检测电脑的RAM?丨什么是RAM?
电脑·ram
hi944 个月前
Xilinx FPGA DDR4 接口的 PCB 准则
嵌入式硬件·fpga开发·vivado·ddr
数据线4 个月前
DDR3(一)
fpga开发·ddr·ddr3·sdram·ddr2
时光飞逝的日子5 个月前
stm32MP135裸机编程:修改官方GPIO例程在DDR中点亮第一颗LED灯
led·stm32mp135·ddr·裸机编程·用户程序
爱奔跑的虎子6 个月前
详解SDRAM基本原理以及FPGA实现读写控制
fpga开发·fpga·xilinx·ddr·vivao·sdram
比特流10247 个月前
基于龙芯2k1000 mips架构ddr调试心得(二)
ddr
wjh776a6810 个月前
【Verilog】基于Verilog的DDR控制器的简单实现(一)——初始化
fpga开发·verilog·xilinx·ddr·amd
FPGA狂飙1 年前
Xilinx FPGA平台DDR3设计详解(三):DDR3 介绍
fpga开发·fpga·vivado·xilinx·ddr·ddr3·ddr4