|
Calculatoare
SISTEME MULTIMICROPROCESOR
1.Definirea temei si cerintele
memorie SRAM de 24K cu circuite 2147;
memorie DRAM de 128K cu circuite 2118;
Interfata I/O cu circuite 8251A si 8253A;
Pentru tratarea intreruperilor se va folosi circuitul 8259A. In cazul circuitelor programabile se vor prezenta secvente de program pentru aducerea acestora in stare operationala. Se cere schema electrica a modulului, realizata cu un program de proiectare asistata pe calculator.
2.Schema bloc a sistemului.
In figura 1 se prezinta schema bloc a modulului proiectat. In aceasta schema se prezinta atat circuitele utilizate cat si interconexiunile dintre ele, la nivel de principiu.
Accesarea resurselor locale sau a celor din sistem e comandata de semnalul SYSB/ . Pentru situatia in care acest semnal devine "0" se face acces la resursele locale, in caz contrar accesul se face la resursele externe. Schema bloc a modulului contine urmatoarele elemente:
Microprocesorul (8086) care lucreaza la modul maximal.
Generatorul de tact (8284) folosit pentru generarea tactului necesar microprocesorului pentru a asigura functionarea circuitelor interne ala acestuia. Circuitul (8284) face divizarea cu trei a frecventei determinate de cuartul ce se conecteaza la el.
Controler de magistrala (8288) care, prin decodificarea semnalelor de stare (S0,S1,S2) furnizeaza semnalele de comanda corespunzatoare.
Latch de adrese (8282), pentru generarea magistralei interne de adrese, realizata prin demultiplexarea semnalelor AD0-AD15 si A16-19.
Buffer de date (8286), pentru generarea magistralei interne de date , realizata prin demultiplexarea semnalelor AD0-AD15.
Un bloc de memorie EPROM (2716).
Un bloc de memorie SRAM (2147).
Un bloc de memorie DRAM (2188).
Decodificator de adresa (8205) pentru selectarea blocurilor de memorie.
Controler de reimprospatare (8202) pentru reimprospatarea blocului de memorie DRAM.
Circuit de interfata I/O (8282) si Conectorul de interfete pentru conectarea sistemului cu exteriorul.
Bloc de interfata cu Magistrala Sistem care face legatura dintre modul si sistemul multimicroprocesor. Blocul este format din
a). Arbitru de magistrala (8289).
b). Controler de magistrala (8288).
c). Buffer de date (8287).
d). Latch adrese (8283).
Controler de intreruperi (8259).
Conector de magistrala multibus.
3.Intocmirea repartizarii spatiului de adrese.
A19A18A17A16
A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1
A0
Adr.
in
HEX
0 1 11
01 11
00 0 0 0 0 0 0 0 0 0 0 0 0 0
. . .. . . . . . .. .
1111 1 1 1 1 1 1 1 1 1 1 1
0
.
1
70000
BFFFF
Pentru circuitul 8259A avem nevoie de doua locatii de memorie corespunzatoare celor doua porturi. Deci pentru A0=0 si A0=1 se aloca primele doua adrese pare din spatiul de memorie alocat pentru intreruperi (00 si 02
In ceea ce priveste circuitele de interfata I/O - circuitul 8255 este "vazut" de microprocesor ca un ansamblu de 4 adrese, deci i s-au repartizat urmatoarele 4 adrese pare (deoarece transferul cu microprocesorul se face pe 8 biti, in acest caz pe liniile inferioare ale magistralei de date, D0-D7) din spatiul de 64K, destinat operatiilor de intrare-iesire.
FFFFF
F4000
EPROM 20K
LIBER
BFFFF
40000
MEMORIE EXTERNA
512k
LIBER
0BFFF
08000
SDRAM 16K
07FFF
00000
DRAM 32K
LIBER
FF
27
8282
26
25
8282
24
23
8255
22
21
8282
20
LIBER
19
03
8259A pt. A0=1
02
LIBER
01
8259A pt. A0=0
00
4. Proiectarea unitatii centrale.
Realizarea acestei etape presupune detalierea schemei bloc a unitati centrale, punandu-se in evidenta numarul de circuite utilizate si modul lor de conectare.
In configuratia multimicroprocesor cum este sistemul MULTIBUS, microprocesorul 8086 lucreaza in mod maxim, fapt evidentiat prin legarea la masa a intrarii MN/. In aceasta situatie o parte din pini isi schimba semnificatia, iar microprocesorul nu genereaza direct semnalele de comanda, ci livreaza in fiecare ciclu de magistrala un cuvant de stare controlerului de magistrala, care este raspunzator de decodificarea cuvantului de stare si generarea semnalelor de comanda corespunzatoare. Validarea acestui circuit se face numai cand microprocesorul cere un acces la resursele locale (SYSB/ =0).
Demultiplexarea magistralei comune in cea de date si cea de adrese este realizata cu ajutorul latch-urilor de adrese - 8282 (3 la numar), respectiv de buffer-ele de date - 8286 , circuitele fiind selectate prin semnalele corespunzatoare.
Circuitul 8284 furnizeaza microprocesorului semnalul de tact (CLK) avand frecventa de 5Mhz, prin divizarea cu 3 a frecventei oscilatorului sau intern. De aceea intre pinii x1 si x2 s-a conectat un cristal de cuart, avand frecventa de 15 Mhz. 8284 ofera, de asemenea, microprocesorului si semnalele: READY (caz in care trebuie prevazuta introducerea de stari de asteptare, daca este cazul, cat si sincronizarea, obligatorie, cu operatiile de pe magistrala MULTIBUS, cu ajutorul semnalului XACK), RESET (caz in care se necesita conectarea unor componente suplimentare astfel incat initializarea sa se produca la conectarea tensiunii de alimentare sau la apasarea unui buton de initializare, notat in schema cu Reset).
Schema detaliata se poate analiza in figura 2.
5. Proiectarea memoriei.
In cadrul acestui capitol se va expune fiecare bloc de memorie (EPROM, SRAM, DRAM), aratandu-se modul de obtinere si de conexiune a semnalelor de selectie si a celor de comanda.
Inaintea proiectarii se impun cateva observatii comune celor trei tipuri de memorii. Data fiind organizarea pe bancuri a blocurilor de memorie (magistrala de date de 16 biti fiind impartita in magistrala: inferioara, D0-D7, si cea superioara, D8-D15) memoria va fi distribuita in mod egal in cele doua blocuri, astfel incat locatiile de adresa succesiva vor fi regasite in bancuri diferite (cele cu adrese pare in bancul inferior, iar cele cu adrese impare in bancul superior). Acest mod de organizare a memoriei permite transferul de date pe octet pe una din cele doua bancuri in functie de semnalele A0 si nBHE, sau pe cuvant.
O alta observatie se poate face cu privire la timpul de acces al memoriei: 2T>tacces. Daca timpul de acces este mai mare decat doua perioade de tact atunci este nevoie adaugarea unei logici de inserare a unor stari de asteptare in activitatea microprocesorului, pentru ca transferul datelor sa se realizeze corect. Circuitele utilizate in proiectare sunt:
EPROM 2716 avand tacces=350 ns
SRAM2147 avand tacces=70 ns
DRAM 2118 avand tacces=100 ns
2T = 400 ns
Se observa ca nici un tip de memorie din cele trei nu necesita o astfel de logica pentru inserarea de stari WAIT.
5.1. Circuitul de memorie EPROM (2716)
Circuitul de memorie 2716 are capacitatea de 2Kx8. Asadar, pentru obtinerea celor 24K de care avem nevoie vom utiliza 12 circuite (6 in bancul inferior si 6 in cel superior).
Pentru obtinerea semnalelor de selectie vom intocmi tabelul adreselor limita pe baza hartii realizate in capitolul 3. Acest tabel arata astfel:
A19A18A17A16A15A14A13
A12A11A10A9A8A7A6A5A4A3A2A1
A0
Adresa
in
HEXA
Semnal
De
selectie
111101 1
.. . . . ..
11110 1 1
000 0 0 0 0 0 0 0 0 0
. . . . .. . . . . . .
111 1 1 1 1 1 1 1 1 1
0
.
1
F4000
F5FFF
EPROM1
111101 1
.. . . . ..
11110 1 1
000 0 0 0 0 0 0 0 0 0
. . . . .. . . . . . .
111 1 1 1 1 1 1 1 1 1
0
.
1
F6000
F7FFF
EPROM2
111110 0
.. . . . ..
111110 0
000 0 0 0 0 0 0 0 0 0
. . . . .. . . . . . .
111 1 1 1 1 1 1 1 1 1
0
.
1
F8000
F9FFF
EPROM3
111110 1
.. . . . ..
111110 1
000 0 0 0 0 0 0 0 0 0
. . . . .. . . . . . .
111 1 1 1 1 1 1 1 1 1
0
.
1
FA000
FBFFF
EPROM4
111111 0
.. . . . ..
111111 0
000 0 0 0 0 0 0 0 0 0
. . . . .. . . . . . .
111 1 1 1 1 1 1 1 1 1
0
.
1
FC000
FDFFF
EPROM5
111111 1
.. . . . ..
111111 1
000 0 0 0 0 0 0 0 0 0
. . . . .. . . . . . .
111 1 1 1 1 1 1 1 1 1
0
.
1
FE000
FFFFF
EPROM 6
Liniile de adrese: A0 - selectie banc
A1 - A12 - selectie in interiorul circuitului de memorie
A13 - A19 - selectie circuit
Sensul transferului este, in cazul acestui tip de memorie, unidirectional, accesul fiind numai pentru citire, deci se poate renunta la semnalele pentru validarea bancurilor: A0 si .
Schema de conectare si comanda a memoriei EPROM este data in figura 3.
5.2. Circuitul de memorie SRAM (2147)
Circuitul de memorie 2147 are capacitatea de 4Kx1. Pentru a forma 4Kx8 avem nevoie de 8 circuite ce lucreaza in paralel, conform acestui rationament pentru a forma 8K de care avem nevoie vom utiliza 16 de circuite (8 in bancul superior si 8 in cel inferior, 2 blocuri de cate 8 circuite).
Conform hartii de memorie realizate in capitolul 3 putem intocmi urmatorul tabel al adreselor limita. Acest tabel arata astfel:
A19A18A17A16A15A14A13A12A11
A10A9A8A7A6A5A4A3A2A1
A0
Adresa
in
HEXA
Semnal
De
selectie
00000 0 100
000000 10 0
0 0 0 0 0 0 0 0 0 0
. . .. . . . . . .
1 1 1 1 1 1 1 1 1 1
0
.
1
08000
09FFF
SRAM1
000000 101
000000 10 1
0 0 0 0 0 0 0 0 0 0
. . .. . . . . . .
1 1 1 1 1 1 1 1 1 1
0
.
1
0A000
0BFFF
SRAM2
Semnificatia liniilor de adrese este urmatoarea:
A0 - selectie banc
A1 - A10 - selectie in interiorul circuitului de memorie
A11 - A19 - selectie circuit
Sensul transferului este, in cazul acestui tip de memorie, bidirectional, accesul fiind atat pentru citire cat si pentru scriere.
Pentru sinteza semnalului de selectie s-a folosit decodificatorul 8205, iar pentru selectia bancului s-a folosit linia A0 - pentru bancul inferior, respectivBHE - pentru bancul superior.
Pentru sinteza semnalelor de selectie: SRAM1,SRAM2 s-a observat ca putem utiliza acelasi decodificator folosit pentru selectia circuitului EPROM. Deci ecuatia intrarii E3 a decodificatorului 8205 este:
Schema de conectare si de comanda a memoriei SRAM este data in figura 4.
5.3. Circuitul de memorie DRAM (2118)
Circuitul de memorie 2118 are capacitatea de 16Kx1. Pentru a forma 16Kx8 avem nevoie de opt circuite ce lucreaza in paralel, conform acestui rationament pentru a forma 96K de care avem nevoie vom utiliza 42 de circuite (23 in bancul superior si 23 in cel inferior).
Acest tip de memorie necesita reimprospatarea periodica a informatiei, astfel incat in schema trebuie adaugat un controler de reimprospatare (8202). Acesta, pe langa reimprospatarea periodica a celulelor de memorie, realizeaza si multiplexarea liniilor de adrese, furnizand circuitelor adresa de rand insotita de semnalul si cea de coloana insotita de semnalul , deoarece circuitul prezinta o structura interioara de tip matriciala. Pentru a determina valoarea numerica a frecventei cristalului ce trebuie conectat la controler s-au comparat datele de catalog pentru memoria DRAM (2118), pentru care timpii de acces este tacc= 100ns, si diagramele de timp ale circuitului 8202. Urmarea acestei comparatii a dus la concluzia satisfacerii urmatoarelor relatii:
7.TCTR=100ns
conform careia frecventa de lucru a circuitului 8202 trebuie sa fie:
De aceea, intre intrarile: X0 /OP2 , X1 /CLK s-a conectat un cristal de cuart cu aceasta frecventa.
Conform hartii de memorie prezentate in capitolul 3 putem intocmi urmatorul tabel al adreselor limita pentru blocurile de memoria DRAM:
A19A18A17A16A15
A14A13A12A11A10A9A8A7A6A5A4A3A2A1
A0
Adresa
in
HEXA
Semnal
De
selectie
00000
.. . . .
00000
0 0 000 0 0 0 0 0 0 0 0 0
. .. . . . . . . . .
1 1 111 1 1 1 1 1 1 1 1 1
0
.
1
00000
07FFF
DRAM
Semnificatia liniilor de adrese este urmatoarea:
A0 - selectie banc
A1 - A12 - selectie in interiorul circuitului de memorie
A13 - A19 - selectie circuit
Semnalul de selectie a blocului DRAM provenit de la decodificatorul 8205 se va aplica intrarii a controlerului 8202 si va fi folosit pentru deschiderea buffer-elor 8282 in cazul unei comenzi de citire. Circuitul furnizeaza si un semnal de confirmare a transferului care este conectat prin intermediul unui inversor la intrarea RDY1 a generatorului de tact 8284. Lucrand cu blocuri de 16K, B0 s-a legat la masa, in acest caz folosindu-se doar semnalul pentru esantionarea adresei de rand.
Pentru a mentine datele citite din memorie pe magistrala un timp suficient pentru a fi preluate corect de microprocesor, am intercalat intre iesirile circuitelor de memorie si magistrala doua latch-uri pentru date (8282). Inscrierea datelor in latch-uri se face cu ajutorul semnalului , iar validarea iesirii cu si semnalul de selectie a blocului de circuite.
Schema blocului de memorie DRAM este data in figura 5.
6. PROIECTAREA INTERFETELOR DE INTRARE IESIRE
Scopul acestui capitol este prezentarea modului de interconectare a circuitelor periferice.
Pe baza hartii de alocare a adreselor in spatiul de intrare-iesire al microprocesorului, elaborat in capitolul 3 s-a construit urmatorul tabel:
A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0
Adr. In hexa
Port selectat
0 0 0 0000 0 0 0 0 0 0 0 0 0
0 0 0 0000 0 0 0 0 0 0 0 1 0
0 0 0 0000 0 0 0 0 0 0 1 0 0
0 0 0 0000 0 0 0 0 0 0 1 1 0
0 0 0 0000 0 0 0 0 0 1 0 0 0
0 0 0 0000 0 0 0 0 0 1 0 1 0
0 0 0 0000 0 0 0 0 0 1 1 0 0
0 0 0 0000 0 0 0 0 0 1 1 1 0
0000
0002
0004
0006
0008
000A
000C
000E
Numarator 0
Numarator 1
Numarator 2
Numarator 3
Port de date
Port de comenzi
Toate circuitele fiind plasate la adrese pare acestea au fost conectate la liniile D0-D7 ale magistralei iar bitul A0 a fost utilizat la selectia circuitului impreuna cu semnalele corespunzatoare venite de la decodificator.
Semnalele de comanda utilizate sunt cele specifice adresarii in spatiul de intrare-iesire.
In cazul interfetei seriale s-au interclasat circuite de tip 1488 si 1489 care asigura conversia de nivel pentru compatibilitate cu standardul RS-232 pe de alta parte canalul zero al numaratorului programabil
Circuitul 8259 este plasat la adrese pare deci vor fi conectate la D0-D7.
Deoarece numarul de circuite este redus se utilizeaza o selectie liniara. Semnalele de comanda utilizate pentru citire si scriere sunt respectiv .
Circuitul 8259A este controler de intreruperi. Modul in care se conecteaza nivelele de intrerupere ale lui 8259A la liniile de intrerupere ale magistralei MULTIBUS si la sursele locale de intrerupere este lasat la latitudinea utilizatorului; in acest scop au fost prevazute conexiuni prin strapuri. Conectarea circuitului se face ca in figura 6.1.
In ce priveste controlerul de intreruperi 8259A intrarile IR0-IR7 au fost aduse tot la conectorul X1 la nivelul caruia cu ajutorul unor strapuri se poate configura nivelul intreruperii.
Scrierea programelor pentru circuitele periferice.
In aceasta faza se prevad secventele de program in limbaj de asamblare 8086 pentru configurarea circuitelor de interfata programabile in diferite moduri.
Din cele trei circuite programabile prevazute in tema proiectului pentru exemplificarea modului de programare s-a ales circuitul de interfata seriala 8251A.
Secventa de instructiuni de programare este:
MOV AL,52h mod asincron un bit de stop paritate para
5 biti/caracter divizare cu 16 a tactului
OUT 0A,AL
MOV AL,15h validare receptie si transmisie
OUT 0A,AL