Введение.
Развитие вычислительной техники привило к разработке языков описания цифровой аппаратуры. На сегодняшний день одними из основных языков описания цифровой аппаратуры являются Verilog (Verilog-HDL) и VHDL.
< >Исторически сложилось так, что в первой половине восьмидесятых годов < >XX < >века по инициативе Министерства обороны США был разработан язык спецификации проектов (< >VHDL< >). Стандарт < >ANSI< >/< >IEEE< >STD < >1076–1987 на версию языка бал утвержден в 1987 году. В последующем стандарты языка менялись, к примеру: < >IEEE< >STD < >1076–1993, < >IEEE< >STD < >1076–1999, < >IEEE< >STD < >1076–2002, < >IEEE< >STD < >1076–2008.
< >В 1985 г. фирмой < >Gateway< >Design< >Automaton < >был разработан язык моделирования аппаратуры < >Verilog< >-< >HDL< >. Первый стандарт языка был утвержден в 1995 году (< >IEEE < >1364–1995) [1].
< >На сегодняшний день сложно представить описания цифровых схем без них.Вданной статье рассмотрена общая информация о языках описания цифровой аппаратуры < >Verilog < >(< >Verilog< >-< >HDL< >) и < >VHDL< >, их достоинства и недостатки.
< >Язык < >VHDL< >.
< >Структура проекта в < >VHDL< >.
< >Основной структурной единицей < >VHDL < >является < >ENTITY< >. Декларация < >ENTITY < >определяет имя проекта и, необязательно, его интерфейс, т. е. порты и параметры настройки. Пакет — это набор объявлений вводимых пользователем типов, переменных, констант, подпрограмм и т. п. Архитектурные тела представляют содержательное описание проекта [2, c.395]. В VHDL представление сигналов реализовано в библиотеке std_logic_1164. Архитектурное тело представляет описание функций и процедур.
Типы данных.
Как и практически во всех языках программирования в VHDL используются типы данных. VHDL является строго типизированным языком. Любой единице информации в VHDL присваивается имя и определяется тип.
Типы данных:
1. integer — целый;
2. real — действительный;
3. bit — представляет один логический бит (значение ‘0’ либо ‘1’);
4. boolean — объекты этого типа принимают значения true либо false;
5. character — объединяет все символы;
6. time — используется для задания задержек;
7. severity_level — служит для управления работой компилятора;
8. file_open_statusи file_open_kind — обеспечивают возможность контроля процедур между программой и файловой системой компьютера;
9. stringи bit_vector — массив символов и битов соответственно.
< >Объекты < >VHDL< >.
Объекты выполняют роль хранения различных значений. Идентификаторы обязательно должны начинаться с буквы. Объекты должны быть объявлены перед использованием, за исключением переменной цикла в операторе for, которая объявляется по умолчанию.
Классы объектов:
- Constant — константы.
- Variable — переменные.
- Signal — сигналы, представляют значения, передаваемые по проводам.
Синтаксис объявления объектов:
Constant {name [, name]}: Type [(index_range [, index_range])]:= initial_value;
Variable {name [, name]}: Type [(index_range [, index_range])] [:= initial_value];
Signal {name [, name]}: Type [(index_range)];
< >Операторы < >VHDL< >.
Операторы в VHDL делятся на два типа:
- Последовательные.
- Параллельные.
< >Последовательные операторы включены в операторы процессов. В одной строке можно размещать несколько операторов. Все операторы в < >VHDL < >оканчиваются точкой с запятой.
< >Последовательные операторы включают в себя:
< >- < >Оператор присваивания — выполняет присваивание переменной или сигналу результата выражения.
< >\результат\:=\выражение\ — присваивания переменной.
< >\результат\<=\выражение\ — присваивание сигнала [3, < >c< >.52].
< >- < >Оператор ожидания события < >wait< >.
< >Синтаксис< >оператора< >:
< >\< >wait < >\::=< >wait [on\< >name signal< >\ {\< >name signal< >\}]
< >- < >Оператор < >if< > — оператор цепочки последовательных событий;
< >\< >if < >\::=< >if < >\< >условие < >\ < >then
< >{\< >последовательный оператор< >\}
< >end if
< >- < >Оператор < >case< > — < >оператор разрешения выполнения последовательных операторов.
< >\< >case < >\::=< >case < >\ < >повторное выражение < >\ < >is
< >when < >\< >альтернативы< >\ =>{\< >последовательный оператор< >\}
< >{< >when < >\< >альтернативы< >\ =>{\< >последовательный оператор< >\}}
< >end< >case
< >- < >Пустой оператор < >null< > — < >не выполняет никаких действий.
< >- < >Оператор повторения — выполняет повторение последовательных операторов.
< >\оператор повторения \::=
< >[<< >метка оператора повторения< >>:] [<< >итерационная схема< >>:] < >loop
< ><оператор> < >«< ><оператор >< >»
< >end< >loop < >[<< >метка оператора повторения< >>] [< >2< >];
< >Параллельные операторы.
< >Параллельные операторы выполняются при любом изменении сигнала. К параллельным операторам относятся [2]:
< >- < >Оператор параллельного присваивания< >;
< >- < >Параллельный вызов процедуры< >;
< >- < >Оператор процесса< >;
< >- < >Оператор блока< >;
< >- < >Оператор вхождения компонента< >;
< >- < >Оператор генерации< >;
< >- < >Параллельный оператор проверки< >;
Язык Verilog-HDL(Verilog).
Структура проекта.
Основной единицей языка является модуль. Элементами модуля являются декларации и операторы. Структура проекта выглядит следующим образом:
module<имя модуля> (<порт>< >«, < ><порт >< >»);
< >«<< >декларация< >> | << >параллельный оператор< >>»
endmodule
Типы данных.
По сравнению с VHDL,в Verilog используется меньшее количество типов данных. Данные в Verilog могут принимать одно из четырех состояний:
- 1 — представляет логическую 1 или значение «истинно» (true)
- 0 — представляет логический 0 или значение «ложно» (false)
- z — представляет состояние высокого импеданса
- x — представляет неизвестное логическое состояние
Verilog включает две группы типов данных:
- Регистры (reg);
- Цепи (wire);
Регистры предназначены для сохранения состояний. Цепи осуществляют передачу состояний между моделируемыми объектами.
Типы цепей:
- Wire, tri — соединение элементов
- Wand/triand, wor/trior — моделирование цепей с разрешающей логикой
- Trireg — сохраняет свое состояние(емкость).
- Tri1, tri0, supply1,supply0. Цепи Tri1, tri0 — моделирование цепи с резистивной подтяжкой, а supply1,supply0 — моделируют источники питания подключенные к этой цепи.
Операторы Verilog.
Операторы в Verilog, как и в VHDL, делятся на два вида: последовательные и параллельные.
Оператор initialзапускается единожды при начале моделирования и задает начальное состояние устройства. Синтаксис данного оператора выглядит следующим образом:
< операция инициализации >::= initial< оператор >
Оператор always — оператор повторения. Запускается в начале программы так же как и initial,но повторяется каждый раз после завершения вложенного оператора. Синтаксис оператора имеет вид:
< операция постоянного повторения>::= always< оператор >
Операторы принятия решений — выбор одного из путей выполнения алгоритма. К операторам принятия решений относятся:
- Оператор условия
< оператор условия >:::=
if(<выражение>)<оператор>
- Оператор варианта
<оператор варианта>::=
<определитель оператора варианта>(<ключевое выражение>)
< >«<вариант>< >«, < >< вариант >»:<< >оператор>»
< >Endcase
Заключение.
В отличии от языка VHDL, Verilog более прост с точки зрения освоения. Он схож с языком Си, а это огромный плюс.ВVerilog используется меньшее количество типов данных, меньшее количество служебных слов. VHDL обладает большой универсальностью, но из-за этого он проигрывает в эффективности языку Verilog. Следовательно, человеку, который только начинает свое знакомство с языками описания цифровой аппаратуры будет легче освоить язык Verilog.
Оба языка поддерживаются в качестве стандартов большим количеством программных продуктов. Языки Verilog и VHDL используются при проектировании цифровых устройств, с применением САПР ведущих фирм в области ПЛИС. < >На сегодняшний день сложно представить описания цифровых схем без них.
Литература:
< >1. Поляков А. К. Языки VHDL и VERILOG в проектировании цифровой аппаратуры. — М.: СОЛОН-Пресс, 2003. –320с.: ил. — (Серия < >«Системы < >проектирования»).
2. Грушвицкий Р. И., Мурсаев А. Х., Угрюмов Е. П. Проектирование систем на микросхемах с программируемой структурой. — 2-е изд., перераб. и доп. — СПб.: БХВ-Петербург, 2006. — 736 с.: ил.
3. Сергеенко А. М. VHDL для проектирования вычислительных устройств — К ЧП < >«Корнейчук< >»< >, ООО «ТИД«ДС», 2003–208 с.