USE IEEE.STD_LOGIC_1164.ALL
ENTITY hamenc is
port(CLK:in std_logic
datain:in bit_vector(0 to 3)
hamout:out bit_vector(0 to 7))
end hamenc
architecture a of hamenc is
signal p: bit_vector(0 to 3)
begin
process (CLK)
begin
if(CLK'event and CLK = '1') then
p(0) <= (datain(0) xor datain(1)) xor datain(2)
p(1) <= (datain(0) xor datain(1)) xor datain(3)
p(2) <= (datain(0) xor datain(2)) xor datain(3)
p(3) <= (datain(1) xor datain(2)) xor datain(3)
end if
end process
hamout(4 to 7)<= p
hamout(0 to 3)<= datain(0 to 3)
end a
汉明码的目的是能够纠正一位误码,假设信息码共有n位。汉明码共有r位,那么总共的码长为n+r位.为能检测出n+r位编码中其中一位的错误。
汉明码必须能够表示至少n+r+1种状态,其中n+r种表示n+r位编码中有一位错误,另外还需要一种来表示整个编码正确无误。则汉明码的长度需要满足下列关系。
2r>=n+r+1k个校验位是通过对m+k位复合码字进行奇偶校而确定的。其中,P1位负责校验海明码的第1、3、5、7、?(P1、D1、D2、D4、?)位,(包括P1自己)。
P2负责校验海明码的第2、3、6、7、?(P2、D1、D3、D4、?)位,(包括P2自己)。P3负责校验海明码的第4、5、6、7、?(P3、D2、D3、D4、?)位,(包括P3自己)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)