通信原理设计论文.docx

上传人:b****8 文档编号:23839566 上传时间:2023-05-21 格式:DOCX 页数:27 大小:163.92KB
下载 相关 举报
通信原理设计论文.docx_第1页
第1页 / 共27页
通信原理设计论文.docx_第2页
第2页 / 共27页
通信原理设计论文.docx_第3页
第3页 / 共27页
通信原理设计论文.docx_第4页
第4页 / 共27页
通信原理设计论文.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

通信原理设计论文.docx

《通信原理设计论文.docx》由会员分享,可在线阅读,更多相关《通信原理设计论文.docx(27页珍藏版)》请在冰豆网上搜索。

通信原理设计论文.docx

通信原理设计论文

基于VHDL语言的汉明码编码器和译码器的设计

摘要:

数字信号在传输过程中,由于受到干扰的影响,码元波形将变坏。

接收端收到后可能发生错误判决。

由乘性干扰引起的码间串扰,可以采用均衡的办法纠正,而加性干扰的影响可以采用差错控制的措施了。

汉明码就是一种能纠正一位错码且编码效率较高的线性分组码,它能纠正一个错码或检测两个错码。

而文章提出了一种基于VHDL语言的汉明码的编码器和译码器的设计与实现。

在介绍汉明码编码和译码原理的基础上,给出了基于VHDL语言的实现的源程序,并通过QuartusII5.1软件进行仿真验证。

关键词:

m序列,汉明码,编码,译码,VHDL语言

Abstract:

Intheprocessofthedigitalsignaltransmission,duetotheimpactofinterference,thesymbolwavewilldeteriorate.Thereceivermayreceiveanerrorjudgement.Iftheintersymbolinterferenceiscausedbymultiplicative,itcanbecorrectedbythebalancemeasures.Andtheadditivecrosstalkcanusetheerrorcontrolmeasures.Hammingisakindoflinearblockcodetocorrectawrongcodeanditismoreefficient,anditcancorrectawrongnumberortesttwowrongcode.ThearticlepresentsthehammingencodinganddecodingofthedesignandimplementationonthebaseofVHDLlanguage.Onthebasisofprincipleofintroducinghammingencodinganddecoding,therealizationofthelanguageVHDLsourceisgivenout.What’smore,itisillustratedthroughQuartusII5.1software.

Keywords:

msequence,Hamming,encoder,decoder,theVHDLlanguage

 

目录

摘要……………………………………………………………………1

第1章绪论………………………………………………………4

1.1问题的背景及提出…………………………………………………4

1.2问题的研究及解决………………………………………………4

1.3设计研究的目的…………………………………………………4

第2章VHDL语言与QuartusII软件简介……………………6

2.1VHDL语言概述……………………………………………………6

2.2QuartusII软件概述……………………………………………6

第3章(7,4)汉明码的编码与译码系统整体设计方案……7

3.1汉明码的编码与译码系统的设计框图………………………………7

3.2m序列…………………………………………………………7

3.3汉明码的编码及译码原理…………………………………………8

第4章用VHDL语言实现汉明码的编码与译码………………11

4.1用VHDL语言实现m序列的发生…………………………………11

4.2用VHDL语言实现m序列的串并转换………………………………12

4.3用VHDL语言实现汉明码的编码…………………………………13

4.4用VHDL语言实现汉明码的译码…………………………………14

4.5用VHDL语言实现译码输出的并串转换……………………………15

第5章小结………………………………………………………18

5.1课程设计中遇到的困难及解决方法…………………………………18

5.2致谢……………………………………………………………19

第6章附录………………………………………………………20

第7章参考文献…………………………………………………23

 

第1章绪论

1.1问题的背景及提出

近年来,对高效可靠的数字传输和存储系统的需求日益增长。

这种需求随着在商业、政府和军事领域面向数字信息的交换、处理和存储的大规模高速数据网的出现而变得更加迫切。

通信系统得主要质量指标是通信的有效性和可靠性。

在有噪声和损失存在的信道中,输入符号与接收符号不能一一对应,传输错误和判断错误的情况总会存在。

可靠数字传输系统的设计要求通信与计算机技术的融合,系统设计者所关心的一个主要问题就是如何控制差错以使得数据能够可靠重现。

在数字通信系统中,编码器分为两大类:

一类是信源编码,另一类是信道编码。

信源编码的目的是解决通信的有效性问题。

信道编码的目的是解决通信可靠性问题。

采用信道编码后,在信息码后增加了监督位,这样就可以增加了码元之间的相互关联,在接收端根据相应的译码规则,就能够察觉传输中有无误码,甚至能自动纠正错误。

我们把建立在代数学基础上的编码称为代数码。

在代数码中,常见的是线性码。

在线性码中信息位和监督位是由一些线性代数方程联系着的。

