资源描述:
《fpga设计与应用(7,4)汉明编译码实验》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、HarbinInstituteofTechnology实验狼告课程名称:FPGA设计与应用实验题目:(7,4)汉明编译码实验院系:电子与信息工程学院班级:1005104姓名:原亚欣学号:1100500235实验时间:2013年11月哈尔滨工业大学(7,4)汉明编译码实验一、实验目的1、了解线性分组码的基本原理;2、掌握汉明码的编码和译码方法;3、掌握利用串口通信配合进行编解码测试的方法;二、实验准备2.1(7,4)汉明码的编译码基本原理一般來说,若汉明码长为n,信息位数为k,则监督位数r=n-k。若希槊用r个监督位构造出r个监督关系式
2、来指示一位错码的n种可能位置,则要求2r-i>n^2r->k+r+(1)下面以(7,4)汉明码为例说明原理:设汉明码(n,k)屮k=4,为了纠正一位错码,由式(1)可知,要求监督位数r彡3。若取r=3,则n=k+r=7。我们用。來表示这7个码元,用的值表示3个监督关系式屮的校正子,则的值与错误码元位置的对应关系可以规定如表1所列。A5^3错码位置错码位置001“0101a4010110a5100a2111a6011“3000无错码则由表1可得监督关系式:(2)(3)⑷5,=%㊉以5㊉fZ4㊉以2夕2=“6㊉“5㊉“3㊉53=a6㊉
3、“4㊉㊉以0在发送端编码吋,信息位力的值决定于输入信号,因此它们是随机的。监督位A、%、根裾信息位的取值按监督关系来确定,即监督位应使式(2)〜式(4)中&的值为0(表示编成的码组中应无错码)=“6㊉tz5㊉以4<6/,=®a5®a3a()=a6㊉“4㊉当数字信号编码成汉明码形式(木文屮即A)后在信道屮传输,由于信道屮噪声的干扰,可能由于干扰引入差错,使得接收端收到错码,因此在接收端进行汉明码纠错,以提高通信系统的抗干扰能力及可靠性。监督位计算结果序码字序码字号信息码元监督元号信息码元监督元0000000081000111100010
4、119100110()2()0101()11()101001()3001111011101100140100110121100001501011011311010106011001114111010()70111000151111111表2-12.2伴随式(校正子)S设发送码组,〃,,_2,...,〜%],在传输过程中可能发生误码。接收码组S=H,/V2,...,61,/U收发码组之差定义为错码行矩阵E,即B=A+EE=[en_x,en-1^1,其屮因此,若表示该接收码元无错;若=1,则表示该接收码元有错。♦S=B*Hr,成为伴随式。
5、卜*表是(7,4)汉明码的S与E的对应关系序错误Es号码位e6e5e4e3e2eleOs2siSO()0()000000001bO00000010012bl100000100103b200001001004b300010000115b400100001016b501000001107b61000000111表2-2三、源代码及测试结果libraryieee;useieee.std_logic_1164.all;useieee.stdjogic_unsigned.all;entityyyx_coderisport(elk:instdjo
6、gic;data_in:instd_logic_vector(3downto0);seg:outstd_logic_vector(7downto0);seg_select:outstd_logic_vector(3downto0));endyyx_coder;architectureoneofyyx_coderissignalclk_2:std_logic;signalcount:std_logic_vector(12downto0);signalseg_tmp:std_logic_vector(3downto0);signaldat
7、a_temp:std_logic_vector(3downto0);signaldata_temp2:std_logic_vector(7downto0);beginprocess(clk)beginifelk’eventandelk-Vthenifcount<25000thencount<=count+l;clk_2<=,0,;elsifcount<50000thencount<=count+l;clk_2<=,l,;elsecount<=(others=>,0,);clk_2<=,0,;endif;endif;endprocess
8、;process(clk)begindata_tcmp2(7downto4)<=data_in(3downto0);data_temp2(3)<=data_in(3)xordata_in(l)xordata一in(0);