Port paralel
Port paralel | ||
---|---|---|
Tip | Paralel (punct la punct) | |
Informații istorice | ||
Creator | IBM , Centronics | |
Data prezentării | 1981 | |
Producător | Centronics , Dataproducts, Intel , IBM , Compaq , Nortel | |
In productie | Nu | |
Înlocuit de | 1996 ( USB ) | |
Dimensiune | ||
Lungime | 2,3 cm | |
Specificații fizice | ||
Reversibil | Nu | |
Conectabil la cald | Nu | |
Extern | Da | |
Numarul pin | 25 | |
Transfer de date | ||
Rata de date | 150 Kbps (PP) | |
Rata de date (max) | 2 MB / sec (EPP) | |
Semnal audio | Nu | |
Semnal video | Nu | |
Semnal de date | Da | |
Dispozitive (max) | 2 | |
Pinout | ||
Nume | Descriere |
Un port paralel (numit și LPT , din English Line Printer , termen derivat din L ine P rinter T erminal ), [1] în electronică și informatică , este o interfață utilizată inițial pentru a conecta un computer la o imprimantă sau la un plotter și mai târziu, în versiunea bidirecțională, utilizată și pentru alte periferice, cum ar fi scanere , unități ZIP , hard disk-uri , cititoare de CD-ROM și camere web [2] .
Portul a început ca unidirecțional (transmiterea datelor de la computer la perifericul conectat), dar a fost dezvoltat și un standard bidirecțional ( IEEE 1284).
Portul paralel este acum considerat învechit: sunt preferate alte standarde de comunicații precum USB ( serial și, prin urmare, mai mic, mai rapid și multifuncțional).
Introducere
LPT permite conectarea diferitelor periferice cu posibilitatea de a transfera 8 biți în paralel în standardul TTL . Pe computer, portul este un conector DB25 de 25 pini sau un conector „pan”.
Pe imprimante există un conector diferit numit Centronics (de la numele primului producător). Prezența a 8 fire GND permite crearea unui ecran suficient ( cabluri cu perechi răsucite ) a semnalelor.
Porturi paralele pe computerele personale IBM
Adrese de port paralele
Pe computerele IBM, adresele rezervate pentru primele trei porturi paralele (deși în majoritatea cazurilor există un singur port) sunt următoarele:
Numele portului | # Întrerupe | I / O inițială | I / O finală |
---|---|---|---|
LPT1 | IRQ 7 | 0x378 | 0x37f |
LPT2 | IRQ 5 | 0x278 | 0x27f |
LPT3 | IRQ 7 | 0x3bc | 0x3bf |
Pentru porturile care depășesc Linux lpt_driver , adresele sunt recomandate:
Numele portului | # Întrerupe | I / O inițială | I / O finală |
---|---|---|---|
LPT4 | IRQ ? | 0x27C | 0x27F |
LPT5 | IRQ ? | 0x26C | 0x26F |
LPT6 | IRQ ? | 0x268 | 0x26B |
Registre de porturi paralele
Relația dintre pinii conectorului și biții de registru pentru porturile paralele:
Adresă | MSB | LSB | |||||||
---|---|---|---|---|---|---|---|---|---|
Pic: | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
Baza ( port de date ) | Pin: | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 |
Baza + 1 ( port de stare ) | Pin: | ~ 11 | 10 | 12 | 13 | 15 | |||
Baza + 2 ( port de control ) | Pin: | ~ 17 | 16 | ~ 14 | ~ 1 |
Simbolul ~ indică faptul că nivelul logic dintre pinul de poartă și bitul de registru este inversat de hardware .
Fiecare port LPT are cel puțin trei registre diferite:
- Port de date : conține octetul care trebuie transmis sau primit (de exemplu pentru LPT1: Baza = 0x378)
- Port de stare : conține informații despre starea portului. Registrul este doar în citire (LPT1: Baza + 1 = 0x379)
- Port de control : registru de control al portului paralel. Acest registru este numai în scriere (LPT1: Baza + 2 = 0x37a)
Pinout de porturi paralele
Tabelul 1 rezumă pinout-ul și funcțiile diferitelor semnale de pe conectorii conectori de port paralel ai computerului și conectorii de port paralel ai imprimantei.
Număr pin (DB25) | Număr pin (Centronics) | Nume din semnal | Direcţie | Register-bit | Semnal inversat din hardware |
---|---|---|---|---|---|
1 | 1 | nStrobe | Afară | Control-0 | da |
2 | 2 | Data0 | În afară | Data-0 | |
3 | 3 | Data1 | În afară | Data-1 | |
4 | 4 | Date2 | În afară | Data-2 | |
5 | 5 | Data3 | În afară | Data-3 | |
6 | 6 | Data4 | În afară | Data-4 | |
7 | 7 | Data5 | În afară | Data-5 | |
8 | 8 | Data6 | În afară | Data-6 | |
9 | 9 | Data7 | În afară | Data-7 | |
10 | 10 | nAck | În | Stare-6 | |
11 | 11 | Ocupat | În | Stare-7 | da |
12 | 12 | Fără hârtie | În | Stare-5 | |
13 | 13 | Selectați | În | Stare-4 | |
14 | 14 | nAuto / Linefeed | Afară | Control-1 | da |
15 | 32 | nError / nFault | În | Stare-3 | |
16 | 31 | nInițializați | Afară | Control-2 | |
17 | 36 | nSelect-Printer / nSelect-In | Afară | Control-3 | da |
18-25 | 19-30 | Sol | Gnd | - | - |
tabelul 1
Note la tabelul 1:
- „ N ” care precede numele semnalului indică faptul că este activ scăzut. De exemplu nError : dacă imprimanta raportează o eroare, semnalul devine scăzut (tensiunea este între 0 și 0,7 volți și bitul 3 al portului de stare va fi citit ca 0 de către software ) în timp ce dacă imprimanta funcționează corect, semnalul este ridicat ( tensiunea este între 2,2 și 5 volți și bitul 3 al portului de stare va fi citit ca 1 de către software).
- Coloana „Semnal hardware inversat”: dacă de exemplu semnalul ocupat trece la nivelul logic 1, bitul 7 (cel mai semnificativ bit al portului de stare ) va fi citit ca 0 de către software.
- Magistrala de date ( Data0 , ..., Data7 ), disponibilă inițial numai în modul de ieșire, a devenit bidirecțională pentru a extinde gama de periferice conectabile (standard IEEE 1284).
- Pinul 1 este Strobe , activ jos, în cazul unei imprimante, semnalează că există date corecte pe magistrala de date [3] .
- Pinul 10, Ack , este o intrare activă scăzută; indică computerului că datele de pe magistrală au fost citite și că imprimanta este pregătită să primească alte date; permite activarea cererii de întrerupere către CPU (IRQ7 pentru LPT1 și LPT3; IRQ5 pentru LPT2).
- Pinul 11, Ocupat , de intrare, activ înalt; indică faptul că imprimanta este ocupată și nu mai poate primi alte date, semnalul crește în timpul operațiunilor de transfer și revine scăzut imediat ce imprimanta este disponibilă din nou pentru a primi mai multe date.
- Pinul 12, Paper-Out , intrare, activ activ; indică computerului că imprimanta nu mai are hârtie.
- Pinul 13, Selectați , introduceți, activ activ; indică computerului că imprimanta este conectată și gata de funcționare.
- Pinul 14, Auto / Linefeed , ieșire, activ activ; indică imprimantei modul avans de hârtie; când este activ, alimentarea este generată de 0x0d ( retur de transport ), când este mare alimentarea va fi operată de imprimantă numai după primirea caracterului 0x0a ( linie de alimentare sau linie nouă ).
- Pinul 15, Eroare / Eroare , intrare, activ scăzut, spune computerului că ceva nu este în regulă cu imprimanta.
- Pinul 16, Initialize , output, activ low, este utilizat pentru a întrerupe o imprimare în curs prin golirea bufferului imprimantei și pentru a o restabili în starea în care se afla după pornire.
- Pinul 17, Selectare-imprimantă , ieșire, activ activ, permite imprimantei să primească date.
În cele mai recente plăci de bază, conectorul LPT este prezent doar intern pe conectorul IDC 26P, corespondența pinului este pe fișier, adică 1IDC-1LPT 2IDC-14LPT 3IDC-2LPT etc.
Protocol de comunicare Centronics
Transmiterea datelor de la computer la imprimantă trebuie să respecte protocolul Centronics (sau Handshake Centronics ) care poate fi rezumat în următorii pași:
- Computerul verifică dacă imprimanta este gata verificând că în portul de stare : Eroare = 1, Selectare = 1, Hârtie-ieșită = 0, Ocupat = 0. Dacă aceste condiții nu sunt verificate, semnalează starea de eroare sau eșec; dacă biții sunt corecți, trece la pasul următor.
- PC-ul transferă date noi pe pinii Data0 , ..., Data7 .
- După un timp de cel puțin 0,5 μs, setează Strobe = 0 (impuls negativ de 1 μs) pentru a indica faptul că sunt noi date noi.
- Imprimanta răspunde setând Busy = 1 pentru a comunica că achiziționează datele.
- Odată ce operațiunea de achiziție este finalizată, setează Ack = 0 (impuls negativ de 8 µs) pentru a comunica că datele au fost achiziționate și de îndată ce sunt gata să primească date noi, returnează Busy = 0.
- Computerul repetă secvența de la pasul 1 până la finalizarea operațiunilor de transfer de date.
Trebuie remarcat faptul că:
- transferul de date durează mult mai puțin decât imprimarea efectivă.
- în cazul în care imprimanta a umplut memoria buffer se va păstra Ocupat (= 1) activă până când a eliberat spațiul pentru a primi mai multe date.
Alte utilizări ale portului paralel
Protecție hardware pentru software
Pentru a preveni așa-numita copie „piratată” a software-ului, un dispozitiv este utilizat pentru conectarea la portul paralel numit în diferite moduri: cheie hardware, „ dongle ”, „ jeton hardware ”. Software-ul interacționează cu cheia hardware și, dacă nu este conectat, împiedică utilizatorul să utilizeze programul. Dispozitivul nu interferează (sau nu ar trebui să interfereze) cu alte utilizări ale portului, deoarece „replică” conectorul feminin pentru a conecta alte periferice și, prin urmare, este transparent pentru utilizările normale ale portului. De mult a fost înlocuit cu versiuni pentru USB.
Achiziționarea de date
Chiar și atunci când portul paralel era disponibil numai sub formă unidirecțională (de ieșire), sistemele au fost dezvoltate pentru a-l utiliza pentru a obține date. Evident, magistralele de date ( Data0 , ..., Data7 ) nu au putut fi utilizate, dar pinii disponibili au fost folosiți ca intrări, iar artificiul a fost cunoscut sub numele de „ modul Nibble ”, deoarece patru biți au fost dobândiți în ordine de timp.
Interfață de control al dispozitivului
Interfața paralelă este capabilă să obțină și să producă semnale electrice de control, prin urmare poate fi utilizată pentru utilizări speciale, cum ar fi relee de control, circuite de control, memorii de programare etc.
Schema de construcție pentru comanda externă pentru uz general
- Diagrama afișată poate fi implementată pe toți pinii de date ai portului pentru a controla până la opt dispozitive.
- Tranzistorul utilizat Q1 este un BC548B, dar utilizarea unui tranzistor Darlington (de exemplu BC517 sau bdx53c) ar permite o mai mare flexibilitate în alegerea relelor posibil mai puternice.
- D1 este o diodă de tip 1N4148 suficientă dacă curentul maxim al releului nu depășește 150 m A.
- Cutia cu L1 și J1 este setul unui releu de 12 Vcc , dar, dacă este necesar, poate fi utilizat și un releu de 24 Vcc (tensiunea trebuie furnizată de o sursă de alimentare care nu este prezentată în diagramă)
- Rezistorul R2 indică doar o sarcină generică în curent continuu sau alternativ (sursa de alimentare nu este reprezentată, care ar trebui să fie în serie cu sarcina)
- Circuitul reprezentat în schema de conexiuni este pur orientativ: nu sunt indicate orice protecții (de exemplu, cu utilizarea 74ls244 / 74ls245 integrat sau a unui tampon) și respectarea reglementărilor de siguranță.
Câteva note explicative asupra schemei
Portul paralel nu inversează semnalele: când 7 este scris în registrul de date, portul își asumă valoarea binară 00000111 și, prin urmare, cele trei relee conectate la pinii Data0 , Data1 și Data2 sunt activate, în timp ce celelalte rămân oprite.
Din acest motiv, tranzistorul Q1 a fost utilizat într-o configurație fără inversare cu un emițător comun .
Când știftul portului se ridică la baza rezistorului tranzistorului R1 de la 4,7 k Ω limitează baza curentă la aproximativ 1 mA și, în același timp, nu supraîncarcă ușa. Acest curent aduce tranzistorul în saturație și, prin urmare, activează releul (care totuși trebuie să absoarbă un curent maxim de 20 mA). Când, în schimb, ajunge la zero volți, tranzistorul intră în interdicție și releul deconectează sarcina.
Dioda de la capetele releului cu catodul spre +12 Vcc servește la descărcarea curentului de autoinducție care se creează atunci când tranzistorul Q1, de la saturat (pornit), intră în interdicție (oprit), astfel încât să nu se creeze supratensiuni care l-ar putea deteriora.
Programare
Următorul program în C ++ pentru GNU / Linux este un exemplu de bază pentru utilizarea portului paralel:
#include <iostream>
#include <cstdio>
#define LPT 0x378
int main ()
{
/ * în cazul funcționării în modul 386 (GNU / Linux) comanda * /
iopl ( 3 );
/ * setarea nivelului de permisiune I / O în procesor pentru a indica faptul că operațiunile I / O sunt fizice și nu virtuale * /
int number_out = 0 ;
outb ( LPT , 0 );
cin >> număr_out ;
outb ( LPT , number_out );
getchar ();
outb ( LPT , 0 );
retur 0 ;
}
Linia 00 definește că LPT are atribuită adresa hexazecimală a portului paralel, 0x378.
În 03 definim o variabilă int ( întreg ), în acest caz number_out căruia, în linia 05, i se va atribui o valoare introdusă de la tastatură.
În 04 se numește o funcție, outb (ex_port, int_out) , care este deja definită în biblioteca standard stdio.h , în acest caz este utilizată pentru a reseta valorile „parazitare” prezente în port, dacă există.
Linia 06 trimite numărul portului pe care l-am ales, dar aveți grijă că biții disponibili sunt 8, deci cel mai mare număr posibil este 255 (de exemplu, dacă scrieți numărul zecimal 159 ca număr binar primiți 10011111, pentru 52 avem 00110100 și curând). În cele din urmă, în 08 portul este resetat la 0 după ce ați apăsat Enter așa cum a fost solicitat în linia 07.
Notă
- ^ (EN) LPT - Definiții din Dictionary.com , pe dictionary.reference.com. Adus 09-12-2007 .
- ^ Creative CTWC și CTWCII (WebCam cu conexiune paralelă)
- ^ Semnalul este activat cu o întârziere în raport cu magistrala de date pentru a permite liniilor de date să se stabilizeze.
Elemente conexe
Alte proiecte
- Wikimedia Commons conține imagini sau alte fișiere pe portul paralel
linkuri externe
- ( RO ) „Tutorial” video pe portul paralel , pe lcdinterfacing.googlepages.com . Adus la 8 august 2008 (arhivat din original la 24 februarie 2009) .
- ( RO ) Portul paralel în modul de intrare , pe fapo.com . Adus la 8 august 2008 (arhivat din original la 1 august 2008) .
- ( EN ) Achiziționarea datelor în „modul nibble” , pe fapo.com . Adus la 8 august 2008 (depus de „url original 28 august 2008).
- ( RO ) Portul paralel de pe www.beyondlogic.org , pe beyondlogic.org . Adus la 8 august 2008 (arhivat din original la 20 aprilie 2009) .
- ( RO ) Observații privind curentul disponibil pe pinii portului paralel , la luberth.com . Adus la 8 august 2008 (depus de „url original 6 august 2008).
- ( RO ) Mai multe informații despre portul paralel , la fapo.com . Adus la 8 august 2008 (arhivat din original la 2 august 2008) .
- Portul paralel SPP , pe vincenzov.net .
- Portul paralel EPP , pe vincenzov.net .