În cadrul acestei lucrări se urmărește prezentarea interfeței paralele și a circuitului specializat programabil Z80 PIO, precum și modul de implementare a unui protocol CENTRONIX între un sistem cu microprocesorul Z80 și o imprimantă cu ace.
Prin interfața paralelă se înțelege totalitatea circuitelor electronice și a programelor necesare pentru a realiza transfer de informații simultan pe mai multe linii. Informațiile ce se transferă sunt însoțite întotdeauna de cel puțin un semnal de control și comandă. Există întotdeauna și un răspuns din partea perifericului cu care se desfășoară comunicația.
Există circuite programabile specializate cu ajutorul cărora se poate implementa în mod destul de simplu o interfață paralelă. Un astfel de circuit este Z80 PIO. Z80 PIO are două canale bidirecționale independente A și B, care dispun fiecare de opt linii de date bidirecționale și două linii de conversație, care controlează transferul de date.
Circuitul Z80 PIO poate funcționa în patru moduri:
Circuitul Z80 PIO conține o interfață pentru magistrala unității centrale, o parte logică internă de control, logica de intrare/ieșire pentru portul A și pentru portul B și logica de control a întreruperilor (figura 6.1).
Fiecare port are registre de intrare și de ieșire și o logică de control a conversației. Transferurile de date între dispozitivul periferic și CPU utilizează registrele de intrare și de ieșire a datelor. Logica de conversație asociată fiecărui port controlează transferul de date prin registrul de intrare sau de ieșire.
A0-7 magistrala bidirecțională cu trei stări a portului A;
ARDY ieșire RDY a portului A;
/ASTB intrarea STB a portului A;
B0-7 magistrala bidirecțională cu trei stări a portului B;
BRDY ieșire RDY a portului B;
/BSTB intrarea STB a portului B;
B/ /A intrare de selecție care definește portul făcut accesibil în timpul unui transfer de date între unitatea centrală și circuitul PIO; un 0 pe această linie selectează portul A, iar 1 selectează portul B;
C/ /D intrare de selecție care definește tipul datei ce se transferă între unitatea centrală și PIO; un 1 în timpul unei scrieri face ca informația de pe magistrala de date să fie interpretată ca o comandă pentru portul selectat de linia B/ /A; un 0 arată că pe magistrala de date se transferă date între CPU și PIO;
/CE intrare de validare a circuitului PIO;
CLK intrare de tact;
C/ /D |
B/ /A |
Semnificație |
0 |
0 |
Date pentru portul A |
0 |
1 |
Date pentru portul B |
1 |
0 |
Comenzi pentru portul A |
1 |
1 |
Comenzi pentru portul B |
Tabelul 6.1
D0-7 magistrala de date utilizată pentru transferul de date și comenzi între CPU și PIO;
IEI intrare de validare a întreruperilor;
IEO ieșire de validare a întreruperilor;
/INT ieșire pentru cerere de întrerupere;
/IORQ cerere de intrare/ ieșire, activat de CPU și este folosit la selecția circuitului;
/M1 intrare care indică primul ciclu mașină; provine de la CPU și este utilizat la controlul unor operații interne;
/RD intrare care indică o operație de citire.
Fiecare canal din Z80 PIO are asociat câte un port de comandă și unul de date. Distincția între ele se face prin linia C//D.
Cuvântul de comandă:
Acest protocol permite comunicarea cu o imprimantă prin intermediul unei interfețe paralele.
t1 = min 500ns; t2 = min 500ns; t3 = min 500ns
Semnalul /STB validează datele plasate pe magistrala de date. Este semnal de intrare pentru imprimantă. Semnalul BUSY este de ieșire. Prin intermediul lui imprimanta indică faptul că este ocupată și nu poate recepționa date.
Să se realizeze tipărirea la imprimantă a unui șir de caractere (v. Anexa 3.). Pentru comunicația dintre sistem și imprimantă este folosit protocolul CENTRONIX. Se va realiza o rutină de afișare a unui caracter, rutină ce va fi apelată din cadrul programului principal. Se vor vizoaliza liniile de comunicație cu ajutorul osciloscopului.
Obs. Imprimanta va tipări textul primit doar la umplerea tamponului sau la primirea unei secvențe <CR><LF>.