DDR3基本概念11 - DDR Read/Write training

DDR3基本概念11 - DDR Read/Write training

所谓的读或写训练,是为了保证:

  1. 写操作时,时钟边沿对齐数据眼中心
  2. 读操作时,DQS边沿对齐数据眼中心

Read training

Read Centering
The purpose of read centering is to train the internal read capture circuitry in the controller (or PHY) to capture the data in the center of the data eye. The memory controller (or PHY)
Enables bit 2 in mode register MR3 so that the DRAM returns data from the Multi Purpose Register (MPR) instead if the DRAM memory.
Then initiates a continuous stream of READs. The memory returns the pattern that was written in the previous MPR Pattern Write step. Let’s assume this pattern is an alternating 1-0-1-0-…
While the READs are going on, the internal read capture circuitry either increases of decreases an internal read delay register to find the left and right edge of the data eye.
When the edges of the eye are detected, the read delay registers are set appropriately to ensure the data is captured at the eye center.
The above steps are repeated for each of the DQ data bits

Write training

Write Centering
Similar to the read centering step, the purpose of write centering is to set the write delay for each data bit so that write data is centered on the corresponding write strobe edge at the DRAM device.
During write centering the PHY does the following WRITE-READ-SHIFT-COMPARE loop continuously
Initiates a continuous stream of WRITEs and READs
Incrementally changes write delay of the data bits
Compares the data read back to the data written
From the above loop the PHY can determine for what write-delay range it reads back good data, and hence it can figure out the left and write edges of the write-data eye. Using this dat,a the DQ is centered to the DQS for writes.

先这样,等空了再来补充完善。

参考文献

  1. https://www.systemverilog.io/ddr4-initialization-and-calibration
  • 2
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
"/pkg/qct/software/llvm/release/arm/14.0.0/bin/clang" -g -Os -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-array-bounds -c -include AutoGen.h -mlittle-endian -fno-short-enums -save-temps -fverbose-asm -funsigned-char -ffunction-sections -fdata-sections -fno-builtin -Wno-address -fno-asynchronous-unwind-tables -target aarch64-linux-gnu -fcolor-diagnostics -fdiagnostics-format=vi -Wno-parentheses-equality -Wno-tautological-compare -Wno-tautological-constant-out-of-range-compare -Wno-empty-body -Wno-unknown-warning-option -Wno-unused-function -Wno-bitwise-op-parentheses -mcmodel=small -ffixed-x18 -mstrict-align -fstack-protector -Wno-nonportable-include-path -Wno-misleading-indentation -fno-common -mtune=cortex-a53 -I/home/chen-docker/bin/boot/boot_images/BuildLogs/QcomPkg/SocPkg/LeMans/AU/Include -include /home/chen-docker/bin/boot/boot_images/boot/QcomPkg/Include/Library/DebugLib.h -DQCOM_EDK2_PATCH -DDISABLE_DEP -DENABLE_XN -DENABLE_ASLR -DENABLE_DEP_64 -DENABLE_EXEC_CODE_READY_TO_BOOT -DENABLE_AUTO_PLAT -DMAX_DDR_REGIONS=6 -mstrict-align -mcpu=cortex-a53 -DPRODMODE -c -o /home/chen-docker/bin/boot/boot_images/Build/LeMansAU/Core/RELEASE_CLANG140LINUX/AARCH64/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib/OUTPUT/./HiiLib.obj @/home/chen-docker/bin/boot/boot_images/Build/LeMansAU/Core/RELEASE_CLANG140LINUX/AARCH64/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib/OUTPUT/inc.lst /home/chen-docker/bin/boot/boot_images/edk2/MdeModulePkg/Library/UefiHiiLib/HiiLib.c /pkg/qct/software/llvm/release/arm/14.0.0/bin/clang: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory GNUmakefile:373: recipe for target '/home/chen-docker/bin/boot/boot_images/Build/LeMansAU/Core/RELEASE_CLANG140LINUX/AARCH64/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib/OUTPUT/HiiLib.obj' failed Building ... /home/chen-docker/bin/boot/boot_images/edk2/MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServicesLib.inf [AARCH64] make: *** [/home/chen-docker/bin/boot/boot_images/Build/LeMansAU/Core/RELEASE_CLANG140LINUX/AARCH64/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib/OUTPUT/HiiLib.obj] Error 127 make: Nothing to be done for 'tbuild'. build.py... : error 7000: Failed to execute command make tbuild [/home/chen-docker/bin/boot/boot_images/Build/LeMansAU/Core/RELEASE_CLANG140LINUX/AARCH64/MdeModulePkg/Library/UefiHiiLib/UefiHiiLib]错误在哪里?
07-20
根据错误消息,错误发生在执行 `/pkg/qct/software/llvm/release/arm/14.0.0/bin/clang` 命令时。具体错误是 `libtinfo.so.5: cannot open shared object file: No such file or directory`,也就是找不到共享库文件 `libtinfo.so.5`。 这个错误通常是由于缺少对应的共享库文件或库文件路径配置不正确导致的。你可以尝试以下几个解决方法: 1. 安装缺失的库文件:根据错误消息,缺失的库文件是 `libtinfo.so.5`。你可以尝试使用包管理器安装该库文件。例如,在基于 Debian/Ubuntu 的系统上,可以运行 `sudo apt-get install libtinfo5` 命令来安装该库文件。 2. 更新库文件路径:如果你已经安装了库文件,但仍然遇到该错误,可能是因为库文件路径配置不正确。你可以通过设置 LD_LIBRARY_PATH 环境变量来指定正确的库文件路径。例如,`export LD_LIBRARY_PATH=/path/to/lib`,将 `/path/to/lib` 替换为包含 `libtinfo.so.5` 的目录路径。 3. 检查编译环境:确保编译环境中的依赖项和工具链已正确安装。你可能需要检查并安装所需的 LLVM、Clang 版本以及其他依赖项。 4. 更新构建脚本:如果以上解决方法都不起作用,你可能需要检查构建脚本中的编译命令和相关配置,确保正确设置了库文件路径和其他编译选项。 请注意,根据具体情况,可能存在其他原因导致该错误。如果以上解决方法都不起作用,你可以提供更多关于你的项目和构建环境的信息,以便我能够提供更具体的建议。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值