国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

用匯編語言實現BCH解碼校驗算法

發布時間:2010-11-3 13:03    發布者:eetech
關鍵詞: BCH , 匯編語言 , 解碼 , 算法 , 校驗
數據傳輸通信中,常常因傳輸差錯造成誤碼錯碼,尤其在無線通信中,空中的突發或隨機干擾噪聲會造成編碼差錯。為了提高傳輸的正確率,往往采用一些校驗方法,以檢驗糾正傳輸差錯。通信中校驗的方法很多,其中的BCH編碼有其獨特的優點:不僅可以檢糾突發差錯,還能檢糾隨機差錯,被廣泛地采用在微機級的通信中。但對更低層的單片機級的數據傳輸通信糾錯,往往采用奇偶校驗等簡單的校驗方法。BCH校驗因其算法復雜,尤其是動態實時的無線通信中,單片機的通信往往無法采用BCH解碼檢糾。  

筆者近幾年在工業測控和無線通信系統開發,摸索了BCH解碼檢糾在實時的、動態的、單片機級的通信中的算法,并取得十分突出的效果。以下以BCH(31:21)碼為例進行探討。  

1 BCH碼結構  

BCH碼是一種檢糾能力較強的循環碼。它由信息多項式M(X)和校驗多項式J(X)組成,如以T(X)表示整個BCH(31:21)碼字的31位碼組多項式,則:  

T(X)=M(X)+J(X)   (1)  

在31位BCH碼的后面再加上1位,以保證整個碼字32位中“1”的個數為偶數。該位稱偶校驗位。這樣就形成BCH(31:21)加1位偶校驗位的標準碼字,其結構為:  

其中校驗多項式J(X)由公式(2)計算:  

X0X1……X20
X21……X30
X31

T(X)
J(X)
偶校驗位
J(X)=M(X)/S(X)    (2)  

式中S(X)是BCH(31:21)碼的生成多項式,見式(3):  




  
生成多項式S(X)的值在BCH(31:21)碼的值是固定的。  

BCH碼是一種循環碼,循環碼是利用除法來糾錯的。由于任一碼組多項式T(X)都能被生成多項式S(X)整除,所以在接收端可以將接收碼組R(X)用S(X)去除。若在傳輸中未發生錯誤,接收碼與發送碼相同,即R(X)=T(X),故接收碼組R(X)必定能被生成多項式S(X)整除;若碼組在傳輸中發生錯誤,即R(X)≠T(X),R(X)被S(X)除時,可能除不盡而有余項Y(X),因此,可根據余項是否為零來判斷碼中有無錯誤(檢錯),如有余項,通過一定的運算就可以確定錯誤位置,從而加以糾正(糾錯)。  

這里R(X)被S(X)除,是32位被11除,這在非實時靜態的微機級實現非常簡單;但在實時的、動態的、單片機級的通信中實現要快速巧妙的算法才能實現,否則,現有的碼未檢錯及糾錯完畢,下一個碼已經到了。因為動態中位和位的時距t往往只有幾十μs,以9.6b/s的短信為例,t=104μs。在這104μs中要完成檢錯、定位和糾錯三個算法程序,才是一個完整的解碼檢糾過程。  

2 檢錯  

根據上述原理,檢錯過程也就是求算R(X)被S(X)除的余項Y(X)的過程,如余項Y(X)=0,則R(X)=T(X),傳輸無差錯;如余項Y(X)≠0,則R(X)≠T(X),檢出傳輸差錯。  

在算法語言中,所有的運算總歸于二種運算:加和減。這是電子計算機的二進制基本電路特性所決定的,也是匯編語言唯一的算術運算方法。為此,這里把除法用模二加法再加右移位實現。  

已知:S(X)=11101101001  

R(X)=r3r4r5r6 (ri為8位寄存器)  

調用下面的模二加法右移子程序,得到R(X)/S(X)的余項Y(X)=r3r4。  

;32位/16位模二加法右移子程序  
m2add:mov r7,#00  
m2ddgx:mov a,r3  
xrl a,#0edh ;S(x)的高位=oed(h)  
mov r3a  
mov a,r4  
cpl acc.5 ;S(x)的低3位=001(b)  
mov r4,a  
mov a,r3  
acc7e10:jb acc.7m2addgx ;R(x)的最高位為“0”,則R(x)右移  
mov a,r6  
rlc a  
mov r6,a  
mov a,r5  
rlc a  
mov r5,a  
mov a,r4  
rlc a  
mov r4,a  
mov a,r3  
rlc a  
mov r3,a  
mov r7  
cjne r7,#10h,acc7e10 ;右移總次數為16次  
ret  
余項Y(X)的高8位在r3寄存器中,低3位在r4的高3位。  

3 定位  

如果Y(X)=r3r4≠0,表示接收到的碼組R(X)有差錯,下一步則由Y(X)的值推算差錯在R(X)中的位置。  

理論上要找出R(X)中差錯的位置,必須計算出差錯校驗子C(X)。在實踐中,校驗子C(X)的計算不僅費時間,而且多位檢糾還需多個校驗子C(X)。為此,經過幾年的實踐,把Y(X)(即r3r4)直接作為綜合校驗子,通過快速查表找到差錯位置。查找程序的大小和檢糾差錯位數有關,這里以檢糾4位差錯為例,說明定位糾錯的方法。  

;4位差錯位址查找子程序  
bitposi:mov b,0 ;對R(X)高位至低位的移動計數  
mov r2,#1fh ;設表格長度  
bto a: mov a,b  
inc b  
acall tabsub ;調用表格子程序,讀入表格值  
clr c  
subb a,r3 ;Y(X)中的r3 和表格值比較  
jnz binc1 :不相等,轉出  
mov a,b ;相等,繼續  
acall tabsub  
clr  
subb a,r4 ;Y(X)中的r4和表格值比較  
jnz r2decl:不相等,轉出  
setb f0 ;相等,置標志位返回  
ret  
bincl:inc b  
r2decl:djnz r2,btoa  
ret ;表格查畢,沒有相等的值,不置標志位返回  
從查找子程序返回的B寄存器的值,即為差錯在R(X)中從高位到低位的位數值。  
;4位差錯表格子程序  
tabsub:inc a  
movc a,@a+pc;將相對位置的表格送入a寄存器  
ret  
db 0ebh ;表格開始,長度為查找子程序中  
db 00 ;r2寄存器的預置值  
db 76h  
.  
.  
.  
4 糾錯  
找到了差錯在R(X)位置,就可以糾錯了。  

糾錯的原理比較簡單,因為單片機處理的是二進制數,而二進制數只有二個狀態,即不是“0”就是“1”。也就是說,R(X)中差錯位是“0”,則改為“1”;差錯位是“1”,則改為“0”。所以糾錯要對所在位求反就行了。  

至此,整個檢錯、定位、糾錯的BCH碼校驗檢糾過程結束。BCH碼校驗算法,經過實踐的檢驗,不失為單片機級的數據傳輸校驗好算法。這種方法可以對多位隨機差錯和多位突發差錯進行檢驗和糾錯,具體位數的多少僅受單片機工作頻率的限制,而不受方法的限制。
本文地址:http://m.qingdxww.cn/thread-36022-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • 使用SAM-IoT Wx v2開發板演示AWS IoT Core應用程序
  • 使用Harmony3加速TCP/IP應用的開發培訓教程
  • 集成高級模擬外設的PIC18F-Q71家族介紹培訓教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿澤電子(Mouser)專區

相關視頻

關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲黄色性视频| 天天色成人| 天天干天天舔天天操| 无人在线高清免费看| a4you销魂gogo人体| 欧美性最猛xxxx在线观看视频| 亚洲伊人国产| 奇米影视亚洲狠狠色777不卡| 亚洲 日本 欧美 日韩精品| 亚洲午夜精品久久久久久抢| 国产一区私人高清影院| 亚洲中文字幕在线第六区| 亚洲国产日韩在线观频| 日本高清在线观看视频| 亚洲va中文va欧美va爽爽| 亚洲第一页视频| 公和我做好爽添厨房中文字幕| 女人久久WWW免费人成看片| 在线视频 国产精品 中文字幕| 亚洲天堂久久久| 日韩黄| 丝瓜香蕉视频在线观看| 在线观看国产精品日本不卡网| 老板揉搓秘书丰满大乳| 亚洲激情一区| 日本在线观看免费| 偷拍自拍国产自拍| 父亲猜女儿在线观看| 亚洲免费无码中文在线| 午夜综合| 色伊人影院| 亚洲狠狠婷婷综合久久蜜桃| 成人精品综合免费视频| 午夜在线观看免费观看 视频| 欧美激情观看一区二区久久| 亚洲免费在线观看视频| 亚洲一成人毛片| 久久re视频这里精品09免费| 性啪啪chinese东北女人| 全黄毛片| 中国国产成人精品久久|