基于Atmega16的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所示。

继续阅读
基于Atmega16的电流采样电路设计

文中研制了一套模拟并网发电系统,实现了频率跟踪、最大功率跟踪、相位跟踪、输入欠压保护、输出过流保护、反孤岛效应等功能

AVR中断优先级

AVR单片机在同一个优先级中,中断向量入口地址越低,其优先级越高。AVR单片机在响应中断以后,会禁止系统响应其余中断。如果程序需要在某个中断服务程序中响应其它中断事件,可以在该中断服务程序中用SEI指令或_SEI()(IAR)、 SEI()(ICCAVR)重新使能全局中断即可。否则,AVR单片机只有在退出中断进程时,才重新使能全局中断。

基于ATmega16单片机的简易多通道虚拟示波器的设计

虚拟仪器是基于PC技术发展起来的,所以完全"继承"了以现成即用的PC技术为主导的最新商业技术的优点,包括功能超卓的处理器和文件I/O,使在数据导入磁盘的同时就能实时地进行复杂的分析。为了实时、准确地测量输入波形的参数,本文采用自带8路10位ADC的单片机ATmega16,结合简单的外围电路,即可将输入波形实时传送给PC机进行处理。

便携式生命体征动态监测仪设计

生命体征监测仪是医院不可缺少的重要设备,它实时、连续、长时间地监测病人的重要医学生理参数,并将获得的数据传送给医护人员,以供医护人员进行分析,使得医护人员能够对病人当前的状态做出正确判断,从而做出正确的处理。

基于单片机的智能学习型红外空调遥控器

为了解决空调遥控器不兼容问题,设计了一款基于Atmega16单片机的智能空调遥控器。该遥控器采用测量脉冲宽度的方法学习红外信号,同时使用游程编码算法对数据进行压缩后存储,并利用单片机内部定时器PWM模式产生红外载波,成功实现了对红外遥控的学习与再现,并可通过上位机进行控制。

©2019 Microchip Corporation
facebook google plus twitter linkedin youku weibo rss