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

LR7_CSP

.docx
Скачиваний:
0
Добавлен:
12.05.2024
Размер:
702.02 Кб
Скачать

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

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

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

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

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

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

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

РЕАЛИЗАЦИЯ И ИССЛЕДОВАНИЕ СВОЙСТВ ЛИНЕЙНОГО КОНГРУЭНТНОГО ГЕНЕРАТОРА ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ

Бригада №

Выполнил: студент гр. бкк2001

Проверила: Зуйкова Т.Н.

Москва 20

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

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

  1. Изучить, используя архитектуру и взаимодействие основных узлов сигнального процессора ADSP-2181, а также правила написания программ и псевдоинструкций ассемблера.

  2. Изучить в подразделе 5.4 практикума подпрограмму вычисления остатка от деления 32-разрядного целого беззнакового числа на аналогичное по формату 16-разрядное. Особое внимание следует обратить на команду поразрядного деления в АЛУ divq.

  3. Проанализировать поставленную задачу для лабораторной работы и исходные данные, представленные в таблице 1. Выполнить предварительный расчет конгруэнтной процедуры

Xi=( A * Xi-1 + B ) mod m.

Результаты вычислений, представленные в десятичной и шестнадцатеричной системах счисления, занести в таблицу 2.

Исходные данные

Исходные данные соответствуют номеру студенческого билета, представлены в таблице 1.

Таблица 1 — Исходные данные

№ПК

6

А

421

B

1663

m

7875

Результаты предварительного расчета и отладки подпрограммы конгруэнтного генератора псевдослучайных чисел

Таблица 2 – Предварительный расчет

Предварительный расчет

Десятичный беззнаковый целочисленный формат

Шестнадцатеричный беззнаковый целочисленный формат

А =

421

0x01А5

B =

1663

0x067F

m =

7875

0x1EC3

X0 = 0

0

0x0000

X1 = B =

1663

0x067F

A * X1 + B =

62 50214

0xA 0XB55A

(A * X1 + B): m =

89

0x0059

X2=(A * X1 + B)mod m=

911

0x038F

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

Линейный конгруэнтный генератор использует для вычисления очередного значения ПСЧ выражение:

Xi = (A * Xi - 1 + B) mod m

где Xi – это i-й член последовательности;

Xi - 1 – предыдущий член последовательности;

A, B, m – постоянные параметры.

В отличие от генераторов ПСП, нулевая комбинация X0 = 0 не является запрещенной для конгруэнтных генераторов; последовательность ПСЧ максимальной длины определяется выбором параметров А и В для требуемого значения m. Период генерации ПСЧ равен значению m.

Блок-схема алгоритма линейного конгруэнтного генератора ПСЧ

Блок-схема представлена на рисунке 1.

Рисунок 1 — Блок-схема подпрограммы конгруэнтного генератора ПСЧ

5 Исходный текст программы

Исходный текст подпрограммы, реализующей конгруэнтный генератор псевдослучайных чисел, представлен ниже.

При разработке подпрограммы рекомендуется соблюдать следующую последовательность действий, в соответствии с презентацией к лабораторной работе в ЭУ МТУСИ:

- объявить переменные;

- выбрать режим;

- организовать цикл по условию;

- выполнить необходимые операции;

- обновить значения переменных;

- выйти из цикла по условию;

- определить искомые значения.

.section/dm vars;

.var A = 421;

.var B = 1663;

.var m = 7875;

.section/pm varsp;

.section/pm program;

jump start;

delen:

AF = pass MR1;

AY0 = MR0;

ASTAT = 0;

AR = pass ax0;

if NE jump del;

ASTAT = 4;

rts;

del:

AR = pass AX0;

if GT jump large;

if LT jump smol;

large:

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 (SS);

rts;

smol:

SR1 = AX0;

SR = lshift SR1 by -1(HI);

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;

AR = pass AY0;

if EQ jump zero;

AF = tstbit 0 of AX0;

if NE AR = AR - 1;

zero:

MR2 = 0;

MY0 = AX0;

MR = MR - AR*MY0 (SS);

rts;

start: dis ar_sat;

ena m_mode;

my1 = 1;

mr0 = 0;//X0

ax0 = dm(m);//m

mx1 = dm(B);//B

io(0) = mr0;

do metka until forever;

my0 = dm(A);//A

mx0 = mr0;//X

mr = mx0 * my0(UU);

mr = mr + mx1 * my1(UU);

call delen;

metka: io(0) = mr0; //результат наибольшего общего делителя

7 Анализ полученных результатов

При ручном расчёте конгруэнтного генератора псевдослучайных чисел значения совпали с работой программы, следовательно, программа разработанная программа реализована правильно.

8 Выводы

При реализовав программу был создан конгруэнтный генератор. Правильность работы генератора подтверждена, период генератора равен m. Разработанный генератор выдаёт период равный 7875, соответственно равен данному периоду.

Данный генератор создан для разработки программы генерации ключей, работы с псевдослучайными числами (ПСЧ). Криптографически созданный генератор слаб, уязвимый набор последовательностей и высокая загрузка вычислительной части.

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