当前位置:文档之家› 循环码的编译码方法

循环码的编译码方法

循环码的编译码方法
循环码的编译码方法

*****************

实践教学

******************

兰州理工大学

计算机与通信学院

2013年秋季学期

《计算机通信》课程设计

题目:(15,7)循环码的编译码方法

专业班级:通信工程一班

姓名:

学号:

指导教师:

成绩:

本次课程设计研究的是(15,7)循环码的编译码方法,在设计过程中,首先要介绍了线性分组码的编码和译码原理,并介绍了循环码的定义及其相关内容;其次由给定的生成多项式()

g x求解出了生成矩阵和监督矩阵,并且利用MATLAB编写循环码的编码器和译码器代,实现编码及译码功能;求出该码的最小码距,并分析讨论该码的纠错能力以及在高斯信道下的误码性能。

关键词: 循环码;编码;译码;MATLAB

一前言 (1)

二循环码编译码的基本原理 (2)

2.1循环码的简介 (2)

2.1.1循环码的定义 (2)

2.1.2线性分组码与循环码的区别 (3)

2.1.3循环码的最小码距 (3)

2.1.4循环码的检纠错能力 (3)

2.2 循环码编译码原理及过程 (4)

2.2.1循环码的编译码原理 (4)

2.2.2 循环码编译码的 (5)

三系统分析 (7)

3.1 循环码编译码方法的实现框图 (7)

3.2 循环码编译码实现过程 (8)

四系统设计 (10)

4.1生成矩阵和监督矩阵 (10)

4.2循环码的编码 (10)

4.3循环码的的译码 (11)

4.4循环码在高斯信道下的误码性能 (13)

总结 (14)

参考文献 (15)

附录 (16)

致谢 (23)

一前言

随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。随着经济文化水平的显著提高,人们对生活质量及数据通信的要求也越来越高。

数字信号在传输中往往由于各种原因,会使得在传送的数据流中产生误码,从而使接收端产生图象跳跃、不连续、出现马赛克等现象。通过信道编码这一环节,对数码流进行相应的处理,使通信系统具有一定的纠错能力和抗干扰能力,可以极大地避免码流传送中误码的发生。信道编码的本质是增加通信的可靠性。误码的处理技术有纠错、交织、线性内插等。提高数据传输速率,降低误码率是信道编码的任务。

在计算机通信信息码中循环码是线性分组码的一个重要子集,是目前研究得最成熟的一类码。它有许多特殊的代数性质,它使计算机通信以一种以数据通信形式出现,实现了在计算机与计算机之间或计算机与终端设备之间进行有效的与正确地信息传递,它使得现代通信的可靠性与有效性实现了质的飞跃。它是现代计算机技术与通信技术飞速发展的产物,在日常生活通信领域、武器控制系统等领域都被广泛应用。

此次设计中的仿真分析采用了MATLABLE,它是美国Mathworks公司推出的一套高性能的数值分析和计算软件。MATLABLE仿真分析平台提供了良好的可视化开发环境,被广泛的应用于信号和图像处理、通信、控制系统设计、测试和测量等众多领域。

二 循环码编译码的基本原理

2.1循环码的简介

更好的设计和实现线性分组码的方法是引入特定的数学结构来界定某一类线性分组码。循环码即是采用循环移位特性界定的一类线性分组码。它是线性分组码的一种,所以它具有线性分组码的一般特性,此外还具有循环性。

循环码的编码和解码设备都不太复杂,检、纠错能力强,而且性能好。它不但可以检测随机的错误,还可以检测突发的错误。(),n k 循环码可以检测长为n k -或更短的任何突发错误,包括首尾相接突发错误。

循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同(码元就是组成数码的单元)。循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样就不会产生瞬时错误。循环码就是这样一种编码,它可以在卡诺图中依次循环得到。循环码又称格雷码(Gray Code )。 2.1.1循环码的定义

设C 是某(),n k 线性分组码的码字集合,如果对任何

C c c c C n n ∈=--),,,(021 ,它

的循环移位),,,(1032)

1(---=n n n c c c c C 也属于C ,则称该()

,n k 码为循环码。 该码在结构上有另外的限制,即一个码字任意循环移位后的结果仍是一个有效码字。其特点是:可以用反馈移位寄存器很容易实现编码和伴随式的计算;由于循环码有很多固有的代数结构,从而可以找到各种简单使用的译码办法。

如果一个(),n k 线性码具有以下的属性,则称为循环码:如果n 元组

}

,,,{110-=n c c c c 是子空间S 的一个码字,则经过循环移位之后得到的

},,,{201)

1(--=n n c c c c 也同样是

子空间S 中的一个码字;或者,一般来说,经过j 次循环移位之后得到的

}

