87
CAPITOLUL 7 COMANDA APLICATIILOR EXTERNE CU MICROCALCULATORUL PC Conectarea diferitelor echipamente periferice la calculatorul PC, precum şi monitorizarea, comanda şi controlul unor aplicaţii externe, industriale şi domestice de catre PC se face utilizând următoarele căi: interfaţa paralelă, interfaţa serie, denumite în mod uzual porturile paralel şi serie, interfaţa USB precum şi sloturile care permit conectarea directă pe magistralele de intrare / ieşire, ISA şi PCI. O scurtă analiză comparativă a celor 4 soluţii arată că: * portul paralel este foarte răspândit şi asigură suficiente resurse pentru o gamă largă de aplicaţii, în sensul că oferă multe linii de date, comandă şi stare şi viteză medie; mai are şi avantajul că există o mulţime de plăci cu aplicaţii pentru portul paralel precum şi software specific care pot fi folosite ca puncte de reper pentru crearea altor aplicaţii; * portul serie este, de asemenea foarte răspândit, oferă mai puţine resurse decât cel paralel (număr de linii mai mic, viteză mai mică) dar şi preţ de implementare mai mic şi siguranţă în funcţionare mare; mai are şi avantajul că există o mulţime de plăci cu aplicaţii pentru portul serie precum şi software specific care pot fi folosite ca puncte de reper pentru crearea altor aplicaţii; * portul USB este relativ nou, oferă viteză mare şi foarte mare, comparativ cu portul paralel, oferă posibilitatea de a conecta mai multe plăci cu aplicaţii pe acelaşi port al calculatorului dar protocolul USB este puţin cunoscut şi greu de implementat; * sloturile care permit conectarea directă pe magistralele de intrare / ieşire, ISA şi PCI, oferă viteză maximă, întrucât permit conectarea directă a plăcilor cu aplicaţii pe placa de bază a calculatorului dar această soluţie cere deschiderea calculatorului şi accesul direct pe placa de bază ceea ce impune o foarte bună cunoaştere a plăcii de bază, mai exact a magistralelor de intrare/ 'ieşire iar, pe de alta parte, 1

Interfete Si Periferice

Embed Size (px)

DESCRIPTION

interfete

Citation preview

Page 1: Interfete Si Periferice

CAPITOLUL 7

COMANDA APLICATIILOR EXTERNECU MICROCALCULATORUL PC

Conectarea diferitelor echipamente periferice la calculatorul PC, precum şi monitorizarea, comanda şi controlul unor aplicaţii externe, industriale şi domestice de catre PC se face utilizând următoarele căi: interfaţa paralelă, interfaţa serie, denumite în mod uzual porturile paralel şi serie, interfaţa USB precum şi sloturile care permit conectarea directă pe magistralele de intrare / ieşire, ISA şi PCI. O scurtă analiză comparativă a celor 4 soluţii arată că:

* portul paralel este foarte răspândit şi asigură suficiente resurse pentru o gamă largă de aplicaţii, în sensul că oferă multe linii de date, comandă şi stare şi viteză medie; mai are şi avantajul că există o mulţime de plăci cu aplicaţii pentru portul paralel precum şisoftware specific care pot fi folosite ca puncte de reper pentru crearea altor aplicaţii;

* portul serie este, de asemenea foarte răspândit, oferă mai puţine resurse decât cel paralel (număr de linii mai mic, viteză mai mică) dar şi preţ de implementare mai mic şi siguranţă în funcţionare mare; mai are şi avantajul că există o mulţime de plăci cu aplicaţii pentru portul serie precum şi software specific care pot fi folosite ca puncte de reper pentru crearea altor aplicaţii;

* portul USB este relativ nou, oferă viteză mare şi foarte mare, comparativ cu portul paralel, oferă posibilitatea de a conecta mai multe plăci cu aplicaţii pe acelaşi port al calculatorului dar protocolul USB este puţin cunoscut şi greu de implementat;

* sloturile care permit conectarea directă pe magistralele de intrare / ieşire, ISA şi PCI, oferă viteză maximă, întrucât permit conectarea directă a plăcilor cu aplicaţii pe placa de bază a calculatorului dar această soluţie cere deschiderea calculatorului şi accesul direct pe placa de bază ceea ce impune o foarte bună cunoaştere a plăcii de bază, mai exact a magistralelor de intrare/ 'ieşire iar, pe de alta parte, introduce un factor de risc în funcţionarea calculatorului întrucât placa aplicaţie poate afecta direct funcţionarea acestuia

Scopul acestui capitol este cunoaşterea celor 4 căi prin care calculatorul PC poate comanda, controla şi monitoriza aplicaţii externe, ca urmare ele vor fi descrise în continuare.

7.1. Portul paralel

Acest subcapitol descrie portul paralel al calculatorului PC. Vor fi descrise şi aplicaţii cu portul paralel. Accentul va fi pus pe utilizarea portului paralel sub sistemul de operare DOS. Există mai multe echipamente periferice care se conectează la portul paralel: imprimante, scannere, unităţi CD-ROM etc. precum şi o gamă largă de aplicaţii externe, de comandă, monitorizare şi control. Conectarea la portul paralel al PC-ului se face prin intermediul unei cuple standard, de tip D, mamă, cu 25 pini, situată în partea posterioară a calculatorului.

1

Page 2: Interfete Si Periferice

7.1.1.Standardizarea portului paralel

Datorită intensei utilizări a portului paralel, datorită cerinţelor mereu crescânde de performanţă pe care trebuie să le satisfacă precum şi datorită cerinţelor producătorilor de imprimante a apărut necesitatea standardizării acestui port. Operaţia a fost realizată de către standardul IEEE 1284, "Standard Signaling Method for a Bidirecţional Parallel Interface for Personal Computer" care a apărut în martie 1994. Standardul descrie comunicarea de mare viteză, bidirecţională, între un PC şi un periferic, la o viteză de 50-100 ori mai mare decât cea a portului paralel original, asigurând totodată şi compatibilitatea cu porturile paralele şi imprimantele mai vechi, de dinainte de apariţia standardului. Standardul IEEE 1284 defineşte în totalitate portul paralel al PC-ului. El prevede:

* 5 moduri de transfer pentru date,* o metodă pentru port şi periferic pentru a determina modurile de transfer

suportate precum şi pentru a negocia, stabili, un anume mod,* caracteristicile interfeţei fizice: cabluri, conectori,* caracteristicile interfeţei electrice: amplificatoare de linie, receptoare,

impedanţa liniei, terminatoare.Viteza mare oferită de porturile paralele conforme cu standardul 1284 nu era

necesară atunci când la acest port erau conectate doar imprimante matriciale, echipamente lente şi unidirecţionale. Atunci, însă, când a fost necesară conectarea unor echipamente periferice mai rapide: imprimante laser, scannere, unităţi CD-ROM, a devenit evidentă necesitatea unei viteze mai mari a portului. De asemenea, bidirecţionalitatea cerută de unele echipamente periferice: scannere, unităţi CD-ROM, precum şi de multe aplicaţii de comandă şi control a impus regândirea portului paralel. Aceste cerinţe au fost rezolvate de standardul IEEE 1284 în condiţiile păstrării compatibilităţii totale cu porturile paralele şi echipamentele periferice corespunzătoare mai vechi.

7.1.2.Caracteristicile de baza ale portului paralel

Portul paralel constă din interfaţa paralelă şi conectorul de 25 pini, tip D, mamă, situat pe panoul posterior al calculatorului. Interfaţa paralelă constă din totalitatea circuitelor şi registrelor de comandă, date şi stare care asigură legătura între un echipament periferic sau o aplicaţie externă şi magistralele ISA sau PCI ale calculatorului. Fizic, interfaţa paralelă se poate afla pe o placă de extensie, la PC-urile mai vechi, sau pe placa de bază. la PC-urile mai noi. Ea este implementată prin circuite distincte, la PC-urile mai vechi, sau inclusă într-un controler de 1/ E, la PC-urile mai noi. | La nivelul conectorului, portul paralel este alcătuit din 17 linii de semnal şi 8 linii de masă. Liniile de semnal sunt împărţite în 3 grupe:

• de date, 8 linii,• de control, 4 linii şi• de stare, 5 linii.în varianta originală a portului paralel, liniile de date au fost prevăzute pentru a

transfera date către imprimantă, ca urmare erau unidirecţionale. In variantele ulterioare, aceste linii au devenit bidirecţionale. Liniile de control au fost prevăzute pentru dialog şi control al imprimantei iar liniile de stare au fost prevăzute pentru dialog şi indicare a stării imprimantei. La variantele ulterioare, liniile de stare au fost folosite şi pentru a transmite date către port.

2

Page 3: Interfete Si Periferice

Tabelul 7.1 prezintă plasarea semnalelor la conectorul de 25 pini, de tip D, al portului paralel. Dimensiunile semnalelor corespund modului original de lucru al portului paralel, denumit uzual SPP ("Standard Parallel Port"). La celelalte moduri de lucru, definite de standardul 1284, aceleaşi semnale vor primi alte denumiri.

Pin conector

tip DSemnal SPP Direcţie Registru Descriere

Inversare hardware

1 /Strobe In/Out ControlActiv la 0. Arată că pe liniile de date,

datele sunt valideDa

2 DataO Out Data Linie de date

3 Datai Out Data Linie de date

4 Data2 Out Data Linie de date

5 Data3 Out Data Linie de date

6 Data4 Out Data Linie de date

7 Data5 Out Data Linie de date

8 Data6 Out Data Linie de date

9 Data7 Out Data Linia de date cea mai semnificativă

10 /Ack In StareActiv la 0. Arată că datele au fost

preluate de periferic

11 Busy In StareActiv la 1. Arată că imprimanta este

ocupată şi nu poate primi dateDa

12PaperOut/ PaperEnd

In Stare Activ la 1. Arată lipsa hârtiei.

13 Select In StareActiv la 1. Arată că imprimanta este

on line

14 /Auto-Line feed In/Out Control

Activ la 0. Comandă imprimanta să insereze automat un avans al hârtiei

la fiecare revenire a capului de tipărire

Da

15 /Error/ /Fault In Stare Activ la 0. Arata aparitia unei erori

16 /Initialize In/Out Control Activ la 0. Iniţializează imprimanta

17/Select

Printer/ /Select In

In/Out ControlActiv la 0. Indică imprimantei că

este selectataDa

18-25 Gnd - - Masa electrică

Tabelul 7.1. Semnalele portului paralel

"Inversare hardware" înseamnă că interfaţa portului inversează semnalul. Dacă, ce exemplu, la intrarea Busy imprimanta plasează 1, atunci portul va citi semnalul ca find 0. în ceea ce priveşte semnalele de ieşire inversate de hardware, ele trebuiesc negate prin program înainte de a fi trimise la port.

3

Page 4: Interfete Si Periferice

Standardul 1284 prevede 3 tipuri de conectori: de tip A, cel de 25 pini, cunoscut uzual sub numele de conector D, fig.7.1 ,a de tip B, un conector Centronics de 36 pini, existent la majoritatea imprimantelor cu jet sau laser, fig.7.1 .b, şi de tip C, un conector tot. Centronics de 36 pini dar de dimensiuni mai mici decâ: cel de tip B, fig.7.1 .c.

a) de tip A (D)

b)de tip B

c) de tip C

Fig. 7.1. Conectorii prevăzuţi de standardul IEEE 1284

Conectorul de tip C este cel recomandat pentru noile porturi paralele. Este mai mic ca celelalte tipuri, permite o prindere mai bună a cablului, are caracteristici electrice mai bune şi, în plus, prevede 2 pini pentru 2 semnale suplimentare: Peripheral Logic High şi Host Logic High. Totuşi, conectorul cel mai răspândit rămâne, încă, cel de tip A. Acest conector se află şi pe panoul posterior al PC-ului.

Semnalelor portului paralel le sunt asignate ranguri din registre din interfaţă. Toate modurile folosesc 3 registre, de bază, la care unele moduri adaugă şi altele Registrelor le corespund adrese de port din spaţiul de 1/ E al PC-ului. Registrele sunt văzute de procesor ca blocuri contigue aflate la adrese succesive, pornind de la o adresă de bază.BIOS-ul ("Basic Input/ Output System") sesizează existenţa într-un calculator a până la 3 porturi paralele pe care le denumeşte LPT1, LPT2 şi LPT3. Adresele de bază utilizate sunt:• 3bch pentru portul paralel aflat pe plăcile video, la PC-urile mai vechi sau, mai nou, pe plăcile de bază, • 378h pentru LPT1, în mod uzual şi • 278h pentru LPT2, în mod uzual.

La pornirea calculatorului, BIOS-ul este cel care alocă porturilor paralele denumirile LPT. La început verifică existenţa unui port paralel la adresa 3bch şi dacă il găseşte îi alocă denumirea LPT1. In continuare verifică adresa 378h şi dacă găseşte şiacolo un port paralel atunci îi alocă denumirea LPT2. Dacă la adresa 3bch nu a găsit

4

13

14

1

25

Page 5: Interfete Si Periferice

un port paralel, atunci celui de la adresa 378h îi alocă denumirea LPTl. Similar, este verificată şi adresa 278h. Ca urmare, la adresa 3bch se poate afla doar portul paralel LPTl, la adresa 378h se pot afla LPT1 sau LPT2,iar la278h se pot afla LPT1,LPT2 sau LPT3. Există însă şi porturi paralele mai vechi la care pot fi setate denumirile LPTl, LPT2 sau LPT3 prin conexiuni.

Intrucât denumirile şi adresele alocate porturilor paralele pot diferi de la un calculator la altul, este necesară stabilirea unor puncte de reper pentru utilizatori, adică pentru aceia care doresc să folosească portul paralel. Acestea sunt oferite de BIOS care încarcă, în RAM, adresele de bază alocate porturilor paralele la adrese fixe, tabelul 7.2.

Adresă fixă Semnificaţie 0000:0408 Adresă de bază pentru LPTl0000:040a Adresă de bază pentru LPT20000:040c Adresă de bază pentru LPT3

Tabelul 7.2. Adresele de bază din RAM care conţin adresele de bază ale porturilor paralele

In continuare vor fi descrise registrele de bază folosite de modurile de lucru. La adresa de bază, notată pe scurt cu Bază se află registrul de date, numit şi Port de Date, figura 7.2. Este un port unidirecţional în modurile de lucru "Compatibility", Nibble" şi bidirecţional în modurile de lucru "Byte", "EPP" şi "ECP".

7 0Data 7 Data6 Data 5 Data 4 Data 3 Data 2 Data 1 Data 0

Fig.7.2. Portul de Date

La adresa Bază + 1 se află registrul de stare, numit şi Port de Stare, figura 7.3. Cinci ranguri corespund la 5 linii de intrare (pinii 10 - 15 ai conectorului), un rang corespunde unei întreruperi şi 2 ranguri sunt rezervate. Rangurile notate cu * corespund unor semnale inversate hardware. Dacă în rangul 2 se citeşte 1, înseamnă că nu s-a generat întrerupere. Dacă în rangul 7 se citeşte 1, înseamnă că la pinul de la conector aloarea semnalului Busy este 0. Portul de Stare poate fi doar citit.

7 0Busy* Ack PaperOut Selectln Error IRQ* Rez. Rez.

Fig.7.3. Portul de Stare

La adresa Bază +2 se află registrul de control, numit şi Port de Control, figura 7.4. Rangurile 7 şi 6 sunt nefolosite. Rangurile 5 şi 4 sunt ranguri de control intern. Rangul 4 va valida generarea unei întreruperi iar rangul 5 va valida modul bidirecţional care permite transferul în ambele sensuri a 8 biţi de date. Porturile paralele vechi nu suportă acest mod. Pentru ca un asemenea port să suporte totuşi acest mod, va fi necesară Intervenţia la nivelul hardware-ului portului.

Rangurile 3-0 corespund la 4 semnale de control: Select Printer, Initialize, Auto Linefeed şi /Strobe. Cele notate cu * sunt inversate hardware. Există şi posibilitatea ca aceste linii, normal de ieşire să fie folosite ca intrări. Aceasta rezultă din schema rangurilor corespondente din Portul de Control, fig.7.5. Notaţia OC înseamnă "Open Colector".

5

Page 6: Interfete Si Periferice

7 0

Fig.7.4. Portul de Control

După cum se observă din schemă, ieşirile acestor ranguri sunt cu colector în gol (există, însă, şi porturi la care aceste ieşiri sunt TTL normale). Rezistenţa de tragere este de 4,7 kΩ şi poate fi pe placa portului, la periferic sau, mai rar, niciunde. în acest din urmă caz va fi necesară plasarea în exteriorul portului a rezistenţelor la +5 V, valoarea recomandată fiind de 4,7 kΩ. Aceste rezistente nu vor afecta corecta funcţionare a portului

Linia Port paralel normal Port paralel IEEE 1284, nivel 2Date, ieşire, la 1 logic (>2,4V) 2,6 mA generat 14 mA generatDate, ieşire, la 1 logic (<0,4V) 24 mA absorbit 14 mA absorbitControl, ieşjre, la 0 logic (>2,4V) 0,5 mA .generat -Control, ieşire, la 0 logic (<0,4V) 7 mA absorbit 14 mA absorbit

Tabelul 7.3. Curentul absorbit / generat la liniile portului paralel

chiar dacă există alte rezistenţe de tragere sau chiar dacă portul are ieşire normală. In aceste situaţii ele vor funcţiona ca încărcări suplimentare de aproximativ 1 mA. Pentru a utiliza aceste linii ca intrări, va fi necesară încărcarea în port a combinaţiei xxxxOlOO ceea ce va forţa 1 la ieşirile porţilor cu colector în gol.

Nivelele de tensiune ale semnalelor de la portul paralel sunt TTL. Curentul absorbit / generat este dat în tabelul 7.3.

7.1.3. Cabluri şi caracteristici electrice

Standardul 1284 prevede utilizarea a 3 tipuri de conectori. Tabelul 7.4 prezintă poziţionarea semnalelor la pinii conectorilor. Pornind de la acest tabel se pot construi diferite cabluri între diferiţii conectori aflaţi la port, respectiv la periferic. Tabelul 7.5 prezintă trei tipuri de cabluri. Fiecare linie de semnal este însoţită de o masă proprie. Fiecare a 2-a linie din tabelul 7.5 corespunde unei conexiuni de masă.

Din punct de vedere electric, standardul IEEE 1284 delimitează 2 nivele de echipamente şi cabluri:• echipamente şi cabluri de nivel 1 care nu dispun de viteză mare de transfer definită de standard ci doar de facilitatea de bidirecţionalitate;• echipamente şi cabluri de nivel 2 care necesită şi viteză mare de transfer.

6

Nefol. Nefol. /Strobe*

Auto Line feed*

Select Printer

Enable Via Ack Line

Enable Bi-Directional Port

Initialize Printer

Page 7: Interfete Si Periferice

Fig.7.5. Schema rangurilor de comandă din Portul de Control

Tipuri de semnal

Pin pentru semnal Pin pentru masa coresp.

A(D)Cectronics B

Cectronics C A(D) Cectronics B

Cectronics C

Strobe 1 1 15 18 19 33Data 0 2 2 6 19 20 24Data 1 3 3 7 19 21 25Data 2 4 4 8 20 22 26Data 3 5 5 9 20 23 27Data 4 6 6 10 21 24 28Data 5 7 7 11 21 25 29Data 6 8 8 12 22 26 30Data 7 9 9 13 22 27 31/Ack 10 10 3 24 28 21Busy 11 11 1 23 29 19PaperOut/PaperEnd 12 12 5 24 28 23Select 13 13 2 24 28 20/AutoLinefeed 14 14 17 25 30 35/Error/ / Fault 15 32 4 23 29 22/Initialize 16 31 14 25 30 32/Select Printer/ Select In 17 36 16 25 30 34Host Logic High     18      Peripheral Logic High     36      

Tabelul 7.4. Poziţionarea pinilor la conectorii acceptaţi de standardul IEEE 1284

Cablu A - B Cablu A - C Cablu B - C

7

+5V

Tampon iesire

Tampon intrareOC

/ Strobe(pin 1)

+5VTampon iesire

Tampon intrareOC

/Autolinefeed (pin 14)

+5V

+5V

Tampon iesire

Tampon intrareOC

/ Select printer (pin 17)

Tampon iesire

Tampon intrareOC

/ Initialize (pin 16)

Page 8: Interfete Si Periferice

Conector A Conector B Conector A Conector C Conector B Conector C1 1 1 5 1 518 19 18 33 19 332 2 2 6 2 619 20 19 24 20 243 3 3 7 3 719 21 19 25 21 254 4 4 8 4 820 22 20 26 22 265 5 5 9 5 920 23 20 27 23 276 6 6 10 6 1021 24 21 28 24 287 7 7 11 7 1121 25 21 29 25 298 8 8 12 8 1222 26 22 30 26 309 9 9 13 9 1322 27 22 31 27 3110 10 10 3 10 324 28 24 21 28 2111 11 11 1 11 123 29 23 19 29 1912 12 12 5 12 524 28 24 23 28 2313 13 13 2 13 224 28 24 20 28 2014 14 14 17 14 1725 30 25 35 30 3515 32 15 4 32 423 29 23 22 29 2216 31 16 14 31 1425 30 25 32 30 3217 36 17 16 36 1616 30 25 34 30 34

