VHDL язык создания дискретных систем

       

ИСТОРИЯ СОЗДАНИЯ VHDL


ИСТОРИЯ СОЗДАНИЯ VHDL

Традиционный подход к проектированию дискретных вычислительных систем (ДС) состоит в последовательном решении задач анализа и оптимизации некоторого начального варианта проектируемой ДС. Поэтому давней мечтой разработчиков ДС было создание единых средств описания ДС, которые позволяли бы решать задачи верификации и синтеза схем с различной степенью детальности их описания и, таким образом, объединять этапы проектирования в единый процесс нисходящего проектирования "сверху вниз". Появление языка VHDL в определенной степени позволяет автоматизировать задачи проектирования от описания алгоритма функционирования ДС до реализации кристаллов микросхем. При этом понятие синтез следует определить как формализованный процесс построения схемы из некоторого заданного набора компонентов.

Языки описания аппаратуры (ЯОА/HDL -- Hardware Digital Language) известны давно. Одним из первых более или менее удачных ЯОА был LOTIS -- формальный язык, описывающий логические переменные и последовательностные схемы. Он разработан Шлэппи (IBM) в 1964 г. Затем в течение семидесятых годов в Европе и США было разработано много ЯОА, их насчитывалось более 200 -- отечественных и зарубежных. Самыми известными являются МОДИС, МОДИС-В78, Автокод, МПЛ, ОСС-2, ФОРОС, EPICURE, CDL, DDL, ISPS, CONLAN, HILO, CASCADE, REGLAN и др.

Первой попыткой навести порядок в этом "столпотворении" было решение конференции по ЯОА о создании "языка согласия" CONLAN. Эта работа началась в 1976 г. и была успешно завершена созданием основ для "третьего поколения" (с полным семантическим определением) ЯОА. Одна из важнейших проблем, которую необходимо было решить, учитывая новую технологию параллельного проектирования, -- обеспечение комплексного решения вопросов стандартизации, в том числе выработка стандартов на лингвистические средства спецификаций моделей проектов, протоколы и форматы обменных данных. Успех CONLAN послужил поводом для МО США в 1983 г. поддержать работы по созданию (на основе языка программирования Ада) нового языка спецификации проектов аппаратуры на базе сверхбольших высокоскоростных интегральных схем.

Разработка VHDL, завершенная в 1987 г., оказалась настолько успешной, что этот язык был принят в качестве стандарта ANSI/IEEE Std 1076-1987.
Рестандартизация в IEEE проводится каждые пять лет, и на сегодня последней редакцией является VHDL92, принятый в 1993 г. стандарт ANSI/IEEE Std 1076-1993. Об изменениях и дополнениях, появившихся

в новой редакции языка VHDL, можно узнать из работы [1]. Концепции языков ЯОА до сих пор оставались "собственностью" тех небольших коллективов, которые либо непосредственно их создавали, либо использовали их при разработке уникальных электронных систем. С утверждением стандарта на VHDL любая разработка и документирование аппаратуры и алгоритмов функционирования ДС должны сопровождаться описанием на языке VHDL, т. е. VHDL-описание является неотъемлемой частью документации и для разработчика, и для заказчика.

ОСНОВНЫЕ СВОЙСТВА VHDL


ПРИНЦИПЫ МОДЕЛИРОВАНИЯ ДС и СРЕДСТВА VHDL

1. Событийное моделирование. Важнейшими в алгоритмах моделирования ДС являются: -- имитация реального времени; -- имитация параллельных процессов в однопроцессорной моделирующей ЭВМ.

Для организации моделирования во времени в VHDL применяется принцип событийного моделирования как наиболее эффективный по быстродействию. Его суть состоит в следующем: -- время в моделях представляется дискретным и может задаваться в диапазоне натуральных единиц времени от фемтосекунды (10-15 с) до часа; -- приращение времени на каждом шаге моделирования -- величина переменная, равная интервалу времени между двумя последующими событиями (событием в моделях ДС называется любое изменение одного из сигналов в схеме).

