汉明码EASy68k

时间:2018-03-17 05:13:44

标签: easy68k

我遇到这个困难,没有运气,也不会感激任何帮助!!感谢

汉明码是一种用于编码和解码信息以启用错误检测和纠正的特殊技术。理查德汉明在1951年发表了他的工作。过去硬件的高成本使得这种技术成本高昂,因此不实用。 CRAY计算机设计已经发布到市场,使用汉明纸中描述的单一纠错技术。

编码

汉明码的一个重要特征是算法的所有组件在数学上都是合理的和实用的。编码过程是基于要发送的信息计算“偶校验”比特,并将这些奇偶校验比特与发送的信息一起发送。如果信息包含4位(abcd),则需要三个奇偶校验位(rst)。这些奇偶校验位称为校验位。编码后的消息的结构如下:

position    7   6   5   4   3   2   1
bit a   b   c   r   d   s   t

其中:

r is set to create even parity for bits 7, 6, 5 and 4;
s is set to create even parity for bits 7, 6, 3 and 2;
t is set to create even parity for bits 7, 5, 3 and 1.

您要对内存中字节的内容进行编码,其中信息位a,b,c和d的位置如下所示:

xxxxabcd

例如,假设您有以下内存配置,您的任务是组成编码字节,如下所示:

内存编码 消息

2274    xxxx1011    01010101
2275    xxxx1001    01001100
2276    xxxx0011    00111110

1 个答案:

答案 0 :(得分:0)

简单的答案是使用查找表(LUT)进行编码(以及解码)

START:
        LEA     INPUT,A1
        LEA     OUTPUT,A2
        LEA     ENCODE,A0
ENCLOOP:
        MOVE.B  (A1)+,D0
        BMI.S   EXIT
        AND.W   #$0F,D0
        MOVE.B  (A0,D0.W),D1     ; encode byte
        MOVE.B  D1,(A2)+         ; save it
        BRA.S   ENCLOOP

EXIT:
        SIMHALT
        ; change table to match your Hamming scheme
ENCODE: DC.B $2E,$AD,$14,$97,$B2,$31,$98,$1B
        DC.B $E4,$67,$CE,$4D,$68,$EB,$52,$D1
INPUT:  DC.B $0B,$09,$03,$FF

OUTPUT: DS.B 3