石家庄心雨网站建设,网页制作中级证书,网页托管平台,做网站的的报价JEDEC DDR5 SPD Hub Devices例程
所有例程#xff0c;SV4E-I3C设备连接器件均为SPD5芯片#xff0c;Reg表示MR寄存器#xff0c;Mem表示NVM存储器
1、ENEC CCC
ENEC 启用事件中断#xff0c;ENEC CCC 仅在设备置于 I3C 基本模式后才受支持。当 SPD5 注册 ENEC CCC 时SV4E-I3C设备连接器件均为SPD5芯片Reg表示MR寄存器Mem表示NVM存储器
1、ENEC CCC
ENEC 启用事件中断ENEC CCC 仅在设备置于 I3C 基本模式后才受支持。当 SPD5 注册 ENEC CCC 时更新MR27[4]为1 图片源自《JESD300-5B》
ENINT1时使能IBI中断
status sidebandBusController.doBroadcastWrite(ENEC,cccDefiningBytes[0x01])
if status True:pass
else:svt.printMsg(ENEC CCC FAIL, red)return False2、DISEC CCC
DISEC 禁用带内中断只有在器件进入 I3C 基本模式后才支持 DISEC CCC。当 SPD5 注册 DISEC CCC 时更新MR27[4]为0 图片源自《JESD300-5B》
DISINT1时禁用IBI中断
status sidebandBusController.doBroadcastWrite(DISEC,cccDefiningBytes[0x01])
if status True:pass
else:svt.printMsg(DISEC CCC FAIL, red)return False3、RSTDAA CCC
RSTDAA 将设备置于 I2C 模式只有在器件进入 I3C 基本模式后才支持 RSDAA CCC。 当 SPD5 注册 RSDAA CCC 时它会更新MR18[5]为0
status sidebandBusController.doBroadcastWrite(RSTDAA)
if status True:pass
else:svt.printMsg(RSTDAA CCC FAIL, red)return False4、SETASSA CCC
SETASSA 将设备置于 I3C 模式仅当设备处于 I2C 模式时才支持 SETAASA CCC。在 I2C 模式下当发出这个 CCC 时为了保证这个 CCC 被设备正确注册主机应该限制这个 CCC 的最大运行速度为 1 MHz。当 SPD5 注册 RSDAA CCC 时它会更新MR18[5]为1
sidebandBusController.enableLowBitRateMode()
status sidebandBusController.doBroadcastWrite(SETAASA)
if status True:pass
else:svt.printMsg(SETAASA CCC FAIL, red)return False
sidebandBusController.disableLowBitRateMode()5、GETSTATUS CCC
I3C 基本模式支持 GETSTATUS CCC 图片源自《JESD300-5B》
PEC_Err0表示没有Error1表示发生 PEC Error P_Err0表示没有Error1表示发生Parity Error Pending Interrupt0000表示没有挂起的中断0001表示有挂起的中断
实现方式一
bytesFromTarget sidebandBusController.doDirectRead(GETSTATUS, DIMM0-SPD)
msByte bytesFromTarget[0]
lsByte bytesFromTarget[1]
pecErr bool(msByte 128)
protocolErr bool(lsByte 32)
pendingInterrupt lsByte 4369
if pecErr 0x00:pass
else:svt.printMsg(pecErr_verify FAIL, red)return False
if protocolErr 0x01:pass
else:svt.printMsg(protocolErr_verify FAIL, red)return False
if pendingInterrupt 0x01:pass
else:svt.printMsg(pendingInterrupt_verify FAIL, red)return False实现方式二
statusTuple sidebandBusController.getTargetStatus(DIMM0-SPD)
if statusTuple is not None:(pecErr, protocolErr, pendingInterrupt) statusTupleif pecErr 0x00:passelse:svt.printMsg(pecErr_verify FAIL, red)return Falseif protocolErr 0x01:passelse:svt.printMsg(protocolErr_verify FAIL, red)return Falseif pendingInterrupt 0x01:passelse:svt.printMsg(pendingInterrupt_verify FAIL, red)return False6、DEVCAP CCC
只有在设备进入 I3C 基本模式后才支持 DEVCAP CCC 图片源自《JESD300-5B》 图片源自《JESD300-5B》
实现方式一
bytesFromTarget sidebandBusController.doDirectRead(DEVCAPS, DIMM0-SPD)
if bytesFromTarget[0] 0x04:pass
else:svt.printMsg(MSB_verify FAIL, red)return False
if bytesFromTarget[1] 0x00:pass
else:svt.printMsg(LSB_verify FAIL, red)return False实现方式二
devCapTuple sidebandBusController.getTargetDevCaps(DIMM0-SPD)
if devCapTuple is not None:(getbcr, getdcr, setmrl, setmwl, getpid, tReset) devCapTupleif tReset True:passelse:svt.printMsg(tReset_verify FAIL, red)return False7、SETHID CCC
仅当设备处于 I2C 模式时才支持 SETHID CCC。在 SPD5 注册SETHID CCC 时它会停止 3 位 HID 转换 图片源自《JESD300-5B》
status sidebandBusController.doBroadcastWrite(SETHID, cccDefiningBytes[0x00])
if status True:pass
else:svt.printMsg(SETHID CCC FAIL, red)return False8、DEVCTRL CCC
在典型的 I3C 基本总线上最多可以有 120 个设备。 对于 DDR5 DIMM 应用环境最多有 8 个 SPD5 Hub 设备每个 SPD5 Hub 设备后面有 4 个本地 Target 设备I3C Basic 总线上总共有 40 个或更多设备。 对于某些操作例如启用或禁用所有设备通用的功能即数据包错误检查主机必须一次通过一个设备这在初始上电时会花费大量时间。 此外它需要主机上的额外复杂性因为它必须根据访问设备的方式使用不同的协议直到所有设备都配置相同
为帮助加快此配置操作并简化主机复杂性该器件支持 DEVCTRL CCC。 DEVCTRL CCC 在 I2C 模式或 I3C 基本操作模式下均受支持 图片源自《JESD300-5B》
Broadcast 使能PEC实现方式一
status sidebandBusController.sendDevCtrl(pecEnabled1)
if status True:pass
else:svt.printMsg(sendDevCtrl FAIL, red)return FalseBroadcast 使能PEC实现方式二
sidebandBusController.doBroadcastWrite(DEVCTRL, msgBytes[0xE0,0x00,0x80])
if status True:pass
else:svt.printMsg(DEVCTRL CCC FAIL, red)return FalseMulticast 使能PEC
sidebandBusController.doBroadcastWrite(DEVCTRL, msgBytes[0x60,0xA0,0x80])
if status True:pass
else:svt.printMsg(DEVCTRL CCC FAIL, red)return FalseUnicast 使能PEC
sidebandBusController.doBroadcastWrite(DEVCTRL, msgBytes[0x00,0xA0,0x80])
if status True:pass
else:svt.printMsg(DEVCTRL CCC FAIL, red)return FalseUnicast RegMod 1 I2C模式写MR28-MR35
sidebandBusController.doBroadcastWrite(DEVCTRL, msgBytes[0x01, 0xA0, 0x1C, 0x1F, 0xFC, 0x1F, 0xFC, 0x1F, 0xFC, 0x1F, 0xFC])
if status True:pass
else:svt.printMsg(DEVCTRL CCC FAIL, red)return FalseUnicast RegMod 1 I3C模式写MR28-MR35
sidebandBusController.doBroadcastWrite(DEVCTRL, msgBytes[0x01, 0xA0, 0x1C, 0x00, 0x1F, 0xFC, 0x1F, 0xFC, 0x1F, 0xFC, 0x1F, 0xFC])
if status True:pass
else:svt.printMsg(DEVCTRL CCC FAIL, red)return False本博文暂时分享到这里后续博文将继续为大家呈现JEDEC DDR5 SPD Hub Devices例程
希望本文对大家有帮助上文若有不妥之处欢迎指正
分享决定高度学习拉开差距