,,,,,,,{11011)(---+--=j n n j n j n j c c c c c c c 也是子空间S 中的一个码字。

2.1.2线性分组码与循环码的区别

线性分组码是同时具有分组特性(码字和消息长度恒定)和线性特性(消息相加后的编码等于各自编码后相加)的纠错码。每个监督码元都是码组中某些信息码元的线性相加得到的。将q元符号按每k个分为一组.然后通过编码得到

n-k个q元符号作为冗余校验符号,最后由校验符号和信息符号组成有n个q元符号的码字符号。得到的码字可以纠正t个错误,编码效率为k/n。两个属于该码的码字之和仍是一个属于该码的码字,全零码字总是一个码字,一个线性码的两个码字之间的最小距离等于任何非零码字的最小汉明重量。

循环码是采用循环移位特性界定的一类线性分组码。是线性分组码的一个重要子类;BCH码是其主要的一大类;汉明码、R-M码、RS码等可变换;纳入循环码内,Goppa码的一个子类也属于循环码;用反馈线性移位寄存器可容易的实现其编码和得到伴随式;由于数学上的特性,译码方法简单。循环码的特点有两点:一是封闭性(如果c1,c2,是与消息m1,m2对应的码字,则c1+c2必定是与m1+m2对应的码字);二是循环性(任一许用码组经过循环移位后所得到的码组仍为该许用码组集合中的一个码组)。

2.1.3循环码的最小码距

对于分组码一般用符号(n,k)表示,其中n是码组的总位数,又称为码组的长度即码长,k是码组中信息码元的数目,n–k为码组中的监督码元数目,用字母r表示。分组码(n,k)当信息码元与监督码元之间的关系为线性关系时,这种分组码就称为线性分组码。

在分组码中,把码组中“1”的个数目称为码组的重量,简称码重。编码中所有码字重量的集合形成该码的重量分布。如果全部M个码字都具有相同的重量,这种码叫做固定重量码,或叫恒重码。把两个码组中对应位上数字不同的位数称为码组的距离,简称码距,码距又称汉明距离。

一般而言,对于任意一种编码,其中各个码组之间的距离不一定相等。这时,将其中最小的距离称为最小码距,用d min来表示。

2.1.4循环码的检纠错能力

一种编码的纠错,检错能力决定于最小码距d min的值。下面将用几何关系证明纠错,

检错能力和最小码距的关系。

为了能检测e 个错码,要求最小码距:

(2-1)

纠正t 个错误,要求最小码距

(2-2)

为纠正t 个错码,同时检测e 个错码,则要求最小码距

(2-3)

本课程设计中采用(15,7)循环码由生成矩阵可得其最小码距d min 为5,由最小码距可

以出其纠检错能力,其最多可检4位错,可纠2位错。

2.2 循环码编译码原理及过程

循环码是线性分组码的一个重要子集,是目前研究得最成熟的一类码,它有许多特殊的代数性质,这些性质有助于按所要求的纠错能力系统的构造这类码,且易于实现,所以循环码受到人类的高度重视,在前向纠错系统(FEC )中得到了广泛的应用。 2.2.1循环码的编译码原理

循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组,也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。

(),n k 循环码的生成多项式写为()g x ,它是(),n k 循环码码集中唯一的,幂次为n k

-的码多项式,则()k x g x 是一个幂次为n 的码多项式。按模1n x +运算,此时:

()()()

11

k n n x g x R x Q x x x =+++

(2-4)

即()()k x g x R x ≡,且因()k x g x 也是n 次幂,故()1Q x =。由于它是循环码,故

()k x g x 按模1n x +运算后的“余式”也是循环码的一个码字,它必能被()g x 整除,即:

()()

()

R x F x G x =

(2-5)

由以上两式可以得到:

1

min +≥e d 1

2min +≥t d 1

min ++≥t e d

()()()()()()()11k n n x g x Q x x R x x F x G x =++=++

(2-6)

()()()1n k x x F x G x +=+

(2-7)

从上式中可以看出,生成多项式()g x 应该是1n x +的一个因式,即循环码多项式应该是1n x +的一个n k -次因式。

由生成多项式可以得出相应的典型生成矩阵及标准监督矩阵:

1,11,11,0

2,1

2,1

2,00,1

0,1

0,010*******

k n k k k k n k k k n k G b b b b

b

b

b

b

b ------------??????=?

??????

?

(2-8)

1,12,1

0,1

1,12,10,11,0

2,0

0,0

1000100

01k n k k n k n k k k k k H b b

b

b b

b b b

b

------------??

????=?

????

???

(2-9)

例如已知(7,4)循环码的生成多项式和校验多项式分别为:()3

1g x x x =++,

()421h x x x x =+++。写得其生成矩阵和校验矩阵分别为:

1 0 1 1 0 0 00 1 0 1 1 0 00 0 1 0 1 1 0 0 0 0 1 0 1 1G ??

??

?

?=??????

(2-10)

1 1 1 0 1 0 00 1 1 1 0 1 00 0 1 1 0 0 1H ??

??=??

????

(2-11)

2.2.2 循环码编译码的

循环码的编译码过程如下: (1)编码过程

第一步:将信息码字表示为()m x ,其最高次幂为1k -;

第二步:将()n k

x

m x -与()g x 求模得出相应的余式()r x ;

第三步:编码结果为()()()n k c x x m x r x -=+。

(2)译码过程

第一步:由接收码字()R x 与监督矩阵相乘得出错误图样S ;

第二步:判断S 是否为零。若不为零,则出错。在假定至多只有一位错的情况下,可以有效地译出相应的信息码字。

第三步:在出错的情况下,将S 与标准监督矩阵对比,得出错误的比特位并进行更正得出前四位为信息码字。

三系统分析

3.1 循环码编译码方法的实现框图

是采用循环移位特性界定的一类线性分组码。是线性分组码的一个重要子类。循环码是线性分组码中一个重要的分支。它的检、纠错能力较强,编码和译码设备并不复杂,而且性能较好,不仅能纠随机错误,也能纠突发错误。循环码是目前研究得最成熟的一类码,并且有严密的代数理论基础,故有许多特殊的代数性质,这些性质有助于按所要求的纠错能力系统地构造这类码,且易于实现。

循环码编译码方法的实现框图如图3-1所示:

图3-1 循环码编译码实现框图

3.2 循环码编译码实现过程

循环码的编码和解码设备都不太复杂,检、纠错能力强,而且性能好。它不但可以检测随机的错误,还可以检测突发的错误。(n,k)循环码可以检测长为n-k或更短的任何突发错误,包括首尾相接突发错误。

循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组,也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。

首先根据给定的(n,k)值以及给定的生成多项式g(x),求出生成矩阵以及监督矩阵。利用MATLAB软件编写循环码的编码器以及译码器,根据要求输入消息序列,从仿真图形中观察分析编译码是否正确,讨论循环码的纠检错能力及高斯信道下的误码性能。

(1)循环码编码实现流程如图3-2所示

图3-2循环码编码流程图

(2)循环码译码实现流程如图3-3所示:

图3-3循环码译码流程图(3)循环码误码性能实现框图如图3-4所示:

图3-4循环码误码性能实现框图图

四 系统设计

4.1生成矩阵和监督矩阵

已知(15,7)循环码的生成多项式为g(x)=x 8

+x 7

+x 6

+x 4

+1,由其生成多项式求出其生成矩阵G(X)为:

??????????

???????????

?=10

0010111000000010001011100000001000101110000000100010111000

000010001011100000001000101110000000100010111G 由于h(x)·g(x)=x

n

+1,求出的h(x)=x 7+x 6+x 4+1,进而得到监督矩阵H(X)为:

H=?

????????????????????????

?10001011000

00000100010110000000010001011000000001000101100000000100010110000000010001011000000001000101100000000100

0101

1

4.2循环码的编码

encode 函数 功能:编码函数

语法:code=encode(msg,N,K,method,opt)

说明:用method 指定的方法完成纠错编码。其中msg 代表信息码元,是一个K 列矩阵,N 是编码后的码字长度;K 是信息位的长度;opt 是有些编码方式需要的参数。

运行编码程序,在工作窗口内按照文字提示输入消息序列,本次设计中需要输入的消息

序列是一串长为7为的二进制码字。运行结果如图4-1所示:

图4-1循环码的编码

从图中可以看出,当输入消息序列为:1110001时,编码结果为:01110111111000。输入信号经过编码,增加了校验位,使信号变得复杂,提高了通信的可靠性。

4.3循环码的的译码

decode函数

功能:译码函数

语法:msg=decode(code,N,K,method,opt1,opt2,opt3,opt4);

说明:这个函数对接收到的码字进行译码,恢复出原始的信息,译码参数和方式必须和编码时采用的严格相同。它对接收到的码字,按method指定的方式进行译码;opt1,…,opt4是可选项的参数。

(1)使用编出的码字去执行译码程序,译码结果如图4-2所示:

图4-2 循环码的译码

由上图可以看出,用编出的码字去执行译码程序,译出的码字为:1110001,与输入的码字完全一致,没有发现错误。验证了译码程序的正确性。

(2)将4-1中编出的码字改变一位作为译码程序的输入,译码程序输出中如图4-3所示:

图4-3循环码的检纠错

将编码输出序列中的第二位由1变为0,然后运行译码程序,从图4-3中可以看出是第二位发生错误,但可以看出译码输出仍为1110001,与输入码字一致,可见,此程序可以纠一位错。

4.4循环码在高斯信道下的误码性能

0.51

0.5

1

0.5

1

1.5频谱图

图4-4信源序列编译码输出图形

10

-3

10

-2

10

-1

10

循环码在不同信噪比下的误码率

信噪比

误码率

图4-5循环码在不同信噪比下的误码率

总结

本次课程设计的题目是(15,7)循环换码的编译码方法。使用的仿真工具是MATLAB 。 在做之前,我搜集了大量循环码的相关资料,知道了循环码的定义、循环码的编译码原理以及过程、码距、检纠错能力、与线性分组码的区别及联系等知识。这其中有我以前学习过的,还有新接触到的知识,在回顾掌握的同时又学习到了新的东西,令设计不再枯燥乏味。

首先根据任务书中给定的(n,k)值以及给定的生成多项式g(x),所有多项式T(x)都能被g(x)整除。根据这条原则可以对给定的信息位进行编码。设m(x)为信息码多项式,其次数小于k 。用x

n-k

乘m(x),得到的x

n-k

m(x)次数必定小于n 。用g(x)除x n-k

m(x),得到余式

r(x),r(x)的次数必定小于g(x)的次数,即小于(n-k)。将此余式r(x)加在信息位后作为监督为,即将r(x)和x

n-k

m(x)相加,得到的多项式必定是一个码多项式。

循环码的译码可按以下三个步骤进行: 1.接收到的y(x)计算伴随式式s(x);

2.根据伴随式s(x)找到对应的估值错误图样e (x);

3.计算c =y(x)+e (x),得到估值码字c (x)。若c (x)=c(x),则译码正确,否则,若c (x)≠c(x),

则译码错误。

通过对线性分组码中的循环码的编译码编程实现,了解到线性分组码的构成方式是把信息序列分成每k 个码元一段,并由这k 个码元按一定规则产生r 个校验位,组成长度为n=k+r 的码字,用(n ,k)表示。信息码元与校验位之间为线性关系。并且知道了线性分组码的编码过程信息码元与校验位之间的线性关系实现起来是十分简单的。

循环码是线性分组码中一个重要的分支。它的检、纠错能力较强,编码和译码设备并不复杂,而且性能较好,不仅能纠随机错误,也能纠突发错误。

参考文献

[1]陈运主编.信息论与编码. 电子工业出版社

[2]孙丽华主编.信息论与纠错编码. 电子工业出版社

[3]李勇、徐震,MATLAB辅助现代工程数字信号处理,西安电子科技大学出版社

[4]刘树棠译.数字信号处理——使用MATLAB.西安:西安交通大学出版社

[5]罗军辉等编著.MATLAB7.0在数字信号处理中的应用.北京:机械工业出版社

附录

%3.(15,7)循环码的编码的程序:clear;

clc;

a=input('请输入消息矢量:');

%高次项系数在前的生成多项式

Gx=[1 1 1 0 1 0 0 0 1];

%将数组a的高位依次放在数组Data的低位Data=zeros(1,15);

Data(1)=a(7);

Data(2)=a(6);

Data(3)=a(5);

Data(4)=a(4);

Data(5)=a(3);

Data(6)=a(2);

Data(7)=a(1);

%Data除以Gx得到余数Rx

[Qx,Rx]=deconv(Data,Gx);

b=Rx+Data;

%将数组b的高位放在后面

c=b(1);

b(1)=b(15);

b(15)=c;

c=b(2);

b(2)=b(14);

b(14)=c;

c=b(3);

b(3)=b(13);

b(13)=c;

c=b(4);

b(4)=b(12);

b(12)=c;

c=b(5);

b(5)=b(11);

b(11)=c;

c=b(6);

b(6)=b(10);

b(10)=c;

c=b(7);

b(7)=b(9);

b(9)=c;

%将数组b校正

for i=1:15

if rem(abs(b(i)),2)==0

b(i)=0;end

end

for i=1:15

if rem(abs(b(i)),2)==1

b(i)=1;end

end

disp('输入序列:');

a

disp('编码输出序列:');

%4.相对应的译码和纠错程序:

clear;

clc;

r=[0 1 1 1 0 1 1 1 1 1 1 0 0 0 1];

基于MATLAB的循环码实验报告

课程名称:信息论与编码 课程设计题目:循环码的编码和译码程序设计指导教师: 系别:专业: 学号:姓名: 合作者 完成时间: 成绩:评阅人:

一、实验目的: 1、通过实验了解循环码的工作原理。 2、深刻理解RS 码构造、RS 编译码等相关概念和算法。 二、实验原理 1、RS 循环码编译码原理与特点 设C 使某 线性分组码的码字集合,如果对任C c c c C n n ∈=--),,,(021 ,它的循环 移位),,,(1032)1(---=n n n c c c c C 也属于C ,则称该 码为循环码。 该码在结构上有另外的限制,即一个码字任意循环移位的结果仍是一个有效码字。其特点是:(1)可以用反馈移位寄存器很容易实现编码和伴随式的计算;(2)由于循环码有很多固有的代数结构,从而可以找到各种简单使用的译码办法。 如果一个 线性码具有以下的属性,则称为循环码:如果n 元组 },,,{110-=n c c c c 是子空间S 的一个码字,则经过循环移位得到的},,,{201)1(--=n n c c c c 也 同样是S 中的一个码字;或者,一般来说,经过j 次循环移位后得到的 },,,,,,,{11011)(---+--=j n n j n j n j c c c c c c c 也是S 中的一个码字。 RS 码的编码系统是建立在比特组基础上的,即字节,而不是单个的0和1,因此它是非二进制BCH 码,这使得它处理突发错误的能力特别强。 码长:12-=m n 信息段:t n k 2-= (t 为纠错符号数) 监督段:k n t -=2 最小码段:12+=t d 最小距离为d 的本原RS 码的生成多项式为:g(x)=(x-α)(x -α2)(x -α3)…(x -αd -2) 信息元多项式为::m(x)=m0+m1x+m2x2+…+mk -1xk-1 循环码特点有: 1)循环码是线性分组码的一种,所以它具有线性分组的码的一般特性,且具有循环性,纠错能力强。 2)循环码是一种无权码,循环码编排的特点为相邻的两个数码之间符合卡诺中的邻接条件,即相邻数码间只有一位码元不同,因此它具有一个很好的优点是它满足邻接条件,没有瞬时错误(在数码变换过程中,在速度上会有快有慢,中间经过其他一些数码形式,即为瞬时错误)。 3)码字的循环特性,循环码中任一许用码经过牡环移位后,所得到的码组仍然是许用码组。

