Смекни!
smekni.com

Розробка цифрових засобів ПЛІС в інтегрованому середовищі проектування MAX+PLUS II (стр. 13 из 14)

carry_out[i + 1] = CARRY ( A[i] & B[i] # carry_out[i] & ( A[i] # B[i] ));

END GENERATE;

cout = carry_out[5];

END;

Програма для реалізації 4-розрядного віднімача за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:

SUBDESIGN add_sub

(

A[4..1], B[4..1] : input = GND;

Res[4..1], Cout : output;

)

VARIABLE

S[4..1] : node;

Cout_int : node;

BEGIN

(Cout_int, S[]) = (GND, A[]) - (GND, B[]);

(Cout, Res[]) = (Cout_int, S[]);

END;

7.5.4 Результати програмної реалізації суматорів, віднімачів

На рис. 7.5.9 зображено вікно сигнального редактору проекту “add_gate”.

Рис. 7.5.9. Результати тестування 4-розрядного суматора

На рис. 7.5.10 зображено вікно сигнального редактору проекту “add_sub”.


Рис. 7.5.10. Результати тестування 4-розрядного віднімача


8. Проект реалізації COM-порту в САПР MAX+PLUS II

8.1 Теоретичні відомості про послідовні порти і протокол RS-232

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

При асинхронній передачі кожному біту передує старт-біт, що сигналізує приймачу про початок чергової посилки, за яким зазвичай слідують біти даних і, можливо, біт паритету. Завершує посилку стоп-біт, що гарантує визначену затримку між сусідніми посилками (рис. 8.1).

Рис. 8.1. Формат асинхронної передачі

Старт-біт наступного посланого байту може посилатись в будь-який момент після закінчення стоп-біту, тобто між передачами можливі паузи нефіксованої довжини. Старт-біт, що має завжди строго визначене значення (лог. 0), забезпечує простий механізм синхронізації приймача. Приймач і передавач працюють на одній швидкості обміну, що виміряється в кількості передаваємих бітів за секунду. Внутрішній генератор синхронізації приймача використовує лічильник-дільник опорної частоти, що обнуляється в момент прийняття початку (переднього фронту) старт-біту. Цей лічильник генерує внутрішні строби, по яким приймач фіксує біти, які він приймає. В ідеальному варіанті строби розташовуються в середині бітових інтервалів, що забезпечує можливість прийняття даних і при деяких неузгодженнях швидкостей приймача і передавача.

Неважко помітити, що при передачі 8 біт даних, одного контрольного і одного стоп-біта гранично допустиме неузгодження швидкостей приймача і передавача, при якому дані будуть розпізнані вірно, не може перевищувати 5%. З врахуванням фазових змін (затягнутих фронтів сигналу) і дискретності роботи внутрішнього лічильника синхронізації реально допустимі менші відхилення частот. Чим менший коефіцієнт ділення внутрішньої частоти внутрішнього генератора (частота передачі), тем більше похибка прив’язки стробів до середині бітового інтервалу, і, відповідно, вимоги до узгодження частот найбільш строгі. Також, чим вище частота передачі, тим більше вплив факторів, що призводять до похибок.

Формат асинхронної посилки дозволяє виявляти можливі помилки передачі:

1) якщо прийнятий перепад, що сигналізує про початок посилки, а по стробу старт-біта зафіксований рівень логічного одиниці, то старт-біт вважається помилковим і приймач знову переходить до стану очікування. Про дану помилку формату приймач може і не повідомляти;

2) якщо під час, відведений під стоп-біт(и), виявлено рівень логічного нуля, фіксується помилка стоп-біта (також помилка формату);

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

Контроль формату дозволяє знаходити обрив лінії: при цьому зазвичай приймається логічний нуль, який спочатку трактується як старт-біт і нульові біти даних, але потім спрацьовує контроль стоп-біту.

Кількість біт даних може бути 5, 6, 7 або 8 (5- і 6-бітні формати мало поширені). Кількість стоп біт може бути 1, 1.5 і 2 (“півтора біта” означає лише довжину стопового інтервалу).

Асинхронний обмін в персональному комп’ютері реалізується за допомогою протоколу RC-232.

Інтерфейс RC-232 призначений для підключення апаратури, що приймає або передає дані (ООД – одно кінцевий об’єкт передачі даних або АДП – апаратура передачі даних), до одно кінцевої апаратури каналів даних. В ролі АДП може виступати комп’ютер, принтер, плоттер або інші периферійні пристрої. Цій апаратурі відповідає абревіатура DTE – Data Transfer Equipment. В ролі АКД зазвичай виступає модем, цій апаратурі відповідає абревіатура DCE – Data Communication Equipment. Кінцевою метою підключення є з’єднання двох пристроїв DTE, повна схема з’єднання приведена на рис. 8.2. Інтерфейс дозволяє виключити канал зв’язку разом з парою пристроїв DTE (модемів), поєднав пристрої безпосередньо за допомогою нуль-модемного кабелю (рис. 8.3).

Рис. 8.2. Повна схема з’єднання за RC-232

Рис. 8.3. З’єднання за RC-232 нуль-модемним кабелем

Стандарт описує керуючі сигнали інтерфейсу, пересилку даних, електричний інтерфейс і типи сполучень. Стандарт описує асинхронний і синхронний режими обміну, але COM-порти підтримують лише асинхронний режим.

8.2 Структура COM-порту при його реалізації в САПР MAX+PLUS II

Принципова структурна схема COM-порту при його реалізації в системі автоматизованого проектування MAX+PLUS II зображена на рис. 8.4. Вона являє собою розгорнутий варіант рис. 8.2, де в ролі одно кінцевого об’єкту передачі даних виступатиме пульт з 20 варіантами вихідного сигналу.

Візьмемо стоп-біт, що дорівнює 1, а кількість бітів даних - 8. Частота сигналу синхронізації може бути рівною 115200 біт за секунду або 9600 біт за секунду. Для забезпечення схеми з можливістю переключення частоти введемо до неї сигнал переключення (switch signal), який і переключатиме частоту сигналів синхронізації, що поступатиме на вхід тактування.

Всі елементи схеми доцільно описати окремо за допомогою мови AHDL в текстовому редакторі, а потім, використовуючи символьний редактор, перетворити елементи на символи і зібрати повністю всю схему вже у графічному редакторі.

Розглянемо функціональне призначення кожного з наведених в схемі пристроїв.

Шифратор 20 на 10 має 20-розрядний вхід (Encipherer_1_input[20..1]) і 10-розрядний вихід (Encipherer_1_output[10..1]). Шифратор описаний з використанням таблиці дійсності виконує дві функції.

По-перше, в залежності від натиснутої на пульті клавіші він видає двійковий код, який знаходиться в діапазоні від 0000000011 до 0000101001. Дана двійкова послідовність вихідного коду завжди починається з 0, а закінчується 1, ці числа являють собою ніщо інше, як старт-біт і стоп-біт. Тобто шифратор на своєму виході дає вже готовий код, що може передаватись по лінії зв’язку.

По-друге, можливий випадок коли дві клавіші будуть натиснуті одночасно, що може призвести до збою в системі. Тому рядок

WHEN OTHERS => Encipherer_1_output[] = b"1111111111";

дає вказівку шифратору видавати на виході двійковий код 1111111111 в будь-яких інших випадках, не передбачених таблицею дійсності шифратора - це захисна функція.

5-розрядний лічильник на D-тригерах має вхід (Counter_1_input), на який поступає сигнал синхронізації від зовнішнього генератора імпульсів, вхід очищення (Reset) і виконує функцію дільника частоти. Даний лічильник має два виходи (Counter_1_output[1] і Counter_1_output[1]), що відповідають вхідній частоті, поділеній на 2 і вхідній частоті, поділеній на 12.

Мультиплексор має 4 інформаційні (Multiplexer_1_input[4..1]), 2 адресні входи (Switch_signal[2..1]) і вхід дозволу роботи (Enable). Пристрій реалізовано за допомогою емульованої таблиці дійсності і його завданням є переключення виходу (Multiplexer_1__output) на один з інформаційних входів в залежності від стану адресних входів. Оскільки частота роботи системи може бути рівною 115200 біт за секунду або 9600 біт за секунду, то для керування переключенням досить і одного адресного входу, а другий адресний вхід (Switch_signal[2]), що у вікні графічного редактору відповідає імені SWITCH[2], заземлимо. З тієї ж самої причини заземлимо сигнали Multiplexer_1_input[4] і Multiplexer_1_input[3], що у вікні графічного редактору відповідають іменам MUX[4] і MUX[3]. Другий адресний вхід може бути потрібний, якщо в майбутньої, при модифікації схеми, кількість можливих варіацій частоти збільшиться до чотирьох.

4-розрядний лічильник на D-тригерах має вхід (CLK), на який передається обраний за допомогою мультиплексора сигнал синхронізації і вхід очищення (Reset). Цей лічильник керує завантаженням послідовного регістру шляхом призначення власному виходу (LOAD) значення 0 або 1: 0 – завантаження заборонено, 1 – завантаження дозволено.

10-розрядний паралельний регістр D-тригерах зберігає і зсуває з приходом кожного нового імпульсу синхронізації вихідний код, що сформований і переданий йому мультиплексором. Регістр має 10-розрядний вхід для завантаження “інформаційного” коду (Register_1_input[9..0]), вхід дозволу роботи (Enable), вхід предвстановлення (Set), вхід синхронізації (Clk), вхід керуванням завантаження (Load) і однорозрядний вихід (Register_1_output).

8.3 Програми структурних компонентів COM-порту мовою AHDL в САПР MAX+PLUS II

Програма для реалізації шифратора 20 на 10 (опис таблицею дійсності шифратора) за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:

Subdesign encipherer_1