Проектирование RTL: систолические массивы
Постройте параметризованный массив умножения матриц из знаковой арифметики MAC, сдвигов входных потоков и обрабатывающих элементов, затем проверьте разбиение на блоки, управление потоком и точное поведение на каждом фронте.
Чему вы научитесь
- Отображать индексы матриц и скалярные произведения на обрабатывающие элементы
- Выбирать разрядности знакового произведения, аккумулятора и выхода с фиксированной точкой
- Планировать массивы 2×2 и N×N с неподвижным выходом и сдвинутыми входами
- Задавать valid, метки, остановки и сброс точным соглашением о фронтах
- Проверять границы блоков, полосу пропускания и итоговый проект таблицей ожидаемых результатов
Перед началом
Упражнения в браузере используют учебные модели и не компилируют и не запускают HDL. Для отдельного запуска исходного кода следуйте руководству Digital Design Studio для вашей ОС и войдите в аккаунт, если этого требует операция.
Установка и первый запуск ↗ · Загрузки ↗Программа
- Матрицы и арифметические требования
- Отобразите скалярные произведения на обрабатывающие элементыТеория
Разделяйте индексы строки, столбца и свёртки и вычислите небольшую эталонную матрицу.
- Знаковые произведения и разрядность аккумулятораТеория
Выведите разрядность аккумулятора из наихудшего диапазона операндов.
- Правила выхода с фиксированной точкойТеория
Разделяйте масштаб входа, округление отрицательных чисел, насыщение и циклическое переполнение.
- Проверьте арифметическую спецификациюПроверка знаний
Выбирайте разрядность аккумулятора по полной длине свёртки.
- Обрабатывающие элементы и достоверные токены
- Соглашение об одном переднем фронтеТеория
Зафиксируйте нумерацию фронтов, регистровую пересылку, накопление и приоритет инициализации.
- Лабораторная работа: обрабатывающий элемент со знаковым MACПрактика
Используйте автономную модель для проверки достоверных операндов, остановок и очистки.
- Флаги valid, метки и очисткаТеория
Различайте числовой ноль, пустые токены и токены другого задания.
- Проверьте управление обрабатывающим элементомПроверка знаний
Определите состояние, которое нужно удерживать во время паузы.
- Массивы и расписания входов
- Поток с неподвижным выходом и другие вариантыТеория
Сравнивайте хранение и передачу, определяя, что остаётся в PE.
- Лабораторная работа: массив 2×2 со сдвигом входовПрактика
Моделируйте задержки пересылки в один фронт и проверяйте каждый промежуточный аккумулятор.
- Масштабируйте до N×N и считайте фронты завершенияТеория
Параметризуйте пространственный размер N отдельно от длины свёртки K.
- Проверьте расписание и завершениеПроверка знаний
Различайте последнюю подачу и доступность последнего результата.
- Разбиение на блоки, полоса пропускания и управление потоком
- Разбиение на блоки и граничное дополнениеТеория
Отобразите большие матрицы на меньшую сетку, обрабатывая нулевое дополнение и выходные маски.
- Полоса пропускания и полезная загрузкаТеория
Отделяйте пиковую мощность MAC от затрат заполнения, опустошения, дополнения и памяти.
- Лабораторная работа: обратное давление и сбросПрактика
Выполните глобальную паузу, удержание результата и сброс прерванного задания.
- Проверьте дополнение и полосу пропусканияПроверка знаний
Различайте достоверность операнда и допустимость адреса результата.
- Верификация и итоговый проект
- Таблицы ожидаемых результатов и инвариантыТеория
Проверяйте члены, метки, фронты и передачи выходов помимо итоговой матрицы.
- Спроектируйте знаковые и граничные тестыТеория
Совместите арифметические границы, границы формы и управления за пределами одного благополучного примера.
- Итоговый проект: модель верификации N×N с блокамиПрактика
Совместите произвольные N и K с дополнением и паузами и сравните с независимым эталоном.
- Проверка интеграции RTL и расширенияТеория
Соедините учебную модель с интерфейсами RTL и свидетельствами верификации.