Программная реализация кодера и декодера БЧХ-кода (63,36), исправляющего ошибки кратности пять, для микроконтроллера МК51 - Курсовая работа

бесплатно 0
4.5 217
Проектирование кодера и декодера циклического БЧХ-кода. Программа для кодирования и декодирования сообщений в БЧХ-коде. Метод декодирования и исправления ошибок, расчет вариантов их обработки. Эффективность использования микроконтроллеров с ядром MCS51.


Аннотация к работе
Программная реализация кодера и декодера БЧХ-кода (63,36), исправляющего ошибки кратности пять, для микроконтроллера МК51 кодер циклический ошибка микроконтроллерПосле отработки каждого события определения двойной ошибки(2-й подвектор) reg_err27 equ 10h reg_err26 equ 11h reg_err25 equ 12h reg_err24 equ 13h reg_err23 equ 14h reg_err22 equ 15h reg_err21 equ 16h reg_err20 equ 17h дополнительные регистры для определения тройной ошибки (3-й подвектор) регистры для ввода исходного сообщения для проверки bufer7 equ 20h bufer6 equ 21h bufer5 equ 22h bufer4 equ 23h bufer3 equ 24h bufer2 equ 25h bufer1 equ 26h bufer0 equ 27h регистры содержащие значения контрольного полинома temp3 equ 28h temp2 equ 29h temp1 equ 2ah temp0 equ 2bh байты контроля совпадения остатков cntrl_byte3 equ 2ch cntrl_byte2 equ 2dh cntrl_byte1 equ 2eh cntrl_byte0 equ 2fh байты вектора ошибки (1-й подвектор) er_byte7 equ 30h er_byte6 equ 31h er_byte5 equ 32h er_byte4 equ 33h er_byte3 equ 34h er_byte2 equ 35h er_byte1 equ 36h er_byte0 equ 37h count_BITCH equ 38h; счетчик разрядности числителя count_BITZN equ 39h; счетчик разрядности знаменателя count_takt equ 3ah; счетчик количества тактов для деления temp_reg1 equ 3bh; регистр временных данных 1 temp_reg2 equ 3ch; регистр временных данных 2 qu 40h reg_err46 equ 41h reg_err45 equ 42h reg_err44 equ 43h reg_err43 equ 44h reg_err42 equ 45h reg_err41 equ 46h reg_err40 equ 47h дополнительные регистры для определения пятикратной ошибки (5-й подвектор) reg_err57 equ 48h reg_err56 equ 49h reg_err55 equ 4ah reg_err54 equ 4bh reg_err53 equ 4ch reg_err52 equ 4dh reg_err51 equ 4eh reg_err50 equ 4fh регистры для хранения шумового вектора ошибок er_vector7 equ 50h er_vector6 equ 51h er_vector5 equ 52h er_vector4 equ 53h er_vector3 equ 54h er_vector2 equ 55h er_vector1 equ 56h er_vector0 equ 57h III) обработка значений синдромов при тройной ошибке _detect_er3: acall ini_first_error; установка 1-го подвектора ошибок; дублирование первого подвектора ошибок mov R0,#er_byte0; копируем побайтно регистры mov R1,#reg_err20; er_byte0 - er_byte7 в регистры acall save_r0_to_r1; reg_err20 - reg_err27 соответственно формируем второй подвектор ошибок mov R0,#reg_err20; сдвинуть на один такт влево reg_err20 acall shift_left8; регистры с меткой byte формируем третий подвектор ошибок mov R0,#reg_err20; сохранить регистры reg_err20 - reg_err27 mov R1,#reg_err30; в регистрах reg_err30-reg_err37 acall save_r0_to_r1; соответственно mov R0,#reg_err30; сдвинуть на один такт влево reg_err20 acall shift_left8; регистры с меткой byte дублируем третий подвектор ошибок mov R0,#reg_err30; сохранить регистры reg_err30-reg_err37 mov R1,#byte0; в регистрах byte0 - byte7 acall save_r0_to_r1; соответственно подготовка проверочного вектора сложением 1-го,2-го и 3-го подвекторов ошибок; полученное значение заносится в вектор ошибок для коррекции сообщения; вектор ошибок обозначен регистрами er_vector0 - er_vector7 proverka_3_63: mov a,er_byte0 orl a,reg_err20 orl byte0,a mov er_vector0,byte0 mov a,er_byte1 orl a,reg_err21 orl byte1,a mov er_vector1,byte1 mov a,er_byte2 orl a,reg_err22 orl byte2,a mov er_vector2,byte2 mov a,er_byte3 orl a,reg_err23 orl byte3,a mov er_vector3,byte3 mov a,er_byte4 orl a,reg_err24 orl byte4,a mov er_vector4,byte4 mov a,er_byte5 orl a,reg_err25 orl byte5,a mov er_vector5,byte5 mov a,er_byte6 orl a,reg_err26 orl byte6,a mov er_vector6,byte6 mov a,er_byte7 orl a,reg_err27 orl byte7,a mov er_vector7,byte7 acall compare_rem; обращение на выполнение проверки jnz next_proverka_3; продолжить если не определено ajmp error_disable; ошибки обнаружены, исправление next_proverka_3: mov R0,#reg_err30; сдвиг байтов третьего подвектора acall shift_left8; IV) обработка значений синдромов при четверной ошибке _detect_er4: acall ini_first_error; установка 1-го подвектора ошибок; дублирование первого подвектора ошибок mov R0,#er_byte0; копируем побайтно регистры mov R1,#reg_err20; er_byte0 - er_byte7 в регистры acall save_r0_to_r1; reg_err20 - reg_err27 соответственно формируем второй подвектор ошибок mov R0,#reg_err20; сдвинуть на один такт влево reg_err20 acall shift_left8; регистры с меткой byte формируем третий подвектор ошибок mov R0,#reg_err20; сохранить регистры reg_err20 - reg_err27 mov R1,#reg_err30; в регистрах reg_err30-reg_err37 acall save_r0_to_r1; соответственно mov R0,#reg_err30; сдвинуть на один такт влево reg_err20 acall shift_left8; регистры с меткой byte формируем четвертый подвектор ошибок mov R0,#reg_err30; сохранить регистры reg_err30 - reg_err37 mov R1,#reg_err40; в регистрах reg_err40-reg_err47 acall save_r0_to_r1; соответственно mov R0,#reg_err40; сдвинуть на один такт влево reg_err40 acall shift_left8; регистры с меткой byte дублируем четвертый подвектор ошибок mov R0,#reg_err40; сохранить регистры reg_err40-reg_err47 mov R1,#byte0; в регистрах byte0 - byte7 acall save_r0_to_r1; соответственно подготовка проверочного вектора сложением 1-го,2-го,3-го и 4-го подвекторов ошибок, полученное значение заносится в век
Заказать написание новой работы



Дисциплины научных работ



Хотите, перезвоним вам?