DMR制式对讲机循环冗余校验基础知识
一、
循环冗余校验CRC(Cyclie Redundancy Check)是DMR的缩短循环码,是广泛应用的检错编码。作为纠错码,它有很多优点:他的编码效率很高,当码长较长时,他的编码效率接近1;编码和解码都很简单,容易实现:检错性能优良,以很小的冗余度可以检查多种错误。CRC的编解码非常简单,具体思路如下:编码过程中用生成多项式g(z)去除码字多项式c(x),将得到的余数多项式加在码字后面发送出去。解码时,接收方将接受到的码字多项式,(z)用生成多项式g(z)去除,如果正好整除,就认为接收码字无误,这时只要将接收码字的冗余去除,就能到正确的接收码字。如果不能整除,说明接收码字肯定存在错误,完成检错。由于CRC只能用于检错,所以通常用在具有ARQ方式的DMR对讲机,可以说几乎所有具备ARQ方式的DMR对讲机通信系统都应用了CRC编码, 手机系统中的CDMA2000和WCDMA中都将CRC当做最主要的检错手段之一。
二、
DMR制式应用了大量的CRC编码用于检错,有CRC8、CRC9、CRC.CCITT和CRC32。他们用于各种帧结构中,与BPTC等编码相结合,可以很好的实现检错。鉴于CRC只能检错,对于实时性要求很高的语音通信用处不大,而对于数据传输却能提供很好的检错重传机制。因此协议中的涉及ARQ方式的数据都无一例外的采用了CRC编码。
三、
DMR对讲机中的CRC软件实现的方法主要有两种,一种是直接计算,即按照CRC的计算原理,用生成多项式一位位除原始数据就可以计算出所需要的校验位,这样做的优点是占用内存小,缺点是占用运算量大,耗用时间长。以CRCl6.为例,直接计算就是在原始数据后面补16个0,然后从最高位用CRC多项式除,假设原始数据长L位,这样需要进行(以最坏情况为例)L次除法。另外一种方法是查表计算法,即事先计算出固定长度的数据的CRC校验码,储存在CRC余数表中,然后通过不断移位查表就可以得到相应的CRC值,每次移动的位数由以实现选取的固定长度决定。这样做的优点是运算量降低,但是占用系统内存较大。同样以CRCl6为例,选取生成表的固定长度为l字节,假设原始数据同样为L(是l字节的整数倍,不足补零),计算时我们从数据最高字节查表获取8位CRC余数,然后与原始数据左移1字节的数据最高16位(不足补零)异或获得新的数据继续查表运算,直到移位完所有字节即可得到CRC校验位,这样做的运算量是I_/8次除法运算即可(查表的开销很小)。如果我们开始选取的生成CRC余数表的长度为2字节,就只需要L/16次除法即可,当然构成的余数表也会变得庞大。本文中我们采用查表法进行CRC编码,因为随着Flash存储器制造技术的提高,其成本已经大大降低,使得现代嵌入式芯片都有很大的存储空间,CRC余数表并不会成为对讲机的负担,可是它却可以大大提高系统的运行效率。
上一篇:DMR数字对讲机的两种设计方案简介
下一篇:建伍KENWOOD-TK-3118/2118手动调频方法