Основы проектирования СнК на базе ядра RISC-V

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

Разбить на страницы
Показывать лекцию целиком

Разбор демонстрационного примера

Дан готовый IP-блок, предназначенный для криптопреобразования входных данных с разрядностью 128 бит и ключом разрядностью 256 бит в соответствии с алгоритмами, изложенными в [3].

Детали поддерживаемых режимов криптопреобразований изложены в [4].

Упрощённая структурная схема блока показана на рисунке 4.1.

(рис 4.1) Упрощенная структура демонстрационного примера

Узел зашифрования реализует следующие режимы работы:

  • простой замены;
  • режим гаммирования;
  • режим гаммирования с обратной связью по выходу;
  • режим простой замены с зацеплением;
  • режим гаммирования с обратной связью по шифртексту.
  • В блоке отсутствуют средства внешнего доступа (запись или чтение) к итерационным ключам преобразования. Ключ преобразования может быть только записан.

    Узел расшифрования включается только в режимах простой замены и простой замены с зацеплением. В остальных режимах в нём нет необходимости в силу обратимости преобразований. В случае синтеза для условий использования какого-либо одного режима (кроме простой замены или простой замены с зацеплением) этот узел исключается из потока обработки данных и может быть удален синтезаторами логики при оптимизации.

    Требуется выбрать интерфейсы для подключения к процессорному ядру RISC-V, реализовать аппаратные средства подключения (обертку IP блока), проверить работу на тренировочной плате.

    В качестве интерфейсов были выбраны AMBA APB - для управления режимами работы и загрузки ключей шифрования в IP блок; и AXI Stream для потока данных на шифрование. Дополненная структура IP блока (обертка) приведена на рисунке 4.2.

    (рис 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.3) УГО демонстрационного примера

    Назначения сигналов представлены в таблице 4.1:

    Назначения сигналов демонстрационного примера
    Название Направление Акт. уровень Описание
    Системные сигналы
    ACLK in $$\uparrow$$ Тактовый сигнал интерфейса AXI Stream (Slave и Master), тактовый сигнал узла криптопреобразования (Кузнечик IP)
    PCLK in $$\uparrow$$ Тактовый сигнал интерфейса 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 -

    Назначение пересылаемого пакета данных. Может принимать следующие значения:

  • '0' - пересылается открытый текст, который будет зашифрован;
  • '1' - пересылается зашифрованный текст, который будет расшифрован.
  • 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'

    Назначение пересылаемого пакета данных. Может принимать следующие значения:

  • '0' - пересылается открытый текст;
  • '1' - пересылается зашифрованный текст.
  • ASB_TKEEP out '1' Индикатор валидности содержимого соответствующего байта, пересылаемого по шине. [6, page 2-24]
    ASB_TSTRB out '1' Индикатор валидности содержимого соответствующего байта, пересылаемого по шине. [6, page 2-24]
    ASB_TLAST out '1' Признак последнего слова в пересылаемом пакете

    Любые более детальные описания сигналов шин APB и AXI Stream и логики их применения могут быть прочитаны только в официальных документах разработчика интерфейсов - [5, 6].

    Требования и соглашения разработки

    В ходе разработки предлагается соблюдать следующие требования и соглашения.

  • Имя любого объявляемого сигнала должно состоять из трех частей - префикс_имя сигнала_суффикс.
  • Префикс - уточнение параметров сигнала. Может принимать следующие значения:

  • n - negative (обязательно), активный уровень сигнала низкий;
  • i - input (опционально), входной сигнал узла (модуля);
  • o - output (опционально), выходной сигнал узла (модуля);
  • io - inout (опционально), двунаправленный сигнал узла (модуля);
  • tri - tristate (опционально), сигнал узла c поддержкой Z-состояния;
  • Суффикс - уточнение типа активности сигнала. Может принимать следующие значения:

  • s - комбинационный сигнал, не хранит значение, изменяется немедленно после изменения логической функции, значение которой ему присваивается;
  • r - регистровый сигнал, сохраняет значение между активными перепадами тактового сигнала;
  • count - счётчик, используется для счёта величин (отработка пауз, счёт данных и т.п.);
  • const - константа, не меняется, задается только один раз при создании сигнала;
  • v - переменная, действует только внутри своего процесса, изменяется мгновенно при изменении логической функции, значение которой ей присваивается;
  • state - состояние конечного автомата.
  • Имя сигнала - осмысленное и понятное имя, отражающее функциональное назначение объявляемого сигнала.

    Элементы имени могут разделяться как подчерками:

  • Сигнал_для_ожидания_таймаута (timeout_wait_signal);
  • Так и заглавными буквами:

  • СигналДляПодсчётаДанныхПакета (DataPackageCount).
  • Сигналу может присваиваться значение только в пределах одного простого:

    Y <= A or B;
    

    Или сложного оператора:

    if (x = '0') then Y <= A xor D;
    else
    if (data_count = x"00") then Y <= not(A) or (B and C);
    end if; end if;
    
  • В пределах одного сложного оператора должно обеспечиваться присвоение только одного сигнала.
  • Перечень вариантов индивидуальных заданий

    Для формирования индивидуальных заданий можно воспользоваться следующим перечнем направлений разработки.

  • Разработка ONFI-совместимого контроллера флэш-памяти NAND (интерфейс Wishbone)
  • Разработка цепочечного (chained, scatter-gather) узла DMA в окружении системного интерконнекта AXI.
  • Разработка контроллера SPI, для обеспечения обмена данными между serial Flash и Wishbone.
  • Разработка двунаправленного преобразователя ширины шины данных для интерфейса AXI Stream, характеристики преобразования статичны - задаются параметрами синтеза.
  • Разработка арбитра доступа к памяти - N каналов Wishbone в один канал записи/чтения статической памяти.
  • Изменить адресацию периферийных блоков.
  • Добавить новый компонент на APB шину (UART интерфейс).
  • Добавить новый компонент на AXI шину (SRAM память).
  • Разработать модуль перестройки тактовой частоты работы процессора.
  • Разработка модуля вычисления контрольной суммы (алгоритм - на выбор обучающегося) для заданного пакета данных.
  • Вопросы для самостоятельной работы

  • Обсудить дополнения в структуру разрабатываемого устройства для подключения к шине AXI-Lite
  • Обсудить дополнения в структуру разрабатываемого устройства для подключения к шине Wishbone.
  • Обсудить дополнения в структуру разрабатываемого устройства для подключения к шине AHB.
  • Обсудить дополнения в структуру разрабатываемого устройства для подключения к шине AXI.
  • Страницы:

    Разбор демонстрационного примера

    Дан готовый IP-блок, предназначенный для криптопреобразования входных данных с разрядностью 128 бит и ключом разрядностью 256 бит в соответствии с алгоритмами, изложенными в [3].

    Детали поддерживаемых режимов криптопреобразований изложены в [4].

    Упрощённая структурная схема блока показана на рисунке 4.1.

    (рис 4.1) Упрощенная структура демонстрационного примера

    Узел зашифрования реализует следующие режимы работы:

  • простой замены;
  • режим гаммирования;
  • режим гаммирования с обратной связью по выходу;
  • режим простой замены с зацеплением;
  • режим гаммирования с обратной связью по шифртексту.
  • В блоке отсутствуют средства внешнего доступа (запись или чтение) к итерационным ключам преобразования. Ключ преобразования может быть только записан.

    Узел расшифрования включается только в режимах простой замены и простой замены с зацеплением. В остальных режимах в нём нет необходимости в силу обратимости преобразований. В случае синтеза для условий использования какого-либо одного режима (кроме простой замены или простой замены с зацеплением) этот узел исключается из потока обработки данных и может быть удален синтезаторами логики при оптимизации.

    Требуется выбрать интерфейсы для подключения к процессорному ядру RISC-V, реализовать аппаратные средства подключения (обертку IP блока), проверить работу на тренировочной плате.

    В качестве интерфейсов были выбраны AMBA APB - для управления режимами работы и загрузки ключей шифрования в IP блок; и AXI Stream для потока данных на шифрование. Дополненная структура IP блока (обертка) приведена на рисунке 4.2.

    (рис 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.3) УГО демонстрационного примера

    Назначения сигналов представлены в таблице 4.1:

    Назначения сигналов демонстрационного примера
    Название Направление Акт. уровень Описание
    Системные сигналы
    ACLK in $$\uparrow$$ Тактовый сигнал интерфейса AXI Stream (Slave и Master), тактовый сигнал узла криптопреобразования (Кузнечик IP)
    PCLK in $$\uparrow$$ Тактовый сигнал интерфейса 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 -

    Назначение пересылаемого пакета данных. Может принимать следующие значения:

  • '0' - пересылается открытый текст, который будет зашифрован;
  • '1' - пересылается зашифрованный текст, который будет расшифрован.
  • 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'

    Назначение пересылаемого пакета данных. Может принимать следующие значения:

  • '0' - пересылается открытый текст;
  • '1' - пересылается зашифрованный текст.
  • ASB_TKEEP out '1' Индикатор валидности содержимого соответствующего байта, пересылаемого по шине. [6, page 2-24]
    ASB_TSTRB out '1' Индикатор валидности содержимого соответствующего байта, пересылаемого по шине. [6, page 2-24]
    ASB_TLAST out '1' Признак последнего слова в пересылаемом пакете

    Любые более детальные описания сигналов шин APB и AXI Stream и логики их применения могут быть прочитаны только в официальных документах разработчика интерфейсов - [5, 6].

    Требования и соглашения разработки

    В ходе разработки предлагается соблюдать следующие требования и соглашения.

  • Имя любого объявляемого сигнала должно состоять из трех частей - префикс_имя сигнала_суффикс.
  • Префикс - уточнение параметров сигнала. Может принимать следующие значения:

  • n - negative (обязательно), активный уровень сигнала низкий;
  • i - input (опционально), входной сигнал узла (модуля);
  • o - output (опционально), выходной сигнал узла (модуля);
  • io - inout (опционально), двунаправленный сигнал узла (модуля);
  • tri - tristate (опционально), сигнал узла c поддержкой Z-состояния;
  • Суффикс - уточнение типа активности сигнала. Может принимать следующие значения:

  • s - комбинационный сигнал, не хранит значение, изменяется немедленно после изменения логической функции, значение которой ему присваивается;
  • r - регистровый сигнал, сохраняет значение между активными перепадами тактового сигнала;
  • count - счётчик, используется для счёта величин (отработка пауз, счёт данных и т.п.);
  • const - константа, не меняется, задается только один раз при создании сигнала;
  • v - переменная, действует только внутри своего процесса, изменяется мгновенно при изменении логической функции, значение которой ей присваивается;
  • state - состояние конечного автомата.
  • Имя сигнала - осмысленное и понятное имя, отражающее функциональное назначение объявляемого сигнала.

    Элементы имени могут разделяться как подчерками:

  • Сигнал_для_ожидания_таймаута (timeout_wait_signal);
  • Так и заглавными буквами:

  • СигналДляПодсчётаДанныхПакета (DataPackageCount).
  • Сигналу может присваиваться значение только в пределах одного простого:

    Y <= A or B;
    

    Или сложного оператора:

    if (x = '0') then Y <= A xor D;
    else
    if (data_count = x"00") then Y <= not(A) or (B and C);
    end if; end if;
    
  • В пределах одного сложного оператора должно обеспечиваться присвоение только одного сигнала.
  • Перечень вариантов индивидуальных заданий

    Для формирования индивидуальных заданий можно воспользоваться следующим перечнем направлений разработки.

  • Разработка ONFI-совместимого контроллера флэш-памяти NAND (интерфейс Wishbone)
  • Разработка цепочечного (chained, scatter-gather) узла DMA в окружении системного интерконнекта AXI.
  • Разработка контроллера SPI, для обеспечения обмена данными между serial Flash и Wishbone.
  • Разработка двунаправленного преобразователя ширины шины данных для интерфейса AXI Stream, характеристики преобразования статичны - задаются параметрами синтеза.
  • Разработка арбитра доступа к памяти - N каналов Wishbone в один канал записи/чтения статической памяти.
  • Изменить адресацию периферийных блоков.
  • Добавить новый компонент на APB шину (UART интерфейс).
  • Добавить новый компонент на AXI шину (SRAM память).
  • Разработать модуль перестройки тактовой частоты работы процессора.
  • Разработка модуля вычисления контрольной суммы (алгоритм - на выбор обучающегося) для заданного пакета данных.
  • Вопросы для самостоятельной работы

  • Обсудить дополнения в структуру разрабатываемого устройства для подключения к шине AXI-Lite
  • Обсудить дополнения в структуру разрабатываемого устройства для подключения к шине Wishbone.
  • Обсудить дополнения в структуру разрабатываемого устройства для подключения к шине AHB.
  • Обсудить дополнения в структуру разрабатываемого устройства для подключения к шине AXI.
  • Вернуться к учебному плану