2. Синхронизация параллельных процессов. Синхронизация параллельных процессов в VHDL обеспечивается: применением для сигналов специальных операторов параллельного присвоения "<=", являющихся эквивалентами операторов присвоения ":=" для простых переменных, но выполняемых на данном шаге моделирования с бесконечно малой дельта-задержкой. Например, при выполнении операторов Y <= X1 and X2; (1) Z <= not (X3 and Y); (2) происходит параллельное (через бесконечно малые дельта-задержки) присвоение вычисляемых значений сигналам Y и Z, так что в правой части оператора (2) будет использоваться не полученное в операторе (1), а старое значение Y, определенное ранее, например на предыдущем шаге моделирования во времени; использованием механизма процессов (PROCESS) и их запуска: -- с помощью сигналов активизации (два символа -- служат признаком комментария): process (X1,X2) -- процесс запускается только при изменении хотя бы одного из сигналов X1,X2 begin Y <= not X1 and X2; Z <= Y or X3; end process; -- с помощью оператора WAIT задержки процесса, который может располагаться в конце или в начале процесса: process process begin begin Y <= not X1 and X2; WAIT ON X1,X2; Z <= Y or X3; Y <= not X1 and X2; WAIT ON X1,X2; Z <= Y or X3; end process; end process;

Оператор WAIT позволяет задавать достаточно сложные условия активизации процесса: WAIT ON <список сигналов> UNTIL <условие> FOR время;

Например, для задания условия срабатывания схемы по фронту или по срезу (справа) сигнала С можно записать операторы WAIT ON C UNTIL C=1; WAIT ON C UNTIL C=0; 3.
Использование механизма атрибутов. Атрибуты -- это значения, связанные с поименованным объектом (сигналом, переменной), позволяющие более полно отображать свойства этих объектов (статические -- переменных и динамические -- сигналов). Наличие мощных средств атрибутов, а также средств имитации задержки WAIT, AFTER позволяет порождать многообразие моделей, имитирующих одни и те же свойства схемы, что дает возможность учитывать в VHDL-программах различные нюансы построения и работы цифровых схем. Так, то же условие срабатывания по фронту или по срезу С можно задать с помощью одного из выражений: CEVENT and C=1; not CSTABLE and C=1; CLAST_VALUE=0 and not CSTABLE; CEVENT and C=0; not CSTABLE and C=0; CLAST_VALUE=1 and not CSTABLE; где CEVENT -- атрибут типа Boolean, принимающий значение true, если с сигналом С произошло событие (сигнал С изменился); CSTABLE(T) -- атрибут типа Boolean, принимающий значение true, если сигнал С стабилен в течение последних Т единиц времени (по умолчанию Т=0); CLAST_VALUE -- атрибут, определяющий значение сигнала С перед последним изменением этого сигнала. Условие срабатывания схемы по фронту С и задержки переключения выходного сигнала Y на 15 нс можно записать в четырех вариантах: 4. Два типа моделей задержек распространения сигналов -- инерционная и транспортная. Важными для описания работы реальных схем являются введенные в VHDL операторы задержки переключения сигналов: инерционная задержка (по умолчанию); транспортная задержка (сопровождается ключевым словом TRANSPORT). Инерционная модель задержки разрешает переключение выходного сигнала Y только при условии, что длительность входных сигналов не меньше времени задержки, заданного после слова AFTER, т. е. инерционная задержка имитирует устойчивость схемы от высокочастотного "дребезга" на ее входе (в следующем примере длительностью менее 3 нс): Y <= not X1 and X2 AFTER 3 ns; Транспортная модель соответствует "чистой" задержке распространения: передается любой импульс, каким бы коротким он ни был.




Так, оператор Y <= TRANSPORT not X1 and X2 AFTER 15 ns; передает на Y с задержкой в 15 нс значения, соответствующие логическому выражению, независимо от частоты изменения этих значений. 5. Разнообразие форм описания объекта проекта. К замечательным свойствам VHDL, позволяющим использовать его для решения задач синтеза по методологии нисходящего проектирования, относится возможность описания объекта проекта с различной степенью детализации: на поведенческом уровне с помощью двух форм: -- потоковой, имитирующей поведение объекта проекта как последовательность прохождения потока данных и сигналов управления; -- процессной, имитирующей поведение объекта проекта как совокупность независимых, но синхронизируемых во времени процессов, определяющих алгоритм функционирования; на структурном уровне имитирует объект проекта как совокупность компонентов структуры и связей между ними, при этом для описания компонентов может быть выбрана любая из перечисленных форм.

