МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра САПР
Лабораторна робота № 5
з курсу “Системне програмування та операційні системи”
на тему: “ Програмування паралельного інтерфейсу ”
Виконав:
ст. гр. КН-24
Перевірив:
Колесник К. К.
Львів 2007
МЕТА РОБОТИ
Мета роботи – засвоїти основи організації обміну інформацією між ЕОМ і отримати практичнi навики програмування вводу-виводу через паралельний інтерфейс.
КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
Зовнішні інтерфейси ЕОМ
В процесі функціонування інформаційно-обчислювальних систем значне місце посідають операції обміну інформацією між ЕОМ та між ЕОМ і зовнішними пристроями. Важливо відмітити, що обмін інформацією між ЕОМ та зовнішними пристроями у більшості випадків зводиться до обміну інформацією між ЕОМ та керуючою ЕОМ (контроллером) зовнішнього пристрою. Тому в лабораторній роботі розглядається узагальнена задача організації і реалізації обміну інформацією між ЕОМ через паралельний інтерфейс.
Обмін інформацією між між ЕОМ та зовнішніми пристроями передбачає наявність одного з можливих зовнішніх інтерфейсів – засобів взаємодії. Для ПЕОМ найбільш поширеними є послідовний (RS-232 C) і паралельний інтерфейси, а також USB та SCSI. Зв’язок між внутрішньою системною шиною комп’ютера (PCI, ISA) та входом./виходом зовнішнього інтерфейсу забезпечується за допомогою адаптера – пристрою, який реалізує протокол обміну. Протокол обміну – це сукупність правил та домовленостей (стандартів), які описують та регламентують процедуру обміну інформацією між взаємодіючими об’єктами. Фактично протокол обміну – це сукупність протоколів, які згруповані по певних признаках в багаторівневу ієрахічну структуру. Найбільш повно ця структура представлена семирівневою еталонною моделлю протоколів обміну даними (ISO) [1], яка буде вивчатись у інших курсах. В даній лабораторній роботі охоплюються лише кілька рівнів цієї моделі, які визначають фізичну реалізацію та логічну організацію обміну інформацією. Фізична реалізація зовнішнього інтерфейсу визначає конструктивне виконання роз’ємів, рівні та значення електричних сигналів. Логічна організація визначає відповідність сигналів приймача та передавача, послідовність операцій та сигналів для встановлення зв’язку та обміну інформацією.
В сучасних ПЕОМ адаптери послідовного і паралельного інтерфейсів часто інтегровані в системну плату і реалізовані за допомогою контроллера “Південний міст”, який входить до складу чіпсета.
Режими адаптера паралельного інтерфейсу
Сучасні адаптери паралельного інтерфейсу відповідають вимогам стандарту IEEE 1284 – “Стандартний метод передачі сигналів для двонаправленого паралельного периферійного інтерфейсу для персональних комп’ютерів”. Він забезпечує високу швидкість передачі інформації і зворотню сумісність з більш ранніми версіями та режимами адаптерів паралельного інтерфейсу.
Паралельний інтерфейс передбачає використання 25 ліній, які поділяються на лінії даних, лінії стану та лінії керування. Лінії даних використовуються для однонаправленого чи двонаправленого обміну даними. Лінії стану призначені для передачі контроллером присторою в адаптер сигналів, що характеризують стан пристрою. Лінії керування використовуються для передачі контроллеру пристрою керуючих сигналів адаптера.
Існує п’ять режимів роботи адаптера паралельного інтерфейсу:
Режим сумісності (Centronics, SPP) – стандартний однонаправлений режим передачі восьми бітів даних від ПК до периферійного пристрою з швидкістю до 150 Кб/с (по лініях даних).
Режим тетради - двонаправлений напівдуплексний чотирьохбітовий режим обміну з використаннням чотирьох ліній даних для передачі і чотирьох ліній стану для прийому даних (з швидкістю до 80 Кб/с).
Режим байта – двонаправлений режим з напівдуплексним використанням восьми ліній даних для передачі і прийому даних (з швидкістю до 150 Кб/с).
EPP – режим - вдосконалений паралельний інтерфейс з апаратурно реалізованим швидкісним двонаправленим обміном даними (до 2 Мб/с) на основі “рукопотискання” в межах одного циклу вводу/виводу.
ECP – режим – розширений паралельний інтерфейс з апаратурно реалізованим швидкісним двонаправленим обміном даними на основі “рукопотискання” в межах одного циклу вводу/виводу, або з використанням каналу прямого доступу до пам’яті (DMA) без використання прямих операцій вводу/виводу. Цей режим також використовує стиснення даних на основі алгоритму RLE.
Сигнали адаптера паралельного інтерфейсу
Для з’єднання адаптера паралельного інтерфейсу і периферійних пристроїв використовується три види роз’ємів:
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
Не використовується
Організація вводу/виводу для паралельного інтерфейсу
Всі режими стандарту 1284 забезпечують організацію вводу/виводу даних з використанням “рукопотискання”. Протокол “рукопотискання” в інтерфейсі передбачає, що прийом кожної зміни сигналу керування адаптера підтверджується зміною відповідного сигналу стану контроллера і навпаки. Це дає можливість периферійним пристроям керувати часом, потрібним для виконання операції вводу/виводу (синхронізація вводу/виводу), а також формувати цикл стійкої прийомопередачі незалежно від довжини кабеля, яка впливає на час встановлення сигналів.
Реалізація “рукопотискання” забезпечується циклічним виконанням такої послідовності кроків:
Байт, що виводиться, заноситься в регістр даних адаптера.
Перевіряється стан принтера (сигнал Busy) і після встановлення сигналу “Принтер вільний” адаптером встановлюється активне значення сигналу стробу, яке дозволяє прийом нового байта даних контроллером принтера.
По закінченню прийому байта, контроллером встановлюється відповідне значення сигналу Ask (прийом байта завершений), прийом якого відтверджується адаптером скиданням активного значення сигналу стробу.
Після чого адаптер переходить до першого кроку для виводу нового байта даних.
При реалізації такого протоколу синхронний ввід/вивід здійснюється під керуванням центрального процесора, який є ініціатором обміну. При низькій швидкодії периферійних пристроїв це приводить до нераціонального використання процесорного часу (процесор простоює, очікуючи завершення роботи периферійного пристрою). Для усунення цього недоліку використовується асинхронний ввід/вивід в режимі переривання. При цьому процесор ініціює вивід першого байта і переходить до виконання якої-небудь іншої задачі (наприклад обчислення нових значень). По завершенню обробки прийнятого байта контроллер периферійного пристрою встановлює активне значення сигналу Ask, яке викликає апаратне переривання процесора. Процесор переходить у підпрограму обробки переривань і формує сигнали для виводу наступного байта. Таким чином у цьому режимі ініціатором обміну (крім першого байта) є периферійний пристрій.
Реалізація обміну інформацією між ЕОМ за допомогою паралельного інтерфесу в режимі тетради
При вирішенні багатьох задач виникає необхідність забезпечення двонаправленого обміну інформацією з використанням паралельного інтерфейсу. В даній лабораторній роботі розглядається варіант організації двонаправленого обміну між ПЕОМ з використанням паралельного інтерфейсу в режимі тетради. Для цього використовується кабельне з’єднання роз’ємів паралельного інтерфейсу у відповідності з рис.1. При передачі, байт, що виводиться заноситься потетрадно в молодші розряди регістру даних (D0-D3), а прийом тетрад забезпечується входами інтерфейсу, які забезпечують отримання слова стану (Ask, Paper,Select, Error). Передача байта здійснюється півбайтами з використаннням мультиплексування. Сигнали Strobe та Busy використовуються для керування обміном. Прийомопередача здійснюється в напівдуплексному режимі (одна ПЕОМ передає, інша приймає, а потім вони міняються). Фрагмент програми, який ілюструє можливий варіант реалізації передачі даних, приведений на рис. 2.
ЛАБОРАТОРНЕ ЗАВДАННЯ
Ознайомтесь з сигналами адаптера паралельного інтерфейсу і організацією обміну даними.
Встановіть відповідність сигналів на роз’ємах та значень бітів у регістрах портів.
Проведіть ідентифікацію сигналів інтерфейсу.
Розробіть протокол обміну інформацією між ПЕОМ через паралельний інтерфейс у режимі тетради.
Напишіть програми передачі та прийому даних через паралельний інтерфейс.
Відлагодьте програми і проведіть дослідження процесу обміну інформацією.
Зробіть висновки щодо особливостей організації обміну даними через паралельний інтерфейс у режимі тетради.
Програма відправник:
title sender
dseg segment
buf db 00000010b
dseg ends
sseg segment stack
db 1024 dup(?)
sseg ends
cseg segment
assume ds:dseg,cs:cseg,ss:sseg
start: jmp main
main: mov ax,dseg
mov ds,ax
mov ax,40h
mov es,ax
mov dx,es:[8]
call nulreg
mov al,buf
out dx,al
inc dx
inc dx
mov al,1
out dx,al
dec dx
l1: in al,dx
test al,10000000b
jz l1
inc dx
mov al,0
out dx,al
dec dx
l2: in al,dx
test al,10000000b
jnz l2
call nulreg
exit: mov ax,4c00h
int 21h
nulreg proc near
push dx
push ax
mov ax,0h
out dx,ax
inc dx
out dx,ax
inc dx
out dx,ax
pop ax
pop dx
ret
nulreg endp
cseg ends
end start
Програма прийомник:
title receiver
dseg segment
error db 'error $'
turn db ?
buf db ?
dseg ends
sseg segment stack
db 256 dup(?)
sseg ends
cseg segment
assume ds:dseg,cs:cseg,ss:sseg
start: jmp main
main: mov ax,dseg
mov ds,ax
mov ax,40h
mov es,ax
mov turn,0
mov dx,es:[8]
inc dx
in al,dx
test al,10000000b
jnz l1
inc dx
mov al,00000001b
out dx,al
dec dx
in al,dx
and al,01111000b
shr al,1
shr al,1
shr al,1
call show
inc dx
mov al,0
out dx,al
jmp l1
; jmp exit
exit: mov ax,4c00h
int 21h
show proc near
mov ah,02h
mov dl,al
int 21h
pop ax
ret
show endp
cseg ends
end start
Висновок
На цій лабораторній роботі я засвоїв основи організації обміну інформацією між ЕОМ і отримав практичнi навики програмування вводу-виводу через паралельний інтерфейс.