Tabelul 7.5. Trei tipuri de cabluri paralele

Echipamentele şi cablurile de nivel 2 nu pot utiliza decât conectori de tip C. echipamentele care se conectează trebuie să aibă amplificatoare şi receptoare de linie conforme cu cerinţele din standard iar impedanţa cablului trebuie să respecte, de asemenea, cerinţele standardului. în aceste condiţii, lungimea maximă permisă a cablului este de 10m. Pentru echipamentele şi cablurile de nivel 1 nu există cerinţele tehnice (amplificatoare de linie, receptoare de linie, impedanţa a cablului) existente pantru nivelul 2. Se recomandă, doar ca fiecare fir de semnal să fie însoţit de un fir de

Pot fi utilizaţi conectorii de tip A, B sau C. In aceste condiţii, lungimea maximă permisa a cablului este de 3m.

4. Moduri de lucru

8

Page 9: Interfete Si Periferice

Standardul IEEE 1284 defineşte cinci moduri de lucru pentru interfaţa paralelă, •ând transferul datelor în sens direct (PC către periferic), în sens invers (periferic PC) sau în ambele sensuri. Modurile definite sunt:

- modul "Compatibility": este denumirea dată de standard pentru modul original, cunoscut sub numele Centronics, Standard sau SPP;

- modul "Nibble": asigură transferul datelor în sens invers, prin intermediul liniilor de re, sub forma a 2 grupe de câte 4 biţi;

- modul "Byte": asigură transferul invers a 8 biţi simultan, prin intermediul liniilor de date; mai este cunoscut şi sub denumirea de mod octet sau bidirecţional

- EPP (Enhanced Parallel Port): asigură transfer bidirecţional de mare viteză; a fost prevăzut iniţial pentru periferice ca: unităţi de disc, unităţi CD-ROM, adaptoare de etc;

- ECP (Extended Capability Port): asigură transfer bidirecţional de mare viteză; a fost prevăzut iniţial pentru imprimante cu jet şi laser.

Toate porturile paralele existente pot transfera date în ambele sensuri, lucrând în modurile "Compatibility" sau "Nibble". Modul "Byte" poate fi utilizat de mai puţine porturi, In toate aceste moduri, transferul se face prin program. Pentru fiecare octet de transferat, programul va trebui să poziţioneze datele, să verifice starea imprimantei şi să comande linia Scope. Ca urmare, rata de transfer a datelor va fi mică, fiind limitată la max.150 ko/s.

Ultimele două moduri sunt mult mai performante. Ele au fost implementate în contolerele de I/E aflate pe placa de bază a PC-ului. Dialogul nu se mai realizează prin Ram, ci prin hardware. Programul va transfera o dată printr-o singură intrucţiune Controlerul de I/E este cel care va asigura, în continuare, întregul transfer.

Modul " Compatibility"

Este modul original de lucru al portului paralel, cunoscut şi sub numele Centronics, Standard sau SPP ("Standard Paralel Port"). Este un mod unidirecţional şi asigură transferul datelor de la PC la periferic. A fost prevăzut în standard pentru a păstra compatibilitatea cu numărul mare de porturi paralele vechi existente. Transferul unei date se face în conformitate cu diagrama din figura 7.6.

Fig.7.6. Diagrama de transfer a unei date în modul "Compatibility"

Operaţiile ce trebuiesc realizate de program sunt:

9

/Ack

Busy

Date

/Strobe

min 500ns

5 ms

min 500nsmin 500ns

Date valide

Page 10: Interfete Si Periferice

• scrie data la Portul de Date; • citeşte Portul de Stare, rangul Busy, pentru a vedea dacă imprimanta este liberă; • dacă imprimanta este liberă, atunci scrie la Portul de Control şi activează linia /Strobe;• scrie la Portul de Control şi dezactivează linia /Strobe.

Linia Busy este activă atunci când perifericul preia o dată şi o depune în tamponu". propriu sau atunci când perifericul nu poate primi o dată (de exemplu imprimanta tipăreşte sau este decuplată de la linie).

Semnalul /Ack are rolul să comunice încheierea transferului. Pentru a transfera o dată vor fi necesare 4 instrucţiuni de I/E şi cel puţin tot atâtea

alte instrucţiuni. Efectul va fi o limitare a ratei de transfer la maximum 100 ko/s, rata uzuala fiind de doar 50ko/s,ceea ce este suficient pentru periferice mai vechi,de exemplu imprimante matriceale,dar insuficient pentru imprimante cu laser,scannere,etc.

Pentru a asigura o creştere a ratei de transfer, în acest mod, a fost implementată în controlere de I/E o variantă care defineşte un tampon FIFO în care programul scrie datele. Acestea sunt apoi preluate de controler şi transferate către imprimantă utilizând un dialog realizat prin hardware conform cu figura 7.6. Modul este cunoscut şi sub numele "Fast Centronics" sau "Parallel Port FIFO Mode" şi asigură o creştere a ratei de transfer de până la 500 ko/s. Nu este un mod definit de standardul IEEE 1284 ci acceptat doar ca o variantă a unui mod definit.

Deşi, aşa cum s-a arătat, modul "Compatibility" este doar unidirecţional, există şi posibilitatea de a citi date în acest mod. Pentru aceasta se folosesc 4 linii de stare şi 4 linii de control la care se leagă liniile de date ce trebuiesc citite. Trebuie avut grijă ca în prealabil, înainte de a se realiza conexiunile, să se scrie la Portul de Control configuraţia xxxxOlOO pentru a plasa ieşirile portului, comandate de porţi cu colector în gol, în 1 logic pentru a putea fi, apoi, comandate din exterior.

Modul "Nibble"

Este modul cel mai răspândit pentru a primi date de la periferic şi se bazează pe

Pin conector tip D

Nume semnal SPP

Nume semnal "Nibble"

Direcţie Descriere

1 /Strobe /Strobe Out Neutilizat la transferul invers

2-9 DataO-7 - - Neutilizate la transferul invers

10 /Ack PtrClk InCând este 0 indică o jumătate de octet validă şi este pus la 1 ca răspuns la trecerea la 1 a lui HostBusy

11 Busy PtrBusy In Data3, apoi Data712 Paper End AckDataReq In Data2, apoi Data613 Select Xflag In Data1, apoi Data5

14/Auto

LinefeedHostBusy Out

Semnal de dialog. Este pus la 0 arătând că portul poate primi o jumătate de octet. Este pus la 1 arătând că jumătatea de octet a fost primită

15 /Error /Data Avail In DataO, apoi Data416 /Initialize /Init Out Neutilizat la transferul invers

17 /Select In 1284Active OutEste la 1 atunci când portul este în un mod definit de IEEE 1284

18-25 Gnd Gnd - Masa electrica

Tabelul 7.6.Semnalele modului "Nibble"

10

Page 11: Interfete Si Periferice

faptul că la toate porturile paralele standard există 5 linii prin care se poate citi starea imprimantei. Aceste linii pot fi folosite pentru a transfera un octet în 2 grupe de câte 4 biţi. Pe linia /Ack nu se transferă dată pentru că este folosită la dialog.

Semnalele portului paralel primesc alte denumiri şi semnificaţii. Acestea sunt prezentate în tabelul 7.6, facându-se şi analogia cu denumirile din modul standard.

Transferul unei date se face în conformitate cu diagrama din figura 7.7

Fig.7.7. Diagrama pentru transferul unui octet în modul "Nibble"

Operaţiile ce trebuiesc realizate de program sunt:* portul cere o jumătate de octet activând la 0 HostBusy;* perifericul răspunde plasând prima jumătate de octet pe linii şi activând la 0

PtrClk;* portul dezactivează pe HostBusy indicând că a preluat prima jumătate de octet

şi nu poate încă prelua o altă dată;* perifericul dezactivează pe PtrClk ca răspuns la dezactivarea lui HostBusy;* toate operaţiile se repetă pentru a doua jumătate de octet;Modul "Nibble" are marele avantaj de a oferi transfer de la periferic la port în

cazul porturilor mai vechi, neafectând liniile de control. întrucât transferul este controlat tot prin program, care este şi mai lung decât cel corespunzător modului standard, rata de transfer este limitată la max.50 ko/ sec, ceea ce nu este suficient pentru periferice performante: scannere, imprimante laser, etc.

Modul „Byte”

Este primul mod care permite transferul datelor în ambele sensuri pe liniile de date. în plus, spre deosebire de modul anterior în care transferul spre port al unei date de 8 biţi se făcea în 2 faze, acum transferul spre port al unei date de 8 biţi se face într-o singură fază. Modul mai este cunoscut şi sub denumirea de mod bidirecţional sau octet sau PS/2. Acest mod se bazează pe o modificare a schemei portului prin care registrele care transferă datele la pinii de date ai conectorului pot fi dezactivate, trecute în starea de înaltă impedanţă, existând posibilitatea de a citi liniile respective.

Schema Portului de Date bidirecţional original este prezentată în figura 7.8.Modificarea adusă constă în rolul pe care-1 primeşte rangul 5 din Portul de

Control. La porturile unidirecţionale, registrul 74LS374 avea intrarea I/O legată la masă,

11

Bitii 0-3

HostBusy

PtrBusyAckDataReq

Xflag/DataAvail

PtrClk

Bitii 4-7

Page 12: Interfete Si Periferice

deci datele erau doar ieşiri. La citirea acestui registru se primea data ultimă care a fost trimisă. La portul bidirecţional, rangul 5 din Portul de Control comandă intrarea l/O a registrului. Dacă acest rang este programat la 1 atunci registrul trece în starea de înaltă impedanţă şi liniile de date pot fi comandate din exterior. Rămâne şi posibilitatea de a scrie la Portul de Date, data va fs memorată în registru dar nu va apare pe liniile de date. Ea va apare pe aceste linii atunci când rangul 5 din Portul de Control esteprogramat la 0.

Fig.7.8. Schema Portului de Date bidirecţional original

La porturile paralele mai noi această schemă este înglobată într-un controler de I/E. La porturile mai vechi la care implementarea s-a făcut cu circuitele din figură, se poate interveni pentru modificarea schemei dacă portul este doar unidirecţional. Modificarea constă în deconectarea intrării /OC a registrului 74LS374 şi conectarea sa la rangul 5 al Portului de Control şi în conectarea circuitului 74LS244 ca în figură.

Din păcate, există diferenţe între porturile paralele ale diferiţilor producători. La unele porturi paralele rangul 5 din Portul de Control este folosit doar pentru dezactivarea modului bidirecţional iar pentru activarea sa, se foloseşte rangul 6 din Portul de Control. Se recomandă măsurarea portului paralel dacă se doreşte utilizarea sa în modul bidirecţional.

Tabelul 7.7 prezintă denumirile şi semnificaţiile semnalelor utilizate facându-se şi analogia cu denumirile semnalelor în modul standard, iar figura 7.9 prezintă diagrama pentru transferul unei date în modul "Byte". Operaţiile executate sunt: • portul arată că poate prelua o dată activând la 0 pe HostBusy; • perifericul răspunde plasând data pe linii şi apoi activează la 0 pe PtrClk; • portul activează la 1 pe HostBusy indicând că a primit data şi nu este inca gata pentru un alt octet;• perifericul activează la 1 pe PtrClk răspunzând portului;

12

ISA D0-7

Bit 5 din Port de Control

IOR

Di Qi

/OCCLK

74LS374

1Yi 1Ai2Yi 2Ai

1G2G

Data 0-7

IOW

Page 13: Interfete Si Periferice

• portul generează impulsul HostClk ca răspuns pentru periferic.

Pin conector tipD

Nume semnal SPP

Nume semnal "Byte"

Direcţie Descriere

1 /Strobe HostClk Out Este un semnal de achitare, activat la 0 la sfârşitul transferului fiecărui octet

2-9 Data0-7 Data0-7 In/Out Date, pot fi transferate bidirecţional

10 /Ack PtrClk InEste activat la 0 indicând date valide pe linii şi este activat la 1 ca răspuns la activarea la 1 a lui HostBusy

11 Busy PtrBusy InIndică starea de ocupat a perifericului

12 PaperEnd AckDataReq In Aceeaşi valoare cu /DataAvail13 Select Xflag In Neutilizat în modul "Byte"

14 /AutoLinefeed HostBusy Out

Este activat la 0 arătând că portul este gata pentru transferul unui octet.Este activat la 1 arătând că data a fost primită

15 /Error /DataAvail InEste activat la 0 de către periferic indicând că data trimisă către port este disponibilă

16 /Initialize /Init Out Nefolosit. Este la 1

17 /Selectln 1284Active Out Este la 1 atunci când portul este în un mod definit de IEEE 1284

18-25 Gnd Gnd - Masa electrică

Tabelul 7.7. Semnalele modului "Byte"

Fig.7.9. Diagrama de transfer a unui octet în modul "Byte'

Pentru a verifica dacă un port paralel existent suportă modul bidirecţional se poate folosi programul Debug din DOS sau se concepe un program propriu. Se scrie 1 în rangul 5 al Portului de Control încercând în acest fel plasarea portului în modul "Byte", sens invers. Apoi se scrie o valoare la Portul de Date şi se citeşte Portul de Date. Dacă portul suportă mod "Byte" atunci ieşirile registrului vor fi în a 3-a stare şi valoarea citită nu coincide cu cea scrisă. Dacă valoarea citită coincide cu cea scris 1 atunci portul este doar unidirecţional.

13

Host Busy

Data 0-7

PtrClk

Data valida

HostClk

Page 14: Interfete Si Periferice

Modul EPP ("Enhanced Parallel Port")

Modul EPP a fost dezvoltat şi promovat de un grup de firme: Intel, Xircon, Zenith. Data Systems, interesate în creşterea vitezei portului paralel şi în asigurarea transferului bidirecţional în scopul conectării unor echipamente mai rapide decât cele existente în. momentul respectiv: scannere, imprimante laser rapide, unităţi CD-ROM etc.

Există două specificaţii pentru portul EPP: EPP1.7 este o variantă a modului EPP implementată la nivelul microprocesorului 386SL, în setul de cipuri al acestuia, înainte de apariţia standardului IEEE 1284 şi EPP1.9, varianta modului EPP care a fost definiţi de IEEE 1284. Există o diferenţă între ele care va fi descrisă ulterior.

Tabelul 7.8 prezintă denumirile şi semnificaţiile semnalelor acestui mod facându-s. şi analogia cu denumirile semnalelor din modul standard.

Modul EPP permite o rată de transfer de 0,5 - 2 Mo/ sec. Creşterea ratei de transfer, raportat la celelalte moduri, s-a putut obţine datorită faptului că dialogul pentru transferul unei date nu mai este realizat prin program ci de către hardware-ul portului, mai exact de controlerul de I/E care comandă portul paralel.

Modul EPP defineşte 4 tipuri de transfer:• citire date şi scriere date: în aceste cicluri se transferă date între port şi periferic:• citire adrese şi scriere adrese: în aceste cicluri se transferă adrese şi cuvinte comandă şi control.

Pin conector tip D

Nume sernnal SPP

Nume semnal EPP

Direcţie Descriere

1 /Strobe /Write Out Este activ la 0, indicând o scriere. Este 1 la citire.

2-9 Data 0-7 AD O-7 In/OutLinii bidirecţionale de adrese sau date

10 /Ack /Intr In Intrerupere de la periferic

11 Busy /Wait In

Este un semnal de dialog care atunci când este 0 arată că se poate începe un ciclu, adică semnalul de strobare a datelor sau adreselor poate fi activat iar atunci când este 1 arată că se poate încheia un ciclu, adică semnalul de strobare poate fi dezactivat

12 PaperEnd Liber In La dispoziţia utilizatorului 13 Select Liber In La dispoziţia utilizatorului

14 /AutoLinefeed /DataStb OutSemnal de strobare a datelor. Când este la 0 arată că se desfăşoară un ciclu de CitireDate sau ScriereDate

15 /Error Liber In La dispoziţia utilizatorului16 /Initialize /Reset Out Iniţializare a perifericului (0)

17 /Selectln /AdrStb OutSemnal de strobare a adreselor. Când este la 0 arată că se desfăşoară un ciclu de CitireAdrese sau ScriereAdrese

18-25 Gnd Gnd - Masa electrică

Tabelul 7.8. Semnalele modului EPP

Toate transferurile se desfăşoară în conformitate cu anumite diagrame dar, spre deosebire de modurile anterioare, diagramele nu mai sunt implementate prin program ci de către hardware-ul (controlerul) portului. Programul nu va trebui decât să iniţieze transferul ceea ce se va realiza prin intermediul unei singure instrucţiuni de intrare/ ieşire pentru fiecare dată de transferat.

Transferul de tip scriere date are loc în conformitate cu diagrama din fig. 7.10.

14

Page 15: Interfete Si Periferice

Operaţiile sunt următoarele:• programul scrie o dată la Portul de Date EPP prin intermediul unei instrucţiuni de ieşire, mai exact prin intermediul unui ciclu de I/E de ieşire;• portul plasează datele pe linii şi activează semnalul /Write;• semnalul /Wait este la 0, ca urmare semnalul /DataStr va fi activat;• portul aşteaptă răspunsul de la periferic, adică semnalul /Wait la 1;• semnalul /DataStr este dezactivat şi ciclul se încheie.

Semnalul /IOW este semnal de comandă ISA. Din diagrama 7.9 se observă că întregul transfer are loc în timpul unui ciclu ISA. Un nou transfer poate începe numai după încheierea ciclului ISA anterior şi atunci când perifericul este pregătit, adică /Wait este la 0.

Rata de transfer este în domeniul 0.5 - 2 Mo/ sec şi este determinată de vitezele celor 1 porturi. Motivul este acela că pentru transferul unei date are loc un dialog, numit dialog cu interblocare, în care fiecărei tranziţii a unui semnal de control i se răspunde prin tranziţia unui semnal de control

Fig.7.10. Diagrama ciclului Scriere date în modul EPP

al celuilalt partener până când se ajunge în stan iniţială. La diagrama din fig. 7.10, la activarea lui /DataStr i se răspunde cu activan lui /Wait ceea ce va provoca, la rândul său, dezactivarea lui /Wait. Fig. 7.11 prezintă ciclul de citire date.

Fig.7.11. Diagrama ciclului citire date în modul EPP

15

/IOW

D0-7

/Write

/DataStr

/Wait

Date valide

/IOR

/Write

/DataStr

D0-7

/Wait

Data In

Page 16: Interfete Si Periferice

Ca şi in cazul anterior, semnalul /IOR este un semnal ISA şi apare în diagrama pentru a arăta că transferul se desfăşoară într-un ciclu ISA. Operaţiile sunt:• programul citeşte data de la Portul de Date EPP, prin intermediul unei instrucţii de intrare (/IOR activ),• portul activează /DataStr cerându-i perifericului o dată; /DataStr se activează doar dacă perifericul este liber, adică /Wait este la 0,• perifericul plasează datele pe linii şi activează /Wait arătând că datele sunt valide• portul preia datele cu frontul urcător al lui /DataStr şi îl dezactivează pe acesta,• perifericul dezactivează /Wait şi ia datele de pe linii. După încheierea ciclului ISA şi după dezactivarea lui /Wait, poate începe un nou ciclu.

După încheierea ciclului ISA şi după dezactivarea lui /Wait, poate începe un nou ciclu.

Figura 7.12 prezintă un ciclu de scriere adrese. Operaţiile executate sunt aceleaşi ca la ciclul de scriere de date cu excepţia faptului că programul scrie la Portul de adresă PP şi nu la Portul de Date EPP iar semnalul de strobare este /AdrStr şi nu /DataStr.

7.12. Diagrama ciclului scriere adrese în modul EPP

Figura 7.13 prezintă un ciclu de citire adrese. Operaţiile executate sunt aceleaşi ca şi la ciclul de citire date cu excepţia faptului că programul citeşte de la Portul de Adresă EPP şi nu de la cel de date EPP iar semnalul de strobare utilizat este /AdrStr şi un /DataStr.

Descrierile prezentate corespund modului EPP 1.9. Varianta EPP 1.7, apărută înainte de standardul IEEE 1284, diferă de EPP 1.9 prin aceea că semnalele /DataStr şi /AdrStr se vor activa indiferent de starea liniei /Wait. Aceasta înseamnă că perifericul nu poate împiedica începerea unui ciclu. Un periferic în modul EPP 1.9 va lucra corespunzător cu un port în modul EPP 1.7 dar un periferic în modul EPP 1.7 nu vaputea lucra cu un port în modul EPP1.9.

Marele avantaj al modului EPP este că transferul unei date are loc în timpul unui singur ciclu al magistralei de intrare / ieşire a calculatorului. Transferul realizându~se asincron, prin dialog cu interblocare, se obţine viteză maximă, limitată doar de vitezele celor 2 parteneri. Pentru transferul unei date este necesară o singură instrucţiune de OUT sau IN iar pentru transferul unui bloc de date se poate folosi o singură instrucţiune de I/E precedată de prefixul REP.

16

