Структура модуля
Часть раздела Основы путешествия по Verilog на Coddy. Урок 30 из 90.
Модуль — это базовый строительный блок в Verilog. Каждая конструкция состоит из модулей, соединённых друг с другом для создания более крупных систем.
Модуль — это аппаратный компонент, у которого есть:
- Имя
- Входы (поступающие сигналы)
- Выходы (исходящие сигналы)
- Внутренняя логика (что делает модуль)
Представь себе модуль как чип с контактами и внутренней схемой.
Основная структура модуля
Каждый модуль имеет следующую структуру:
module module_name (
input signals,
output signals
);
// Внутренние объявления (провода, регистры и т. д.)
// Логика (операторы assign, блоки always и т. д.)
endmoduleЧасти модуля
| Часть | Назначение |
|---|---|
ключевое слово module | Начинает определение модуля |
module_name | Имя модуля |
( ) | Список входных и выходных портов |
input / output | Объявляют направление порта |
| Тело модуля | Внутренняя логика и соединения |
endmodule | Завершает определение модуля |
Простой пример модуля
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmoduleЭтот модуль:
- Называется
and_gate - Имеет два входа (
a,b) - Имеет один выход (
c) - Содержит одну инструкцию
assign, определяющую логику
Правила структуры модуля
- Один модуль на файл — распространённая практика
- Имя модуля должно описывать его функцию
- Порты перечисляются в скобках после имени
- Входы всегда являются
input(нельзя записывать внутрь) - Выходы — это
output(может бытьregилиwire) endmoduleдолжен закрывать модуль
Задание
Заполните пропущенные части, чтобы завершить этот модуль.
Что нужно сделать:
- Добавьте имя модуля
my_and - Добавьте
inputдляx - Добавьте
inputдляy - Добавьте
outputдляz - Добавьте внутреннюю логику с помощью
assign
Попробуйте сами
module ______ ( // Добавьте имя модуля
input x, // Добавьте вход
input y, // Добавьте вход
output z // Добавьте выход
);
// Добавьте здесь оператор assign (z = x & y)
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Введение
Что такое VerilogАппаратное и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Операторы. Часть 1
Арифметические операторыОператор взятия остаткаОператоры сравненияПовторение — простая математикаПобитовые операторы7Присваивание и логические элементы
Непрерывное присваиваниеПрисваивание с операторамиВстроенные примитивы логических элементовЭлементы И, ИЛИ и НЕЭлементы XOR и XNORПовторение — схема на логических элементах10Принятие решений
Оператор ifif—elseПовторение — простой компараторОператор casecaseх и casezПовторение — проектирование ALU5Операторы, часть 2
Логические операторыОператоры свёрткиОператоры сдвигаОператор конкатенацииУсловный операторПовторение — задание на операторы11Циклы
Цикл forЦикл whileЦикл повторенияБесконечный циклОператор отключенияПовторение — шаблоны циклов3Система счисления
Двоичное представлениеЧисла заданной разрядностиЧисла без указания разрядностиОтрицательные числаСпециальные значения X и ZПовторение — форматы чисел6Модули
Структура модуляВходные и выходные портыДвунаправленные портыСоздание экземпляра модуляПодключение портов по имениПодключение портов по порядкуПовторение — создание модуля9Процедурные блоки
Блок AlwaysБлок InitialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеПовторение: Always и InitialПотренируйтесь самостоятельно: Онлайн-компилятор Verilog