Перейти до вмісту

ABEL

Матеріал з Вікіпедії — вільної енциклопедії.
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].

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

[ред. | ред. код]
Приклад опису мікросхеми 74162 на мові ABEL

Програма на мові ABEL являє собою текстовий файл наступного змісту[1][5]:

  • шапка (англ. header) з назвою модуля, параметрами та заголовком.

Для спрощення сприйняття, програма поділяється на модулі, назва яких вказується в шапці файлу після ключового слова module. Великі файли можуть мати кілька модулів, з власними назвами, оголошеннями, логічними описами та тестовими векторами. Заголовок, що пишеться після зарезервованого слова title не є обов'язковим і використовується для ідентифікації проекту та створення документації. Також в шапці, після ключового слова device інколи вказують пристрій, для якого розробляється модуль.

Цей розділ файлу призначений для визначень об'єктів програми і починається з ключового слова declarations. Наприклад, для оголошення піна використовують його назву та ключове слово pin. Необов'язково, проте можливо задати його номер виводу на мікросхемі, а після зарезервованого слова istype — тип, наприклад com означає комбінаційний вихід.

Починається з ключового слова equations і описує функціональну частину створюваного модуля. Рівності записуються подібно до оператора присвоєння в мовах програмування і закінчуються символом ;.

  • тестові вектори (англ. test vectors).

Особливістю мови 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[1].

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

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. а б в John F. Wakerly Digital Design: Principles and Practices. — 4th Edition, 2005. — ISBN 0-13-186389-4 (англ.)
  2. Lee, Kyu Y.; Holley, Michael; Bailey, Mary; Bright, Walter (June 1985). A High-Level Design Language for Programmable Logic Devices. VLSI Design. Manhasset NY: CPM Publications. 6 (6): pp. 50–62. ISSN 0279-2834. {{cite journal}}: |pages= має зайвий текст (довідка)
  3. XILINX COMPLETES PURCHASE OF SOFTWARE ASSETS (англ.). Архів оригіналу за 23 квітня 2000. Процитовано 19 вересня 2013. [Архівовано 2000-04-23 у Wayback Machine.]
  4. Xilinx ABEL User Guide (англ.) (PDF). Архів оригіналу (PDF) за 21 вересня 2013. Процитовано 21 вересня 2013. [Архівовано 2013-09-21 у Wayback Machine.]
  5. University of Pennsylvania's ABEL primer, as recommended by Walter Bright (англ.). Архів оригіналу за 6 лютого 2007. Процитовано 6 лютого 2007.

Посилання

[ред. | ред. код]

Література

[ред. | ред. код]
  • David Pellerin and Michael Holley. Digital Design Using ABEL. Prentice Hall, 1994. (англ.)