增加了冗余,必然降低了传输效率,却赢得了提高可靠性的好处。

那么为了纠正一位错码,在分组码中最少要增加多少监督位才行呢?

编码效率能否提高呢?

从这种思想出发进行研究,便导致汉明码的诞生。

汉明码是一种能够纠正一位错码且编码效率较高的线性分组码。

那么怎么实现汉明码的编码与译码呢?

本文将介绍基于VHDL语言的汉明码的编码与译码系统,实现汉明码的编码与译码,从而实现传输的差错控制。

1.2问题的研究及解决

本设计研究基于VHDL语言的汉明码的编码与译码系统。

根据汉明码的构成原理,我们需在信息位的后面加上监督位来监督码组中出现错码的位置,这样就方便在接收端对接收到的码组进行纠错以便得到正确的信息位,达到可靠的通信。

在本设计中,我们采用m序列循环产生预编码信号,经过汉明码编码系统产生带监督位的线性分组码。

发送这些码组,经过信道后这些码组由于受到干扰的影响,某些码元波形会变坏,在接收端经过汉明码译码系统来检验错码及纠正错码,它能纠正一个错码或者检测两个错码。

经过译码系统的检错与纠错,接收端就可以接收到正确的码组。

1.3设计研究的目的

通过运用QuartusII5.1软件仿真对汉明码的编码译码有更深入的了解和认识,掌握汉明码的构造原理,了解汉明码在实际生活中的应用,掌握差错控制的基本方法,即在发送端的信息码元序列中,以某种确定的编码规则加入一些码元(称为监督码元),使信息序列与监督码元之间具有某种相关性。

在不断学习新的知识以及归纳复习老知识的同时,加强自身对通信系统设计的能力。

 

第2章VHDL语言与QuartusII软件简介

2.1VHDL语言概述

随着信息技术的不断发展,电子技术面临着严峻的挑战,为了跟上快速变化的步伐,电子产品的设计不得不非常快。

模拟设计依然是很特殊的职业,数字设计已变得非常依赖于计算机辅助设计——也称为设计自动化(DA)或电子设计自动化(EDA)。

电子设计自动化的重要特征就是要求采用形式化语言来描述硬件电子电路的功能,即使用硬件描述语言来描述硬件电子电路。

目前,作为硬件描述语言之一的VHDL(Very_High_SpeedIntegratedCircuitHardwareDescriptionLanguage)已经成为各家EDA工具和集成电路厂商所普遍认同和共同推广的标准化硬件描述语言。

VHDL语言是一种标准化的硬件描述语言,它自身必然有很多其他硬件描述语言所不具备的优点:

(1)VHDL语言功能强大,设计方式多样。

(2)VHDL语言具有强大的硬件描述能力。

(3)VHDL语言具有很强的移植能力。

(4)VHDL语言的设计描述与期间无关。

(5)VHDL语言程序易于共享和复用。

虽然VHDL语言具有很多其他硬件描述语言所不具备的优点,但是它也并不是一种完全理想的硬件描述语言。

同样,它也具有一些自身的缺点,或者说VHDL语言还有一些需要不断完善的地方:

(1)VHDL语言有时不能准确地描述硬件电路。

(2)VHDL语言的系统级抽象描述能力较差。

(3)VHDL语言不能描述模拟电路。

作为一种标准化的硬件描述语言,VHDL语言描述硬件电路时具有一定的流程可以遵循。

对于设计人员来说,掌握VHDL语言的开发流程图和开发步骤具有重要的指导作用。

2.2QuartusII软件概述

QuartusII是Altera公司在21世纪初推出的CPLD/FPGA集成开发环境,它是该公司前一代CPLD/FPGA集成开发环境MAX+PUSII的更新换代产品。

QuartusII提供了一种与结构无关的设计环境,其界面使设计者能方便地进行设计输入、快速处理和器件编程。

QuartusII还包含许多十分有用的参数化的模块库,它们是复杂或高级系统构建的重要组成部分。

QuartusII加强了网络功能,它具有最新的Internet技术,设计人员可以直接通过Internet获得Altera的技术支持。

QuartusII集成开发环境包括:

系统级设计、嵌入式软件开发、可编程逻辑器件设计、综合、布局布线、验证和仿真等内容。

第3章(7,4)汉明码的编码与译码系统整体设计方案

3.1汉明码的编码与译码系统的设计框图

发送

信道

汉明码编码系统

串并

转换

3级m序列发生器

图3.1汉明码编码系统方框图

m序列

并串

转换

正确信息码

汉明码译码系统

接收

码组

图3.2汉明码译码系统方框图

3.2m序列

3.2.1m序列的产生原理

m序列是最长线形反馈移存器序列的简称。

它是由带线性反馈的移存器产生的周期最长的序列。