/IOR

/Write

/AdrStr

A0-7

/Wait

Adrese,comenzi

/IOW

/Write

A0-7

/AdrStr

/Wait

Adrese,comenzi

Page 17: Interfete Si Periferice

Fig.7.13. Diagrama ciclului de citire adrese în modul EPP

Un alt avantaj al modului EPP este acela că nu trebuiesc realizate operaţii suplimentare pentru stabilirea sensului de transfer al datelor. Există un semnal, care atunci când este 1 arată un ciclu de citire iar atunci când este 0 arată un ciclu de scriere. Semnalul este comandat de controlerul portului şi nu este necesar vreun dialog cu perifericul pentru stabilirea sensului de transfer. Acest avantaj este important atunci când la transferul unui bloc trebuiesc realizate dese schimbări de sens.

Tabelul 7.9 prezintă registrele (porturile) utilizate în modul EPP. Dacă programul foloseşte porturile aflate la adresele Bază, Bază + 1, Bază + 2 comportarea portului paralel în mod EPP va fi identică cu cea din modul SPP şi la aceleaşi performanţe. Dacă, însă, programul execută o instrucţiune de OUT/ IN la/ de la porturile aflate la adresele Bază + 4, Bază + 5 atunci portul paralel va lucra în conformitate cu diagramele prezentate în fig. 7.10 - 7.13, la performanţele maxime asigurate de modul EPP.

Nume port Adresă Utilizare SPP DirecţiePort de Date Bază Da Ieşire Port de Stare Bază+1 Da Intrare Port de Control Bază+2 Da Intrare/ IeşirePort de adrese EPP Bază+3 Nu Intrare/ IeşirePort de Date EPP Bază+4 Nu Intrare/ IeşireNedefinit( 16/32 biţi) Bază+5 Nu Intrare/ IeşireNedefinit (32 biţi) Bază+6 Nu Intrare/ IeşireNedefinit (32 biţi) Bază+7 Nu Intrare/ Ieşire

Tabelul 7.9. Registrele (porturile) modului EPP

Porturile aflate la adresele Bază + 5, Bază + 6, Bază + 7 sunt la dispoziţia utilizatorului. Ele pot fi folosite ca porturi de configurare sau pentru transferuri pe 16 sau 32 biţi. Pot rămâne şi neutilizate. Dacă de exemplu, portul paralel are doar 8 linii de date pot fi implementate transferuri cu date pe 32 biţi în modul EPP. în acest scop, controlerul de I/E va prelua data de 32 biţi în 4 cicluri în fiecare transferând câte 8 biţi. Aceştia vor fi depuşi, succesiv, în porturile de date aflate Ia adresele Bază + 4 - Bază + 7. Aceste 4 cicluri sunt transparente pentru program, ele sunt implementate la nivelul controlerului, şi transferul unei date pe 32 biţi, în această formă, durează mai puţin decât 4 cicluri de transfer pe 8 biţi de sine stătătoare.

Deşi s-a păstrat compatibilitatea cu modurile anterioare a apărut, totuşi, o modificare la bitul 0 al Portului de Stare. Acest rang era rezervat în modul standard iar în modul EPP are semnificaţie de Time Out. Este activat atunci când linia /Wait nu este

17

Page 18: Interfete Si Periferice

activată la 0 după aproximativ 10 us, depinzând şi de port, după activarea liniilor /IOR sau /IOW. Se reaminteşte că liniile /IOR şi /IOW sunt liniile pentru semnalele de comandă pentru transferurile cu periferia ale magistralei ISA. Justificarea prezenţei acestui rang derivă din faptul că modul EPP este dependent de caracteristicile de timp ale ciclurilor de pe magistrala ISA. De exemplu, într-un ciclu de citire, portul trebuie să asigure dialogul pentru transfer şi să preia data în acelaşi ciclu ISA. Pentru a asigura timpul necesar, portul va folosi linia IOCHRDY("I/O Channel Ready") a magistralei ISA pentru a o introduce în stări de aşteptare până la încheierea transferului (răspunsul perifericului). Dacă, însă, un asemenea ciclu este pornit tară a fi conectat un periferic, sau dacă a apărut o defecţiune la nivelul perifericului sau al cablului, atunci portul nu va primi răspunsul /Wait şi va introduce stări de aşteptare la nesfârşit, blocând astfel magistrala ISA, adică întregul calculator. Ieşirea din această situaţie este asigurată de un mecanism de tip watchdog care va asigura deblocarea ciclului şi va anunţa starea de Time Out după aproximativ 10 us de la activarea unuia din semnalele de comandă pentru periferie ale magistralei ISA.

Inainte de a lansa în execuţie modul EPP, portul paralel trebuie configurat. In stare inactivă, un port EPP trebuie să aibă semnalele /AdrStr, /DataStr, /Write şi /Reset inactive, adică la 1. Dacă este necesară setarea acestor linii se va scrie configuraţia xxxxOlOO la Portul de Control. La unele porturi nu se poate realiza un ciclu de scriere, dacă portul a fost configurat în sens invers. Ca urmare se recomandă stabilirea sensului direct, prin punerea la 0 a rangului 5 din Portul de Control. De asemenea este necesar ca înaintea fiecărui transfer rangul de Time Out să fie 0. Dacă nu există această siguranţă, atunci este necesară ştergerea sa prin program.

Modul ECP ("Extended Capabilities Port")

Modul ECP a fost dezvoltat şi promovat de firmele Hewlett-Packard şi Microsoft în scopul definirii unui mod performant de comunicare cu periferice rapide: imprimante laser, scannere. întocmai ca şi modul EPP, modul ECP asigură transfer rapid şi bidirecţional. Dialogul este implementat tot prin hardware, la nivelul controlerului de intrare / ieşire.

Un dezavantaj faţă de modul EPP este acela că pentru instalarea modului de transfer invers este necesar, în prealabil, un dialog între port şi periferic, operaţie care este consumatoare de timp. După stabilirea sensului, transferurile se realizează cu viteză mai mare ca în cazul modului EPP. Ca urmare, modul ECP se recomandă atunci când schimbările de sens sunt puţine.

La modul ECP apar câteva trăsături care permit creşterea ratei de transfer şi anume: compresia datelor, adresarea de canal, tampoane FIFO pentru transferul în ambele sensuri şi accesul la canalele DMA. Compresia datelor este realizată prin metoda numită RLE ("Run Length Encoding") şi este utilă atunci când se transferă date repetitive. Dacă de exemplu este necesar transferul a 30 de caractere "a" atunci se va transfera un număr RLE egal cu 29 şi un singur caracter "a". Perifericul va repeta caracterul a de atâtea ori cât îi arată numărul RLE. Pentru a identifica numărul RLE şi pentru a-1 distinge de celelalte date, el va fi trimis ca o comandă la Portul de adrese ECP, cu bitul cel mai semnificativ la 0 spre a-1 deosebi de o adresă de canal care se trimite la acelaşi port dar cu rangul cel mai semnificativ la 1. Compresia este utilă atunci când se trimit informaţii grafice, întrucât în acest caz, se întâlnesc uzual caractere care se repetă.

18

Page 19: Interfete Si Periferice

Conceptul de adresare de canal diferă de adresarea de port uzuală. El este util la adresarea mai multor echipamente logice aflate într-un singur echipament fizic.Un exemplu în acest sens este un echipament multifuncţional de tip fax/modem/ imprimantă. Un singur echipament fizic, cu un singur port paralel, cuprinde un fax, un modem şi o imprimantă. Fiecare din acestea poate fi văzut ca un echipament logic separat. Utilizând adresarea de canal a modului ECP, este posibilă transferarea de date cu fax-ul în timp ce imprimanta este ocupată. In modul standard, dacă imprimanta era ocupată nu era posibil nici un transfer cu echipamentul fizic deci cu nici unul din echipamentele logice. In modul ECP, însă, programul va modifica adresa de canal şi transferul va putea să aibă loc.

Tabelul 7.10 prezintă denumirile şi semnificaţiile semnalelor din acest mod facându-se şi analogia cu denumirile semnalelor din modul standard.

Pin conector

tipD

Nume semnal SPP

Nume semnal ECP

Direcţie Descriere

1 /Strobe HostClk OutSemnal de dialog folosit împreună cu PeriphAck pentru a transfera date sau adrese în sens direct

2-9 DataO-7 DataO-7 In/Out Linii bidirecţionale de date

10 /Ack PeriphClk In Semnal de dialog folosit împreună cu HostAck pentru a transfera date în sens invers

11 Busy PeriphAck In

Semnal de dialog folosit împreună cu HostClk pentru a transfera date sau adrese în sens direct. La transferul în sens invers distinge între date şi comenzi

12 PaperEnd /AckReverse In Este răspunsul la cererea /Reverse Request. Este activ la 0

13 Select Xflag In Indicator de extensie

14 /AutoLinefeed HostAck Out

Semnal de dialog folosit împreună cu PeriphClk pentru a transfera date în sens invers. La transferul în sens direct distinge între date şi comenzi

15 /Error/

PeriphRequest

In Este activat la 0 de către periferic indicând disponibilitatea datelor inverse

16 /Initialize/

ReverseRequest

Out Cerere, activă la 0, pentru instalarea modului de transfer invers

17 /Selectln 1284Active Out Este 1 când portul este într-un mod compatibil 1284

18-25 Gnd Gnd - Masa electrică

Tabelul 7.10. Semnalele modului ECP

Figura 7.14 arată diagrama transferului de la port la periferic. Operaţiile executate sunt:• portul plasează datele pe linii şi arată ce tip de ciclu va executa: transfer de date (HostAck=l) sau transfer de comenzi (HostAck=0),• portul activează semnalul HostClk indicând perifericului că datele sunt valide,• perifericul răspunde cu activarea la 1 a lui PeriphAck,• portul răspunde cu dezactivarea lui HostAck; se recomandă utilizarea acestui from pentru preluarea datelor de către periferic,• perifericul răspunde cu dezactivarea lui PeriphAck şi un nou ciclu poate începe.

19

Page 20: Interfete Si Periferice

Fig. 7.14. Diagrama transferului de la port la periferic

Separarea între ciclurile în care se transferă date de cele în care se transferă comenzi se face prin linia HostAck, comandată de către port. Dacă HostAck este 1 atunci se vor transfera date iar dacă HostAck este 0 atunci se vor transfera comenzi. Există 2 tipuri de comenzi. Dacă rangul 8 este 0 atunci celelalte ranguri reprezintă un număr RLE, cu valori de la 0 la 127. Dacă rangul 8 este 1, atunci celelalte ranguri reprezintă o adresă de canal.

Fig. 7.15 Diagrama transferului de la periferic la port

Figura 7.15 prezintă diagrama transferului de la periferic la port. Operaţiile care se execută sunt:• portul cere transfer în sens invers activând linia /ReverseRequest,• perifericul răspunde că acceptă cererea, activând linia /AckReverse,• perifericul plasează datele pe linii şi arată ce se va transfera: date (PeriphAck=l) sau comenzi (PeriphAck=0),• perifericul activează PeriphClk la 0 indicând că datele sunt valide,• portul răspunde activând la 1 linia HostAck,• perifericul răspunde dezactivând pe PeriphClk; se recomandă utilizarea acestui front pentru încărcarea datelor în port,

20

/ReverseRequest

/AckReverse

/D0-7

PeriphAck

PeriphClk

HostAck

DataComanda

Data valida 1

Data valida 2

D0-7

HostAck

HostClk

PeriphAck

Data valida 1 Data valida 2

Data Comanda

Page 21: Interfete Si Periferice

• portul răspunde dezactivând pe HostAck şi comunicând astfel că este gata pentru un nou ciclu.

Din ultima diagramă se observă şi o diferenţă importantă între modurile EPP şi ECP, amintită deja. Dacă la modul EPP pot fi amestecate ciclurile cu transfer în oricedirecţie, fară dialog suplimentar, la modul ECP este necesar un dialog pentru a stabili sensul invers. Portul trebuie să ceară sensul invers prin activarea lui /ReverseRequest şi să aştepte răspunsul de acceptare al perifericului prin activarea liniei /AckReverse. Doar apoi poate să înceapă transferul.

Setul de registre folosit în modul ECP este mai complex decât cel folosit în celelalte moduri. Tabelul 7.11 prezintă registrele utilizate în modul ECP.

Nume port AdresăMod în care

este folosit (*)Utilizare SPP Direcţie

Portul de Date Bază 0,1 Da IeşirePortul ECP de adrese FIFO Bază 4 Nu Intrare/IeşirePortul de Stare Bază+1 0-7 Da IntrarePortul de Control Bază+2 0-7 Da Intrare/IeşirePortul de Date FIFO Bază+400h 4 Nu Intrare /IeşirePortul de Date FIFO Bază+400h 3 Nu Intrare/IeşirePortul de test FIFO Bază+400h 6 Nu Intrare/IeşireRegistrul de configurare A Bază+400h 7 Nu IntrareRegistrul de configurare B Bază+401h 7 Nu Intrare /IeşireRegistrul de control extins (ECR) Bază+402h 0-7 Nu Intrare/Ieşire

*Semnificaţiile numerelor din această coloană sunt prezentate în tab. 1.12.

Tabelul 7.11. Registrele (porturile) modului ECP

Există mai multe moduri în care poate lucra un port ECP. Acestea sunt prezentate în tabelul 7.12.

Nume mod ECP Număr Descriere

Standard 0 Portul ECP va lucra ca şi un port standard.Byte 1 Portul ECP va lucra ca un port bidirecţional.

Port paralel FIFO

2

Atunci când programul scrie o dată la Portul de Date FIFO, aceasta va fi trimisă la periferic, utilizând dialogul de tip SPP. Se obţine viteză mai mare ca în modul standard pentru că dialogul este generat prin hardware şi se folosesc tampoane de tip FIFO. Dialogul, însă nu este de tip ECP, ci de tip SPP.

ECP FIFO 3 Mod tipic ECP. Transferul se realizează prin dialog de tip ECP, generat prin hardware.

EPP 4 Portul va lucra ca şi în modul EPP. Nu este disponibil la toate controlerele de I/E. Acolo unde nu este, modul este rezervat.

Test FIFO 6

Atunci când programul scrie o dată la Portul de test FIFO, aceasta va fi trimisă în tamponul FIFO. Orice citire din Portul de test FIFO se va realiza din tamponul FIFO Împreună cu rangurile de stare FIFO Plin/Gol, acest mod este util pentru a afla dimensiunea tampoanelor FIFO implementate pe portul paralel.

Configurare 7Este un mod folosit pentru configurarea portului paralel, prin intermediul registrelor de configurare A şi B.

Tabelul 7.12. Modurile de lucru ale unui port ECPPentru instalarea modurilor descrise mai sus se foloseşte Registrul de Control

Extins (ECR). Structura lui este dată în figura 7.16. Rangurile 7-5 din ECR fixează modul de lucru.

21

Page 22: Interfete Si Periferice

Dacă unui port ECP i se cere modul Standard el va lucra ca un port paralel original. Dacă i se cere modul Byte va lucra în sens invers. Următoarele două moduri, Port paralel FIFO şi ECP FIFO, utilizează hardware-ul pentru a genera dialogul necesar transferului, diferenţa între ele fiind aceea că modul Port paralel FIFO generează dialog de tip Standard, pe când modul ECP FIFO generează dialog de tip ECP. Modul Test FIFO este folosit pentru a verifica dimensiunea tampoanelor FIFO. Dacă portul este în acest mod, orice octet scris la Portul de test FIFO, adresa Bază+400h, va fi încărcat în tamponul FIFO şi orice port citit de la acest port va fi citit de la tamponul FIFO. Utilizând şi rangurile FIFO Plin şi FIFO Gol, se poate determina dimensiunea tampoanelor FIFO care în mod uzual este de 16 octeţi.

Fig. 7.16. Structura Registrului de control extins

Rangul 4 din ECR, întrerupere ECP, are rolul să valideze sau nu utilizarea întreruperilor. Rangul 3, Validare DMA, validează sau nu utilizarea DMA iar rangul 2, Service ECP, indică, dacă este setată la 1, apariţia unei cereri de întrerupere. Resetarea lui se face în mod diferit, în funcţie de controlerul de I/E existent. La unele porturi, resetarea acestui rang se face scriind 0 la el, prin program, în timp ce la alte porturi resetarea se realizează doar prin citirea registrului.

Rangurile 1, FIFO Plin şi 0, FIFO Gol, indică starea tampoanelor FIFO. Dacă FIFO Plin este setat, atunci tamponul este plin. Dacă FIFO Gol este setat, atunci tamponul este gol. Dacă nici unul nu este setat atunci există date în tampon dar nu este plin.

Pentru instalarea unui mod de de lucru se configurează registrul ECR, conform modului dorit şi apoi se pot scrie şi citi date la/de la adresa de port corespunzătoare.

Modul ECP dispune de două registre de configurare care oferă informaţii suplimentare despre funcţionarea portului în modul ECP. Acestea sunt disponibile doar dacă portul este în modul de configurare, la adresele Bază+400h pentru registrul A şi Bază+401h pentru registrul B. Fig. 7.17 prezintă structura registrului de configurare A.

Rangul cel mai semnificativ arată dacă întreruperile sunt active pe nivel sau pe front, aceasta depinzând de magistrala existentă pe placa portului. Următoarele 3 raguri arată dimensiunea magistralei de pe placa portului: 8, 16 sau 32 biţi. Acesta informaţie

22

7 0

FIFO Gol

FIFO Plin

Service ECP

Validare DMA

Intrerupere ECP

Mod de lucru: 000-Standard001-Byte010-Port Paralel FIFO011-ECP FIFO100-EPP101-Rezervat110-Test FIFO111-Configurare

Page 23: Interfete Si Periferice

este utilă driverului pentru portul paralel pentru a seta dimensiunea cuvântului care se transferă în conformitate cu dimensiunea magistralei portului. Transferul poate avea loc şi dacă dimensiunea cuvântului şi a magistralei portului nu coicid dar eficienţă maximă se poate obţine dacă ele coincid.

Fig. 7.17. Structura registrului de configurare A

Următoarele 3 ranguri folosesc la revenirea dintr-o eroare. Programul trebuie să ştie câţi octeţi au rămas în tamponul FIFO. La unele porturi rangul FIFO Plin se referă şi la octetul care aşteaptă să fie transmis iar la alte porturi acest octet nu influenţează rangul FIFO Plin. Apoi, portul paralel are doar 8 biţi de date şi dacă se transferă la por un cuvânt de 16 sau 32 biţi, este necesar ca programul care asigură revenirea din tratarea unei erori să ştie câţi octeţi au mai rămas de transferat.

Figura 7.18 prezintă structura registrului de configurare B. El oferă informaţii despre configurarea portului la nivelul întreruperilor şi al canalelor DMA. Unele porturi pot fi configurate prin program, altele prin BIOS iar altele prin conexiuni. In ultimele două cazuri, registrul de configurare B este doar cu citire.

Rangul 7 selectează sau nu comprimarea datelor de către port, prin metoda RLE. Dacă este 1, se realizează comprimarea. Rangul 6 indică starea liniei de întrerupere IRQ. Informaţia poate fi folosită la diagnosticarea de conflicte, atunci când această linie este folosită şi de alte resurse.

Rangurile 5-3 asignează sau afişează liniile de întrerupere alocate portului paralel, iar rangurile 2-0 asignează sau afişează canalul DMA folosit de portul paralel.Instalarea unuia din modurile de lucru descrise se face prin intermediul BlOS-ului. Există şi posibilitatea ca un program utilizator să realizeze aceste configuraţii, acţionând asupra unor registre, dar nu se recomandă acest lucru din cel puţin 2 motive:• nu există setări standard pentru aceste registre, ca urmare este posibil ca programul utilizator să nu fie portabil şi dacă sistemul este multitasking, modificarea acestor registre de un task va putea afecta funcţionarea celorlalte taskuri.

23

Octeţi rămaşi în FIFO: 00 - întregul cuvânt 01-1 octet 10-2 octeţi 11-3 octeţi

0-octetul ce aşteaptă să fie trimis nu afectează rangul FIFO Plin 1-octetul ce aşteaptă să fie trimis afectează rangul FIFO Plin

Rezervat

000 - cuvinte de 16 biţi 001 - cuvinte de 8 biţi 010-cuvinte de 32 biţi

întreruperi active pe nivel intreruperi active pe front

Page 24: Interfete Si Periferice

Fig. 7.18. Structura registrului de configurare B

7.1.5 Intreruperile la portul paralel

întreruperile nu sunt utilizate la transferul cu imprimanta nici sub DOS şi nici sub Windows. Ele pot fi, însă, utile atunci când portul paralel este folosit în aplicaţii de timp real, de exemplu monitorizarea unui proces. Dacă în timpul monitorizării, la apariţia unui eveniment, trebuie ca portul să ia o decizie, să execute o anumită comandă, de exemplu, atunci va fi folosită o intrare a portului paralel pe care va sosi o cerere de întrerupere. Procesul va trata această cerere în concordanţa cu cerinţele aplicaţiei respective.

