Програмування паралельного інтерфейсу

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра САПР

Інформація про роботу

Рік:
2012
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Системне програмування

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра САПР   ЗВІТ До виконання лабораторної роботи №5 На тему: “Програмування паралельного інтерфейсу” З курсу “ Системне програмування та операційні системи ” Львів – 2012 МЕТА РОБОТИ Мета роботи – засвоїти основи організації обміну інформацією між ЕОМ і отримати практичнi навики програмування вводу-виводу через паралельний інтерфейс. КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ 2.1. Зовнішні інтерфейси ЕОМ В процесі функціонування інформаційно-обчислювальних систем значне місце посідають операції обміну інформацією між ЕОМ та між ЕОМ і зовнішними пристроями. Важливо відмітити, що обмін інформацією між ЕОМ та зовнішними пристроями у більшості випадків зводиться до обміну інформацією між ЕОМ та керуючою ЕОМ (контроллером) зовнішнього пристрою. Тому в лабораторній роботі розглядається узагальнена задача організації і реалізації обміну інформацією між ЕОМ через паралельний інтерфейс. Обмін інформацією між між ЕОМ та зовнішніми пристроями передбачає наявність одного з можливих зовнішніх інтерфейсів – засобів взаємодії. Для ПЕОМ найбільш поширеними є послідовний (RS-232 C) і паралельний інтерфейси, а також USB та SCSI. Зв’язок між внутрішньою системною шиною комп’ютера (PCI, ISA) та входом./виходом зовнішнього інтерфейсу забезпечується за допомогою адаптера – пристрою, який реалізує протокол обміну. Протокол обміну – це сукупність правил та домовленостей (стандартів), які описують та регламентують процедуру обміну інформацією між взаємодіючими об’єктами. Фактично протокол обміну – це сукупність протоколів, які згруповані по певних признаках в багаторівневу ієрахічну структуру. Найбільш повно ця структура представлена семирівневою еталонною моделлю протоколів обміну даними (ISO) [1], яка буде вивчатись у інших курсах. В даній лабораторній роботі охоплюються лише кілька рівнів цієї моделі, які визначають фізичну реалізацію та логічну організацію обміну інформацією. Фізична реалізація зовнішнього інтерфейсу визначає конструктивне виконання роз’ємів, рівні та значення електричних сигналів. Логічна організація визначає відповідність сигналів приймача та передавача, послідовність операцій та сигналів для встановлення зв’язку та обміну інформацією. В сучасних ПЕОМ адаптери послідовного і паралельного інтерфейсів часто інтегровані в системну плату і реалізовані за допомогою контроллера “Південний міст”, який входить до складу чіпсета. 2.2. Режими адаптера паралельного інтерфейсу Сучасні адаптери паралельного інтерфейсу відповідають вимогам стандарту IEEE 1284 – “Стандартний метод передачі сигналів для двонаправленого паралельного периферійного інтерфейсу для персональних комп’ютерів”. Він забезпечує високу швидкість передачі інформації і зворотню сумісність з більш ранніми версіями та режимами адаптерів паралельного інтерфейсу. Паралельний інтерфейс передбачає використання 25 ліній, які поділяються на лінії даних, лінії стану та лінії керування. Лінії даних використовуються для однонаправленого чи двонаправленого обміну даними. Лінії стану призначені для передачі контроллером присторою в адаптер сигналів, що характеризують стан пристрою. Лінії керування використовуються для передачі контроллеру пристрою керуючих сигналів адаптера. Існує п’ять режимів роботи адаптера паралельного інтерфейсу: Режим сумісності (Centronics, SPP) – стандартний однонаправлений режим передачі восьми бітів даних від ПК до периферійного пристрою з швидкістю до 150 Кб/с (по лініях даних). Режим тетради - двонаправлений напівдуплексний чотирьохбітовий режим обміну з використаннням чотирьох ліній даних для передачі і чотирьох ліній стану для прийому даних (з швидкістю до 80 Кб/с). Режим байта – двонаправлений режим з напівдуплексним використанням восьми ліній даних для передачі і прийому даних (з швидкістю до 150 Кб/с). EPP – режим - вдосконалений паралельний інтерфейс з апаратурно реалізованим швидкісним двонаправленим обміном даними (до 2 Мб/с) на основі “рукопотискання” в межах одного циклу вводу/виводу. ECP – режим – розширений паралельний інтерфейс з апаратурно реалізованим швидкісним двонаправленим обміном даними на основі “рукопотискання” в межах одного циклу вводу/виводу, або з використанням каналу прямого доступу до пам’яті (DMA) без використання прямих операцій вводу/виводу. Цей режим також використовує стиснення даних на основі алгоритму RLE. 2.3. Сигнали адаптера паралельного інтерфейсу Для з’єднання адаптера паралельного інтерфейсу і периферійних пристроїв використовується три види роз’ємів: 1284 Тип А – 25-контактиний роз’єм (встановлюється на адаптері); 1284 Тип В – 36-контактний роз’єм Centronics (використовується у принтерах); 1284 Тип С – 36-контактний роз’єм аналогічний Centronics, але меншого розміру. Електричні інформаційні та керуючі сигнали на входах/виходах паралельного інтерфейсу відповідають стандартам TTL логіки. Навантажувальна здатність виходів переважно не перевищує одного TTL входу. Для збільшення навантажувальної здатності використовуються буферні мікросхеми. Відповідність сигналів інтерфейсу і контактів роз’ємів для режиму сумісності відображена у таблиці 1. Сукупність ліній інтерфейсу приєднується до певних адресованих програмно доступних апаратних регістрів адаптера які називаються портом. Біти цих регістрів відповідають певним значенням сигналів кожної з ліній. В ПЕОМ може бути до трьох адаптерів паралельного інтерфейсу, кожен з яких містить регістр даних, регістр стану (статусу) і регістр керування. Адаптери позначаються LPT1-LPT3 і адресуються базовою адресою, яка співпадає з адресою регістру даних в операціях вводу/виводу. Зазвичай LPT1 відповідає базова адреса 378h, LPT2 – 278H, LPT3 – 3DCH. Враховуючи те, що базові адреси можуть мінятись, в області даних BIOS записані фактичні базові адреси портів LPT1-LPT3. Базова адреса LPT1 записана в комірці 0040:0008, базова адреса LPT2 - в комірці 0040:000A, а базова адреса LPT3 – в комірці 0040:000С. Адреса регістру стану рівна базовій адресі+1, а адреса регістру керування – базовій адресі+2. В вихідні сигнали на виводах 2-9 відповідають логічним значенням бітів 0-7 регістру даних. Відповіднисть вхідних сигналів на виводах роз’єму і бітів регістру стану відображена у таблиці 2, а відповідність вихідних сигналів на виводах роз’єму і бітів регістру керування – у таблиці 3. Таблиця 1 № виводу адаптера № виводу Centronics Назва сигналу (при обміні з принтером) Напрям Регістр  1 1 Strobe – строб Вихід* Керування  2 2 Data0 – дані, біт 0 Вихід Даних  3 3 Data1 – дані, біт 1 Вихід Даних  4 4 Data2 –дані, біт 2 Вихід Даних  5 5 Data3 – дані, біт 3 Вихід Даних  6 6 Data4 – дані, біт 4 Вихід Даних  7 7 Data5 – дані, біт 5 Вихід Даних  8 8 Data6 – дані, біт 6 Вихід Даних  9 9 Data 7 – дані, біт 7 Вихід Даних  10 10 Ask –прийом байта принтером завершений Вхід Стану  11 11 Busy – зайнято – принтер приймає дані Вхід* Стану  12 12 Paper – відсутність паперу Вхід Стану  13 13 Select – підтвердження вибору принтером Вхід Стану  14 14 Auto line feed – автоматичн.перевід стрічки Вихід* Керування  15 32 Error – помилка Вхід Стану  16 31 Init – іниціація контроллера принтера Вихід Керування  17 36 Select – вибір принтера адаптером Вихід* Керування  18-25 19-30 Ground – земля    - апаратна інвесія сигналу. Таблиця 2 № виводу адаптера № біта регістра Значення активного сигналу   0 Зарезервоване   1 Зарезервоване   2 IRQ  15 3 Error (0 – помилка)  13 4 Select (1 – принтер on-line)  12 5 Paper (1 – відсутність паперу)  10 6 Ask (0 – підтвердження прийому байта)  11 7 Busy (0 – принтер зайнятий)   Таблиця 3 № виводу адаптера № біта регістра Значення активного сигналу   0 Strobe (1 – вивід байта даних)   1 Auto Line Feed (1- автоматичний перевід стрічки)   2 Init (0 – ініціація контроллера принтера)   3 Select (0 – відміна вибору принтера адаптером)   4 Interrupt (1 – переривання від принтера дозволено)   5 Doubly linked I/O (1 – дозвіл двонаправленого режиму)   6 Не використовується   7 Не використовується   2.4. Організація вводу/виводу для паралельного інтерфейсу Всі режими стандарту 1284 забезпечують організацію вводу/виводу даних з використанням “рукопотискання”. Протокол “рукопотискання” в інтерфейсі передбачає, що прийом кожної зміни сигналу керування адаптера підтверджується зміною відповідного сигналу стану контроллера і навпаки. Це дає можливість периферійним пристроям керувати часом, потрібним для виконання операції вводу/виводу (синхронізація вводу/виводу), а також формувати цикл стійкої прийомопередачі незалежно від довжини кабеля, яка впливає на час встановлення сигналів. Реалізація “рукопотискання” забезпечується циклічним виконанням такої послідовності кроків: Байт, що виводиться, заноситься в регістр даних адаптера. Перевіряється стан принтера (сигнал Busy) і після встановлення сигналу “Принтер вільний” адаптером встановлюється активне значення сигналу стробу, яке дозволяє прийом нового байта даних контроллером принтера. По закінченню прийому байта, контроллером встановлюється відповідне значення сигналу Ask (прийом байта завершений), прийом якого відтверджується адаптером скиданням активного значення сигналу стробу. Після чого адаптер переходить до першого кроку для виводу нового байта даних. При реалізації такого протоколу синхронний ввід/вивід здійснюється під керуванням центрального процесора, який є ініціатором обміну. При низькій швидкодії периферійних пристроїв це приводить до нераціонального використання процесорного часу (процесор простоює, очікуючи завершення роботи периферійного пристрою). Для усунення цього недоліку використовується асинхронний ввід/вивід в режимі переривання. При цьому процесор ініціює вивід першого байта і переходить до виконання якої-небудь іншої задачі (наприклад обчислення нових значень). По завершенню обробки прийнятого байта контроллер периферійного пристрою встановлює активне значення сигналу Ask, яке викликає апаратне переривання процесора. Процесор переходить у підпрограму обробки переривань і формує сигнали для виводу наступного байта. Таким чином у цьому режимі ініціатором обміну (крім першого байта) є периферійний пристрій. 2.5. Реалізація обміну інформацією між ЕОМ за допомогою паралельного інтерфесу в режимі тетради При вирішенні багатьох задач виникає необхідність забезпечення двонаправленого обміну інформацією з використанням паралельного інтерфейсу. В даній лабораторній роботі розглядається варіант організації двонаправленого обміну між ПЕОМ з використанням паралельного інтерфейсу в режимі тетради. Для цього використовується кабельне з’єднання роз’ємів паралельного інтерфейсу у відповідності з рис.1. При передачі, байт, що виводиться заноситься потетрадно в молодші розряди регістру даних (D0-D3), а прийом тетрад забезпечується входами інтерфейсу, які забезпечують отримання слова стану (Ask, Paper,Select, Error). Передача байта здійснюється півбайтами з використаннням мультиплексування. Сигнали Strobe та Busy використовуються для керування обміном. Прийомопередача здійснюється в напівдуплексному режимі (одна ПЕОМ передає, інша приймає, а потім вони міняються). Фрагмент програми, який ілюструє можливий варіант реалізації передачі даних, приведений на рис. 2. Власний варіант програми: Програма-передавач: title lpt_send sseg segment stack db 256 dup(?) sseg ends dseg segment string db 256 dup(0) dseg ends cseg segment assume ss:sseg,cs:cseg,ds:dseg send proc near ;geting al push ax out dx,al ;r-dat inc dx inc dx ;r-driver mov al,1101b ;strobe out dx,al dec dx ;r-state c1: in al,dx test al,10000000b ;busy jz c1 inc dx ;r-driver mov al,1100b ;end of strobe out dx,al dec dx ;r-state c2: in al,dx test al,10000000b ;ask for more jnz c2 dec dx ;r-dat pop ax ret send endp start: mov ax,dseg mov ds,ax mov ax,40h mov es,ax mov dx,es:[8] xor si,si l1: mov ah,1 int 21h cmp al,0dh je l2 mov string[si],al inc si jmp l1 l2: inc si mov string[si],0 xor si,si mov cx,5 xor ax,ax p1: mov al,string[si] ;pushing information call send shr al,1 shr al,1 shr al,1 shr al,1 call send mov al,string[si] test al,al ;testing the end jz exit inc si jmp p1 exit: mov ax,4c00h int 21h cseg ends end start Програма-приймач: title lpt_get sseg segment stack db 256 dup(?) sseg ends dseg segment buf db 256 dup(?) buff db ? dseg ends cseg segment assume ss:sseg,cs:cseg,ds:dseg get proc near mov buff,0 inc dx ;r-state c1: in al,dx test al,10000000b ;ask for strobe jz c1 mov buff,al inc dx ;r-driver mov al,1101b ;talk that ready out dx,al dec dx ;r-state c2: in al,dx test al,10000000b ;ask for end of strobe jnz c2 inc dx ;r-driver mov al,1100b out dx,al dec dx ;r-state dec dx ;r-dat ret get endp start: push ds xor ax,ax push ax mov ax,dseg mov ds,ax mov ax,40h mov es,ax mov dx,es:[8] mov si,0 mov cx,5 xor ax,ax p1: call get shr buff,1 shr buff,1 shr buff,1 and buff,1111b mov al,buff mov buf[si],al call get shl buff,1 and buff,11110000b mov al,buf[si] add al,buff mov buf[si],al test al,al jz exit inc si jmp p1 exit: inc si mov buf[si],'$' mov ah,9 mov dx,offset buf int 21h mov ax,4c00h int 21h cseg ends end start   ВИСНОВКИ: На цій лабораторній роботі я засвоїв основи організації обміну інформацією між ЕОМ і отримав практичнi навики програмування вводу-виводу через паралельний інтерфейс.
Антиботан аватар за замовчуванням

30.04.2013 23:04-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!