Язык описания интерфейсов
- 1 year ago
- 0
- 0
Язык описания аппаратуры ( HDL от англ. hardware description language ) — специализированный компьютерный язык , используемый для описания структуры и поведения электронных схем , чаще всего цифровых логических схем.
Языки описания аппаратуры внешне похожи на такие языки программирования , как Си или Паскаль , написанные на них программы также состоят из выражений, операторов, управляющих структур. Важнейшим отличием между обычными языками программирования и языками HDL является явное включение концепции времени в языки описания аппаратуры.
Языки описания аппаратуры являются неотъемлемой частью САПР , особенно для таких сложных схем, как специализированные интегральные схемы , микропроцессоры и программируемые логические устройства .
Основные практически используемые языки описания аппаратуры — Verilog и VHDL ; также существует несколько десятков альтернативных языков.
Первый современный HDL — Verilog , был создан Gateway Design Automation в 1985 году для описания СБИС. В 1987 году по заказу Министерства обороны США на основе языка Ада был разработан язык VHDL ( VHSIC HDL) .
Изначально как Verilog, так и VHDL использовались для документирования и моделирования схемных решений, реализованных в иной форме (например, в виде схем). Моделирование при помощи HDL позволило инженерам работать на более высоком уровне абстракции, чем моделирование на уровне схемы, и, следовательно, упростить моделирование проектов, состоящих из тысяч транзисторов и более.
Введение логического синтеза схем из HDL сделало их основным языком для создания цифровых схем. САПР синтеза компилируют исходные файлы (написанные на подмножестве HDL, называемом RTL — англ. Register transfer level — Уровень регистровых передач ) в описание схемы в форме списков связей ( netlist , задающих соединения вентилей и транзисторов . Написание синтезируемого RTL-кода требует практики и соблюдения ряда правил со стороны разработчика. По сравнению с традиционным проектированием схем, создание синтезируемого RTL менее трудоёмко, но зачастую приводит к несколько большим по площади и менее производительным схемам.
В течение нескольких лет VHDL и Verilog стали основными HDL-языками в микроэлектронной промышленности, а ранние языки постепенно вышли из употребления. Однако и VHDL и Verilog имеют сходные ограничения: не подходят для аналоговой или смешанной цифро-аналоговой симуляции, не имеют языковых конструкций для описания рекурсивно-генерируемых логических структур; в этой связи создаются различные специализированные HDL, нацеленные на устранения этих ограничений двух основных языков. Альтернативные языки создаются как правило на основе языков программирования общего назначения, например, на основе C++ разработан SystemC , на основе Java — , а на основе Haskell разработаны языки , , , .
За десятилетия с момента создания оба основных языка были значительно модифицированы и усовершенствованы. Последняя версия языка 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;