循环码的性能分析.docx
- 文档编号:28735789
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:22
- 大小:134.20KB
循环码的性能分析.docx
《循环码的性能分析.docx》由会员分享,可在线阅读,更多相关《循环码的性能分析.docx(22页珍藏版)》请在冰豆网上搜索。
循环码的性能分析
Matlab课程设计任务书
学生姓名:
专业班级:
指导教师:
—工作单位:
题目:
循环码的性能分析
初始条件:
理论方面一一电路分析基础、模拟电子、高频电子线路、通信原
理、数字信号处理等专业知识
设备方面一一微型计算机
软件方面matlab仿真平台
场地方面一一鉴主15楼通信实验室1
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写
等具体要求)
1.理论设计与分析,包括理论的推导和计算过程。
2.制作相应的matlab编制仿真程序,并与理论结果对比,最后
得出结论。
3.完成课程设计报告,包括必要的公式、文字/图表说明和仿真
时间安排:
本课程设计自任务书发布之日开始,分散进行,答辩时间统
摘要I
AbstractII
1.引言1
2.设计原理1
2.1循环码介绍1
2.1.1循环码的多项式表示2
2.1.2(n,k)循环码的生成多项式2
2.1.3循环码的生成矩阵和一致校验矩阵2
2.2循环码编码原理3
2.3循环码的纠错原理4
3程序与仿真7
3.1程序函数介绍7
3.2各部分程序说明8
4.总结14
5.参考文献15
摘要
循环码是线性分组码中最重要的一种子类,是目前研究得比较成熟的一类码。
环码具有许多特殊的代数性质,这些性质有助于按照要求的纠错能力系统地构造这类码,并且简化译码算法,并且目前发现的大部分线性码与循环码有密切关系。
循环码还有易于实现的特点,很容易用带反馈的移位寄存器实现其硬件。
关键词:
MATLAB循环码
Abstract
Cyclecodeislinearspace-timeblockcodesinthemostimportantofaseed,isthepresentresearchmorematurekindofcode.Cycliccodehasmanyspecialalgebraicproperties,thesepropertiestohelpinaccordaneewiththerequirementsoftheerrorcorrectionabilitytoconstructthesystemofthiskindofcode,andsimplifieddecodingalgorithm,andthemostofthelinearcodeandfoundthatthereisacloserelationshipbetweencycliccode.Cycliccodeandiseasytorealizethecharacteristic,iseasytousewiththefeedbacktheshiftregisterrealizeitshardware.
Keywords:
MATLABcyclecode
ii
1.引言
MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。
MATLABT通信系统功能函数库由七十多个函数组成,每个函数有多种选择参数,函数功能覆盖了现代通信系统的各个方面。
这些函数包括:
信号源产生函
数、信源编码/解码函数、接错控制编码/解码函数、调制/解调函数(基带和通带)、滤波器函数、传输信道模型函数(基带和通带)、TDMA、FDMA、CDMA函数、同步函数、工具函数等。
以纠错控制编解码函数为例:
函数库提供了线性分组码、汉明码、循环码、BCH码、里德一索洛蒙码(REED---SOLOMON)、卷积码等6种纠错控制编码,每种编码又有编码、解码、矢量输入输出、序列输入输出等四种形式的函数表达。
2■设计原理
2.1循环码介绍
循环码是线性分组码的一种,所以它具有线性分组码的一般特性,此外还具有循环性。
循环码的编码和解码设备都不太复杂,且检(纠)错能力强。
它不但可以检测随机的错误,还可以检错突发的错误。
(n,k)循环码可以检测长为n-k或更短的任何突发错误,包括首尾相接突发错误。
循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同,码元就是组成数码的单元。
符合这个特点的有多种方案,但循环码只能是表中的那种。
循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。
这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样就不会产生瞬时错误。
循环码就是这样一种编码,它可以在卡诺图中依次循环得到。
循环码又称格雷码
(GreyCode))
循环码最大的特点就是码字的循环特性,所谓循环特性是指:
循环码中任一
许用码组经过循环移位后,所得到的码组仍然是许用码组。
若
(an!
anN…aia。
)为一循环码组,贝Uanya。
a.」)、
(anwan/…an」an2)还是许用码组。
也就是说,不论是左移还是右
移,也不论移多少位,仍然是许用的循环码组。
2.1.1循环码的多项式表示
设码长为n的循环码表示为(an□an/…a^'a1a0),其中ai为二进制数,通常把码组中各码元当做二进制的系数,即把上式中长为n
的各个分量看做多项式:
Tx二an」xJanfaiXaxa。
(2-1)
的各项系数,则码字与码多项式一一对应,这种多项式中,X仅表示码元位置的
标记,因此我们并不关心X的取值,这种多项式称为码多项式。
2.1.2(n,k)循环码的生成多项式
(n,k)循环码的生成多项式写为g(x),它是(n,k)循环码码集中唯一的,幕次为n-k的码多项式,则xkg(x)是一个幕次为n的码多项式。
按模(xn•1)运算,此时:
R(x)
n
(2—2)
(2—3)
xkg(x)二R(x)
运算后的余式”也是循环码的一个码字,它必能被g(x)整除,即:
由以上两式可以得到:
xkg(x)=Q(x)(xn1)R(x)二(xn1)f(x)g(x)(2—5)
和xn1l-xkf(x)g(x)二h(x)g(x)(2—6)
从上式中可以看出,生成多项式g(x)应该是xn1的一个因式,即循环码多项式应该是xn7的一个n-k次因式。
2.1.3循环码的生成矩阵和一致校验矩阵
对所有的i=0,1,2,••…-1,用生成多项式g(x)除,有:
(2—7)
xn*'=ai(x)g(x)bi(x)
式中bj(x)是余式,表示为:
bi(x)=bi,nJ^xn±~*+…b,iX+b,0(2—8)
因此,xn^1b(x)是g(x)的倍式,即x^k1-bi(x)是码多项式,由此得到系统形式的生成阵
它是一个kn阶的矩阵。
10…0bkg」bjbk_i,0
°1…0bk2n_k」…bk_2,1bk_x,0
^G--*--百
0000b0,n_k」…b0,1b0,0一
同样,由GHt=0可以得到系统形式的一致校验矩阵为:
H
如已知(7,4)循环码的生成多项式和校验多项式分别为:
g(x)=x3x1,h(x)=x4x2x1。
写得其生成矩阵和校验矩阵分别为:
-
1
0
1
0
1
0
G=
0
0
1
0
0
0
1000
(2—11)
(2—12)
1100
0110
1011一
0100
1010
1101
2.2循环码编码原理
有信息码构成信息多项式m(x)二mk/Xk4•m0,其中最高幕次为k-1;
用xn*乘以信息多项式m(x),得到的x^m(x),最高幕次为n-1,该过程相
当于把信息码(mk_1,,,mi,m。
)移位到了码字德前k个信息位,
其后是r个全为零的监督位;
用g(x)除xnJ"m(x)得到余式r(x),其次数必小于g(x)的次数,即小于(n-k),将此r(x)加于信息位后做监督位,即将r(x)于xn」m(x)相加,得到的多项式必为—码多项式。
根据上面的讨论,可得到在(7,4)循环码编码的程序框图如图1所示:
图2.2.1编码程序框图
2.3循环码的纠错原理
纠错码的译码是该编码能否得到实际应用的关键所在。
译码器往往比编码较难实现,对于纠错能力强的纠错码更复杂。
根据不同的纠错或检错目的,循环码译码器可分为用于纠错目的和用于检错目的的循环码译码器。
通常,将接收到的循环码组进行除法运算,如果除尽,贝U说明正确传输;如果未除尽,则在寄存器中的内容就是错误图样,根据错误图样可以确定一种逻辑,来确定差错的位置,从而达到纠错的目的。
用于纠错目的的循环码的译码算法比较复杂,感兴趣的话可以参考一些参考书。
而用于检错目的循环码,一般使用ARQ通信方式。
检测过程也是将接受到的码组
进行除法运算,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错,要求发送端重发。
用于这种目的的循环码经常被成为循环冗余校验码,即CRC校验码。
CRC校验码由于编码电路、检错电路简单且易于实现,因此得到广泛的应用。
在通过MODEM传输文件的协议如ZMODEM、
XMODEM协议中均用到了CRC校验技术。
在磁盘、光盘介质存储技术中也使用该方法。
当码字c通过噪声信道传送时,会受到干扰而产生错误。
如果信道产生的错误图样是e,译码器收到的n重接受矢量是y,则表示为:
y(x)二c(x)e(x)(2—16)
A
译码器的任务就是从y(x)中得到e(x),然后求的估值码字
c(x)二y(x)e(x)(2—17)
并从中得到信息组m(x)。
循环码译码可按以下三个步骤进行:
(1)有接收到的y(x)计算伴随式s(x);
(2)根据伴随式s(x)找出对应的估值错误图样e(X);
AA'C/八
(3)计算c(x):
y(x)e(x),得到估计码字c(x)。
若c(x)二c(x),则译码正确,否则,若C(X)=c(x),则译码错误。
由于g(x)的次数为n-k次,g(x)除E(x)后得余式(即伴随式)的最高次数为n-k-1次,故S(x)共有2n-k个可能的表达式,每一个表达式对应一个错误格式。
可以知道(7,4)循环码的S(x)共有2(7-4)=8个可能的表达式,可根据错误
图样表来纠正(7,4)循环码中的一位错误,其伴随式如表1所示
BCH(7,4)循环码错误图样表:
错误图样
错误图样码字
伴随式S(x)
伴随式
E6(X)=X6
1000000
2X
100
E5(X)=X5
0100000
2X+x
110
E4(X)=X4
0010000
X2+X+1
111
E3(X)=X3
0001000
x+1
011
E2(X)=X2
0000100
2.
X+1
101
E1(X)=X1
0000010
X
010
Eo(x)=x0
0000001
1
001
E(x)=0
0000000
0
000
表1BCH(7,4)循环码错误图样
表
上式指出了系统循环码的译码方法:
将收到的码字R(x)用g(x)去除,如果
除尽则无错;否则有错。
如果有错,可由余式S(x)找出对应图样,然后将
错误图样E(x)与R(x)模2和,即为所求码字C(x),从而实现纠错目的。
根据前面的讨论,可得(7,4)循环码译码的程序框图如图2.3.1所示:
图2.3.1译码程序框图
3程序与仿真
3.1程序函数介绍
MATLAB中提供了循环码的编码和译码函数,本程序直接调用进行编程。
(1)encode函数
功能:
编码函数
语法:
code=encode(msg,N,K,method,opt)
说明:
用method指定的方法完成纠错编码。
其中msg代表信息码元,是一个K列矩阵,N是编码后的码字长度;K是信息位的长度;opt是有些编码方式需要的参数。
(2)decode函数
功能:
译码函数
语法:
msg=decode(code,N,K,method,opt1,opt2,opt3,opt4);
说明:
这个函数对接收到的码字进行译码,恢复出原始的信息,译码参数和方式必须和编码时采用的严格相同。
它对接收到的码字,按method指定的方式进行译码;opt1,…,opt4是可选项的参数。
(3)cyclpoly函数
功能:
生成循环码的生成多项式。
语法:
p=cyclpoly(N,K);
p=cyclpoly(N,K,fd_flag);
说明:
从p=cyclpoly(N,K)中可找到一个给定码长N和信息位长度K生成多项式p,注意不是任意给定一个多项式都可以作为生成多项式。
(4)randint函数
功能:
引起一致地分布的任意整数矩阵
语法:
out=randint(m)
out=randint(m,n)
out=randint(m,n,rg)
out=randint(m,n,rg,state)
(5)awgn函数
功能:
在某一信号中加入高斯白噪声
语法:
y=awgn(x,SNR);
说明:
信噪比SNR以dB为单位。
x的强度假定为OdBW。
如果x是复数,就加入复噪声。
(6)quantiz函数
功能:
产生一个量化序号和输出量化值。
语法:
index=quantiz(sig,partition);
[index,quantiz]=quantiz(sig,partition,codebook);
[index,quant,distor]=quantiz(sig,partition,codebook);
说明:
这个函数根据给定的区间参数量化信号,间隔矢量必须按递增顺序排
列。
3.2各部分程序说明
1循环码编码与解码Matlab源程序(实验以(7,4)循环码进行分析)
m=3;
n=2Am-1;
k=n-m;
fs=1OO;%设置采样频率为100Hz
snr=10;%设置信噪比单位:
dB
p=cyclpoly(7,4);%(7,4)循环码生成多项式
msg=round(rand(8*k,1));%设置8个信息组,每组k个
code=encode(msg,n,k,'cyclic/binary',p);%编码输入
code_addnoise=awgn(code,snr,'measured');%信道输出
%将浮点数转化为2进制
forindex=1:
length(code)
if(code_addnoise(index)<0.5)
noisecode(index)=0;
else
noisecode(index)=1;
endend
%译码输出
newmsg=decode(noisecode,n,k,
%求频谱
N=length(newmsg);
ft_new=fftshift(fft(newmsg,N));
f=-fs/2:
fs/N:
(fs/2-fs/N);
%画图输出波形
figure
(1);subplot(2,2,1);stem(msg);
'cyclic/binary');
编码器输出信号’);
'译码器输出信号’);
title('编码器输入信号’);subplot(2,2,2),stem(code),title(subplot(2,2,3),stem(newmsg),title(subplot(2,2,4),plot(f,abs(fft_new)/max(abs(fft_new)));
xlabel('频率:
Hz');
ylabel('归一化幅度’);
title('译码器输出后频谱图’);
figure
(2)
Figure1
回
plot(code_addnoise),title('信道输出信号');
编码器输入信号
05
。
犷7~-g--~花”*亠E0
File£ditVnewInsertToolsdesktopWindowHelp
«x-1s|□is|■a
编码器输出信号
译码器输出信号
1押
05
2d050
频率Hz
译玛器输出后频谱團
2.误码率
m=3;
n=2Am-1;
%定义码长
k=n-m;
%信息位长
Fs=40;%系统采样频率
Fd=1;%码速率
N=Fs/Fd;
M=2;%进制数
forSNR=1:
100;%信噪比
%制造100个信息组,每组k位
msg=randint(100,k,[0,1]);
code=encode(msg,n,k,'cyclic/binary'
);
%加入噪声
%在已调信号中加入咼斯白噪声
noisycode=awgn(code,SNR,'measured'
[],'dB');
%将浮点数转化为二进制,波形整形过程
fori=1:
100
fora=1:
n
ifnoisycode(i,a)<0.5
noisycode(i,a)=0;
else
noisycode(i,a)=1;
end
end
end
%译码
newmsg=decode(noisycode,n,k,'cyclic');
%计算误码率
[number,ratio]=biterr(newmsg,msg);
result(SNR)=ratio;
disp(['Thebiterrorrateis',num2str(ratio)]);
end
%不同信噪比下循环码经过加性高斯白噪声信道的误码率
figure
(1)
stem(result);
title('循环码在不同信噪比下的误码率’)
legend('误码率','*')
xlabel('信噪比');
ylabel('在加性高斯白噪声下的误码率');
运行结果:
Figure1
FuleEdntViewInsertToolsDesktopWindowHelp
循环码在不同信噪比下的误码i率
0.2
018
4218「「0.0ooO瞬®临sJ-t督W盘極埜启W
64
oO
0.0L
O
-O
T
90
00
70
60
50
40
30
Thebiterrorrateis0.0475
Thebiterrorrateis0.0175
Thebiterrorrateis0.0125
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
Thebiterrorrateis0
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
ThebiterrorrateisO
Thebiterror
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环码 性能 分析