[转载]设计人员应了解的 LPDDR5 主要功能

Synopsys 解决方案部门高级技术营销经理 Vadhiraj Sankaranarayanan

选择合适的存储器解决方案是满足目标系统对各种应用(从云计算和人工智能 (AI),再到汽车和移动应用)的功能和性能要求的关键。双数据速率同步动态随机存取存储器 (DDR SDRAM) 或 DRAM 已成为现实的技术,因为它使用电容器作为存储元件来实现高密度和简单架构、低延迟和高性能、几乎无限的存取耐力和低功耗等多种优势。DDR DRAM 可以根据系统要求以不同的形式使用——在双列直插式存储器模块 (DIMM) 上或作为分立 DRAM 解决方案中均可使用。DDR 分为三个主要类别,每个类别都有独特的功能,可帮助设计人员满足其目标片上系统 (SoC) 的功耗、性能和面积要求。图 1 显示了不同的 DDR 类别及其目标应用场景。

图 1:JEDEC 定义了应用广泛的三类 DRAM 标准,以满足各种应用的设计要求

  • 标准 DDR 面向服务器、云计算、网络、笔记本电脑、台式机和消费类应用,支持更宽的通道宽度、更高的密度和不同的形状尺寸。DDR4 是这一类别目前最常用的标准,支持高达 3200 Mbps 的数据速率。DDR5 DRAM 的运行速度高达 6400 Mbps,预计将在 2020 年问世。
  • 移动 DDR (LPDDR) 适用于对面积和功耗非常敏感的移动和汽车应用。LPDDR 提供更窄的通道宽度和几种低功耗工作状态。LPDDR4 和 LPDDR4X 支持高达 4267 Mbps 的数据速率,是该类别中的常用标准。最大数据速率为 6400 Mbps 的 LPDDR5 DRAM 预计将于 2020 年问世。
  • 图形 DDR (GDDR) 面向需要极高吞吐量的数据密集型应用程序,例如图形相关应用程序、数据中心加速和 AI。GDDR 和高带宽存储器 (HBM) 是这一类型的标准。

每个标准都旨在提供高性能和容量,在运行时将功耗降至最低,并通过可靠性、可用性和可维护性 (RAS) 功能以及纠错码 (ECC) 功能来提高通道的稳定性。

本文说明了 LPDDR5 标准的主要功能。DDR5 的主要功能将在后续文章中介绍。  

移动 DDR (LPDDR) 概览

LPDDR DRAM 提供了一种功耗显著降低的高性能解决方案,而降低功耗是平板电脑、智能手机和汽车等移动应用的重点要求。此类应用所需的 SoC 倾向于在每个通道上使用更少的存储设备和更短的互连,而 LPDDR DRAM 的运行速度比标准 DDR DRAM 快(例如,LPDDR4/4X DRAM 的运行速度最高为 4267 Mbps,而标准 DDR4 DRAM 的运行速度最高为 3200 Mbps),所以能够提供更高的性能。但 LPDDR DRAM 在此类设备中不使用,处于待机状态时,可以将它们置于低功耗状态,例如深度睡眠状态,或者可以使用动态频率调节 (DFS) 功能在较低频率下运行。因此,当存储通道待机时,存储控制器可以适时地使用这些低功耗功能来降低总功耗。

LPDDR5 DRAM 使用动态电压调节 (DVS) 功能节省更多功耗,此时存储器控制器可以在通道待机期间降低 DRAM 的频率和电压。与普通的标准 DDR DRAM 通道(64 位宽)相比,LPDDR DRAM 通道通常为 16 位或 32 位宽。与其他两个类别的 DRAM 世代一样,后继的每一个 LPDDR 世代(LPDDR5、LPDDR4/4X、LPDDR3、LPDDR2、LPDDR)都比其上一代产品具有更高的性能和更低的功耗。此外,任何两代 LPDDR 都不彼此兼容。

LPDDR5 主要功能

与 LPDDR4/4X DRAM 相比,LPDDR5 DRAM 支持高达 6400 Mbps 的数据速率和在更低的工作电压(VDD 的 1.05/0.9V 和 I/O 的 0.5/0.35V)下支持更大的设备尺寸(每个通道 2Gb 至 32Gb)。表 1 显示了 LPDDR5 和 LPDDR4 DRAM 之间的比较:

 LPDDR5 DRAMLPDDR4 DRAM
设备大小2Gb 至 32Gb(每通道)4、8 和 16 bank 设备1k、2k 和 4k 页大小2Gb 至 16Gb(每通道)8 bank 设备2k 页大小
速度最高 6400 Mbps最高 4266 Mbps
电压1.8V DRAM 阵列1.05V / 0.9V 内核0.5V / 0.3 V I/O1.8V DRAM 阵列1.1V 内核1.1V / 0.6V I/O

表格 1:LPDDR5 对比 LPDDR4/4X DRAM

