Інтерфейс IEEE 1284
Стандартний інтерфейс паралельного порту отримав свою первинну назву по імені американської фірми Centronics – виробника принтерів. Перші версії цього стандарту були орієнтовані виключно на принтери, мали на увазі передачу даних лише в один бік (від комп’ютера до принтера) і мали невисоку швидкість передачі (150-300 Кбайт/с). Такі швидкості неприйнятні для сучасних друкуючих пристроїв. Крім того, для роботи з деякими пристроями необхідна двостороння передача даних. Тому деякі фірми (Xircom, Intel, Hewlett Packard, Microsoft) запропонували декілька модифікацій швидкісних паралельних інтерфейсів: EPP (Enhanced Parallel Port) – до 2 Мбайт/с, ECP (Extended Capabilities Port) – до 4 Мбайт/с і ін. На основі цих розробок в 1994 році Інститутом інженерів по електроніці і електротехніці був прийнятий стандарт IEEE 1284-1994, нині повсюдно використовуваний в персональних комп’ютерах як стандартний паралельний інтерфейс.
Стандарт IEEE 1284 визначає роботу паралельного інтерфейсу в трьох режимах: Standard Parallel Port (SPP), Enhanced Parallel Port (EPP) і Extended Capabilities Port (ECP). Кожен з цих режимів передбачає двосторонню передачу даних між комп’ютером і периферійним пристроєм.
Режим SPP (Стандартний паралельний порт) використовується для сумісності із старими принтерами, не підтримуючими IEEE 1284. Режиму SPP відповідають три програмно доступних регістра:
- порт BASE+0 – SPP Data – регістр даних
- порт BASE+1 – SPP Status – регістр стану
- порт BASE+2 – SPP Control – регістр управління.
Для пристрою LPT1 базовою адресою (BASE) в просторі портів введення-виводу зазвичай є 378h.
У цьому режимі лінії DATA[0:7] використовуються для прямої передачі даних (від комп’ютера до периферійного пристрою). Сигнали STROBE#, ACK# і BUSY використовуються для квитування. Сигналом STROBE# комп’ютер інформує про готовність даних на лініях DATA[0:7]. Якщо пристрій прийняв виставлені комп’ютером дані, то воно виставляє сигнал ACK#. Під час прийому даних, під час ініціалізації, а також за наявності помилки пристрій виставляє сигнал BUSY. Про виникнення помилкової ситуації сигналізує лінія ERROR#, а також PE (кінчився папір). Про те, що принтер включений і готовий до роботи, повідомляється за допомогою сигналу SELECT. Для підтвердження вибору принтера комп’ютер виставляє сигнал SLCTIN#. При необхідності очистити буфер принтера і перевести його в початковий стан виставляється INIT#. Сигнал AUTOFD# використовується при роботі з матричними принтерами в текстовому режимі для просування паперу на один рядок.
Для організації зворотного каналу (передача даних від принтера в комп’ютер) в режимі SPP можливі два механізми: механізм двонаправленого порту (вперше представлений в IBM Mode). При використанні механізму двонаправленого порту спосіб квитування не декларується. PS/2 в 1987 р.) і механізм передачі півбайтами (Nibble
Особливістю зворотного каналу в Nibble Mode є те, що за один цикл передається тільки 4 бита даних. Таким чином, швидкість в зворотному каналі в два рази менше, ніж в прямому каналі. Перевагою використання Nibble Mode є можливість програмної реалізації цього механізму на будь-якому старому паралельному порту, не підтримуючому IEEE 1284. Сигналом активності цього механізму є високий рівень на лінії NibbleMode (при прямій передачі на цій лінії виставляється низький рівень). Для квитування використовуються лінії HostBusy (низький рівень сигналу підтверджує дійсність даних D[0:4]/D[5:7]). (сигнал встановлюється комп’ютером в низький рівень, коли він готовий до прийому) і PtrClk
У режимі EPP (Покращуваний паралельний порт) використовується апаратна реалізація сигналів квитування, завдяки чому можливе збільшення швидкості передачі до 2 Мбайт/с. Цей режим підтримує адресацію пристроїв, завдяки чому можливе підключення декількох (до 64) пристроїв до одного порту. Генерація циклу читання або запису на шині IEEE 1284 зі при зверненні до регістра EPP Address (BASE+3) або EPP Data (BASE+4). При цьому адаптер IEEE 1284 встановлює сигнал Write# залежно від напряму передачі (низький рівень – пряма передача, високий рівень – зворотна передача). Для периферійного пристрою інформацією про те, чи є біти на лініях AD[0:7] даними або адресою, є сигнали DataStb# (строб даних) або AddrStb# (строб адреси). Периферійний пристрій інформує комп’ютер про свою готовність прийняти черговий байт за допомогою сигналу Wait#. Сигнал Reset#, так само як і в режимі SPP використовується для ініціалізації пристрою. Установка периферійним пристроєм сигналу Intr# викликає і DataAvail# використовуються по розсуду розробника, наприклад, для квитування в зворотному каналі. всіма необхідними сигналами квитування відбувається генерацію переривання. Сигнали AckDataReq
Режим ECP (Порт розширених можливостей) також використовує апаратне квитування і адресацію пристроїв (до 128). Додатково ECP підтримує розпізнавання помилок, узгодження швидкості і режиму передачі, буферизацію даних в черзі FIFO (з використанням DMA) і їх компресію по алгоритму RLE (Run Length Encoding), що дозволяє досягати швидкість до 4 Мбайт/с.
Ознакою активності режиму ECP є високий рівень сигналу 1284Active. При прямій передачі для квитування використовуються сигнали HostClk і PeriphAck, а сигнал HostAck указує передаваних даних: високий рівень – звичайні дані, низький рівень – команда або адреса. Для запиту зворотного каналу комп’ютер виставляє сигнал ReverseReq#, який пристрій підтверджує сигналом AckReverse#. У зворотному каналі для квитування застосовуються сигнали PeriphClk і HostAck, а сигнал PeriphAck використовується пристроєм для вказівки типу передаваних даних. Пристрій може запитати обслуговування за допомогою сигналу PeriphReq#. на тип
У режимі ECP паралельний порт може емулювати роботу будь-якого іншого режиму IEEE 1284, що визначається у відповідних бітах розширеного регістра управління (ECR) за адресою BASE+400h.