Yong's blog

  • 首页
  • 个人简介
  1. 首页
  2. Zynq
  3. 正文

Zynq MPSoC PS DDR速度最优配置

2024年2月23日 1人点赞 0条评论

1 背景

使用Zynq平台时,我们往往希望尽量提高PS端程序的运行速度。PS端DDR的数据传输速率对PS端运行速度有显著影响。例如,DDR读写速度慢会减缓处理器在数据读取或写入期间的效率,进而降低整体处理速度。因此,提升PS端DDR的数据传输速率是至关重要的。

2 问题

为了最大限度地提升Zynq MPSoC平台的性能,我们需要深入了解如何配置该平台,以尽量提高DDR的数据传输速率。

3 环境

硬件

主芯片:xczu4ev-sfvc784-2-i;DDR4:MT40A512M16LY-062E

软件

Vivado 2018.3

4 分析

DDR的数据传输速率取决于两个因素:1、DDR本身能支持的速率。2、MPSoC PS端DDR控制器能支持的速率。

4.1 DDR速率

.

根据DDR芯片数据手册,-062E型号的DDR时钟最小周期为0.625 ns,这意味着DDR时钟频率为1600 MHz,相应的DDR支持的最高数据传输速率为3200 MT/s (Mega-transfer per second)。

根据DDR4的手册,-62E速度型号的DDR4兼容-083和-083D型号。

-083和-083D均对应DDR4-2400速度等级。其中,-083对应的是DDR4-2400(17-17-17),而-083D对应的是DDR4-2400(18-18-18)。

4.2 DDR控制器速率

根据手册【DS925】,MPSoC的单根DDR数据线速率最高支持2400 Mb/s,即支持的DDR的最高数据传输速率为2400 MT/s。

4.3 小结

虽然-62E型号DDR支持最高3200 MT/s的数据传输速率,但MPSoC的DDR控制器最高仅支持2400 MT/s。因此,-62E型号DDR需降速至2400 MT/s以匹配控制器。-62E型号可选择兼容的速度型号-083和-083D,以实现降至2400 MT/s速率的使用。

5 配置流程

5.1 时钟配置

5.1.1 输入时钟

根据原理图,PS端输入的参考时钟源频率为33.333333 MHz。

5.1.2 PLL 输出时钟

1、配置5个系统PLL

原理:

PS端的时钟系统通过五个锁相环单元产生时钟,供处理器、外设、互连结构及其他系统单元使用。每个锁相环单元的架构如上图所示。

其中APLL,DPLL 和 VPLL这三个锁相环在芯片全功耗域(FPD)中。而IOPLL和RPLL在芯片低功耗域(LPD)中。

  • 低功耗域
    • IOPLL(I/O PLL):为所有低速外设和部分互连结构提供时钟
    • RPLL(RPU PLL):为 RPU 内核和部分互连结构提供时钟
  • 全功耗域
    • APLL(APU PLL):为 APU 内核和部分互连结构提供时钟
    • VPLL(Video PLL):为 video I/O 提供时钟
    • DPLL(DDR PLL):为 DDR 控制器和部分互连结构提供时钟

每个锁相环的输出端配备了两个时钟分频器:一个位于锁相环所在的原始功率域,另一个位于不同的功率域中。

Vivado配置:

• Source:为锁相环提供的参考时钟源。DPLL锁相环的参考时钟源为PSS REF CLK。

• Multiplier:提供一个6bit整数值作为锁相环压控震荡器(VCO)的输出输出频率相对于参考时钟源频率的倍数。例如,图中DPLL的Multiplier参数设置为72,意味着DPLL的VCO输出时钟频率是PSS REF CLK频率的72倍。

• VCO:其值VCO (MHz) = Multiplier × Source (MHz),代表锁相环通过压控震荡器倍频后的输出频率。例如,图中DPLL的Multiplier为72,Source频率为33.333333 MHz,因此VCO的值为72 × 33.333333 = 2400 MHz。

• DIV2:DIV2使能后,每个PLL的输出频率是VCO输出频率的一半。例如,图中DPLL的DIV2被使能,那么DPLL的最终输出频率为1200 MHz。

• Cross domain Path:指示跨功耗区域的路径。例如,“DPLL_TO_LPD”指的就是在全功耗域(FPD)的DPLL锁相环跨功耗域给低功耗域(LPD)提供时钟。

• Divisors:6-bit分频器,对每个PLL提供的跨功耗域时钟进行整数分频。例如,图中DPLL的Divisors值为3,表示表示DPLL提供给低功耗域(LPD)的时钟经过3分频后输出。

2、DDR控制器时钟

原理:

如图, DPLL_CLK时钟经过一个6-bit分频器分频后,产生的输出时钟DDR_REF_CLK被送往DDR控制器,并作为DDR控制器逻辑的工作时钟。

Vivado配置:

这里 DDR 的时钟代表DDR控制器逻辑工作的时钟,是通过 DDR 配置自动生成的。用户不用也无法修改。

5.2 DDR配置

1、Clocking Options