In mod uzual, liniile de întrerupere alocate portului paralel sunt IRQ7 pentru LPT1 şi IRQ5 pentru LPT2. Dacă nu există LPT2, IRQ5 va fi alocată pentru placa de sunet. Există posibilitatea ca o linie de întrerupere să fie alocată la mai multe resurse. De exemplu 1RQ5 poate fi alocată plăcii de sunet şi portului LPT2. Este sarcina rutinei de tratare a cererii de întrerupere să identifice, în această situaţie, resursa care a cerut întreruperea. Dacă portul ste folosit doar pentru tipărire, atunci este posibil ca întreruperile să fie invalidate.

Pentru vizualizarea corespondenţei dintre resurse şi liniile de întrerupere, în Windows 95/98 se foloseşte calea System —> Device —> Manager —> Properties.

24

7 0

Selectează sau afişează starea canalului DMA folosit:000 - foloseşte canal DMA pe 8 biţi setat prin conexiuni001 - canal 1 DMA 010-canal 2 DMA 011 -canal 3 DMA100 - foloseşte canal DMA pe 16 biţi setat prin conexiuni 101-canal 5 DMA 110-canal 6 DMA 111 - canal 7 DMA

Selectează sau afişează starea liniei IRQ000 - întrerupere selectată cu conexiuni001-IRQ7 010-IRQ9011-IRQ10100-IRQ11101-IRQ14110-IRQ15111-IRQ5

Starea curenta a liniei IRQ

1 - transfer cu compresie RLE 0 - transfer fară compresie RLE

Page 25: Interfete Si Periferice

