循环冗余编码(CRC)原理
今天学了CRC,也就是循环冗余编码。感觉很难懂,就去上网去看,把自己搞得差不多懂了,不它写下了,方便以后忘了可以回忆一下。
循环冗余编码工作原理
G(X)=生成多项式
f(X)=信息位==>(注:就是要发送的信息)
R(X)= f(X) · x^k ∕ G(X)的余式==>(注:就是校验码)
T (X)= f(X) · x^k + R(X)
T (X)=实际发送的信息位== >(注:就是实际发送的信息)
k=G(X)中X的最高指数
Q(X)=f(X) · x^k ∕ G(X)的商
验证结果
f(X) · xk ∕ G(X)能除尽则接收正确。
否则则接收出错,要求发送方重发。
例如:信息字段代码为: 1011001;对应m(x)=x^6+x^4+x^3+1
假设生成多项式为:g(x)=x^4+x^3+1;则对应g(x)的代码为: 11001
x^4*m(x)=x^10+x^8+x^7+x^4 对应的代码记为:10110010000;
采用多项式除法: 得余数为: 1010 (即校验字段为:1010)
发送方:发出的传输字段为: 1 0 1 1 0 0 1 1 0 10
信息字段 校验字段
接收方:使用相同的生成码进行校验:接收到的字段/生成码(二进制除法)如果能够除尽,则正确,
其中我们还要了解的是
多项式与二进制数码
多项式和二进制数有直接对应关系:x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0。可以看出:x的最高幂次为R,转换成对应的二进制数有R+1位。
多项式包括生成多项式G(x)和信息多项式C(x)。
如生成多项式为G(x)=x ^4 +x^ 3 +x+1, 可转换为二进制数码11011。
而发送信息位 1111,可转换为数据多项式为C(x)=x^ 3 +x ^2 +x+1。如我们老师的示意图:


回复
对《循环冗余编码(CRC)原理》有 3 条评论