Структура модуля
Часть раздела Основы путешествия по Verilog на Coddy. Урок 30 из 90.
Модуль — это основной строительный блок в Verilog. Каждый проект состоит из модулей, которые соединяются друг с другом, образуя более крупные системы.
Модуль — это аппаратный компонент с:
- Именем
- Входами (поступающими сигналами)
- Выходами (исходящими сигналами)
- Внутренней логикой (тем, что делает модуль)
Представляй модуль как микросхему с выводами и внутренней схемой.
Базовая структура module
Каждый module следует этой структуре:
module module_name (
input signals,
output signals
);
// Внутренние объявления (wires, regs и т.д.)
// Логика (assign statements, always blocks и т.д.)
endmoduleЧасти модуля
| Часть | Назначение |
|---|---|
Ключевое слово module | Начинает определение модуля |
module_name | Имя модуля |
( ) | Список входных и выходных портов |
input / output | Объявляют направление портов |
| Тело модуля | Внутренняя логика и соединения |
endmodule | Завершает определение модуля |
Простой пример модуля
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmoduleЭтот module:
- Называется
and_gate - Имеет два входа (
a,b) - Имеет один выход (
c) - Содержит один оператор
assign, определяющий логику
Правила структуры module
- Один module на файл — распространённая практика
- Имя module должно описывать его функцию
- Порты указываются в скобках после имени
- Входы — это всегда
input(нельзя записывать внутрь) - Выходы — это
output(может бытьregилиwire) <strong>endmodule</strong>должен закрывать module
Задание
Заполните пропущенные части, чтобы завершить этот module.
Что нужно сделать:
- Добавьте имя module
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