通信原理课程设计报告以及CPLD汉明码编译.docx

上传人:b****3 文档编号:26895117 上传时间:2023-06-23 格式:DOCX 页数:18 大小:250.44KB
下载 相关 举报
通信原理课程设计报告以及CPLD汉明码编译.docx_第1页
第1页 / 共18页
通信原理课程设计报告以及CPLD汉明码编译.docx_第2页
第2页 / 共18页
通信原理课程设计报告以及CPLD汉明码编译.docx_第3页
第3页 / 共18页
通信原理课程设计报告以及CPLD汉明码编译.docx_第4页
第4页 / 共18页
通信原理课程设计报告以及CPLD汉明码编译.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

通信原理课程设计报告以及CPLD汉明码编译.docx

《通信原理课程设计报告以及CPLD汉明码编译.docx》由会员分享,可在线阅读,更多相关《通信原理课程设计报告以及CPLD汉明码编译.docx(18页珍藏版)》请在冰豆网上搜索。

通信原理课程设计报告以及CPLD汉明码编译.docx

通信原理课程设计报告以及CPLD汉明码编译

课程设计报告

 

课程名称通信原理课程设计

系别:

专业班级:

学号:

姓名:

课程题目:

汉明码编译码CPLD实现

完成日期:

指导老师:

课程设计目的

利用课程设计加强对通信原理课程的基本概念、基本理论、分析方法和实现方法的理解。

结合数字通信技术和微电子技术,学习现代数字通信系统的建模和设计方法。

将理论和实际紧密联系,培养创新思维和设计能力,增强软件编程实现能力和解决实际问题的能力。

课程设计要求

要求熟练地运用通信理论,进行数字基带信号、数字信号频带传输系统设计,掌握对数字基带信号的处理方法,并进行通信系统建模完成对汉明码编译码CPLD实现。

课程设计注意事项

1.熟悉数字电路设计的一般方法。

2.熟悉和掌握MAXPLUSⅡ软件的使用。

3.按设计要求进行建模。

4.设计完成后,按学校“课程设计工作规范”中的“统一书写格式”,撰写课程设计报告一份,包括:

设计题目、设计要求、逻辑分析、设计总体电路、模块设计、模块程序(含对程序的说明)、仿真波形、实验结果分析、心得体会(不少于500字)、参考文献(不少于5篇)。

课程设计内容

设计内容是采用新型数字系统设计的方法实现(7,4)循环码。

循环码是差错控制编码中最主要、最常用的一种。

它有很强的纠错能力,所以普遍应用于各种实际的差错控制系统。

要求用CPLD实现(7,4)循环码编码解码的方法,可以采用原理图或VHDL编程输入的方式。

课程设计简要操作步骤

1.简要介绍线性分组码、循环码的基本原理的基础。

2.分析CPLD实现(7,4)循环码编码解码的算法,建立模型,写出流程图。

3.原理图输入或用VHDL语言编写的程序。

4.进行编译,并进行仿真。

分析仿真波形,检查所实现的编码器是否正确。

5.进行引脚定义。

6.进行并口下载电缆的配置。

7.检查无误后,生成下载文件,并进行可编程器件的烧写。

8.硬件验证功能是否实现。

课程设计心得体会

经过这次课程设计,不仅加强了我的动手、思考和解决问题的能力,还学到了很多课外知识,比如独立思考解决问题,出现差错的随机应变能力等。

这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,要想在本专业学精就要把所学的理论知识与实践相结合起来,如此才能提高自己的实际动手能力和独立思考的能力。

仿佛这是工作前的又一次预热,熟悉了座学问和工作的整个流程。

课程设计评语及成绩

评语

成绩

指导教师

(签名)

 

2010年7月1日

附件:

汉明码编译码CPLD实现

摘要:

通过利用CPLD实现对汉明码进行编译。

利用ALTERA公司的FLEX10K系列芯片设计和实现了汉明码的编译码,详细地阐述了设计的方法和实现的过程。

