Мо́ва о́пису апарату́ри (англ. hardware description language) — це спеціалізована формальна комп'ютерна мова, що використовується для проєктування структури, дизайну та роботи електронної мікросхеми та її моделювання. Вона дає можливість автоматично аналізувати, імітувати та тестувати створюваний пристрій. Компілятор мусить забезпечувати переведення програми, написаної на будь-якій з мов опису апаратури на низькорівневу специфікацію фізичних електронних компонентів з ціллю створити мікросхему.

До переваг використання мови проєктування апаратури над схемним проєктуванням можна віднести наступні:

  • можливість проєктування пристроїв, для яких створення схем неможливе через надмірну складність продукту, наприклад при розробці сучасних процесорів;
  • такий опис зазвичай об'єднує як структурну, так і функціональну складову;
  • проєкт на мові проєктування апаратури портативний та універсальний, тобто легко переноситься на іншу елементну базу і може використовуватися в іншому проєкті. Як результат, він стає довгоживучим, оскільки не залежить від «старіння» конкретних мікросхем;
  • мови опису апаратури гарантують високу надійність розроблюваного пристрою та забезпечують самодокументування.

Мови проєктування апаратури дають можливість інженерам працювати на вищому рівні абстракції, що дозволяє збільшити кількість елементів розроблюваного пристрою.

Структура

ред.

Мова опису апаратури виглядає дуже схоже на мову програмування, наприклад C, оскільки її структура складається з таких самих текстових виразів. Також мови проєктування апаратури дають можливість описувати специфікації для апаратного забезпечення, що можуть виконуватися. Це дає ілюзію наявності мови програмування, хоча насправді їх відносять до мов проєктування чи моделювання.

Першою причиною цього є те, що, на відміну від мов програмування, що не завжди мають в собі ознаки паралелізму, інструкції мов проєктування апаратури завжди виконуються паралельно. Іншою важливою їх складовою є опис синхросигналу, що є особливістю проєктування апаратного забезпечення. Мови опису апаратури можуть використовуватися для створення пристрою у структурній, поведінковій формах чи на рівні регістрових передач з такою ж функціональністю.

Історія розвитку

ред.

Перші мови опису апаратури з'явилися наприкінці 1960-х років[1]. Завдяки Digital Equipment Corporation та їх PDP-8 та PDP-16 вони набули поширення, оскільки для розробок було застосовано ISP[2], мову, що вперше ввела концепцію рівня регістрових передач (англ. Register Transfer Level - RTL).

Її наступниками стали ISPL та ISPS. Остання гарно описувала відношення між вхідними та вихідними портами і стала об'єктом досліджень DEC та інших компаній в США.

Наприкінці 1970-х років набули популярності ПЛІС, що дало новий поштовх в розробці мов опису апаратури.

В 1985 році компанією Gateway Design Automation було створено першу сучасну мову проєктування апаратури — Verilog. Вона лаконічна, проста в реалізації, має C-подібний синтаксис та швидкий компілятор, що дозволяє зменшити об'єм опису схем в півтора рази, порівняно з VHDL[3].

Створений в 1980-х роках на замовлення Міністерства оборони США VHDL (англ. VHSIC Hardware Description Language, де VHSIC — англ. Very High Speed Integrated Circuit) був стандартизований інститутом електроінженерів в 1987 році. VHDL зазнав значного впливу мов програмування Ada та Pascal, також було використано досвід, отриманий при створенні ISPS[4]. Вдосконалення мови веде група VASG (англ. VHDL Analysis and Standartisation Group), що переглядає стандарт раз в п'ять років.

Спочатку Verilog та VHDL використовувались для моделювання пристроїв, описаних іншими способами (наприклад у вигляді схемних файлів). З часом, VHDL та Verilog стали домінувати серед мов опису апаратури, в той час як багато старіших виходили з вжитку. Проте всі вони мають однакові недоліки:

Для подолання цих мінусів було створено спеціальні мови, такі як Confluence, проте й вони не змогли замінити VHDL та Verilog.

Представники

ред.

Мови опису апаратури класифікують за їх цільовим призначенням. До першої категорії відносять ті, що дозволяють виконувати моделювання аналогових та гібридних мікросхем. До другої — ті, що моделюють цифрові мікросхеми.

Для аналогових схем

ред.
Назва Опис
Analog Hardware Descriptive Language Мова опису для програмованих аналогових інтегральних схем
SpectreHDL Мова проєктування аналогової апаратури
Verilog-AMS (англ. Verilog for Analog and Mixed-Signal) Стандартизоване розширення Verilog для аналогового та гібридного моделювання
VHDL-AMS (англ. VHDL with Analog/Mixed-Signal extension) Стандартизована мова для гібридного моделювання
HDL-A Мова опису аналогового апаратного забезпечення

Для цифрових схем

ред.
Назва Опис
ABEL (англ. Advanced Boolean Expression Language)
AHDL (англ. Altera Hardware Description Language) Мова опису апаратури компанії Altera
AHPL (англ. A Hardware Programing Language)
Bluespec Високорівнева мова проєктування апаратури, заснована на мові програмування Haskell
BSV (англ. Bluespec SystemVerilog) Мова опису апаратури, заснована на Bluespec з синтаксисом, подібним до Verilog
Chisel (англ. Constructing Hardware in a Scala Embedded Language) Мова проєктування апаратури, заснована на мові програмування Scala
Confluence Мова опису апаратури в функціональному стилі, що більше не використовується[5]
CoWareC Мова проєктування апаратури, заснована на мові програмування C і розроблена компанією CoWare, замінена SystemC
CUPL (англ. Compiler for Universal Programmable Logic) Мова опису апаратури, розроблена компанією Logical Devices
ELLA Більше не використовується
Handel-C Мова проєктування апаратури, подібна до мови програмування C
HDCaml Мова опису апаратури, заснована на OCaml
HHDL Мова проєктування апаратури, заснована на Haskell
HJJ (англ. Hardware Join Java) Мова опису апаратури, заснована на Join Java
HML (англ. Hardware ML) Мова проєктування апаратури, заснована на SML[6]
Hydra (мова опису апаратури) Мова опису апаратури, заснована на Haskell[7]
Impulse C Мова проєктування апаратури, подібна до мови програмування C
ISPS Мова опису апаратури, більше не використовується
JHDL Мова проєктування апаратури, заснована на Java
Lava Мова опису апаратури, заснована на Haskell[8][9][10][11][12]
Lola Проста мова проєктування апаратури для навчання
M (мова опису апаратури) Мова опису апаратури, розроблена компанією Mentor Graphics
MyHDL Мова проєктування апаратури, заснована на Python
PALASM Мова опису апаратури
ParC (англ. Parallel C++) C++, оптимізований для задач проєктування апаратури
PHDL (англ. Printed Circuit Board Hardware Description Language) Мова опису апаратури з відкритим сирцевим кодом для поєднання друкованих плат
RHDL Мова проєктування апаратури, заснована на Ruby[13]
SystemC Стандартизовані класи бібліотеки C++ для поведінкового моделювання апаратури на вищому рівні абстракції
SystemVerilog Надбудова над Verilog
SystemTCL Мова опису апаратури, заснована на Tcl
THDL++ (англ. Templated Hardware Description Language та C++) Розширення VHDL
Verilog Одна з найбільш поширених мов проєктування апаратури
VHDL (англ. Very High Speed Integrated Circuit Hardware Language) Одна з найчастіше використованих мов опису апаратури

Примітки

ред.
  1. Barbacci, M. "A comparison of register transfer languages for describing computers and digital systems, " Carnegie-Mellon Univ., Dept. of Computer Science, March 1973
  2. ISP: a language to describe instruction dets and other register transfer systems / M. Barbacci, C. G. Bell, A. Newell.
  3. Поляков А. К. Языки VHDL и Verilog в проектировании цифровой аппаратуры. — М.: СОЛОН-Пресс, 2003. — 320 с.: ил. — (Серия «Системы проектирования»). — ISBN 5-98003-016-6. (рос.)
  4. 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
  5. Проєкти на Confluence [Архівовано 22 серпня 2019 у Wayback Machine.] (англ.)
  6. Li, Yanbing; Miriam Leeser (1995). HML: An Innovative Hardware Description Language and Its Translation to VHDL. Proceedings of CHDL’95: 691--696.
  7. Hydra [Архівовано 18 липня 2011 у Wayback Machine.] (англ.)
  8. Chalmers Lava [Архівовано 11 грудня 2013 у Wayback Machine.] (англ.)
  9. Xilinx Lava [Архівовано 11 грудня 2013 у Wayback Machine.] (англ.)
  10. Kansas Lava [Архівовано 25 травня 2013 у Wayback Machine.] (англ.)
  11. York Lava [Архівовано 11 грудня 2013 у Wayback Machine.] (англ.)
  12. Lava [Архівовано 27 липня 2011 у Wayback Machine.] (англ.)
  13. RHDL [Архівовано 14 травня 2016 у Wayback Machine.] (англ.)

Література

ред.