Экземпляры модуля Verilog
Как мы видели в предыдущей статье, более крупные и сложные проекты строятся путем иерархической интеграции нескольких модулей. Модули могут быть созданны внутри других модулей и портов этих экземпляров могут быть связаны с другими сигналами внутри родительского модуля.
Эти соединения портов могут быть выполнены через упорядоченный список или по имени.
Подключение портов по упорядоченному списку
Один из способов установления соединения между выражениями порта, перечисленными в экземпляре модуля, и сигналами внутри родительского модуля — это нумерованный список. .
мой дизайн - это 08
создан с именем d0 в другом модуле с именем tb_top. Порты подключаются в определенном порядке, который определяется положением этого порта в списке портов объявления модуля. Например, b в испытательном стенде подключен к y проекта просто потому, что оба находятся на второй позиции в списке портов.
06
Порядок портов в модуле дизайна должен быть известен для правильного подключения.
Это очень неудобно, потому что порядок может измениться, если в список будет добавлен новый порт или когда количество портов в проекте очень велико.
Подключение порта по имени
Лучший способ соединить порты – явно связать порты с обеих сторон, используя их имя порта. .
Точка 14
указывает, что имя порта, следующее за точкой, принадлежит проекту. Имя сигнала, к которому должен быть подключен проектный порт, указано в круглых скобках 24
.
15пре>Рекомендуется закодировать каждое соединение порта в отдельной строке, чтобы любое сообщение об ошибке компиляции правильно указывало на номер строки, в которой произошла ошибка. Это намного проще отлаживать и устранять, чем не знать, какой порт вызвал ошибку, если бы все они были в одной строке.
Поскольку эти соединения выполняются по имени, порядок их появления не имеет значения. Не допускается подключение нескольких портов экземпляра модуля.
23Неподключенные/плавающие порты
Порты, которые не подключены к какому-либо проводу в модуле создания экземпляра, будут иметь значение высокого импеданса.
37Пример
Давайте возьмем пример со сдвиговым регистром, который мы видели ранее, и оставим некоторые порты неподключенными.
45Обратите внимание, что выходы экземпляров u1 и u2 остаются неподключенными на схеме RTL, полученной после синтеза. Поскольку вход d экземпляров u2 и u3 теперь подключен к цепям, которые ничем не управляются, он заземлен.
При моделировании такие неподключенные порты будут обозначаться как порты с высоким импедансом ('hZ), которые обычно отображаются на осциллограммах в виде оранжевой линии, вертикально расположенной посередине.
Все объявления портов неявно объявлены как
32
и, следовательно, в этом случае достаточно направления порта. Однако49
порты, которые должны хранить значения, должны быть объявлены как54
тип данных и может использоваться в процедурном блоке, таком как69
и71
только.Порты типа
84
или90
нельзя объявлять как104
потому что они постоянно управляются извне и не должны хранить значения, а скорее отражать изменения во внешних сигналах как можно скорее. Совершенно законно соединять два порта с разными размерами векторов, но тот, у которого размер вектора меньше, будет иметь преимущественную силу, а оставшиеся биты другого порта с большей шириной будут игнорироваться.53
Verilog