如图,DDR_REF_CLK时钟输入DDR PHY的6个PLL,这些PLL输出的时钟随后被用作DDR接口的驱动时钟。

在Clocking Options中设置的时钟为DDR4接口的驱动时钟。DDR4的数据传输速率为2400 MT/s,采用双边沿数据传输方式。因此,DDR4的驱动时钟频率应为数据传输速率的一半,即1200 MHz。注意,此处的时钟频率只能为DPLL输出时钟的整数倍分频。

2、DDR Controller Options

  • Memory Type:使用的DDR内存种类。
  • Components:控制器支持的元件种类。硬件上直接用 DDR 芯片,所以选择 components。
  • Effective DRAM Bus Width:DDR接口的数据位宽。若使用4片16-bit的DDR进行组合,则DDR的数据位宽为4 × 16 = 64 bits。
  • ECC:使能错误纠正码。

3、DDR Memory Options

  • Speed Bin:DDR使用的速度等级(JEDEC Standard 定义)。

将鼠标悬停在Speed Bin选项上,可以查看DDR控制器支持的DDR4速度等级。例如,Speed Bin DDR4 2400T对应的DDR4速度等级是DDR-2400 (17-17-17)。所选择的DDR控制器的Speed Bin必须与实际使用的DDR4兼容。例如,本文中使用的DDR4速度型号为-64E,与-83速度型号兼容。-83速度型号对应的速度等级是DDR-2400(17-17-17),因此,本文中DDR控制器的Speed Bin选择为DDR4 2400T。

  • Cas Latency:DDR读命令到第一个数据读出所需的时钟周期数。这个参数可以根据DDR的速度等级来确定。例如,如果DDR4使用的速度等级为DDR-2400 (17-17-17),其中17-17-17代表CL-nRCD-nRP。CL即Cas Latency,因此在这个例子中,Cas Latency的值应设置为17。
  • RAS to CAS Delay:DDR在读写命令之前必须要激活对应bank中对应的行,RAS to CAS Delay代表的就是激活所需的时间。这个参数可以根据DDR的速度等级来确定。例如,速度等级为DDR-2400 (17-17-17) 时,RAS to CAS Delay的值为17。
  • Precharge Time:DDR在完成一行数据的读写后,要进行下一行读写之前需要预充电。Precharge Time就是所需的预充电时间。这个参数可以根据DDR的速度等级来确定。例如,速度等级为DDR-2400 (17-17-17) 时,Precharge Time的值为17。
  • Cas Write Latency:DDR写命令到第一个数据写入所需的时钟周期数。根据数据手册,DDR-2400 速度等级的DDR4的Cas Write Latency为12
  • tRAS and tRC:

如图,根据数据手册,速度型号为-83的DDR4 tRAS = 32 ns;tRC = 46.16ns。

  • tFAW:执行4个激活命令所需要的窗口时间。

使用的芯片的page size为2KB

根据数据手册,在DDR4使用DDR4-2400的速度等级且一页大小为2KB时,tFAW的最小值为30 ns。为了实现DDR性能的最优化,tFAW的值可以直接配置为这个最小值,即30 ns。

  • Additive Latency:附加延迟。使用Post CAS技术时,总线上发出CAS信号(读写/命令)后到这个指令实际被执行的延时。

.根据数据手册AL可以为CL – 1 = 16或者CL – 2 = 15,这里选择AL为16.

  • DRAM IC Bus Width:单个 DRAM 元件的数据位宽。我们用的DDR4单片数据位宽为16 Bits。
  • Device Capacity:单个 DRAM 元件的容量。我们用的DDR4容量 = 512Meg x 16 Bits = 8192 MBits。
  • Bank Group Address Count:BG的位宽。512Meg x 16 是 BG0,因此为1。
  • Row Address Count:RA的位宽。512Meg x 16 是 A[15:0],因此为16。

6 测试

使用裸机代码测试DDR速率:https://github.com/Yong12315/MPSOC-DDR-TEST

标签: 暂无
最后更新:2024年8月5日

Yong

JUST FOR FUN !!!

点赞
< 上一篇

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章目录
  • 1 背景
  • 2 问题
  • 3 环境
  • 4 分析
    • 4.1 DDR速率
    • 4.2 DDR控制器速率
    • 4.3 小结
  • 5 配置流程
    • 5.1 时钟配置
      • 5.1.1 输入时钟
      • 5.1.2 PLL 输出时钟
    • 5.2 DDR配置
  • 6 测试
最近评论
Yong 发布于 13 小时前(06月02日) If it’s helpful to you, I’ll be happy too!
Click Here 发布于 1 周前(05月25日) Heya i am for the primary time here. I found this ...
BigPigBro 发布于 4 个月前(02月04日) :rolleyes: Love From China~
Hete 发布于 4 个月前(02月04日) peace~
标签聚合
TFTP更新下位机文件 Zynq 7020 2024 2023 同步跳转宽度 CAN总线网络 CAN总线 SJW

COPYRIGHT © 2023 Yong's blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang