IEEE1284 (SPP, ECP, EPP)
Съдържание
Порт за принтер вчера и завчера
Паралелният порт е неразделна характеристика на персонален компютър, присъща както на първите реализации на IBM / PC, така и на съвременни решения. Липсата на паралелен порт намалява функционалната привлекателност на системата и ясно се възприема като по-лоша, дори ако свързването на съответните устройства не е на дневен ред.
Защо паралелните интерфейси са привлекателни? Очевидно не само от факта, че предаването на всеки бит се извършва едновременно по отделни сигнални линии. Силата на паралелния интерфейс е в метода на управление, когато предаваният информационен поток се управлява с помощта на управляващи сигнали. Тази архитектура направи възможно създаването на широка гама от устройства за различни цели с унифициран хардуерен интерфейс и уникален софтуер. Линейните печатащи устройства или просто принтерите са основоположниците на паралелната обработка на данни. Поради тази причина името Линеен принтер (LPT) отдавна е определяло целта на интерфейса и портът на принтера е станал синоним на съществуващото име.
Друго име за паралелния порт, както често се случва, е дадено от един от разработчиците на конектора - Centronics Data Computer Corporation. Всъщност самият конектор е разработен от Amphenol Interconnect Products, а Centronics Data Computer, след като промени целта на сигналите, го предлага на широк кръг потребители. Сега, когато има голямо разнообразие от устройства за свързване към порт и се използва голямо разнообразие от конектори, имената Centronics и LPT са здраво вкоренени в терминологията на специалистите.
Погрешно е обаче да се приеме, че само три порта са ограничени до възможностите на компютъра. Една дъска може да служи като добра илюстрация.KW-508E разширения от Kouwell Electronic, където са налични портове LPT1 до LPT6. Един от аспектите, свързани с работата на паралелните портове, е използването на прекъсвания. Не е тайна, че по-голямата част от печатащите устройства се обслужват чрез стандартни регистри на портовете на принтера - регистри за данни, състояние и команди. Това ви позволява да получавате и предавате данни без използване на прекъсвания на процесора. Но стереотипът, който свързва порта и IRQ, е твърде здраво вкоренен. Позовавайки се на ръководството за работа на персонален компютър, потребителят най-вероятно ще попадне на таблица, в която IRQ7 ще бъде свързан с LPT1, а IRQ5 ще бъде присвоен на порта LPT2. Подчертаваме, че използването на IRQ е продиктувано от характеристиките на свързаните периферни устройства. Ако по някаква причина не е желателно непрекъснато да се анализира готовността на принтер, работещ във фонов режим, може да се наложи да обслужвате паралелния порт с помощта на прекъсвания. Но, както бе споменато по-горе, в повечето случаи външното устройство не изисква заявка за прекъсване.
Режими на пренос на данни. История
За да проследим еволюцията на паралелния интерфейс, полезно е да разгледаме неговата история. В средата на 60-те Centronics Data Computer Corporation беше основният идеолог за прехвърляне на данни към принтера. Подобно на конектора, предложен от корпорацията, методът за свързване на периферни устройства отдавна се е превърнал в де факто стандарт в тази област. Съвместимостта със "стандартния" Centronics предполагаше предаване на данни в паралелен поток, използвайки осем-битова схема и само в една посока.
Трябва да се отбележи, че думата "стандарт" не случайно е взета в кавички. Факт е, че интерфейсът от онези години се състоеше и от някои други контролни сигнали, чийто брой би могълварират в зависимост от модела на принтера. По същата причина всички производители на оборудване за паралелно предаване на данни могат да си позволят да променят управляващите сигнали по свое усмотрение. Ето защо, въпреки факта, че думата Centronics стана широко разпространена, няма и не може да има стандарт със същото име. Но е невъзможно да не се отбележи положителният ефект под формата на появата на концепцията за съвместимост.
Повечето от въпросите, свързани с разбирането на работата на паралелния порт, са обхванати в документа IEEE1284 „Стандартен комуникационен метод за периферни устройства, свързани към персонален компютър, използващ двупосочен паралелен интерфейс“. Съвместимостта с Centronics означава, че всички основни линии на интерфейса са еднакви, а именно:
- осем линии за предаване на данни от системата към принтера;
- пет статусни реда за предаване на информация от принтера към системата;
- четири контролни линии за прехвърляне на контролна информация от системата към принтера.
С появата на първите персонални компютри IBM / PC през 1981 г. значението на съвместимостта с интерфейса Centronics се разшири значително и се появи концепцията за паралелен интерфейс, съвместим с PC. Свързването на принтери към компютър, въпреки че беше извършено в съответствие със "стандарта" на Centronics, претърпя значителни промени, главно по инициатива на производителите на печатащо оборудване.
Второ, броят на контролните линии от системата към принтера е допълнен с две много важни - Select In и Autofeed. Предефинирано е предназначението на трите статусни реда, през които се получава информация от принтера към системата.
И трето, времевите характеристики на сигнала за потвърждение са се променили. Активната му фаза беше изместена къмактивната фаза на сигнала Busy, като преминаването на двата сигнала в пасивно състояние се извършва едновременно. Но тъй като компютърният интерфейс остава съвместим с Centronics, съотношението на сигналите за потвърждение и заетост се игнорира и прехвърлянето на данни се извършва само в съответствие със състоянието на сигнала за потвърждение.
Режими на пренос на данни. Стандартен
Нека разгледаме как се осъществява взаимодействието между хост системата и устройството, свързано към нея чрез паралелен интерфейс. Първоначалното състояние на интерфейса е такова, че комуникацията е възможна само в една посока. Съвместимостта на устройството се определя именно от поддръжката на този режим, който се нарича Compatibility.
Режимът на съвместимост инициализира както системния I/O контролер, така и периферните устройства – принтери, скенери, плотери и др. Целта на процедурата е проста: да се определят възможностите на всеки от участниците в обмена, за да се избере приемлив режим на работа. Известни са следните комуникационни режими:
- Режим SPP (стандартен порт за принтер);
- Режим ECP (порт с разширени възможности);
- Режим EPP (усъвършенстван паралелен порт).
Любознателното око на читателя може да забележи, че вече споменатият режим на съвместимост го няма в списъка. От това не следва, че го няма в самия стандарт. Просто внедряването на стандарта е толкова хардуерно зависимо, че изборът на изброените по-горе комуникационни режими се определя от елементната база и BIOS на дънната платка. Поради тази причина потребителят ще намери само три режима или комбинация от тях в CMOS Setup на системния BIOS. Изборът на една настройка ще регулира работата на паралелния порт, докато не бъде зададен друг режим.
Колкото и да е странно, но в споменатия по-горе документ няма нито едно споменаване на режимаSPP. Всъщност производителите на BIOS за дънни платки под съкращението SPP разбират група режими, регулирани от стандарта. Този номер, в допълнение към еднопосочния режим на съвместимост, включва и двупосочния режим Nibble, който осигурява обратно предаване на данни с помощта на 4-битова схема. Нека разгледаме по-подробно всеки от тези режими.
Както бе споменато по-горе, този режим е предназначен за пренос на данни в една посока от контролера на системния паралелен порт към периферното устройство. За управление на принтера контролерът използва и четири допълнителни линии Strobe, Autofeed, Initialize, Select In, през които се предават команди за управление.
Съгласно стандарта режимът Compatibility осигурява съвместимост на всички устройства, работещи с паралелен интерфейс. Това означава, че от този режим започват всички фази на инициализация на по-високи режими. В допълнение, връщане към режима на съвместимост възниква както в случай на неуспешно инициализиране на "по-високия" режим, така и в случай на грешки при двупосочен трансфер на данни.
Фактът, че режимът на съвместимост е еднопосочен, не означава, че принтерът или друго устройство не може да комуникира с хост контролера. За целта са предназначени пет статусни реда - т. нар. обратен или обратен канал, който предоставя на системата информация за състоянието на свързаните периферни устройства.
Стойността на обратния канал е трудно да се надцени. Именно неговото присъствие ви позволява да прехвърлите работата на паралелния порт от режима на съвместимост в режима на двупосочен трансфер на данни - Nibble.
Този режим позволява да се реализира обратен (обратен) канал за пренос на данни от периферното устройство към хост контролера през хардуерно и софтуерно ниво.редове за състояние на паралелен порт. Обратният трансфер на данни се извършва от четирибитови пакети, а пакетирането на данни от два пакета в байтове се извършва от драйвера за паралелен порт, който е инициирал този режим на трансфер. Както се казва бавно, но сигурно.
Подобно на Compatibility, двупосочният режим на Nibble използва сигнални линии без пренасочване и се счита за каноничен сред разработчиците на периферни устройства. Въпреки факта, че има комуникационен протокол Byte, който осигурява по-ефективен трансфер на данни през обратния канал, режимът Nibble остава актуален и до днес и се поддържа от софтуера във всички съвременни операционни системи.
Желанието да се постигнат еднакви скорости при получаване и предаване на данни през паралелен интерфейс доведе до създаването на режима Byte. За разлика от режима Nibble, обменът на данни в двете посоки се извършва по едни и същи линии, а механизмът за превключване на посоката се основава на анализа на състоянието на сигналите за състояние.
За съжаление в този режим няма защита срещу грешен избор на посока на предаване на хардуерно ниво. Грижата за координираната работа на комуникационния канал пада върху софтуера. Поради тази причина Byte не е получил правилно разпространение и се поддържа ограничено от операционни системи. Например, Windows 9x няма вградени драйвери за паралелен порт, които поддържат байтов режим. Произходът на този комуникационен протокол, който за първи път се появи на IBM PS/2 системи, може да е изиграл роля. Във всеки случай, операционната система OS / 2, в разработването на която Microsoft участва в началния етап, има такава поддръжка.
Историческите корени определят второтоимето е PS / 2 Bidirectional Parallel Port (BPP), което, въпреки че не е споменато в стандарта, не е загубило своята актуалност досега. Във всеки случай драйверите на трети страни поддържат байтов режим и работят с тези концепции.
Друга особеност на режима беше възможността за минимизиране на контролните функции, необходими за пренос на данни. За разлика от протоколите за съвместимост, Nibble и Byte, когато драйверът трябваше да определи състоянието на периферно устройство, неговата готовност, да осигури трансфер на данни и да получи потвърждение за доставка, всичко беше значително опростено в режим EPP.
Благодарение на хардуерния контрол на потока (Flow Control), работата на драйвера се свежда до определяне на готовността на устройството и обмен на данни. Цялата работа по забавяне, светване и проверка, извършена от софтуера в по-ниските протоколи, се обработва от хардуера на хост контролера.
Този метод за пренос на данни е разработен от Hewlett-Packard и Microsoft. Благодарение на факта, че в разработката участваха водещи експерти в областта на хардуера и внедряването на операционни среди, протоколът се оказа мощен и ефективен. Ето защо той стана толкова широко разпространен и веднага беше включен в IEEE1284, като по този начин се превърна в де факто стандарт за високоскоростно предаване на данни през периферния паралелен интерфейс на компютъра.
За съжаление, такова изобилие от функции и сложност на хардуерното внедряване често води до факта, че много разработчици на периферни устройства отказват да поддържат ECP в полза на по-бавни, но по-прости протоколи от семейството на SPP. Трябва също да се отбележи, че дори в съвременните реализации на Super I / O чипове, целият набор отвъзможностите на ECP протокола.
Като се имат предвид високоскоростните протоколи, не трябва да се забравя за такъв компонент на преноса на данни като начин за обмен на данни между чипсета и I / O микросхеми. Ако протоколът е прост и с относително ниска скорост (като Compatibility, Nibble или Byte), тогава обменът се извършва по старомодния начин, с IN и OUT команди. В този случай е необходима минимална поддръжка на драйвери от операционната система, а скоростта на обмен с паралелен интерфейс зависи само от времето за достъп до шината, с която е "свързан" I/O чипът.
При свързване на Super I/O към шината ISA максималното време за достъп до порта варира от 2 до 2,5 микросекунди, използването на LPC увеличава тази стойност до 3,5 микросекунди, за PCI шината - от 0,5 до 0,7 микросекунди. Като се има предвид, че трансферът на данни не се извършва в една входно-изходна команда, скоростта на трансфер е 200-500 KBps за ISA и LPC и от 600 KBps до 2 MBps за PCI. За повечето периферни устройства - било то принтери, скенери, програмисти, устройства за защита на данни - а също и за изключителен брой необичайни устройства с паралелен интерфейс, тези скорости са повече от достатъчни.
Що се отнася до високопроизводителните периферни устройства (принтери за малък печат, пълноформатни скенери, проследяващи устройства и други машини за "смилане" на данни), ECP е незаменим тук.
При прехвърляне на потоци от данни със скорост от 1 MBps и по-висока, процентът на използване на процесора става релевантен. За намаляването му обикновено се използват три взаимно неизключващи се механизма: допълнителни FIFO буфери, метод за обмен на данни с помощта на DMA канал и използване на по-ефективна системна шина. Това усложнява поддръжката на драйвери, но значителноповишава обменния курс. При най-бързите реализации на паралелни интерфейси пиковата скорост може да достигне 25-30 MBps, което поставя този метод за пренос на данни на едно ниво със съвременните му колеги.