Мови опису апаратури

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

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

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

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

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

Структура[ред.ред. код]

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

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

Історія розвитку[ред.ред. код]

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

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

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

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

Створений в 1980-х роках на замовлення Міністерства оборони США VHDL (англ. VHSIC Hardware Description Language, де VHSIC — англ. Very High Speed Integrated Circuit) був стандартизований інститутом електроінженерів в 1987 році. VHDL зазнав значного впливу мов програмування Ada та Pascal, також було використано досвід, отриманий при створенні ISPS[3]. Вдосконалення мови веде група 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 Мова опису апаратури в функціональному стилі, що більше не використовується[4]
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[5]
Hydra (мова опису апаратури) Мова опису апаратури, заснована на Haskell[6]
Impulse C Мова проектування апаратури, подібна до мови програмування C
ISPS Мова опису апаратури, більше не використовується
JHDL Мова проектування апаратури, заснована на Java
Lava Мова опису апаратури, заснована на Haskell[7][8][9][10][11]
Lola Проста мова проектування апаратури для навчання
M (мова опису апаратури) Мова опису апаратури, розроблена компанією Mentor Graphics
MyHDL Мова проектування апаратури, заснована на Python
PALASM Мова опису апаратури
ParC (англ. Parallel C++) C++, оптимізований для задач проектування апаратури
PHDL (англ. Printed Circuit Board Hardware Description Language) Мова опису апаратури з відкритим сирцевим кодом для поєднання друкованих плат
RHDL Мова проектування апаратури, заснована на Ruby[12]
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. Поляков А. К. Языки VHDL и Verilog в проектировании цифровой аппаратуры. — М.: СОЛОН-Пресс, 2003. — 320 с.: ил. — (Серия «Системы проектирования»). — ISBN 5-98003-016-6. (рос.)
  3. 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
  4. Проекти на Confluence (англ.)
  5. Li Yanbing, Miriam Leeser HML: An Innovative Hardware Description Language and Its Translation to VHDL // Proceedings of CHDL’95. — (1995) С. 691--696.
  6. Hydra (англ.)
  7. Chalmers Lava (англ.)
  8. Xilinx Lava (англ.)
  9. Kansas Lava (англ.)
  10. York Lava (англ.)
  11. Lava (англ.)
  12. RHDL (англ.)

Література[ред.ред. код]