Последовательная установка модулей Verilog
Я пытаюсь реализовать алгоритм на аппаратном (ZedBoard), который имеет несколько модулей. Есть верхний модуль, и я создам все эти несколько модулей внутри верхнего модуля.
Примерно от 9 до 10 модулей, из которых 3 должны работать одновременно, остальные должны работать последовательно.
(Я знаю, что все модули внутри верхнего модуля работают одновременно. Это нормально с 3 модулями, которые должны работать одновременно, но как насчет остальных модулей, которые должны работать последовательно???), а также (я узнал, что мы не можем создавать экземпляры модулей внутри всегда или начального блока, который на самом деле не имеет смысла)
- Есть ли способ создания экземпляров модулей, чтобы они работали последовательно (как один за другим)????
- Кроме того, есть ли способ создания экземпляров модулей, чтобы они выполнялись условно?
- Можно ли этого добиться с помощью системного генератора????
К вашему сведению: я использую Verilog HDL и код должен быть синтезируемым
1 ответ
Verilog описывает аппаратное поведение. Все аппаратные элементы параллельны по своей природе. Поэтому все элементы в verilog моделируются параллельно для имитации аппаратного поведения.
Данные в модели могут передаваться последовательно или параллельно, в зависимости от ваших соединений. Если ваше приложение применяет данные к входу или элементу, элемент обработает данные и обновит свои выходные данные. Элементы, которые являются их входами, подключенными к выходу первого элемента, будут обрабатывать свои входы и обновлять выходы и так далее. Вы можете думать об этом как о сети труб.
Для синхронизации потока данных между различными элементами существуют часы, которые приводят в движение провалы и защелки.
В основном вышеизложенное определяет вашу модель Verilog.
Другими словами, Verilog не является обычным языком программирования, поэтому
1) Существует только один способ установить модули: подключить их к другим модулям и внутренним проводам.
2) нет способа условно запустить или не запустить модуль. Вы можете иметь аппаратные элементы, такие как мультиплексоры, защелки, ... которые могут остановить или перенаправить поток данных. К счастью, поведение verilog может описать те, кто использует операторы if или case.
3) вы не можете достичь невозможного с помощью любого генератора.