Структура модуля
Часть раздела Основы путешествия по Verilog на Coddy — урок 30 из 90.
Модуль — это базовый строительный блок в Verilog. Любой проект строится из модулей, которые соединяются вместе для создания более крупных систем.
Модуль — это аппаратный компонент, у которого есть:
- Имя
- Входы (входящие сигналы)
- Выходы (выходящие сигналы)
- Внутренняя логика (то, что модуль делает)
Представьте себе 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Этот модуль:
- Имеет имя
and_gate - Имеет два входа (
a,b) - Имеет один выход (
c) - Содержит один оператор
assign, определяющий логику
Правила структуры модулей
- Один модуль на файл — распространенная практика
- Имя модуля должно описывать его функцию
- Порты перечисляются в скобках после имени
- Входы (Inputs) всегда объявляются как
input(в них нельзя производить запись внутри) - Выходы (Outputs) объявляются как
output(могут бытьregилиwire) <strong>endmodule</strong>должен закрывать модуль
Задание
Заполните пропущенные части, чтобы завершить этот модуль.
Что нужно сделать:
- Добавьте имя модуля
my_and - Добавьте
inputдляx - Добавьте
inputдляy - Добавьте
outputдляz - Добавьте внутреннюю логику, используя
assign
Попробуйте сами
module ______ ( // Добавьте имя модуля
input x, // Добавьте вход
input y, // Добавьте вход
output z // Добавьте выход
);
// Добавьте оператор assign здесь (z = x & y)
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Введение
Что такое VerilogHardware против SoftwareУровни абстракции проектированияВаш первый модульКомментарии4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияОператоры сравненияПовторение: простая математикаПобитовые операторы7Оператор Assign и логические вентили
Непрерывное присваиваниеAssign с операторамиВстроенные примитивы вентилейВентили AND, OR, NOTВентили XOR, XNORИтоги: Схемы на логических вентилях10Принятие решений
Оператор ifКонструкция if - elseПовторение: простой компараторОператор caseОператоры casex и casezПовторение: проектирование ALU5Операторы. Часть 2
Логические операторыОператоры редукцииОператоры сдвигаОператор конкатенацииУсловный операторПовторение — Испытание по операторам3Системы счисления
Двоичное представлениеЧисла с заданным размеромЧисла без заданного размераОтрицательные числаСпециальные значения X и ZИтоги — форматы чисел6Модули
Структура модуляВходные и выходные портыПорты InoutИнстанцирование модуляПодключение портов по имениПодключение портов по порядкуИтоги: создание модуля9Процедурные блоки
Блок alwaysБлок initialСписок чувствительностиБлокирующее присваиваниеНеблокирующее присваиваниеИтоги: always против initial