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