VHDL-ОПИСАНИЕ ОБЪЕКТА ПРОЕКТА


НЕКОТОРЫЕ ПРОБЛЕМЫ ПРИМЕНЕНИЯ VHDL В СИСТЕМАХ ПРОЕКТИРОВАНИЯ

Соответствие VHDL-описания и схемы. Важнейшим требованием к системе синтеза, строящейся на VHDL (система VHDL-синтеза), является установление соответствия между поведенческим описанием и реальной схемой, что приводит к ряду проблем из-за многоальтернативности решений и комбинаторной сложности этой задачи. Ниже приводятся простейшие примеры установления таких соответствий для комбинационных логических схем (КЛС) и схем с элементами памяти.

Логика любой КЛС, реализующей некоторую логическую функцию, описывается оператором параллельного присвоения: Y <= not (X1 and X2) or (X3 X or X2);

Это соответствует асинхронной КЛС, в которой выход Y зависит только от информационных входов X1, X2, X3 (КЛС типа сумматор, асинхронные дешифратор и шифратор, схема выбора старшей "1" в коде и т. д.).

Асинхронные КЛС, имеющие, кроме информационных, адресные входы, определяющие выбор той или иной комбинации значений информационных входов (например, мультиплексор, демультиплексор и т. д.), а также синхронные КЛС следует описывать как PROCESS, который должен быть чувствительным ко всем входным сигналам, что задается параметрами процесса. Например, логическая схема мультиплексора может иметь такое VHDL-описание: process (A1,A2,D0,D1,D2,D3) begin -- & -- операция конкатенации CASE (A1&A2) -- => -- операция следования WHEN "00" => Y<=D0; WHEN "01" => Y<=D1; WHEN "10" => Y<=D2; WHEN "11" => Y<=D3; end case; end process;

Условие синхронизации КЛС в VHDL-описании задается условным оператором IF..THEN..ELSE.., при этом все выходные сигналы КЛС должны быть определены полностью (не по умолчанию) всякий раз, когда процесс активизируется, т. е. альтернатива ELSE обязательна. Так, описанию process (A,B,C) begin IF C=1 THEN Y <= A; ELSE Y <= B; end IF; end process; соответствует схема на рис. 5. Если же некоторый сигнал не присваивается (отсутствует ветвь ELSE в операторе IF), то подразумевается сохранение его старого состояния, что соответствует наличию в схеме элемента памяти типа триггера-защелки или прозрачного триггера (рис. 6): process (C,D) begin IF C=1 THEN Q <= D; end IF; end process;

Системы VHDL-синтеза.
В настоящее время существует большое число пакетов и систем проектирования, использующих VHDL. Одни из них относятся к промышленным (COMPASS, СADENCE, TANNER, SMASH, Mentor Graphics, Cadence, Workview Office), другие -- к университетским (ALLIANCE, AMICAL, VANTAGE, SYNOPSYS). Характерным для них является применение методологии нисходящего проектирования, интерактивные средства моделирования с многооконным редактором, большой набор утилит, ориентированных на поддержку коллективной работы. Все они, как правило, работают под ОС UNIX и реализованы на станциях типа SUN и др. Ряд систем (например, SYNOPSYS или система ХАСТ для разработки программируемых логических матриц фирмы Xilinx) позволяет разработчику выбирать, кроме VHDL, другие средства описания аппаратуры, например Verilog, синтаксической основой которого является язык Си. Практика показывает, что одной из наиболее надежных, быстродействующих и удобных в эксплуатации систем моделирования является система Vantage -- среда моделирования на VHDL. Очевидно, что ни один язык описания цифровой аппаратуры, в том числе и VHDL, не может полностью удовлетворить разработчика в части адекватного семантического отображения поведенческими моделями дискретных систем. Поэтому создаются системы, которые на базе подмножеств средств языка VHDL дополняют и расширяют функциональные и семантические возможности VHDL-конструкций в конкретных областях проектирования. Так, один из основных принципов разработки ДС -- разделение на управляющую и операционную часть -- не во всех ЯОА находит отражение. В VHDL некоторые операторы можно отнести к управлению (IF или CASE, а также защищенные назначения GUARDED assignments). Однако четкое разделение требует специальных языковых конструкций, однозначно отражающих функции управления. Такие конструкции предусмотрены в языке CASCADE. В работе [2] предложена композиция языков (CASCEDE и VHDL). Система Silicon 1076 [3] -- САПР специализированных БИС, разрабатываемых по принципу параллельного проектирования, включает среду интерактивного архитектурного синтеза, для которого исходным является подмножество средств поведенческих VHDL-описаний.


