Язык описания аппаратуры

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Язык описания аппаратуры (HDL от англ. hardware description language) — специализированный язык программирования, используемый для описания структуры и поведения электронных схем, чаще всего цифровых логических схем.

Языки описания аппаратуры внешне похожи на такие языки программирования, как Си или Паскаль, написанные на них программы также состоят из выражений, операторов, управляющих структур. Важнейшим отличием между обычными языками программирования и языками HDL является явное включение концепции времени в языки описания аппаратуры.

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

Основные практически используемые языки описания аппаратуры — Verilog и VHDL; также существует несколько десятков альтернативных языков.

История[править | править вики-текст]

Первый современный HDL — Verilog, был создан Gateway Design Automation в 1985 году для описания СБИС. В 1987 году по заказу Министерства обороны США на основе Ады был разработан язык VHDL (VHSIC HDL)[1].

Изначально как Verilog, так и VHDL использовались для документирования и моделирования схемных решений, реализованных в иной форме (например, в виде схем). Моделирование при помощи HDL позволило инженерам работать на более высоком уровне абстракции, чем моделирование на уровне схемы, и, следовательно, упростить моделирование проектов, состоящих из тысяч транзисторов и более.

Введение логического синтеза схем из HDL сделало их основным языком для создания цифровых схем. САПР синтеза компилируют исходные файлы (написанные на подмножестве HDL, называемом RTL — англ. Register transfer level — Уровень регистровых передач) в описание схемы в форме списков связей (netlist, задающих соединения вентилей и транзисторов. Написание синтезируемого RTL-кода требует практики и соблюдения ряда правил со стороны разработчика. По сравнению с традиционным проектированием схем, создание синтезируемого RTL менее трудоёмко, но зачастую приводит к несколько большим по площади и менее производительным схемам.

В течение нескольких лет VHDL и Verilog стали основными HDL-языками в микроэлектронной промышленности, а ранние языки постепенно вышли из употребления. Однако и VHDL и Verilog имеют сходные ограничения: не подходят для аналоговой или смешанной цифро-аналоговой симуляции, не имеют языковых конструкций для описания рекурсивно-генерируемых логических структур; в этой связи создаются различные специализированные HDL, нацеленные на устранения этих ограничений двух основных языков. Альтернативные языки создаются как правило на основе языков программирования общего назначения, например, на основе С++ разработан SystemC, на основе Java — JHDL[en], а на основе Haskell разработаны языки Bluespec[en], HHDL, Hydra, Lava.

За десятилетия с момента создания оба основных языка были значительно модифицированы и усовершенствованы. Последняя версия языка Verilog стандартизована как IEEE 1800—2005 SystemVerilog, в ней появилось множество новых возможностей (классы, случайные величины, свойства и операторы контроля) для удовлетворения растущих потребностей по случайному тестированию, иерархическому дизайну, и повторному использованию кода. Последний стандарт на VHDL опубликован в 2002 году.

Пример[править | править вики-текст]

Описание аппаратуры на VHDL и Verilog может производиться на уровнях потоков данных (dataflow), поведения (behavioral), структуры (structural. Пример описания потоков данных на VHDL (описание сущности «not1», имеющей 1 входной порт размером 1 бит и 1 выходной порт размером 1 бит; данная сущность производит отрицание входного значения):

library iEEE;
use iEEE.STD_LOGIC_1164.ALL;
use iEEE.STD_NUMERIC_STD.ALL;

entity not1 is
  port(a:in STD_LOGIC;
       b:out STD_logic);
end not1;

architecture behavioral of not1 is
begin
  b <= not a;
end behavioral;

Примечания[править | править вики-текст]

  1. Barbacci, M., Grout S., Lindstrom, G., Maloney, M. P. Ada as a hardware description language: an initial report, Carnegie-Mellon Univ., Dept. of Computer Science, 1984

Ссылки[править | править вики-текст]