Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 05.01.2015
Сообщений: 1
1

Сверточный кодер на ассемблере

05.10.2015, 18:49. Показов 1177. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здравствуйте. необходимо объяснить, каким образом реализуется сверточное кодирование без использования операции xor.


1)Этот листинг я подробно прокомментировал и все разобрал(взято из ida pro,ассемблер для проца TMS320C54x).
Но я честно не понимаю как здесь реализуется кодирование без xor. Скорость кодера 1/2, порождающие полиномы G0 = 1+ D2 + D3 + D5 + D6, G1 = 1+ D + D2 + D3 + D6, ограниченная длина 8 бит(7бит -память кодера + 1 входной бит)
Может у кого-нибудь есть советы, в какую сторону копать?
Буду благодарен за любую помощь.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[RIGHT][LEFT]ROM:5B0D sub_5B0D:                               
ROM:5B0D       ld      #0, DP                //загрузить в DP(Data pointer) 0. Дает возможность использовать для хранения данных адреса от  0x60 to 0x7F
ROM:5B0E       stm     #7Fh, @loc_60 //сохранить  в переменную @loc_60  маску 0x7F
ROM:5B10        stm     #1, @loc_61     //сохранить в переменной @loc_61  флаг 1
ROM:5B12        mvmm    AR4, AR1    //сохранить в регистре AR1 значение регистра AR4
ROM:5B13        ld      #-4, ASM           // в (accumulator shift mode bits)ASM  загрузить значении -4
ROM:5B14
ROM:5B14 loc_5B14:                             
ROM:5B14        sftl    A, 1                    //сдвиг влево регистра A на  1 бит(сдвиговый регистр готов для приема входного бита)
ROM:5B15        and     @loc_60, A      //обнулить биты  7-31(память нашего кодера должна быть постоянна и равна  7 бит)
ROM:5B16        or      *AR2+, A          //загрузить  входной бит из *AR2+ (кодируемая строка) в  регистр A
ROM:5B17        stl     A, ASM, AR0     //загрузить в регистр AR0   биты с 3-6 сдвигового регистра, (7-31 биты сброшены в ноль)
ROM:5B18        and     #0Fh, A, B        //загрузить в регистр B  биты      0-3 сдвигового регистра
ROM:5B1A       neg     B                       //дополнение до двух значения регистра B(т.е. получаем дополнительный код , или отрицательной значение)
 
//процедура, выполняемая в следующем цикле эквивалентна значению xor, т.к сдесь мы на 1 входной бит получаем 2 выходных за 2 итерации 
ROM:5B1B        rptbd   loc_5B24          //внутренний цикл выполняется пока значение BRC>=0  
ROM:5B1D        pshm    BRC             //сохраняем значение BRC в стеке
ROM:5B1E        ld      BL, T               //загрузить в регистр T значение регистра B(T= -B)
ROM:5B1F        mvdk    *AR4+, AR5 //загрузить в  регистр AR5 значение из ячейки *AR4(когда brc=1, то AR5=0x6D92; когда brc=0, то AR5=0x6D72)
ROM:5B21        mar     *AR5+0           //сумма регистра AR5 и AR0: AR5=AR5+AR0
ROM:5B22        ld      *AR5, TS, B     //сдвинуть значение в  AR5 на T бит вправо, загрузить результат в  регистр B
ROM:5B23       and     @loc_61, B     //сбросить  все биты кроме нулевого в ноль(получаем результат работы кодера)
ROM:5B24
ROM:5B24 loc_5B24:                               
ROM:5B24       stl     B, *AR3+        //сохранить выходной бит  в  буфере для результата кодирования
 
 
ROM:5B25       banzd   loc_5B14, *AR7-  //пока  AR7 не ноль переход на метку loc_5B14
ROM:5B27       mvmm    AR1, AR4          //восстановить указатель AR4
ROM:5B28       popm    BRC                    //достать из стека значение BRC[/LEFT][/RIGHT]

2)это листинг сверточного кодера со скоростью 1/2, образующими полиномами G0 = 33, G1 = 27 и
с ограниченной длиной 5 бит (4 бита -память кодера + 1 входной бит). Просто для примера, как выглядит код с применением xor
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
start
stm #input,AR2                   ;set AR2 –> input buffer
stm #output,AR3                 ;set AR3 –> output buffer
stm #nwords–1,BRC            ;set loop counter to [(number of bits)/16]–1
rptb endloop–1                    ;repeat for each 16–bit input
ld *ar2+,16,a                       ;load X(n) thru X(n–15) into A upper accumulator
or *ar2–,a                           ;load X(n–16) thru X(n–31) into A lower accumulator
ld *ar2+,16,b                      ;load X(n) thru X(n–15) into B upper accumulator
or *ar2,b                            ;load X(n–16) thru X(n–31) into B lower accumulator
xor b,3,a                            ;A = X(n) XOR X(n–3)
xor b,4,a                            ;A = X(n) XOR X(n–3) XOR X(n–4)
xor b,1,a                            ;A = X(n) XOR X(n–1) XOR X(n–3) XOR X(n–4)
sth a,*ar3+                         ;save as G0, point AR3 to next output word
xor b,1,a                            ;A = X(n) XOR X(n–3) XOR X(n–4)
                                         ;(removes previous X(n–1) term)
xor b,2,a                            ;A = X(n) XOR X(n–2)
sth a,*ar3+                         ;save as G1, point AR3 to next output word
endloop
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.10.2015, 18:49
Ответы с готовыми решениями:

Реализовать сверточный кодер по алгоритму Витерби
function Decoded_Vect = Convolutional_Decoder(Coded_Vect, Flag_isHalf) % Функция выполняет...

Сверточный и каскадный код
Нужно написать помехоустойчивый код. Он должен состоять из каскадного кода (на основе кода...

Кодер UUE
Доброе время суток! Требуется написать кодер/декодер uue на ассемблере. Возник вопрос по...

Кодер-декодер.
Я недавно начал писать на бейсике и захотелось написать программу которая бы переводила русский...

0
05.10.2015, 18:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.10.2015, 18:49
Помогаю со студенческими работами здесь

Бинарный кодер.
А проблема вот в чём. Учиться на факультете программирования я начал совсем недавно и мне вот дали...

Стеганография. КОдер.
# include <iostream> int main() { int i=0, j=0, num=0,y; char c, s, g, buf; FILE...

Ошибка В кодер
Вот у меня такая Проблема s:=HTTP.Get('http://vseotzyvy.ru/login/?next=/my/profile/'); ...

кодер/декодер
здравствуйте. есть небольшой проект - консольное приложение кодера/декодера (сишные файлы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru