ТОП 10:

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



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

 

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

 

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


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

 


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

Теоретичні відомості про послідовні порти і протокол 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

(

Encipherer_1_input[20..1] : input;

Encipherer_1_output[10..1] : output;

)

Begin

CASE Encipherer_1_input[] IS

WHEN b"00000000000000000001" => Encipherer_1_output[] = b"0000000011";

WHEN b"00000000000000000010" => Encipherer_1_output[] = b"0000000101";

WHEN b"00000000000000000100" => Encipherer_1_output[] = b"0000000111";

WHEN b"00000000000000001000" => Encipherer_1_output[] = b"0000001001";

WHEN b"00000000000000010000" => Encipherer_1_output[] = b"0000001011";

WHEN b"00000000000000100000" => Encipherer_1_output[] = b"0000001101";

WHEN b"00000000000001000000" => Encipherer_1_output[] = b"0000001111";

WHEN b"00000000000010000000" => Encipherer_1_output[] = b"0000010001";

WHEN b"00000000000100000000" => Encipherer_1_output[] = b"0000010011";

WHEN b"00000000001000000000" => Encipherer_1_output[] = b"0000010101";

WHEN b"00000000010000000000" => Encipherer_1_output[] = b"0000010111";

WHEN b"00000000100000000000" => Encipherer_1_output[] = b"0000011001";

WHEN b"00000001000000000000" => Encipherer_1_output[] = b"0000011011";

WHEN b"00000010000000000000" => Encipherer_1_output[] = b"0000011101";

WHEN b"00000100000000000000" => Encipherer_1_output[] = b"0000011111";

WHEN b"00001000000000000000" => Encipherer_1_output[] = b"0000100001";

WHEN b"00010000000000000000" => Encipherer_1_output[] = b"0000100011";

WHEN b"00100000000000000000" => Encipherer_1_output[] = b"0000100101";

WHEN b"01000000000000000000" => Encipherer_1_output[] = b"0000100111";

WHEN b"10000000000000000000" => Encipherer_1_output[] = b"0000101001";

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

End CASE;

End;

Програма для реалізації мультиплексора з 4 інформаційними, 2 адресними і входом дозволу роботи (опис емульованою таблицею дійсності мультиплексора) за допомогою мови AHDL в інтегрованому середовищі MAX+PLUS II має наступний вигляд:

Subdesign multiplexer_1

(

Multiplexer_1_input[4..1] : input;

Switch_signal[2..1] : input;

Enable : input;

Multiplexer_1__output : output;

)

Begin

if Enable == 0 then

case Switch_signal[2..1] is

when 0 => Multiplexer_1__output = Multiplexer_1_input[1];

when 1 => Multiplexer_1__output = Multiplexer_1_input[2];

when 2 => Multiplexer_1__output = Multiplexer_1_input[3];

when 3 => Multiplexer_1__output = Multiplexer_1_input[4];

end case;

end if;

End;

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

Subdesign register_1

(

Register_1_input[9..0] : input;

Enable, Set, Clk , Load : input;

Register_1_output : output;

)

Variable

Triggers[9..0] : DFFE;

Begin

Triggers[9..0].clk = Clk;

Triggers[9..0].prn = Set;

Triggers[9..0].ena = Enable;

IF Load == 0

THEN

Triggers[].d = (Triggers[8..0].q, VCC);

ELSE

Triggers[].d = Register_1_input[];

END IF;

Register_1_output = Triggers[9].q;

End;

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

Subdesign counter_2

(

CLK : input;

Reset : input;

LOAD : output;

)

Variable

TRIG[3..0] : DFF;

Begin

TRIG[].clrn = Reset;

TRIG[].clk = CLK;

IF ( TRIG[].q == B"1011")

THEN TRIG[].d = B"0000";

LOAD = B"1";

ELSE TRIG[].d = TRIG[].q + 1;

LOAD = B"0";

END IF;

End;

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

Subdesign counter_1

(

Counter_1_input : input;

Reset : input;

Counter_1_output[2..1] : output;

)

Variable

Triggers : JKFFE;

TRIG[4..0] : DFF;

Begin

Triggers.j = vcc;

Triggers.k = vcc;

Triggers.clrn = Reset;

Triggers.clk = Counter_1_input;

TRIG[].clrn = Reset;

TRIG[].clk = Counter_1_input;

IF ( TRIG[].q == B"11000")

THEN TRIG[].d = B"00000";

ELSE TRIG[].d = TRIG[].q + 1;

END IF;

Counter_1_output[2..1] = (TRIG[4].q,Triggers.q);

End;

Схема проекту COM-порту зібраного з окремих символів-підпрограм у вікні графічного редактору показано на рис. 8.5. Символи-підпрограми, що зображені у вигляді блоків з іменованими входами і виходами поєднані за допомогою ліній зв’язку.

 

Рис. 8.5. Реалізація проекту СОМ-порту в графічному редакторі

 

8.4 Результати програмної реалізації COM-порту в САПР MAX+PLUS II

Результати тестування програмної реалізації COM-порту в САПР MAX+PLUS II наведено на рис. 8.6. Поетапно процес компіляції всього проекту, так як і його компонентів, описаний в розділі 4.

Рис. 8.6. Результати тестування проекту СОМ-порту

 


Використана література

1. Антонов А.П. Язык описания цифровых устройств AlteraHDL. М.: Радиософт, 2001. – 221 стр.

2. Баранов С.И. Синтез микропрограммных автоматов. Л.: Энергия, 1979. 232 стр.

3. Девятков В.В Методы реализации конечных автоматов на сдвиговых регистрах. М.: Энергия, 1974. – 80 стр.

4. Денисенко Е.Л. Иерархический синтез асинхронных автоматов на программируемых логических интегральных схемах (ПЛИС) с учетом ограничений. М.: УсИМ, 1997. – 476 стр.

5. Закревский А.Д. Алгоритмы синтеза конечных автоматов. М.: Наука, 1971. – 502 стр.

6. Закревский А.Д. Логический синтез каскадных схем. М.: Наука, 1981. – 416 стр.

7. Лазарев В.Г., Пийль Е.И. Способ объединения алгоритмов. Санкт-Петербург: Тр. ЛОНИИС, 1962 стр.

8. Осадчий Ю.Ф., Глудкин О.П. Гуров А.И. Аналоговая и цифровая электроника. М.: Горячая линия – телеком, 2000. – 762 стр.

9. Соловьев В.В. Использование программируемых матриц логики при синтезе комбинационных схем. Минск: БГУИР, 1995. – 233 стр.

10. Соловьев В.В., Самаль Д.И. Методы синтеза произвольной логики на программируемых логических устройствах. М.: Автоматика и вычислительная техника, 1997. 561 стр.

11. Соловьев В.В., Васильева А.Г. Программируемые логические интегральные схемы и их применение. Минск: Беларуская навука, 1998. – 270 стр.

12. Соловьев В.В. Проектирование цифровых систем на основе программируемых логических интегральных схем. М.: Горячая линия – телеком, 2001. - 636 стр.

13. Соловьев В.В. Проектирование функциональных узлов цифровых систем на программируемых логических устройствах. Минск: Бестпринт, 1996. - 252 стр.

14. Соловьев В.В. Синтез комбинационных и последовательных схем на программируемых логических устройствах. М.: Горячая линия – телеком, 2001. - 233 стр.

15. Соловьев В.В. Синтез произвольной регистровой логики на программируемых логических устройствах. М.: Горячая линия – телеком, 2000. - 81 стр.

16. Соркин Б.Л. Синтез микропрограммных автоматов на стандартных ПЗУ и ПЛМ с использованием элементов средней степени интеграции. Минск: АВТ, 1997. – 378 стр.

17. Поттосин Ю.В., Черимсинова Л.Д. автоматная реализация алгоритмов логического управления. Минск: Институт техники и кибернетики АН Беларуси, 1994 – 38 стр.

18. Стешенко В.Б. ПЛИС фирмы Altera: проектирование устройств обработки сигналов. М.: Додека, 2000. - 128 стр.

19. Токхейм Р.Б. Основы цифровой электроники. М.: Мир, 1988. - 392 стр.

20. Янов Ю.И. О логических схемах алгоритмов. М.: Физматгиз, 1995. – 332 стр.

 







Последнее изменение этой страницы: 2017-02-06; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.234.244.18 (0.015 с.)