Pentru ca cererea de întrerupere să ajungă la procesor, este necesară validarea liniei de întrerupere, la nivelul controlerului de întreruperi. Considerând că IRQ7 este linia alocată portului paralel, validarea acestei linii se va face scriind 0 în rangul 7 al portului de la adresa 21 h, IMR ("Interrupt Mask Register). întrucât după acceptarea unei cereri de întrerupere, sistemul de întrerupei va fi dezactivat, este necesară reactivarea sa, după tratarea cererii. Aceasta se poate realiza prin setarea rangului ICR ("Interrupt Control Port"), adresa 20h, de obicei înainte de a ieşi din rutina de tratare a cererii.

La nivelul portului paralel, întreruperile pot fi validate sau invalidate prin intermediul rangului 4 din Portul de Control, Enable IRQ Via AckLine. Dacă întreruperile sunt validate, atunci o întrerupere va fi generată la tranziţia 1 -» 0 a semnalului /Ack.

Există şi porturi la care întreruperea este generată la tranziţia 0 —> î a semnalului /Ack. Se recomandă ca, înainte de utilizarea acestei intrări, să se verifice tranziţia de pe linia /Ack care va determina generarea unei cereri de întrerupere.

7.1.6. Utilizarea portului paralel prin intermediul BIOS – ului

Portul paralel poate fi folosit şi prin intermediul rutinelor din BIOS. Accesul la rutina din BIOS care corespunde portului paralel se face prin instrucţiunea INT 17H. Funcţiile care pot fi realizate depind de configuraţia încărcată în registrul AH înainte de lansarea instrucţiunii şi sunt prezentate în tab. 7.13.

Nume funcţie Combinaţie în AH Descriere

Tipărire caracter 00H

Se trimite la portul paralel caracterul aflat în registrul AL. în DX se află numărul perifericului referit (0 în varianta standard). La ieşirea din rutină, dacă transferul nu a reuşit, în AH se află configuraţia corespunzătoare funcţiei Citire stare periferic, cu rangul 0, eroare de "time-out" la 1. Pentru transfer reuşit rangul 0 este 0.

Iniţializare periferic 01HIn DX se încarcă numărul perifericului referit. La ieşirea din rutină, în AH se află starea perifericului.

Citire stare periferic 02H

La ieşirea din rutină, în AH se obţine starea perifericului. Semnificaţiile rangurilor din AH: bit 7-periferic disponibil; bit 6-există imprimantă; bit 5-lipsă hârtie; bit 4-imprimantă selectată; bit 3-eroare de transfer; biţi 2,1 - neutilizati; bit 0-eroare de "time-out"

Tabelul 7.13. Funcţiile BIOS pentru portul paralel

7.2. Portul serie

Portul serie a apărut o dată cu PC-ul, încă din 1981, şi este alternativa la portul paralel pentru comunicarea PC-ului cu exteriorul. Conectarea la portul serie se realizează prin intermediul unei cuple de tip D cu 25 pini sau 9 pini, la calculatoarele mai noi, de tip tată.

Portul serie este folosit pentru conectarea PC-ului cu echipamente aflate la distanţă (peste 3 m). Utilizarea sa cea mai răspândită constă în conectarea PC-ului la sistemul de comunicaţii prin linii telefonice, folosind în acest scop un echipament special numit MODEM. Utilizarea portului serie este mai dificilă decât cea a portului paralel din două motive:

25

Page 26: Interfete Si Periferice

• informaţia vehiculată este în format serie şi de multe ori va fi necesară conversia / re-conversia ei în format paralel;

• portul serie dispune de mai multe registre, ca urmare programarea sa este mai dificilă.

Totuşi, există câteva motive care susţin utilizarea portului serie:• cablurile seriale pot fi mai lungi decât cele paralele, întrucât transferul serie este mai rezistent la perturbaţii decât cel paralel. Aceasta rezultă din nivelele de tensiune alocate nivelelor logice: 0 V şi 5 V la transferul paralel şi -25 V -f -3 V şi +3 V -f +25 V la transferul serie. Ca urmare distanţa dintre cele 2 nivele logice este de max. 5 V la transferul paralel şi min. 6 V, dar poate ajunge până la 50 V, la transferul serie.• cablurile seriale au mai puţine fire decât cele paralele: un cablu serial poate avea doar 3 fire în timp ce unul paralel are minim 11 fire. In condiţiile în care cele 2 echipamente care se conectează prin intermediul cablului serial, se află la distanţă una faţă de cealaltă, această trăsătură duce la creşterea şi mai mult a rezistenţei faţă de perturbaţii cât şi la scăderea preţului de cost;• în ultima perioadă se dezvoltă intens transferurile tară cablu, adică în infraroşu, radio sau chiar laser. Acestea nu se pot face decât serial ca urmare ele au nevoie de portul serial;• răspândirea microcontrolerelor este din ce în ce mai accentuată. Acestea dispun de interfaţă serie care poate fi direct conectată la portul serie al unui PC. Deşi în majoritatea cazurilor microcontrolerele se folosesc în "embedded systems", adică sisteme orientate pe o aplicaţie sau grup de aplicaţii, toate instrumentele de punere în funcţiune, verificare şi depanare a sistemelor cu microcontrolere presupun utilizarea PC-ului. De asemenea toate mediile de dezvoltare a programelor pentru microcontrolere presupun utilizarea PC-ului. In plus există şi aplicaţii în care PC-ul este conectat la unul sau mai multe sisteme cu microcontrolere.

7.2.1. Bazele comunicării serie a datelor

Comunicarea serie a datelor constă în transferul datelor între două echipamente sub forma bit după bit, deci pe o singură linie fizică. Prin linie înţelegem un conductor pe care pot transfera datele, care poate fi implementat în formă materială (fir de cupru, de ex.) sau în alte forme: optică, radiantă (infraroşu, radio, laser).

Transferul serie este recomandat atunci când există distanţe mari (peste 3 m) între echipamentele care comunică. Aici trebuie făcută o observaţie legată de transferul paralel. In capitolul 1 s-a afirmat că, în anumite condiţii, se poate face transfer paralel şi dacă echipamentele se află la o distanţă de până la 10 m. Dar era necesar ca echipamentele să fie conforme cu standardul IEEE 1284 şi, mai ales, cablul să respecte toate cerinţele electrice ale standardului 1284. Aceste condiţii nu sunt uşor de îndeplinit întrucât deşi echipamentele care au interfeţe paralele conforme cu standardul 1284 sunt din ce în ce mai răspândite, există încă foarte multe echipamente care nu respectă acest standard. In plus, un cablu paralel conform standardului 1284 este scump. Ca urmare, în majoritatea cazurilor în care echipamentele se află la peste 3 m, se recomandă conectarea serială.

Există două motive care susţin această recomandare: costul şi rezistenţa la perturbaţii. Modul în care este influenţat costul a fost descris. Transferul serie are o rezistentă mai mare la perturbaţii decât cel paralel din două motive:

• posibilitatea de perturbare a liniilor scade dacă numărul acestora este mai mic;• distanţa dintre nivelele de tensiune este mai mare decât la transferul paralel.

26

Page 27: Interfete Si Periferice

Nivelele de tensiune care circulă pe linia serială nu sunt TTL ci EIA şi au următoarele valori:

• -25 V-f-3 V pentru "1" logic şi• +3 V 4- +25 V pentru "0" logic.

Intrucât circuitele specializate pentru interfeţele seriale lucrează cu nivelele TTL, sunt necesare circuitele de conversie între acestea şi linii. Există circuite integrate care realizează acest lucru. La calculatoarele mai vechi se folosesc circuitele integrate, figura 7.31:

• ROB 1488 pentru conversia TTL -> EIA;• ROB 1489 pentru conversia EIA-> TTL.

Dezavantajul lor constă în faptul că necesită mai multe tensiuni de alimentare.

Fig. 7.31. Circuitul de translatare MAX232 Datorită faptului că transferul unui octet se efectuează bit după bit, viteza de transfer este mică. Există două unităţi de măsură a vitezei transferului: bit pe secundă (bps) şi baud. Un baud se defineşte ca o tranziţie electrică a liniei. Dacă transferul între cele două echipamente, de exemplu două calculatoare, se desfăşoară sub formă digitală,adică cele două echipamente sunt legate la liniile seriale direct, fără MODEM, atunci 1 bps = 1 baud. Dacă, însă, transferul se desfăşoară sub formă analogică, pe linii telefonice între două MODEM-uri, de exemplu, atunci lbps 1 baud. Relaţia între ele depinde de metoda de codificare a datelor pe linii folosită de MODEM-uri. Un baud poate fi egal cu 4 bps sau cu 6 bps etc.

Se obişnuieşte să se lucreze cu anumite viteze. Treptele de viteză mai utilizate sunt: 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 mai rar 230400, 460800 bps. La calculatoarele mai noi se folosesc doar treptele de viteză mai mari. Pe lângă aceste trepte de viteză se întâlnesc în practică şi alte trepte, de exemplu 14400, 28800, 33600 bps. Acestea sunt viteze de transfer pe liniile seriale, între două MODEM-uri şi diferă de viteza între calculator şi MODEM. Ele apar ca urmare a existenţei unei facilităţi a MODEM-ului şi anume cea de compresie a datelor. Considerând, de exemplu, o rată de compresie uzuală pentru un modem de 4 la 1, atunci dacă transferul între calculator şi MODEM are loc la viteza de 115200 bps, cea de pe linia serială va fi de 115200: 4 = 28800 bps.

27

TR2OUT

C1+

MAX232

V+

C1-

C2+

C2-

V-

RE2IN

Vcc

GND

TR1OUT

RE1IN

RE1OUT

TR2IN

TR1IN

RE2OUT8 9

1 16

8

13

7

14

12

9

10

11

RS232 TTL,CMOS

V+

C2+

C2-

C1+

C1-

V-

2

4

569

3

1

10uF

10uF10uF

10uF

Vcc

+9

+9

+9

+9

Page 28: Interfete Si Periferice

Transferul serial nu se desfăşoară în mod continuu, la aceeaşi rată, ci există perioade de transfer, la diferite rate, urmate de perioade de repaus. Ca urmare este necesară o sincronizare între transmiţător şi receptor. Există două tehnici pentru a asigura această sincronizare: transferul asincron şi transferul sincron.

In cadrul unui transfer asincron, numit şi transfer pe caracter, fig. 7.32, un caracter poate.fi transmis în orice moment. Când nu se transmite vreo dată, linia este inactivă, adică la 1 logic. Atunci când transmiţătorul doreşte să emită un caracter, va activa linia la 0 logic, o durată corespunzătoare unui bit. Acest bit poartă denumirea de bit de START şi serveşte la sincronizarea cu receptorul. Orice receptor serie dispune de un mecanism de rejecţie a impulsurilor de START false, de fapt a perturbaţiilor. Receptorul testează permanent linia şi, după sesizarea începutului impulsului de START mai realizează un test după un timp egal cu jumătatea duratei impulsului. Dacă regăseşte nivelul de 0 logic înseamnă că pe linie există un impuls de START, în caz contrar consideră că pe linie a apărut o perturbaţie şi reia testarea liniei seriale în vederea detectării impulsului de START. Dacă receptorul a găsit impulsul de START, va citi din nou linia după un timp egal cu durata unui bit astfel încât receptorul citeşte linia la jumătatea duratei unui bit emis, figura 7.32, minimizând astfel riscul desincronizării transmiţătorului cu receptorul care duce la pierderea informaţiei.

Fig. 7.32. Structura unui caracter transferat serial în mod asincron

Pentru ca receptorul să cunoască durata unui bit emis este necesar ca atât transmiţătorul cât şi receptorul să fie programate cu aceeaşi viteză de transfer.

După rangul de START, transmiţătorul plasează rangurile utile ale caracterului începând cu bitul cel mai puţin semnificativ. Un caracter poate fi codificat pe 5, 6, 7 sau 8 biţi. Ele sunt urmate de un bit opţional de paritate care are rolul de a asigura detectarea unei erori singulare sau a unui număr impar de erori. Controlul prin paritate cere ca fiecărui octet util emis să i se ataşeze un bit de paritate, calculat după o anume regulă. La primirea octetului util, receptorul calculează şi el bitul de paritate, utilizând aceeaşi regulă ca cea a transmiţătorului şi îl compară cu bitul de paritate primit. In caz de necoincidenţă s-a detectat o eroare la nivelul unui rang sau a unui număr impar de ranguri. Tehnica nu permite detectarea unui număr par de erori, dar s-a constatat, statistic, că majoritatea erorilor la transferurile serie, sunt singulare. Există patru reguli de obţinere a bitului de paritate:

• paritatea pară: bitul de paritate se calculează astfel încât numărul total de l-uri din octetul util plus bitul de paritate, să fie par; de exemplu dacă octetul util este 01110000 atunci bitul de paritate ataşat va fi 1 iar dacă octetul util este 11110000 atunci bitul de paritate va fi 0;

• paritatea impară: similar cu paritatea pară doar că numărul de l-uri din octetul util plus bitul de paritate, să fie impar; de exemplu dacă octetul util este 01110000 atunci bitul de paritate ataşat va fi 0 iar dacă octetul util este 11110000, atunci bitul de paritate va fi 1;

• paritatea 1: bitul de paritate este întotdeauna î;28

1 logic

linieinactiva

linieinactiva

STOP

bitdeparitate

bitcel maiputin semnificativ

START

bitcel maisemnificativ

Page 29: Interfete Si Periferice

• paritatea 0: bitul de paritate este întotdeauna 0.După bitul de paritate, urmează 1, 1 Vi sau 2 biţi de STOP (1 logic) care au rolul

de a încheia transferul. Aceştia au fost prevăzuţi pentru a permite circuitului specializat pentru interfaţa serie şi procesorului să prelucreze caracterul primit şi pentru a asigura o separare minimă între 2 caractere consecutive.

Deşi s-au luat toate măsurile, există, totuşi, posibilitatea desincronizării între transmiţător şi receptor. Cele două echipamente lucrează sub controlul unor tacturi diferite şi, deşi sunt programate să lucreze cu aceeaşi viteză serială, defazajul între tacturi face ca receptorul să nu poată citi bitul emis exact la jumătatea duratei sale ci decalat. Acest decalaj se cumulează şi, dacă este prea mare, apare riscul ca ultimul sau ultimii biţi să nu mai fie citiţi. Riscul de pierdere a informaţiei este minimizat pe două căi:

• biţii sunt citiţi la mijlocul duratei lor ceea ce oferă o marjă de siguranţă;\ • cumularea se face doar până la nivelul unui singur caracter, adică a maxim 12

biţi, întrucât la următorul caracter transmiţătorul şi receptorul se resincronizează şi cumularea anterioară dispare; este puţin probabil ca pe durata unui caracter cumularea să fie atât de mare încât să se piardă vreun bit.

In modul asincron există avantajul că transmiţătorul poate transmite un caracter oricând doreşte dar dezavantajul că se transferă şi informaţie care nu este utilă, de date. Aceasta se numeşte de cadrare şi este alcătuită din bitul de START, de paritate şi bitul sau biţii de STOP. Astfel pentru transferul unui caracter util pe 8 biţi se mai ataşează cel puţin 2 biţi, 1 START şi 1 STOP, deci informaţia de cadrare va ocupa cel puţin 20% din cea care se transferă pe linii, ducând la o scădere a vitezei de transfer.

Există o notaţie consacrată pentru formatul datelor în transfer asincron. De exemplu 8n2 înseamnă transfer asincron cu 8 biţi de date, fără paritate şi cu 2 biţi de STOP, 7el înseamnă transfer cu 7 biţi de date, paritate pară şi cu 1 bit de STOP etc. Litera e indică paritate pară ("even") iar pentru paritatea impară ("odd") se va folosi litera o.

In cadrul transferului sincron, numit şi transfer pe bloc, transferul se face la nivel de bloc sau de mesaj. Transmiţătorul poate începe oricând doreşte transmisia unui bloc dar, odată începută, trebuie să transmită toate caracterele care-1 alcătuiesc. Un bloc începe cu unul până ia cinci caractere speciale, care au rol de sincronizare. Receptorul testează permanent linia, asamblează datele primite şi le compară cu caracterele de sincronizare. Din faza de programare, receptorul cunoaşte câte caractere de sincronizare foloseşte transmiţătorul şi care sunt acestea. Dacă s-a detectat apariţia acestora, urmează asamblarea biţilor caracterelor care alcătuiesc mesajul transmis. Dacă la transferul asincron există o sincronizare la nivel de caracter, realizată prin bitul de START, aici există o sincronizare la nivel de bit. Fiecare bit este transmis la momente de timp bine determinate fixate de un tact, comandat de transmiţător. Deci, în acest caz, pe lângă linia de date este necesară şi o linie de tact care serveşte şi la preluarea bitului de pe linie de către receptor. Există, însă, şi tehnici care permit combinarea datelor şi a tactului pe aceeaşi linie.

Transferul sincron se foloseşte atunci când se doreşte o viteză mai mare de transfer, fiind mai eficient datorită faptului că elimină biţii de cadrare pentru fiecare caracter. Totuşi, sunt necesare caractere de sincronizare deci dacă blocul este scurt, sub 8 caractere, modul sincron nu mai este eficient.

Informaţia alfanumerică se transferă sub formă de caractere. Acestea sunt codificate, astfel încât pentru fiecare caracter se transferă un octet. Printre primele coduri folosite a fost codul BAUDOT dar acesta avea dezavantajul că folosea doar 5 biţi pentru codificarea unui caracter, ceea ce a limitat la 32 numărul de caractere ce puteau fi transferate. Actualmente codul cel mai folosit este ASCII ("American Standard Code for Information Interchange"), 96 de octeţi corespund la litere, numere sau caractere speciale, iar 32 de octeţi corespund la caractere de comandă. Codul ASCII este folosit

29

Page 30: Interfete Si Periferice

uzual la transferul datelor atât pe linie serială cât şi pe linii paralele. Tab. 7.17 prezintă codificarea dată de codul ASCII. Valorile numerice sunt în cod hexazecimal.Caracterede comanda

Caracterespeciale

Numere si caracterespeciale

Literemari

Litere mari si caractere speciale

Litere mici

Litere mici si caractere speciale

00 NULL 10 DLE 20 SP 30 0 40 @ 50 P 60 . 70 p01 SOH 11 DC1 21 ! 31 1 41 A 51 Q 61 a 71 q02 STX 12 DC2 22 “ 32 2 42 B 52 R 62 b 72 r03 ETX 13 DC3 23 = 33 3 43 C 53 S 63 c 73 s04 EOT 14 DC4 24 $ 34 4 44 D 54 T 64 d 74 t05 ENG 15 NAK 25 % 35 5 45 E 55 U 65 e 75 u06 ACK 16 SYN 26 & 36 6 46 F 56 V 66 f 76 v07 BEL 17 ETB 27 ‘ 37 7 47 G 57 W 67 g 77 w08 BS 18 CAN 28 ( 38 8 48 H 58 X 68 h 78 x09 HT 19 EM 29 ) 39 9 49 I 59 Y 69 i 79 y0A LF 1A SUB 2A * 3A : 4A J 5A Z 6A j 7A z0B VT 1B ESC 2B + 3B ; 4B K 5B [ 6B k 7B {0C FF 1C FS 2C , 3C < 4C L 5C \ 6C l 7C |0D CR 1D GS 2D - 3D = 4D M 5D ] 6D m 7D }0E SO 1E RS 2E . 3E > 4E N 5E ^ 6E n 7E ~0F SI 1F VS 2F / 3F ? 4F O 5F # 6F o 7F DEL

Tabelul 7.17.Codul ASCII

Pentru asigurarea transferului serie fără erori sau pierderi este necesară o soluţie la problema controlului fluxului. Mai exact, trebuie găsită o soluţie la următoarea problemă: cum află transmiţătorul că receptorul nu mai poate prelua caractere (din diferite motive, de exemplu: tamponul său este plin, este deconectat de la linie etc), ca urmare nu mai are rost să le trimită fiindcă în caz contrar, acestea se pierd. Există trei soluţii la această problemă: « fără control;

• cu control software ("software handshaking");• cu control hardware (" hardware handshaking").Prima soluţie se poate aplica atunci când transmiţătorul şi receptorul lucrează la

aceeaşi viteză, mică şi receptorul are timp să transmită caracterele primite către unitatea sa centrală. Se poate folosi la transferuri asincrone.

A doua soluţie presupune utilizarea a două caractere de control: XON având codul DCI (llh) şi XOFF având codul DC3 (13h). Atunci când receptorul doreşte transfer va trimite către transmiţător caracterul XON iar atunci când nu mai poate prelua caractere va trimite caracterul XOFF.

A treia soluţie realizează un dialog între transmiţător şi receptor prin intermediul a două semnale. Atunci când transmiţătorul doreşte să transfere ceva, activează linia RTS. Dacă receptorul poate primi informaţia, va răspunde prin activarea liniei CTS iar când nu mai poate primi informaţie va dezactiva linia CTS. Această soluţie este mai rapidă decât cea dinainte dar cere un cablu cu 2 fire în plus.

Pentru realizarea fizică a transferului există două metode:• transferul în curent, sau prin buclă de curent: metoda s-a folosit la începuturile

realizării transferurilor serie şi constă din stabilirea pe linie a unui curent cu o anumită valoare (20 mA); prezenţa acestui curent pe linie înseamnă un nivel logic iar absenţa curentului înseamnă celălalt nivel logic;

30

Page 31: Interfete Si Periferice

• transferul prin nivele de tensiune: este soluţia folosită azi şi constă în alocarea nivelelor de tensiune EIA, nivelelor logice.

In timpul transferului serie pot apare erori. Acestea sunt de 4 tipuri: de cadrare ("Frame Error"), de paritate ("Parity Error"), de ritm ("Overrun Error") şi de oprire ("Break"). Eroarea de cadrare înseamnă că circuitul specializat pentru transferurile serie nu detectează numărul de biţi de STOP programat. Eroarea de paritate înseamnă că bitul de paritate calculat de receptor nu coincide cu cel primit de la transmiţător. Eroarea de ritm se manifestă atunci când există o desincronizare între circuitul specializat pentru transferurile serie şi unitatea centrală. Eroarea de ritm la recepţie apare în următoarea situaţie: receptorul asamblează biţii primiţi de pe linia serie şi în momentul când a asamblat un octet anunţă unitatea centrală că poate să i-1 predea. Dacă circuitul specializat are tampon la recepţie, de tip FTFO, atunci anunţul către unitatea centrală va fi făcut conform programării circuitului: după fiecare octet recepţionat, după ce tamponul de la recepţie este plin sau parţial plin. Circuitele specializate care nu au tampoane Ia recepţie, au totuşi un dublu registru. Asamblarea biţilor de pe linie se face în unul din cele două registre şi după asamblare, octetul se transferă în celălalt registru şi se anunţă procesorul. Anunţul către procesor se face fie cu un terminal specializat fie printr-un rang din octetul de stare al circuitului. Din momentul activării anunţului, procesorul are timp să citească octetul până când în celălalt registru se asamblează un alt octet de pe linie. Dacă procesorul nu citeşte în acest timp primul octet asamblat, următorul se va suprapune peste primul ceea ce înseamnă că acesta se pierde. Circuitul specializat detectează eroare de ritm şi activează un rang în unul din octeţii săi de stare.

Eroarea de ritm la transmisie apare atunci când circuitul specializat a terminat de serializat şi de transmis un octet pe linie şi, deşi a cerut altul de la unitatea centrală în momentul când a început serializarea, nu 1-a primit.

De remarcat că eroarea de ritm la recepţie este distructivă (se pierde cel puţin un octet) în timp ce cea de la transmisie nu este distructivă, ea micşorează doar viteza de transfer.

In cazul tuturor erorilor, circuitul specializat nu opreşte transferul ci îl anunţă doar prin activarea unor ranguri din octetul sau octeţii săi de stare. Este sarcina software-ului să trateze aceste situaţii, de exemplu cerând retransmisia octeţilor.

Condiţia de oprire ("Break") nu este propriu zis o eroare ci, mai degrabă, o situaţie deosebită creată în mod voit de transmitător. In mod normal, dacă linia este inactivă, ea este la 1 logic. Condiţia de Break este forţată de transmitător care trece linia la 0 logic pentru o perioadă relativ lungă, 0,25 - 0,5 sec. şi este sesizată de receptor.

Condiţia de Break poate fi folosită, de exemplu, atunci când se doreşte o iniţializare a liniilor seriale sau când se doreşte schimbarea caracteristicilor transferului.

Transferurile serie au fost standardizate. Organizaţia cunoscută azi sub numele Electronic Industries Association (EIA) a dezvoltat mai multe standarde pentru transferurile serie. Cel mai vechi, dar şi cel mai răspândit este RS 232C. RS înseamnă "Recommanded Standards", iar litera de după cifre indică versiunea standardului. Versiunea de azi este RS 232E. Un alt organism care a emis şi emite standarde pentru transferurile serie este International Telegraph and Telephone Consultative Communitee (CCITT) care şi-a schimbat denumirea în International Telecommunications Union (ITU). Standardul V24 este similar standardului EIA RS232. Alte standarde răspândite sunt RS422 şi RS485. în continuare var fi descrise aceste standarde. La calculatoarele PC, transferurile serie sunt doar asincrone, conform standardului RS232.

7.2.2. Standardul RS232

31

Page 32: Interfete Si Periferice

Standardul RS232 defineşte cerinţele logice, electrice şi mecanice pentru transferul serie al informaţiilor în formă digitală. Transferul se face în nivele de tensiune raportate la masă. Deşi standardul RS232 se referă şi la transferurile sincrone şi la cele asincrone, este folosit azi în majoritatea cazurilor doar pentru transferul asincron.

Standardul RS232 defineşte 2 tipuri de echipamente între care se poate desfăşura transfer serie: DTE ("Data Terminal Equipment") şi DCE ("Data Communications Equipment''). Calculatorul, imprimanta sunt echipamente de tip DTE iar modemul este echipament de tip DCE.

Transferurile serie au apărut din necesitatea de a asigura transferul între echipamente aflate la distanţă mare. Soluţia cea mai ieftină şi suficient de sigură pentru mediul de transfer au fost liniile telefonice. întrucât transferul datelor pe aceste linii se făcea sub formă analogică, a fost necesar un echipament care să facă transformarea între cele două forme de reprezentare a informaţiilor: digitală şi analogică. Acest echipament se numeşte MODEM şi asigură conectarea unui calculator la linii telefonice.

Un transfer serial între 2 calculatoare aflate la distanţă presupune realizarea următoarei căi, figura 7.33.

Fig. 7.33. Calea de comunicare serială între 2 calculatoare aflate la distanţă

Standardul RS232 defineşte şi conectorii ce pot fi folosiţi. Astfel un echipament de tip DTE necesită un conector de tip D, tată, cu 25 pini iar unul de tip DCE necesită un conector de tip D, mamă, cu 25 pini. Deşi nu este specificat în standard, la calculatorul PC s-a impus, din motive de spaţiu şi de cost, conectorul de tip D, tată cu 9 pini. Tabelul 7.18 prezintă semnalele folosite în transferul serie şi pinii folosiţi la cei doi conectori.

Semnal Notaţie Direcţie Pin la conectorul D25 Pin la conectorul D9Frame Ground FG 1Transmit Data TxD DTE -> DCE 2 3Receive Data RxD DTE <- DCE 3 2Request to Send RTS DTE -> DCE 4 7Clear to Send CTS DTE <- DCE 5 8Data Set Ready DSR DTE ^-DCE 6 6Logic Ground GND 7 5Data Carrier Detect DCD DTE <- DCE 8 1Data Terminal Ready DTR DTE -> DCE 20 4Ring Indicator RI DTE -» DCE 22 9

Tabelul 7.18. Semnalele portului serieSemnificaţiile semnalelor sunt următoarele:

• FG - Frame Ground: este numit şi masă de protecţie şi, atunci când este folosit, este conectat la şasiul echipamentului. Astfel, şasiurile celor 2 echipamente care comunică se vor afla la acelaşi potenţial

32

Calculator Calculator

Modem Modem

cupla D tata

cupla D mamalinie telefonica

cablu

Page 33: Interfete Si Periferice

• TxD - Transmit Data: este semnalul prin care se transmit datele seriale de la DTE la DCE. Dacă DTE nu are date de transmis, va ţine această linie la 1 logic.• RxD - Receive Data: este semnalul prin care se primesc date de către DTE de la DCE. Dacă nu sunt date de recepţionat atunci linia va fi la 1.• RTS - Request to Send: este semnal de dialog între DTE şi DCE. Atunci când DTE doreşte să transmită date către DCE, va activa, la 0 logic, semnalul RTS.• CTS - Clear to Send: este răspunsul la semnalul RTS. Dacă DCE sesizează că DTE doreşte să-i transmită date (prin activarea lui RTS) pentru a le trimite pe linie, îi va răspunde prin linia CTS. Atunci când poate primi date de Ia DTE va activa, la 0 logic, semnalul CTS iar dacă nu va mai putea primi date, de obicei datorită faptului că tamponul este plin, va dezactiva, la 1 logic, semnalul CTS.• DSR - Data Set Ready: prin acest semnal DCE comunică spre DTE, activându-1 la 0 logic, că este conectat la linie şi gata de lucru.• GND - Logic Ground: este masa electrică a semnalelor• DCD - Data Carrier Detect: este un semnal prin care DCE (MODEM) comunică spre DTE că a stabilit conexiunea cu celălalt DCE (MODEM) aflat la celălalt capăt al liniei.• DTR - Data Terminal Ready: este un semnal prin care DTE comunică spre DCE, activându-1 la 0 logic, că doreşte începerea comunicării. DCE va răspunde, atunci când este gata, prin DSR. Dacă DTR este dezactivat, comunicarea se va încheia şi DCE se va decupla de la linie.• RI - Ring Indicator: DCE va activa, la 0 logic, acest semnal, către DTE, atunci când va primi un apel de pe linia telefonică.Standardul RS232 defineşte semnale şi pentru restul pinilor din conectorul de tip D de 25 pini dar acestea sunt mult mai rar folosite, ca urmare nu vor fi descrise aici. Standardul RS232 defineşte aceleaşi semnale şi aceleaşi terminale la conectori atât pentru DTE cât şi pentru DCE. Totuşi, ţinând seama de faptul că atunci când DTE este conectat la DCE, semnalul TxD, de exemplu, pleacă de la DTE şi trebuie să fie primit de DCE pentru a-1 trimite pe linie, se obişnuieşte modificarea denumirilor semnalelor la nivelul DCE-ului. Astfel denumirile modificate, la nivelul DCE-ului, sunt: RxD la pinul 2, TxD la pinul 3, CTS la pinul 4 şi RTS la pinul 5.Standardul RS232 defineşte nivelele de tensiune ca fiind de tip EIA. La PC, nivelele de tensiune pentru transferurile serie sunt de ± 12V. Dialogul între transmiţător şi receptor poate să nu existe, să fie de tip software sau de tip hardware. Dacă există MODEM, acesta are comenzi prin intermediul căreia se alege una din cele 3 variante. Dacă nu există MODEM, atunci este sarcina software-ului să aleagă varianta de dialog. Viteza transferului a fost prevăzută iniţial la 20000 bps dar, azi ajunge până la 115200 bps, chiar mai mult. Se recomandă transferurile conforme cu acest standard atunci când distanţa între echipamente nu este mai mare decât 30 m. Pentru transferurile la distanţe mai mari este necesară transmiterea semnalelor pe linii diferenţiale, transfer definit prin standardele RS422 şi RS485.

7.2.3. Standardele RS422 şi RS485

Transfer nediferential şi transfer diferenţial Aşa cum s-a arătat, standardul RS232 defineşte un transfer serial, de tip punct la punct, între un transmiţător şi un receptor, în care nivelelor logice li se asociază tensiuni raportate la masă. Figura 7.34 prezintă un asemenea transfer considerând 4 linii, pe fiecare linie existând un emiţător şi un receptor.Avantajul unui asemenea transfer este acela că dacă există mai multe linii, va fi necesară o singură linie de masă, ca urmare cablul va fi mai ieftin iar conectorii mai mici,

33

Page 34: Interfete Si Periferice

rezultând spaţiu folosit mai restrâns şi cost mai redus. Dezavantajul, însă, al unei asemenea conexiuni este imunitate limitată la zgomote. Marginile de zgomot, impuse de nivelele de tensiune folosite sunt reduse, ca urmare nu se recomandă acest tip de conexiune în medii cu zgomot ridicat şi la distanţe peste 30 m. Sursele zgomotului sunt: zgomot indus, influenţa liniilor alăturate şi diferenţa între potenţialele de masă ale echipamentelor implicate în comunicare.

Alternativa o constituie transferul diferenţial. Pentru fiecare semnal sunt acum necesare 2 fire plus firul de masă, care poate fi comun pentru toate semnalele. Firele de semnal se numesc A şi B. Nivelele logice nu mai reprezintă tensiuni faţă de masă ci diferenţe de tensiune între linia A şi linia B. Fig. 7.35 prezintă un asemenea transfer.

Dacă potenţialul de pe linia A este negativ faţă de cel de pe linia B, atunci semnalul are nivel logic 1 iar dacă potenţialul de pe linia A este pozitiv faţă de cel de pe linia B, atunci semnalul are nivel logic 0. Diferenţa de potenţial între cele 2 linii trebuie să fie mai mare, în modul, decât 200 mV.

Fig.7.34. Transfer serie cu tensiuni raportate la masa

Fig. 7.35. Transfer diferenţial

Acest tip de transfer oferă imunitate mult mai mare la zgomote decât cel nediferenţial. Cauza o constituie tocmai caracterul diferenţial al reprezentării datelor pe linii. Zgomotele vor afecta ambele linii de semnal, A şi B, dar la receptor, componentele datorate zgomotelor se vor anula reciproc (prin scăderea tensiunilor de pe liniile A şi B).

34

E

R

R

R

R

E

E

E

E

R

R

R

R

E

E

E

Page 35: Interfete Si Periferice

Un alt avantaj este acela că nu contează eventualele diferenţe între potenţialele maselor echipamentelor care comunică întrucât tensiunile alocate nivelelor logice nu se raportează la masă. Acesta este un mare avantaj în sistemele în care comunică mai multe echipamente.

Dezavantajul transferului diferenţial constă în cost. Atât la transmiţător cât şi la receptor trebuie să existe circuite diferenţiale iar cablul va avea mai multe fire decât cel pentru transferul nediferenţial. De asemenea, pentru fiecare semnal sunt necesare terminatoare pentru a evita reflexiile. Calculul terminatoarelor este o problemă dificilăatunci când echipamentele care comunică se schimbă.

Transferul diferenţial se recomandă în mediul industrial, acolo unde probabilitatea de perturbaţii este mai mare, la distanţe mai mari şi cu viteze mai mari. Astfel cu acest tip de transfer se pot realiza transferuri cu viteza de până la 10 Mb/ s şi la distanţe de până la 1200 m.

Există mai multe standarde care utilizează transferul diferenţial pentru comunicaţii seriale, două dintre acestea fiind mai răspândite: RS422 şi RS485.

Ambele standarde folosesc reprezentarea nivelelor logice prin tensiuni diferenţiale, diferenţa între ele fiind aceea că RS422 se referă la un transfer punct la punct pe când RS485 se referă la un transfer multipunct. In ambele cazuri trebuie să existe pe fiecare linie emiţători şi receptori diferenţiali. Apare o diferenţă la nivelul emiţătorilor: cei din sistemele conforme standardului RS485 trebuie să aibă intrare de validare pe când cei din sistemele conforme standardului RS422 nu trebuie să aibă această intrare. Justificarea constă în aceea că sistemele RS485 pot avea mai multe echipamente cu rol de MASTER.

RS422

Este un standard pentru transferurile serie de tip punct la punct, cu reprezentare în tensiune diferenţială a nivelelor logice, pe linii. Pe fiecare linie există un emiţător şi un receptor. Fig. 7.36 prezintă o conexiune de tip punct la punct.

Fig. 7.36. Conexiune RS422 de tip punct la punct

Standardul permite şi o conexiune multipunct particulară, cu un transmiţător şi maxim 10 receptoare, fig. 7.37

Conexiunea de tip RS422 prezintă avantajele că necesită un software mai simplu ca cel ce corespunde unei conexiuni de tip RS485 şi terminatorul este unic şi simplu de calculat. Dezavantajele sale, faţă de RS485, sunt: este punct la punct, în cel mai bun caz multipunct limitat şi necesită mai multe fire întrucât pentru fiecare semnal sunt necesare două fire.

Este un standard pentru transferurile serie de tip multipunct, cu reprezentare in tensiune diferenţială a nivelelor logice, pe linii. El permite conectarea a cel mult 32 transmiţătoare şi 32 receptoare.

Există două variante ale standardului RS485: cu 2 fire şi cu 4 fire. In prima variantă, toate echipamentele sunt legate la aceleaşi 2 fire (plus firul de masă care trebuie să fie comun). Transferul este de tip semi-duplex. La toate echipamentele circuitele de conectare la linii trebuie să aibă facilitatea de a 3-a stare pentru a se putea

35

RE

Page 36: Interfete Si Periferice

decupla de la linii. Software-ul trebuie să evite transmisia pe linii de către mai mult de 1 echipament, la un moment dat.

Fig. 7.37. Conexiune RS422 de tip multipunct

RS 485

A doua variantă este utilă în aplicaţii de tip Master / Slave. O pereche de fire est alocată Master-ului. Acesta va transmite pe această pereche de fire, ca urmare circuitele de cuplare nu au nevoie de facilitatea de a treia stare. Cealaltă pereche este alocată echipamentelor de tip Slave, Doar Slave-ul a cărui adresă a fost trimisă de Maşter va putea transfera informaţii pe aceste linii. In asemenea sisteme, doar Master-ul este cel care poate iniţia un transfer. El citeşte periodic starea Slave-ului şi atunci când doreşte un transfer trimite adresa Slave-ului care va fi implicat în transfer. Transferul poate fi duplex. Varianta a doua asigură viteză mai mare de transfer dar este mai scumpă întrucât necesită mai multe fire. Circuitul de conectare al Master-ului, însă, poate fi mai simplu, întrucât nu necesită facilitatea de a treia stare.

Deşi standardul RS485 prevede conectarea a doar maxim 32 transmiţătoare şi 32 receptoare, a fost extins numărul lor la 128 transmiţătoare şi 128 receptoare. Pentru aceasta, la emisie s-au folosit circuite receptoare de putere iar la recepţie au fost folosite circuite cu impedanţă de intrare mai mare decât cea prevăzută în standard. Fig. 7.38 prezintă o conexiune RS 485 cu 2 fire iar fig. 7.39 prezintă o conexiune RS485 cu 4 fire.

Dată fiind larga răspândire a interfeţei serie RS232 şi dat fiind faptul că pentru aplicaţii industriale se recomandă interfeţele RS422 sau RS485, există convertoare între cele 2 tipuri de interfeţe.

Figura 7.40 prezintă conectarea a 2 interfeţe RS232 la linii conforme cu standardul RS422 iar figura 7.41 prezintă modalitatea de conectare a mai multor echipamente cu interfeţe RS232 ia linii conforme cu standardul RS485.

36

E R10

R9

R1

Page 37: Interfete Si Periferice

Fie. 7.38. Conexiune RS485 cu 2 fire

Fig. 7.39. Conexiune RS485 cu 4 fire37

E

R

Master

Validare

R

Slave

Validare

R

Slave

Validare

R

Slave

Validare

E

E

R

R

R

E

R

Validare Validare

ValidareValidare

masa electrica

masa protectie

E

Page 38: Interfete Si Periferice

Fig. 7.41. Conectarea interfeţelor RS232 prin interfaţă RS485

Fig.7.41 Conectarea interfeţelor RS232 prin interfaţă RS485

7.2.4. Cabluri şi conectori

Standardul RS232, varianta C, impune o lungime a cablului de 16,5 m. Varianta E extinde această lungime la 30 m. Lungimea cablului care permite un transfer cu efect minim al perturbaţiilor depinde de calitatea acestuia (de exemplu dacă are sau nu tresă de masă) şi de rata de transfer. Tab. 7.19 dă o imagine orientativă a lungimii cablului.

Cablu cu tresă de masă [m] Cablu fără tresă de masă [m] Rată de transfer [bps]1650 330 1101330 330 300950 165 1200650 165 2400165 82,5 480082,5 33 9600

Tabelul 7.19. Valori orientative pentru lungimea cablului

Ţinând seama că la calculatoarele PC mai noi, conectorul pentru portul serie este doar de 9 pini este util un adaptor de la 9 la 25 pini şi invers. Tabelul 7.20 prezintă un astfel de adaptor.

O soluţie rapidă şi eficientă pentru testarea portului serie a unui PC (şi a altui calculator) o constituie plasarea unui conector de test (aşa numitul "Loopback tester" pe conectorul de pe carcasa calculatorului. Conectorul portului serie al PC-ului este de tip tată ca urmare conectorul de test va fi de tip mamă. Tab. 7.21 prezintă legăturile ce trebuiesc făcute la conectorul de test.

38

Convertor

RS232-RS422

Convertor

RS422-RS232

TxD

RxD

RS232

R+

R-

T+

T-

R+

R-

T+

T-

TxD

RxD

RS232

Convertor

RS232-RS485

Convertor

RS485-RS232

TxD

RxD

RS232

+

-

+

-

TxD

RxD

RS232

Convertor

RS232-RS485

TxD

RxD

RS232

Convertor

RS232-RS485

TxD

RxD

RS232+ +

- -

Page 39: Interfete Si Periferice

Conector D9 Conector D25 Semnal1 8 DCD2 3 RxD3 2 TxD4 20 DTR5 7 GND6 6 DSR7 4 RTS8 5 CTS9 22 RI

Tabelul 7.20. Adaptor D9 - D25

Conectorul D25 Conectorul D9 Semnale legate2 3 3 2 TxD RxD4 5 7 8 RTS CTS07 6 şi 8 4 1 şi 6 DTR DSR şi DCD

Tabelul 7.21. Legăturile dintr-un "Loopback tester"

Programul de test va emite un caracter şi apoi îl va recepţiona. Caracterul recepţionat trebuie să fie cel emis, în caz contrar există o defecţiune la portul serie.

Aşa cum s-a arătat, pentru conectarea PC-ului la o linie telefonică este necesar un MODEM. Acesta poate fi intern calculatorului, sub forma unei plăci de extensie sau poate fi extern calculatorului, sub forma unui echipament de sine stătător. In acest al doilea caz este necesar un cablu PC - MODEM. Cablul se obţine legând direct terminalele cu acelaşi număr. In funcţie de software, cablul poate avea 9 sau 8 fire (lipseşte semnalul RI). Tabelul 7.22 prezintă legăturile ce trebuiesc realizate pentru un cablu PC - MODEM. Conectorul PC-ului poate fi cu 25 sau cu 9 terminale.

Conector PC D25* Conector PC D9* Conector MODEM Semnal2 3 2 TxD3 2 3 RxD4 7 4 RTS5 8 5 CTS6 6 6 DSR7 5 7 GND8 1 8 DCD20 4 20 DTR22 9 22 RI

Doar una din aceste coloane trebuie considerată la un moment dat

Tabelul 7.22. Cablu PC - MODEM, cu dialog hardware

Cablul din tabelul 7.22 trebuie folosit atunci când între cele 2 echipamente are loc un dialog hardware. Dacă acest dialog nu este necesar, se poate folosi un cablu cu mai puţine fire, tabelul 7.23. Legăturile între semnalele de comandă, la ambele capete, sunt necesare dacă software-ul foloseşte dialog hardware. In caz contrar, acestea nu vor fi necesare.

Conector PC D25* Conector PC D9* Conector MODEM Semnale2 3 2 TxD

39

Page 40: Interfete Si Periferice

3 2 3 RxD4-----> 5 7----->8 RTS-----> CTS20----->6 şi 8 4----->1 şi 6 DTR----->DSR si DCD7 5 7 GND

RTS-----> CTS20----->6 şi 8 DTR----->DSR si DCD

* Doar una din aceste coloane trebuie considerată la un moment dat.

Tabelul 7.23. Cablu PC - MODEM, tară dialog hardware

O cale de comunicare între două PC-uri este prin legarea directă a celor două porturi seriale. Tabelul 7.24 prezintă legăturile ce trebuiesc făcute pentru un cablu port serie PC - port serie PC, transferul având loc cu dialog hardware între calculatoare iar tabelul 7.25 prezintă legăturile ce trebuiesc făcute pentru un cablu port serie PC - port serie PC, transferul având loc fără dialog hardware între calculatoare (nu este necesar). Au fost menţinute, totuşi, legăturile între semnalele de comandă, la ambele capete ale cablului pentru eventualitatea când software-ul foloseşte dialog hardware. Al doilea cablu este mai ieftin dar transferul permis de primul cablu este mai rapid.

Conector PC 1 D25 *

Conector PC 1 D9*

Conector PC2 D25 +

Conector PC2 D9 + Semnale

        PCI PC22 3 3 2 TxD RxD3 2 2 3 RxD TxD4 7 5 8 RTS CTS5 8 4 7 CTS RTS6 şi 8 6 şi 1 20 4 DSR, DCD DTR7 5 7 5 GND GND20 4 6 şi 8 6 şi 1 DTR DSR, DCD

*Doar una din aceste coloane trebuie considerată la un moment dat+Doar una din aceste coloane trebuie considerată la un moment dat

Tabelul 7.24. Cablu PC - PC, cu dialog hardware

Conector PCI D25*

Conector PCI D9*

Conector PC2 D25+

Conector PC2 D9+ Semnale

        PCI PC22 3 3 2 TxD  3 2 2 3 RxD  4----->5 7----->8     RTS----->CTS  

20----->6 şi 8 4------>1 şi 6    DTR----->DSR,DCD  

7 5 7 5        4----->5 7----->8   RTS----->CTS

   20----->6 şi 8 4----->1 şi 6  

DTR----->DSR,DCD

Doar una din aceste coloane trebuie considerată la un moment dat

Tabelul 7.25. Cablu PC - PC, fără dialog hardware

Cablurile port serie PC - port serie PC se mai numesc şi cabluri "nuli modem". Un alt caz de conectare este acela în care un PC este legat la un terminal, de exemplu o imprimantă serială. In acest caz intervin particularităţile terminalului, de exemplu imprimantele seriale realizează dialog hardware prin intermediul semnalului DTR. Tabelul 7.26 prezintă un cablu port serie PC - imprimantă.

40

Page 41: Interfete Si Periferice

Conector PC D25 * Conector PC D9*

Conector imprimantă D25 Semnale

      PC Imprimantă  3 3 TxD RxD3 2 2 RxD TxD5 şi 6 8 şi 6 20 CTS, DSR DTR20----->8 4-----> 1   DTR----->DCD  7 5 7 GND GND

Doar una din aceste coloane trebuie considerată la un moment dat

Tabelul 7.26 Cablu port serie PC - imprimantă serială

7.2.5 Magistrala I2C

Caracteristici şi avantaje

Magistrala I2C a fost dezvoltată de firma PHILIPS în scopul asigurării unei căi de comunicare comune pentru cât mai multe module (care pot fi şi circuite), atât de uz general (microcontroîere, memorii), cât şi specializate pe mai multe aplicaţii. Denumirea de PC vine de la "Inter Integrated Circuits". Datorită numărului mare de circuite şi module care au facilitatea de I2C, peste 1000 de tipuri, la nivelul anului 1998, a devenit o magistrală foarte răspândită în mediu industrial. Este foarte răspândită la nivelul microcontrolerelor. Magistrala I2C există de 20 ani dar prima variantă a specificaţiilor a apărut în anul 1992 iar a 2-a, versiunea 2.0, a apărut în anul 1998.

Principalele caracteristici ale acestei magistrale sunt:• este o magistrală serială, bidirecţională, alcătuită doar din 2 linii: SDA (Serial Data) şi SCL (Serial Clock);• un modul compatibil I2C are înglobată o interfaţă care îi permite conectarea directă la cele 2 linii ale interfeţei; astfel, la nivelul magistralei nu vor mai fi necesare nici un fel de circuite pentru funcţionarea corectă a sistemului;• fiecare modul conectat la magistrală este adresabil prin program printr-o singură adresă;• modulele pot fi transmiţătoare sau receptoare; • relaţia între module este de tip master-slave;• este o magistrală de tip multi-master, având posibilitatea de detectare a coliziunilor şi de arbitrare pentru a preveni coruperea datelor, atunci când 2 sau mai multe module master iniţiază un transfer;• numărul de module care poate fi conectat la magistrala I2C este limitat doar de încărcarea maximă capacitivă a magistralei, de 400 pF;• viteza transferului de date este de maxim 100 kbiţi/ sec în modul Standard, maxim 400 kbiţi/ sec în modul Fast sau maxim 3,4 Mbiţi/ sec în modul High-speed;• oricare circuit sau modul compatibil cu PC dispune de posibilitatea de a rejecta impulsurile false de pe magistrală.Figura 7.42 prezintă modalitatea de conectare a mai multor module la magistrala I2C. Rezistenţele R asigură nivelul HIGH atunci când liniile SCL şi SDA sunt inactive.

41

R RV DD

SDA

SCL

ModulI2C

(modul LCD)

ModulI2C

(microcontroler)

ModulI2C

(memorie)

Page 42: Interfete Si Periferice

Fig.4.42.Conectarea mai multor module la magistrala I2C

Câteva din avantajele magistralei I2C sunt: nu este necesară proiectarea interfeţei la magistrala PC deoarece aceasta este inclusă în modul;• acelaşi tip de modul poate fi utilizat în mai multe aplicaţii;• nivelele pot fi conectate / deconectate la / de la magistrală fără afectarea celorlalte module conectate la magistrală;• existenta a doar 2 linii minimizează numărul de conexiuni, ca urmare circuitele vor necesita mai puţine terminale iar numărul de trasee de pe placă va fi mai mic; vor rezulta plăci mai mici şi mai ieftine;• facilitatea de multi-master a magistralei permite testarea finală rapidă utilizând conexiuni externe la o linie de testare.

Principalul avantaj, însă, este acela că magistrala I2C permite proiectantului construirea rapidă a unui prototip pornind de la o diagramă bloc funcţională.

Un sistem bazat pe magistrala I2C poate fi uşor modificat sau dezvoltat doar prin adăugarea modulelor compatibile cu magistrala. De asemenea pot fi crescute rapid performanţele unui echipament, de exemplu prin adăugarea de memorie suplimentară sau prin înlocuirea circuitelor mai vechi cu altele, de acelaşi tip, dar mai performante, în acest fel pot fi produse rapid variante ale unui echipament, rezultând o familie de echipamente bazate pe unul de bază.

Descrierea magistralei l2C

La magistrala I2C se pot conecta circuite, module, fabricate în mai multe tehnologii: bipolară, CMOS, NMOS etc. Există doar 2 fire, SDA şi SCL, pe care circulă informaţia. Fiecare modul are o adresă unică şi poate lucra ca master sau slave sau ca transmiţător sau receptor. De exemplu un modul LCD este receptor dar o memorie sau un microcontroler pot fi atât receptor cât şi transmiţător. Un master este modulul care iniţializează transferul de date şi generează semnalul de tact pentru realizarea transferului. Un slave nu poate iniţia un transfer, el poate fi doar adresat.

Magistrala I2C este de tip multi-master ceea ce înseamnă că ea poate fi controlată de mai multe module. In acest caz este necesară arbitrarea. Arbitrarea se bazează pe facilitatea de a realiza conexiuni de tip AND cablat pe care o au toate interfeţele compatibile I2C. Atunci când mai multe module master încearcă să trimită date pe magistrală, primul care va plasa 1 (o tensiune la nivel ridicat) în timp ce celelalte vor plasa 0 (o tensiune la nivel coborât) va pierde.

Semnalele de tact sunt generate doar de modulele master. Fiecare master generează propriul tact ia transferul datelor. Tactul unui master poate fi modificat doar

42

Page 43: Interfete Si Periferice

de un slave mai lent care forţează la 0 linia de tact sau de un alt master, în procesul de sincronizare a semnalelor de tact, care se va realiza prin operaţia AND cablat pe linia SCL.

Din punct de vedere electric, liniile SDA şi SCL sunt linii bidirecţionale legate la o sursă de tensiune pozitivă prin câte o sursă de curent sau câte o rezistenţă. Nu este obligatoriu ca sursa de tensiune să fie unică pentru întreg sistemul şi dacă există mai multe surse de tensiune nu este obligatoriu să fie de aceeaşi valoare. Asta înseamnă că la magistrala I2C pot fi conectate direct module (circuite) cu tensiuni de alimentare diferite. Când magistrala este liberă, ambele linii sunt la nivel HIGH. Circuitele de ieşire ale modulelor conectate la magistrală trebuie să fie cu colector deschis sau cu drena deschisă.

Datorită varietăţii tehnologiilor în care sunt fabricate circuitele ce se pot conecta la magistrala I2C, nivelele de tensiune pentru 0 (LOW) şi 1 (HIGH) nu sunt fixe c: depind de tensiunea de alimentare VDD.

Transferul datelor pe magistrala PC este reprezentat în fig. 7.43. El se desfăşoară conform unui protocol.

Fig. 7.43. Transferul datelor pe magistrala I2C

Pentru fiecare bit transferat este necesară generarea unui impuls de tact. Data de pe linia SDA trebuie să fie stabilă în timpul cât tactul este la nivel HIGH şi se poate modifica doar atunci când tactul, de pe linia SCL, este la nivel LOW.

Transferul începe cu faza de START. Aceasta este generată doar de un MASTER şi înseamnă o tranziţie HIGH -> LOW pe linia SDA în timp ce linia SCL este la nivel HIGH. După faza START, magistrala este ocupată. Ea devine liberă la închiderea transferului, după generarea, de către master a fazei STOR Faza STOP înseamnă o tranziţie LOW —> HIGH pe linia SDA în timp ce linia SCL este la nivel HIGH. Există şi varianta START repetat, care poate fi generată tot de un MASTER şi are acelaşi efect ca şi START.

După faza START, urmează transferul datelor pe magistrală. Acestea vor circula doar sub formă de octeţi. Numărul de octeţi ce poate fi transferat nu este limitat. Primul bit al unui octet care se transferă este cel semnificativ. Dacă un slave nu poate transfera o dată întrucât este ocupat, de exemplu achită o întrerupere internă, el va cere master-ului să intre în stări de aşteptare, forţând linia SCL în starea LOW. Slave-ul va debloca linia SCL atunci când va fi gata şi transferul va continua.

In unele cazuri, module compatibile CBUS, este permis un format diferit. Acest caz este mai rar şi nu va fi tratat aici.

Fiecare octet transferat trebuie să fie urmat de un bit de achitare. Impulsul de tact corespunzător bitului de achitare este generat de master. Transmiţătorul va trece linia SDA în HIGH în timpul impulsului de achitare ca urmare este sarcina receptorului să plaseze bitul de achitare: nivel LOW înseamnă achitare iar nivel HIGH înseamnă lipsa achitării. Asta înseamnă că slave-ul receptor a devenit ocupat, ca urmare master-ul va genera faza STOP pentru a opri transferul sau START repetat pentru a-1 reporni. Dacă

43

SCL

SDA

1 2 7 8 9 1 2 8 9

FazăSTART

FazăSTOP

Bitul cel mai semnificativ

Bitul de achitare

semnificativ

Slave-ul cere stări de asteptare

Bitul de achitare

semnificativ

Page 44: Interfete Si Periferice

receptorul este master, negenerarea bitului de achitare înseamnă semnalarea sfârşitului transferului de date. Slave-ul transmiţător va trebui să elibereze linia pentru a permite master-ului să genereze faza de STOP sau de START repetat.

Intrucit magistrala I2C este de tip multi-master, este necesară operaţia de arbitrare. Aceasta se desfăşoară pe ambele linii: SCL şi SDA. Arbitrarea pe linia SCL se mai numeşte şi sincronizare şi ea va duce la obţinerea unui tact unic, pe magistrală, pornind de la tacturile modulelor de tip master. Sincronizarea tactului se realizează datorită conexiunii de tip AND cablat la linia SCL. Durata LOW a tactului este impusă de modulul cu durata LOW a tactului propriu cea mai lungă iar durata HIGH a tactului este impusă de modulul cu durata HIGH a tactului propriu cea mai scurtă, fig. 7.44.

Arbitrarea datelor, pe linia SDA, are loc atunci când linia SCL este la nivel HIGH. Un master poate porni un transfer doar atunci când magistrala este liberă. Există posibilitatea ca două sau mai multe master-uri să genereze condiţia START. Dacă 2 sau mai multe master-uri generează date, cel ce va genera nivel LOW va câştiga, fig. 7.45.

Fig. 7.44. Sincronizarea tactului

Arbitrarea are loc în mai multe momente. Primul este cel al adreselor. Apoi, dacă mai multe master-uri adresează acelaşi modul slave, arbitrarea va avea loc prin compararea biţilor de date dacă sunt master-transmiţători sau a biţilor de achitare dacă sunt master-receptori. întrucât atât adresele cât şi datele care circulă pe magistrală sunt cele ale master-ului câştigător, nu se pierde informaţie în timpul operaţiei de arbitrare.

Dacă un master care are şi o funcţie de slave pierde arbitrarea în timpul adresării, va trebui să treacă imediat în starea de slave întrucât este posibil ca master-ul câştigător să încerce să îl adreseze.

Fiecare modul conectat la magistrala I2C are o adresă proprie. Atunci când un MASTER doreşte să comunice cu un SLAVE îi va plasa adresa pe linia SDA, după faza de START. Există 3 tipuri de adrese: pe 7 biţi, pe 10 biţi şi de tip "general call".

Fig. 7.45. Sincronizarea datelorFormatul pe 7 biţi este cel mai vechi. După faza START, master-ul va trimite

adresa slave-ului sub forma unui octet din care primii 7 biţi sunt adresa efectivă iar al 8-44

CLK 1

CLK 2

SLK

SCL

DATA1

DATA2

SDA

fazaSTART

Page 45: Interfete Si Periferice

lea bit are semnificaţia de direcţie, R//W: 0 înseamnă transmisie, /WR iar 1 înseamnă o citire, /RD. Figura 7.46 prezintă formatul unui transfer, de la un master transmiţător la un slave receptor, cu observaţia că mai există şi alte formate posibile.

Fig. 7.46. Transfer de la un master transmitator la un slave receptorcu adresă pe 7 biţi

Atunci când se trimite o adresă, fiecare modul compară propria adresă cu cea de pe linie şi, dacă o întâlneşte, se consideră adresat ca un slave receptor sau ca un slave transmiţător.

Alocarea adreselor este controlată de un comitet. Multe adrese sunt rezervate.Adresarea pe 10 biţi a fost definită de versiunea 2.0 a specificaţiilor magistralei

PC şi ea a apărut datorită creşterii semnificative a circuitelor şi modulelor compatibile PC dublată de faptul că din combinaţiile de adrese pe 7 biţi, 112 erau reţinute sau folosite în cazuri particulare.

Adresarea pe 10 biţi este compatibilă şi poate fi combinată cu adresarea pe 7 biţi. Module cu adrese pe 7 sau 10 biţi pot coexista în acelaşi sistem. Adresarea pe 10 biţi nu afectează adresele pe 7 biţi alocate.

Adresarea pe 10 biţi foloseşte combinaţia 1111 XXX pentru primii 7 biţi ai octetului care urmează după faza START sau START repetat. Mai exact, sunt folosite doar combinaţiile de tipul 11110XX, restul de 4 combinaţii fiind rezervate pentru îmbunătăţiri ulterioare.

Adresa pe 10 biţi este formată din primii 2 octeţi care urmează după faza de START sau START repetat. Primii 7 biţi ai primului octet sunt combinaţia 11110XX din care ultimele 2 ranguri, XX, sunt rangurile cele mai semnificative din adresa pe 10 biţi. Urmează rangul al 8-lea cu valoarea 0 şi al doilea octet al adresei. în continuare, dacă transferul este scriere de la master la slave, urmează datele iar dacă transferul este citire de la slave la master urmează retrimiterea primului octet, în care al 8-lea bit va avea valoarea 1, după care master-ul aşteaptă datele de la slave. Figura 7.47 arată formatul transferului de la un master transmiţător la un slave receptor iar figura 7.48 arată formatul transferului de la un slave transmiţător la un master receptor. Sunt posibile şi formate combinate.

Adresa de tip "general call" se foloseşte pentru a adresa, de către un master, toate celelalte module conectate la magistrală. Există facilitatea ca un modul să ignore acest tip de adresare. Acestui format de adresă îi corespunde o anume combinaţie din cele definite de primii 7 biţi de după faza START sau START repetat şi anume 0000000.

45

START*

Adresă * slave

__R/W

*A Data

*Data

*A

__A STOP

*

Transfer de la master la slave

Transfer de la slave la master

__ A achitare: A neachitare

*

0=scriere

START*

Adresă * slave A1

Adresă salveoctet 2

*

A 2R/W*

DATA*

A STOP*

A

Transfer de la slave la master

* Transfer de la master la slave

A, A1, A2: achitare ; A: neachitare

0

Page 46: Interfete Si Periferice

Fig. 7.47. Transfer de la un master transmiţător la un slave receptor cu adresă pe 10 biţi

Fig. 7.48. Transfer de la un slave receptor la un master transmiţător cu adresă pe 10 biţi

Dacă un slave acceptă transferul cu acest format de adresare, el va emite o achitare şi se va comporta ca un slave. Dacă nu acceptă transferul, nu va emite achitarea. Al doilea octet al adresei de tip "general call" va indica operaţia ce se va efectua în continuare. Dacă slave-ul este cu adresare pe 10 biţi, atunci după primul octet de tip "general call", dacă este acceptat, vor urma alţi 2 octeţi care constituie adresa pe 10 biţi şi în continuare urmează transferul de date.Versiunea 2.0 a specificaţiilor magistralei 12C defineşte 3 moduri de lucru:• Standard, cu viteze de până la 110 kbiţi/ sec,• Fast, cu viteze de până la 400 kbiţi/ sec şi -• High-speed, cu viteze de până la 3,4 Mbiţi/ sec.

Viteza mai mare este asigurată de etajele de ieşire, mai rapide la modurile Fast şi High-speed. Restul, adică protocolul, formatul transferurilor, nivelele logice şi încărcarea maximă capacitivă admisă pentru liniile SCL şi SDA sunt aceleaşi la toate modurile.

Noile module slave care pot lucra în modurile Fast şi High-speed, admit ambele variante de adresare: cu 7 biţi şi cu 10 biţi. Compatibilitatea este doar de sus în jos în sensul că un modul care poate lucra într-un mod mai rapid poate lucra şi în modurile mai lente dar nu şi invers. Există posibilitatea ca în cadrul aceluiaşi sistem să fie conectate module care lucrează în moduri diferite. Ca urmare, în diferite zone ale sistemului, transferurile se vor face cu viteze diferite. Intre zonele cu viteze diferite vor fi necesare aşa numitele "poduri de interconectare" care separă părţile din magistrală care au viteze diferite şi asigură transferurile între acestea.

Magistrala I2C permite conectarea circuitelor realizate în diferite tehnologii. Acestea pot avea tensiuni de alimentare diferite. Pentru a permite conectarea lor la aceeaşi magistrală I2C vor fi necesare circuitele cu rol de translatoare de nivel. Un asemenea circuit are două roluri:• protejează zona cu tensiune de alimentare mai mică faţă de cea cu tensiune de alimentare mai mare şi• protejează o zonă nealimentată de celelalte la care s-au aplicat tensiunile de alimentare.

46

START*

Adresă slaveoctet 1

*

A1Adresă

salveoctet 2

*

A 2R/W*

DATA* A

STOP*

A

0

START rep.

*

DATA*

Adresă slaveoctet 1

*

A 3

1

R/W*

Page 47: Interfete Si Periferice

Translatoarele de nivel pot sau nu să coincidă cu "podurile de interconectare", prezentate la sistemele cu viteze diferite, în funcţie de complexitatea lor. Figura 7.49 prezintă o magistrală I2C în care există zone cu tensiuni de alimentare diferite.

In acest fel magistrala I2C se adaptează la circuitele mai noi, cu tensiuni de alimentare mai mici.

Fig. 7.49. Conectarea modulelor cu tensiuni de alimentare diferite la o magistrală I2C

7.2.6. Portul serie al calculatorului PC

Portul serie al calculatorului PC este alcătuit din circuitul specializat pentru comunicarea serială, circuitele translatoare de nivele de tensiune, conectorul aflat pe carcasa calculatorului, în spate, şi rutinele de bază specifice. Transferul serie realizat de PC este de tip asincron, bidirecţional, conform standardului RS232.

Portul serie a apărut o dată cu apariţia PC-ului, 1981, înaintea portului paralel şi, iniţial, a fost folosit pentru cuplarea calculatorului cu terminale aflate la distanţă.

Utilizarea portului serie s-a intensificat semnificativ la apariţia şi răspândirea Internetului. Pentru realizarea transferurilor s-au folosit liniile telefonice iar pentru conectarea unui port serie la liniile telefonice a fost necesar un echipament numit MODEM. Actualmente există două tipuri de MODEM-uri: interne şi externe. Cele interne se află pe o placă de extensie care se introduce în interiorul calculatorului şi permit conectarea directă a calculatorului la liniile seriale. Cele externe sunt dispozitive de sine-stătătoarea care trebuiesc legate cu un cablu specific la conectorul portului serie al calculatorului. Cele mai răspândite sunt cele interne. Majoritatea MODEM-urilor au şi funcţie de fax.

Există şi echipamente periferice care lucrează pe linii seriale, de exemplu: mouse-ul, tastatura etc.

Există două tipuri de circuite specializate pentru transferurile serie: de tip USART (Universal Synchronons Asynchronons Receiver Transmitter) şi cele de tip UART. La PC, circuitul este de tip UART şi face parte din aşa numita familie a circuitului 8250.

Circuitele pentru translatarea nivelelor de tensiune asigură translatarea nivelelor TTL, ale circuitului UART în nivele EIA, pe liniile seriale. Soluţia cea mai răspândită este cea cu circuitul 232.

Conectorul portului serie este de tip tată şi se prezintă în 2 variante: conector de tip D cu 25 pini şi conector de tip D cu 9 pini. Conectorul cu 25 pini este conform cu standardul RS232 şi a fost folosit la calculatoarele mai vechi. In ultima perioadă se

47

ModulI2C

3,3V

ModulI2C

3,3V

ModulI2C5V

ModulI2C5V

TN

TN

R R R R

VDD=3,3V

SDA1

SCL1

SDA2

VDD=5V

SCL2

TN: translator de nivel

Page 48: Interfete Si Periferice

preferă conectorul cu 9 pini care este mai mic şi mai ieftin dar se pot întâlni şi calculatoare noi având conector cu 25 pini. Configuraţia semnalelor la cei doi conectori a fost prezentată în tabelul 2.2.

Adresele de port şi întreruperile

Un calculator poate avea mai multe porturi seriale (maxim 4). Ele au fost denumite de BIOS, COM1, COM2, COM3 şi COM4. Tab. 7.27 prezintă adresele de port standard, la care pot fi găsite aceste porturi şi întreruperile utilizate.

Port serial Adresă de bază Linie IRQCOM1 3F8H 4

COM2 2F8H 3

COM3 3E8H 4COM4 2E8H 3

Tabelul 7.27. Adresele de bază şi întreruperile porturilor serie

Aceste caracteristici nu sunt respectate la varianta IBM PS/2 construită în jurul magistralei Microchannel. întrucât numărul de porturi seriale implementate la un PC variază trebuie să existe o posibilitate de a afla câte sunt implementate şi unde se află.

întocmai ca şi în cazul portului paralel, adresele de bază pentru porturile serie existente ale unui PC pot fi găsite în zona de date BIOS, la adresele indicate în tabelul 7.28.Adresă Semnificaţie0000: 0400 Adresă de bază port COM10000: 0402 Adresă de bază port COM20000: 0404 Adresă de bază port COM30000: 0406 Adresă de bază port COM4

Tabelul 7.28. Adresele unde se află adresele de bază ale porturilor serie

Circuite UART

Circuitul UART este cel care determină performanţele portului serie. De la apariţia PC-urilor au fost folosite mai multe circuite UART din aşa numita familie a circuitului 8250 şi sunt compatibile cu variantele anterioare. La calculatoarele actuale există circuite specializate pentru intrări / ieşiri, puternice, cu un grad mare de integrare, care includ unul sau două circuite UART, circuitul specializat pentru interfaţă paralelă, circuitele specializate pentru discul flexibil şi harddisk etc. Există mai multe firme care produc asemenea circuite şi pentru programarea lor se recomandă studiul documentaţiei tehnice specifice.

Viteza maximă a majorităţii UART-urilor folosite în PC este de 115200 bps, mai rar 230400 bps şi şi mai rar 460800 bps.

Există două metode pentru a asigura comunicarea UC - UART: fie prin citirea stării circuitului UART ("polling"), fie prin întreruperi. Prima soluţie foloseşte intens procesorul care va citi, periodic, starea UART-ului şi, din acest motiv, este mai lentă. Viteza până la care se poate folosi, fără a apare eroare de ritm, este dependentă de procesor, de placa de bază (câtă memorie cache există) şi de program. Orientativ, se poate afirma că metoda poate fi folosită până la viteza de 38400 bps, fără erori de ritm,

48

Page 49: Interfete Si Periferice

la nivelul unui procesor Pentium II. A doua metodă permite lucrul la viteza maximă de 115200 bps chiar dacă procesorul este mai puţin performant.

Circuitele UART folosite în PC-uri au fost:• 8250: este primul circuit din familie şi a fost folosit în varianta XT a PC-ului. Nu poate fi folosit la PC-urile de tip AT şi următoarele, din motive de viteză.• 8250B: este o variantă mai lentă a lui 8250 folosit tot la nivelul calculatorului PC - XT.• 8250A: este o variantă mai rapidă a lui 8250. De asemenea, nu poate fi folosit în PC-uri AT şi următoarele.• 16450: este un UART mai rapid, folosit în PC-urile de tip AT. Poate fi folosit şi în PC-urile de azi, la viteze, însă, mai mici. Poate fi găsit în multe PC-uri de azi. Programele de verificare a porturilor seriale nu pot face distincţie între 16450 şi 8250A.• 16550: este un UART puţin folosit. Este primul UART cu tampoane, cu dimensiunea de 16 octeţi, dar acestea nu au putut să fie folosite de partea de programe.• 16550A: este circuitul UART cel mai răspândit. Are tampoane FIFO de 16 biţi care pot fi folosite, poate transfera date în mod DMA şi poate lucra la viteze mai mari decât variantele anterioare. Circuitul este compatibil, din punct de vedere al terminalelor, cu circuitul 8250A şi 16450 ca urmare porturilor seriale mai vechi, bazate pe aceste circuite, li se pot mări performantele înlocuind UART-ul vechi cu UART-ul 16550A. Totuşi el introduce două noi semnale, dar pe terminale nefolosite de 8250A şi 16450, care au semnificaţii la transferurile prin DMA. Există două variante ale transferului DMA: transfer singular sau transfer multiplu.• 16650: este un circuit mai performant decât anteriorul: are tampoane pe 32 biţi, control automat al fluxului şi sistem de gestiune al consumului. Din păcate, circuitul nu este total compatibil cu 16550A, ca urmare o parte din programe nu pot fi folosite. Acest dezavantaj a limitat utilizarea sa.• 16750: este un circuit UART, produs de Texas Instruments, performant, total compatibil cu 16550A dar semnificativ mai rapid decât acesta. Are tampoane FIFO pe 64 biţi şi control automat al fluxului.

Toate circuitele UART lucrează cu nivele TTL şi au conectat un cuarţ cu frecvenţa de 1,8432 MHz, 7,3728 MHz sau 18,432 MHz.

Figura 7.50 prezintă configuraţia terminalelor şi schema bloc la circuitul UART 16550A, iar tabelul 7.29 prezintă semnificaţiile terminalelor. Figura 7.51 prezintă modul de conectare al circuitului 16550A într-o structură minimă.

49

1 40

20

D0

21

D1

D3D4D5D6

D2

D7RCLK

SINSOUT

CS1CS0

/CS2/BAUDOUT

XINXOUT

/WRWRVSS

16550A

VDD

/RI

/DSR/CTSMR/OUT1

/DCD

/DTR/RTS/OUT2INTR

A0/RxRDY

A1A2/ADS/TxRDYDDISRD/RD

Fig. 7.50. Configuraţiaterminalelor la circuitul

16550A

Page 50: Interfete Si Periferice

Terminal Semnal Semnificaţie1-8 D0-D7 Magistrala de date9 RCLR Tact recepţie. Frecvenţa semnalului la această intrare trebuiesă fie:

viteza de transfer pe linie x 1610 SIN Recepţie date ("Serial Input")11 SOUT Transmisie date ("Serial Output")12 CSO Chip select 0, activ la 113 CS1 Chip select 1, activ la 114 /CS2 Chip select 2, activ la 015 /DAUDOUT Ieşire a generatorului de viteză de transfer. Frecvenţa semnalului:

viteza de transfer pe linie x 1616 XIN Intrare pentru cristalul de cuarţ17 XOUT Ieşire la care se conectează cristalul de cuarţ18 /WR Semnal de comandă pentru scriere în circuit de la UC19 WR Idem ca la 18 dar semnalul este inversat20 Vss Masă electrică21 RD Idem ca la 22 dar semnalul este inversat22 /RD Semnal de comandă pentru citire de la circuit de către UC23 DDIS Dezactivare driver. Devine 0 atunci când UC citeşte de la UART.

Poate fi folosit pentru a comanda circuite separatoare de pe magistrala de date (Bus Tranceivers)

24 /TxRDY Semnal prin care UART cere date de la UC25 /ADS Address Strobe. Este folosit doar dacă adresele nu sunt stabile în

ciclurile de citire sau scriere26 A2 Rang de adresă27 A1 Rang de adresă28 A0 Rang de adresă29 /RxRDY Semnal prin care UART îi comunică UC-ului că are date pentru el.30 INTR Ieşire pentru cerere de întrerupere31 /OUT2 Ieşire utilizator32 /RTS Request to Send33 /STR Data Terminal Ready34 /OUT1 Ieşire utilizator35 MR Master Reset36 /CTS Clear to Send37 /DSR Data Carrier Ready38 /DCD Data Carrier Detect39 /RI Ring Indicator40 Vdd +5V

Tabelul 7.29. Semnificatiile terminalelor circuitului 16550A

50

D0-7

RD

“1”

/CSI

RCLK

SINSOUT

CS1CS0/CS2

/BAUDOUT

XIN

XOUT

/WR

WR

UART

/RI

/DSR

/CTS

MR

Mag.deI/E

/DCD

/DTR

/RTS

INTR

A0

/RxRDY

A1A2

/ADS

/TxRDY

RS232

/RD

Fig. 7.51. Conectarea circuitului 16550A la

magistrala de I/E

Circuite

de

translatare

TTL< >EIA

II

II

II

“0”

Page 51: Interfete Si Periferice

Registrele portului serie

Intreaga activitate a portului serie este controlată prin registre. Acestea se găsesc în cadrul UART-ului. Tabelul 7.30 prezintă aceste registre.

Nume registru Adresa de port DLAB DirectieTransmitter Holding RegisterReceiver RegisterDivisor Latch Low Byte

Bază + 0Bază + 0Bază + 0

001

ScriereCitireCitire / Scriere

Interrupt Enable Register (IER)Divisor Latch High Byte

Bază + 1Bază + 1

01

Citire / ScriereCitire / Scriere

Interrupt Identification Register (IIR)FIFO Control Register (FCR)

Bază + 2 Bază + 2

--

CitireScriere

Line Control Register (LCR) Bază + 3 - Citire / ScriereModem Control Register (MCR) Bază + 4 - Citire / ScriereLine Status Register (LSR) Bază + 5 - CitireModem Status Register (MSR) Bază + 6 - CitireScratch Register Bază + 7 - Citire / Scriere

Tabelul 7.30. Registrele portului serie

Deşi există 12 registre, ele utilizează doar 8 adrese de port. Aceasta este posibil prin intermediul rangului DLAB (''Divisor Latch Access Bit"), rang al registrului Line Control Register. Dacă DLAB are valori diferite atunci unele adrese de port vor fi utilizate de câte două registre. Astfel dacă DLAB = 1 atunci vor fi disponibile 2 registre pentru a seta viteza de comunicare. Justificarea existenţei lor va fi prezentată în continuare.Circuitul UART este conectat la un cuarţ cu frecvenţa de 1,8432 MHz, 7,3728 MHz sau 18,432 MHz. Aceste frecvenţe sunt divizate intern şi rezultă o viteză maximă de transfer.pentru UART, de 115 200 bps. Este o viteză relativ mare care nu este suportată de toate modemurile şi alte echipamente şi, ca urmare, circuitul UART dispune de un generator programabil de rată de transfer, controlabil prin intermediul a două registre. Acestea vor memora constanta de divizare, la care se împarte rata maximă de 115200 bps. Constanta este o valoare pe 16 biţi şi, întrucât circuitul UART are o magistrală de date doar de 8 biţi, vor fi necesare 2 registre pentru a o memora. Ele se află la adresele Bază + 0 şi Bază + 1, atunci când DLAB = 1. Tabelul 7.31 prezintă câteva rate de transfer uzuale şi constantele de divizare corespunzătoare.

Rată de Transfer Constantă de * divizare (octetsuperior)

Constantă de *divizare (octetinferior)

Constantă de * divizare(zecimal)

Constantă de +

divizare(zecimal)

50 09H 00H 2304 9216110 04H 17H 1047 4188300 01H 90H 384 1536600 00H C0H 192 7681200 00H 60H 96 3842400 00H 30H 48 1924800 00H 18H 24 969600 00H 0CH 12 4819200 00H 06H 6 2438400 00H 03H 3 1257600 00H 02H 2 8115200 00H 01H 1 4230400 - - - 2460800 - - - 1*pentru cuarţ de 1,8432 MHz+pentru cuarţ de 7,3728 MHz

Tabelul 7.31. Rate de transfer uzuale şi constantele de divizare corespunzătoare

51

Page 52: Interfete Si Periferice

Transmitter Holding RegisterEste alcătuit din două registre: Transmit Hold Register (THR) şi Transmit Shift

Register (TSR). Atunci când procesorul trimite o dată către UART aceasta se încarcă în THR. Dacă TSR este liber, conţinutul lui THR se transferă în TSR şi se activează la 1 un rang în Line Status Register prin care UART cere o altă dată de la procesor. Data din TSR este serializată şi trimisă pe linie.

Receiver RegisterEste registrul în care UART asamblează data primită de pe linie. Atunci când

registrul este plin, se activează, la 1, un rang din Line Status Register prin care UART anunţă procesorul că are o dată pentru el.

Interrupt Enable Register (IER)Este un registru pentru validarea sau mascarea cererilor de întrerupere precum şi

pentru comanda UART-ului 16750.Structura sa este:

• 7-6: rezervat• 5: validare mod Low Power, la 16750• 4: validare mod Sleep, la 16750• 3: validare cerere de întrerupere de la modem (Modem Status Register)• 2: validare cerere de întrerupere de stare care apar atunci când la recepţie au apărut erori (Line Status Register)• 1: validare cerere de întrerupere atunci când tamponul la transmisie, sau doar registrul THR, este gol• 0: validare cerere de întrerupere la recepţie, atunci când tamponul la recepţie, sau doar Receiver Register, este plin.

Validarea cererilor de întrerupere este 1 în rangul respectiv iar mascarea lor, înseamnă 0 în rangul respectiv.

Interrupt Identification RegisterAcest registru, doar cu citire, permite citirea stării tampoanelor de tip FIFO

precum şi determinarea sursei de cerere de întrerupere. UART prioritizează intern cererile de întrerupere şi indică doar cererea de întrerupere activată cea mai prioritară. Rangul 0 arată dacă mai sunt cereri de întrerupere în aşteptare, după tratarea celei mai prioritare.

Structura registrului este următoarea:• 7 - 6: 00: nu sunt tampoane FIFO;

01: sunt tampoane FIFO dar nu pot fi utilizate;11: sunt tampoane FIFO şi pot fi utilizate;

• 5: sunt tampoane FIFO de 64 octeţi şi pot fi utilizate (pentru 16750)• 4: rezervat• 3: Received Data TimeOut; are semnificaţie doar când UART lucrează în modul FIFOşi se activează atunci când data nu se încarcă în tamponul FIFO cu rata programată• 2 - 1: indică sursa cererii de întrerupere cea mai prioritară, activă;

11: cerere de întrerupere de stare (de la Line Status Register)10: cerere de întrerupere la recepţie dacă bit 3=0 sau cerere de

întrerupere la recepţie Time Out dacă bit 3 = 101: cerere de întrerupere la transmisie 00: cerere de întrerupere de la modem

• 0: 0: o cerere de întrerupere este în aşteptare1: nu există cerere de întrerupere în aşteptare

52

Page 53: Interfete Si Periferice

FIFO Control RegisterAcest registru, doar cu scriere, controlează tampoanele FIFO din circuitele UART

16550 şi cele care i-au urmat. Structura sa este următoarea:• 7-6: setează nivelul la care se va genera o cerere de întrerupere la recepţie:

00: 1 octet01: 4 octeţi10: 8 octeţi11:14 octeţi. Dacă de exemplu nivelul este setat la 8 octeţi atunci se va

genera o cerere de întrerupere la recepţie atunci când în tamponul FIFO s-aurecepţionat 8 octeţi.• 5: validează tampoanele de 64 octeţi (doar la 16750)• 4: rezervat• 3: selectează modul DMA (la UART-urile la care există)• 2: şterge tampoane FIFO la transmisie; atunci când este setat şterge conţinutul tamponului FIFO dar nu şi ale registrului TSR• 1: şterge tampoane FIFO la recepţie; rangurile 1 şi 2 se autoresetează la sfârşitul operaţiei.• 0: validare/ invalidare a tampoanelor FIFO; dacă se doreşte validarea tampoanelor FIFO, aceasta trebuie setată înaintea fixării nivelului pentru cererea de întrerupere la recepţie.

Dacă UART-ul dispune de mod DMA, atunci rangul 3 setează modul de lucru: 0 sau 1. Mod 0 înseamnă transfer singular şi terminalele RxRDY şi TxRDY se vor activa atunci când s-a primit un octet de pe linie, respectiv s-a transferat un octet pe linie. Mod 1 înseamnă transfer multiplu, adică terminalul RxRDY se va activa atunci când s-a atins nivelul stabilit prin rangurile 6,7 sau când apare situaţia de TimeOut iar terminalul TxRDY se va activa atunci când tamponul FIFO de transmisie are cel puţin o locaţie liberă.

Line Control RegisterEste registrul care selectează caracteristicile de bază ale transferului asincron.

Structura sa este următoarea:• 7: DLAB: 0: registre de lucru;

1: registre de divizare;• 6: 0: transmisie normală

1: forţare BREAK;• 5-3: paritatea, după cum urmează:

x x 0 - fară paritate; 0 0 1 - paritate impară;0 1 1 - paritate pară; 1 0 1 - paritate 1;1 1 1 - paritate 0.

• 2: biţi de STOP: 0: 1 bit de STOP 1: 2 biţi de STOP pentru caracter pe 6, 7 sau 8 biţi şi 1,5 biţi de

STOP pentru caracter pe 1,5 biţi.• 1-0: lungimea caracterului: 00-5 biţi;

01-6 biţi; 10-7 biţi; 11-8 biţi.

Modem Control RegisterPermite controlul transferului cu MODEM-ul sau cu un alt echipament, utilizându-

se dialog hardware.• 7-6: rezervate

53

Page 54: Interfete Si Periferice

• 5: validare control automat al fluxului (doar la 16750)• 4: validare mod Loopback. In acest mod terminalul de transmisie date este la nivel 1 (inactiv) iar terminalul de recepţie este dezactivat. Sunt dezactivate şi DSR, CTS, Rî şi DCD. Intern, transmisia date este conectată la recepţie date iar DTR, RTS, OUT1 şi OUT2 sunt conectate la intrările de control ale modemului. Ca urmare, data care se trimite se şi recepţionează, la nivelul aceluiaşi circuit. Se pot folosi şi întreruperile. Modul foloseşte la verificarea circuitului UART, fără a fi necesară scoaterea sa din sistem.• 3: OUT2: poate fi folosit la întreruperi; dacă este folosit, atunci:1 - întreruperile generate de UART sunt transferate la circuitul specializatpentru întreruperi; 0 - linia de întrerupere este trecută în a 3-a stare.• 2: OUTl: poate fi folosit pentru validarea/invalidarea unui port în cazul unei plăci seriale multiport; de obicei este nefolosit şi programat la 1;• 1: comandă direct terminalul /RTS;• 0: comandă direct terminalul /DTR.Line Status Register

Este un registru doar cu citire, util atunci când comunicarea UART - UC se face prin program ("polling") şi pentru a detecta diferite erori ce pot apare în timpul transferului. Structura registrului este următoarea:• 7: se activează dacă a apărut cel puţin o eroare de tip break, paritate sau cadrare la recepţia unui octet în tamponul FIFO;• 6: se activează atunci când Transmit Hold Register şi Transmit Shift Register sunt goale; asta înseamnă că linia este în stare inactivă;• 5: se activează atunci când doar Transmit Hold Register este gol; pe linie se trimite caracterul din Transmit Shift Register; UC poate trimite o dată către UART când sesizează activarea oricăruia din rangurile 5 sau 6 (5 se va activa înaintea lui 6).• 4: este activat atunci când receptorul a sesizat o eroare de break;• 3: indică (atunci când estel) eroare de cadrare;• 2: indică (atunci când este 1) eroare de paritate;• 1: indică (atunci când estel) eroare de ritm;• 0: comunică UC că are o dată sau date pentru el:

0: nu există dată în Receiver Register sau FIFO;1: există o dată în Receiver Register sau date în FIFO.

Modem Status RegisterEste un registru care indică starea liniilor folosite la comunicarea cu MODEM-ul.

Structura sa este următoarea:• 7: indică starea terminalului /DCD• 6: indică starea terminalului /RI• 5: indică starea terminalului /DSR• 4: indică starea terminalului /CTS• 3: se activează dacă a apărut o modificare pe linia /DCD, de la ultima citire a registrului• 2: se activează dacă a apărut o tranziţie LOW -» HIGH pe linia /RI• 1: se activează dacă a apărut vreo modificare pe linia /DSR, de la ultima citire a registrului• 0: se activează dacă a apărut o modificare pe linia /CTS, de la ultima citire a registrului.Dacă s-a setat modul LoopBack, atunci rangul 4 indică starea lui RTS, rangul 5 arată starea lui DTR, rangul 6 arată starea lui OUTl iar rangul 7 arată starea lui OUT2.Scratch Register

Este un registru care nu intervine în comunicare şi poate fi folosit de utilizator. El există doar la UART-urile 16450 şi următoarele, ca urmare poate fi folosit pentru a detecta dacă UART-ul dintr-un calculator este de tip 8250/ 8250B, adică înaintea lui 16450, sau de alt tip.

54

Page 55: Interfete Si Periferice

Există aplicaţii în care acest registru este folosit. Astfel în cazul unor adaptoare seriale pentru interfeţe RS232, RS422 şi RS485 poate fi folosit la validarea unor separatoare de pe magistrala de date iar în cazul unor adaptoare seriale multiport, poate fi folosit la gestionarea cererilor de întrerupere.

7.2.6.4. Utilizarea portului serie prin intermediul BlOS-ului

Accesul la portul serie prin intermediul BlOS-ului se poate face utilizând întrerupere software INT 14H. Tabelul 7.32 prezintă funcţiile BIOS pentru portul serie.

Nume funcţie Combinaţie în AH

Descriere

Iniţializare interfaţa serială

00H Stabileşte caracteristicile generale ale transferurilor. Registrul DX conţine numărul interfeţei seriale iar registrul AL conţine codificarea caracteristicilor:• biţii 7-5: viteza de transmisie' 000 - 110 biţi/sec 001 - 150 biţi/sec 010 - 300 biţi/sec 011 - 600 biţi/sec 100 - 1200 biţi/sec 101 - 2400 biţi/sec 110 - 4800 biţi/sec 111 - 9600 biţi/sec• biţii 4,3: paritate xO - fără paritate 01 - paritate impară 11 - paritate pară• bit 2: biţi de STOP 0 - 1 bit de STOP 1 - 2 biţi de STOP• biţi 1,0: lungime caracter 10-7 biţi 11 -8 biţi

Transmisie caracter

01H Transmite un caracter pe linia serială. Registrul DX conţine numărul interfeţei seriale iar registrul AL conţine octetul care se transmite. Dacă nu s-a putut face transmiterea caracterului, la revenirea din rutină, rangul 7 din AH va fi 1. Restul de ranguri din AH indică starea interfeţei seriale înainte de transmiterea octetului. Structura lui AH este aceeaşi cu cea de la funcţia 03H.

Recepţie caracter

02H Registrul DX conţine numărul interfeţei seriale utilizate. După execuţia rutinei, în AL se va obţine caracterul recepţionat iar în AH se va indica modul în care s-a realizat transferul (dacă au apărut sau nu erori). Structura lui AH este aceeaşi cu cea de la funcţia 03H.

Citire stare 03H Registrul DX conţine numărul interfeţei seriale utilizate. După execuţia rutinei, AX va conţine codificarea stării:• bit 7: timeout• bit 6: registrul de serializare (Transmit Shift Register) este liber• bit 5: registrul pentru data de transmis (Transmit Hold Register) este liber• bit 4: indică apariţia unei erori de tip break• bit 3: indică apariţia unei erori de cadrare• bit 2: indică apariţia unei erori de paritate• bit 1: indică apariţia unei erori de ritm• bit 0: s-a asamblat un caracter de pe linie şi poate fi predat procesorului

Tabelul 7.32. Funcţiile BIOS ale portului serial

55

Page 56: Interfete Si Periferice

7.3. Portul USB

USB ("Universal Serial Bus") este o interfaţă şi magistrală pentru conectarea periferiei la calculatorul PC. Ea urmăreşte înlocuirea porturilor serie şi paralel precum şi a interfeţelor pentru tastatură, mouse şi joystick şi stabilirea unei interfeţe unice pentru conectarea periferiei la PC, inclusiv cea pentru comunicaţii.

7.3.1. Stadiu! actual al conectării periferiei Ia calculatorul PC

Modalitatea clasică de conectare a periferiei la PC corespunde arhitecturii originale IBM PC din 1981. Caracteristicile acestei conectări sunt:a) Fiecare interfaţă a unui periferic este mapată direct în spaţiul de intrare/ ieşire al procesorului, ocupând un număr de adrese de port, o linie pentru cereri de întrerupere, IRQ şi eventual, un canal DMA. Datorită resurselor limitate ale calculatorului, această situaţie poate duce la conflicte. Există linii de întrerupere folosite în comun de mai multe echipamente ceea ce poate duce la nefuncţionarea calculatorului.b) Fiecare periferic are cuple care pot să difere de ale celorlalte periferice, rezultând o diversitate de cuple şi cabluri ceea ce înseamnă cost ridicat la nivelul utilizatorului.c) în configuraţia actuală, fără USB, procesorul detectează periferia doar la pornirea sistemului. Dacă un periferic este conectat după pornirea sistemului el nu va fi recunoscut decât dacă sistemul este repornit. Conectarea şi recunoaşterea periferiei, în timpul lucrului, dacă este realizată, este doar la nivel de aplicaţie.d) Fiecare periferic are un driver propriu. Dacă sistemul de operare nu îl conţine, va fi necesară încărcarea acestuia de pe un suport extern.e) Facilitatea Plug and Play a fost gândită tocmai pentru a elimina dezavantajul de mai sus, legat de gestionarea resurselor. Ea asigură doar o gestiune automată limitată, păstrând dezavantajele datorate conectării periferiei şi a încărcării driverelor.f) Numărul de periferice ce poate fi conectat este mic. Porturile serie şi paralel, conectorul pentru joystick, tastatura, mouse-ul precum şi interfeţele care se pot conecta deschizând calculatorul şi conectându-le direct la sloturile ISA sau PCI constituie toate posibilităţile de conectare.

