Суворова Е.А., Шейнин Ю.Е. Проектирование цифровых систем на VHDL (2003) (1095892), страница 43
Текст из файла (страница 43)
Однако имеются и общие подходы, характерные для основных распространенных пакетов автоматизации проектирования. Обычно в стратегиях оптимизации полагается, что комбинационные схемы предпочтительнее схем последовательностных (схем с памятью). Считается, что они дают меньшие задержки и меньшие затраты на реализацию. Поэтому синтезирующие компиляторы, как правило, стремятся при генерации фрагментов схемы, соответствующих определенным конструкциям программы ЧНО1., свести их к комбинационным схемам. Те или иные программные конструкции языка ЧНО1. синтезирующий компилятор может принимать или игнорировать.
Когда мы говорим "игнорируется", это означает, что данная конструкция, ее секция или атрибут не будут влиять на результат синтеза схемы устройства по ЧНЕ)1. программе. Практическая реакция конкретных синтезирующих программ, наблюдаемая пользователем, может быть разной. Некоторые конструкции в исходном тексте на ЧНЕ)1 программа синтеза может просто игнорировать, другие будут вызывать сообщения о синтаксических ошибках (с точки зрения Синтеза). Эти аспекты работы синтезирующих программ не стандартизированы и определяются конкретным пакетом автоматизации проектирования.
Далее в этом разделе мы рассмотрим некоторые общие вопросы перехода к программированию на ЧНО(. для Синтеза, не привязанные, в основном, к какому-либо инструменту и базису реализации. Сигналы, переменные, константы При описании модели на ЧНЕ)1 могут быть использованы сигналы, переменные, константы. В ходе синтеза сигналы отображаются в линии связей, защелки, триггеры. Если описывается комбинационная схема, сигналы отображаются в линии ггв Глава 4 связи, по которым от одних элементов к другим передаются значения этих сигналов.
Если описывается конечный автомат, то для хранения значений сигналов используются триггеры и защелки. Отображение сигнала в линию связи, триггер или защелку в этом случае зависит от того, как он используется в модели. Разрядность сигналов Разрядность линии связи, триггера или защелки зависит от типа сигнала. Количество битов, необходимое для реализации, может быть определено в яаном виде, например, при указании размера вектора. 81дпа1 даса1: всд 1одас уессоп (7 довпео О! Для реализации сигнала, описанного таким образом, требуется 8 разрядов, 8 линий связи. Для каждого предопределенного типа в языке ЧН()Е определена разрядность, которая используется по умолчанию, если не задана явная спецификация разрядности декларируемого сигнала.
В1(рвс1 соппе: 1ппедехз В данном случае определение разрядности выполнено неявно (тип 1пеедее для своей реализации требует 32 бита). Однако нередко уже на этапе проектирования известно, что сигнал может принимать значения только в определенном диапазоне (например, от 0 до !40). В этом случае, при описании сигнала целесообразно указать этот диапазон в явном виде: Вьдпа1 соппп: апьедев савве 0 Ео 140; Для реализации сигнала, описанного таким образом, будет использовано только 8 бит, что может существенно уменьшить размер схемы. Рассмотрим, например, реализацию сумматора (листинг 4.37). ( Лнпетннг 4.37 пве 1ЕЕЕ.взд 1одьс 1164.а11с пве 1ЕЕЕ.БЕд 1одьс ах!си.а11; пве 1ЕЕЕ.БСд 1одьс ппвьдпед.а11; епе1пу пу асЫеп ьв ропе(даса1, даса2:1п ьпседеп; дасао:опе !осадах(с епд епеьпу спу асЫеп; авоизпеосше аддеп пп1 ое спу асЫеп 1в Ьедап рвосевв (дапа1, даеа2] Проектирование на ЧН01.
с1аоао< = ттасат + стаеаго евс рвосевв; етв вксьвсесссве аоЫек ка1; Этот сумматор имеет два входа и один выход, все типа ~свесов (разрядность 32). Рассмотрим характеристики его реализации на РРОА Ч400ВО432. При синтезе по приведенной программе для его реализации было использовано !6 слоев, 32 четырехвходовых 1ЛЗТ, что соответствует 381 вентилю. При этом максимальная задержка передачи сигнала от входа к выходу составляет 19,760 нс., а максимальная задержка в линиях связи — 5,562 нс.
Если же известно, например, что слагаемые и результат лежат в диапазоне от 0 до 16, то их тип может быть описан как ыееяев вводе о ео тв (разрядность линий связи 5 бит). В этом случае и комбинационная схема, выполняющая функции сумматора, будет существенно меньше. При синтезе для ее реализации потребовалось 5 слоев металлизации, 8 четырехвходовых ШТ или 48 эквивалентных вентилей. Это почти в 8 раз меньше, чем в предыдущем случае.
Максимальная задержка передачи сигнала от входа к выходу составляет 12,391 нс., а максимальная задержка в линиях связи— 1,747 нс., что также значительно меньше, чем в предыдущем случае. Некоторые инструменты синтеза способны при анализе кода программы на ЧНО1. определить диапазоны возможных значений лля сигналов и испольювать эту информацию для оптимизации их разрядности. Например, если синтезирующий компилятор ЧНО1.
обнаруживает, что описанный сумматор ву астттек используется для сложения значений четырехразрядных сигналов, то при проведении оптимизации он может сам сократить разрядность реализации данного экземпляра сумматора с 32 до 5 разрядов.
Однако синтезирующие программы вынуждены быть достаточно консервативными в своих стратегиях оптимизации, стараясь не нарушить логику функционирования проектируемого устройства, заданную программой-спецификацией на ЧН131.. Поэтому использование в программах явных спецификаций диапаюнов значений декларируемых данных и сигналов является хорошим стилем, часто помогающим синтезирующим программам оптимизировать генерируемую реализацию устройства.
Перечислимые типы и кодировка значений Рассмотрим, как при синтезе обрабатываются перечислимые типы, определенные пользователем на базе явно указанного множества возможных значений. Пусть, например, тип имеет следующее определение: тхре пу аоаее дв (Хот1е, Иокх1, Иоккз, Е~ток1; В этом случае инструментарий синтеза определяет количество возможных значений.
Каждому из них присваивается порядковый номер, на базе кото- 230 Глава 4 рого формируется двоичная кодировка, разрядность определяется количеством возможных значений. По данному примеру обычно будет синтезирована следующая кодировка: 1Д1е И Х1 — О1; Иогкя — 1О; Еггог — '11'. Многие инструменты синтеза предоставляют пользователю возможность влиять на кодировку значений. Эта возможность реализуется в виде настроек инструментария. Например, количество значений может определять разрядность при позиционном кодировании значений перечислимого типа.
Тогда возможна следуюгцая кодировка: 1Д1е— Иогх1 — СОХО ; ИоИа — О1ОО; Еггог — '1000'. Кодировки, выбираемые синтезирующей программой, зависят от схемотехнического базиса реализации проектируемого устройства. В ряде ситуаций, например, при синтезе реализаций конечных автоматов, выбранные кодировки состояний автомата могут оказывать существенное влияние на качество синтезированной схемы. Существует целый ряд вариантов кодировок, предназначенных для минимизации аппаратных затрат, увеличения быстродействия, обеспечения помехоустойчивости. Использование перечислимых типов вместо цифровых кодировок соответствующих программных понятий является хорошим стилем в современном программировании. В отношении программирования на ЧНРЕ это справедливо еше в большей степени, поскольку не только способствует лучшему пониманию программы и сокрашению числа ошибок программиста, но и облегчает синтезирующим компиляторам с ЧНР1.
оптимизацию генерируемой реализации устройства. Поэтому эффективный, с точки зрения Синтеза, стиль программирования на ЧНРЕ диктует широкое использование в программе перечислимых типов, оставляя их числовые кодировки синтезирующему компилятору, не вмешиваясь в кодировки значений без особой необходимости.
И, разумеется, не следует использовать в операторах числовые коды для значений перечислимых типов данных, даже когда мы их знаем. Так, в программе следует писать: 1В еьд1 = 1о1е ЕЬеп а не Дг еьд1 = 'ОО' Евее Проектирование на ЧН0Г Начальные значения Синтаксис описания сигналов в ЧНРЬ позволяет задавать начальные значения декларируемых сигналов. Этой возможностью часто пользуются при написании ЧНВЬ программы для Моделирования.
Однако для Синтеза такой конструкцией пользоваться не стоит. Большинство программ синтеза будутн игнорироватнь секцию задания начального значения в декларации сигнала. Если какие-либо сигналы в проектируемом устройстве должны устанавливаться в некоторые начальные значения, то в ЧНРЬ программе- спецификации рекомендуется явно программировать установку сигналов в начальные состояния по сигналам начального сброса устройства (сигналам типа теоее). Для уменьшения расхождений между ЧНРЬ программой-моделью и ЧНРЬ программой-спецификацией такого стиля надо придерживаться и при проптаммировании для Моделирования.
Однако оборотной стороной такого стиля при Моделировании будет увеличение времени моделирования. При описании констант в декларации должны быть явно заданы их значения, они не будут игнорироваться при Синтезе. Переменные Сигналы в языке ЧНРЬ предназначены лля представления состояний элеиентов аппаратуры. При Синтезе реализации проектируемого устройства по ЧНРЬ программе-спецификации сигналам сопоставляются линии связи, зашелки, триггеры. В отличие от сигналов, переменные в ЧН()Ь рассматриваются как вспомогательные программные объекты, используемые, в основном, для программирования вычисления значений сигналов. Во многих случаях переменным не сопоставляются какие-либо элементы генерируемой лри Синтезе реализации проектируемого устройства.