ABEL () — мова проектування апаратури, розроблена спеціалістами Пеллеріним () та Холлі () з компанії «Data I/O Corporation» у 1983 році в Редмонді, Вашингтон. Окрім цього, вони були програмістами вихідного коду першого її компілятораJohn F. Wakerly Digital Design: Principles and Practices. — 4th Edition, 2005. — ISBN 0-13-186389-4 .

Мова широко використовувалась для програмування різних видів ПЛІС — CPLD та FPGA, оскільки при її проектуванні основний акцент було зроблено на автоматизації проектування ПЛІС та генерації конфігураційних файлів. В той же час основні конкуренти — VHDL та Verilog були спрямовані на моделювання мікросхем. Проте станом на 2013 рік ABEL практично не використовується, оскільки опис великих схем, що складаються з кількох тисяч логічних вентилів на цій мові непрактичний.

Історія Концепція ABEL вперше була створена Расселом де Піна () з дослідницької групи Data I/O's Applied Research Group в 1981 році. Згодом робота була продовжена спеціалістами Мері Бейлі (), Бйорном Бенсоном (), Вальтером Брайтом (), Міхаелем Холлі (), Чарльзом Олівером () та Девідом Пеллеріним () на чолі з доктором Лі ().

Після серії продаж був придбаний компанією «Xilinx» , що розробила власну мову на її основі — XABEL .

Структура програми

Програма на мові ABEL являє собою текстовий файл наступного змісту: шапка () з назвою модуля, параметрами та заголовком. Для спрощення сприйняття, програма поділяється на модулі, назва яких вказується в шапці файлу після ключового слова module. Великі файли можуть мати кілька модулів, з власними назвами, оголошеннями, логічними описами та тестовими векторами. Заголовок, що пишеться після зарезервованого слова title не є обов'язковим і використовується для ідентифікації проекту та створення документації. Також в шапці, після ключового слова device інколи вказують пристрій, для якого розробляється модуль. оголошення () пінів, констант, вузлів, множин, станів та бібліотек. Цей розділ файлу призначений для визначень об'єктів програми і починається з ключового слова declarations. Наприклад, для оголошення піна використовують його назву та ключове слово pin. Необов'язково, проте можливо задати його номер виводу на мікросхемі, а після зарезервованого слова istype — тип, наприклад com означає комбінаційний вихід. логічні описи () рівнянь, таблиць істинності, діаграм станів. Починається з ключового слова equations і описує функціональну частину створюваного модуля. Рівності записуються подібно до оператора присвоєння в мовах програмування і закінчуються символом ;. тестові вектори (). Особливістю мови ABEL є використання тестових векторів як спеціальних конструкцій для функціонального тестування розроблюваного пристрою. Воно здійснюється методом припущення, тобто комбінаціям вхідних сигналів ставляться в відповідність очікувані значення вихідних.

Закінчується файл ключовим словом end.

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

Конструкції мови

Множина символів мови До множини символів мови входять латинські літери, арабські цифри та спеціальні символи. Вони використовуються для утворення рядків (оточуючи їх з обох боків символом ') та ідентифікаторів.

Зарезервовані слова Мова передбачає використання 28 зарезервованих слів. Використання їх в назвах пристроїв, пінів, вузлів, констант, множин, макросів чи сигналів забороняється і приведе до помилки. + DECLARATIONS DEVICE ELSE ENABLE END ENDCASE ENDWITH FUSES EQUATIONS FLAG IF IN ISTYPE LIBRARY MACRO MODULE NODE OPTIONS PIN PROPERTY STATE_DIAGRAM TEST_VECTORS THEN TITLE TRACE TRUTH_TABLE WHEN WITH

Числа Мова ABEL підтримує запис чисел в десятковій, двійковій, вісімковій та шістнадцятковій системах числення. Таблиця нижче ілюструє формат запису чисел. + Основа системи Формат 10 <послідовність цифр 0..9> 2 ^b<послідовність цифр 0, 1, X> 8 ^o<послідовність цифр 0..7> 16 ^h<послідовність цифр 0..9, A..F>

За замовчуванням, числа інтерпретуються як десяткові, проте використання директиви @RADIX змінює це. @RADIX 2 " двійкова система @RADIX 1010 " десяткова система

Приклади використання MODULE trafficlight TITLE 'trafficlight'

DECLARATIONS " вхідні піни clk PIN 11; en PIN 9;

q0 NODE ISTYPE 'reg'; q1 NODE ISTYPE 'reg';

" вихідні піни red PIN 36 ISTYPE 'com'; yellow PIN 42 ISTYPE 'com'; green PIN 39 ISTYPE 'com';

EQUATIONS q0 := !q0 & !en; q1 := (q1 $ q0) & !en; q0.clk = clk; q1.clk = clk; red = q1; yellow = !q0; green = !(q1 & !q0);

TEST_VECTORS ([clk, en] -> [red, yellow, green]); @repeat 1 {[.C., 1] -> [.X., .X., .X.];} @repeat 7 {[.C., 0] -> [.X., .X., .X.];} @repeat 3 {[.C., 1] -> [.X., .X., .X.];} @repeat 40 {[.C., 0] -> [.X., .X., .X.];} END

Лічильник Нижче представлено код 4-розрядного двійкового лічильника на мові ABEL, який випускається американською промисловістю як інтегральна мікросхема 74x163.

MODULE Z74X163 TITLE '4-bit Binary Counter'

DECLARATIONS " вхідні піни clk, ld_l, clr_l, enp, ent PIN; a, b, c, d PIN;

" вихідні піни qa, qb, qc, qd PIN ISTYPE 'reg'; rc0 PIN ISTYPE 'com';

" визначення шин input = [d, c, b, a]; count = [qd, qc, qb, qa];

ld = !ld_l; clr = !clr_l;

EQUATIONS count.clk = clk; count := !clr & (ld & input # !ld & (ent & enp) & (count + 1) # !ld & !(ent & enp) & count); rc0 = (count == [1, 1, 1, 1]) & ent;

END Z74X163

Див. також Мови опису апаратури VHDL

Примітки

Посилання http://mazsola.iit.uni-miskolc.hu/cae/docs/xabel.html http://www.ue.eti.pg.gda.pl/cup/abel_ref.pdf For those who use ABEL

Література David Pellerin and Michael Holley. Digital Design Using ABEL. Prentice Hall, 1994.