Система поддерживает многоцелевой синтезатор уровня регистровых передач, специализированные средства синтеза запоминающих и арифметических устройств. В среде VHDL-синтеза все модели и средства, определяемые соответствующей методикой синтеза, включая пакеты (пакеты -- средства задания уникальных, т. е. вводимых пользователем типов, подтипов, например единиц измерения, функций) и генераторы модулей, должны работать совместно. Следовательно, среда проектирования, основанная на VHDL, должна включать: -- поведенческое VHDL-описание проектируемой ДС; -- метод и средства декомпозиции поведенческого описания ДС (определяется методом синтеза и набором типовых элементов аппаратуры); -- набор поведенческих и/или структурных VHDL-описаний компонентов, соответствующих типовым элементам аппаратуры; -- правила выбора формы VHDL-описания компонента для его аппаратурной реализации. Для успешного решения задач высокоуровневого синтеза с последующим переходом на более низкие уровни с использованием VHDL-описаний (VHDL-синтеза) должны выполняться следующие допущения: 1) генерируются схемы, функционирование которых адекватно VHDL-описаниям; 2) многообразие наборов VHDL-описаний в библиотеке компонентов для каждой аппаратной реализации соответствующей функции обеспечивает выбор оптимального варианта по заданному критерию синтеза схемы; 3) поведенческое VHDL-описание ДС, служащее входом для VHDL- синтеза, обычно не зависит от технологии изготовления системы, но для эффективных аппаратных решений следует учитывать технологическую информацию как можно раньше. Как показывает опыт зарубежных и отечественных разработок, в настоящее время наиболее успешным оказывается применение поведенческих VHDL-моделей для синтеза устройств, последовательность обработки данных в которых может быть строго структурирована и представлена в виде схемы алгоритма или соответствующего потока сигналов. Тогда каждый блок алгоритма обработки, описываемый в виде процесса (VHDL-описания) однозначно реализуется соответствующими аппаратными средствами.


Примерами могут быть спецвычислители, ориентированные на решение конкретного класса задач по определенному алгоритму, в частности устройство цифровой обработки сигналов [4]. Таким образом, для решения задач синтеза с применением языка VHDL в рамках САПР необходимо: -- создание библиотеки моделей поведенческого типа для проектируемых объектов в целом (для процессора -- последовательность микроопераций для выполнения команд процессора); -- создание библиотеки моделей компонентов -- конструктивных блоков разрабатываемого класса объектов (для процессора -- АЛУ, наборы регистров, счетчики, мультиплексоры и т. д.); -- разработка процедуры синтеза с указанием связей между поведенческими и структурными моделями (для процессора процедура синтеза должна включать и критерии выбора длины слова, способов организации алгоритмов выполнения отдельной команды, например, умножения

и т. д.) Литература 1. Берже Ж. М. и др. VHDL92. Новые свойства языка описания аппаратуры VHDL. Пер. с англ. М., Радио и связь. 1995. 2. Ле Фаоу К., Мермье Ж. Введение графов перехода языка СASCADE в язык VHDL. В кн.: VHDL для моделирования, синтеза и формальной верификации аппаратуры. Под ред. В. М. Михова. М., Радио и связь, 1995. С. 323--341. 3. Коттрелл Р. А. Проектирование специализированных БИС с помощью системы Silicon 1076. Там же. С.149--162. 4. Лундберг Л. Генерация VHDL-кода для моделирования и синтеза. Там же. С.163--177.