先引入本原多项式的概念。

若一个n次多项式f(x)满足下列条件:

(1)f(x)为既约的;

(2)f(x)可整除(xm+1),m=2n-1;

(3)f(x)除不尽(xq+1),q

则称f(x)为本原多项式。

一个线性反馈移存器能产生m序列的充要条件为:

反馈移存器的特征多项式为本原多项式。

m序列通过线形反馈移位寄存器产生如图:

图3.3m序列产生方框图

3.2.2m序列的产生

本设计中,根据要求我们需要用三级移位寄存器产生m序列,此m序列的周期为7。

那么由查表可知此反馈移存器的特征多项式为f(x)=

那么由特征多项式可画出此m序列的产生方框图:

 

图3.43级移位寄存器产生m序列

初始状态111输出1

0111

1011

0100

0011

1000

1100

1111

所以由3级反馈移存器可产生111010*********110100……周期为7的m序列。

3.3汉明码的编码及译码原理

3.3.1汉明码的基本概念

将被编信息分组,每组信息分别各自建立与码字之间的对应关系,这种编码方式叫分组码。

分组码一般分组长度不变,k位信息为一组,符号次序不变,后面添加r位冗余(称为监督位),合成来构成一个码长为n=k+r的码字。

在线性码中信息位和监督位是由一些线性代数方程联系着的。

而汉明码是一种能够纠正一位错码且编码效率较高的线性分组码。

3.3.2汉明码的编码原理

一般来说,若码长为n,信息位数为k,则监督位数r=n-k。

下面以(7,4)汉明码来说明汉明码的编码原理。

我们用a6a5……a0表示这7个码元,用S1、S2和S3表示3个监督关系式中的校正子,则S1、S2和S3的值与错码位置的对应关系可以规定如下:

S1S2S3

错码位置

S1S2S3

错码位置

001

a0

101

a4

010

a1

110

a5

100

a2

111

a6

011

a3

000

无错码

表1

那么可以得出:

S1=a6⊕a5⊕a4⊕a2,S2=a6⊕a5⊕a3⊕a1,S3=a8⊕a4⊕a3⊕a0

由此可见:

监督矩阵H=

=[P

],式中:

P为r*k阶矩阵;

为r*r阶单位方阵。

Q为一个k*r阶矩阵,它为P的转置,即

我们在Q的左边加上一个k*k阶单位方阵,就构成一个矩阵G,矩阵G也称为生成矩阵。

所以生成矩阵G=

=

那么由它可以产生整个码组,有式

所以监督位计算结果可由下表所示:

信息位

监督位

信息位

监督位

0000

000

1000

111

0001

011

1001

100

0010

101

1010

010

0011

110

1011

001

0100

110

1100

001

0101

101

1101

010

0110

011

1110

100

0111

000

1111

111

表2

由以上分析可得出,汉明码编码器电路原理图如下:

图3.5

3.3.3汉明码的译码原理

发送码组A,在传输过程中有可能出现误码,这时接收端接收到的码组为B。

则收发码组之差为

=E

其中,E称为错误图样。

可见,若E=0,则B=A,传输无误码。

令S=

,称为伴随式或校正子。

则接收端利用接收到的码组B计算校正子S=

,因此,校正子S仅与E有关。

若某一码组为许用码组,则它必然满足上式。

利用这一关系,在接收端将接收到的码组B和事先在发送端约定好的监督矩阵

相乘,看是否为零,若为零,则认为接收正确;反之,则认为传输过程中发生了错误,进而设法确定错误的数目和位置。

由此可见,伴随式S与错误图样E之间有确定的线性变换关系,与发送码组A无关。

接收端译码器的任务就是从伴随式确定错误图样,然后从接收到的码字中减去错误图样。

(7,4)线性分组码的伴随式S与错码图样E的对应关系如表3所示。

S1S2S3

错码位置

000

001

a0

010

a1

100

a2

011

a3

101

a4

110

a5

111

a6

表3

从以上分析可以得出线性分组码译码的基本步骤如下:

1)计算接收码组B的伴随式S

2)根据S从表中找出错误图样E,判定误码位置

3)根据E纠正错误,得到正确的码组A=E+B(模2加)

(7,4)汉明码的译码电路框图如下图所示:

图3.6

第4章用VHDL语言实现汉明码的编码与译码

4.1用VHDL语言实现m序列的发生

为了实现m序列的连续正确地发生,我们可以用D触发器来组成反馈移存器,由此产生正确的m序列。

D触发器产生m序列的框图可以如下图所示:

图4.1

那么用VHDL语言来实现上图功能可用如下语句:

libraryieee;

useieee.std_logic_1164.all;

entitydis

port(

clk:

instd_logic;

d:

instd_logic;

q:

outstd_logic);

endentity;

