2013-12-21 2 views
2

Хотя я достаточно разбираюсь в написании VHDL, есть относительно простой вопрос, на который мне нужно ответить: когда разбивать VHDL?Когда разбить VHDL?

Основной пример: Скажем, я проектировал 8-разрядный ALU в VHDL, у меня есть несколько вариантов его реализации VHDL.

Просто спроектируйте весь АЛУ как единое целое. Со всеми вводами-выводами, требуемыми в сущности (может быть сделано из-за библиотеки IEEE_STD_ARITHMETIC).

--или--

Перерыв, что ALU вниз в его последующие блоки, скажем, кэрри-предпросмотр сумматора и некоторые мультиплексоры.

--или--

Перерыв, что дальше вниз в блоки, которые делают ручное опережение; кучу частично заполненных сумматоров, дорожку переноса и мультиплексоры, а затем соединить их все вместе с использованием структурных элементов.

Мы могли бы (если бы захотели) сломать все это до уровня ворот, создавая сущности, поведения и структуры для каждого.

Конечно, дальше мы разбиваем ALU тем более VHDL файлов, которые нам нужны.

Оказывает ли это влияние на физическую реализацию после синтеза, и когда мы должны прекратить разрушать вещи?

ответ

4

Вы должны сохранить свой VHDL на самом высоком уровне абстракции, поэтому никогда не «ломайте его», как вы описали. То, что вы предлагаете, - это то, что вы сами делаете синтез (например, создаете суммирующее выражение для переноски), что является плохой идеей. Вы не знаете целевое устройство (FPGA или ASIC), а также синтезатор, и вы не должны пытаться сказать ему, что делать. Если вы хотите сделать дополнение, используйте оператор +, и инструменты найдут лучшую структуру, которая соответствует вашим ограничениям дизайна.

Разделение дизайна на многие модули часто затрудняет оптимизацию дизайна, поскольку оптимизация между модулями обычно сложнее, чем оптимизация в рамках модулей.

Конечно, основные функциональные блоки, которые имеют четко определенные интерфейсы между ними, должны быть в отдельных модулях для поддержания дизайна и удобочитаемости. ALU может быть одним модулем, другой инструкцией ROM и т. Д. Эти модули имеют четкие, четко определенные функции, и нет возможности для оптимизации внутримодуля. Если вы хотите получить последний возможный бит оптимизации, просто сгладьте дизайн перед оптимизацией и дайте инструментам выполнить эту работу.

Смежные вопросы