最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網
技術交流 | 電路欣賞 | 工控天地 | 數字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng)
驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產業(yè) | CAN-bus/DeviceNe

請教BCH(63,48)的相關問題

作者:powerpan 欄目:通信技術
請教BCH(63,48)的相關問題
有沒有算法,或者生成多項式?

請知道的大蝦指導一下

2樓: >>參與討論
powerpan
咋沒人說話?
我都搞定了。。。

對這個論壇有點心寒。。。。。

3樓: >>參與討論
宇宙飛船
這個碼的糾錯能力不強,目前在單片機中用它沒有多少意義,
如果用到63位的數據包,剛好是一個方陣了,最優(yōu)的方案是用漢明碼+交織處理

能夠達到(63,40)的碼率,糾突發(fā)錯的能力是BCH碼的3倍以上!

* - 本貼最后修改時間:2005-10-7 9:38:01 修改者:宇宙飛船

4樓: >>參與討論
powerpan
需要省電,而且碼率不高
這就是為啥不能使用RS之類的原因。

誰還知道peterson迭代法求任意2個錯誤的地方的方法?

我用了捕錯法,雖然可以捕捉15位或以下的連續(xù)錯誤,但是實際通訊中根本沒有這樣連續(xù)把0,1翻轉的。。。。而捕錯法如何判斷15為以內的錯誤也是一個不確定條件,如果不是連續(xù)錯誤,雖然4位以內的任意錯都可以糾正,但是也因此會引起其他條件下的誤糾。

看了書,據說peterson和捕錯法交叉使用最好。我原來做過BCH(31,21)的peterson解碼,但是BCH(63,48)的查錯表(數學都還給老師了,不會算)沒有,所以不能編出。請大蝦們幫忙。。

5樓: >>參與討論
宇宙飛船
給一個BCH(48,36)的C例程,
/*
* File:    bch4836.c
* Author:  Robert Morelos-Zaragoza
*
* %%%%%%%%%%% Encoder/Decoder for a (48, 36, 5) binary BCH code %%%%%%%%%%%%%
*
*    This code is used in CONTROL channels for cellular TDMA in the U.S.A.
*
*    In this specific case, there is no need to use the Berlekamp-Massey
*    algorithm, since the error locator polynomial is of at most degree 2.
*    Instead, we simply solve by hand two simultaneous equations to give
*     the coefficients of the error locator polynomial in the case of two
*    errors. In the case of one error, the location is given by the first
*    syndrome.
*
*    This program derivates from the original bch2.c, which was written
*    to simulate the encoding/decoding of primitive binary BCH codes.
*    PART of this program is adapted from a Reed-Solomon encoder/decoder
*    program,  'rs.c', to the binary case.
*
*    rs.c by Simon Rockliff, UNIVERSITY of Adelaide, 21/9/89
*    bch2.c by Robert Morelos-Zaragoza, UNIVERSITY of Hawaii, 5/19/92
*
* COPYRIGHT NOTICE: This COMPUTER program is free for non-commercial purposes.
* You may implement this program for any non-commercial application. You may
* also implement this program for commercial purposes, provided that you
* obtain my written permission. Any modification of this program is covered
* by this COPYRIGHT.
*
* %%%% COPYRIGHT 1994 (c) Robert Morelos-Zaragoza. All rights reserved. %%%%%
*
* m = order of the field GF(2**6) = 6
* n = 2**6 - 1 - 15 = 48 = length
* t = 2 = error correcting capability
* d = 2*t + 1 = 5 = designed MINIMUM distance
* k = n - deg(g(x)) = 36 = dimension
* p[] = coefficients of primitive polynomial used to generate GF(2**6)
* g[] = coefficients of generator polynomial, g(x)
* ALPHA_to [] = log table of GF(2**6)
* index_of[] = antilog table of GF(2**6)
* data[] = coefficients of data polynomial, i(x)
* bb[] = coefficients of redundancy polynomial ( x**(12) i(x) ) modulo g(x)
* numerr = NUMBER of errors
* errpos[] = error positions
* recd[] = coefficients of received polynomial
* decerror = NUMBER of decoding errors (in MESSAGE positions)
*
*/

#include <math.h>
#include <stdio.h>

int             m = 6, n = 63, k = 36, t = 2, d = 5;
int                length = 48;
int             p[7];        /* irreducible polynomial */
int             ALPHA_to[64], index_of[64], g[13];
int             recd[48], data[36], bb[13];
int             numerr, errpos[64], decerror = 0;
int             seed;


