Altifigence Academy
Цифровое проектированиеБесплатно · Основы

Основы проектирования RTL

Описывайте цифровые схемы на SystemVerilog. Изучите типы, разрядность, знак, комбинационную и последовательностную логику, модули, параметры и generate. Проверяйте граничные случаи и ошибки независимыми тестовыми стендами. В завершение соедините генератор периодических импульсов с накопителем и сохраните воспроизводимые результаты.

SystemVerilogПроектирование модулейТестовые стенды
Моё обучение

Чему вы научитесь

  • Определять разрядность, знак, источник сигнала, момент достоверности и значение сброса каждого сигнала.
  • Отделять полные комбинационные присваивания от обновления состояния по такту.
  • Создавать статические структуры с помощью параметров и generate и проверять граничные конфигурации.
  • Соединять модули именованными портами и использовать функции.
  • Писать стимулы без гонок и независимые эталонные модели.
  • Различать подтверждения компиляции, моделирования, синтеза и выполнения в DDS.

Перед началом

Упражнения в браузере используют учебные модели и не компилируют и не запускают HDL. Для отдельного запуска исходного кода следуйте руководству Digital Design Studio для вашей ОС и войдите в аккаунт, если этого требует операция.

Установка и первый запуск ↗ · Загрузки ↗

Программа

  1. RTL и контракты модулей
    • RTL: описание одновременно работающих схемТеория

      Отделите порядок программных действий от параллельной структуры и задайте текущее состояние, следующее состояние и момент наблюдения.

    • Сигналы и порты: контракт ширины, направления и времениТеория

      Читайте интерфейс и разделяйте критерии проверки комбинационного выхода и выхода состояния.

    • Модули, порты и экземпляры: соединения как контрактыТеория

      Соединяйте комбинационные модули по именам портов и проверяйте единственный источник и границы иерархии.

    • Проверка: комбинационный и сохранённый выходПроверка знаний

      Различайте изменение входа и наблюдение регистра.

  2. Типы, разрядность, знак и выражения
    • logic, wire, X/Z и явная разрядностьТеория

      Разделите тип, источник и хранение; проверьте литералы, сравнения, расширения и неизвестные значения.

    • Индексы векторов, порядок битов и знакТеория

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

    • Ширина срезов, конкатенации и повторенияТеория

      Стройте тракт данных, рассчитывая суммарную ширину соединённых сигналов и условия сохранения значения.

    • Дополнительный код, расширение знака и переполнениеТеория

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

    • Проверка: диапазон и явное расширениеПроверка знаний

      Проверяйте входную и выходную разрядность вместе.

  3. Полный комбинационный RTL и проверка
    • Комбинационный RTL и полные присваиванияТеория

      Выразите одну функцию условным оператором и always_comb, найдите пропуски, создающие защёлку.

    • Шифратор и приоритет: выбор одного из нескольких запросовТеория

      Различайте условие one-hot для обычного шифратора и выходы приоритетного шифратора: valid и результат выбора.

    • Проверка MUX: полный перебор и свойстваТеория

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

    • Проверка проекта: эквивалентность выбора и момент наблюденияПроверка знаний

      Различайте проверки, для которых достаточно таблицы истинности, и проверки, требующие наблюдения такта.

  4. Состояние, присваивания и приоритет сброса
    • Триггеры, enable и приоритет управленияТеория

      Задайте хранение, загрузку и сброс функцией следующего состояния и избегайте непреднамеренного стробирования такта.

    • Неблокирующие присваивания и одновременное обновление состоянияТеория

      Разделяйте прежние и следующие значения для точного понимания RTL конвейеров и счётчиков.

    • Модульные и насыщающие счётчики, импульс завершенияТеория

      Задайте обработку максимума и точный цикл сигнала terminal-count.

    • Практикум: сброс, циклический переход и инварианты счётчикаПрактика

      Сравните состояние на каждом положительном фронте с эталоном, разделите влияние начального значения, сброса и ширины.

    • Проверка проекта: границы ширины, приоритета и циклического переходаПроверка знаний

      Оцените граничные значения и одновременные управления по заданной спецификации переходов.

  5. Параметры и построение статических структур
    • parameter, localparam, $clog2 и граничные конфигурацииТеория

      Разделите входы времени выполнения и настройку, проектируя ширину и завершение для N=1 и значений N, не являющихся степенями двойки.

    • generate: построение статических схем цикламиТеория

      Используйте genvar и generate-if для именованной иерархии и проверьте размещение каналов.

    • function automatic и повторно используемые выраженияТеория

      Пишите функции без затрат времени моделирования и проверяйте ширину, знак и независимость эталона.

    • Проверка: N=1 и разрядностьПроверка знаний

      Отделяйте минимальную ширину от допустимых состояний.

  6. Тестовые стенды и независимая проверка
    • Моменты выборки и причинность на временных диаграммахТеория

      Читайте диаграммы, разделяя установление комбинационной логики, захват тактом и порядок событий.

    • Практика: тестовый стенд, самостоятельно сообщающий ошибкиПрактика

      Разделите DUT, стимулы, эталон и сравнения для проверки сброса, enable и возврата без гонок.

    • План проверки, покрытие и независимый эталонТеория

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

    • Отладка счётчика и минимальные контрпримерыТеория

      Спроектируйте короткие тесты, различающие ошибки reset, enable и перехода через границу.

    • Проверка: эталоны и гонкиПроверка знаний

      Выберите независимые ожидания и наблюдение после обновления.

  7. Соединение модулей и комплексная практика
    • Конечный автомат: разделение состояния, переходов и выходовТеория

      Постройте FSM по таблице спецификации и сравните выходы Мура и Мили, недопустимые состояния и политику запросов.

    • Итоговый проект: детектор перекрывающейся последовательности 101Теория

      Объедините минимизацию состояний, действительность входа, выход регистра и независимую эталонную проверку.

    • Ready/valid и эластичный буфер на один элементТеория

      Спроектируйте передачу без потерь и повторов, включая одновременный ввод и вывод в останавливаемом тракте.

    • Конвейер умножения и сложения, выравнивание данныхТеория

      Разделите вычисление регистрами и сохраните принадлежность данных, valid и вспомогательных операндов одной транзакции.

    • Комплексная практика: периодические импульсы и разрешаемый накопительПрактика

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

  8. Диагностика инструментов и границы результатов
    • Setup, hold и временной бюджетТеория

      Разделите максимальные и минимальные задержки путей и рассчитайте условие hold, независимое от частоты такта.

    • Границы тактовых доменов и метастабильностьТеория

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

    • Компиляция, lint и синтез: границы диагностикиТеория

      Фиксируйте исходники, верхний модуль и язык; различайте синтаксис, ширину, защёлки и функциональную проверку.

    • Записи выполнения и продолжение практики DDSТеория

      Передайте исходники, входы, ожидания, ошибки и версии для воспроизводимой практики.

    • Итоговая проверка: функция и подтвержденияПроверка знаний

      Отделите локальные результаты от бесплатной практики DDS.

Выбор действует в этом браузере. Его можно изменить внизу страницы.