ABEL | |
---|---|
Парадигма | паралельна |
Дата появи | 1983 |
Розробник | «Data I/O Corporation» |
ABEL (англ.Advanced Boolean Expression Language) —мова проектування апаратури, розроблена спеціалістами Пеллеріним (англ.David Pellerin) та Холлі (англ.Michael Holley) з компанії«Data I/O Corporation» у1983 році в Редмонді, Вашингтон. Окрім цього, вони булипрограмістамивихідного коду першого їїкомпілятора[1].
Мова широко використовувалась для програмування різних видівПЛІС —CPLD таFPGA, оскільки при її проектуванні основний акцент було зроблено на автоматизації проектування ПЛІС та генерації конфігураційних файлів. В той же час основні конкуренти —VHDL таVerilog були спрямовані на моделюваннямікросхем. Проте станом на2013 рік ABEL практично не використовується, оскільки опис великих схем, що складаються з кількох тисячлогічних вентилів на цій мові непрактичний[джерело?].
Концепція ABEL вперше була створена Расселом де Піна (англ.Russel de Pina) з дослідницької групи Data I/O's Applied Research Group в1981 році. Згодом робота була продовжена спеціалістами Мері Бейлі (англ.Mary Bailey), Бйорном Бенсоном (англ.Bjorn Benson), Вальтером Брайтом (англ.Walter Bright), Міхаелем Холлі (англ.Michael Holley), Чарльзом Олівером (англ.Charles Olivier) та Девідом Пеллеріним (англ.David Pellerin) на чолі здоктором Лі (англ.Kyu Y. Lee)[2].
Після серії продаж був придбаний компанією«Xilinx»[3], що розробила власну мову на її основі —XABEL[4].
Програма на мові ABEL являє собоютекстовий файл наступного змісту[1][5]:
Для спрощення сприйняття, програма поділяється на модулі, назва яких вказується в шапці файлу після ключового слова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 trafficlightTITLE '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';EQUATIONSq0 := !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[1].
MODULE Z74X163TITLE '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;EQUATIONScount.clk = clk;count := !clr & (ld & input # !ld & (ent & enp) & (count + 1) # !ld & !(ent & enp) & count);rc0 = (count == [1, 1, 1, 1]) & ent;END Z74X163
{{cite journal}}
:|pages=
має зайвий текст (довідка)