找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于Atmega16的FEC设计与实现

[复制链接]
admin 发表于 2013-3-21 10:36:03 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘  要: 基于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所示。
    20121107053308183292157.gif
       如图1所示,Atmega16通过串口RS232与CC1100无线模块进行数据交互,无线模块实现数据的透明传输。实现方案如图2所示。在发送端,Atmega16实现数据的打包,利用C语言实现FEC编码和数据的交织处理,并通过RS232发送到CC1100无线模块,然后经过GMSK调制方式经天线将信号发射出去;在接收端,经天线首先通过GMSK解调信号,然后对数据包进行解交织和FEC解码,然后进行数据解包。
    20121107053308198912158.gif
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-23 09:21 , Processed in 0.057525 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表