虚拟美国手机号接收验证码码320/64张

捷配欢迎您!
微信扫一扫关注我们
当前位置:&>>&&>>&&>>&CRC在TMS320C64x+DSP上的高效实现
  摘 要: 介绍循环冗余校验CRC在TMS320C64x+系列上的软件实现。 给出了该实现方法的理论推导过程并提供了相应的软件实现代码。
  1 CRC常规实现方法
  CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。
  GCRC16(X)=X16+X12+X5+1
  CRC通常由硬件实现,图1说明由硬件移位寄存器实现的PP CRC16。
  图1中,表示异或(XOR)运算, 异或运算在移位寄存器中的位置与生成多项式相对应。CRC运算前,移位寄存器清零,随后数据位被移入寄存器,寄存器的值即为CRC码。
  发送端将CRC码附在原始数据后发送;接收端用同样的方法为接收到的原始数据生成CRC码,并且与接收到的CRC码比较。如果不一致,则说明接收到的数据出错。
  CRC校验也可由软件实现,它比硬件实现灵活,但不如硬件实现效率高。假设变量crc代表移位寄存器的值,CRC16 软件实现的伪代码为:
  while(data_len--)
  crc=(crc《1)
  if (((input bit)(bit shifted out))==1)
  crc=crc0x1021&&&&&&&&&& //0x1021 represents X12+X5+1
  else if (((input bit)(bit shifted out))==0)
  crc=crc0//this can be removed since it is meaningless
  以上软件实现效率不高,主要是因为数据被逐个位处理,每次循环只能处理一位。一种常见的改进的软件实现方法可以每次循环处理一个字节,但它需要一个查找表。在查找表中保存所有的8位数据的CRC运算结果,因为8位数据有256个,所以查找表的长度为256。下面是生成查找表的伪代码:利用CRC进行检错的过程可简单描述为:在发送端根据要传送的k位二进制码序列,以一定的规则产生一个校验用的r位监督码(CRC码),附在原始信息后边,构成一个新的二进制码序列数共k+r位,然后发送出去。在接收端,根据信息码和CRC码之间所遵循的规则进行检验,以确定传送中是否出错。这个规则,在差错控制理论中称为“生成多项式”。
  for(i=0;i&256;i++)
  crc_lut[i]=crc_value_for_one_byte(i);//generate CRC for one byte
  用查找表方法实现的CRC16的代码如下:
  Uint16 crc16_lut(Uint8*data_prt,Int32 data_len,Uint16*crc_lut)
  Uint8 crc_shift_out;
  Uint16 crc=0;
  while(data_len--)
  crc_shift_out=(Uint8) (crc》8);//higher 8 bit of previous crc are shifted out
  crc=(crc《8)^crc_lut[crc_shift_out^(*data_prt++)];
  return(crc);
  这个处理过程可被理解为:
  (1)计算移位寄存器在8个时钟周期中的输入:(crc_shift_out^*data_prt++);
  (2)查找这个输入字节对应的CRC码:crc_lut[crc_shift_out^*data_prt++];
  (3)把新输入数据的CRC码加到原有的CRC值上:(crc《8)^crc_lut[crc_shift_out^*data_prt++]。
  在TMS320C64x DSP上,如果用这种方法实现CRC校验,每次循环大概需9个DSP时钟周期。而在TMS320C64x+DSP上新增了与CRC运算相关的Galois域乘法运算指令,使得每次循环仅需约1个DSP时钟周期。
  2 C64x+DSP的Galois域乘法指令
  C64x+DSP系列是TI最新的高性能DSP系列,它有8个并行的运算单元,速度高达到1GHz。C64x+ DSP 提供了新的与CRC运算相关的Galois域乘法指令和寄存器,可在两个乘法单元M1、M2中并行执行。
  C64x+DSP是一种独特的,是以数字信号来处理大量信息的器件。其工作原理是接收模拟信号,转换为0或1的数字信号。再对数字信号进行修改、删除、强化,并在其他系统芯片中把数字数据解译回模拟数据或实际环境格式。它不仅具有可编程性,而且其实时运行速度可达每秒数以千万条复杂指令程序,远远超过通用微处理器,是数字化世界中日益重要的芯片。它的强大数据处理能力和高运行速度,是最值得称道的两大特色。
  (1)GMPY:Galois域(32bit)(9bit),寄存器GPLYA存放用于M1运算单元的多项式,寄存器GPLYB存放用于M2运算单元的多项式;
  (2)XORMPY:多项式为0的Galois域(32bit)(9bit);
  (3)GMPY4:同时执行4个Galois域(8bit)(8bit),M1和M2运算单元共用存放多项式的GFPGFR寄存器。
  注:表示Galois域乘法。
  M1和M2可以并行执行,所以,C64x+每个时钟周期可执行2个(32bit)(9bit)的GMPY或XORGMPY指令,或执行8个(8bit)(8bit)的GMPY指令。
  下面是C64x+GMPY指令的等效C代码:
  //32bits src1 multiply 9bit src2 with 32bit polynomial
  uint GMPY(uint src1,uint src2,uint polynomial)
  uint pp;
  uint mask,tpp;
  uint i;
  pp=0;
  mask=0x;//multiply by computing partial products.
  for (i=0;i&8;i++){
  if (src2 & mask) pp^=src1;
  mask》=1;
  tpp=pp《1;
  if(pp & 0x) pp=polynomial^tpp;
  else pp=tpp;
  if (src2 & 0x1) pp^=src1;
  return(pp);//leave it asserted left.
  请注意,这里的GMPY指令所用的多项式是GF(232)原多项式的低32位。例如:
  G(X)CRC32=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X1+1
  用二进制数表示为:1 00 01 x1 04c1 1db7,则GMPY多项式寄存器的值应该是0x04c11db7,没有必要包含最高位,因为它始终为1。GMPY所用的多项式必须是GF(232)域多项式,对于非GF域的多项式,必须被左移得到32阶的多项式,并左移操作数src1,使它也是32阶,然后用GMPY指令运算,结果需右移同样的位数,从而得到最终结果。
  例如:Galois域G(X)=X8+X6+X5+X3+1()上的二进制数()(100)可以用以下方法计算:
  GMPY(()《24,(100),()《24)》24
  3 CRC在C64x+DSP上的高效实现
  比较CRC的软件实现代码和GMPY指令的等效C语言代码可以看出,一个字节的CRC码可以用GMPY指令计算为GMPY(polynomial, data_byte, polynomial)。
  用GMPY实现的CRC代码为:
  Uint32 crc_gmpy(Uint8*data_ptr,Int32 data_len_of_byte,Uint32 polynomial)
  //data_ptr is data pointer,data_len_of_byte is the data
  Int32 i;
  Uint32 crc32=0;
  GPLYA=polynomial;
  GPLYB=polynomial;
  for(i=0;i&&&&& {
  crc32=_gmpy(crc32,0x100)^_gmpy(polynomial,(*data_ptr++));
  return(crc32);
  以上代码中的“_gmpy”代表GMPY指令,用户按C语言函数调用的方式使用它,但DSP编译器会把它编译成一条GMPY指令,而不是一个函数调用。所有的C6000系列DSP指令都可以在C语音中按这种方式使用。
  以上代码在C64x+上执行,每次循环需要大约6个时钟周期,它比查找表方法效率高,而且不需要查找表,这对于受限的应用来说非常合适。上该方法使用的查找表可以由以下代码生成:
  crc_lut[0]=polynomial;
  for(k=1;k&&&&&&&& crc_lut[k]=_gmpy(crc_lut[k-1],0x100));//polynomialx8
  这种CRC的计算方法可用以下伪代码表示:
  Index=length_of_byte-1;
  for(k=0;k&&&&&&&& crc=crc^_gmpy(crc_lut[Index--],data_byte[k]));
  为了更充分地利用C64x+ DSP并行流水式处理的能力,并减少查找表的长度,可以进一步对以上计算进行优化,每次循环处理32bit。相应的查找表长度减少为原来的1/4。查找表的生成代码如下:
  crc_lut[0]=polynomial;
  for(k=1;k&&&&&&& crc_lut[k]=_gmpy(_gmpy(_gmpy(_gmpy(crc_lut[k-1],0x100),0x100),0x100),0x100);//polynomialx32
  该方法的CRC计算可用以下伪代码表示:
  Index=length_of_word-1;
  for(j=0;j&&& {
  LutXn=crc_lut[Index--];
  crc0=crc0^_gmpy(LutXn,data_byte[4*j]);
  crc1=crc1^_gmpy(LutXn,data_byte[4*j+1]);
  crc2=crc2^_gmpy(LutXn,data_byte[4*j+2]);
  crc3=crc3^_gmpy(LutXn,data_byte[4*j+3]);
  //crc0x24
  crc0=_gmpy(crc0,0x100);
  crc0=_gmpy(crc0,0x100);
  crc0=_gmpy(crc0,0x100);
  //crc1x16
  crc1= _gmpy(crc1, 0x100);
  crc1= _gmpy(crc1, 0x100);
  //crc2x8
  crc2=_gmpy(crc2,0x100);
  crc=crc0^crc1^crc2^crc3;
  上述基于GMPY和查找表的CRC优化实现,每次循环约需4个时钟周期,而一次循环处理4字节,所以每个字节的处理仅需约一个时钟周期。
  CRC是常用的检错机制,表1总结了几种CRC的软件实现方法在C64x+DSP上执行的效率。
  通过表1可以看出,在C64x+DSP上利用Galois域乘法指令极大地提高了CRC运算的效率。&&来源:
技术资料出处:冯华亮
该文章仅供学习参考使用,版权归作者所有。
因本网站内容较多,未能及时联系上的作者,请按本网站显示的方式与我们联系。
【】【】【】【】
上一篇:下一篇:
本文已有(0)篇评论
发表技术资料评论,请使用文明用语
字符数不能超过255
暂且没有评论!
12345678910
12345678910
12345678910
12345678910
随着电子技术和计算机技术的迅猛发展,国内开展先进飞机配电系统研究的技术手段已比国外八十年代好得多, 对固态功控系统研究,就是基于目前飞机配电系统的发展应运而生的,目前市场上的均为单开关结构,最近多开关的SSPC组已经处于研发之中,SSPC组共享大规模控制芯片,可进一步提高功...[][][][][][][][][][]
IC热门型号手机签到经验翻倍!快来扫一扫!
《华语经典老歌180首大合集3CD》[320K/MP3][不精不选爱不释手]
2034浏览 / 32回复
专辑名称:华语经典老歌180首大合集3CD专辑艺人:群星资源格式:320K/专辑简介:老歌如酒自是经典不褪色,陪伴我们一起走过昨天,今天,明天,必将默默的延续永不消失....(感谢原创收集制作这么好的经典,喜欢老歌的朋友万千不要错过啊)专辑目录:CD101 明天是否依然爱我(童安格).mp301 驿动的心(姜育恒).mp302 执着(田震).mp302 橄榄树(齐豫).mp303 光辉岁月(Beyond).mp303 爱的代价(张艾嘉).mp304 大约在冬季(齐秦).mp305 爱情故事(方季惟).mp305 那些花儿(范玮琪).mp306 新不了情(万芳).mp306 梅花三弄(姜育恒).mp307 囚鸟(彭羚).mp307 遇见(孙燕姿).mp308 白鸽(伍佰).mp308 蒙娜丽莎的眼泪(林志炫).mp309 单身情歌(林志炫).mp309 爱我久久(阿牛).mp310 真的爱你(别安).mp310 逍遥叹(胡歌).mp311 你知道我在等你吗(张洪量).mp312 一无所有(崔健).mp312 哭砂(黄鸳鸯).mp313 一场一场梦(王杰).mp313 明天你是否依然爱我(童安格).mp314 失恋日记(水木年华).mp314 梦醒时分(陈淑华).mp315 一样的月光(苏芮).mp315 伤痕(林忆莲).mp316 我可以抱你吗(张惠妹).mp316 男儿当自强(林子祥).mp317 三萬英尺(迪克牛仔).mp317 只要你过得比我好(钟镇涛).mp318 无情的雨无情的你(齐秦).mp318 让我一次爱个够(庾澄庆).mp319 爱如潮水(张信哲).mp320 谢谢你的爱(刘德华).mp321 生日礼物(江涛).mp322 暖暖(梁静茹).mp322 独角戏(许茹芸).mp323 暧昧(侯湘婷).mp323 浪人情歌(伍佰).mp324 你怎么舍得我难过(黄品源).mp324 背包(苏有朋).mp325 当爱情经过的时候(童丽).mp325 用心良苦(张宇).mp326 今夜你会不会来(黎明).mp328 没有情人的情人节(孟庭苇).mp329 思念谁(韩红).mp329 我是不是该安静的走开(郭富城).mp330 千千阙歌(陈慧娴).mp331 一千零一个愿望(4 IN LOVE).mp332 第一次(光良).mp333 又见炊烟(邓丽君).mp333 爱一个人好难(苏永康).mp334 寂寞难耐(李宗盛).mp334 流年(王菲).mp337 挥着翅膀的女孩(容祖儿).mp337 记事本(陈慧琳).mp338 你看你看月亮的脸(孟庭苇).mp338 盛夏的果实(莫文蔚).mp3CD2:39 宁夏(梁静茹).mp339 黄昏(小刚).mp340 天黑(阿杜).mp340 陪我看日出(蔡淳佳).mp341 最浪漫的事(赵咏华).mp341 爱就爱了(陈琳).mp342 不再犹豫(Beyond).mp342 无所谓(杨坤).mp343 一起走过的日子(刘德华).mp343 传奇(李健).mp344 我想有个家(潘美辰).mp344 爱上一个不回家的人(林忆莲).mp345 把悲伤留给自己(陈升).mp346 你看你看月亮的脸(孟庭韦).mp347 我的未来不是梦(张雨生).mp347 跟往事干杯(男女合唱).mp348 别问我是谁(王磬平).mp349 特别的爱给特别的你(五思凯).mp350 一生有你(水木年华).mp350 风中的承诺(李翊君).mp351 让我欢喜让我忧(周华健).mp352 999朵玫瑰(邰正宵).mp353 往事随风(齐秦).mp354 寂寞在唱歌(阿桑).mp354 那一场风花雪月的故事(周治平).mp355 三万英尺(迪克牛仔).mp355 风花(陈妃平).mp356 无情的情书(动力火车).mp356 说谎的爱人(王杰).mp357 原来你什么都不想要(张惠妹).mp357 铁血丹心(罗文甄妮).mp358 不是我不小心(张镐哲).mp358 美丽心情(本多RuRu).mp359 一天一点爱恋(梁朝伟).mp360 现代爱情故事(张智霖许秋怡).mp360 盛夏的果实(莫文蔚).mp361 偏偏喜欢你(陈百强).mp361 风继续吹(张国荣).mp362 遥远的她(张学友).mp362 野花(田震).mp363 一生不变(李克勤).mp363 你到底爱谁(刘嘉亮).mp364 勇敢一点(赵传).mp365 天黑黑(孙燕姿).mp365 青藏高原(李娜).mp366 辛德瑞拉(戴佩妮).mp367 一直很安静(阿桑).mp367 不装饰你的梦(蔡国权).mp368 睡在我上铺的兄弟(老狼).mp369 天堂里有没有车来车往(张恒).mp3F.I.R. - 我们的爱 .mp3成龙 陈淑桦 - 明明白白我的心 .mp3蔡健雅 - 无底洞 .mp3蔡琴 - 被遗忘的时光 .mp3陈升 - 把悲伤留给自己 .mp3陈洁仪 - 心痛 .mp3陈洁仪 - 担心 .mp3陈淑桦 - 梦醒时分 .mp3陈淑桦 - 这样爱你对不对 .mp3陈绮贞 - 还是会寂寞 .mp3CD3:任贤齐 - 对面的女孩看过来 .mp3任贤齐 - 心太软 .mp3伍佰 - 浪人情歌 .mp3伍思凯 - 特别的爱给特别的你 .mp3光良 - 童话 .mp3光良 - 第一次 .mp3刘若英 - 后来 .mp3刘若英 - 很爱很爱你 .mp3叶倩文 - 潇洒走一回 .mp3吕方 - 老情歌 .mp3孙燕姿 - 开始懂了 .mp3庾澄庆 - 让我一次爱个够 .mp3张信哲 - 过火 .mp3张惠妹 - 我要快乐 .mp3张惠妹 - 记得 .mp3张栋梁 - 当你孤单你会想起谁 .mp3张洪量 - 你知道我在等你吗 .mp3张艾嘉 - 爱的代价 .mp3张震岳 - 爱之初体验 .mp3张震岳 - 爱我别走 .mp3李宗盛 - 寂寞难耐 .mp3林子祥 - 至少还有我在乎 .mp3林子祥 叶倩文 - 选择 .mp3林忆莲 - 情人的眼泪 .mp3林忆莲 - 爱上一个不回家的人 .mp3林隆璇 周慧敏 - 流言 .mp3梁咏琪 - 短发 .mp3梁静茹 - 分手快乐 .mp3梁静茹 - 勇气 .mp3梅艳芳 - 亲密爱人 .mp3潘越云 - 我是不是你最疼爱的人 .mp3王杰 - 一场游戏一场梦 .mp3王杰 - 安妮 .mp3王杰 - 是否我真的一无所有 .mp3王杰 叶欢 - 你是我胸口永远的痛 .mp3王馨平 - 别问我是谁 .mp3童安格 - 其实你不懂我的心 .mp3童安格 - 明天你是否依然爱我 .mp3苏慧伦 - 我一个人住 .mp3苏芮 - 跟着感觉走 .mp3莫文蔚 - 他不爱我 .mp3莫文蔚 - 阴天 .mp3许志安 - 想说 .mp3费玉清 - 何日君再来 .mp3赵传 - 我很丑可是我很温柔 .mp3赵传 - 我终于失去了你 .mp3辛晓琪 - 领悟 .mp3那英 - 一笑而过 .mp3邰正宵 - 九佰九十九朵玫瑰 .mp3郑中基 - 你的眼睛背叛你的心 .mp3郑秀文 - 背叛 .mp3郑钧 - 赤裸裸.mp3郭富城 - 信鸽 .mp3郭富城 - 别说 .mp3郭富城 - 当我知道你们相爱 .mp3郭富城 - 爱的呼唤 .mp3顺子 - 回家 .mp3黄品源 - 你怎么舍得我难过 .mp3黄品源 莫文蔚 - 那么爱你为什么 .mp3黄莺莺 - 哭砂 .mp3===================================================(再次感谢原创收集制作,很多歌曲都是个人很喜欢的!!!)下载地址:华语经典老歌180首大合集 CD1.rar/file/华语经典老歌180首大合集 CD2.rar/file/华语经典老歌180首大合集 CD3.rar/file/
真是给力呀
可以下载吗?有木有病毒啊?
可以下载吗?有木有病毒啊?
楼主,你老了!!!哈哈
看看效果怎么样
华语经典老歌180首大合集3CD,好
在哪里下载呀?
咋啥也看不到
可以下载吗?
支持键盘翻页 ( 左右 )&
您需要登录后才可以回帖&&&|&&&&&
用户名/注册邮箱/注册手机号
其他第三方号登录}

我要回帖

更多关于 手机号接收验证码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信