首先进行电路设计,然后在MAX+PLUSII编辑环境下,采用自顶向下的层次设计方法,以及VHDL文本输入的输入方法编制程序,经编译正确后进行波形仿真,经过仿真、调试,验证了功能和时序正确性后,将编辑的程序烧写到CPLD。

关键词:

CPLD汉明码编译MAX+PLUSII

正文

一.汉明码理论:

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

汉明码的编译码原理:

汉明码的编码是对信源端发出的原始码字上加入一些监督码,得到新的码字,这的码字增加了信息的冗余,但保证了传输的质量,设其码字为A=[a6,a5,a4,a3,a2,a1,a0],其中前4位是信息元,后3位是监督元,使信息码元与监督码元通过线性方程式联系起来,可用下列线性方程组来描述该分组码,产生监督元:

 发送端计算监督位an=an-1an-2….a0=0,接收端解码计算S=an-1an-2….an-2a0,校正子S=0则无错、S=1则有错,该式为监督关系式;S称为校正子。

由于校正子S只有两种取值,故它只能代表有错和无错这两种信息,而不能指出错码的位置。

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

用r个监督位构造出r个监督关系式来指示1位错码的n种可能位置,则2r-1n即2rk+r+1满足此汉明不定式。

(7,4)汉明码,为了纠正1位错码,由上式可知,要求监督位数r3。

若r=3,则n=k+r=7。

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

表格一:

S1

0

0

1

0

1

1

1

0

S2

0

1

0

1

0

1

1

0

S3

1

0

0

1

1

0

1

0

S1=a6a5a4a2

S2=a6a5a3a1

S3=a6a4a3a0

错错码位置a0a1a2a3a4a5a6无错码

仅当一位错码的位置在a2、a4、a5或a6时,校正子S1为1;否则S1为零。

这就意味着a2、a4、a5和a6四个码元构成偶数监督关系;同理,a1、a3、a5和a6构成偶数监督关系;以及a0、a3、a4和a6构成偶数监督关系。

在发送端编码时,信息位a6、a5、a4和a3的值决定于输入信号,因此它们是随机的。

监督位a2、a1和a0应根据信息位的取值按监督关系来确定,即监督位应使上3式中S1、S2和S3的值为0(表示编成的码组中应无错码):

a6a5a4a2=0a2=a6a5a4

a6a5a3a1=0移项运算,解出监督位a1=a6a5a3

a6a4a3a0=0a0=a6a4a3

根据上面三个表达式,可以得到16个许用码组如下表

许用码组表

表格二:

信息位

a6a5a4a3

监督位

a2a1a0

信息位

a6a5a4a3

监督位

a2a1a0

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

(7,4)码的三个监督方程式可以重新改写为如下形式:

可以用矩阵形式来表示:

记作:

,其中

通常H称为监督矩阵,A称为信道编码得到的码字。

在这个例子中H为r×n阶矩阵,P为r×k阶矩阵,Ir为r×r(3x3)阶单位矩阵,具有这种特性的H矩阵称为典型监督矩阵,这是一种较为简单的信道编译码方式。

典型形式的监督矩阵各行是线性无关的。

接收端收到每个码组后,先计算出S1、S2和S3,再查表判断错码情况。

例如,若接收码组为0000011,按上述公式计算可得:

S1=0,S2=1,S3=1。

由于S1S2S3等于011,故查表可知在a3位有1错码。

按照上述方法构造的码称为汉明码。

表中所列的(7,4)汉明码的最小码距d0=3。

因此,这种码能够纠正1个错码或检测2个错码。

由于码率k/n=(n-r)/n=1–r/n,故当n很大和r很小时,码率接近1。

可见,汉明码是一种高效码。

二.软件部分:

1、(7,4)汉明码的编码、程序流程图

汉明码的编码就是将输入的四位信息码编成七位的汉明码,即加入三位监督位。

因为A=[a6a5a4a3]·G,信息码与生成矩阵G的乘积就是编好以后的(7,4)汉明码,而生成矩阵G又是已知的,可得

                  1000 111

                  0100 110

            G=  0010 101                   

                  0001 011

所以,可以得出如下方程组

           a6=a6

           a5=     a5

           a4=          a4

           a3=               a3                     (方程组2)

           a2=a6+a5+a4

           a1=a6+a5     +a3

           a0=a6     +a4+a3

根据上式就可以完成设计编码程序。

编码流程图如下图:

(7,4)汉明码的编码仿真图

2、(7,4)汉明码的译码、程序流程图及仿真

(7,4)汉明码的译码思路:

(7,4)汉明码的译码就是将输入的七位汉明码翻译成四位的信息码,并且纠正其中可能出现的一个错误。

由于生成矩阵G是已知的,由G=[Ik Q],(其中Ik是4x4阶单位阵)可以得到矩阵Q的值

                  111

             Q= 110 =PT                      (3.2.1)

                  101

                  011

那么              1 1 1 0

            P=  1 1 0 1                     (3.2.2)

                  1 0 1 1

而监督矩阵H与PT又存在一定的关系,即

H=[PIr]                                        (3.2.3)

那么就可以算出监督矩阵H的值,即

                  1110100

            H=  1101010                  (3.2.4)

                  1011001

所以                1 1 1

                    1 1 0

                    1 0 1

          HT =   0 1 1                       (3.2.5)

                    1 0 0

                    0 1 0

                    0 0 1

根据式S=BHT=(A+E)HT =EHT(S称为伴随式或校正子,收发码组之差定义为错误图样E,即 E=B-A ),可以看出校正子S与错误

样E之间有确定的线性变换关系如下表所示。

表格三:

错误

码位

E

S

e6   e5   e4   e3   e2   e1   e0

s2  s1  s0

0

/

0   0   0   0   0   0   0

0   0   0

1

b0

0   0   0   0   0   0   1

0   0   1

2

b1

0   0   0   0   0   1   0

0   1   0

3

b2

0   0   0   0   1   0   0

1   0   0

4

b3

0   0   0   1   0   0   0

0   1   1

5

b4

0   0   1   0   0   0   0

1   0   1

6

b5

0   1   0   0   0   0   0

1   1   0

7

b6

1   0   0   0   0   0   0

1   1   1

(7,4)汉明码S与E的对应关系表

E=[en-1,en-2,…,e1,e0],算出校正子S与(7,4)汉明码各位之间的关系表达式为

S2=a2+a6+a5+a4

         S1=a1+a6+a5+a3                              

         S0=a0+a6+a4+a3

明显可以确定每一位出错时,对应的校正子s2s1s0的值。

译码流程图如右图所示:

(7,4)汉明码的译码仿真图

三.程序清单:

(7,4)汉明码的编码程序:

libraryieee;

useieee.std_logic_1164.all;

entitybmis

port(a:

instd_logic_vector(3downto0);

    b:

outstd_logic_vector(6downto0));

end;

architectureoneofbmis

begin

b(6)<=a(3);

b(5)<=a

(2);

b(4)<=a

(1);

b(3)<=a(0);

b

(2)<=a(3)xora

(2)xora

(1);

b

(1)<=a(3)xora

(2)xora(0);

b(0)<=a(3)xora

(1)xora(0);

end;

(7,4)汉明码的译码程序:

libraryieee;

useieee.std_logic_1164.all;

entityymis

port(a:

instd_logic_vector(6downto0);

    s:

outstd_logic_vector(2downto0);

    b:

outstd_logic_vector(3downto0);

    c:

outstd_logic_vector(2downto0));

end;

architectureoneofymis

begin

process(a)

variabless:

std_logic_vector(2downto0);

variablebb:

std_logic_vector(6downto0);

begin

ss

(2):

=a(6)xora(5)xora(4)xora

(2);

ss

(1):

=a(6)xora(5)xora(3)xora

(1);

ss(0):

=a(6)xora(4)xora(3)xora(0);

bb:

=a;

ifss>"000"  then

casessis

when"001"=>bb(0):

=notbb(0);c<="000";

when"010"=>bb

(1):

=notbb

(1);c<="001";

when"100"=>bb

(2):

