LR2_CSP
.docxМИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ
Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования
Московский технический университет связи и информатики
Кафедра многоканальных телекоммуникационных систем
Лабораторная работа № 2
по дисциплине
Цифровые системы передачи и методы их защиты
ИССЛЕДОВАНИЕ ЭФФЕКТОВ ОГРАНИЧЕНИЯ РАЗРЯДНОЙ СЕТКИ ПРИ ЦИФРОВОЙ КРИПТОГРАФИЧЕСКОЙ ОБРАБОТКЕ СИГНАЛОВ
Бригада №
Выполнил: студент гр. бкк2001
Проверила: Зуйкова Т.Н.
Москва 20
Постановка задачи
В среде автоматизированного проектирования программного обеспечения VisualDSP++ исследовать работу подпрограммы деления целых чисел в простых полях Галуа с учетом эффекта ограничения разрядной сетки со стороны старших разрядов.
Алгоритм вычисления остатка от деления целых положительных чисел на сигнальном процессоре ADSP-2181:
- Записать значение 32-разрядного делимого (16+16 разрядов) в пару регистров AF AY0. Значение 16-разрядного делителя записать в регистр АХ0.
- Содержимое регистра состояния ASTAT установить в 0 (при делении положительных чисел бит AQ = 0).
- Убедиться, что значение делителя не равно нулю, в противном случае завершить выполнение подпрограммы и выставить флаг невозможности деления AV = 1 (соответственно ASTAT=4).
- Проанализировать значение старшего разряда делителя.
Если значение старшего разряда делителя равно нулю, то для вычисления частного следует 17 раз выполнить команду divq AX0.
В противном случае следует сдвинуть значение делителя на один разряд вправо, например, с использованием сдвигателя, и для вычисления частного 16 раз выполнить команду divq dreg, где dreg – имя регистра, содержащего результат сдвига.
- Частное сформируется в регистре AY0.
- Для случая, когда старший разряд делителя равен единице, проанализировать значение младшего разряда делителя, и, если оно равно единице, вычесть единицу из частного.
- Вычислить остаток от деления по формуле:
MR = MR - AX0* AY0, где MR – делимое; AX0 – делитель; AY0 – частное.
Значение остатка будет представлено в регистре MR0.
Разработанная блок-схема алгоритма
Разработанная блок-схема алгоритма представлена в графическом виде в соответствии с действующими стандартами.
Текст подпрограммы деления delen_p
Записать разработанную подпрограмму.
.section/dm vars;
.var b = 2531;
.var a = 430;
.var m = 11979;
.SECTION/PM program;
jump start; rti; rti; rti;
rti; rti; rti; rti;
rti; rti; rti; rti;
rti; rti; rti; rti;
rti; rti; rti; rti;
rti; rti; rti; rti;
rti; rti; rti; rti;
rti; rti; rti; rti;
rti; rti; rti; rti;
rti; rti; rti; rti;
rti; rti; rti; rti;
delen: nop;
af = pass mr1;
ay0 = mr0;
ar = pass ax0;
if gt jump deli;
llll: if lt jump deli2;
astat = 4;
rts;
deli: astat = 0;
divq ax0; divq ax0; divq ax0; divq ax0;
divq ax0; divq ax0; divq ax0; divq ax0;
divq ax0; divq ax0; divq ax0; divq ax0;
divq ax0; divq ax0; divq ax0; divq ax0;
divq ax0;
mr2 = 0;
my0 = ax0, ar = pass ay0;
mr = mr - ar * my0 (uu);
rts;
deli2: sr1 = ax0;
sr = lshift sr1 by -1(hi);
astat = 0;
divq sr1; divq sr1; divq sr1; divq sr1;
divq sr1; divq sr1; divq sr1; divq sr1;
divq sr1; divq sr1; divq sr1; divq sr1;
divq sr1; divq sr1; divq sr1; divq sr1;
mr2 = 0;
my0 = ax0, ar = pass ay0;
af = tstbit 0xf of sr0;
if ne ar = ar - 1;
ay0 = ar;
mr = mr - ar * my0 (uu);
rts;
start: nop;
dis ar_sat;
ena m_mode;
mr0=0; //x=0
my1=dm(a);
mx1=dm(b);
mx0=dm(m);
call delen;
end: nop;
jump end;
Выводы
Особое внимание уделено, в программе деления целочисленному формату данных и правилам формирования и хранения признаков, а также мнемокодам условных операций АЛУ.
Операция деления целых чисел в простых полях Галуа реализована в разработанной оригинальной подпрограмме delen.
Самостоятельно разработана блок-схема в подпрограмме delen.
Произведена проверка работы готовой подпрограммы delen на примере конгруэнтного генератора.
Произведено ознакомление с алгоритмом вычисления остатка от деления целых положительных чисел на сигнальном процессоре ADSP-2181.