雷达 · 通信 · 电子战 / 基础精学 197
伴随式已把错误转化为校验列信息。若每个单错位置拥有唯一非零列,则无需搜索所有码字即可定位并纠正一个错误,这正是 Hamming 结构的基本机制。
码字位置为一至七,H 的第 j 列是 j 的三位二进制表示;保证每块至多一处错误,信息位在位置三、五、六、七。
j:错误位置(位置)
s:伴随式编码(整数)
:纠正码字(比特向量)
dmin:最小距离(比特)
t:保证纠错数(比特)
若
則
由于列值等于位置编号,可直接令
s=0 时不翻转任何位。
无零列意味着不存在重量一的非零码字;任意两列不同意味着它们异或不为零,不存在重量二码字。列一、二、三异或为零,因此存在重量三码字,故
保证纠错半径为
每个码字半径一球含 1+7=8 个向量,且
单错球覆盖全部接收空间。双错位置 i,j 的伴随式为
通常被解释成第三个位置,导致错误纠正到另一个合法码字,不能把零校验误当正确性证明。
七位码字周围半径一的 Hamming 球包含本身及七个单错向量,共八项。十六码字的这些球互不相交,而且
全部接收向量因而恰落入某个半径一球,解释了伴随式纠正器为何总能输出一个合法码字。
该合法码字不一定是真实发送字;双错接收向量会落入另一个码字的球。

只保证半径一球不交,不保证半径二纠正。输出零伴随式是码约束检查,不是传输真值检查;
要可靠检测双错,需要扩展校验或其他独立证据。
冗余三位提供八种状态,恰好区分无错与七个单错位置。该紧凑性也说明没有额外状态可靠地区分全部双错事件。
穷举十六个发送码字和无错、七种单错,共一百二十八种保证域案例,全部应恢复。另枚举双错并计数误纠,明确展示保证域之外的行为。
| 量 | 数值 |
|---|---|
| 码字数 | 16 |
| guaranteed domain cases | 128 |
| guaranteed domain passes | 128 |
| double error cases | 336 |
| double error miscorrections | 336 |
| 最小距离 | 3 |
| guaranteed error radius | 1 |
图 1 Hamming单错纠正穷举与双错误纠
表中数值和图中曲线由 MATLAB 实际运行得到,随机种子为 20261116;运行版本与完整结果另存为独立文件。
RTL 对 a[6:0] 计算伴随式,非零时翻转对应位,输出纠正七位码字;未设置双错可靠检测标志,不宣称超出单错保证的能力。 模块采用同步高有效复位及 valid 握手;
有效输入在一个时钟沿登记输出,空拍不改变数据寄存器而清除输出有效标志。端口采用有符号 32 位容器,实际有效范围按子核定义约束。自检覆盖多组有效输入、空拍保持及复位;
它验证指定算术或地址子核,不代表完整通信系统或完整译码器已经完成硬件验证。
独立自检程序已在 Icarus Verilog 13.0 中实际运行并通过。该结果不包含器件综合、静态时序分析或板级测试。
适用于小块存储校验、数字接口单错误模型和纠错逻辑教学验证。系统级保护若需要双错检测,应增加独立约束或使用更大距离代码。
两处及以上错误可能误纠。
输出伴随式为零仍可能是错误码字。
码位编号必须与校验列完全一致。
突发多位错误通常超出设计保证。
Hamming 七四码用非零互异校验列实现单错位置的直接寻址,最小距离三严格限定了其纠正能力。穷举保证域与超域案例有助于避免过度声称。
内容依据:每日精学第 197 课《Hamming七四码的单错纠正》。图表沿用原课固定参数数值结果,属于数值验证,不代表设备实测。