格雷码编译码电路

格雷码编 发布时间:2009-02-11 22:20:56 译码电路 技术类别: CPLD/FPGA 格雷码(Gray code),又叫循环二进制码或反射二进制码 在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,自然二进制码可以直接由数/模转换器转换成模拟信号,但某些情况,例如从十进制的3转换成4时二进制码的每一位都要变,使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它是一种数字排序系统,其中的所有相邻整数在它们的数字表示中只有一个数字不同。它在任意两个相邻的数之间转换时,只有一个数位发生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。另外由于最大数与最小数之间也仅一个数不同,故通常又叫格雷反射码或循环码。 一般的,普通二进制码与格雷码可以按以下方法互相转换: 二进制码->格雷码(编码):从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0); 格雷码-〉二进制码(解码):从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变). 数学(计算机)描述: 原码:p[0~n];格雷码:c[0~n](n∈N);编码:c=G(p);解码:p=F(c);书写时从左向右标号依次减小. 编码:c=p XOR p[i+1](i∈N,0≤i≤n-1),c[n]=p[n]; 解码:p[n]=c[n],p=c XOR p[i+1](i∈N,0≤i≤n-1). Gray Code是由贝尔实验室的Frank Gray在20世纪40年代提出的(是1880年由法国工程师Jean-Maurice-Emlle Baudot发明的),用来在使用PCM(Pusle Code Modulation)方法传送讯号时避免出错,并于1953年3月17日取得美国专利。由定义可知,Gray Code的编码方式不是唯一的,这里讨论的是最常用的一种。 格雷码 (英文:Gray Code, Grey Code,又称作葛莱码,二进制循环码)是1880年由法国工程师Jean-Maurice-Emlle Baudot发明的一种编码,是一种绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,虽然自然二进制码可以直接由数/模转换器转换成模拟信号,但在某些情况,例如从十进制的3转换为4时二进制码的每一位都要变,能使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它在相邻位间转换时,只有一位产生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。由于这种编码相邻的两个码组之间只有一位不同,因而在用于风向的转角位移量-数字量的转换中,当风向的转角位移量发生微小变化(而可能引起数字量发生变化时,格雷码仅改变一位,这样与其它编码同时改变两位或多位的情况相比更为可靠,即可减少出错的可能性。 但格雷码不是权重码,每一位码没有确定的大小,不能直接进行比较大小和算术运算,也不能直接转换成液位信号,要经过一次码变换,变成自然二进制码,再由上位机读取。解码的方法是用…0?和采集来的4位格雷码的最高位(第4位)异或,结果保留到4位,再将异或的值和下一位(第3位)相异或,结果保留到3位,再将相异或的值和下一位(第2位)异或,结果保留到2位,依次异或,直到最低位,依次异或转换后的值(二进制数)就是格雷码转换后自然码的值. 异或:异或则是按位“异或”,相同为“0”,相异为“1”。例: 10011000 异或01100001 结果: 11111001 举例: 如果采集器器采到了格雷码:1010 就要将它变为自然二进制: 0 与第四位 1 进行异或结果为 1 上面结果1与第三位0异或结果为 1 上面结果1与第二位1异或结果为0

8421码到余三循环码的转换电路仿真课设报告

东北大学秦皇岛分校计算机与通信工程院 电子线路课程设计 具有数显的数码转换电路(8421码—余3循环码)

课程设计任务书 专业:通信工程学号:4101015 学生姓名:吴玉新 设计题目:具有数显的码制转换电路8421码—余3循环码一、设计实验条件 高频实验室 二、设计任务及要求 1. 要求输入为8421码。输出为余三循环码 2. 输出要具有数显功能 三、设计报告的内容 1.前言 数字电路课程设计是继“数字电路”课后开出的实践环节课程其目的是训练学生综合运用学过的数字电路的基本知识独立设计比较复杂的数字电路能力。设计建立在硬件和软件两个平台的基础上。硬件平台是可编程逻辑器件所选器件可保存在一片芯片上设计出题目要求的数字电路。软件平台是multisim通过课程设计学生要掌握使用EDA电子设计自动化工具设计数字电路的方法包括设计输入便宜软件仿真下载及硬件仿真等全过程。数字电路课程设计在于更好的让学生掌握这门课程并且了解其实用性知道该门课程和我们的生活息息相关并且培养学生的动手能力让学生对该门课程产生浓厚的兴趣。 2.设计内容及其分析 (1)方案一 1.设计思路 设计8421转余三循环码主要是考虑怎样找到二者之间的联系。列出真值表后,根据值为1的那些项列出表达式,用最小项之和表示。然后根据卡诺图进行

化简,得出最简表达式。最后根据表达式,在Multisim上画图仿真,用灯的灭(表示0)和亮(表示1)来表示码制的转换。即可得到8421码对余三循环码的转换。 真值表: 表1 8421转余三循环码真值表 根据真值表得出表达式: X4=A——C X3=B——C——+ A——BCD+A——B——D—— X2=A B——C——D——+A——B+A——C+A——D X1=A B——C——+A——BD+A——BC 根据表达式画出逻辑电路图:

实验6 BCH循环码的编码与译码的matlab实现

实验6 BCH循环码的编码与译码 一、实验内容 用VC或Matlab软件编写循环BCH码的编码与译码程序。利用程序对教科书的例题做一个测试。 二、实验环境 1.计算机 2.Windows 2000 或以上 3.Microsoft Visual C++ 6.0 或以上 4.Matlab 6.0或以上 三、实验目的 1.通过BCH循环码的编码与译码程序的编写,彻底了解并掌握循环BCH的编码与译码原理 2.通过循环BCH码的编码与译码程序的编写,提高编程能力。 四、实验要求 1.提前预习实验,认真阅读实验原理以及相应的参考书。 2.对不同信道的进行误码率分析。特别是对称信道,画出误码性能图。即信道误码率与循环汉明码 之间的关系。 3.认真填写实验报告。 五、实验原理 1.循环BCH的编码与译码原理(略) 2.循环BCH的程序实现。 六、实验步骤 bch_en_decode.m文件 function bch_en_decode() code=bch155 code=code+randerr(5,15,1:3); code=rem(code,2); code=gf(code) %随机产生1-3位错误 decode=debch155(code) end function decode=debch155(code) code=gf(code); M=4; code = gf(code.x,M); [m , n]=size(code);decode=[]; code1=[]; for i=1:m ;code1=code(i,:); M=code1.m;T2=6;N=15; S = code1* ((gf(2,M,code1.prim_poly)).^([N-1:-1:0]'*([1:T2]))); LambdaX = gf([1 zeros(1,T2)],M,code1.prim_poly);

7,3循环码

****************** 实践教学 ******************* 兰州理工大学 计算机与通信学院 2014年秋季学期 计算机通信课程设计 题目:(7,3)循环码编译码软件设计 专业班级: 姓名: 学号: 指导教师: 成绩:

摘要 随着计算机通信的日益发展,传输数据的场合越来越多。串行数据的差错检验是保证数据传输正确的必要手段,而循环码是差错码中最常用的一种编码。 循环码是线性分组码中最重要的一种子类,它除了具有分组码的线性外,还具有循环性,其码字结构一般用符号(n,k)表示,其中,n是该码组中的码元数,k是信息码元位数,r=n-k是监督码元位数。循环码具有许多特殊的代数性质,这些性质有助于按照要求的纠错能力系统地构造这类码,能简化译码算法,并且目前发现的大部分线性码与循环码有密切关系。已有循环码编译码系统大多以标准逻辑器件(如中小规模TTL系列、CMOS系列)按传统数字系统设计方法设计而成,其主要缺点是逻辑规模小、功耗大、可靠性低。随着大规模、超大规模集成电路的发展,以及电子设计自动化水平的提高,这种制约正在被逐渐消除。 本文通过C 语言平台运行所编写的程序,观察了在输入信息码情况下输出对应的编码结果以及相反的译码功能。通过多组的对比验证了该(7,4)循环码的编译码程序的正确性。最后,在程序运行的过程中进步分析循环码的编译码原理,并通过比较仿真模型与理论计算的性能,证明了仿真模型的可行性。 关键词:循环码;编码;译码;程序仿真

目录 前言 (1) 1、目的及意义 (2) 2、设计原理 (3) 2.1循环码的介绍 (3) 2.1.1循环码的定义 (3) 2.1.2循环码的特点 (3) 2.1.3循环码的多项式表示 (4) 2.1.4(n,k)循环码的生成多项式 (4) 2.1.5循环码的生成矩阵和一致校验矩阵 (6) 2.2循环码编码原理 (8) 2.2.1多项式除法电路 (8) 2.3循环码译码原理 (9) 3、设计结果及分析 (11) 3.1程序运行结果 (11) 3.2运行结果理论分析 (14) 3.3软件可行性分析 (15) 4、总结 (16) 附录 (17) 参考文献 (22)

循环码编译码实验报告

Harbin Institute of Technology 信息论与编码报告 题目:循环码编译码实验 院(系)电子与信息工程学院 班级通信1班 学生 学号 序号 哈尔滨工业大学

循环码编译码实验 1 设计内容 循环码是线性分组码中最重要的一类码,它的结构完全建立在有限域多项式的基础上,它具有两个基本特点:一是编码电路与译码电路非常简单,易于实现;二是其代数性质好,分析方便,有一定的成熟的译码方法。 一个(n ,k )线性分组码C ,如果码组中的一个码字的循环移位也是这个码组中的一个码字,则称C 为循环码。 本实验主要完成以下四项内容: (1)利用(7,4)系统循环码的生成多项式为:3()1g x x x =++,请设计该循环码的编码器。 (2)随机产生重量为0或1的八种错误图样中的一种,得到实际接收码字。 (3)根据接收到的码字进行译码,译码方式分为校验子译码和梅吉特译码两种。 (4)对于在BSC 信道传输时的情形进行讨论,验证(7,4)系统循环码的纠错能力。 2 编程环境 本实验采用Matlab 作为编程工具,所有代码均在Matlab 软件中运行,此软件功能强大,应用广泛,在此不再赘述。 3 各模块设计 3.1 编码器模块 利用(7,4)系统循环码的生成多项式为:3()1g x x x =++,请设计该循环码的编码器。流程图为:

图1 (7,4)循环码编码流程图图2 4位信息码元编码流程图 在学生设计的演示工具中输入的信息码元可以为任意多个,系统自动按每4个连续的码字一组进行编码,当输入的信息码元不是4的倍数时,自动补零到与信息码元长度最接近的4的倍数。译码时也是按照每7个连续的码字一组进行译码。但是为了流程图的清晰明了,在本文的流程图除流程图1以外,其余均按一个循环码码字(即7位)来描述。 编码器模块源程序如下: %%%函数功能:(7,4)系统循环码编码器 %%%编程时间:2013-11-29 %%%该系统循环码编码器的生成多项式是g(x) = x^3 + x + 1; % %%系统循环码编码的原理是,首先用x^r乘以信息码字多项式m(x),这里r = 3;然后用x^r*m(x)除以生成多项式g(x), % %%得余式r(x);最后得系统循环码多项式c(x) = x^r*m(x) + r(x) function [code_out,code_in_L] = coder(code_in) %%code_in:输入信息码字 %%code_out:输出编码后的码字 %%L:输入的信息码元的长度 n=7;%%每个码字长度 k=4;%%每个码字中信息码元长度 code_in_L=length(code_in);

实验6 循环码的软件编、译码实验

实验六循环码的软件编、译码实验 一、实验目的 (1)通过实验了解循环码的工作原理。 (2)了解生成多项式g(x)与编码、译码的关系。 (3)了解码距d与纠、检错能力之间的关系。 (4)分析(7.3)循环码的纠错能力。 二、实验要求 用你熟悉的某种计算机高级语言或单片机汇编语言,编制一(7,3)循环码的编、译码程序,并改变接受序列R(x)和错误图样E(x),考查纠错能力情况。 设(7,3)循环码的生成多项式为:g(x)=x4+x3+x2+1 对应(11101)(1)按编、译码计算程序框图编写编、译码程序 (2)计算出所有的码字集合,可纠的错误图样E(x)表和对应的错误伴随式表。 (3)考查和分析该码检、纠一、二位错误的能力情况。 (4)整理好所有的程序清单,变量名尽量用程序框图所给名称,并作注释。 (5) 出示软件报告. 三、实验设计原理 循环码是一类很重要的线性分组码纠错码类,循环码的主要优点是编、译码器较简单,编码和译码能用同样的反馈移存器重构,在多余度相同的条件下检测能力较强,不检测的错误概率随多余度增加按指数下降。另外由于循环码具有特殊的代数结构,使得循环码的编、译码电路易于在微机上通过算法软件实现。 1、循环码编码原理 设有一(n,k)循环码,码字C=[C n-1…C r C r-1…C0],其中r=n-k。码字多项式为: C (x ) = C n-1x n-1+ C n-2x n-2+… +C1x+C0。 码字的生成多项式为: g(x)= g r-1x r-1+g r-2x r-2+…+g1x+g0 待编码的信息多项式为:m(x)=m K-1x K-1+…+m0 x n-k.m(x)=C n-1x n-1+…+C n-K x n-K

循环码编译码matlab程序

循环码编译码matlab程序 循环码编码程序 function [ C ] = cyclic_encoder( Si ) %C为循环编码的输出编码结果 %对x^8+1进行模2因式分解得到:x^8+1=(x^3+x^2+x+1)*(x^5+x^4+x+1) y=size(Si,2);%y表示Si的列数,即输入码元的个数 M=ceil(y/5);%将信息码元分成M帧,一帧5个信息码元 n=8;%循环编码的一帧码长 k=5;%信息位的个数 r=n-k;%监督位的个数 gx=[1,1,1,1];%(8,5)循环码的生成多项式g(x)=x^3+x^2+x+1 Ai=zeros(1,8*M);%Ai用来存放所输入的码元经过循环编码后的码字 Axi=zeros(1,8);%Axi用来表示循环编码后的一帧的编码输出码字 mi=zeros(1,5);%mi用来存放每一帧的信息码元 for i=1:M for j=1:5 mi(j)=Si(j+(i-1)*5); end Axi(4:8)=mi(1:5); Axi=circshift(Axi',-r)';%实现(x^(n-k))*m(x),其中m(x)的系数由mi决定 [qx,rx]=deconv(Axi,gx);%实现((x^(n-k))*m(x))/g(x),得到商q(x)和余数r(x) Axi=Axi+rx;%实现Axi(x)=Axi(x)+r(x),得到的Axi就是循环编码的编码输出码字 Ai(8*i-4:8*i)=Axi(1:5); Ai(8*i-7:8*i-5)=Axi(6:8); end %for循环是为了实现模2相加,使循环编码的输出码字Ai中只有0,1 for i=1:8*M if rem(abs(Ai(i)),2)==0 Ai(i)=0; else Ai(i)=1; end end C=Ai;%循环编码的输出码字C=Ai end

循环码的编码方法研究

摘要本文对循环码的编码方法进行了深入的分析和探讨,循环码具有很高的可靠性,在通信、军事等领域应用非常广泛。关键词循环码编码中图分类号:G202文献标识码:A 0 引言循环码是线性分组码最重要的子集。它除了具有线性分组码的一般性质外,还有许多特殊的性质,这些性质有助于按照要求的纠错能力系统地构造这类码,并且简化译码算法。循环码还有易于实现的特点,很容易用带反馈的移位寄存器实现其硬件。正是由于循环码具有码的代数结构清晰、检纠错能力强、编译码易于实现,具有很高的可靠性等特点,因此在通信、军事等领域应用非常广泛。 1 循环码的相关概念 1.1 循环码的特性表1给出了(7,3)循环码的所有码字,我们可以直观的看出循环码具有如下特性:(1)封闭性。(线性性):任何许用码组的线性和还是许用码组。(2)循环性:任何许用的码组循环移位后的码组还是许用码组。表1 (7,3)循环码 1.2 循环码的码多项式用码多项式来表示来表示循环码,可以方便的利用代数理论对其进行研究。若许用码字为C = (,,…,):,码多项式可表示为:C(x) = … c1x c0其中:对于二元码组,多项式的每个系数是0或者1; x仅是码元位置的标志,并不关心x的取值。利用码多项式可以方便的表示循环移位特性。若C(x) 是一个长为n的许用码字,则xi C(x) (左乘xi)在按模xn 1运算下,亦是一个许用码字,也就是:xiC(x) = Ci(x) (模xn 1),正是C(x) 代表的码组向左循环移位次的结果。 1.3 循环码的生成多项式和生成矩阵循环码的生成多项式g(x)是一个常数项为1,且能除尽xn 1的r = n - k次多项式;循环码中其它码多项式都是g(x)的倍式。由生成多项式可以表示出生成矩阵G(x)为: 1.4 循环码的监督多项式和监督矩阵利用循环码的特点来确定监督矩阵H, 由于循环码中是的因式,因此可令:h(x) == xk hk-1xk-1 … h1x 1,这里称为监督多项式。与G(x)相对应,监督矩阵表示为: 其中:h*(x)是h(x)逆多项式,h*(x) = xk h1xk-1 h2xk-2 … hk-1x 1。 2 循环码编码的具体实现方法 2.1 利用生成矩阵编码 2.1.1 求解生成多项式根据g(x)的特性,g(x)是xn 1的一个r次因式。因此,先对xn 1进行因式分解,找到它的r次因式。以(7,3)循环码为例进行分析: 第一步:对x7 1进行因式分解得:x7 1 = (x 1)(x3 x2 1)(x3 x 1) 第二步:构造生成多项式g(x),即找r = n - k = 4次因子。不难看出,这样的因子有两个,即: (x 1)·(x3 x2 1) = x4 x2 x 1 (x 1)·(x3 x 1) = x4 x3 x2 1 2.1.2 编码由g(x)得到生成矩阵为: 循环码是线性码的一种,根据线性码编码的特点,生成矩阵确定,码组也就确定了。 C = mG 其中,C是编码之后的码字,m是信息码元序列,G是生成矩阵。 2.2 利用监督矩阵编码由h*(x)得到监督矩阵为: 根据线性码编码的特点,监督矩阵确定,码组也就确定了。 HCT = 0其中,C是编码之后的码字,H是监督矩阵。 2.3 循环码的系统码编码方法设要产生(n,k)循环码,m(x)表示信息多项式,编码步骤如下: (1)用xn-k乘m(x)。根据码多项式的特点,左乘xn-k实际上是把信息位左移位(n-k),即在信息码后加上(n-k)个“0”。例如,信息码为110,它相当于m(x) = x2 x。当n-k = 7-3 = 4时, xn-k·m(x) = x6 x5,它相当于1100000。而希望的到得系统循环码多项式应当是C(x) = xn-k·m(x) r(x) (2)求r(x)。由于循环码多项式C(x)都可以被g(x)整除,也就是: == (3)求C(x),C(x) = xn-k·m(x) r(x) 例如,对于(7,3)循环码,若选用g(x) = x4 x2 x 1,信息码110时,则: = ,求得r(x) = x2 1,这时的编码输出为:1100101。 3 结论本文深入系统地分析了循环码的编码技术。随着数字技术的高速发展,循环码纠错技术已经广泛应用于各种通信系统中。其编码和译码都可以通过简单的反馈移位寄存器来完成,实现简单,纠错能力强 ,可以降低误码率,保证数据传输的可靠性,大大提高通信质量。

循环码产生电路设计

循环码产生电路设计 1.引言 在线性分组码中,有一种重要的码称为循环码。循环码是线性分组码中最重要的一种子类,是目前研究的比较成熟的一类码。循环码具有许多特殊的代数性质,这些性质有助于按照要求的纠错能力系统地构造这类码,并且简化译码算法,并且目前发现的大部分线性码与循环码有密切关系。循环码还有易于实现的特点,很容易用带反馈的移位寄存器实现其硬件。循环码是在严密的代数学理论基础上建立起来的。这种编码和解码设备都不太复杂,而且纠错的能力较强。循环码除了具有线性码的一般性质外,还具有循环性。循环性是指任一码组循环一位以后,认为该码中的一个码组。 正是由于循环码具有码的代数结构清晰、性能较好、编译码简单和易于实现的特点,因此在目前的计算机纠错系统中所使用的线性分组码几乎都是循环码。它不但可以纠正独立的随机错误,也可用于检错突发错误并且非常有效。(n,k)循环码能够检测长为n-k 或更短的任何突发错误, 包括首尾相接突发错误。n-k+1位长的突发错误不能被检出所占的概率最大是错误!未找到引用源。,如果l>n-k+1,则不能检测长为l 的突发错误所占据的比值最大为)(2k n --。 2.设计要求 (1)用simulink 对系统建模。 (2)写出其生成多式。 (3)对所设计的系统性能进行仿真分析。 (4)对其应用举例阐述。 3.设计原理 3.1 循环码多项式 为了利用代数理论研究循环码,可以将码组用代数多项是来表示,这个多项式被称为码多项式,对于许用循环码A =(0121a a a a n n ?-- ),可以将它的码多项式表示为:

T(x)=012211a x a x a x a x a i i n n n n ++?++?++----对于二进制码组,多项式的每个系数不是0就是1,x 仅是码元位置的标志。因此,这里并不关心x 的取值。 3.2 循环码的生成多项式和生成矩阵 (全0码字除外)称为生成多项式,用g (x )表示。可以证明生成多项式g (x )具有以下特性: 1)g (x )是一个常数项为1的r=n-k 次多项式; 2)g (x )是1+n x 的一个因式; 3)该循环码中其它码多项式都是g (x )的倍式。 为了保证构成的生成矩阵G 的各行线性不相关,通常用g (x )来构造生成矩阵,这时,生成矩阵G 可以表示为: ?????? ?? ?????????????=--)()()()()(21x g x g x x g x x g x x G k k 其中011)(a x a x a x x g r r r ++++=- ,因此,一旦生成多项式g (x )确定以后,该循环码的生成矩阵就可以确定,进而该循环码的所有码字就可以确定。 3.3 循环码的编、译码方法 在编码时,首先需要根据给定循环码的参数确定生成多项式g (x ),也就是从1+n x 的因子中选一个(n-k )次多项式作为g (x );然后,利用循环码的编码特点,即所有循环码多项式A (x )都可以被g (x )整除,来定义生成多项式g (x )。 根据上述原理可以得到一个较简单的系统循环码编码方法:设要产生(n,k )循环码,m (x )表示信息多项式,则其次数必小于k ,而)(x m x k n ?-的次数必小于n ,用)(x m x k n ?-除以g (x ),可得余数r (x ),r (x )的次数必小于(n-k ),将r (x )加到信息位后作监督位,就得到了系统循环码。下面就将以上各步处理加以解释。 (1)用)(x m x k n ?-。这一运算实际上是把信息码后附加上(n-k )个“0”。例如,信息码为110,它相当于m (x )=2x +x 。当n-k =7-3=4时,)(x m x k n ?-=6x +5x ,它相当于1100000。

简述简易循环码编译码器设计

简述简易循环码编译码器设计 摘要通信系统可靠性要求系统可靠地传输消息,而信道编码旨在解决可靠性问题。循环码属于线性代码,具有严密的代数理论基础,具有良好的错误检测和纠正功能。循环码编译电路大多用移位寄存器和模2构成的线性时序网络来完成。基本电路简单,容易实现,但在体积和功能扩展上受到了限制而不能发挥更大的作用。本设计充分运用单片机的软件功能进行编码及译码纠错,可有效克服来自通信信道的干扰,保证数据通信的可靠及系统的稳定,使误码率大幅度的降低。只要改变软件算法,即可适用于不同微机、不同字长的需要。 关键词信道编码;循环码;单片机;编译码;可靠 前言 信息在有线或无线信道传输时,受外界干扰或信噪比恶化的影响,信息的传递容易发生错误,需要有效检测出错状况,进行纠错,保证信息传输的质量。前向纠错编码技术在发送端引入冗余可以实现检错和纠错,一种广泛应用前向纠错码循环码它是线性分组码中最重要的一种类别码,不光具备分组码的线性性质,还具有自身的循环性[1]。现阶段国内外基于循环码编译码方法的研究都取得了很大的进展,例如循环码在卫星通信与移动通信方面中起到很重要的作用。采用单片机编程的方法可以实现循环码编译码,成本小,通过软件升级可以适配多种码型。 1 循环码编译码原理 1.1 循环码特点 循环码隶属于线性代码,具有嚴密的代数理论基础,良好的错误检测和纠正功能,具有如下特点[2]:循环码具有线性码的封闭性,意味着线性码中的任何两个码组总和仍为这种码中的一个码组。两个信息码组之间的长度差一定是后一个信息码组的权重,码的最小距离等同于码的最小权重。循环码还具有循环的性质,任一码组不管是从按左到右还是从右到左方向循环移位,仍为该码中的一个码组。 1.2 编码原理 设信息元多项式表达式: 编码步骤可以归纳如下: ⑴用信息集合m(x)乘以信息集得到,这种运算操作其实就是在信息码后添加上(n-k)个“0”。

循环码(7,3)码

循环码(7,3)码 (生成多项式1)(234 +++=x x x x g ) 摘要:本报告详细给出了循环码的定义以及由生成多项式求解生成 矩阵和系统生成矩阵的过程,并在Matlab 环境下写出了循 环码的编码器和解码器代码,实现了编码和译码功能。分析和讨论了 此码发现错误、纠正错误的能力,并讨论了其与线性分组码、Hamming 码等信道编码的区别与联系。 关键字:循环码 编码 译码 检错 纠错 Matlab 信道编码:信道编码又称差错控制编码或纠错编码,它是提高信 息传输可靠性的有效方法之一。一类一类信道编码是对传输信号的码型进行变换,使之更适合于信道特性或满足接收端对恢复信号的要求,从而减少信息的损失;另一类信道编码是在信息序列中人为的增加冗余位,使之具有相关特性,在接收端利用相关性进行检错或纠错,从而达到可靠通信的目的。 1.1、循环码 循环码是线性分组码中一个重要的分支。它的检、纠错能力较强,编码和译码设备并不复杂,而且性能较好,不仅能纠随机错误,也能纠突发错误。 循环码是目前研究得最成熟的一类码,并且有严密的代数理论 基础,故有许多特殊的代数性质,这些性质有助于按所要求的纠错能

力系统地构造这类码,且易于实现,所以循环码受到人们的高度重视,在FEC 系统中得到了广泛应用。 1.1.1、循环码定义 定义:一个线性分组码,若具有下列特性,则称为循环码。设码字 )(0121c c c c c n n ???=-- (1.1.1) 若将码元左移一位,得 () )(10121--???=n n c c c c c (1.1.2) () 1c 也是一个码字。 由于(k n ,)线性分组码是n 维线性空间n V 中的一个k 维子空间,因此()k n ,循环码是n 维线性空间n V 中的一个k 维循环子空间。 注意:循环码并非由一个码字的全部循环移位构成。 1.1.2、循环码的特点 循环码有两个数学特征: (1)线性分组码的封闭型; (2)循环性,即任一许用码组经过循环移位后所得到的码组仍为该许用码组集合中的一个码组。 即若()0121a a a a n n ???--为一循环码组,则 ()1032---???n n n a a a a 、()2143----???n n n n a a a a 、……还 是许用码组。也就是说,不论是左移还是右移,也不论移多少位,仍

(7,4)循环码的编码和译码

(7,4)循环码的编码译码 编码的实验原理: 根据循环码的代数性质建立系统编码的过程,可以把消息矢量用如下多项式表示: 要编码成系统循环码形式,把消息比特移入码字寄存器的最右边k 位,而把监督比特加在最左边的n-k 个中,则要用k n x -乘以m(x)得到 k n x - m(x)= k n x - m(x)= q(x) g(x)+ p(x),其中p(x)可以表示为 p(x)= ,则p(x)+ k n x - m(x) = + 另U(x)= p(x)+ k n x - m(x),则U=(0p ,1p ,2p ,·,1--k n p ,0m ,1m ,·,1-k m )。 本实验根据以上原理,用matlab 实现书上例6.8系统形式的循 环码,生成多项式为g(x)= (7,4)循环码的编码的程序如下:clear; clc; a=[1 0 1 1]; %高次项系数在前的生成多项式 Gx=[1 0 1 1]; %将数组a 的高位依次放在数组Data 的低位 Data=zeros(1,7); Data(1)=a(4); Data(2)=a(3); Data(3)=a(2); Data(4)=a(1); %Data 除以Gx 得到余数Rx [Qx,Rx]=deconv(Data,Gx); 12211...)(m x m x m x m x m k k k k ++++=----k n k n n k n k x m x m x m x m -+-----++++0112211 (011) 1...p x p x p k n k n +++----0 111...p x p x p k n k n +++----k n k n n k n k x m x m x m x m -+-----++++0112211 (3) 1x x ++

循环码产生电路设计

课程设计 班 级: 通信09—4 姓 名: 宋蕾 学 号: 0906030421 指导教师: 刘玉珍 成 绩: 原理 数字 课程设计报告 电子与信息工程学院 通信工程系

循环码产生电路设计 1. 引言 在线性分组码中,有一种重要的码称为循环码(cycil code)。循环码是在严密的代数学理论基础上建立起来的。这种编码和解码设备都不太复杂,而且检(纠)错的能力较强。循环码是线性分组码中最重要的一种子类,是目前研究得比较成熟的一类码。循环码具有许多特殊的代数性质,这些性质有助于按照要求的纠错能力系统地构造这类码,并且简化译码算法,并且目前发现的大部分线性码与循环码有密切关系。循环码还有易于实现的特点,很容易用带反馈的移位寄存器实现其硬件。 simulink 是matlab 中的一种可视化仿真工具, 是一种基于matlab 的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。simulink 可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。为了创建动态系统模型,Simulink 提供了一个建立模型方块图的图形用户接口(GUI) ,这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。 2. 设计要求 (1)用simulink 对系统建模。 (2)写出其生成多项式(自定)。 (3)对所设计的系统性能进行仿真分析。 (4)对其应用举例阐述。 3. 设计原理 3.1 循环码的循环性 循环码除了具有线性码的一般性质外,还具有循环性。循环性是指任一码组循环一位(即将最右端的一个码元移至左端,或反之)以后,仍为该码中的一个码组。在表1中给出一种(7,3)循环码的全部码组。由此表可以直观看出这种码的循环型。例如,表中的第2码组向右移一位即得到第5码组;第6码组向右移一位即得到第7码组。一般说来,若(0121a a a a n n ?-- )是循环码的一个码组,则循环移位后的码组:

卷积码实验报告

卷积码实验报告 篇一:卷积码实验报告 实验五信道编解码() 本章目标 掌握数字频带传输系统调制解调的仿真过程掌握数字频带传输系统误码率仿真分析方法 5.1实验目的 1. 使用MATLAB进行卷积码编/译码器的仿真。 2. 熟练掌握MATLAB软件、语句。 3. 了解卷积码编/译码器的原理、知识。 5.2实验要求 1. 编写源程序、准备测试数据。 2. 在 MATLAB环境下完成程序的编辑、编译、运行,获得程序结果。如果结果有误, 应找出原因,并设法更正之。 5.3 实验原理 (一)卷积码编码器 1. 连接表示 卷积码由3个整数n,k,N描述。k/n也表示编码效率(每编码比特所含的信 N称为约束长度,息量);但n与线性分组码中的含义不同,不再表示分组或码子长度; 表示在编码移位寄存器中k元组的级数。卷积码不同于分组码的一个重要特征就是编码器的记忆性,即卷积码编码过程中产生的n元组,不仅是当前输入k元组的函数,而且

还是前面N?1个输入k元组的函数。实际情况下,n和k经常取较小的值,而通过N的变化来控制编码的能力和复杂性。 下面以图1中的卷积码编码器为例介绍卷积码编码器。该图表示一个约束长度 K?3的(2,1)卷积译码器,模2加法器的数目为n?2,因此,编码效率k/n?1/2。 在每个输入比特时间上,1位信息比特移入寄存器最左端的一级,同时将寄存器中原有比特均右移一级,接着便交替采样两个模2加法器,得到的码元就是与该输入比特相对应的分支字。对每一个输入信号比特都重复上述采样过程。 图1卷积码编码器(编码效率1/2,K?3) 用于描述反馈移位寄存器实现循环码时所使用的生成多项式也可用户描述卷积码编码器的连接。应用n个生成多项式描述编码的移位寄存器与模2加法器的连接方式,n个生成多项式分别对应n个模2加法器,每个生成多项式不超过K?1阶。仍以图 1中的编码器为例,用生成多项式g1(X)代表上方连接,g2(X)代表下方连接,则有: g1(X)?1?X?X2g2(X)?1?X 2 多项式中的最低阶项对应于寄存器的输入级。输出序

循环码

实验、循环码编译码系统 一、 实验目的: 1、熟悉循环码的编译码原理; 2、掌握Quartus Ⅱ开发软件的运用,在该软件下熟练的运用多种输入方式完成各种电路设计的要求; 3、初步掌握VHDL 语言,能够运用该语言编写简单的程序,完成设计要求; 4、熟悉对PLD 的下载和仿真,学会观察测试结果的正确性; 5、学会运用各方面知识,设计并实现一个系统。 二、 实验要求: 使用Quartus Ⅱ软件,用m 序列发生器作为信号源设计循环码编译码,速率可自定,并在实验箱上调试出编码和译码波形,比较信号源和译码后的信号波形。 三、实验设备: Quartus II 软件、Modelsim 软件、FPGA 实验箱、微机1台、示波器1台 四、实验原理: 1、 循环码的编码 循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。若(1n a - 2n a -…… 1a 0a )为一循环码组,则(2n a - 3n a -……0a 1n a -)、(3n a - 4n a -……1n a - 2n a -)、……还是许用码组。也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。表1-2给出了一种(7,3)循环码的全部码字。 可以将循环码码组用代数多项是来表示,这个多项式被称为码多项式,对于表1-2中的任一码组可以表示为: 654326543210()A x a x a x a x a x a x a x a =++++++ (1-4) 表1-2一种(7,3)循环码的全部码字

在码多项式运算中采用按模运算法则。若一任意多项式F (x )被一个n 次多项式N (x )除,得到商式Q (x )和一个次数小于n 的余式R (x ),也就是: ()() ()()() F x R x Q x N x N x =+ (1-5) 则可以写为:F (x )≡R (x )(模N (x ))。 这时,码多项式系数仍按模2运算,即只取值0和1,假设:计算x 4+x 2+1除以x 3+1的值可得: 42233 11 11 x x x x x x x ++++=+++ (1-6) 循环码的生成多项式和生成矩阵:(全0码字除外)称为生成多项式,用g (x )表示。 可以证明生成多项式g (x )具有以下特性: (1)g (x )是一个常数项为1的r=n-k 次多项式; (2)g (x )是1n x +的一个因式; (3)该循环码中其它码多项式都是g (x )的倍式。 一旦生成多项式g (x )确定以后,该循环码的生成矩阵就可以确定,进而该循环码的所有码字就可以确定。 以表1-2的(7,3)循环码为例,来构造它的生成矩阵和生成多项式,这个循环码主要参数为,n =7,k =3,r =4。从表中可以看到,其生成多项式可以用第1码字构造: 421()()1g x A x x x x ==+++ (1-7) 2643253242()()()()1x g x x x x x G x xg x x x x x g x x x x ???? +++???? ==+++????????+++???? (1-8) 一个较简单的系统循环码编码方法:设要产生(n ,,k )循环码,m (x )表示信息多项式,则其次数必小于k ,而()n k x m x -?的次数必小于n ,用()n k x m x -?除以g (x ), 可得余数r (x ),r (x )的次数必小于(n-k ),将r (x )加到信息位后作监督位,就得到了系统 循环码。下面就将以上各步处理加以解释。 (1)用n k x -这一运算实际上是把信息码后附加上(n-k )个“0”。例如,信息码为110, 它相当于2 ()m x x x =+。当n-k =7-3=4时,65()n k x m x x x -?=+,它相当于1100000。而希望的到得系统循环码多项式应当是()()()n k A x x m x r x -=?+。 (2)求r (x )。由于循环码多项式A (x )都可以被g (x )整除,也就是:

循环码产生电路设计-参考模板

课程设计 班级:通信09—4 姓名:宋蕾 学号:0906030421 指导教师:刘玉珍 成绩: 电子与信息工程学院 通信工程系

循环码产生电路设计 1. 引言 在线性分组码中,有一种重要的码称为循环码(cycil code)。循环码是在严密的代数学理论基础上建立起来的。这种编码和解码设备都不太复杂,而且检(纠)错的能力较强。循环码是线性分组码中最重要的一种子类,是目前研究得比较成熟的一类码。循环码具有许多特殊的代数性质,这些性质有助于按照要求的纠错能力系统地构造这类码,并且简化译码算法,并且目前发现的大部分线性码与循环码有密切关系。循环码还有易于实现的特点,很容易用带反馈的移位寄存器实现其硬件。 simulink 是matlab 中的一种可视化仿真工具, 是一种基于matlab 的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。simulink 可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。为了创建动态系统模型,Simulink 提供了一个建立模型方块图的图形用户接口(GUI) ,这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。 2. 设计要求 (1)用simulink 对系统建模。 (2)写出其生成多项式(自定)。 (3)对所设计的系统性能进行仿真分析。 (4)对其应用举例阐述。 3. 设计原理 3.1 循环码的循环性 循环码除了具有线性码的一般性质外,还具有循环性。循环性是指任一码组循环一位(即将最右端的一个码元移至左端,或反之)以后,仍为该码中的一个码组。在表1中给出一种(7,3)循环码的全部码组。由此表可以直观看出这种码的循环型。例如,表中的第2码组向右移一位即得到第5码组;第6码组向右移一位即得到第7码组。一般说来,若(0121a a a a n n ?-- )是循环码的一个码组,则循环移位后的码组:

相关主题
文本预览
相关文档 最新文档