void
read_p()
/* Primitive polynomial of degree 6 */
{
    register int    i;
    p[0] = p[1] = p[6] = 1; p[2] = p[3] = p[4] = p[5] =0;
}


void
generate_gf()
/*
* generate GF(2**m) from the irreducible polynomial p(X) in p[0]..p[m]
* lookup tables:  index->polynomial form   ALPHA_to[] contains j=ALPHA**i;
* polynomial form -> index form  index_of[j=ALPHA**i] = i ALPHA=2 is the
* primitive element of GF(2**m)
*/
{
    register int    i, mask;
    mask = 1;
    ALPHA_to[m] = 0;
    for (i = 0; i < m; i++) {
        ALPHA_to[i] = mask;
        index_of[ALPHA_to][i]] = i;
        if (p[i] != 0)
            ALPHA_to[m] ^= mask;
        mask <<= 1;
    }
    index_of[ALPHA_to][m]] = m;
    mask >>= 1;
    for (i = m + 1; i < n; i++) {
        if (ALPHA_to[i - 1] >= mask)
          ALPHA_to[i] = ALPHA_to[m] ^ ((ALPHA_to[i - 1] ^ mask) << 1);
        else
          ALPHA_to[i] = ALPHA_to[i - 1] << 1;
        index_of[ALPHA_to][i]] = i;
    }
    index_of[0] = -1;
}


void
gen_poly()
/*
* Compute generator polynomial of BCH code of length = 48, redundancy = 12
* (OK, this is not very efficient, but we ONLY do it once, right? :)
*/
{
    register int    ii, jj, ll, kaux;
    int             TEST, aux, nocycles, root, noterms, rdncy;
    int             cycle[13][7], size[13], min[13], zeros[13];
    /* Generate cycle sets modulo 63 */
    cycle[0][0] = 0; size[0] = 1;
    cycle[1][0] = 1; size[1] = 1;
    jj = 1;            /* cycle set index */
    do {
        /* Generate the jj-th cycle set */
        ii = 0;
        do {
            ii++;
            cycle[jj][ii] = (cycle[jj][ii - 1] * 2) % n;
            size[jj]++;
            aux = (cycle[jj][ii] * 2) % n;
        } while (aux != cycle[jj][0]);
        /* Next cycle set representative */
        ll = 0;
        do {
            ll++;
            TEST = 0;
            for (ii = 1; ((ii <= jj) && (!TEST)); ii++)    
            /* Examine previous cycle sets */
              for (kaux = 0; ((kaux < size[ii]) && (!TEST)); kaux++)
                    if (ll == cycle[ii][kaux])
    
6樓: >>參與討論
song9644
bch
是否可用卷積碼?(2.1.7.),(2.1.9).可糾連續(xù)32bit錯,或隨機錯2位.



7樓: >>參與討論
powerpan
謝謝飛船。!
我的BCH(63,48)程序也調通了。通過直接捕錯+查表糾正2位隨機錯誤。

不過在驗證中發(fā)現,如果出現隨機3位以上的錯誤,就沒有辦法糾正,因為出現多個解。。很暈。。。

* - 本貼最后修改時間:2005-10-9 14:07:17 修改者:powerpan

8樓: >>參與討論
powerpan
適合單片機的做法(編碼)
void BCH_encode(void)
{
    CHAR i,d,TEMP,key0,key1;                                    /* Clear check bits */

    key0 = 0;
    key1 = 0;

    for (i=0;i<6;i++){
        TEMP = 0x80;
        d = data[i];
        while (TEMP!=0){                                        /* 48 information bits */

            if ( (((d&TEMP)!=0)&&((key0&0x80)==0))||            /* input data XOR highest bit of key */
                 (((d&TEMP)==0)&&((key0&0x80)!=0)) ){
                key0 ^= SEED0;
                key1 ^= SEED1;
            }

            TEMP >>= 1;
            TEMP &= 0x7f;                                        /* no need to be here, compliler's bug */

            key0 <<= 1;                                            /* shift left */
            if ((key1&0x80)!=0)
                key0 ++;                                        /* adjust bit */
            key1 <<= 1;

        }
    }

    data[6] = key0;
    data[7] = key1;
}


參與討論
昵稱:
討論內容:
 
 
相關帖子
有朋友用過APD雪崩二極管嗎?
尋求代為開發(fā)光纖模塊
有知道zigbee嗎?哪里可以購買ic,何處可以獲得技術支持?
電話線摘掛機檢測
關于radio receiver ic design的書
免費注冊為維庫電子開發(fā)網會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號