雷达 · 通信 · 电子战 / 基础精学 198
仅靠七位码的伴随式无法区分单错和多数双错。新增总奇偶位提供错误重量奇偶性的额外观测,使不超过两错的事件具有明确可解释分类。
扩展码长八,前七位沿用Hamming位置,第八位令总重量为偶数;保证分类只讨论每块零、一或两处翻转。
s:前七位伴随式(整数)
p:八位总奇偶(比特)
c8:扩展校验位(比特)
dmin:最小距离(比特)
F2:检测双错(标志)
扩展位为
接收端计算
总奇偶等于错误重量模二。
保证域内,(s,p)=(0,0) 表示无错;s≠0,p=1 表示前七位单错;s=0,p=1 表示第八位单错;s≠0,p=0 表示双错。
因此
双错时保留数据而报错,不执行猜测翻转。
原码最小非零重量为三,追加总偶校验使奇重量增加一、偶重量保持,因此
标准界给出
但带纠错的上述分类保证仅为单错纠正、双错检测,三错可能被误归为单错。
合法扩展码字具有偶重量,接收字总奇偶值等于错误向量重量的奇偶性:
零错、单错、双错范围内,总奇偶值与七位伴随式的组合可以完成所述分类。
三错却同样具有奇校验,可能被当成单错而误纠;四错还可能保持两个校验均通过。
只表示奇数个错误,不等价于恰好一个错误。
因此纠正标志的严格含义是“按单错假设执行了纠正”,而不是已经证明真实错误重量为一。保证域之外的行为不能由标志名称扩大解释。
附加总奇偶标志不指出错误在哪,而是区分错误总数的奇偶。它与已有位置伴随式联合使用,才能在有限保证域内避免将双错误当单错翻转。
穷举十六码字与八种单错,检查恢复正确;枚举二十八种双错,检查全部标记且不修改输入。另验证最小重量四和总偶校验约束。
| 量 | 数值 |
|---|---|
| extended length | 8 |
| single error cases | 128 |
| single error restored | 128 |
| double error cases | 448 |
| double error detected | 448 |
| double input unchanged | 448 |
| 最小距离 | 4 |
图 1 扩展Hamming码单错恢复与双错分类计数
表中数值和图中曲线由 MATLAB 实际运行得到,随机种子为 20261117;运行版本与完整结果另存为独立文件。
RTL 低八位输出处理后的码字,第八位以上的输出 bit8 为已纠正标志、bit9 为检测到双错标志;合法输入为 a[7:0]。双错保留原输入,不声称多于两错的可靠分类。
模块采用同步高有效复位及 valid 握手;有效输入在一个时钟沿登记输出,空拍不改变数据寄存器而清除输出有效标志。端口采用有符号 32 位容器,实际有效范围按子核定义约束。
自检覆盖多组有效输入、空拍保持及复位;它验证指定算术或地址子核,不代表完整通信系统或完整译码器已经完成硬件验证。
独立自检程序已在 Icarus Verilog 13.0 中实际运行并通过。该结果不包含器件综合、静态时序分析或板级测试。
用于基本存储保护、寄存器组错误分类和可靠数字接口实验。错误状态应与数据有效性一同传递,不能在标记双错后继续把数据当成已纠正值使用。
三错可能被误纠为其他码字。
四错中存在不可检测模式。
总奇偶位自身也可能翻转。
SECDED保证依赖每块错误数范围而非总体平均错误率。
扩展总偶校验把错误重量奇偶性加入伴随式分类,提供单错纠正与双错检测。状态输出的准确语义与纠错域边界同样重要。
内容依据:每日精学第 198 课《扩展Hamming码的双错检测》。图表沿用原课固定参数数值结果,属于数值验证,不代表设备实测。