基于Quartus II的74汉明码的编解码器的设计共13页.docx

上传人:b****8 文档编号:10858307 上传时间:2023-02-23 格式:DOCX 页数:15 大小:9.89MB
下载 相关 举报
基于Quartus II的74汉明码的编解码器的设计共13页.docx_第1页
第1页 / 共15页
基于Quartus II的74汉明码的编解码器的设计共13页.docx_第2页
第2页 / 共15页
基于Quartus II的74汉明码的编解码器的设计共13页.docx_第3页
第3页 / 共15页
基于Quartus II的74汉明码的编解码器的设计共13页.docx_第4页
第4页 / 共15页
基于Quartus II的74汉明码的编解码器的设计共13页.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

基于Quartus II的74汉明码的编解码器的设计共13页.docx

《基于Quartus II的74汉明码的编解码器的设计共13页.docx》由会员分享,可在线阅读,更多相关《基于Quartus II的74汉明码的编解码器的设计共13页.docx(15页珍藏版)》请在冰豆网上搜索。

基于Quartus II的74汉明码的编解码器的设计共13页.docx

基于QuartusII的74汉明码的编解码器的设计共13页

JIANGSUTEACHERSUNIVERSITYOFTECHNOLOGY

通信原理课程设计报告

 

 

课程设计题目(tímù):

基于(jīyú)QuartusII的(7,4)汉明码的编解码器的设计(shèjì)

班级:

学号:

姓名:

指导教师(jiàoshī)姓名:

钱志文任艳玲

设计地点:

 

目录(mùlù)

序言(xùyán)…………………………………………………………………………2

第一章软件(ruǎnjiàn)简介……………………………………………………3

第二章工作(gōngzuò)原理……………………………………………………4

第三章基于QuartusII的(7,4)汉明码的编解码器的设计的仿真实现

3.1仿真方案原理……………………………………5

3.2仿真的功能程序……………………………………6

3.3仿真的结果与分析………………………………7

参考文件…………………………………………………………………10

体会与建议………………………………………………………………10

附录…………………………………………………………………10

 

序言(xùyán)

汉明(Hamming)码是一种一种能够(nénggòu)纠正一位错码或检测两位错码的一种效率较高的线性分组码。

本次课程设计的任务就是利用EDA技术在QuartusII软件下用VHDL语言实现(7,4)汉明码的编译码的设计和仿真。

从而进一步加深对汉明码编译码原理的理解。

