E
ezyneab
Guest
Моя программа
# включить <math.h>
# включить <stdio.h>
# включить <stdlib.h>
# INCLUDE "dsk6713_aic23.h" / / кодек-ДСК поддержка файлов
Uint32 FS = DSK6713_AIC23_FREQ_8KHZ / / установить частоту дискретизации
# DEFINE BIT_PER_SAMPLE 16
Int input_dec;
Int M = 5, N = 31, К = 16, T = 3, D = 7;
Int длина = 31;
Int P [6] / / неприводимые полиномиальной
Int alpha_to [32], index_of [32], G [16];
Int recd [31], данные [16], Б. [16];
Int numerr, errpos [32], decerror = 0;
ЬурейеЕ структуру список
(
краткое данных;
структура перечня * Предыдущее * Next;
) узла;
Node * First = NULL;
Node * Back = NULL;
//=========== Десятичных чисел в двоичной ==================
Пустота de2bi (Char бен [BIT_PER_SAMPLE], Int DEC)
(
Int J, temp1, temp2 = Dec;
для (J = 0; J <BIT_PER_SAMPLE; J )
(
temp1 = (INT) этаж ((FLOAT) temp2 / 2);
Бен [J] = temp2-temp1 * 2;
temp2 = temp1;
)
возвращение;
)//Primitive polynomial of degree 5 Пустота read_p ()
(
Регистрация Int I;
P [0] = P [2] = P [5] = 1; / / X ^ 5 X ^ 2 1
P [1] = P [3] = P [4] = 0;
)/ / Генерация GF (2 ** м) от неприводимых полиномов P (X) в р [0] .. P [M]
/ / Таблиц поиска: Главная-> alpha_to полиномиального вида [] содержит J = альфа ** I;
/ / Полиномиальной формы -> Индекс формы index_of [J = альфа ** I] = I альфа = 2
/ / Примитивный элемент GF (2 ** M)
Пустота generate_gf ()
(
Регистрация Int I, маски;
Маска = 1;
alpha_to [м] = 0;
для (i = 0; i <M; I )
(
alpha_to = маску;
index_of [alpha_to ] = I;
если (P ! = 0)
alpha_to [м] ^ = маску;
Маска <<= 1;
)
index_of [alpha_to [M]] = M;
Маски>> = 1;
Для (I = M 1; I <N; I )
(
если (alpha_to [I-1]> = маска)
alpha_to = alpha_to [M] ^ ((alpha_to [I-1] ^ маска) <<1);
еще
alpha_to = alpha_to [I - 1] <<1;
index_of [alpha_to ] = I;
)
index_of [0] =- 1;
)/ / Compute полиномиального генератора МПБ код длины = 31, избыточность = 15
Пустота gen_poly ()
(
Регистрация Int II, JJ, LL, kaux;
Int испытаний, AUX, nocycles, корень, noterms, rdncy;
Int цикла [16] [6], размер [16], мин [16], нули [16];
/ / Генерация цикл множеств по модулю 31
цикл [0] [0] = 0; размером [0] = 1;
цикла [1] [0] = 1; Размер [1] = 1;
JJ = 1; / / цикл набора индексов
делать
(
/ / Генерация JJ-й цикл набора
II = 0;
делать
(
II ;
цикл [JJ] [II] = (цикл [JJ] [II-1] * 2)% N;
Размер [JJ] ;
AUX = (цикл [JJ] [II] * 2)% N;
)
While (AUX! = цикл [JJ] [0]);
/ / Следующий цикл набора представитель
LL = 0;
делать
(
LL ;
Test = 0;
для (II = 1; ((II <= JJ )&&(! тест)); II )
/ / Изучить предыдущих наборов цикл
для (kaux = 0; ((kaux <Размер [II ])&&(! тест)); kaux )
если (LL == цикла [II] [kaux])
Test = 1;
)
While ((тест) & & (LL <(N - 1)));
IF (! (тест))
(
JJ ; / / следующий цикл набора индексов
цикл [JJ] [0] = LL;
Размер [JJ] = 1;
)
)
в то время (LL <(N-1));
nocycles JJ = / / Число циклов множеств по модулю N
/ / Поиск корней 1, 2, ..., D-1 в цикле набора
kaux = 0;
rdncy = 0;
для (II = 1; II <= nocycles; II )
(
мин [kaux] = 0;
для (JJ = 0; JJ <Размер [II]; JJ )
для (корень = 1; корневых <D; корень )
если (корень == цикла [II] [JJ])
мин [kaux] = II;
если (мин [kaux])
(
rdncy = размер [мин [kaux]];
kaux ;
)
)
noterms = kaux;
kaux = 1;
для (II = 0; II <noterms; II )
для (JJ = 0; JJ <размер [мин [II]]; JJ )
(
нули [kaux] = цикл [мин [II]] [JJ];
kaux ;
)
/ / Compute полиномиального генератора
G [0] = alpha_to [нули [1]];
G [1] = 1; / / G (X) = (X нули [1]) изначально
для (II = 2; II <= rdncy; II )
(
G [II] = 1;
для (JJ = II-1; JJ> 0; JJ -)
если (G [JJ]! = 0)
G [JJ] = G [JJ-1] ^ alpha_to [(index_of [G [JJ]] нули [II])% N];
еще
G [JJ] = G [JJ-1];
G [0] = alpha_to [(index_of [G [0]] нули [II])% N];
)
)
//=============== Encode_bch ==============================
/ / Вычислить избыточных BB битов [], кодовое слово C (X) = данные (X) * X ** (НК) BB (X)
Пустота encode_bch (INT данные [16], Int BB [16])
(
Регистрация Int I, J;
Регистрация Int обратной связи;
для (i = 0; i <длина-K; I )
BB = 0;
Для (I = K-1; I> = 0; I -)
(
Данные обратной связи = ^ BB [длина-K-1];
если (обратная связь! = 0)
(
для (J = длина-K-1, J> 0, J -)
если (G [J]! = 0)
BB [J] = BB [J-1] ^ обратной связи;
еще
BB [J] = BB [J-1];
BB [0] = G [0] & &feedback;
)
еще
(
для (J = длина-K-1, J> 0, J -)
BB [J] = BB [J-1];
BB [0] = 0;
);
);
)
//============== decode_bch ================
Пустота decode_bch ()
(
Регистрация Int I, J, Q;
Int ELP [3], S [5], S3;
: = 0, syn_error = 0;
Int LOC [3], р [3];
Int AUX;
/ / Первая форма синдромы
для (i = 1; I <= 4; I )
(
S = 0;
для (J = 0; J <длина; J )
если (recd [J]! = 0)
S ^ alpha_to = [(I * J)% N];
если (S ! = 0)
syn_error = 1; / / установка флага, если ненулевой синдром ПРИМЕЧАНИЕ: Если нужна только обнаружение ошибок, а затем выйти из программы, здесь ...
S = index_of [S ]; / / преобразовать синдром из полиномиальной формы в форму индекса
);
если (syn_error) / / если есть ошибки, стараемся их исправить
(
если (S [1]! =- 1)
(
S3 = (S [1] * 3)% N;
если (S [3] == S3) / / Была ли это одна ошибка?
(
recd [S [1]] ^ = 1; / / Да: исправить
)
зе / / Предположим, две ошибки произошли, и решить для коэффициентов Sigma (X), polynomail ошибка локатора
(
если (S [3]! =- 1)
AUX = alpha_to [S3] ^ alpha_to [S [3]];
еще
AUX = alpha_to [S3];
ELP [0] = 0;
ELP [1] = (S [2]-index_of [AUX] N)% N;
ELP [2] = (S [1]-index_of [AUX] N)% N;
для (i = 1; I <= 2; I ) / / Поиск корней полинома месте ошибка
р = ELP ;
Count = 0;
для (i = 1; I <= N; I ) / / Цзянь поиск
(
Q = 1;
для (J = 1, J <= 2; J )
если (р [J]! =- 1)
(
REG [j] = (REG [J] J)% N;
Q ^ = alpha_to [REG [J]];
)
IF (! Q) / / Магазин ошибка индексы порядковый номер
(
LOC [Count] = I% N;
Count ;
)
)
если (кол-во == 2) / / нет.Корни = степень ELP, следовательно, 2 ошибками
для (i = 0; i <2; I )
recd [LOC ] ^ = 1;
)
)
)
)
//=========== Бинарных 16 бит десятичной ==============
Int bi2de (Char бен [BIT_PER_SAMPLE])
(
Int OP = 0;
долгое Int power_vector [BIT_PER_SAMPLE];
Int J;
Int I, C = 0;
Int FLAG = 0;
power_vector [0] = 1;
//==================== 1 дополнением ==================
если (BIN [15] == 1)
(Флаг = 1;
Для (I = 15; I> = 0; I -)
(
если (BIN == 0)
(
Бен = 1;
)
еще
(
Бен = 0;
)
/ / Е ( "% D", бен );
)
//================= 2 дополнением =======================
для (i = 0; i <16; I )
(
если (I == 0)
(
если (BIN == 0)
(
Бен = 1;
)
еще
(
Бен = 0;
C = 1;
)
)
еще
(
если (C == 1 & & бен == 0)
(
Бен = 1;
C = 0;
)
Else If (C == 1 & & бен == 1)
(
Бен = 0;
C = 1;
)
)
/ / Е ( "% D", бен );
)
//==============================
)
для (J = 1, J <BIT_PER_SAMPLE; J )
(
power_vector [J] = power_vector [J-1] * 2;
)
//================= Конвертировать разрядных десятичных цифр для ===============для (J = 0; J <BIT_PER_SAMPLE; J )
(
ОП = power_vector [J] * бен [J];
)
если (флаг == 1)
(
OP = (-2 * OP) ФП;
FLAG = 0;
)
возвращение (ОП);
)//====================== main_code ========================= =
Основными Void ()
(
Чар temp_binary [BIT_PER_SAMPLE], temp_decimal [BIT_PER_SAMPLE];
Int * binary_buffer;
Int * out_buffer;
Int J, I = 0;
: = 0, count_bit;
етр [BIT_PER_SAMPLE];
Int C = 0;
Int Z = 0;
read_p (); / / читать полиномиального генератора G (X)
generate_gf (); / / Генерация полем Галуа GF (2 ** M)
gen_poly (); / / Вычислить полиномиального генератора кода МПБ
comm_poll (); / / Init ДСК, кодек, McBSP
DSK6713_LED_init (); / / Init вел из BSL
DSK6713_DIP_init (); / / Init ДИП от BSL
(
краткое голоса;
Node * currptr;
While (DSK6713_DIP_get (3) == 0)
(C ;
Count ; / / данных кол
-
DSK6713_LED_on (3); / / включение светодиодной # 3
(
Voice = input_sample ();// магазин входных данных в буфере
Е ( "% D \ п", голос);
/ / ЗсапЕ ( "% D", & голоса);
если (Back == NULL)
(
currptr = (Node *) MALLOC (sizeof (Node));
Back = currptr;
первый = currptr;
currptr-> Data = голос;
currptr-> Предыдущий = NULL;
currptr-> Next = NULL;
)
еще
(
currptr = (Node *) MALLOC (sizeof (Node));
Back-> Next = currptr;
currptr-> Предыдущий = назад;
Back = currptr;
currptr-> Data = голос;
Back-> Next = NULL;
)
)
)
DSK6713_LED_off (3);
count_bit = кол-во * BIT_PER_SAMPLE / / кол-разрядный
/ / Е ( "Бит всех =% D \ N", count_bit);
//===========================================
binary_buffer = (INT *) MALLOC (count_bit * SizeOf (INT)); / / binary_buffer динамический массив
//===========================================
в то время (первая! = NULL) / / Пока первые данные
(
input_dec = первый-> данных;
de2bi (temp_binary, input_dec); / / Перейти функции de2bi//================= define_binary_16bit =====================
для (J = 15, J> = 0; J -) / / для 16 бит
(
binary_buffer = temp_binary [J] / / трансфер temp_binary динамических массивов
/ / Е ( "% D", binary_buffer );
I ;
)первый = первый-> Next;
)
/ * Для (i = 0; i <= (count_bit-1); I )
(
Е ( "% D", binary_buffer );
) * /
//==================== dividing_binary_data ================
для (J = 0; J <Count; J )
(
для (i = 0; i <16; I )
(
Данные = binary_buffer [16 * J I];
/ / Е ( "% D", данные );
)
/ / МПБ кодировки
encode_bch (данные, ВВ); / / кодировать данные
для (i = 0; i <длина-K; I )
(
recd = BB / / первый (длина-K) бит избыточности
/ / Е ( "% D", recd );
)
для (i = 0; I <K; I )
(
recd [I длина-K] = данные / / К последнему биты являются данные
/ / Е ( "% D", recd [I длина-K]);
)
для (i = 0; i <длина; I )
(
Е ( "% D", recd ); / / печать кодовое слово
)
Е ( "Кодовое слово \ п");
/ / Ошибку при вводе данных//------------------------------------------------ ---------
/ / БЧХ
decode_bch (); / / расшифровал данные
Для (I = длина-K; I <длина; I ) / / декодирования ошибок: сравнить данные только части
(Если (по данным [I-длина K]! Recd = )
decerror ;
)для (i = 0; i <16; I )
(
binary_buffer [16 * J I] = recd [I длина-K];
Е ( "% D", binary_buffer [16 * J I]);
)
Е ( "декодировать \ п");
)
//==============================================
out_buffer = (INT *) MALLOC (Count * SizeOf (INT));
/ / Преобразование 16-разрядного двоичного кода 'binary_buffer к десятичной' out_buffer '
для (i = 0; i <Count; I )
(
для (J = 0; J <BIT_PER_SAMPLE; J )
(
temp_decimal [J] = binary_buffer [16 * I J];
/ / Е ( "% D", temp_decimal [J]);
)
Z = 0;
для (J = 15, J> = 0; J -) / / для 16 бит
(
Темп [г] = temp_decimal [J];
/ / Е ( "% D", темп [г]);
Z ;
)
out_buffer = bi2de (Temp);
/ / Output_sample (out_buffer * 10);
Е ( "% D \ N", out_buffer );
)
свободный (binary_buffer);
)
)
************************************************** *
Помоги мне сделать.
Программа голос с.
# включить <math.h>
# включить <stdio.h>
# включить <stdlib.h>
# INCLUDE "dsk6713_aic23.h" / / кодек-ДСК поддержка файлов
Uint32 FS = DSK6713_AIC23_FREQ_8KHZ / / установить частоту дискретизации
# DEFINE BIT_PER_SAMPLE 16
Int input_dec;
Int M = 5, N = 31, К = 16, T = 3, D = 7;
Int длина = 31;
Int P [6] / / неприводимые полиномиальной
Int alpha_to [32], index_of [32], G [16];
Int recd [31], данные [16], Б. [16];
Int numerr, errpos [32], decerror = 0;
ЬурейеЕ структуру список
(
краткое данных;
структура перечня * Предыдущее * Next;
) узла;
Node * First = NULL;
Node * Back = NULL;
//=========== Десятичных чисел в двоичной ==================
Пустота de2bi (Char бен [BIT_PER_SAMPLE], Int DEC)
(
Int J, temp1, temp2 = Dec;
для (J = 0; J <BIT_PER_SAMPLE; J )
(
temp1 = (INT) этаж ((FLOAT) temp2 / 2);
Бен [J] = temp2-temp1 * 2;
temp2 = temp1;
)
возвращение;
)//Primitive polynomial of degree 5 Пустота read_p ()
(
Регистрация Int I;
P [0] = P [2] = P [5] = 1; / / X ^ 5 X ^ 2 1
P [1] = P [3] = P [4] = 0;
)/ / Генерация GF (2 ** м) от неприводимых полиномов P (X) в р [0] .. P [M]
/ / Таблиц поиска: Главная-> alpha_to полиномиального вида [] содержит J = альфа ** I;
/ / Полиномиальной формы -> Индекс формы index_of [J = альфа ** I] = I альфа = 2
/ / Примитивный элемент GF (2 ** M)
Пустота generate_gf ()
(
Регистрация Int I, маски;
Маска = 1;
alpha_to [м] = 0;
для (i = 0; i <M; I )
(
alpha_to = маску;
index_of [alpha_to ] = I;
если (P ! = 0)
alpha_to [м] ^ = маску;
Маска <<= 1;
)
index_of [alpha_to [M]] = M;
Маски>> = 1;
Для (I = M 1; I <N; I )
(
если (alpha_to [I-1]> = маска)
alpha_to = alpha_to [M] ^ ((alpha_to [I-1] ^ маска) <<1);
еще
alpha_to = alpha_to [I - 1] <<1;
index_of [alpha_to ] = I;
)
index_of [0] =- 1;
)/ / Compute полиномиального генератора МПБ код длины = 31, избыточность = 15
Пустота gen_poly ()
(
Регистрация Int II, JJ, LL, kaux;
Int испытаний, AUX, nocycles, корень, noterms, rdncy;
Int цикла [16] [6], размер [16], мин [16], нули [16];
/ / Генерация цикл множеств по модулю 31
цикл [0] [0] = 0; размером [0] = 1;
цикла [1] [0] = 1; Размер [1] = 1;
JJ = 1; / / цикл набора индексов
делать
(
/ / Генерация JJ-й цикл набора
II = 0;
делать
(
II ;
цикл [JJ] [II] = (цикл [JJ] [II-1] * 2)% N;
Размер [JJ] ;
AUX = (цикл [JJ] [II] * 2)% N;
)
While (AUX! = цикл [JJ] [0]);
/ / Следующий цикл набора представитель
LL = 0;
делать
(
LL ;
Test = 0;
для (II = 1; ((II <= JJ )&&(! тест)); II )
/ / Изучить предыдущих наборов цикл
для (kaux = 0; ((kaux <Размер [II ])&&(! тест)); kaux )
если (LL == цикла [II] [kaux])
Test = 1;
)
While ((тест) & & (LL <(N - 1)));
IF (! (тест))
(
JJ ; / / следующий цикл набора индексов
цикл [JJ] [0] = LL;
Размер [JJ] = 1;
)
)
в то время (LL <(N-1));
nocycles JJ = / / Число циклов множеств по модулю N
/ / Поиск корней 1, 2, ..., D-1 в цикле набора
kaux = 0;
rdncy = 0;
для (II = 1; II <= nocycles; II )
(
мин [kaux] = 0;
для (JJ = 0; JJ <Размер [II]; JJ )
для (корень = 1; корневых <D; корень )
если (корень == цикла [II] [JJ])
мин [kaux] = II;
если (мин [kaux])
(
rdncy = размер [мин [kaux]];
kaux ;
)
)
noterms = kaux;
kaux = 1;
для (II = 0; II <noterms; II )
для (JJ = 0; JJ <размер [мин [II]]; JJ )
(
нули [kaux] = цикл [мин [II]] [JJ];
kaux ;
)
/ / Compute полиномиального генератора
G [0] = alpha_to [нули [1]];
G [1] = 1; / / G (X) = (X нули [1]) изначально
для (II = 2; II <= rdncy; II )
(
G [II] = 1;
для (JJ = II-1; JJ> 0; JJ -)
если (G [JJ]! = 0)
G [JJ] = G [JJ-1] ^ alpha_to [(index_of [G [JJ]] нули [II])% N];
еще
G [JJ] = G [JJ-1];
G [0] = alpha_to [(index_of [G [0]] нули [II])% N];
)
)
//=============== Encode_bch ==============================
/ / Вычислить избыточных BB битов [], кодовое слово C (X) = данные (X) * X ** (НК) BB (X)
Пустота encode_bch (INT данные [16], Int BB [16])
(
Регистрация Int I, J;
Регистрация Int обратной связи;
для (i = 0; i <длина-K; I )
BB = 0;
Для (I = K-1; I> = 0; I -)
(
Данные обратной связи = ^ BB [длина-K-1];
если (обратная связь! = 0)
(
для (J = длина-K-1, J> 0, J -)
если (G [J]! = 0)
BB [J] = BB [J-1] ^ обратной связи;
еще
BB [J] = BB [J-1];
BB [0] = G [0] & &feedback;
)
еще
(
для (J = длина-K-1, J> 0, J -)
BB [J] = BB [J-1];
BB [0] = 0;
);
);
)
//============== decode_bch ================
Пустота decode_bch ()
(
Регистрация Int I, J, Q;
Int ELP [3], S [5], S3;
: = 0, syn_error = 0;
Int LOC [3], р [3];
Int AUX;
/ / Первая форма синдромы
для (i = 1; I <= 4; I )
(
S = 0;
для (J = 0; J <длина; J )
если (recd [J]! = 0)
S ^ alpha_to = [(I * J)% N];
если (S ! = 0)
syn_error = 1; / / установка флага, если ненулевой синдром ПРИМЕЧАНИЕ: Если нужна только обнаружение ошибок, а затем выйти из программы, здесь ...
S = index_of [S ]; / / преобразовать синдром из полиномиальной формы в форму индекса
);
если (syn_error) / / если есть ошибки, стараемся их исправить
(
если (S [1]! =- 1)
(
S3 = (S [1] * 3)% N;
если (S [3] == S3) / / Была ли это одна ошибка?
(
recd [S [1]] ^ = 1; / / Да: исправить
)
зе / / Предположим, две ошибки произошли, и решить для коэффициентов Sigma (X), polynomail ошибка локатора
(
если (S [3]! =- 1)
AUX = alpha_to [S3] ^ alpha_to [S [3]];
еще
AUX = alpha_to [S3];
ELP [0] = 0;
ELP [1] = (S [2]-index_of [AUX] N)% N;
ELP [2] = (S [1]-index_of [AUX] N)% N;
для (i = 1; I <= 2; I ) / / Поиск корней полинома месте ошибка
р = ELP ;
Count = 0;
для (i = 1; I <= N; I ) / / Цзянь поиск
(
Q = 1;
для (J = 1, J <= 2; J )
если (р [J]! =- 1)
(
REG [j] = (REG [J] J)% N;
Q ^ = alpha_to [REG [J]];
)
IF (! Q) / / Магазин ошибка индексы порядковый номер
(
LOC [Count] = I% N;
Count ;
)
)
если (кол-во == 2) / / нет.Корни = степень ELP, следовательно, 2 ошибками
для (i = 0; i <2; I )
recd [LOC ] ^ = 1;
)
)
)
)
//=========== Бинарных 16 бит десятичной ==============
Int bi2de (Char бен [BIT_PER_SAMPLE])
(
Int OP = 0;
долгое Int power_vector [BIT_PER_SAMPLE];
Int J;
Int I, C = 0;
Int FLAG = 0;
power_vector [0] = 1;
//==================== 1 дополнением ==================
если (BIN [15] == 1)
(Флаг = 1;
Для (I = 15; I> = 0; I -)
(
если (BIN == 0)
(
Бен = 1;
)
еще
(
Бен = 0;
)
/ / Е ( "% D", бен );
)
//================= 2 дополнением =======================
для (i = 0; i <16; I )
(
если (I == 0)
(
если (BIN == 0)
(
Бен = 1;
)
еще
(
Бен = 0;
C = 1;
)
)
еще
(
если (C == 1 & & бен == 0)
(
Бен = 1;
C = 0;
)
Else If (C == 1 & & бен == 1)
(
Бен = 0;
C = 1;
)
)
/ / Е ( "% D", бен );
)
//==============================
)
для (J = 1, J <BIT_PER_SAMPLE; J )
(
power_vector [J] = power_vector [J-1] * 2;
)
//================= Конвертировать разрядных десятичных цифр для ===============для (J = 0; J <BIT_PER_SAMPLE; J )
(
ОП = power_vector [J] * бен [J];
)
если (флаг == 1)
(
OP = (-2 * OP) ФП;
FLAG = 0;
)
возвращение (ОП);
)//====================== main_code ========================= =
Основными Void ()
(
Чар temp_binary [BIT_PER_SAMPLE], temp_decimal [BIT_PER_SAMPLE];
Int * binary_buffer;
Int * out_buffer;
Int J, I = 0;
: = 0, count_bit;
етр [BIT_PER_SAMPLE];
Int C = 0;
Int Z = 0;
read_p (); / / читать полиномиального генератора G (X)
generate_gf (); / / Генерация полем Галуа GF (2 ** M)
gen_poly (); / / Вычислить полиномиального генератора кода МПБ
comm_poll (); / / Init ДСК, кодек, McBSP
DSK6713_LED_init (); / / Init вел из BSL
DSK6713_DIP_init (); / / Init ДИП от BSL
(
краткое голоса;
Node * currptr;
While (DSK6713_DIP_get (3) == 0)
(C ;
Count ; / / данных кол
-
DSK6713_LED_on (3); / / включение светодиодной # 3
(
Voice = input_sample ();// магазин входных данных в буфере
Е ( "% D \ п", голос);
/ / ЗсапЕ ( "% D", & голоса);
если (Back == NULL)
(
currptr = (Node *) MALLOC (sizeof (Node));
Back = currptr;
первый = currptr;
currptr-> Data = голос;
currptr-> Предыдущий = NULL;
currptr-> Next = NULL;
)
еще
(
currptr = (Node *) MALLOC (sizeof (Node));
Back-> Next = currptr;
currptr-> Предыдущий = назад;
Back = currptr;
currptr-> Data = голос;
Back-> Next = NULL;
)
)
)
DSK6713_LED_off (3);
count_bit = кол-во * BIT_PER_SAMPLE / / кол-разрядный
/ / Е ( "Бит всех =% D \ N", count_bit);
//===========================================
binary_buffer = (INT *) MALLOC (count_bit * SizeOf (INT)); / / binary_buffer динамический массив
//===========================================
в то время (первая! = NULL) / / Пока первые данные
(
input_dec = первый-> данных;
de2bi (temp_binary, input_dec); / / Перейти функции de2bi//================= define_binary_16bit =====================
для (J = 15, J> = 0; J -) / / для 16 бит
(
binary_buffer = temp_binary [J] / / трансфер temp_binary динамических массивов
/ / Е ( "% D", binary_buffer );
I ;
)первый = первый-> Next;
)
/ * Для (i = 0; i <= (count_bit-1); I )
(
Е ( "% D", binary_buffer );
) * /
//==================== dividing_binary_data ================
для (J = 0; J <Count; J )
(
для (i = 0; i <16; I )
(
Данные = binary_buffer [16 * J I];
/ / Е ( "% D", данные );
)
/ / МПБ кодировки
encode_bch (данные, ВВ); / / кодировать данные
для (i = 0; i <длина-K; I )
(
recd = BB / / первый (длина-K) бит избыточности
/ / Е ( "% D", recd );
)
для (i = 0; I <K; I )
(
recd [I длина-K] = данные / / К последнему биты являются данные
/ / Е ( "% D", recd [I длина-K]);
)
для (i = 0; i <длина; I )
(
Е ( "% D", recd ); / / печать кодовое слово
)
Е ( "Кодовое слово \ п");
/ / Ошибку при вводе данных//------------------------------------------------ ---------
/ / БЧХ
decode_bch (); / / расшифровал данные
Для (I = длина-K; I <длина; I ) / / декодирования ошибок: сравнить данные только части
(Если (по данным [I-длина K]! Recd = )
decerror ;
)для (i = 0; i <16; I )
(
binary_buffer [16 * J I] = recd [I длина-K];
Е ( "% D", binary_buffer [16 * J I]);
)
Е ( "декодировать \ п");
)
//==============================================
out_buffer = (INT *) MALLOC (Count * SizeOf (INT));
/ / Преобразование 16-разрядного двоичного кода 'binary_buffer к десятичной' out_buffer '
для (i = 0; i <Count; I )
(
для (J = 0; J <BIT_PER_SAMPLE; J )
(
temp_decimal [J] = binary_buffer [16 * I J];
/ / Е ( "% D", temp_decimal [J]);
)
Z = 0;
для (J = 15, J> = 0; J -) / / для 16 бит
(
Темп [г] = temp_decimal [J];
/ / Е ( "% D", темп [г]);
Z ;
)
out_buffer = bi2de (Temp);
/ / Output_sample (out_buffer * 10);
Е ( "% D \ N", out_buffer );
)
свободный (binary_buffer);
)
)
************************************************** *
Помоги мне сделать.
Программа голос с.