LPDDR5 DRAM 可通过 DVS 支持两种内核和 I/O 电压:在较高频率下运行电压分别为 1.05V 和 0.5V,在较低频率下运行电压分别为 0.9V 和 0.3V。因此,LPDDR5 DRAM 支持内核和 I/O 电压的 DVS。

LPDDR5 的其他关键功能包括用于命令/地址 (C/A) 时钟 (CK) 的新型可扩展时钟架构,以简化 SoC 时序收敛;灵活的 DRAM 存储库架构模式,可根据流量模式实现最佳性能;决策反馈均衡器 (DFE) 以增加 DRAM 上的写入数据的余量,写入 X 功能可以节省功耗,以及链接 ECC 以增强存储器通道 RAS。以下部分将详细说明每个功能

用于简化时序收敛的新型可扩展时钟架构

C/A CK 通常以与所有先前 LPDDR 标准(LPDDR4/4X 及更早的标准)中的数据选通 (DQS) 相同的频率运行。这种时钟方案给 DRAM C/A 通道和 SoC 时序收敛都带来了巨大压力,因为 CK 是存储器通道上 C/A 通道的参考,并且 SoC 中的存储控制器通常以 CK 频率的一半,采用 DFI 1:2 比率模式在 DDR PHY 接口上运行。例如,LPDDR4/4X 的速度为 4267 Mbps,CK 和 DQS 的运行频率为 2133 MHz,而 C/A 的数据速率为 2133 Mbps,控制器时钟的运行频率为 1066 MHz。

这样的时钟方案无法以 LPDDR5 速度扩展。因此,LPDDR5 采用了新的时钟方案,其中 CK 以高于 3200 Mbps 的速度,按照数据选通频率的四分之一运行,而以低于 3200 Mbps 的速度,按照数据选通频率的一半运行。因此,即使在 6400 Mbps 的速率下,该时钟方案也要求 CK 仅以 800 MHz 的频率运行。这样可以降低 C/A 的运行速度(以 1600 Mbps 的速度运行,因为 C/A 可以在 LPDDR5 的 CK 速率的上升端和下降端(例如 DDR 类型)上都进行转换),从而大大提高了 C/A 通道的余量。同样,CK 减速使 SoC 不仅可以更有效地收敛时序,而且还可以提供更高的性能,因为控制器现在可以在 800 MHz 的 DFI 1:1 比率下工作。此外,LPDDR5 不支持传统的双向数据选通架构,而是引入了两个单向数据选通:用于写入操作的写入时钟 (WCK) 和用于读取操作的可选读取时钟 (RDQS)。系统可以选择无选通或单端选通来以较低的速度进行读取,同时节省功耗,当要想达到高速时,就需要采用差分选通 (RDQS/RDQS#)。        

保证通道稳定性的单抽头 DFE

判决反馈均衡器 (DFE) 减少了对接收数据的符号间干扰 (ISI),从而提高了接收数据的余量。先前检测到的符号出现在正在检测的当前符号上,就会引发 ISI。LPDDR5 DRAM 将具有单抽头 DFE,以提高写入数据的余量,从而增强存储通道的稳定性。

Write X 降低功耗

Write X 是一种省电功能,允许系统将特定的位模式(例如全零模式)转变成连续的存储器位置,而无需切换通道上的 DQ 位。

用于防止通道噪声引起的错误的 Link ECC

Link ECC 可以恢复通道中发生的单比特传输错误。该数据与 ECC 一起由控制器发送到 LPDDR5 DRAM,并且在接收到数据/ECC 后,DRAM 会生成 ECC 并检查接收到的 ECC 是否相同。在将数据写入存储器阵列之前,任何单比特错误都将得到纠正。因此,Link ECC 是适合高速的强大 RAS 功能,可防止通道噪声引起的错误。

突发长度为 16 或 32 拍的灵活存储库架构

LPDDR5 DRAM 通过支持三种模式(Bank-Group 模式(4 个 Bank,4 Bank-Group),8 Bank 和 16 Bank)而具有灵活的存储库架构,供用户根据其流量模式选择。Bank-Group 模式适用于高于 3200 Mbps 的速度,并允许 16 和 32 拍的突发长度。8 Bank 模式支持突发长度为 32 拍的所有速度,而 16 Bank 模式则支持突发长度为 16 或 32 拍的 3200 Mbps 以下的速度。

用于进一步节约功耗的 3 种 FSP

与支持 C/A 和 DQ 的 2 个频率设定点 (FSP) 的 LPDDR4/4X DRAM 不同,LPDDR5 DRAM 具有用于 C/A 和 DQ 的 3 个 FSP。这使控制器能够以最少的切换时间快速切换三个频率,以实现最佳的功耗节约效果。如前所述,DFS 与 DVS 的结合使 LPDDR5 DRAM 成为对功耗敏感的应用的理想选择。

总结

存储器是用于移动设备、IoT、汽车和云数据中心等应用中的任何电子系统的重要组件。SoC 设计人员必须选择合适的存储器技术,才能提供必要的性能、容量、功率和面积。DDR 已成为现实的存储技术,可用于多种类别,包括标准 DDR 和低功耗 DDR (LPDDR)。最新的标准 LPDDR5 和 DDR5 以更低的功耗提供更高的性能。LPDDR5 的运行速度高达 6400 Mbps,具有许多低功耗和 RAS 功能,包括新颖的时钟架构、可简化时序收敛。数据速率高达 6400 Mbps 的 DDR5 DRAM 支持更高的密度,包括双通道 DIMM 拓扑以提高通道效率和性能。

Synopsys 提供了全面的存储器接口 IP 产品组合,支持 LPDDR 和 DDR 标准,包括最新的 LPDDR5 和 DDR5。DesignWare® DDR IP全套解决方案包括 PHY、控制器和验证 IP,它们都支持最新标准的主要功能。Synopsys 的产品组合还包括硬化选项、信号完整性/电源完整性分析、验证模型、原型设计和仿真支持。

原文在 https://www.synopsys.com/zh-cn/designware-ip/technical-bulletin/key-features-about-lpddr5.html

国产 EC:CH8571

最近申请到了一块 WCH 家的 Ch8571 EC 开发板和芯片。

这是一款国产的Risc-V 的 EC 芯片。主要参数如下:

  • 基于青稞 RISC-V2A 核心,频率最高 64Mhz, 最高20K Ram
  • 支持 eSPI 接口,符合 eSPI 1.0 规范,支持Peripheral/OOB/Virtual Wire /Flash Access Channel,频率从20MHz-66Mhz
  • 支持 LPC 接口,符合 LPC 1.1 规范
  • 支持 SMBus 接口,6 Channel, 6 个Master 和 3个Slave
  • 支持 18×8 键盘
  • 最多提供 89个 GPIO, 内置上下拉电阻可以编程控制,28个支持 1.8V
  • 内置支持 Full Speed 的 USB Host和Device
  • 比较特别的是带有2个可编程I/O 引脚(PIOC), 这样可以特别定制功能。比如,可以编程直接控制 WS2812 这种LED
  • 提供了三种封装:LQFP128/QFN48X7/BGA128X7

支持的接口可以从下图看到

编程方面,直接使用 MounRiver Studio 集成环境,无需担心 license 的问题。顺便说一句:这个开发环境同样可以开发 CH32V205/307等等USB 芯片,配置简单用起来非常方便。

芯片的下载器是 WCH-LinkUtility,同样是WCH 其他芯片的烧写工具。

兴趣的朋友可以关注一下。

Step to memory 014 超频和波形

https://www.bit-tech.net/reviews/tech/memory/the_secrets_of_pc_memory_part_3/11

当用户对计算机内存进行超频时,他们实际上是在压缩数据眼的大小,并通过以更高的频率运行在多个级别上改变波形,从而可以在规定时间内传输更多数据。然而,这会带走预先设定的安全裕度。

这是一门“黑暗艺术”,因为超频者无法观察或想象起作用的多维因素;相反,他们在稳定性、系统的整体“感觉”和传统的反复试验中寻找迹象,因为每个因素都可能并且将会相互作用并影响无数其他因素,最终达到新的波动平衡。

通常,提高 DRAM 电压可以提高内存速度,“但这也取决于芯片的架构”,镁光科技计算部门高级营销经理 Brett Williams 解释说。

如果电压设计为稳压,那么增加外部电压可能对芯片没有任何影响,因为芯片上有一个稳压器,可以将内核保持在特定电压。如果芯片未稳压,那么增加外部电压时,电压会直接进入内核,从而提高内核电压,使器件运行速度更快。作为发烧友,我们常常享受主板BIOS中各种

DRAM调整配置带来的便利。虽然这些配置可能很有用,但普通家庭用户对大多数功能并不十分了解,因此无法建立有效性能改进的基础。

与其他晦涩难懂的BIOS配置术语一样,VREF、时钟偏差和驱动强度值更有可能被研发工程师用来测试主板在各种内存模块下的稳定性,因为他们可以使用其他工程设备来简化工作。

新用户在调整这些BIOS功能时应小心谨慎,因为大多数功能配置错误不会造成严重后果,但电压选项却并非如此。有一个稳定阶段被称为“伪稳定”或“准稳定”——在这个阶段,系统在某些情况下稳定,但在其他情况下不稳定。完美的稳定性是不可能实现的,因为每次 BIOS 更改都会影响许多其他更改。这可能只是因为没有办法校正波形。

华硕 P5E3 Premium BIOS 是我们迄今为止见过的最全面的 BIOS 之一

一次24小时内存压力测试的成功并不能保证在完全相同的系统配置下,第二次测试也能同样成功。这种“伪稳定性”之所以会逐渐增加,根本原因在于信号冗余度的不断减小。冗余度的逐渐减小将使工艺、电压和温度 (PVT) 变化的负面影响呈指数级增长。

事实上,许多运行在 DDR2 800MHz 及更高频率的台式机系统确实会产生错误。我们通常认为的稳定,在 99.99% 的稳定性下也未必完美无缺。虽然 0.01% 的错误率听起来可能不多,但每秒传输的数据比特数却可能迅速增加到相当大的数量。

然而,有些错误可能对系统并非致命的;例如,它可能只会导致像素变色,或在电影播放过程中产生无法察觉的 MP3 噪音。

这也是为什么服务器和工作站会使用更昂贵的带有纠错码 (ECC) 的内存模块,而这些模块的运行速度通常比台式机内存模块慢的原因之一。美光科技的 Brett Williams 认为:“ (为了让内存跟上 CPU 的步伐),架构可能需要做出一些改变。无论它被称为 DDR 还是其他名称,DDR3 之后都会有下一代 DRAM。它会是革命性的还是渐进式的?这还有待观察。事实上,这个问题目前正在研究之中…… ”

基于CH32V305制作串口数据交换器

本文是参加“M-Design设计竞赛”的项目,原文在:https://www.eetree.cn/project-draft/5614

虽然现在的PC上难以见到传统的9芯串口,但是串口仍然存在于各种设备上。比如,串口是单片机必不可少的接口。此外,USB串口可以方便的实现PC对外的接口,因此串口编程仍然是一个通用的PC对外通讯接口。

一些时候,我们设计的外部设备使用USB串口通讯,在编写上位机应用程序的时候我们不可避免的需要串口调试,我们需要得知发送的数据是否符合预期。一种方法是直接使用逻辑分析抓取设备端的串口数据,这种方法优点是非常可靠,缺点是比较麻烦,需要连接线路,此外如果调试目标的是USB 串口是通过单片机内部实现的,那么就无法实现抓取;另外一种方法是通过在主机端安装虚拟串口软件,这种方法的优点是灵活,可以配置出来各种组合,缺点是软件按台计费成本较高,同时因为是驱动实现的,在一些特殊情况下比如操作系统升级还会遇到兼容性问题。

image.png

这次的作品是通过 Ch32V305实现的虚拟串口设备(我将这种设备称作“PVD”,Physical Virtual Device,物理虚拟设备,更多设备可以在【参考1】中看到)。设计上非常简单,可以看作是一个 Ch32V305的最小系统。设备通过USB 供电,之后通过TLV1117,将5V转化为3.3V,提供给芯片。芯片外围电路非常简单:一个8Mhz晶振提供信号源,配合2个100nF 电容即可工作。

image.png

PCB 设计如下:

image.png

焊接之后的实物如下:

image.png

对于这样的设计来说,代码是重中之重。这次我们使用CherryUSB 框架配合 FreeRTOS实现了设计目标。

设计上,我们使用了4个端点进行收发:

image.png

工作流程如下:

image.png

具体关键代码如下:

1.代码入口在 main.c 文件中,这里会对设备进行初始化设定

int main(void)

{

    SystemCoreClock = 0;

    SystemCoreClockUpdate();

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

          Delay_Init();

          USART_Printf_Init(115200);

          printf("SystemClk:%d\r\n", SystemCoreClock);

          printf("This is Audio example\r\n");

 

          Com_Init();

 

    xTaskCreate(Led_task, (const char*)"Led", (uint16_t)32, (void*)NULL, (UBaseType_t)5, NULL);

 

    /* Start the scheduler. */

    vTaskStartScheduler();

 

          while(1)

    {

          }

}

2.作为USB设备描述符是重要的部分,具体描述符在cdc_acm_multi.c 中的cdc_descriptor[]结构体中定义,此外,为了方便配置,还模拟除了一个HID 设备,具体的描述符在hid_custom_report_desc 中定义。

3.借由前面提到的 CherryUSB框架,收到的数据会在Com_Data_Recv() 函数中进行处理,根据设定将收到的数据进行转发

//  处理数据接收的函数,只能在中断调用

void Com_Data_Recv(uint8_t DevIndex, uint8_t* DataPtr, uint32_t DataLen)

{

    uint8_t     ComCfgData = ComConfig[DevIndex];

    Com_Data_Queue  stQueue;

    BaseType_t xHigherPriorityTaskWoken;

 

    stQueue.DataPtr = DataPtr;

    stQueue.DataLen = DataLen;

 

    for (uint8_t i = 0; i < ComDevCnt; ++i)

    {

        if (ComCfgData & 1 << i)

        {

            //  数据复制一份

            stQueue.DataPtr = pvPortMalloc(DataLen);

            if (stQueue.DataPtr)

            {

                memcpy(stQueue.DataPtr, DataPtr, DataLen);

                //  将数据放入队列中

                xQueueSendFromISR(ComQueue[i], &stQueue, &xHigherPriorityTaskWoken);

//                if (xPortIsInsideInterrupt()) {

//                    xQueueSendFromISR(ComQueue[i], &stQueue, &xHigherPriorityTaskWoken);

//                } else {

//                    xQueueSend(ComQueue[i], &stQueue, portMAX_DELAY);

//                }

            }

        }

    }

}

编译后的代码通过 LinkE烧录到设备中之后插入PC中即可使用。因为每次要求配置组合不同,我们还设计了一个上位机程序。程序执行之后会使用USB HID 和设备通讯,将配置信息发送给设备。

感谢贸泽电子与硬禾科技举办的创意设计竞赛。这是我们第一次在 FreeRTOS 上使用CherryUSB 框架。可以看到,这样的方法使得资源调配变得非常容易,使用者可以对任务目标进行聚焦。团队成员一边学习一边实践,相互配合分工协作,在一个又一个周末不断沟通协调,最终完成了目标。

完整的CH32V305固件代码:

项目电路图,使用嘉立创专业版制作完成:

用于配置串口关系的工具,Windows, VC编写

工作的测试视频

DFRobot ESP32 P4 音频框架

ESP32 官方的 USB 框架是 TinyUSB, 这次带来的是使用 TinyUSB 在 IDF 下实现的虚拟USB麦克风。
代码内置了一个正弦波的采样数据,录音机打开之后会送出:

/*
 * SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
 *
 * SPDX-License-Identifier: Unlicense OR CC0-1.0
 */

#include <stdio.h>
#include <math.h>
#include "sdkconfig.h"
#include "esp_err.h"
#include "esp_log.h"
#include "driver/uart.h"
#include "usb_device_uac.h"
#include "sine.h"

static const char *TAG = "usb_uac_main";

int audiobuffer=0;

static esp_err_t uac_device_output_cb(uint8_t *buf, size_t len, void *arg)
{
    //size_t bytes_written = 0;
    //bsp_extra_i2s_write(buf, len, &bytes_written, 0);
	ESP_LOGE(TAG, "ocb");
    return ESP_OK;
}

static esp_err_t uac_device_input_cb(uint8_t *buf, size_t len, size_t *bytes_read, void *arg)
{
	
	for (int i=0;i<len;i++) {
		buf[i]=AudioData[(audiobuffer+i)%AUDIOLEN];
	}
	audiobuffer=(audiobuffer+len)%AUDIOLEN;
ESP_LOGE(TAG, "icb");
*bytes_read=len;
    return ESP_OK;
}

static void uac_device_set_mute_cb(uint32_t mute, void *arg)
{
    ESP_LOGI(TAG, "uac_device_set_mute_cb: %"PRIu32"", mute);
    //bsp_extra_codec_mute_set(mute);
}

static void uac_device_set_volume_cb(uint32_t volume, void *arg)
{
    ESP_LOGI(TAG, "uac_device_set_volume_cb: %"PRIu32"", volume);
    //bsp_extra_codec_volume_set(volume, NULL);
}

void app_main(void)
{
uart_config_t uart_config = {
	.baud_rate = 2000000,
	.data_bits = UART_DATA_8_BITS,
	.parity= UART_PARITY_DISABLE,
	.stop_bits=UART_STOP_BITS_1
};

uart_param_config(UART_NUM_0,&uart_config);

    uac_device_config_t config = {
        .output_cb = uac_device_output_cb,
        .input_cb = uac_device_input_cb,
        .set_mute_cb = uac_device_set_mute_cb,
        .set_volume_cb = uac_device_set_volume_cb,
        .cb_ctx = NULL,
    };

    uac_device_init(&config);
}

工作的视频

https://www.bilibili.com/video/BV1a7YizpEdr/?share_source=copy_web&vd_source=5ca375392c3dd819bfc37d4672cb6d54

完整的代码

Step to memory 013利用片上终端 (ODT) 抑制信号噪声

https://www.bit-tech.net/reviews/tech/memory/the_secrets_of_pc_memory_part_3/8

随着主板功能日益丰富,性能不断提升,保持信号完整性也变得越来越困难。当内存速度超过DDR1 之后,DDR1主板采用的电阻式终端方案无法克服信号反射问题。

内存总线频率的提升会降低信号的冗余度。压缩程度越高、电压越低的信号,其本质就越弱。虽然数据选通 (DQS)无法消除所有的抖动,但是这种设计能够减小波形边缘负面影响。

和DDR1相比,DDR2将终端电阻 (ODT)从主板上移入了内存芯片中。这样能够提高信号质量保证完整性。这不仅带来了其他好处,还降低了主板制造商的材料和测试成本。意外信号可能会从有源或无源元件反弹,但只有像 DRAM 这样的有源元件会受到不利影响。ODT 可以消除芯片级读写操作期间总线上信号回波的负面影响。

讽刺的是,如果端接过于有效,当内存时序不准确时,数据信号可能会被吸收——超频有时会导致这种数据截断内存错误。

某些主板的BIOS允许用户手动调整ODT的电阻特性,范围在50、75或150欧姆之间。根据JEDEC规范,在某些平台上,DDR2-667及更高版本的内存必须使用50欧姆。

要确定您的内存模块是否支持50欧姆,可以使用名为SPDTool的程序查看预定义的内存性能值和特性。主板设计人员需要根据各种ODT配置正确模拟和测试读写信号质量,以找到最佳数据眼孔径的要求。

模拟过程可能非常繁琐且耗时,因为它们需要根据主板阻抗和ODT设置的组合,针对不同插槽配置的众多内存模块收集数据眼孔径数据。这也是廉价主板只有两个插槽的部分原因。

片外驱动器 (OCD) 校准

DDR2 使用片外驱动器校准来提高数据和数据选通之间的跟踪精度。OCD 校准电路用于在内存初始化过程中设置 DDR2 驱动器的阻抗和电压电平。它的重要性体现在以下几个方面:

  • OCD 通过最小化数据选通 (DQS) 到数据 (DQ) 的偏差来提高信号质量。
  • 它通过最大限度地减少过冲和欠冲问题来提高信号质量。
  • 它通过 IO 驱动器电压校准吸收来自每个 DRAM 供应商的工艺变化。

OCD 的驱动器阻抗调整引擎使用一种状态机:对此最基本的解释是,状态机是一种在任何给定时间存储组件状态的设备。

为了检测最佳内存设置,系统会根据不同的但预先确定的配置值发送多个测试信号。测试完成后,将使用提供最佳信号质量的值。最佳DQS波形可提供最大的数据眼图区域,同时将抖动、过冲和下冲降至最低。如果经过适当的调整和激活,它可以扩展系统时序裕度,从而有助于改善整体信号特性。JEDEC

的DDR2规范文档指出,如果不使用OCD校准,则在上电和初始化过程中将采用默认参数。一些制造商并不认为这是DDR2的必要功能,并且通常将其保留为默认值以节省设计成本和时间。这可能是导致某些DDR2 800MHz(及更快)内存出现问题的一个因素。

驱动性能/驱动强度和过渡时间 Drive Performance/Drive Strength and Transition Time

驱动器性能与转换时间成正比。驱动器性能越高,内存低电压状态和高电压状态之间的转换时间就越短(或越快)。驱动器性能有时也称为“驱动强度”或“边沿速率”。

上图可以看到:驱动能力越强,信号的斜率越大,越快到达波峰/波谷

只有当电压上升或下降幅度设置在特定水平之间时,信号才能被正确读取。转换时间是指从低电压 (VIL) 变为高电压 (VIH) 状态或从高电压 (VIH) 变为低电压状态所需的时间。因此,转换时间越快,电压上升和下降的速度就越快。

更强的驱动性能会使波形上升部分的电压更快地上升。相反,它会迫使波形下降部分的电压更快地下降。需要注意的是,驱动性能功能应用于许多领域,通常来说,这个概念相当普遍,但不应将其混淆为特定设备或领域中单一因素的代表。

在某些主板中,内存子系统的许多方面都允许用户更改各种驱动强度值。将驱动性能设置过强可能会产生破坏性的过冲和下冲效应,从而与将其设置过低一样危及数据完整性。

想象一下一辆汽车上下坡:你把油门踏板踩得越深,汽车爬坡越快。同样,下坡时踩下踏板会使下坡更快。

这代表着汽车驱动性能的提升。那么,如果你过度增加驱动强度,到达山顶或山脚会发生什么?你会超过顶峰,四个轮子会离开地面,像好莱坞电影里那样飞过空中。这就是所谓的“超调”。

这同样适用于下坡,施加过多的驱动强度会导致惯性使你超调、失去控制并撞车。

数据选通 (DQS) 驱动性能

当数据选通信号DQS和/DQS具有不同的驱动性能时,它们将具有明显不平衡的转换时间。

DDR2 采用差分数据选通信号 (DQS) 设计,使用 DQS 和 /DQS 信号之间的交点作为数据传输的参考。任何偏差都会对时序精度产生不利影响,并可能造成人为的 DQS-DQ 偏差。内存控制器将通过与差分数据选通信号 (DQS) 同步来移动数据 (DQ) 信号,而差分数据选通信号又会跟踪系统时钟。DQ

信号使用与参考电压 (VREF) 的交点作为参考,与 DQS 同步。为了实现最佳数据传输,DQS-/DQS 和 DQ-VREF 之间的两个交点必须对齐。因此,调整 VREF 有时可以提高故障系统的稳定性。然而,对于家庭用户来说,他们无法观察并确切了解正在发生的事情。

DQ-DQS 偏移效应会缩短内存控制器发送和接收数据信号的时间,从而导致数据眼和有效数据窗口减小:成功的信号传输需要足够的建立时间和保持时间裕度。DQ-DQS 偏移通常会对运行频率为 800MHz 或更快的 DDR2 内存模块造成不利影响。

总而言之,驱动器阻抗调整引擎和 OCD 校准电路用于调整 DQ 和 DQS-/DQS 的上拉和下拉驱动强度,以使 DQ-DQS 偏差尽可能小,从而以更大的冗余度扩展数据眼。

关于 Intel USB4 测试工具错误的说明

前几天有朋友留言,希望我介绍一下 Intel USB4 这个工具的使用。主要是每一代产品都不相同,改动一直很大,所以我这边无法统一介绍。

今天正好有一个同事遇到了问题,找我帮忙看看。他遇到的问题是:根据手册,一直无法安装这个工具,从Log 上看是软件无法找到 Python 3.11 所以无法进行下去。

经过我的研究判断:这是一个软件问题。正常情况下安装 Python 后会在 HKEY_CURRENT_USER 下面生成 Python 路径。但是这个软件是去查找 HKEY_LOCAL_MACHINE 下面,因此无法找到对应的路径。

修改方法,手工在HKEY_LOCAL_MACHINE 下面创建一个名为 Python 的 Key,然后在它下面创建一个 PythonCore 的Key, 在下面继续创建 3.11 的Key, 然后是 InstallPath的Key, 最终给这个赋值你的 Python 3.11 安装目录。例如:

Intel GPIO Configuration tool 使用方法

这次介绍一下 Intel 的 GPIO 配置工具,通常的名称是 Intel GPIO Configuration tool ,使用这个工具可以检查和设置 Intel 平台的 GPIO, 一个工具可以支持全部平台,比如:KBL/RPL/ARL 。下载的时候会提供2个版本:EFI 和 Windows 版本。这里介绍 Windows 版本工具的使用。

安装界面如下:

1.初始界面

2.推荐使用默认目录进行安装

3.一路 Next 即可完成安装

4.运行时如果遇到如下错误,通常是因为没有使用管理员权限运行

5.在图标上使用“Run as administrator”运行

6.第一次启动会出现如下界面

7.使用 Open 菜单

8.这里会出现2个选项:Direct 的意思是读取当前平台的设置;File 的意思是读取保存成文件的GPIO设定信息

9.这里使用 Direct 即可读取当前平台的GPIO配置。可以根据你的需要修改 GPIO 的配置,修改后使用最右侧的“update”按钮即可设置进入。需要特别注意的是:

a.此次设置重启之后BIOS会重新配置 GPIO, 这次的设置就会失效

b.有可能出现修改无法生效的请款,有可能是因为启动过程中BIOS设置了 lock 功能,配置被锁定,这种情况可以请BIOS工程师来帮助修改,或者特别制作一个没有 lock 的BIOS方便测试

10.菜单中的 Export 可以帮助你导出当面读取的GPIO信息,输出是二进制格式,这种格式可以通过菜单中的 Open来读取打开

11.如果想导出为方便阅读的格式,需要使用 Report菜单

12. 例如,保存为 ddd.html 然后打开就是下面这样:

入手一款国产开源逻辑分析仪

最近入手了一款国产的开源逻辑分析仪:章鱼哥出品的 PX logic 逻辑分析仪。

这款逻辑分析仪主打高速采集,性能指标​如下:

•最大32通道逻辑分析仪​

•buff模式最大支持8ch@1G,总带宽8G,存储深度4Gbits​

•usb3.0下stream最大2ch@1G,总带宽2G,存储深度1024Gbits​

•采样usb3.0进行传输,兼容usb2.0​

•输入采样阈值0-6v可调​

•开源解码协议库200+,使用python进行开发,可自行开发编写

硬件核心部分采用国产器件:

  • USB3.0 Phy 采用南京沁恒微的WCH569W
  • FPGA采用国产FPGA 紫光同创PGL22G

其中的 Buffer 模式意思是:内部自带了缓冲,可以将采集的信号直接传输存储在内部,存储多少数据取决于当前采样数量居和板载内存的大小;Stream的意思是随时将当前采样到的数据发送到电脑上,理论上只要你的电脑性能足够,可以不停的进行采样。

我入手的是中间价位 16通道599的这款:

型号PX Logic 32PX Logic 16 ProPX Logic 16 PlusPX Logic 16 base
简介32通道1G采样4G存储16通道1G采样4G存储16通道500M采样2G存储16通道250M采样1G存储
裸机价格999599现阶段不出399
USB接口USB3.0Type-C 支持正反插入)支持USB35G gen1USB2.0480mbps
通道数量32161616
最高采样率Buffer1GHz8ch1GHz8ch500MHz16ch250MHz16ch
Stream1GHz2ch1GHz2ch500MHz4ch250MHz8ch
最大存储深度Buffer4Gbit4Gbit2Gbit1Gbit
Stream最大1024G(bit) 取决电脑内存
最小采集脉宽2ns2ns4ns8ns
数据缓存模式Buffer(采集率更高)/Stream(存储深度更长)/Roll滚动模式(实时监控)
采样精度一个采样周期
触发类型内部触发上升沿/高电平/下降沿/低电平/任意沿
最多32通道同时设置触发
外部触发上升沿/高电平/下降沿/低电平/任意沿
专用硬件io触发输入,供外部设备同步
触发输出触发信号输出到IO,供外部设备同步
协议支持200+协议(开放协议解码库,可自定义任何协议)
输入耐压-40V + 40V
输入阻抗200K/1pf
阈值范围0~6V0.1V步进)
波形输出1pwm
通道接口2.54mm 杜邦线接口 50Pin正凌精工 3U镀金牛角座)
供电电压5V/USB供电
供电电流300mA@5V
供电功率1.5W
尺寸大小长宽高:80*74*13.5mm
工作温度0~85摄氏度

