- •Українська державна академія зв’язку ім. О.С. Попова
- •Затверджено
- •1 Мета роботи
- •2 Основні положення
- •2.1 Безумовні переходи
- •2.2 Умовні переходи
- •Moveq #10, d0; завантаження номера першого ; перетворюваного біта до d0
- •2.3 Організація програмних циклів
- •2.4 Звернення до підпрограм
- •Bra.S m5; обхід запису числа fdh у d2
- •M5: move d5,sr; відновлення регістру стану з d5
- •3 Контрольні запитання
- •4 Домашнє завдання
- •Парні варіанти
- •Непарні варіанти
- •5 Лабораторне завдання
- •6 Зміст протоколу
Bra.S m5; обхід запису числа fdh у d2
M4: MOVE.L #$FD,D2; так, запис до D2 числа $FD
M5: move d5,sr; відновлення регістру стану з d5
RTS; повернення з підпрограми
Рисунок 2.1 – Структурна схема алгоритму підрахування кількості одиниць
Якщо кількість одиниць є непарна, то у регістр D2 записується довільна позначка $FD, а якщо ж парна, то регістр D2 обнулюється.
Приклад 2.2 Скласти програмні моделі скремблера та дескремблера, які б дозволяли за допомогою генератора випадкових чисел кодувати 255 відліків цифрового сигналу, а потім їх декодувати. Надходження цифрових сигналів з лінії зв‘язку у паралельному коді імітується зчитуванням однобайтових елементів масиву з пам‘яті, починаючи з адреси $600500. Кодовані скремблером значення відліків записуються у пам‘ять, починаючи з адреси $600600, потім декодуються у моделі дескремблера і первісні значення відліків для порівняння запам‘ятовуються, починаючи з адреси $600700. Для генерації псевдовипадкової послідовності (ПВП), як правило, використовуються кільцеві зсувові регістри з суматорами за модулем 2 у введених колах зворотного зв’язку. Не будь-яка конфігурація структури зворотного зв‘язку забезпечує максимальний період псевдопослідовності, що дорівнює 2N–1, де N – кількість розрядів регістру. На рисунку 2.2 показано одну з максимальних структур з трьома колами зворотного зв’язку, які зв’язують 0, 2, 4, та 7-й розряди 8-розрядного зсувового регістру. Ця структура забезпечує максимальний період генерації числової псевдопослідовності, що дорівнює 255.
Рисунок 2.2 – Генератор псевдовипадкової послідовності
Задана структура зворотного зв‘язку зсувового регістру здійснюється за допомогою маски $95. Для реалізації трьох послідовних операцій складання за модулем 2 прийнятої структури зручно використовувати ознаки парності або непарності кількості одиниць у байті на кожному кроці зсуву, який зреалізовується програмно за допомогою команди ROXL.B – циклічного зсуву ліворуч з розширенням.
Скремблювання та дескремблювання відліків сигналів здійснюється шляхом операції додавання їх за модулем 2 до чергового псевдовипадкового числа.
Структурну схему алгоритму зображено на рисунку 2.3.
Програма розв’язання задачі:
MOVEA.L #$400700,A0; завантаження адреси масиву сигналів у
; А0
MOVEA.L #$400800,A1; завантаження адреси масиву кодованих
; сигналів у А1
MOVE.L #$FE,D3 ; завантаження лічильника циклів ПВП
Рисунок 2.3 – Структурна схема алгоритму скремблера–дескремблера
MOVE.L #$1,D4; завантаження лічильника циклів
; скремблювання–дескремблювання
M4: MOVE.L #$9,D0; завантаження першого числа ПВП
M1: MOVE.L D0,D1; запам‘ятовування чергового числа ПВП
; у D1
MOVE.B (A0)+,D2; скремблювання чергового елемента
EOR.B D0,D2; масиву вхідних сигналів
MOVE.B D2,(A1)+; та запам’ятовування його за адресою
; (А1)+
ANDI.B #$95,D0; організація зворотних зв’язків
BSR EVEN; звернення до ПП визначення парності–
; непарності кількості одиниць у байті
MOVE SR,D5; Ні, пересилання SR у D5
BTST #$0,D2; кількість одиниць
BEQ.S M2; парна?
ANDI.B #$FD,D5; встановлення Х у “0”
BRA.S M3; обхід встановлення Х у “1”
M2: ORI.B #$10,D5; Так, встановлення Х у “1”
M3: MOVE D5,SR; відновлення регістру стану
MOVE.L D1,D0; відновлення чергового числа ПВП
ROXL.B #1,D0; циклічний зсув D0 ліворуч через Х
DBF D3,M1; повернення до початку внутрішнього
; циклу
MOVEA.L #$400800,A0; переадресування вхідного
MOVEA.L #$400900,A1; та дескрембльованого масивів сигналів
MOVE.L #$FE,D3; перевантаження лічильника циклів
DBF D4,M4; повернення до початку зовнішнього
; циклу
NOP; закінчення програми
Слід відзначити, що при зверненні до ПП визначення кількості одиниць у байті значення байта, що вміщується у D0, треба передавати з основної програми, а команду MOVE.L #$9,D0 вилучити з ПП.
Результатом виконання програми є три масиви: перший, що складається з відліків вхідного сигналу, починаючи з адреси $400700; другий починається з адреси $400800 і складається з кодованих сигналів, а третій, розташований за адресою $400900, складається з розкодованих відліків вхідного сигналу. Кожний з масивів складається з 255 елементів.
