Добавил:
Да поможет вам Котельников Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР2

.doc
Скачиваний:
12
Добавлен:
23.06.2024
Размер:
93.18 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования

Московский технический университет связи и информатики

Кафедра многоканальных телекоммуникационных систем

Лабораторная работа № 2

по дисциплине

Цифровые системы передачи и методы их защиты

Исследование эффектов ограничения разрядной сетки при цифровой криптографической обработке сигналов

Бригада № 5

Выполнил:

студент гр. БЗС2002

Ломакин А. А.

Проверила:

ст. пр. Зуйкова Т. Н.

Москва 2023

1 Постановка задачи

Изучить архитектуру и систему команд сигнального процессора ADSP-2181 в среде VisualDSP++ и исследовать работу подпрограммы деления целых чисел в простых полях Галуа с учетом эффекта ограничения разрядной сетки со стороны старших разрядов.

2 Краткая теория

Порядок разработки алгоритма подпрограммы вычисления остатка от деления:

- Записать значение 32-разрядного делимого (16+16 разрядов) в пару регистров AF AY0. Значение 16-разрядного делителя записать в регистр АХ0.

- Содержимое регистра состояния ASTAT установить в 0 (при делении положительных чисел бит AQ = 0). 8-разрядный регистр состояния ASTAT содержит признаки, формируемые АЛУ, умножителем-накопителем и сдвигателем: SS, MV, AQ, AS, AC, AV, AN, AZ.

- Убедиться, что значение делителя не равно нулю, в противном случае завершить выполнение подпрограммы и выставить флаг невозможности деления AV = 1 (соответственно ASTAT=4).

- Проанализировать значение старшего разряда делителя. Если значение старшего разряда делителя равно нулю, то для вычисления частного следует 17 раз выполнить команду divq AX0. В противном случае следует сдвинуть значение делителя на один разряд вправо, например, с использованием сдвигателя, и для вычисления частного 16 раз выполнить команду divq dreg, где dreg – имя регистра, содержащего результат сдвига.

- Частное сформируется в регистре AY0.

- Для случая, когда старший разряд делителя равен единице, проанализировать значение младшего разряда делителя, и, если оно равно единице, вычесть единицу из частного.

- Вычислить остаток от деления по формуле: MR = MR - AX0* AY0,

где MR – делимое; AX0 – делитель; AY0 – частное. Значение остатка будет представлено в регистре MR0.

3 Блок-схема подпрограммы деления

Рисунок 1 – блок-схема подпрограммы деления

4 Разработанная блок-схема алгоритма

Рисунок 2 – блок-схема алгоритма

5 Текст подпрограммы деления

delen: mr1 = dm(aa1);

mr0 = dm(aa2);

ax1 = dm(aa1);

af = pass ax1; // старший разряд

ay0 = dm(aa2); // младший разряд

ax0 = dm(aa3); // делитель

ASTAT = 0; // обнуление признаков

ar = pass ax0;

if ne jump deli; // если результат в АЛУ (т.е. ar) не равен нулю, то прыгнем дальше

astat = 4;

rts;

deli: if gt jump deli_0; // результат в АЛУ больше 0 (старший разряд делителя 0)

if lt jump deli_1; // результат в АЛУ меньше 0 (старший разряд делителя 1)

deli_1: sr1 = ax0;

sr = lshift sr1 by -1(hi);

16 раз divq sr1;

ar = ay0;

af = tstbit 0 of ax0;

if ne ar = ar - 1;

mr2 = 0;

my0 = ax0;

ar = pass ay0;

mr = mr - ar * my0 (uu);

rts;

deli_0: 17 раз divq AX0;

mr2 = 0;

my0 = ax0;

ar = pass ay0;

mr = mr - ar * my0 (uu);

rts;

6 Выводы

В ходе лабораторной работы был проанализирован процесс деления целых чисел в полях Галуа на микропроцессоре. Я познакомился с уже разработанной программой деления, разобрался, как она работает и разработал к ней блок-схему. После мною была составлена своя блок-схема алгоритма деления, по которой был написан код в VisualDSP++. Важно отметить, что в ходе лабораторной были задействованы условия, по которым проверялся делитель, например, на то, не равен ли он нулю. Также были задействованы регистры АЛУ и умножителя и использована команда divq.

6

Соседние файлы в предмете Цифровые системы передачи