=notbb

(2);c<="010";

when"011"=>bb(3):

=notbb(3);c<="011";

when"101"=>bb(4):

=notbb(4);c<="100";

when"110"=>bb(5):

=notbb(5);c<="101";

when"111"=>bb(6):

=notbb(6);c<="110";

whenothers=>null;c<="111";

endcase;

elseb<=a(6)&a(5)&a(4)&a(3);

endif;

s<=ss;

b<=bb(6)&bb(5)&bb(4)&bb(3);

endprocess;

end;

四.编译结果及分析

编译结果:

图1

(7,4)汉明码的编码程序的仿真

在max+plusⅡ采用波形编辑器:

先建立一个仿真通道文件bm·scf,如下图示:

图二

编辑的wdf文件如图所示:

图三

编译结果如下:

图四

(7,4)汉明码的编码程序的编译和仿真分析

按照上述编码程序的编写思路,编写好程序,点击,进行编译,出现一些错误,列举如下:

图五

Error1表明在使用"std_logic_vector"时,没有打开可以使用这个函数的库,应该在程序的最前面加上如下语句:

libraryieee;

useieee.std_logic_1164.all;

图六

Error2:

vhdlsyntaxerror:

theendingsimplename“bm”mustmatchtheentityidentifier“ym”.

Error2表明程序中的文件名与保存时的文件名不一致,两者应该相同。

排除上述错误后,就可以进行波形仿真了。

如bm.wdf所示,当a3a2a1a0为0101时,b2b1b0为101,则整个输出码组为0101101。

对照表2,故编码正确。

得到的译码仿真图为:

 

图七

译码模块仿真图

由图可以看出,当错码位置C=6时,即a(6)有错码,校正子S正好为7,当S=0时无错。

当错码位置在C=5时,即a(5)有错码,校正子S正好为6.由此说明译码仿真正确。

仿真结果如下:

编译系统仿真图八

由仿真图可以看出:

B[3..0]的输出和datain[3..0]输入的一样,则此编译系统仿真正确。

 

五.参考文献

[1]樊昌信通信原理.(第6版)北京:

国防工业出版社,2006

[2]曹志刚现代通信原理.北京:

清华大学出版社,1992

[3]徐台松数字通信原理.北京:

电子工业出版社,1990

[4]王福昌通信原理.北京:

清华大学出版社,2006

[5]曹达仲移动通信原理、系统及技术.北京:

清华大学出版社,2004

[6]BarthJ.Radiationenvironment[J].IEEENSRECShortcourse,July,1997

 

心得体会:

要想理论和实际相结合,就必须努力完成好每一次课程设计,因为只有课程设计时大学期间最贴近工作的锻炼机会。

课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程。

在整个设计过程中,重点探讨了汉明码编译码CPLD的实现,并使用VHDL语言编制了程序,验证了算法的可行性,从而达到理论与实践的相融合。

从对汉明码的分析过程看,传输的准确性是靠牺牲速度来换取的,因为数据在传输过程中被分成了几次进行,且数码的位数越多,速度就越慢。

但其编译码方案都是由软件实现的,所以完全可以满足应用系统对速度的要求。

从分析过程以及仿真结果看,用硬件可编程语言VHDL进行数字系统的设计,可以提高数字系统的工作效率,降低消耗,保证系统的稳定性和可靠性。

通过这次课程设计,加强了动手、思考和解决问题的能力,学到了很多课内学不到的东西,比如独立思考解决问题,出现差错的随机应变等。

在设计过程中,对MAXPLUSⅡ软件进行了学习,学习了如何用VHDL语言编制程序。

通过对VHDL语言的学习,我了解到该编程语言对数字系统设计的重要性。

这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到过各种各样的问题,最后在老师的辛勤指导下,攻破了各种问题。

同时发现了自己对以前所学过的知识理解得不够深刻,这些更加激发我对通信原理这门课程的学习。

此次课程设计,多亏了老师的耐心帮助,在此向老师深表谢意。

 

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

当前位置:首页 > PPT模板 > 国外设计风格

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

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