în concluzie, sistemul de intrare / ieşire clasic al PC-uIui se caracterizează prin resurse limitate, generând conflicte între periferice, nu permite conectare şi gestionare în timpul lucrului, costul este ridicat şi lăţimea de bandă oferită pentru unele aplicaţii, de exemplu comunicaţii telefonice, nu este suficientă.

7.3.2. Caracteristici generale ale USB

USB este o interfaţă (magistrală) care este alternativa la sistemul de intrare/ieşire descris anterior. Problemele care s-au avut în vedere la conceperea USB, au fost:• conectare facilă a cât mai multe periferice la PC;• rate de transfer medii (până la 12 Mb/ s) la un cost scăzut;• suport total pentru transferuri multimedia: voce, în timp real, audio şi video;• protocol flexibil pentru mai multe moduri de transfer;• integrare facilă în tehnologia echipamentelor periferice;• standardizare.

56

Page 57: Interfete Si Periferice

Printre avantajele pe care le asigură USB sunt:• model unic pentru cabluri şi conectori;• alocare automată de adrese către periferice;• suportă lăţimi de bandă diferite de la câţiva kb/ s la câţiva Mb/ s;• permite conectarea a până la 127 periferice;• permite conectarea perifericelor compuse (cu mai multe funcţii);• conectarea şi deconectarea periferiei la calculator se poate face în timpul funcţionării cu recunoaşterea automată a acesteia fără a fi necesară repornirea calculatorului;• detecţie şi corecţie de erori.

