编码算法处理独立比特块及Hamming码码块分隔相关问题咨询
汉明码码块分隔与收尾处理说明
码块分隔规则
汉明码属于定长线性块码,本身的编解码协议不需要在码块之间添加额外的分隔比特:
- 收发两端只要提前约定好采用的汉明码参数,比如(15,11)汉明码就是单块总长15比特,含11位信息位、4位校验位,接收端直接按15比特的固定长度逐块切分解码即可,额外加分隔比特反而会降低有效传输效率。
- 只有当传输链路没有上层帧同步机制、无法确定第一块码的起始位置时,才会在一整组汉明码块的头部添加固定的前导同步序列,这个前导属于链路层设计,不属于汉明码本身的协议要求。
你给出的矩阵示意里的空位就是可选的链路层分隔/同步位,不是汉明码编解码的必须部分:
线性码矩阵表示: 比特块 下一个比特块 最后一个块 1 1 1 1 0 0 0 1 1 0 0 1 0 0 1 1 + 分隔位(可选) + 0 0 0 1 + ... + 1 0 0 1 1 0 1 1 0 0 0 1 ? ? ? ? 0 1 0 1 0 0 0 1 ? ? ? ?
最后一个码块空余处理
如果最后一个信息块凑不满11位信息位,有两种主流处理方案:
- 补零填充:最通用的做法,在最后一个块的信息位空余位置补0,凑够11位后正常计算4位校验位,组成完整的15比特码块传输。接收端解码完成后,根据上层预先传递的原始数据长度,把填充的多余0位去掉即可。
- 缩短汉明码处理:如果要尽可能节省传输带宽,可以采用缩短汉明码的规则,比如最后一个块只有k位有效信息(k<11),那么不需要补零凑11位,只需要保留4位校验位,最后一个码块总长度为k+4位,收发两端提前约定最后一个块的长度即可正常编解码。
内容的提问来源于stack exchange,提问作者wileypoots
相关产品推荐
相关产品推荐

