版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
/15(2.2.3)1011001H・AT=OT,可以用来作为判断接收码字A是否出错的依据。Ir]H=1101010=[P2.3生成矩阵G把监督方程补充完整并改写为矩阵形式TOC\o"1-5"\h\za61000a50100a40010a6(2.3.1)2.3.2)a3=0001•a5(2.3.1)2.3.2)a21110a4a11101a3a01011A=[a6a5a4a3]・G其中10001110100110G=0010101(2.3.3)G称为生成矩阵,由G和信息组就可以产生全部码字。生成矩阵也可以分成2部分,即G=[IkQ](2.3.4)其中111Q=110=PT(2.3.5)1010112.4伴随式(校正子)S设发送码组A二[an—l,an—2,…,al,aO],在传输过程中可能发生误码。接收码组B=[bn—l,bn—2,…,bl,bO],收发码组之差定义为错误图样E,即E=B-A(2.4.1)令S=BHT,称为伴随式或校正子。S=BHT=(A+E)HT=EHT(2.4.2)上述(7,4)汉明码的伴随式与错误图样的对应关系如表2-2所示。表2-2(7,4)汉明码S与E的对应关系错ES序误号码位e6e5e4e3e2ele0s2s1s00/00000000001b000000010012bl00000100103b200001001004b300010000115b400100001016b501000001107b61000000111第3章(7,4)汉明码编解码器的设计(7,4)汉明码的编码思路及程序设计(7,4)汉明码的编码思路(7,4)汉明码的编码就是将输入的四位信息码编成七位的汉明码,即加入三位监督位。根据式(2.3.2)A=[a6a5a4a3]・G可知,信息码与生成矩阵G的乘积就是编好以后的(7,4)汉明码,而生成矩阵G又是已知的,由式(2.3.3)得10001110100110G=0010101(3.1.1)0001011所以,可以得出如下方程组a6=a6a5=a5a4=a4a3a3(3.1.2)a2=a6+a5+a4a1=a6+a5+a3a0=a6+a4+a3根据式(3.1.2)就可以编出编码程序了。(7,4)汉明码的编码程序设计根据(7,4)汉明码的编码原理,首先画出程序设计的流程图图3.1编码流程图输入信息码a3a2ala0,输出亿4)汉明码b6b5b4b3b2blb0。首先,输入信息码a3a2ala0,即使用以下语句:port(a:instd_logic_vector(3downto0);然后,根据式(3.1.2),就可以得到监督位与信息码之间的对应关系,使用异或运算,即:TOC\o"1-5"\h\zb(2)<=a(3)xora(2)xora(1);b(1)<=a(3)xora(2)xora(0);b(0)<=a(3)xora(1)xora(0);最后,将算好的监督位与原来输入的信息码一起输出,这样,编码程序就算完成了。(7,4)汉明码的译码思路及程序设计(7,4)汉明码的译码思路
(7,4)汉明码的译码就是将输入的七位汉明码翻译成四位的信息码,并且纠正其中可能出现
的一个错误。
[IkQ],可以得到矩阵Q的值由于生成矩阵G[IkQ],可以得到矩阵Q的值PT(3.2.1)101011那么1110P1101(3.2.2)1011而监督矩阵H与PT又存在-定的关系,即H=[PIr](3.2.3)那么就可以算出监督矩阵H的值,即1110100H=1101010(3.2.4)1011001所以111110101HT=011(3.2.5)100010001根据式(2.4.2)S=BHT=(A.+E)HT=EHT可以看出校正子S:与错误图样E之间有确定的线性变换关系。而E=[en-l,en-2,…,el,eO]这样就可以算出校正子S与(7,4)汉
明码各位之间的关系,即S2=a2+a6+a5+a4
S1=a1+a6+a5+a3(3.2.6)S0=a0+a6+a4+a3对照表2-2,就可以确定每一位出错时,对应的校正子s2sls0的值。这样,译码问题就迎刃而解了。
(7,4)汉明码的译码程序设计根据(7,4)汉明码的译码原理,首先画出程序设计的流程图开始结束4校正子S2S1SQ为0开始结束4校正子S2S1SQ为0否"根瑕逋入的码,算出校正子:S2S1SQ+J根据S2S1S0,纠正岀错的位4输出4位信息码屮输入7位码4图3.2.1译码流程图首先,输入7位汉明码a6a5a4a3a2ala0,用以下语句来实现:port(a:instd_logic_vector(6downto0);然后,根据这7位码a6a5a4a3a2ala0,计算校正子s2sls0的值,根据式(3.2.6)可知校正子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,
则表示其中有一位出错。根据表2-2,可以得到校正子S与错误图样E之间的关系,才用
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位汉明码a6a5a4a3a2ala0,当S="001",时,表示a0出错,则只需将这一位的值取反,然后再送给输出。al、a2、a3、
a4、a5、a6出错的原理也是一样的。最后,将没有错误的(7,4)汉明码或已经纠正1个错误的(7,4)汉明码输出,这样译码程序
就完成了。为了方便阅读波形,加入输出了校正子S和错误位数C。若第0位(a0)出错,贝忆输出0,
依次类推;若无错,则输出7。第4章编译程序的调试与分析4.1(7,4)汉明码的编码程序调试与分析(7,4)汉明码的编码程序的编译
按照上述编码程序的编写思路,编写好程序,点击,进行编译,出现一些错误,如下:
Error1:VHDLerroratym.vhd(3):object"std_logic_vector"isusedbutnotdeclaredError2:VHDLerroratbm.vhd(7):entity"bm"isusedbutnotdeclaredError1表明在使用"std_logic_vector"时,没有打开可以使用这个函数的库,应该在程序
的最前面加上如下语句:libraryieee;useieee.std_logic_1164.all;Error2表明程序中的文件名与保存时的文件名不一致,两者应该相同。
排除上述错误后,就可以进行波形仿真了。(7,4)汉明码的编码程序的仿真分析建好波形文件,设置好输入信息码a3a2a1a0的初始值,点击,进行波形仿真,出现如下波
形:□G9MMIOL]r;□G9MMIOL]r;Li|i)!JIXflIi7TLcrtO]uLLOI~XO]]J.)]i~):'u[i^iy>IQUIIDOXfft'sbj)LLO&L叮冋n顾tiCWM11%宜冋00闪XTO而戈iHM旳谄工1L呻坤Q丈TTTTTm闽丽图4.1(7,4)汉明码的编码仿真波形从波形中,可以看出输入信息0000〜1111,对应的编码情况。对照表2-1,可以确定(7,4)汉明码的编码程序完全正确,编码成功。(7,4)汉明码的编译码程序分析及调试(7,4)汉明码的译码程序的编译
按照上述译码程序的编写思路,编写好程序,点击,进行编译,出现一些错误,如下:
Error1:VHDLsyntaxerroratym.vhd(12)neartext"variable";expecting"end",
or"(",oranidentifier("variable"isareservedkeyword),orasequential
statement,Error2:VHDLCaseStatementerroratym.vhd(19):CaseStatementchoicesmustcover
allpossiblevaluesofexpressionError1表明"variable"变量定义的位置有误。变量的定义一定要放在process(a)之后,
begin之前。Error2表明case语句使用有误。使用case语句时,必须列出它的所有可能值,或者列出
部分值,然后使用whenothers=>语句即可。
改正上述错误,就可以对其进行波形仿真了。(7,4)汉明码的译码程序的仿真分析
建好波形文件,设置好输入(7,4)汉明码a6a5a4a3a2a1a0的初始值,点击,进行波形仿真,
出现如下波形:图4.2(7,4)汉明码的译码仿真波形1由于设置的分别是aO、al、a2、a3、a4、a5、a6出错,从波形上就可以清楚的看出该程序
存在一定的问题,虽然没有语法错误,但存在着逻辑错误。由波形可知:aO出错时的校正子S为100,al出错时的校正子S为010,a2出错时的校正子S为001,a3出错时的校正子S为110,a4出错时的校正子S为101,a5出错时的校正子S为011,a6出错时的校正子S为111。而根据表2-2可知:a0出错时的校正子S为100,al出错时的校正子S为010,a2出错时的校正子S为100,a3出错时的校正子S为011,a4出错时的校正子S为101,a5出错时的校正子S为110,a6出错时的校正子S为111。由此可以推断是校正子S的高低位搞错了,仔细查看程序,发现的确是这个问题,改正后,
编译仿真的以下波形:C6UXX1JXOOCHOOiXXXQMdiLlOXdoooismuIuiin6lO3£:0x■JX■J■Xa■厂Q1.:010100OH11OL.J—LLOLWALlOlLaJ£■DOOILOLxIUKIJ]XObMOOO¥L0O1JMJa*DIMY-C»i]X1WT-"1I5X77.X7Jtyfl1-:!Xno¥HEYmor血iY1图4.3(7,4)汉明码的译码仿真波形2
对照表2-2,仔细观察波形,可以确定波形没有问题,这样,(7,4)汉明码的译码程序就完
全正确了,译码成功。参考文献辛春艳.VHDL硬件描述语言[M].北京:国防工业出版社,2002.侯伯亨,顾新.VHDL硬件描述语言与数字逻辑电路设计[M].西安:西安电子科技大学出版社,2002。金西.VHDL与复杂数字系统设计[M].西安:西安电子科技大学出版社,2003.
体会与建议为期一周的课程设计就这么结束了,忙碌而又辛劳,但是却让我学到了许多东西,为不久
的将来走上工作岗位打下了一定的基础。一开始老师给我们布置了题目——(7,4)汉明码的编解码器的设计。拿到题目,我们非常着
急,以为这个题目很难,象一只没头的苍蝇,我们开始乱钻,最后,一头扎进了图书馆,
借了好几本书。来仔细的翻看了通信原理的书和笔记,对(7,4)汉明码的一些基本概念有了
进一步的会议。突然发现这个课题其实一点也不难,一点技术含量都没有,似乎一个人也
可以完成的。仔细阅读了(7,4)汉明码的原理以后,我就开始构思程序的编写,准备画流程
图。其实编译码的思路非常清晰,流程图很快就画好了。接下来就是程序的编写,由于好
久没有使用VHDL语言,有好多语句都遗忘了,于是翻出以前EDA的书和笔记,认真的看了
几遍,对一些语句的用法和使用时的注意事项有了一个大概的了解。然后就开始编程序。
编码程序比较简单,只有十几行,仅半个小时,编码程序就编好了,并且运行正确了,是
心里就踏实了很多。接下来的译码程序也比较简单,半小时就编好了程序,但是却遇到了
一个问题——编译没有错误,但是仿真波形却不对,很郁闷,很疑惑,找了半天也没有发
现问题。后来仔细的观察了仿真波形,才发现问题所在——校正子的高低位弄错了。一周的课程设计结束了,让我收益颇丰。通过这次的课程设计,我对VHDL语言有了新的认识,掌握了用VHDL语言编程的方法,并且能够熟练的运用它去编写各种各样的程序,它为以后能够从事这方面的工作提供了一定的基础。在掌握VHDL语言的基础上,进一步理解了汉明码的编解码原理以及一些重要的公式。最后,我想提一点建议,希望老师以后可以尽可能的让我们一人一组。题目虽然有些难度
但是可以更好的锻炼自己,充分发挥个人潜能,同时也杜绝了一些同学光看别人做,等着
别人的成果,到时再熟悉程序就可以蒙混过关的现象。附录汉明码的编码程序:libraryieee;useieee.std_logic_1164.all;entitybmisport(a:instd_logic_vector(3downto0);b°utstd_logic_vector(6downto0));end;architectureoneofbmisbeginb(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;
entityymisport(a:instd_logic_vector(6downto0);舒1sutstd_logic_vector(2downto0);£IbJ'utstd_logic_vector(3downto0);cuts
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年9月小学生开学收心教育主题课件:收心聚力重新出发
- 围手术期患者管理规范
- 工程施工应急处置综合应急预案
- 临终关怀呼吸困难护理查房
- 2026年工会知识竞赛题库(含答案)
- 有限空间应急救援安全技术交底
- 2026年秋季四年级数学上册第一单元测试卷(人教版大数的认识含完整答案)
- 医院感染管理知识考核试题及答案
- (正式版)DB13∕T 1210-2010 《禽类屠宰检疫技术规范》
- 2025-2026年北师大版高三数学第八章概率与统计练习题
- 2026年贵阳市中考历史试题(含答案及解析)
- 2026广西-东盟食品检验检测中心招聘编制外食品安全检查员22人考试备考试题及答案详解
- 某集团公司并购重组方案
- 2026年江苏惠隆资产管理公司 招聘试题及答案
- 26秋六年级上册数学入学检测卷《人教版》
- 新苏教版科学六年级上册1.2《燃烧与空气》教学设计
- 2026年一级建造师《建设工程经济》考前必背十页纸
- 2026年春人教版小学六年级数学上册第2单元《分数乘法》完整教案
- 小学盲校英语三年级上册《Unit 3 This is my father》教学设计
- 新教科版五上科学学科教学计划-2026秋
- 2026年食品企业食品安全管理人员知识试题及答案
评论
0/150
提交评论