ZHCSRX7 june 2023 BQ79616
PRODUCTION DATA
ECC:
所选寄存器的寄存器值(0x0000 至 0x002F)永久存储在 OTP 中。所有寄存器还作为易失性存储位置存在于相同的地址处,称为影子寄存器。易失性寄存器用于读取、写入及器件控制。有关 OTP 中包含的寄存器列表,请参阅节 8.5.1。
在唤醒期间,器件首先使用节 8.5.1中列出的硬件默认值加载所有影子寄存器。然后,器件有条件地使用来自 OTP 错误检查和纠正 (ECC) 评估结果的 OTP 内容加载寄存器。OTP 以 64 位块的形式加载到影子寄存器中;每个块都存储有自己的错误检查和纠正 (ECC) 值。ECC 检测 OTP 存储数据中的 single-bit(单错校正)或 double-bit(双错检测)更改。每个块的 ECC 单独计算。
系统会纠正 single-bit 错误,但只检测 double-bit 错误,不会纠正。ECC 良好的块被加载。具有 single-bit 错误的块被纠正,并且会设置 FAULT_OTP[SEC_DET] 位以标记已纠正的错误事件。此外,会使用已纠错的块的位置来更新 DEBUG_OTP_SEC_BLK 寄存器。这使得主机能够跟踪可能损坏的存储器。该块在纠正 single-bit 错误后加载到影子寄存器中。由于评估是逐块进行的,因此多个块有可能具有单一可纠正错误,但仍能正确加载。只要每个块仅限于一个错误,就可以存在多位错误并被全部纠正。
具有糟糕 ECC 比较的块(一个块中有两位错误)不会被加载,并且会设置 FAULT_OTP[DED_DET] 位以标记失败的位错误事件。此外,会使用发生双重错误的块来更新 DEBUG_OTP_DED_BLK 寄存器。硬件默认值保留在寄存器中。这允许正确加载某些块(无失败或 single-bit 校正值),而某些块则不加载。当 FAULT_OTP[SEC_DET] 或 FAULT_OTP[DED_DET] 位被设置且器件复位未清除该条件时,器件已损坏且不得使用。
ECC 引擎使用行业标准 72,64 SEC DEC ECC 实现。OTP 由 (72, 64) 汉明码保护,提供单错校正、双错检测 (SECDED)。对于 OTP 中存储的每 64 位数据,还存储额外的 8 位奇偶校验信息。奇偶校验位被指定为 p0、p1、p2、p4、p8、p16、p32 和 p64。位 p0 覆盖整个编码的 72 位 ECC 块。其余七个奇偶校验位根据以下规则分配:
位位置 | 71 | 70 | 69 | 68 | 67 | 66 | 65 | 64 | 63 | 62 | 61 | 60 | 59 | 58 | 57 | 56 | 55 | 54 | |
编码位 | d63 | d62 | d61 | d60 | d59 | d58 | d57 | p64 | d56 | d55 | d54 | d53 | d52 | d51 | d50 | d49 | d48 | d47 | |
奇偶校验位覆盖情况 | p0 | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x |
p1 | x | x | x | x | x | x | x | x | x | ||||||||||
p2 | x | x | x | x | x | x | x | x | x | x | |||||||||
p4 | x | x | x | x | x | x | x | x | x | x | |||||||||
p8 | x | x | x | x | x | x | x | x | |||||||||||
p16 | x | x | x | x | x | x | x | x | x | x | |||||||||
p32 | x | x | x | x | x | x | x | x | x | x | |||||||||
p64 | x | x | x | x | x | x | x | x | |||||||||||
位位置 | 53 | 52 | 51 | 50 | 49 | 48 | 47 | 46 | 45 | 44 | 43 | 42 | 41 | 40 | 39 | 38 | 37 | 36 | |
编码位 | d46 | d45 | d44 | d43 | d42 | d41 | d40 | d39 | d38 | d37 | d36 | d35 | d34 | d33 | d32 | d31 | d30 | d29 | |
奇偶校验位覆盖情况 | p0 | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x |
p1 | x | x | x | x | x | x | x | x | x | ||||||||||
p2 | x | x | x | x | x | x | x | x | |||||||||||
p4 | x | x | x | x | x | x | x | x | x | x | |||||||||
p8 | x | x | x | x | x | x | x | x | |||||||||||
p16 | x | x | x | x | x | x | |||||||||||||
p32 | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | |
p64 | |||||||||||||||||||
位位置 | 35 | 34 | 33 | 32 | 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | |
编码位 | d28 | d27 | d26 | p32 | d25 | d24 | d23 | d22 | d21 | d20 | d19 | d18 | d17 | d16 | d15 | d14 | d13 | d12 | |
奇偶校验位覆盖情况 | p0 | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x |
p1 | x | x | x | x | x | x | x | x | x | ||||||||||
p2 | x | x | x | x | x | x | x | x | x | x | |||||||||
p4 | x | x | x | x | x | x | x | x | |||||||||||
p8 | x | x | x | x | x | x | x | x | |||||||||||
p16 | x | x | x | x | x | x | x | x | x | x | x | x | x | x | |||||
p32 | x | x | x | x | |||||||||||||||
p64 | |||||||||||||||||||
位位置 | 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
编码位 | d11 | p16 | d10 | d9 | d8 | d7 | d6 | d5 | d4 | p8 | d36 | d2 | d1 | p4 | d0 | p2 | p1 | p0 | |
奇偶校验位覆盖情况 | p0 | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x | x |
p1 | x | x | x | x | x | x | x | x | x | ||||||||||
p2 | x | x | x | x | x | x | x | x | |||||||||||
p4 | x | x | x | x | x | x | x | x | |||||||||||
p8 | x | x | x | x | x | x | x | x | |||||||||||
p16 | x | x | |||||||||||||||||
p32 | |||||||||||||||||||
p64 |
编码器 | |||
数据输入 | 编码位 | 数据输出 | 位位置 |
OTP_ECC_DATAIN 1 | d0 至 d7 | OTP_ECC_DATAOUT 1 | 0 至 7 |
OTP_ECC_DATAIN 2 | d8 至 d15 | OTP_ECC_ DATAOUT 2 | 8 至 15 |
OTP_ECC_DATAIN 3 | d16 至 d23 | OTP_ECC_ DATAOUT 3 | 16 至 23 |
OTP_ECC_DATAIN 4 | d24 至 d31 | OTP_ECC_ DATAOUT 4 | 24 至 31 |
OTP_ECC_DATAIN 5 | d32 至 d39 | OTP_ECC_ DATAOUT 5 | 32 至 39 |
OTP_ECC_DATAIN 6 | d40 至 d47 | OTP_ECC_ DATAOUT 6 | 40 至 47 |
OTP_ECC_DATAIN 7 | d48 至 d55 | OTP_ECC_ DATAOUT 7 | 48 至 55 |
OTP_ECC_DATAIN 8 | d56 至 d63 | OTP_ECC_ DATAOUT 8 | 56 至 63 |
OTP_ECC_ DATAOUT 9 | 64 至 71 | ||
解码器 | |||
数据输入 | 位位置 | 数据输入 | 编码位 |
OTP_ECC_DATAIN 1 | 0 至 7 | OTP_ECC_DATAOUT 1 | d0 至 d7 |
OTP_ECC_DATAIN 2 | 8 至 15 | OTP_ECC_ DATAOUT 2 | d8 至 d15 |
OTP_ECC_DATAIN 3 | 16 至 23 | OTP_ECC_ DATAOUT 3 | d16 至 d23 |
OTP_ECC_DATAIN 4 | 24 至 31 | OTP_ECC_ DATAOUT 4 | d24 至 d31 |
OTP_ECC_DATAIN 5 | 32 至 39 | OTP_ECC_ DATAOUT 5 | d32 至 d39 |
OTP_ECC_DATAIN 6 | 40 至 47 | OTP_ECC_ DATAOUT 6 | d40 至 d47 |
OTP_ECC_DATAIN 7 | 48 至 55 | OTP_ECC_ DATAOUT 7 | d48 至 d55 |
OTP_ECC_DATAIN 8 | 56 至 63 | OTP_ECC_ DATAOUT 8 | d56 至 d63 |
OTP_ECC_DATAIN 9 | 64 至 71 |
ECC 诊断测试:该器件提供了一个诊断工具来测试 ECC 功能。有两种模式可用于运行诊断。第一种是自动模式 (OTP_ECC_TEST[MANUAL_AUTO] = 0),该模式使用内部数据来运行测试。在自动模式下,OTP_ECC_TEST[DED_SEC] 位选择要执行的测试类型,OTP_ECC_TEST[ENC_DEC] 位决定要测试编码器还是解码器功能。ECC 测试结果在 OTP_ECC_DATAOUT* 寄存器中提供,具有 1μs 的延迟。每个测试的测试步骤和预期结果如下所示。
自动解码步骤:
自动编码步骤:
[DED_SEC] | [ENC_DEC] | [SEC_DET] | [DED_DET] | OTP_DATAOUT* |
---|---|---|---|---|
0(SEC 测试) | 0(解码器测试) | 1 | 0 | 0x18C3 FF8A 68A9 8069 |
0(SEC 测试) | 1(编码器测试) | 不适用 | 不适用 | 0xCD 3968 C140 2EA5 ED6D |
1(DED 测试) | 0(解码器测试) | 0 | 1 | 0x0000 0000 0000 0000 |
1(DED 测试) | 1(编码器测试) | 不适用 | 不适用 | 0xCD 3968 C140 2EA5 ED6D |