7.3.3. Caracteristici fizice ale USB

USB a fost introdus în 1996 şi urmăreşte standardizarea conectării periferiei la calculatorul PC. Diferite echipamente periferice se leagă în acelaşi fel, cu aceleaşi cabluri şi conectori, particularităţile fiecăruia fiind preluate de partea de software şi de conectare la magistrală. USB este o magistrală serială.

USB împarte echipamentele seriale conectabile în două clase: hub-uri şi funcţii. Un hub are conexiuni, numite porturi, unde se pot conecta funcţii. O funcţie este un echipament periferic care realizează un tip de operaţii. Exemple de funcţii sunt: tastatură, mouse, modem, imprimantă, scanner etc.

USB nu este o conexiune de tip punct la punct ci o conexiune de tip magistrală. Toate echipamentele conectate partajează aceleaşi semnale. Informaţia circulă pe magistrală sub formă de pachete, fiecare funcţie primind fiecare pachet. PC-ul accesează o anume funcţie, ataşând pachetelor care-i corespund, adresa.

Un hub oferă porturi pentru conectarea la el a mai multe funcţii. Este posibilă conectarea la un port a unui alt hub, fiind astfel permise 5 nivele. Astfel USB-ul poate fi asemuit cu o retea de tip arbore,sau stea pe mai multe nivele,in centru fiind asa numitul host,figurile 7.52,7.53.