EDA(ElectronicDesignAutomation技术是随着集成电路和计算机技术飞速发展应运而生的一种高级、快速、有效的电子设计电动化工具。

目前,VHDL语言已经成为EDA的关键技术之一,VHDL是一种全方位的硬件描述语言,具有极强的描述能力(nénglì),能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计,支持结构、数据流、行为三种描述形式的混合描述,覆盖面广,抽象能力强,因此在实际应用中越来越广泛。

VHDL语言具有功能强大的语言结构,可用明确的代码描述复杂的控制逻辑设计,并且具有多层次的设计描述功能,支持设计库和可重复使用的原件的生成,近几十年来,EDA技术获得了飞速的发展,它以计算机为平台,根据硬件描述语言VHDL,自动地完成逻辑编译,化简为割、综合及优化,布局布线,仿真直至对特定目标芯片的适配编译,逻辑映射和编程下载等工作,以自顶向下的设计方法(fāngfǎ),使硬件设计软件化,拜托了传统手工设计的众多缺点,随着EDA技术的深入发展,基于硬件描述语言的方法将由取代传统手工设计方法的趋势。

 

一、QuartusII软件(ruǎnjiàn)简介

QuartusⅡ是Altera公司(ɡōnɡsī)推出的CPLD/FPGA的开发工具,QuartusⅡ提供了完全集成且与电路结构无关(wúguān)的开发环境,具有数字逻辑设计的全部特性。

 

   Quartus Ⅱ设计软件提供完整(wánzhěng)的多平台设计环境,可以很轻松地满足特定设计的需要。

它是可编程片上系统(SOPC)设计的综合性环境,拥有FPGA和CPLD设计的所有阶段的解决方案。

与其它EDA软件相比较QuartusⅡ软件的特点主要包括:

1、可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件。

2、芯片(电路)平面布局连线编辑。

3、LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块。

4、功能强大的逻辑综合工具。

5、完备的电路功能仿真与时序逻辑分析。

6、定时/时序分析与关键路径延时分析。

7、可使用SignalTapⅡ逻辑分析工具进行嵌入式的逻辑分析。

8、支持软件源文件的添加和创建,并将它们链接起来生成编程文件。

9、使用组合编译方式可一次完成整体设计流程。

10、自动定位编译错误。

11、高效的期间编程与验证工具。

12、可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件。

13、能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。

 

二、(7,4)汉明码的编解码器的工作(gōngzuò)原理

2.1汉明码的构造(gòuzào)原理

线性分组码是一类重要的纠错码,应用很广泛。

在(n,k)分组码中,若监督(jiāndū)码元是按线性关系模2相加而得到的,则称其为线性分组码。

现在以(7,4)分组码为例来说明线性分组码的特点。

设气码字为A=【a6,a5,a4,a3,a2,a1,a0】,前4位是信息元,后3位是监督元,可用下列(xiàliè)线性方程组来描述该分组码产生监督元:

显然,这3个方程式线性无关的。

代入上述公式可得(7,4)码的全部码组,如表1所示。

信息位

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

表1(7,4)汉明码的全部码组

由上表可知:

(7,4)汉明码的最小码距d0=3,它能纠正1位错或检2位错。

由此可见,汉明码是能够纠正单个错误(cuòwù)的线性分组码,其特点是:

最小码距d0=3,码长n与监督位r满足关系式:

2r-1>=n,说明上述所说(suǒshuō)的(7,4)线性分组码就是汉明码。

同时,由于码率k/n=(n-r)/n=1-r/n,故当n很大和r很小时,码率接近1,可见:

汉明码是一种高效码。

2.2校正(jiàozhèng)子(伴随式)S

校正子与错码位置(wèizhi)的关系,如表2所示

S1S2S3

错码位置

S1S2S3

错码位置

001

a0

101

a4

010

a1

110

a5

100

a2

111

a6

011

a3

000

无错

表2校正子与错码位置

由上表可知:

当S=001时,则出错在0位;

当S=010时,则出错在1位;

当S=100时,则出错在2位;

当S=011时,则出错在3位;

当S=101时,则出错在4位;

当S=110时,则出错在5位;

当S=111时,则出错在6位;

当S=000时,则无错。

2.3(7,4)汉明码的编解码器的工作原理

编码:

将输入的4位信息码编成7位汉明码,即加入3位监督位。

解码:

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

三、基于QuartusII的(7,4)汉明码的编解码器的设计的仿真实现

3.1仿真方案原理

编码器的设计流程图如下:

(7,4)汉明码的编码就是(jiùshì)将输入的四位信息码编成七位的汉明码,即加入三位监督位。

根据式A=[a6a5a4a3]·G可知,信息码与生成(shēnɡchénɡ)矩阵G的乘积就是编好以后的(7,4)汉明码,而生成矩阵G又是已知的,可以得出如下方程组a6=a6a5=a5a4=a4a3=a3a2=a6+a5+a4a1=a6+a5+a3a0=a6+a4+a3(此处‘+’即为异或),就可以(kěyǐ)编出编码程序了。

解码器的设计(shèjì)流程图如下:

Y

N

解码器算出校正(jiàozhèng)子S与(7,4)汉明码之间的关系:

S2=a6+a5+a4+a2;

S1=a6+a5+a3+a1;

S0=a6+a4+a3+a0;(此处‘+’为异或)

3.2仿真(fǎnɡzhēn)的功能程序 

编码器的主要功能(gōngnéng)程序介绍:

输入(shūrù)信息码a3a2a1a0,输出(7,4)汉明码b6b5b4b3b2b1b0。

 

首先,输入信息码a3a2a1a0,即使用以下语句:

port(a:

in std_logic_vector(3 downto 0);

监督位与信息码之间的对应关系,使用异或运算,即:

 

b

(2)<=a(3)xor a

(2) xor a

(1); 

b

(1)<=a(3) xor a

(2) xor a(0); 

b(0)<=a(3) xor a

(1) xor a(0); 

最后,将算好的监督位与原来输入的信息码一起输出,这样,编码程序就算完成了。

解码器的主要功能程序介绍:

首先,输入7位汉明码a6a5a4a3a2a1a0,用以下语句来实现:

port(a:

instd_logic_vector(6downto0);

然后,根据这7位码a6a5a4a3a2a1a0,计算校正子s2s1s0的值,校正子S与(7,4)汉明码各位之间的关系,即

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);

第三,要判定校正子与0的关系,使用if语句,若等于0,则表示没有错误;若不为0,则表示其中有一位出错。

可以得到校正子S与错码位置之间的关系,才用case语句,编写程序如下:

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";

上述程序中,bb是变量,存放的是输入7位汉明码a6a5a4a3a2a1a0,当S="001",时,表示a0出错,则只需将这一位的值取反,然后再送给(sònɡɡěi)输出。

a1、a2、a3、a4、a5、a6出错的原理也是一样的。

最后,将没有错误的(7,4)汉明码或已经纠正1个错误的(7,4)汉明码输出,这样译码程序就完成了。

为了方便阅读波形,加入输出了校正子S和错误位数C。

若第0位(a0)出错,则C输出0,依次类推;若无错,则输出7。

3.3仿真的结果(jiēguǒ)与分析

编码器:

建好波形文件,设置好输入信息码a3a2a1a0的初始值,点击(diǎnjī),进行波形仿真,出现如下波形:

图3-1编码器的仿真(fǎnɡzhēn)波形图

解码器:

(1)、如果按照表1中的(7,4)汉明码的全部码组来设计输出,此时全是正确的码组,得出下面的仿真波形图:

图3-2正确(zhèngquè)的解码器的仿真波形图

(2)、随便改一个错误的码,比如将正确(zhèngquè)的0000000改成0100000,此时得出以下的仿真波形图:

图3-3随便改一个(yīɡè)错误的码的仿真波形图

由上图可知,当输出为0100000时,根据(gēnjù)校正子S与错码位置的关系表2可得,a5出错,此时校正子为110。

(3)、将a6低电平设置成高电平,来检验校正子的错误码,其仿真波形图如下:

图3-4纠正(jiūzhèng)一位错误码的仿真波形图

由上图可知,a为输出7位汉明码,与表1不同的是,a6全部变成高电平,此时b纠正高四位(sìwèi)的汉明码,c为出错的位数,s为校正子。

参考(cānkǎo)文件

[1]《通信原理(yuánlǐ)》樊昌信、曹丽娜,国防工业出版社,2012

[2]《通信系统实验与设计指导书》电信学院通信原理课程组

[3]《VHDL硬件描述语言》辛春艳,国防工业出版社,2002

体会与建议

经历了为期1周的通信原理课程设计结束了,体会和收益颇多......

这次课程设计的题目是基于Quartusii的(7,4)汉明码的编解码器的设计,钱老师在分布题目的时候,就说出了这个题目的重要点与要注意的地方。

但是一开始还是有点手足无措,毕竟上学期的通信原理学得不是很好,还有以前的Quartus软件的VHDL语言也遗忘了许多,去网上和图书馆查阅了许多资料。

终于领会了(7,4)汉明码的编解码的原理,方法和本次课程设计需要实现的基于VHDL的汉明码的编解码方案。

同时,在设计的过程中,也遇到了许多问题,比如在解码的问题上,因为变量的增多,所以就显得更加难了。

但是在最后老师验收的时候,因为我是将编码和解码分开来设计的,而老师要求在一个程序中显示出来。

但由于时间限制,结果就没有继续探讨。

同时老师提出的加分题在纠错方面也没有设计出来。

希望以后可以多多改善,学习更多的知识。

附录(fùlù)

编码器源程序:

libraryieee;

useieee.std_logic_unsigned.all;

useieee.std_logic_1164.all;

entitybmis

port(a:

instd_logic_vector(3downto0);

b:

outstd_logic_vector(6downto0));

endbm;

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;

解码器源程序:

libraryieee;

useieee.std_logic_1164.all;

entityjmis

port(a:

instd_logic_vector(6downto0);

s:

outstd_logic_vector(2downto0);

b:

outstd_logic_vector(3downto0);

c:

outstd_logic_vector(2downto0));

end;

architectureoneofjmis

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)5

3.2仿真的功能程序

(2)6

3.3仿真的结果与分析

(3)6、定时/时序分析与关键路径延时分析

(4)7、可使用SignalTapⅡ逻辑分析工具进行嵌入式的逻辑分析

(5)现在以(7,4)分组码为例来说明线性分组码的特点

(6)end

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

当前位置:首页 > 小学教育 > 小升初

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

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