Port paralel

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

1leftarrow blue.svg Element principal: transmisie paralelă .

Port paralel

Port LPT. Conector DB25 mamă

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
Pinout port paralel (versiune unidirecțională)
Nume Descriere
Conectorul Centronics de sex masculin pentru conectarea la imprimantă

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 și funcțiile diferitelor semnale de pe conectorul de port paralel (e) al calculatorului și 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, Select , input, active high; 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; atunci 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 / Defecțiune , intrare, activ activ, indică 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

Momentul unei operațiuni de imprimare: transmiterea unui octet

Transmiterea datelor de la computer la imprimantă trebuie să respecte protocolul Centronics (sau Handshake Centronics ) care poate fi rezumat în următorii pași:

  1. 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.
  2. PC-ul transferă date noi pe pinii Data0 , ..., Data7 .
  3. 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.
  4. Imprimanta răspunde setând Busy = 1 pentru a comunica că achiziționează datele.
  5. 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.
  6. 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ă.
  • dacă imprimanta și-a umplut buffer-ul, va rămâne activ ocupat (= 1) până când va elibera 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 particulare, cum ar fi relee de control, circuite de control, memorii de programare etc.

Schema de construcție pentru comanda externă pentru uz general

Principiul schemei de cablare pentru controlul dispozitivelor de alimentare
  • 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 prezentat în schema de conexiuni este pur orientativ: nu sunt indicate protecțiile (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 merge 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ă

  1. ^ (EN) LPT - Definiții din Dictionary.com , pe dictionary.reference.com. Adus 09-12-2007 .
  2. ^ Creative CTWC și CTWCII (WebCam cu conexiune paralelă)
  3. ^ 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

linkuri externe