Разбор демонстрационного примера, выдача индивидуальных заданий
Разбор демонстрационного примера
Дан готовый IP-блок, предназначенный для криптопреобразования входных данных с разрядностью 128 бит и ключом разрядностью 256 бит в соответствии с алгоритмами, изложенными в [3].
Детали поддерживаемых режимов криптопреобразований изложены в [4].
Упрощённая структурная схема блока показана на рисунке 4.1.
Узел зашифрования реализует следующие режимы работы:
- простой замены;
- режим гаммирования;
- режим гаммирования с обратной связью по выходу;
- режим простой замены с зацеплением;
- режим гаммирования с обратной связью по шифртексту.
В блоке отсутствуют средства внешнего доступа (запись или чтение) к итерационным ключам преобразования. Ключ преобразования может быть только записан.
Узел расшифрования включается только в режимах простой замены и простой замены с зацеплением. В остальных режимах в нём нет необходимости в силу обратимости преобразований. В случае синтеза для условий использования какого-либо одного режима (кроме простой замены или простой замены с зацеплением) этот узел исключается из потока обработки данных и может быть удален синтезаторами логики при оптимизации.
Требуется выбрать интерфейсы для подключения к процессорному ядру RISC-V, реализовать аппаратные средства подключения (обертку IP блока), проверить работу на тренировочной плате.
В качестве интерфейсов были выбраны AMBA APB - для управления режимами работы и загрузки ключей шифрования в IP блок; и AXI Stream для потока данных на шифрование. Дополненная структура IP блока (обертка) приведена на рисунке 4.2.
APB Control Port. Узел управления режимами через интерфейс APB [5]. Используется для загрузки ключей шифрования, начальных значений блоков (IV), смены режима зашифровывания, проверки текущего состояния IP- блока. В узле физически отсутствуют каналы пересылок информации, которые могли бы быть использованы для чтения информации об уже загруженном ключе.
AXI Stream Front End. Узел отработки протокола интерфейса AXI Stream [6] при приеме данных. Дополнительный функционал - преобразование ширины шины данных из допустимых в AXI Stream (от 8 бит до 128) в шину данных Кузнечик IP (128 бит, фиксированная).
AXI Stream Back End. Узел преобразования потока данных от узла зашифровывания/расшифровывания в интерфейс AXI Stream, с разрешенной шириной шины данных (от 8 до 128 бит).
AXI Stream Control FSM. Узел управления пересылками данных. Конечный автомат обеспечивает чтение данных из буферов Front End, обработку служебных сигналов Кузнечик IP, размещение данных в FIFO Back End и отработку протокола обмена по выходной шине AXI Stream.
Кузнечик IP - ГОСТ Р 34.13-2015 - узел зашифровывания и расшифровывания данных в соответствии с алгоритмами ГОСТ Р 34.13-2015. Условное графическое отображение IP-блока представлено на рисунке 4.3.
Назначения сигналов представлены в таблице 4.1:
| Название | Направление | Акт. уровень | Описание |
|---|---|---|---|
| Системные сигналы | |||
| ACLK | in | ![]() |
Тактовый сигнал интерфейса AXI Stream (Slave и Master), тактовый сигнал узла криптопреобразования (Кузнечик IP) |
| PCLK | in | ![]() |
Тактовый сигнал интерфейса APB |
| nRst | in | '0' | Системный сигнал перезапуска |
| PRESETn | in | '0' | Сигнал перезапуска интерфейса APB |
| IRQ | out | '1' | Сигнал прерывания для инициатора запроса по шине APB, активный уровень формируется при некоторых изменениях состояния IP-блока |
| Сигналы интерфейса APB | |||
| PAddr | in | Addr | Адрес элемента доступа. Адресация побайтная, Потенциально доступно для доступа 256 байт |
| PWDATA | in | Data | Данные для записи. Ширина шины данных зависит от параметра синтеза и может быть 8, 16 или 32 байта |
| PRDATA | out | Data | Данные при чтении. Ширина шины данных зависит от параметра синтеза и может быть 8, 16 или 32 байта |
| PENABLE | in | '1' | Активный уровень означает прохождение второго и последующих циклов тактового сигнала при обращении к устройству |
| PSEL | in | '1' | Источник запроса генерирует активный уровень индивидуального сигнала PSEL при обращении к каждому устройству |
| PWRITE | in | '1' | Активный уровень означает обращение к устройству для записи. |
| PSTRB | in | '1' | Строб разрешения пересылки отдельного байта в составе шины данных. |
| PREADY | out | '1' | Сигнал готовности к обмену в данном обращении от устройства - приемника запроса |
| PSLVERR | in | '1' | Активный уровень означает ошибку доступа - не разрешенная для обмена зона адресного пространства |
| Сигналы интерфейса AXI Stream (Slave) | |||
| ASF_TDATA | in | Data | AXI Stream Front End Transmission Data. Данные, пересылаемые по интерфейсу AXI Stream. Допустимая ширина шины данных может быть 8,16,32,64 или 128 бит. |
| ASF_TVALID | in | '1' | Признак валидности пересылаемых данных |
| ASF_TREADY | out | '1' | Признак готовности устройства к приёму данных |
| ASF_TDEST | in | - |
Назначение пересылаемого пакета данных. Может принимать следующие значения:
|
| ASF_TKEEP | in | '1' | Индикатор валидности содержимого соответствующего байта, пересылаемого по шине. [6, page 2-24] |
| ASF_TSTRB | in | '1' | Индикатор валидности содержимого соответствующего байта, пересылаемого по шине. [6, page 2-24] |
| ASF_TLAST | in | '1' | Признак последнего слова в пересылаемом пакете. |
| Сигналы интерфейса AXI Stream (Master) | |||
| ASB_TDATA | out | Data | AXI Stream Back End Transmission Data. Данные, пересылаемые по интерфейсу AXI Stream. Допустимая ширина шины данных может быть 8,16,32,64 или 128 бит. |
| ASB_TVALID | out | '1' | Признак валидности пересылаемых данных |
| ASB_TREADY | in | '1' | Признак готовности внешнего приемника устройства к приёму данных |
| ASB_TDEST | out | '1' |
Назначение пересылаемого пакета данных. Может принимать следующие значения:
|
| ASB_TKEEP | out | '1' | Индикатор валидности содержимого соответствующего байта, пересылаемого по шине. [6, page 2-24] |
| ASB_TSTRB | out | '1' | Индикатор валидности содержимого соответствующего байта, пересылаемого по шине. [6, page 2-24] |
| ASB_TLAST | out | '1' | Признак последнего слова в пересылаемом пакете |



