Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи мови AHDL_частина1.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
669.7 Кб
Скачать

3.3. Іменовані оператори

Логічним операторам і операторам порівняння в текстовому описі можуть бути привласнені символічні імена. Їхнє застосування дозволяє спростити як інтерпретацію синтезованих компілятором логічних рівнянь, так і ручне перерозміщення внутрішніх ресурсів НВІС.

Ім'я, що присвоюється операторові, відділяється від нього двокрапкою (:). Наведений нижче текстовий опис, логічно еквівалентний текстовому опису модуля Boole_1, ілюструє використання іменованих операторів.

SUBDESIGN boole_3

(

А0, А1, В : INPUT;

ОUT1, ОUT2 : OUTPUT;

)

BEGIN

OUT1=A1 tiger:&!АТ; -- tiger - ім'я оператора &

ОUT2=ОUT1 panther:#B; -- panther - ім'я оператора #

END;

Нижче представлені логічні рівняння, синтезовані пакетом при компіляції модуля Воо1е_3 (рівняння взяті з розділу Equations файлу звіту):

** EQUATIONS **

А0 : INPUT;

А1 : INPUT;

В: INPUT;

-- Node name is 'OUT1' from file "boole_3.tdf" line 7, column 1

-- Equation name is 'ОUT1', type is output

OUT1 = tiger~0;

-- Node name is 'OUT2' from file "boole_3. tdf" line 8, column 1

-- Equation name is 'ОUT2' type is output

0UT2 = panther~0;

-- Node name is 'panther ~0' from file "boole_3.tdf" line 8, column 19

Equation name is 'panther~0', location is LC1_A1, type is buried.

panther~0 = LCELL( _EQ001);

_EQ001 = tiger~0 # B;

-- Node name is 'tiger~0' from file "boole_3.tdf" line 7, column 21

Equation name is 'tiger~0' location is LC3_A1. type is buried.

tiger~0 = LCELL( _EQ002);

_EQ002 = !A0 & A1;

Зупинимося на них більш докладно.

На вихід OUT1 передається значення логічного виразу tigher~0: OUT1 = tiger~0, реалізованого на окремому логічному елементі:

tiger~0 = LCELL(_EQ002), де _EQ002 = !А0 & А1.

На вихід OUT2 передається значення логічного виразу panther~0: 0UT2 = panthe~0, реалізованого на окремому логічному елементі:

Panther~0 = LCELL(_EQ001), де _EQ001 = tiger~0#B.

Відзначимо, що в розділі Equation файлу звіту утримується інформація і про розміщення використаних логічних осередків у НВІС програмувальної логіки. Так panther~0 розміщена в першому логічному елементі (LC1), що перебуває в першій колонці рядка А НВІС, a tiger~0 — у третьому логічному елементі (LC3), що також знаходиться у першій колонці рядка А.

3.4. Групи

Однотипні змінні або виводи можуть бути об'єднані в одновимірну, двовимірну або часову групу.

3.4.1. Одновимірні й часові групи

Нижче наведене текстовий опис, що ілюструє використання одновимірних і часових груп:

SUBDESIGN GROUP_1

(

А[3..0] : INPUT; -- одновимірна група із чотирма членами

В[4..1] : INPUT; -- одновимірна група із чотирма членами

c,d,e,f : INPUT; -- однорозрядні входи

ОUT[5..2] : OUTPUT; -- одновимірна група зі чотирма членами

)

BEGIN

OUT[]=(A[] # В[1..4]) & !(c,d,e,f);

END;

Комбінаційна схема, що відповідає модулю GROUP_1, наведена на рис. 9.

Рис. 9.

Групи А[] і В[] мають однакове число членів, тому можливе порозрядне застосування оператора #: А[] # В[1..4].

При посиланні на групу В[4..1] її індекси перераховані у зворотному порядку В[1..4]. Тому при компіляції проекту процесор повідомлень сформує наступне попередження:

"Warning: Line 9, File c:\max_work\boole_1\group_1.tdf:

Group range B[1..4] differs from declaration B[4..1]"

Якщо в логічному рівнянні використовуються всі члени групи, причому в тім же порядку, у якому вони були задані, то для посилання на таку групу можна скористатися скороченою формою запису: A[] замість А[3. .0].

(c,d,f,g) - часова група із чотирма членами. Вираз !(c,d,f,g) задає порозрядне виконання інвертування.

У виразі (А[] # В[1..4]) & !(c,d,e,f) операндами оператора & є дві чотирирозрядні групи: A[3] # B[1], A[2] # B[2], A[1] # B[3], A[0] # B[4], і !c, !d, !e, !f. Тому можливо його порозрядне застосування.

Значення однієї групи може бути присвоєно іншій групі (тобто між ними можна поставити знак рівності) тільки в тому випадку, коли вони мають однакове число розрядів. Тому група OUT[] так само є чотирирозрядною.