每日精学 197|Hamming七四码的单错纠正

2026-09-25

雷达 · 通信 · 电子战 / 基础精学 197

伴随式已把错误转化为校验列信息。若每个单错位置拥有唯一非零列,则无需搜索所有码字即可定位并纠正一个错误,这正是 Hamming 结构的基本机制。

01
模型与符号

码字位置为一至七,H 的第 j 列是 j 的三位二进制表示;保证每块至多一处错误,信息位在位置三、五、六、七。

j:错误位置(位置)

s:伴随式编码(整数)

\widehat c:纠正码字(比特向量)

dmin:最小距离(比特)

t:保证纠错数(比特)

02
从模型到公式

单错定位

若

\boldsymbol r=\boldsymbol c+\boldsymbol e_j

則

\boldsymbol s=\boldsymbol e_jH^T=H_{:,j}^T.

由于列值等于位置编号,可直接令

\widehat j=s,\quad \widehat{\boldsymbol c}=\boldsymbol r+\boldsymbol e_s\quad(s\ne0).

s=0 时不翻转任何位。


距离证明

无零列意味着不存在重量一的非零码字;任意两列不同意味着它们异或不为零,不存在重量二码字。列一、二、三异或为零,因此存在重量三码字,故

d_{\min}=3.

保证纠错半径为

t=\left\lfloor\frac{d_{\min}-1}{2}\right\rfloor=1.

完美覆盖与双错

每个码字半径一球含 1+7=8 个向量,且

2^4(1+7)=2^7.

单错球覆盖全部接收空间。双错位置 i,j 的伴随式为

s=i\oplus j,

通常被解释成第三个位置,导致错误纠正到另一个合法码字,不能把零校验误当正确性证明。

完备球覆盖与双错误纠

七位码字周围半径一的 Hamming 球包含本身及七个单错向量,共八项。十六码字的这些球互不相交,而且

16(1+7)=128=2^7.

全部接收向量因而恰落入某个半径一球,解释了伴随式纠正器为何总能输出一个合法码字。

该合法码字不一定是真实发送字;双错接收向量会落入另一个码字的球。

d(c_1,c_2)\ge3

只保证半径一球不交,不保证半径二纠正。输出零伴随式是码约束检查,不是传输真值检查;

要可靠检测双错,需要扩展校验或其他独立证据。

03
物理含义

冗余三位提供八种状态,恰好区分无错与七个单错位置。该紧凑性也说明没有额外状态可靠地区分全部双错事件。

04
固定参数算例

穷举十六个发送码字和无错、七种单错,共一百二十八种保证域案例,全部应恢复。另枚举双错并计数误纠,明确展示保证域之外的行为。

固定参数数值验证结果
量数值
码字数16
guaranteed domain cases128
guaranteed domain passes128
double error cases336
double error miscorrections336
最小距离3
guaranteed error radius1
图 1:Hamming单错纠正穷举与双错误纠图 1:Hamming单错纠正穷举与双错误纠

图 1 Hamming单错纠正穷举与双错误纠

表中数值和图中曲线由 MATLAB 实际运行得到,随机种子为 20261116;运行版本与完整结果另存为独立文件。

05
数字实现的边界

RTL 对 a[6:0] 计算伴随式,非零时翻转对应位,输出纠正七位码字;未设置双错可靠检测标志,不宣称超出单错保证的能力。 模块采用同步高有效复位及 valid 握手;

有效输入在一个时钟沿登记输出,空拍不改变数据寄存器而清除输出有效标志。端口采用有符号 32 位容器,实际有效范围按子核定义约束。自检覆盖多组有效输入、空拍保持及复位;

它验证指定算术或地址子核,不代表完整通信系统或完整译码器已经完成硬件验证。

独立自检程序已在 Icarus Verilog 13.0 中实际运行并通过。该结果不包含器件综合、静态时序分析或板级测试。

06
适用范围

适用于小块存储校验、数字接口单错误模型和纠错逻辑教学验证。系统级保护若需要双错检测,应增加独立约束或使用更大距离代码。

07
工程上需要注意

两处及以上错误可能误纠。

输出伴随式为零仍可能是错误码字。

码位编号必须与校验列完全一致。

突发多位错误通常超出设计保证。

Hamming 七四码用非零互异校验列实现单错位置的直接寻址,最小距离三严格限定了其纠正能力。穷举保证域与超域案例有助于避免过度声称。

内容依据:每日精学第 197 课《Hamming七四码的单错纠正》。图表沿用原课固定参数数值结果,属于数值验证,不代表设备实测。

阅读8
分享
写评论...