《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于Atmega16的FEC设计与实现
基于Atmega16的FEC设计与实现
来源:微型机与应用2011年第8期
陈 鹏,李晓明
(大连海事大学 信息科学技术学院,辽宁 大连116026)
摘要: 基于AVR单片机Atmega16采用(12,8,4)汉明码和交织技术相结合的方法设计了一套FEC编解码方案,并在实际的工业环境中进行了测试。测试结果表明,经过FEC信道编码的通信系统可以有效地提高无线通信系统的可靠通信距离。
Abstract:
Key words :

摘  要: 基于AVR单片机Atmega16采用(12,8,4)汉明码交织技术相结合的方法设计了一套FEC编解码方案,并在实际的工业环境中进行了测试。测试结果表明,经过FEC信道编码的通信系统可以有效地提高无线通信系统的可靠通信距离
关键词: AVR单片机;汉明码;交织;FEC;通信距离

 对于工业级通信系统,监测数据与控制命令传输的准确性显得尤为重要。尤其是某些重要的监测数据(例如煤矿安全监控系统中的瓦斯监测数据等),原则上要求达到100%的准确率,但在实际通信中这是不可能做到的,通常只能要求误码率在10-6或更低,这就要求系统具有高效的纠错功能[1]。本文基于Atmel公司的MEGA系列高性能单片机Atmega16,通过采用(12,8,4)汉明码与交织技术相结合的方法实现了前向纠错编码(FEC)方案,并利用TI公司的CC1100芯片构建无线通信平台,在实际工业环境中进行了测试。在不加任何FEC编码的情况下,调制方式为GMSK,发射功率为-30 dBm,接收灵敏度为-105 dBm,通信波特率为9.6 kb/s,可靠通信距离为10 m;加入FEC编码方案,其他条件不变的情况下,可靠通信距离提高到12 m,可见经过FEC信道编码的通信系统可以有效提高无线信号可靠传输的距离。
1 汉明码与交织技术
    汉明码(Hamming Code)由Richard Hamming于1950年提出,它属于线性分组编码方式。设原代码的码长为k bit,附加纠错编码部分为r bit,当码字长度n=2r-1,r=n-k,r=1,2,…时就称这种线性分组码为汉明码[2-3]。其基本原理是将信息码元与监督码元通过线性方程式联系起来,每一个监督位被编在传输码字的特定比特位置上。系统对于错误的数位无论是原有信息位中的,还是附加监督位中的都能把它分离出来[4]。
    信息传输中,信道噪声干扰不仅使原代码的每一位可能出错,而且附加纠错位也可能出错,故具有“一个差错”的情况共有k+r种,加上“正确”状态共有k+r+1种状态,而r比特附加纠错位要能分辨这k+r+1种状态。
    对k位码字的汉明码进行编码,所需步骤如下:
    (1)确定最小的监督位数r,将它们记成D1,D2,…,Dr,每个监督位符合不同的奇偶测试规定;
    (2)原有信息和r个监督位一起编成长为r+k位的新码字,选择r监督位(0或1)以满足必要的奇偶条件;
    (3)对所接收的信息作所需的r个奇偶检查;
    (4)如果所有的奇偶检查结果均正确,则认为信息无误;如果发现有一个或多个错了,则错误的位由这些检查的结果来唯一地确定。
    汉明码是一种能纠一位错的线性分组码, 由于它的编译码简单,在数据通信和计算机存储系统中广泛应用。然而汉明码只能纠正一个错误,因此,为了使纠错码能更好地抵抗由噪声和干扰引起的突发错误,避免突发的长干扰或者深衰落,在实际应用中往往结合数据交织技术。交织技术是指一个数据序列在一一对应的条件下进行数据的位置重排过程。它可以使信道中的突发错误分散开来,将原来属于突发错误的信道改成独立的随机差错信道,从而充分发挥纠错编码的作用,交织技术实际上是一种信道改造技术。本文所采用的交织技术,其交织度达到400 bit。
2 通信系统平台设计
    本文采用ATmega16芯片与一款基于CC1100的无线模块构建无线通信系统的硬件平台,系统框图如图1所示。

    如图1所示,Atmega16通过串口RS232与CC1100无线模块进行数据交互,无线模块实现数据的透明传输。实现方案如图2所示。在发送端,Atmega16实现数据的打包,利用C语言实现FEC编码和数据的交织处理,并通过RS232发送到CC1100无线模块,然后经过GMSK调制方式经天线将信号发射出去;在接收端,经天线首先通过GMSK解调信号,然后对数据包进行解交织和FEC解码,然后进行数据解包。

 

 

3 FEC编码方案及测试
3.1 FEC编解码

    FEC接收端不仅能在收到的信码中发现错误,还能纠正错误。对于二进制系统,如果能够确定错码的位置,就能实现纠正。这种方法不需要反向信道(传递重发指令),也不会由于反复重发而延误时间,实时性很好。在使用FEC编码方式时,纠正的错误个数应根据具体情况而定。本文采用了(12,8,4)汉明码,能纠正一位错误。
    在发送方,根据式(1)的编码逻辑,可以将数据进行FEC编码:
  
    接收方将FEC编码接收进来,并根据式(2)的编码逻辑形成接收端的FEC编码,
    
    然后再对接收的数据进行FEC译码,译码表如表1所示。


3.2 交织方案
    考虑到实际的通信环境中会存在电火花等瞬间的强干扰,而且有时持续时间较长,因此在进行交织编码时采用较长的交织深度,这样能避免上述情况造成的不利影响。设计方案为:以400 B为一组,并对其进行FEC后得到200 B,再将这400+200=600 B进行交织并发送出去,如表2所示。


3.3 测试结果与分析
    为了验证FEC编码的实际效果,对该系统在某工厂车间内进行了测试。在未加任何FEC编码的情况下,调制方式为GMSK,发射功率为-30 dBm,接收灵敏度为-105 dBm,通信波特率为9.6 kb/s,可靠通信距离为10 m;加入FEC编码方案,其他条件不变的情况下,可靠通信距离提高到12 m,可见经过FEC信道编码的通信系统,可以有效地提高无线通信系统的可靠通信距离。
参考文献
[1] 阎英,刘伯红,张林.第二代数字广播电视系统前向纠错 编码硬件实现研究[J],电子技术应用,2009,35(10):74-77.
[2] SHU Lin,COSTELLO D J.差错控制编码[M].晏坚,何元智,潘亚汉,等译.北京:机械工业出版社,2007.
[3] 王新梅,肖国镇,纠错码—原理与方法[M].西安:西安电子科技大学出版社,1991.
[4] 甘家宝.汉明码校验原理解析[J].微型电脑应用,2007,23(1):58-64.

此内容为AET网站原创,未经授权禁止转载。