LR4_CSP
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
Московский технический университет связи и информатики
Кафедра многоканальных телекоммуникационных систем
ЛАБОРАТОРНАЯ РАБОТА
№ 4
по дисциплине
Цифровые системы передачи и методы их защиты
на тему
Реализация циклического сдвига 32-разрядных данных
Бригада №
Выполнил: студент гр. бкк2001
Проверила: Зуйкова Т.Н.
Москва 20
Индивидуальное задание
1. Запишите на языке ассемблер процессора ADSP-2181 фрагмент программы, содержащий запись в регистр SR шестнадцатеричного числа C0FFEE, а также команду, реализующую логический сдвиг содержимого регистра SR1 на 7 разрядов влево относительно регистра SR0. Ожидаемый результат выполнения команды представьте в двоичном и шестнадцатеричном виде для регистров SR1 и SR0.
Решение: sr0 = 0xFFEE;
sr1 = 0x00C0;
sr = lshift sr0 by 7 (LO);
Ответ: sr1 = 0000 0000 0111 1111; 0x007F
sr0 = 1111 0111 0000 0000; 0xF700
2. Запишите на языке ассемблер процессора ADSP-2181 фрагмент программы, содержащий запись в регистр SR шестнадцатеричного числа C0FEB0B, а также команду, реализующую логическую операцию «ИЛИ» содержимого регистра SR и регистра SR0, логически сдвинутого на 9 разрядов вправо относительно регистра SR1. Ожидаемый результат выполнения команды представьте в двоичном и шестнадцатеричном виде для регистров SR1 и SR0.
Решение: sr0 = 0xEB0B;
sr1 = 0x0C0F;
sr = sr or lshift sr0 by -9 (hi);
Ответ: sr1 = 0000 1100 0111 1111; 0x0C7F
sr0 = 1110 1111 1000 1011; 0xEF8B
3. Запишите следующие десятичные числа в двоичной и шестнадцатеричной системах счисления, используя префиксы 0x и B#, для 16-разрядного процессора:
39 = b#0000 0000 0010 0111; 0x0027
-129 = b#1111 1111 0111 1111; 0xFF7f
0.25 = b#0010 0000 0000 0000; 0x2000
-0.125 = b#1111 0000 0000 0000; 0xF000
1.25 = b#1010 0000 0000 0000; 0xA000
1 Постановка задачи
Средствами сигнального процессора ADSP-2181 реализовать циклический сдвиг 32-разрядного начального вектора V.
2 Исходные данные
Исходные данные представлены в таблице 1.
Таблица 1 — Исходные данные (шестнадцатеричная запись)
№ ПК |
Старшая половина вектора V |
Младшая половина вектора V |
Количество разрядов и направление циклического сдвига |
6 |
0xC5DE |
0xCD6A |
на 7 разрядов вправо |
Таблица 1 — Исходные данные (шестнадцатеричная запись)
3 Структурная схема сдвигателя
Сдвигатель - это устройство сдвига. Осуществляет логические и арифметические сдвиги, нормализацию, денормализацию и операцию получения порядка, а также управление форматом данных, разрешая работу с плавающей точкой.
Структурная схема сдвигателя представлена на рисунке 1, где
SI – регистр операнд
SE – разрядный регистр
SR1 – старший регистр результата
SR0 – младший регистр результата
SR – объединенный регистр результата
R – шина результата
HI - позиция, по отношению к которой рассматривается сдвиг в SR1
LO - позиция, по отношению к которой рассматривается сдвиг в SR0
Рисунок 1. Схема сдвигателя.
4 Блок-схема алгоритма
Блок-схема алгоритма, реализующего циклический сдвиг, представлена на рисунке 2.
Рисунок 2. Блок-схема алгоритма
5 Исходный текст программы
Исходный текст программы, реализующей циклический сдвиг, представлен на рисунке 3.
Рисунок 3. Текст программы
6 Результаты отладки программы
Результаты отладки программы представлены в таблице 2.
-
РЕЗУЛЬТАТЫ
Старшая половина
вектора
Младшая половина
вектора
Предварительный расчет
(двоичная запись)
До сдвига
1100 0101 1101 1110
1100 1101 0110 1010
После сдвига
1101 0101 1000 1011
1011 1101 1001 1010
Предварительный расчет
(шестнадцатеричная запись)
До сдвига
C5DE
CD6A
После сдвига
D58B
BD9A
Результат выполнения программы (двоичная запись)
До сдвига
1100 0101 1101 1110
1100 1101 0110 1010
После сдвига
1101 0101 1000 1011
1011 1101 1001 1010
Результат выполнения программы
(шестнадцатеричная запись)
До сдвига
C5DE
CD6A
После сдвига
D58B
BD9A
Таблица 2 — Результаты отладки программы
7 Результаты работы программы
Результаты работы программы представлены в таблице 3.
РЕЗУЛЬТАТЫ |
Старшая половина вектора V |
Младшая половина вектора V |
Начальное значение |
1100 0101 1101 1110 |
1100 1101 0110 1010 |
1-ая итерация |
1101 0101 1000 1011 |
1011 1101 1001 1010 |
2-ая итерация |
0011 0101 1010 1011 |
0001 0111 0111 1011 |
3-ая итерация |
1111011001101011 |
0101 0110 0010 1110 |
8-ая итерация |
1101 1110 1100 1101 |
0110 1010 1100 0101 |
16-ая итерация |
1100 1101 0110 1010 |
1100 0101 1101 1110 |
32-ая итерация |
1100 0101 1101 1110 |
1100 1101 0110 1010 |
Таблица 3 — Результаты работы программы (двоичная запись)
8. Анализ полученных результатов и выводы
При реализации программы видно, что сдвигать за один машинный цикл можно только один из 16-разрядных регистров SR, при этом содержимое регистра, относительно которого идет сдвиг стирается.
Использованы регистры mr1 и mr0 для записи исходных данных.
Алгоритм циклического сдвига вправо: старшая часть вектора сдвигается вправо и помещается посередине, правая часть младшей части вектора помещается справа, а левая слева.