RISC-V для FPGA - архитектура, микроархитектурные реализации

Задания

Показывать лекцию целиком
  • Спланируйте расширение и кодировку опкодов команд цифровой обработки сигналов (арифметика с насыщением):

  • сложение с насыщением - SAT.ADD;
  • вычитание с насыщением - SAT.SUB;
  • умножение с насыщением - SAT.MUL;
  • умножение полуслов с накоплением в полном регистре - MAC.H;
  • умножение с насыщением полуслов с накоплением в полном регистре SAT.MAC.H;

    А) В варианте применения для кодирования свободных кодов функциональных полей.

    Б) в варианте кастомного расширения.

  • Модифицируйте дешифратор команд, что бы он воспринимал ваши расширения системы команд, реализованное в п.1 (отдельно для вариантов А) и Б). Протестируйте решение.
  • Модифицируйте АЛУ для распознавания ваших новых опкодов и функциональных расширений. Поверьте полученное решение.
  • Интегрируйте АЛУ в один вариантов процессора. Протестируйте поведение системы.
  • Параметризируйте количество теневых регистров в файл-регистре и программном счётчике.
  • Интегрируйте системный таймер (из раздела многопоточный процессор) в адресное пространство регистров CSR, можно использовать определённые в стандартом RV.
  • Модифицируйте Hart_table для поддержки произвольного количества нитей/хартов.
  • Интегрируйте Hart_table в адресное пространство CSR регистров.
  • Разделите "память программ" и "память данных" на два отдельных модуля для представленной микроархитектуры (например, для её многотактного варианта).
  • Напишите "загрузчик" памяти программ по UART.

    UART-загрузчик позволяет инициализировать только память программ. Предлагаемый алгоритм работы загрузчика:

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

  • В предложенной микроархитектуре укажите не точное соответствие спецификации RV32I (основное, т.к. возможно оно не единственное)).
  • Вернуться к учебному плану