Инстанцирование: от чертежа к детали
Вступление к уровню 34: один и тот же узел не рисуют дважды. Готовый модуль собирают в схему строкой текста — так деталь появляется на чертеже по своему чертежу.
Опыт: полный сумматор из вентилей
Полный сумматор — пять вентилей, складывающих три бита: A, B и перенос. Перебор всех восьми сочетаний собирает таблицу. Крайний случай: 1 + 1 + 1 = 11 в двоичной записи — единица в Sum и перенос в следующий разряд.
Перенос: читаем подключение по именам
У модуля HalfAdder есть порты .a, .b, .sum и .carry. Запись .sum(s1) означает: порт sum детали соединён с проводом s1. Слева от скобки — порт чертежа, внутри скобок — ваш провод. Порт соединяется, а не получает значение и не переименовывается.
Правило: деталь по чертежу
Описанный модуль — чертёж; инстанцирование — фраза «собери деталь по этому чертежу и назови её так-то»: HalfAdder ha1 ( .a(x), .b(y), .sum(w), .carry(c) );. Имя детали (ha1, ha2) должно быть уникальным — по нему деталь находят на чертеже и соединяют с другими. Одна и та же схема работает сколько угодно раз, и код короче, чем вентили вручную.
Зачем это нужно
На этом уровне вы опишете полный сумматор строками — схему, которую перед этим рисовали из пяти вентилей. Дальше модули вкладываются друг в друга: из полусумматоров — полный сумматор, из сумматоров — АЛУ, из АЛУ — процессор.