刚好手上有一个兼容性问题,使用这个抓了一下 SPD 的波形:

官网www.marrychip.com

这款产品对于分析主板时序非常有用,此外后面还会深入研究,尝试自己编写解码功能支持更多的总线。

软件可以在这里下载:

http://a78231029.gs2.cosfiles.com/d/ty-2501/LABZ/PXView_1.4.8_window_Setup.exe

Step to memory 012 同步存储器中的时钟偏差

https://www.bit-tech.net/reviews/tech/memory/the_secrets_of_pc_memory_part_3/7

同步存储器中的时钟偏差

当越来越多的电路与一个时钟同步时,可能会出现时钟延迟现象。结果,所有数据都无法与正确的时钟关联并准时到达:这种现象通常称为“时钟偏差”

华硕 P5E3 Premium BIOS 中的“AI Clock Skew”选项

时钟偏差可能由多种因素造成,包括路径延长、温度波动、沿该线路添加多个逻辑电路、材料缺陷以及主板上的根本设计缺陷——换句话说,它可能发生在内存系统的许多不同部分。在不同位置消除偏差逻辑将尝试最大限度地减少负面影响,以保持数据和系统时钟之间的一致性关系。然而,随着内存性能的不断提高,并非所有问题都能轻松解决。

发烧友可能更熟悉主板 BIOS 中恰如其名的“Clock Skew”变量,它可以用于在超频计算机内存时获得更高的稳定性,从而解决 DIMM 之间的时钟偏差。不可避免的是,内存性能越高,出现时钟偏差的可能性就越大。

