Port Mapping By Order
Часть раздела Основы путешествия по Verilog на Coddy. Урок 35 из 90.
На предыдущем уроке вы узнали о сопоставлении портов по имени, где вы явно обозначаете каждое соединение с помощью .port(signal). Теперь мы рассмотрим альтернативный метод: сопоставление портов по порядку.
Он подключает сигналы к портам модуля на основе order, в котором они указаны в определении модуля. Ты просто перечисляешь сигналы в скобках, и Verilog сопоставляет их один за другим.
Синтаксис:
module_name instance_name (signal1, signal2, signal3);Первый signal подключается к первому порту, второй — ко второму порту и так далее.
Пример
Определение модуля:
module or_gate (
input in1, // Первый порт
input in2, // Второй порт
output result // Третий порт
);
assign result = in1 | in2;
endmoduleСоздание экземпляра с сопоставлением портов по порядку:
or_gate or1 (input_a, input_b, output_y);Это соединяет:
- Первый сигнал
input_a→ первый портin1 - Второй сигнал
input_b→ второй портin2 - Третий сигнал
output_y→ третий портresult
Порядок имеет значение
При сопоставлении портов по порядку последовательность критически важна:
// Правильный порядок
or_gate or1 (input_a, input_b, output_y);
// Неправильный порядок — сигналы подключены к неверным портам!
or_gate or1 (input_b, input_a, output_y);
or_gate or1 (output_y, input_a, input_b);Если перепутать order, соединения подключаются к wrong ports. Это может быть сложно отлаживать, потому что на первый взгляд код выглядит correct.
Соединение портов по имени и по порядку
| Признак | По имени | По порядку |
|---|---|---|
| syntax | .port(signal) | signal1, signal2 |
| Имеет значение порядок? | Нет | Да |
| Понятно без дополнительных пояснений? | Да | Нет |
| Риск ошибок | Низкий | Высокий |
| Рекомендуется для | Большинства схем | Только простых случаев |
Когда использовать сопоставление портов по порядку
Сопоставление портов по порядку допустимо, когда:
- В модуле очень мало портов (2-3)
- Порядок портов очевиден и вряд ли изменится
- Вы пишете быстрые тестовые стенды
Для большинства проектов сопоставление портов по именам является предпочтительным, поскольку оно понятнее и менее подвержено ошибкам.
Задание
Завершите создание экземпляра, перечислив сигналы в correct порядке с использованием сопоставления портов по порядку.
Что нужно сделать:
Порты модуля (в этом порядке):
input en(сигнал разрешения)input [7:0] d(входные данные)output [7:0] q(выходные данные)
Сигналы для подключения:
enable_signal→ подключить кendata_input→ подключить кddata_output→ подключить кq
Попробуйте сами
module register (
input en,
input [7:0] d,
output [7:0] q
);
assign q = en ? d : q;
endmodule
module top (
input enable_signal,
input [7:0] data_input,
output [7:0] data_output
);
// TODO: Инстанцируйте register с именем reg1, используя ORDER mapping
// Перечислите сигналы в правильном порядке: enable_signal, data_input, data_output
// Не используйте синтаксис .port(signal)
endmoduleВ этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Введение
Что такое VerilogАппаратное обеспечение и программное обеспечениеВаш первый модульКомментарииУровни абстракции проектирования4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicПотренируйтесь самостоятельно: Онлайн-компилятор Verilog