În cadrul acestui laborator se vor prezenta tipurile de porturi de intrare/ ieșire, modul de decodificare a acestora și interfațarea unui sistem cu microprocesor cu mediul extern prin intermediul porturilor.
Generarea semnalelor de selecție pentru porturile de intrare/ ieșire se face de un circuit numit decodificator de adrese de porturi.
Pentru obținerea semnalelor de selecție din adrese și semnale de comandă se aplică tehnica decodificării complete sau incomplete întocmai ca în cazul selecției memoriilor. Se pornește de la alocarea adreselor pentru porturi stabilind harta porturilor de intrare/ ieșire. Și aici se construiește un tabel care are ca linii adresele pentru fiecare port iar ca și coloane rangurile A7-0 ale magistralei de adrese, întrucât în timpul ciclurilor de intrare/ ieșire numai pe acestea apare adresa portului. Se inspectează coloanele tabelului pornind de la rangurile mai semnificative spre cele mai puțin semnificative și se rețin acele ranguri care individualizează porturile. Pe baza acestor ranguri se construiește logica combinațională care va genera semnalele de selecție.
Exemplul 4.1: Să se realizeze decodificatorul de adrese de porturi pentru următoarele patru porturi:
Tebelul 4.1 conține adresele de porturi:
A7 |
A6 |
A5 |
A4 |
A3 |
A2 |
A1 |
A0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
Tabelul 4.1
Există riscul unei coincidențe între adresa de port și adresa unei locații de memorie acoperite de un circuit, și deci la selecția portului să se selecteze în mod eronat și circuitul respectiv de memorie. Pentru a elimina această sursă de conflict pe magistrală se utilizează în decodificare și semnalele de comandă. Un ciclu de intrare/ ieșire este caracterizat de activarea semnalului /IORQ, iar pentru a distinge un ciclu de intrare/ ieșire de unul de acceptarea cerere de întrerupere se folosește și linia /M1 care nu se activează în timpul transferurilor cu periferia.
Cel mai simplu port de ieșire este un bistabil. În funcție de tipul bistabilului acesta poate fi conectat în mai multe moduri (fig 4.3 bistabil D, fig 4.3 bistabil T):
![]() |
![]() |
Pentru setarea bistabilului din figura 4.2 se folosește următoarea secvență de cod:
iar pentru resetarea lui:
Pentru un bistabil T (fig 4.3) orice secvență de tipul:
va comuta bistabilul pe starea negată.
Pentru citirea unei linii de intrare sau a unui port de intrare se folosește o poartă cu trei stări ca în figura 4.4:
Testarea intrării din figura 4.4 se face prin următoarea secvență de cod:
Pentru un port pe mai multe ranguri se poate folosi și un registru cu numărul de ranguri dorite. Conectarea unui registru pe 8 biți este prezentată în figura 4.5:
Pentru citirea unui port de intrare pe mai multe ranguri se pot folosi circuite de tipul celui prezentat în figura 4.6:
Folosind un bistabil sau un registru ca și port de ieșire se poate genera, prin program un semnal cu o anumită frecvență, programabilă. Frecvența maximă este limitată de frecvența de lucru a procesorului și de numărul de instrucțiuni care sunt necesare pentru generarea semnalului.
În continuare este prezentată secvența de generare a semnalului de ieșire:
Calcularea duratei unei secvența de instrucțiuni se face în modul următor:
Prin citirea repetată a unui port de intrare se pot urmări anumite semnale de intrare.
Perioada aproximativă a semnalului este dată de relațiile:
unde n1 și n2 sunt numărul de citiri de 1 și respectiv de 0.
Te este dat de frecvența de lucru a procesorului și de numărul de instrucțiuni necesare citirii portului de intrare și testărilor corespunzătoare.
Să se realizeze un program cu care se generează un semnal cu perioada selectabilă cu ajutorul unor comutatoare. (v. Anexa 1.)
Laboratorul se va desfășura urrmând pașii următori: