?? bch_encrypt.html
字號:
資訊 <http://news.ddvip.com/index.html>| 操作系統
<http://tech.ddvip.com/os/index.html>| 編程
<http://tech.ddvip.com/program/index.html>| 平面
<http://tech.ddvip.com/pic/index.html>| 動畫
<http://tech.ddvip.com/mediamovice/index.html>| 網絡
<http://tech.ddvip.com/network/index.html>| 安全
<http://tech.ddvip.com/safe/index.html>| 通信
<http://tech.ddvip.com/comm/index.html>| 認證
<http://tech.ddvip.com/cert/index.html>| 辦公
<http://tech.ddvip.com/office/index.html>| 服務器
<http://tech.ddvip.com/server/index.html>| 數據庫
<http://tech.ddvip.com/db/index.html>| 企業應用
<http://tech.ddvip.com/ent/index.html>| 軟件應用
<http://tech.ddvip.com/soft/index.html>| 存儲
<http://tech.ddvip.com/server/datasave/index.html>| 電子機械
<http://tech.ddvip.com/machine/index.html>| QQ
<http://tech.ddvip.com/chatsoft/qq.html>| SOA
<http://tech.ddvip.com/soa/index.html>
網站LOGO
<http://ip345.com/zuyong>
* AutoCAD <http://tech.ddvip.com/machine/autocad/index.html>
* Pro/E <http://tech.ddvip.com/machine/pro/e/index.html>
* DSP <http://tech.ddvip.com/machine/dsp/index.html>
* CAM <http://tech.ddvip.com/machine/cam/index.html>
* Matlab <http://tech.ddvip.com/machine/matlab/index.html>
* EDA/PLD <http://tech.ddvip.com/machine/eda/index.html>
* 單片機 <http://tech.ddvip.com/machine/mcu/index.html>
* 電源技術 <http://tech.ddvip.com/machine/power/index.html>
* 模擬電子 <http://tech.ddvip.com/machine/analog/index.html>
* 存儲技術 <http://tech.ddvip.com/machine/store/index.html>
* 無線電子 <http://tech.ddvip.com/machine/rf/index.html>
* 光電顯示
<http://tech.ddvip.com/machine/opticalelectronicsdisplay/index.html>
* 傳感控制 <http://tech.ddvip.com/machine/sensor/index.html>
* 數字電子 <http://tech.ddvip.com/machine/circuit/index.html>
* 嵌入式系統 <http://tech.ddvip.com/machine/embed/index.html>
<http://www.zzy.cn/count.php?id=58> <http://www.1stchina.com/>
<http://www.163ns.com/> <http://www.linkwww.com/>
<http://www.itrenzheng.com/> <http://www.enkj.com/>
豆豆網 <http://www.ddvip.com> > 技術應用
<http://tech.ddvip.com/index.html> > 機械電子
<http://tech.ddvip.com/machine/index.html> > 單片機
<http://tech.ddvip.com/machine/mcu/index.html> > 正文
用匯編語言實現BCH解碼校驗算法
網站建設-找友創互聯 <http://www.yclink.com/event/website/index.html> 開
網店-找友創互聯 <http://www.yclink.com/event/kwd>
http://tech.ddvip.com 2008年07月13日 社區交流 <http://bbs.ddvip.com>
關鍵字: ISP在線編程 <http://tech.ddvip.com/search.php?key=ISP在線編程>
DDS輸出信號 <http://tech.ddvip.com/search.php?key=DDS輸出信號> 車載空調
控制器 <http://tech.ddvip.com/search.php?key=車載空調控制器> 倒車雷達設
計 <http://tech.ddvip.com/search.php?key=倒車雷達設計> 血壓檢測儀
<http://tech.ddvip.com/search.php?key=血壓檢測儀> 在線測試儀
<http://tech.ddvip.com/search.php?key=在線測試儀>
內容摘要:介紹數據傳輸中BCH解碼校驗用匯編語言實現的算法。算法包含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):
用匯編語言實現BCH解碼校驗算法
生成多項式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”。所以糾錯要對所在位求反就行了,程序見本刊網絡補充版
(http://www.dpj.com.cn)。
至此,整個檢錯、定位、糾錯的BCH碼校驗檢糾過程結束。BCH碼校驗算法,經
過實踐的檢驗,不失為單片機級的數據傳輸校驗好算法。這種方法可以對多位隨機
差錯和多位突發差錯進行檢驗和糾錯,具體位數的多少僅受單片機工作頻率的限
制,而不受方法的限制。
作者:沈慶躍 責編:豆豆技術應用
與“用匯編語言實現BCH解碼校驗算法”相關的文章
* DVB-S2中BCH譯碼器的硬件設計
<http://tech.ddvip.com/2008/07/121722980548917.html>
* Nios SoC系統中的BCH編解碼IP核的設計
<http://tech.ddvip.com/2008/07/121576383846801.html>
本欄目更新
* 單片機的ISP在線編程設計
<http://tech.ddvip.com/2008/09/122178727567343.html>
* 帶有以太網接口的蓄電池化成監控系統的設計
<http://tech.ddvip.com/2008/09/122178716467342.html>
* 精確控制DDS輸出信號幅度的一種新方法
<http://tech.ddvip.com/2008/09/122178704867341.html>
* MCU需要改進 <http://tech.ddvip.com/2008/09/122178693567340.html>
* 一種實用的車載空調控制器設計
<http://tech.ddvip.com/2008/09/122101681862764.html>
* 基于MSP430F2274單片機的倒車雷達設計
<http://tech.ddvip.com/2008/09/122101673762763.html>
* 一種基于SoC的高精度電子血壓檢測儀
<http://tech.ddvip.com/2008/09/122058598560616.html>
* 基于MSP430的軌道電路在線測試儀設計與實現
<http://tech.ddvip.com/2008/09/122032963759455.html>
* 基于STC單片機與GPRS的圖文LED屏
<http://tech.ddvip.com/2008/09/122024217859120.html>
* 水平定向鉆進跟蹤與導向儀中地下傳感發射探頭的設計
<http://tech.ddvip.com/2008/09/122024209659119.html>
點擊發表評論 <#showcomment>
網友昵稱: 匿名發表(無需注冊)
請輸入驗證碼:
如果您還不是豆豆會員,歡迎注冊 <http://bbs.ddvip.com>。
本記錄共有評論 0 條 正等您發表評論
<http://cmt.ddvip.com/cmtshow.html?r_node=tech&r_subid=2008-07-13_47186>
教程 軟件 源碼
單片機專題 <http://tech.ddvip.com/zt/single-chip.html>
* AVR 單片機 <http://tech.ddvip.com/zt/avr.html>
* PIC系列單片機 <http://tech.ddvip.com/zt/pic_dpj.html>
* 51系列單片機 <http://tech.ddvip.com/zt/51_dpj.html>
* MCS-51系列單片機 <http://tech.ddvip.com/zt/mcs_51.html>
* MSP430 單片機 <http://tech.ddvip.com/zt/msp430.html>
* Atmega 單片機 <http://tech.ddvip.com/zt/atmega.html>
* AT89C51,AT89C52單片機 <http://tech.ddvip.com/zt/at89c.html>
* C8051F 系列單片機 <http://tech.ddvip.com/zt/c8051f.html>
* 更多單片機專題>>> <http://tech.ddvip.com/zt/single-chip.html>
精華推薦 <http://tech.ddvip.com/machine/mcu/index.html>
* 單片機的ISP在線編程設計
<http://tech.ddvip.com/2008/09/122178727567343.html>
* 89C51單片機的自控對星裝置
<http://tech.ddvip.com/2008/08/121963697257731.html>
* 單片機應用編程技巧
<http://tech.ddvip.com/2008/08/121963619257722.html>
* 單片機初學者不易掌握的概念
<http://tech.ddvip.com/2008/08/121963610857721.html>
* 單片機的在線編程技術
<http://tech.ddvip.com/2008/08/121963302857691.html>
* ASM-51 宏匯編使用手冊
<http://tech.ddvip.com/2008/08/121948572157539.html>
* 什么是單片機 <http://tech.ddvip.com/2008/08/121948430757513.html>
* 一種MCU時鐘系統的設計
<http://tech.ddvip.com/2008/08/121936893256527.html>
* PIC單片機的特點及應用
<http://tech.ddvip.com/2008/08/121930743956395.html>
* PIC 8位單片機的匯編語言
<http://tech.ddvip.com/2008/08/121930690356389.html>
* PIC系列單片機的偽指令
<http://tech.ddvip.com/2008/08/121930675556387.html>
* 單片機硬件系統設計原則
<http://tech.ddvip.com/2008/08/121929099956303.html>
* C語言在單片機開發中的應用
<http://tech.ddvip.com/2008/08/121928982756286.html>
* 單片機開平方的快速算法
<http://tech.ddvip.com/2008/08/121928805856259.html>
* PIC單片機的應用設計技巧
<http://tech.ddvip.com/2008/07/121671442547529.html>
* 基于51單片機的溫度測量系統
<http://tech.ddvip.com/2008/07/121670683547483.html>
* 利用單片機I/O口直接驅動LCD
<http://tech.ddvip.com/2008/07/121669786447470.html>
* 單片機系統的低功耗設計策略
<http://tech.ddvip.com/2008/07/121660906847370.html>
* 單片機控制的數字觸發器
<http://tech.ddvip.com/2008/07/121592119547183.html>
關于我們 <http://www.ddvip.com/about.html> - 聯系我們
<http://www.ddvip.com/contactus.html> - 版權申明
<http://www.ddvip.com/corp.html> - 廣告服務
<http://www.ddvip.com/ad.html> - 網站地圖
<http://www.ddvip.com/map.html> - 網站律師
<http://www.ddvip.com/lawfirm.html> - 報告錯誤 <http://bbs.ddvip.com> -
免責條款 <http://www.ddvip.com/disclaimer.html> - 友情連接
<http://www.ddvip.com/link.html>
豆豆網 版權所有 © 2002-2008
蜀ICP證05002354號 All rights reserved DDVIP.COM <http://www.ddvip.com>
<http://www.no1dns.com/style/info/hezu.asp>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -