基于QuartusII的74汉明码的编解码器的设计Word格式.docx
- 文档编号:20310681
- 上传时间:2023-01-21
- 格式:DOCX
- 页数:12
- 大小:248.84KB
基于QuartusII的74汉明码的编解码器的设计Word格式.docx
《基于QuartusII的74汉明码的编解码器的设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于QuartusII的74汉明码的编解码器的设计Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
QuartusⅡ是Altera公司推出的CPLD/FPGA的开发工具,QuartusⅡ提供了完全集成且与电路构造无关的开发环境,具有数字逻辑设计的全部特性。
Quartus
Ⅱ设计软件提供完整的多平台设计环境,可以很轻松地满足特定设计的需要。
它是可编程片上系统(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〕汉明码的编解码器的工作原理
2.1汉明码的构造原理
线性分组码是一类重要的纠错码,应用很广泛。
在〔n,k〕分组码中,假设监视码元是按线性关系模2相加而得到的,那么称其为线性分组码。
现在以〔7,4〕分组码为例来说明线性分组码的特点。
设气码字为A=【a6,a5,a4,a3,a2,a1,a0】,前4位是信息元,后3位是监视元,可用以下线性方程组来描述该分组码产生监视元:
显然,这3个方程式线性无关的。
代入上述公式可得〔7,4〕码的全部码组,如表1所示。
信息位
a6a5a4a3
监视位
a2a1a0
0000
000
1000
111
0001
011
1001
100
0010
101
1010
010
0011
110
1011
001
0100
1100
0101
1101
0110
1110
0111
1111
表1〔7,4〕汉明码的全部码组
由上表可知:
〔7,4〕汉明码的最小码距d0=3,它能纠正1位错或检2位错。
由此可见,汉明码是能够纠正单个错误的线性分组码,其特点是:
最小码距d0=3,码长n与监视位r满足关系式:
2r-1>
=n,说明上述所说的〔7,4〕线性分组码就是汉明码。
同时,由于码率k/n=(n-r)/n=1-r/n,故当n很大和r很小时,码率接近1,可见:
汉明码是一种高效码。
2.2校正子〔伴随式〕S
校正子与错码位置的关系,如表2所示
S1S2S3
错码位置
a0
a4
a1
a5
a2
a6
a3
无错
表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)汉明码的编码就是将输入的四位信息码编成七位的汉明码,即参加三位监视位。
根据式A=[a6a5a4a3]·
G可知,信息码与生成矩阵G的乘积就是编好以后的(7,4)汉明码,而生成矩阵G又是的,可以得出如下方程组a6=a6a5=a5a4=a4a3=a3a2=a6+a5+a4a1=a6+a5+a3a0=a6+a4+a3〔此处‘+’即为异或〕,就可以编出编码程序了。
解码器的设计流程图如下:
Y
N
解码器算出校正子S与〔7,4〕汉明码之间的关系:
S2=a6+a5+a4+a2;
S1=a6+a5+a3+a1;
S0=a6+a4+a3+a0;
(此处‘+’为异或)
3.2仿真的功能程序
编码器的主要功能程序介绍:
输入信息码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)
a(0);
b(0)<
a
(1)
最后,将算好的监视位与原来输入的信息码一起输出,这样,编码程序就算完成了。
解码器的主要功能程序介绍:
首先,输入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"
;
010"
bb
(1):
=notbb
(1);
100"
bb
(2):
=notbb
(2);
011"
bb(3):
=notbb(3);
101"
bb(4):
=notbb(4);
110"
bb(5):
=notbb(5);
111"
bb(6):
=notbb(6);
上述程序中,bb是变量,存放的是输入7位汉明码a6a5a4a3a2a1a0,当S="
,时,表示a0出错,那么只需将这一位的值取反,然后再送给输出。
a1、a2、a3、a4、a5、a6出错的原理也是一样的。
最后,将没有错误的(7,4)汉明码或已经纠正1个错误的(7,4)汉明码输出,这样译码程序就完成了。
为了方便阅读波形,参加输出了校正子S和错误位数C。
假设第0位〔a0〕出错,那么C输出0,依次类推;
假设无错,那么输出7。
3.3仿真的结果与分析
编码器:
建好波形文件,设置好输入信息码a3a2a1a0的初始值,点击,进展波形仿真,出现如下波形:
图3-1编码器的仿真波形图
解码器:
〔1〕、如果按照表1中的〔7,4〕汉明码的全部码组来设计输出,此时全是正确的码组,得出下面的仿真波形图:
图3-2正确的解码器的仿真波形图
(2)、随便改一个错误的码,比方将正确的0000000改成0100000,此时得出以下的仿真波形图:
图3-3随便改一个错误的码的仿真波形图
由上图可知,当输出为0100000时,根据校正子S与错码位置的关系表2可得,a5出错,此时校正子为110。
(3)、将a6低电平设置成高电平,来检验校正子的错误码,其仿真波形图如下:
图3-4纠正一位错误码的仿真波形图
由上图可知,a为输出7位汉明码,与表1不同的是,a6全部变成高电平,此时b纠正高四位的汉明码,c为出错的位数,s为校正子。
参考文件
[1]?
通信原理?
樊昌信、丽娜,国防工业,2021
[2]?
通信系统实验与设计指导书?
电信学院通信原理课程组
[3]?
VHDL硬件描述语言?
辛春艳,国防工业,2002
体会与建议
经历了为期1周的通信原理课程设计完毕了,体会和收益颇多......
这次课程设计的题目是基于Quartusii的〔7,4〕汉明码的编解码器的设计,钱教师在分布题目的时候,就说出了这个题目的重要点与要注意的地方。
但是一开场还是有点手足无措,毕竟上学期的通信原理学得不是很好,还有以前的Quartus软件的VHDL语言也遗忘了许多,去网上和图书馆查阅了许多资料。
终于领会了〔7,4〕汉明码的编解码的原理,方法和本次课程设计需要实现的基于VHDL的汉明码的编解码方案。
同时,在设计的过程中,也遇到了许多问题,比方在解码的问题上,因为变量的增多,所以就显得更加难了。
但是在最后教师验收的时候,因为我是将编码和解码分开来设计的,而教师要求在一个程序中显示出来。
但由于时间限制,结果就没有继续探讨。
同时教师提出的加分题在纠错方面也没有设计出来。
希望以后可以多多改善,学习更多的知识。
附录
编码器源程序:
libraryieee;
useieee.std_logic_unsigned.all;
useieee.std_logic_1164.all;
entitybmis
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);
=a(3)xora
(2)xora
(1);
=a(3)xora
(2)xora(0);
=a(3)xora
(1)xora(0);
end;
解码器源程序:
entityjmis
s:
outstd_logic_vector(2downto0);
b:
outstd_logic_vector(3downto0);
c:
outstd_logic_vector(2downto0));
architectureoneofjmis
process(a)
variabless:
std_logic_vector(2downto0);
variablebb:
std_logic_vector(6downto0);
begin
bb:
=a;
ifss>
"
then
casessis
=notbb(0);
=notbb
(1);
whenothers=>
null;
endcase;
elseb<
=a(6)&
a(5)&
a(4)&
a(3);
endif;
s<
=ss;
b<
=bb(6)&
bb(5)&
bb(4)&
bb(3);
endprocess;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 QuartusII 74 汉明码 编解码器 设计