Fiecare sistem USB are un hub central, numit host. Deşi specificaţiile prevăd unicitatea host-ului într-un sistem USB, se poate realiza un dispozitiv pentru conlucrarea

57

PC

Fig.7.52. TopologieUSB

Host(Hub Rădăcină)

FuncţieHub Hub

Funcţie Hub Funcţie Funcţie

Funcţie Funcţie

Page 58: Interfete Si Periferice

a două host-uri. Hostul este comandat de către un host controler aflat în PC. De la hub-ul prevăzut host-ului, pornesc ramurile reţelei USB.

Host-ul are următoarele responsabilităţi:• detectează conectarea şi deconectarea echipamentelor USB;• gestionează transferul datelor între PC şi echipamentul USB;• primeşte şi preia informaţie de stare de la echipamentele USB şi• furnizează alimentare echipamntelor USB conectate.

Structura unui host este dată în fig. 7.54.

58

PC

Fig.7.53. Altă reprezentare pentru o

topologie USB

Host(Hub Rădăcină)

FuncţieHub

Hub Funcţie

Funcţie Funcţie

Hub

Funcţie

Nivel 1

Nivel 2

Nivel 3

Nivel 4

Hub

Funcţie

Client SW

USB system SW

USB HostControler

Căi pentru comunicaţii

logice

Cale pentru comunicaţia

fizică

Fig. 7.54. Structura unui host USB

Page 59: Interfete Si Periferice

USB System SW conţine software-ul necesar pentru gestionarea magistralei. Acesta este conţinut de sistemul de operare al calculatorului şi este independent de echipamentele USB.

Client SW este software-ul executat la host care corespunde unui echipament USB. El este furnizat o dată cu sistemul de operare sau împreună cu echipamentul USB, ca un driver USB al acestuia.

In continuare, flexibilitatea este totală. Pot fi conectate hub-uri în hub-uri şi periferice în hub-uri fără vreo anume ordine. Softaware-ul va gestiona lanţul de periferice. întrucât fiecărei funcţii i se ataşează o adresă pe 7 biţi, rezultă un total de 127 periferice ce pot fi conectate la un host USB, una din cele 128 combinaţii fiind rezervată. Există şi o limită de distanţă între un hub şi o funcţie şi anume de 5 metri. Un hub regenerează semnalele, ca urmare distanţa între 2 nivele poate fi de 5 metri.

Conectarea într-un sistem USB nu poate fi eronată. Nu există probleme de rutare întrucât toate semnalele merg la toate echipamentele. Există doar 2 tipuri de conectori, unul pentru intrare şi unul pentru ieşire iar conectarea greşită a cablurilor nu este mecanic posibilă. Nu sunt necesare adaptoare sau alte elemente de conectare.

Host controlerul este cel care gestionează întreg sistemul USB. Periodic el interoghează toate echipamentele din sistem pentru a afla cine sunt. Apoi construieşte o hartă în care localizează fiecare echipament prin hub şi număr de porturi creând astfel câte o adresă pentru fiecare echipament.

USB cere suport software specific. Orice dispozitiv ce se poate lega la USB conţine software-ul pentru implementarea protocolului. La nivelul PC-ului, sistemul de operare este cel ce conţine software-ul specific. Este întâlnit ca o opţiune pentru Windows 95 şi în Windows 98, NT şi 2000.

Un sistem USB conţine 4 variante de conectori, 2 montate pe carcase şi 2 ataşate la capetele cablurilor. Fiecare este de 2 tipuri: A şi B.

Hubs au conectori de tip A. La capătul cablului care se introduce în cablu trebuie să fie conectorul pereche, tot de tip A. La nivelul echipamentelor şi a cablurilor care se leagă la echipamente, se află conectorii de tip B. în acest fel nu există posibilitare de a greşi. Există 2 tipuri de cablu: care are la un capăt un conector de tip A şi la celălalt un conector de tip B, cablul A -> B şi care are la ambele capete conectori de tip A, cablul A —> A. Nu este necesară existenţa tuturor celor 4 variante de conectori. Este posibil ca un echipament să aibă cablul prins de el, ca urmare conectorii de tip B nu vor exista.

Conectorii USB au 4 pini deoarece cablul USB este alcătuit din 4 fire, fig. 7.55. Două fire ale cablului transportă data, sub forma unui semnal diferenţial. In acest fel se asigură o rezistenţă mare la perturbaţii. Celelalte 2 fire sunt alimentarea: +5 V DC şi masa. în acest fel se oferă alimentare pentru toate echipamentele legate la cablu (până la 0.5 W). In plus, acestea pot avea propria sursă de tensiune.

Acest cablu permite transfer cu 2 viteze maxime: 1,5 Mb/ s şi 12 Mb/ s. Cablul pentru rata de transfer mai mare cere protecţie electromegnetică mai mare.

59

V+

Data+

Data-

Grid

V+

Data+

Data-

Grid

Fig.7.55. Cablu USB

Page 60: Interfete Si Periferice

Standardul prevede o anume culoare pentru fiecare fir. Firul +Data este verde, firul -Data este alb, +5 V DC este roşu, iar masa este negru.

Host-ul USB se leagă, prin conectori şi cabluri, la echipamentele USB. Fiecare echipament USB conţine informaţia pentru autoidentificare şi configurare. Fiecare echipament USB are o adresă care îi este alocată atunci când echipamentul este ataşat şi sesizat de un host controller. Fiecare echipament USB comunică cu host-ul prin intermediul unor canale, pentru comenzi, stări şi date.

Fig. 7.56 prezintă structura unui echipament USB.USB Bus Interface asigură interfaţa fizică la magistrală. Include serializarea şi

deserializarea informaţiei precum şi caracteristicile electrice necesare pentru conectarea la magistrală.

USB Logical Device conţine nivelul de software, la nivelul echipamentelor careimplementează protocolul USB iar Funcţia constituie nivelul software care implementează particularităţile funcţiei.

Fizic, echipamentele USB sunt hubs sau funcţii. Figura 7.57 prezintă un hub.

Hubs-urile simplifică conectarea, din punctul de vedere al utilizatorului. Un hub este un concentrator care prin Upstream port se leagă spre host iar prin porturi se leagă la alte hub-uri sau la funcţii. Un hub sesizează o conectare sau deconectare la porturile sale şi distribuie alimentare. Fiecare port poate fi validat sau invalidat individual şi poate lucra cu rată de transfer mare sau mică. Un hub separă porturile cu rată de transfer mare de cele cu rată de transfer mică.

Un hub are 2 părţi: un Hub Controller şi un Hub Repeater. Hub Repeater-ul este de fapt, un comutator controlat printr-un protocol, între UpStream port şi celelalte porturi (denumite downstream ports). Dispune şi de suport hardware pentru reset şi

60

Funcţie

USB Local Device

USB Bus Interface

Căi pentru comunicaţii

logice

Cale pentru comunicaţia

fizică

Fig. 7.56. Structura unui echipament USB

Port 1Port 2Port 3

Port 4

Port 5 Port 6 Port 7

Upstream port Fig. 7.57. Un hub USB

Page 61: Interfete Si Periferice

suspendare / continuare a transferului. Hub Controller conţine setul de registre care asigură comunicarea cu host-ul. Există comenzi specifice pentru control şi stare prin care host-ul poate configura un hub şi poate monitoriza şi controla porturile sale. Figura 7.58 prezintă un exemplu de structură USB în care se evidenţiază poziţia şi rolul hub-ului.

Celălalt tip de echipament USB este alcătuit din funcţii. Aceasta este capabilă să trimită sau să primească informaţii de date şi control pe magistrală. O funcţie poate fi implementată printr-un periferic cu un cablu care se conectează într-un port al unui hub sau printr-un ansamblu care constituie un "embedded" hub împreună cu mai multe periferice. "Embedded" hub-ul se leagă cu un cablu la un alt hub. Acest ansamblu se numeşte periferic compus.

Fiecare funcţie conţine informaţie de configurare care descrie posibilităţile sale şi cerinţele de resurse. înainte ca o funcţie să fie utilizată, este necesară configurarea sa de către host. Configurarea constă în alocarea de lăţime de bandă şi selectarea unor funcţii specifice.

61

PCHost / Hub Rădăcină

Hub

Hub

Scanner

Funcţie

MonitorHub / Funcţie

Fig. 7.58. Structură tipicăUSB

TastaturăHub / Funcţie

Cameră TV

Funcţie

Microfon

Funcţie

Mouse

Funcţie

Difuzoare

Funcţie