当主板上使用四条内存条而不是两条内存条时,时钟偏差会更加严重,偏差量取决于同时使用哪两条内存条,以及 PCB 的基本设计。

经过大量设计仿真和测试,质量极高的主板通常能够很好地控制时钟偏差问题。然而,由于市场竞争压力巨大,产品生命周期缩短,许多存在缺陷的主板在没有足够测试时间的情况下就过早上市并大肆宣传,之后又在 BIOS 更新中尽可能地进行修补。日益复杂的主板芯片组和更高的内存速度也增加了这方面出现故障的可能性。

单端差分选通到差分选通架构

虽然单端数据选通信号最初用于 DDR1,但 DDR2 是支持单端和差分选通信号的演进转折点。最基本的解释是,单端选通信号依赖于一个振荡波,而差分架构则使用两个相互交织、交叉的反向振荡波。

镁光科技的 Aaron Boehm 强调,“差分时钟和选通信号方案对串扰引起的变化不太敏感”,而对于高速 DDR2 和 DDR3 来说,使用差分设计至关重要,Boehm 解释说,“随着我们不断降低 DRAM 电压并不断提高速度,降低时钟和选通信号对此类噪声的敏感度至关重要。 ”

对于单端选通信号设计,任何少量的噪声和干扰都会导致选通信号沿水平电压阈值(有时也称为参考电压电平)向左或向右偏移。这种水平偏移是有害的,因为它代表了时间的变化,从而导致了时间的不准确性。

存储器依赖于“相交”参考点的稳定性才能可靠地进行读写操作。差分选通脉冲设计更加稳定,因为波形异常只会导致相交中心点上下移动,这代表参考电压 (Vdd/2) 的变化,而不是时序偏移(左移或右移)。波动的电压阈值不如时间偏移严重。

在同步存储器系统中,任何显著的时间偏移都是致命的,因为这意味着数据不再与时钟一致,因此,只有这样的差分信号架构才能保证高速存储器正常工作。