architectureartofdis

begin

process(clk)

begin

if(clk'eventandclk='1')then

q<=d;

endif;

endprocess;

end;

libraryieee;

useieee.std_logic_1164.all;

entityxmis

port(

clk:

instd_logic;

q:

outstd_logic);

endentity;

architectureartofxmis

componentdis

port(

clk:

instd_logic;

d:

instd_logic;

q:

outstd_logic);

endcomponent;

signalq0,q1,q2:

std_logic;

begin

u0:

dportmap(clk,((not((q0orq1)orq2))or(q0xorq2)),q0);

u1:

dportmap(clk,q0,q1);

u2:

dportmap(clk,q1,q2);

q<=q2;

end;

4.2用VHDL语言实现m序列的串并转换

在编码器中4位信息位必须是并行输入的,可是m序列却是串行输出的,所以在进入编码器之前,m序列必须进行串并转换。

串并转换的思想就是:

设定一个长度为4的数组,在时钟脉冲的作用下,使串行的m序列一位位地输给数组,当计数值从0达到3时,将数组输出,那么输出的数组即为m序列以4为长度的分组序列。

那么我们可以用VHDL语言实现以上功能。

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitychuanbingis

port(data:

instd_logic;--输入的m序列

reset:

instd_logic;

clk:

instd_logic;

qout:

outstd_logic_vector(3downto0));--输出的分组序列

endentity;

architectureartofchuanbingis

signaldout:

std_logic_vector(3downto0);

begin

process(reset,clk)is

variablecount:

integer:

=0;

begin

ifreset='1'then

qout<="0000";

count:

=0;

elsifclk'eventandclk='1'then

casecountis

when3=>dout(0)<=data;

qout<=dout;

count:

=0;

whenothers=>

dout(0)<=data;

count:

=count+1;

foriin3downto1loop

dout(i)<=dout(i-1);

endloop;

endcase;

endif;

endprocess;

end;

4.3用VHDL语言实现汉明码的编码

现在我们已知监督矩阵H=

,故由H我们可以知道生成矩阵G=

=

,那么由[a6a5a4a3a2a1a0]=[a6a5a4a3]·G,这样我们就可以用VHDL语言来实现汉明码的编码。

libraryieee;

useieee.std_logic_1164.all;

entitybianmais

port(clk:

instd_logic;

x:

instd_logic_vector(3downto0);

p:

outstd_logic_vector(6downto0));

endentity;

architectureartofbianmais

begin

process(clk)

begin

if(clk'eventandclk='1')then

p(0)<=x(3)xorx

(1)xorx(0);

p

(1)<=x(3)xorx

(2)xorx(0);

p

(2)<=x(3)xorx

(2)xorx

(1);

p(3)<=x(0);

p(4)<=x

(1);

p(5)<=x

(2);

p(6)<=x(3);

endif;

endprocess;

end;

4.4用VHDL语言实现汉明码的译码

在数字通信系统中,因编码经过信道传输后可能会在接收端出现错码,所以在汉明码译码系统中,我们首先要对接收码组进行检错与纠错。

由第3章所述的汉明码的译码原理,我们可以先算出接收码组所对应的校正子,然后由校正子来指示错误码元位置,通过取反来纠错,那么实现程序如下:

libraryieee;

useieee.std_logic_1164.all;

entityyimais

port(

m:

instd_logic_vector(6downto0);

n:

outstd_logic_vector(0to3));

endentity;

architectureartofyimais

signals:

std_logic_vector(2downto0);

signalt:

std_logic_vector(6downto0);

componentjiaois

port(

x:

instd_logic_vector(6downto0);

y:

outstd_logic_vector(2downto0));

endcomponent;

componentjiucuois

port(

k:

instd_logic_vector(2downto0);

l:

instd_logic_vector(6downto0);

j:

outstd_logic_vector(6downto0));

endcomponent;

begin

u0:

jiaoportmap(m,s);

u1:

jiucuoportmap(s,m,t);

n<=t(6downto3);

end;

libraryieee;

useieee.std_logic_1164.all;

entityjiucuois

port(

k:

instd_logic_vector(2downto0);

l:

instd_logic_vector(6downto0);

j:

outstd_logic_vector(6downto0));

endentity;

architectureartofjiucuois

signals:

std_logic_vector(6downto0);

begin

s<=l;

process(k)is

begin

if(k="000")thenj<=s;

elsif(k="001")thenj<=s(6downto1)&(nots(0));

elsif(k="010")thenj<=s(6downto2)&(nots

(1))&s(0);

elsif(k="011")thenj<=s(6downto3)&(nots

(2))&s(1downto0);

elsif(k="100")thenj<=s(6downto4)&(nots(3))&s(2downto0);

elsif(k="101")thenj<=s(6downto5)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1