Sunteți pe pagina 1din 14

Capitolul 2: Magistrala extern

2.1. Magistrale O magistral este un subsistem cu funcia de comutator universal bidirecional prin care se transfer date n interiorul unui sistem de calcul sau ntre sisteme de calcul [1]. Schema bloc a unui sistem bazat pe magistrale este dat n figura 2.1. 1 Master B 2 B 3 B

B 4

B 5

B n

Figura 2.1: Structura unui sistem pe baz de magistrale Sistemul prezentat n figura 2.1 este format din n subsisteme dintre care unul este Master la un moment dat iar celelalte Slave. Comutatorul este comandat de Master care stabilete subsistemul Slave cu care face transfer de date i stabilete sensul transferului. Subsistemele pot fi explorate ciclic sau, mai eficient transferul poate fi realizat printr-o logic de prioriti. Bufferele B optimizeaz traficul de date, aceste buffere fiind introduse n structura magistralei ncepnd cu magistrala PCI.. Dac fiecare subsistem poate transfera date cu viteza vi i viteza cea mai mare este: vmax=max (vi), atunci viteza magistralei VM va fi: VM=k.vmax , adic mai mare (cu un coeficient k) dect viteza celui mai rapid subsistem Magistralele pot fi de dou tipuri: 1. Sincrone, la care exist o linie de tact i toate transferurile se fac ntr-un numr ntreg de tacte, ciclul fiind numit ciclu de magistral. Acest tip de magistral este cel mai simplu i ca urmare s-a rspndit i la microcontrollere; 2. Asincrone, transferul poate dura orict, este nevoie ns de un protocol de dialog. Pentru ca un transfer nereuit s nu blocheze sistemul este nevoie de un mecanism de supraveghere a magistralei. Transferul de date pe o magistral sincron apare la execuia unei instruciuni a microcontrollerului. La execuia instruciunii, n funcie de instruciunea executat, se genereaz automat un semnal care stabilete spaiul de adresare i sensul transferului. n cazul n care spaiul de adresare este comun pentru zona de memorie i zona de IO (In/Out) atunci 5

exist dou semnale de comand - RD i WR care stabilesc sensul transferului. Dac spaiul de adresare este diferit pentru memorie i IO atunci exist patru semnale- IORD, IOWR, MEMRD, MEMWR. O diagram de timp pentru un transfer tipic pe o magistral sincron simpl cu spaiu comun pentru memorie i IO n care sunt prezentate un ciclu de citire i unul de scriere [2] este dat n figura 2.2.
CLK Adrese /RD /WR Date Date citite Date scrise

Citire

Scriere

Figura 2.2: Diagrama de timp pentru un ciclu de citire urmat de un ciclu de scriere Semnalul de tact este reprezentativ pentru magistralele sincrone. Activarea semnalului de /RD nseamn c datele sunt citite de pe magistral ntr-un registru al UC iar activarea semnalului /WR nseamn c datele sunt scrise n memorie sau ntr-un dispozitiv de I/O. n aceast diagram se remarc faptul c liniile de adres i de date sunt diferite.
CLK ALE /RD /WR Adrese/ date AD0-AD7 Adrese Date scrise

Citire

Date citite

Scriere

Adrese

Figura 2.3: Diagrama de timp pentru un ciclu de citire urmat de un ciclu de scriere n cazul unei magistrale de adrese i date multiplexate

De regul, n microcontrollere nu se poate accepta un numr att de mare de linii din cauza costurilor, de aceea liniile de adrese i date sunt multiplexate. Aceasta nseamn cuplarea unui latch de adrese n exteriorul microcontrollerului care s fie ncrcat cu adrese, comanda latchului fiind realizat cu semnalul ALE (Address Latch Enable). O diagram de timp n acest caz este dat n figura 2.3.

2.2. Selectarea unui dispozitiv pe magistral La un moment dat pe o magistral sunt active 2 subsisteme, dintre care unul este Masterul. Iar cellalt este subsistemul Slave selectat de Master, figura 2.4. Magistrala de adrese SEL SEL 1 Master 2 i Slave Magistrala de date Figura 2.4: Selecia prin adrese Transferul de date are loc ntre Master i subsistemul i pe magistrala de date. Liniile de adres necesare pentru adresarea locaiilor sau registrelor interne ale subsistemelor sunt conectate direct la acestea. Cu liniile rmase libere se selecteaz subsistemul cu care Masterul transfer date. Subsistemul selectat devine activ, celelalte subsisteme intr n nalt impedan la interfaa cu magistrala. Selectarea poate fi: 1. Selectarea liniar se poate realiza dac numrul liniilor de adres rmase disponibile este mai mare sau egal cu numrul circuitelor care trebuie selectate. Fiecare circuit este selectat cu o linie de adres, avantajul soluiei fiind simplitatea iar dezavantajul fiind faptul c se pierde din spaiul de adresare; 2. Selectarea decodificat, n care liniile de adres rmase libere sunt introduse ntr-un decodificator DCD, iar ieirile DCD selecteaz fiecare un circuit. Se poate astfel folosi ntregul spaiu de adresare; 3. Selectarea mixt, n care unele linii de adres libere selecteaz direct cte un circuit n timp ce alte linii selecteaz prin intermediul unui DCD. n primul exemplu se propune conectarea pe o magistral de adrese de 16 bii a unor circuite de memorie de 16k. Selectarea liniar i harta memoriei sunt date n figura 2.5.

Magistrala de adrese A0-A15 A14 A0-A13 CS MEM1 A0-A13 CS MEM2 A15

0000H 3FFFH 4000H 7FFFH 8000H BFFFH C000H FFFFH

MEM1 MEM2

Figura 2.5: Selectarea liniar n cazul memoriilor (CS activ n 1) Magistrala de adrese A0-A15 A15, A14
0000H 3FFFH 4000H

MEM1 MEM2 MEM3 MEM4

DCD A0-A13 CS MEM1 A0-A13 MEM2 CS 0,0 0,1 1,0 CS

7FFFH 8000H BFFFH C000H FFFFH

A0-A13 CS MEM3 A0-A13 MEM4

1,1

Figura 2.6: Selectarea decodificat n cazul memoriilor Se poate observa c n cazul selectrii decodificate se folosete ntreaga zon de adresare. n cazul conectrii unui dispozitiv de IO se aplic aceleai reguli, diferena fiind dat de faptul c dispozitivele de IO au mai puine linii de adresare pentru regitrii interni, ca urmare rmn mai multe linii de adres libere. n al doilea exemplu se conecteaz o interfa paralel de tip Intel 8255 pe o magistral de adrese de 16 bii. I8255 utilizeaz 2 linii de adres pentru selectarea celor 3 regitrii interni. S presupunem c adresa de baz la care dorim conectarea circuitului este 0180H. n figura 2.7 este dat schema bloc de conectare i harta memoriei. Selecia prin decodificare a fost realizat cu 4 DCD cu 4 intrri. Schema bloc este detaliat n partea de selecie. Dup programarea circuitului I8255 se pot trimite /recepiona date de un octet cu o singur instruciune sau dou, dac datele sunt extrase din memorie, ceea ce nseamn, de exemplu la un microcontroller RISC cu instruciuni executate ntr-un singur tact o rat de transfer de ordinul de mrime a tactului. La MC complexe, aa cum sunt de exemplu MC pe 32 de bii de la Fujitsu se pun la dispoziia utilizatorului semnale de CS pentru diferite zone de memorie liber pentru a uura implementarea aplicaiilor care necesit lucrul pe o magistral extern.

Magistrala de adrese A0-A15 A2-A15 DCD 0180H A0 A1 I8255 CS

0000H 0180H 0183H FFFFH

Detalii privind decodificarea


A15 14 13 12 0 0 0 0 A11 10 9 8 0 0 0 1 A7 6 5 1 0 0 4 0 A3 2 0 0

DCD0
0

DCD1
1

DCD2
8

DCD3
0

AND CS Figura 2.7: Conectarea unui circuit interfa paralel I8255 pe magistral

Dac conectm acelai circuit la porturi paralele obinem schema bloc din figura 2.8. MC
P0.1-P0.7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7

DCD
CS1,2,3

D0-D7 I8255

A0 A1 CS

RD WR

Figura 2.8: Conectarea unui circuit interfa paralel I8255 la porturi paralele Portul 0 al MC este folosit pentru transferul de date pe 8 bii, bidirecional. Liniile 0 i 1 din portul P1 sunt folosite pentru selectarea registrelor interne ale I8255. Liniile 2 i 3 prin decodificare pot selecta unul din patru circuite conectate cu liniile de date la portul 0 al MC. Liniile 3 i 4 ale portului 1 stabilesc sensul transferului. Se poate observa din schema bloc faptul c o conectare la porturi paralele este mai simpl dect una pe magistral, mai ales dac numrul de circuite conectate este mic.

Pentru un transfer de un octet se pune octetul pe magistrala de date apoi se selecteaz portul intern al I8255 prin punerea unui cuvnt pe portul 1, apoi se trimite un RD sau WR, ceea ce nseamn un cuvnt pe portul 1 care face RD sau WR 1, urmat de un cuvnt care face RD sau WR 0. Din aceast succesiune de cuvinte de comand se poate deduce c transferul este de cel puin 4 ori mai lent dect dac I8255 este conectat pe magistral.

2.3.Exemplu la microcontrollerele MCS 51 Familia MCS 51 prevede magistrala extern chiar i la modelele mai ieftine, aa cum este de exemplu MC Atmel AT89LS51 [3]. Pe magistrala extern poate fi conectat memoria de date i memoria de program, spaiile de adresare fiind separate. Portul 0 poate fi configurat ca port de adrese i date multiplexate pe 8 bii astfel: P0.0 AD0... P0.7 AD7. Portul 2 genereaz adresele superioare pentru adresarea pe 16 bii (MOVX @ DPTR). Dac se folosesc adresri pe 8 bii la portul 2 ( MOVX @ RI) este generat coninutul registrului special P2. Portul 2: P2.0 A8.... P2.7 - A15. Semnalele de comand generate sunt ALE, /RD, /WR i /PSEN (Program Store Enable) care este un strob pentru memoria extern de program. O diagram de timp de acces la magistral n cazul unui transfer de citire cu memoria de date (/PSEN inactiv):

ALE /PSEN /RD PORT 0 PORT 2 A0-A7 din RI (8 bii) sau DPL (16 bii) A8-A15 din DPH (16 bii) Date

Figura 2.9: Diagrama de timp la un ciclu de citire dintr-o memorie extern de date O aplicaie de conectare la un MC din familia MCS 51 a unei memorii externe EPROM de 64koctei pe magistral i a unui afiaj LCD pe un port paralel [5] este dat n figura 2.10. Pentru a adresa memoria EPROM se folosesc 16 bii de adres, cei mai puin semnificativi la portul P0, cei mai semnificativi la portul P2. Un impuls pe linia ALE ncarc biii de adres din portul P0 n latch-ul 74HC573. Se activeaz PSEN pentru c n EPROM sunt stocate instruciuni (memorie extern de program), datele fiind pe liniile de date din portul P0 putnd fi citite (/RD activ) sau scrise (/WR activ).

10

Figura 2.10: Conectarea unei memorii externe i a unui LCD la un MC 80C51

Pentru ca MC s execute codul stocat n EPROM trebuie ca semnalul EA s fie 0. Afiajul LCD este conectat cu liniile de date la portul P1 i semnalele de comand astfel: RS datele transmise pot fi un caracter de afiat sau o comand, RW sensul de transfer al datelor, CE comanda de afiare. Un exemplu de programare: MOV P1,A datele de afiat sunt trimise la portul P1 SETB RS datele reprezint un caracter de afiat CLR RW sensul este de scriere n afiaj NOP ntrziere SETB CE comanda de afiare NOP ntrziere NOP CLR CE linia de comanda de afiare este readus la 0 RET ntoarcere n programul principal nainte de a se lucra cu afiajul LCD este nevoie de trimiterea unor date pentru iniializare, funcie de tipul afiajului.

2.4.Exemplu la microcontrollerele ATMEL RISC MC AVR pe 8 bii Atmega64 admite lucrul cu magistral extern pentru cuplarea unei memorii externe printr-o interfa intern special numit XMEM. Magistrala extern este pe 8 bii de date i 16 bii de adres astfel: PA0- AD0... PA7-AD7, PC0-A8...PC7-A15, PG0/WR, PG1-/RD, PG2-ALE. Datele sunt multiplexate cu adresele pe portul PA. O schem bloc de conectare a unei memorii externe este dat n figura 2.11. 11

Figura 2.11: Schema bloc de conectare a unei memorii externe la un Atmega64

XMEM va detecta un acces la memoria extern i nu va ine cont de setrile de direcie ale porturilor PA i PC. Viteza de transfer a datelor este mare, de aceea se impun condiii de vitez pentru latch-ul de adrese. Programarea i controlul modului de lucru se face cu registrele: MCUCR (MCU Control Register), XMCRA i XMCRB (External Memory Control Register A i B). Pentru c memoriile au timpi diferii de acces se pot defini 4 variante de lucru cu memoria extern prin inserarea a 0, 1 sau 2 stri de WAIT. O diagram de timp pentru accesul la memoria extern pe 16 bii, la citire este dat n figura 2.12.
CLK (tact CPU) ALE Adrese anterioare /RD Adrese

Adrese A15-A8 Adrese/ date AD0-AD7 Date anterioare

Adrese

Date citite

Figura 2.12: Diagrama de timp pentru un acces la citire O aplicaie de conectare a unui LCD la un MC RISC pe magistrala extern [6] este dat n figura 2.13. Afiajul este validat (Enable) cu linia A15 cnd are loc o scriere /WR sau o citire /RD. Liniile de date / adrese inferioare sunt folosite doar ca date. Selecia zonei de adresare este simpl pentru c nu se folosete dect un singur circuit conectat pe magistrala extern.

12

Figura 2.13: Conectarea unui LCD la un MC RISC

2.5.Exemplu la microcontrollerele Fujitsu 2.5.1. Magistrala extern la MC Fujitsu pe 16 bii F2MC-16LX Magistrala extern permite adresarea pe 16 bii i transferuri pe 16 bii de date. Zona de adresare a magistralei externe este mai mic (22 bii) dect zona de adresare total care este pe 24 de bii. De asemenea MC poate fi comandat n nalt impedan pentru a permite un transfer DMA pe magistral. Memoria Flash din MC poate fi programat prin intermediul magistralei externe, dar exist i alte moduri de programare. Totui, programarea pe magistral este cea mai rapid. Schema bloc este dat n figura 2.14. Semnalele magistralei externe au urmtoarea semnificaie: AD07-AD00 pe portul P07-P00, 8 bii de date multiplexate cu adrese AD15-AD08 (16 bii) sau A15-A08 pe portul P17-P10, 8 bii de date multiplexate cu adrese sau doar 8 bii de adres A21-A16 pe portul P25-P20, 6 bii de adres. Nu este adresabil spre exterior toat zona de adresare pe 24 de bii. ALE pe linia P30, Address Latch Enable /RD pe linia P31, Read /WR (8 bii) sau /WRL (16 bii) pe linia P32, Write

13

Port I/O (8 bii) sau /WRH (16 bii) pe linia P33, activ doar la magistrala pe 16 bii, Write. HRQ pe linia P34 cerere ctre MC de intrare n HOLD. /HAK pe linia P35 rspuns de confirmare la cererea de intrare n HOLD. RDY pe linia P36 CLK pe linia P37. Magistrala extern
AD07-AD00 A15-A08 A21-A16 ALE /RD /WR /HAK HRQ RDY CLK

F2MC16LX

Figura 2.14: Schema bloc a MC pe 16 bii Fujitsu cu magistral extern

Regitrii de comand pentru lucrul cu magistral extern selecteaz dac liniile porturilor au semnificaia de linii de magistral sau linii IO i comand inserarea a 1, 2 sau 3 stri de WAIT pentru accesul pe magistral.

2.5.2.Magistral extern la MC Fujitsu pe 32 de bii n cazul microcontrollerelor cu putere de calcul mai mare, magistrala extern are mai multe linii [4], astfel c lucrul cu magistrala extern este mai complicat, transferurile de date pot fi pe 8, 16 sau 32 de bii. n cazul MC din familia MB91F care sunt MC RISC, schema bloc, prezentat n figura 2.15, arat o structur complex n care magistralele interne sunt de mai multe tipuri. ntre CPU i memorie magistrala este Harvard pe 32 de bii, legtura cu dispozitivele de IO fiind realizat cu o magistral pe 16 bii, iar n exterior MC este prevzut cu o magistral extern Von Neuman. Caracteristicile magistralei externe sunt: Spaiul extern este adresabil cu 32 de bii fiind de 4GB. Se pot defini pn la 8 bank-uri independente cu semnale de CS generate de MC. Bankurile pot fi de minimum 64K i pot ocupa orice poziie logic n aria extern.

14

Magistrala de date poate fi pe 32/16/8 bii, lrgime care poate fi diferit pentru bank-uri diferite. Se pot transfera date prin DMA.
I-BUS, 32 bii, Harvard, (magistrala de instruciuni) F-BUS 32 bii, magistral unic de date i instruciuni

RAM

ROM

CPU FR

D-BUS 32 bii, Harvard, (magistrala de date)

Convertor Harvardmagistral unic de date i instruciuni

Convertor 32 bii- 16 bii

Controller de magistral
Real BUS (magistral extern)

R-BUS 16 bii magistral unic de date i instruciuni Dispozitive I/O integrate

Figura 2.15: Structura intern a MC pe 32 de bii Fujitsu MB91F O schem bloc a interfeei cu magistrala extern este dat n figura 2.16.
Magistrala intern Adrese Date Buffer de date citite Scriere date

Acces

Magistral extern de date, 32 de bii

Acces
Magistral extern de adrese 32 de bii CS0X-CS7X

Buffer de adrese Generare CS ASR AMR

Generare semnale de control

CLK, RDY, BGRNTX, BRQ, RDX, WR0XWR3X

Figura 2.16: Interfaa cu magistrala extern

15

Generarea semnalelor de CS poate fi activat sau invalidat, zonele de adrese selectate fiind programabile prin nscrierea unui registru de programare. Semnalele WR0X, WR1X, WR2X, WR3X sunt semnale de strob de scriere, cu legtur cu lrgimea magistralei de date. Astfel la transferul pe octet se activeaz WR0X, la un transfer pe 16 bii WR0X i WR1X, iar la transferul pe 32 de bii se activeaz toate 4. Ordinea n care se transfer datele din regitrii interni este Big Endian, figura 2.17.
Transfer pe 32 de bii Registru intern D31 D23 D15 D07 D00 AA BB CC DD Transfer pe 16 bii Transfer pe 8 bii Magistral extern 00 01 10 11 AA BB CC DD

Magistral extern Registru intern Magistral extern Registru intern AA BB CC DD D31 D23 D15 D07 D00 D31 D23 D15 D07 D00

AA BB CC DD

AA BB

CC DD

AA BB CC DD

biii cei mai puin semnif. din adresa extern Activ WR0X

(La scriere)

Activ WR0X-WR3X

Activ WR0X, WR1X

Figura 2.17: Transferul de date prin magistrala extern

AS- strob de adrese BRQ- cerere de magistral BGRNTX- acceptarea cererii de magistral RDX- strob de citire RDY- semnal de sincronizare (Ready) ALE- strob de memorare a adresei ntr-un latch extern (Address Latch Enable). Diagrama de timp pentru un acces de 32 de bii n 2 bank-uri diferite, un ciclu de citire i un ciclu de scriere este dat n figura 2.18. ntre ciclurile de scriere / citire se introduc cicluri de sincronizare (a tactelor interne) numite Idle al cror numr depinde de tact i de tipul de acces. Pentru sincronizarea extern se pot introduce cicluri de WAIT programnd corespunztor un registru de programare sau se poate utiliza pinul extern RDY.

Un exemplu de conectare a unui GDC (Graphic Display Controller) la un microcontroller pe 32 de bii este prezentat pe scurt n continuare. Aplicaiile de afiare i prelucrare de imagini necesit o putere de calcul i o vitez mare.

16

CLK AS A31:0 D31:0 /RDX /WR0-3 /CSnX /CSmX


Citire din zona extern bank-ul n Scriere n zona extern bank-ul m

Tactul de magistral Strob de adrese 32 linii de adres 32 de linii de date, primul ciclu datele sunt citite, n al doilea sunt scrise Semnal care indic un ciclu de citire 4 semnale care indic ciclul de scriere i precizeaz modul de transfer 8/16 sau 32 bii Semnal de selecie bank, pentru bank-ul n Semnal de selecie bank pentru bank-ul m

Figura 2.18: Diagrama de timp pentru un transfer pe 32 de bii n figura 2.19 este prezentat conectarea unui GDC din familia Fujitsu la un MC pe 32 de bii din aceeai familie. Conectarea este pe magistrala extern deoarece este singurul mod de conectare care asigur viteza suficient de afiare.
MB91F361 Magistrala extern GDC
SDRAM opional Date 32 de bii

Date 32 de bii Adrese 32 de bii RESET WRX CSX RDX RDY CLK INT DREQ DACK Sursa de alimentare 5V 3,3V 2,5V

Adrese 12 bii Comenzi i stri 8 bii

R Display G analogic B Video input

Figura 2.19: Conectarea unui GDC Fujitsu la un MC pe 32 de bii

17

2.6.Scurt istoric al magistralelor standardizate Prima magistral a aprut n 1984 n structura calculatorului IBM PC i s-a numit ISA (Industry Standard Architecture). Magistrala este sincron, are 16 bii de date, 24 de bii de adres, subansamblele conectate se configureaz manual, viteza maxim este de 16Mbps. Specificaiile tehnice ale magistralei au fost n domeniul public, ceea ce a determinat ca magistrala s fie un succes i ca urmare compatibilele IBM PC s se rspndeasc n toat lumea. Specificaiile fiind libere, IBM nu a beneficiat financiar prea mult de pe urma acestei magistrale, aa nct a lansat n 1987 o nou magistral, superioar, pentru calculatoarele PS2 numit MCA (Microchannel). Caracteristicile ei: 32 de bii de adres, 32 de bii de date, configurare automat, viteza maxim 32Mbps, cu posibilitatea de a lucra multiprocesor. Pentru a construi dispozitive MCA era nevoie de cumprarea licenei de la IBM i au fost puine firme care s fac acest lucru, ca urmare calculatoarele cu MCA nu s-au rspndit. Ca reacie la MCA, un consoriu de firme (Compaq, Epson, Hewlett Packard, NEC, Olivetti i Zenith) a lansat magistrala EISA (Extended ISA) n 1988. Magistrala EISA are performane cel puin att de bune ca i MCA: 32 de bii de adres, 32 de bii de date, configurare automat sau manual, viteza maxim 120Mbps i asigura compatibilitate cu plcile ISA. Specificaiile au fost n domeniul public i probabil magistrala ar fi avut succes. EISA nu s-a rspndit pentru c INTEL a lansat n 1990 magistrala PCI (Peripheral Component Interconnect) cu specificaii n domeniul public, cu un concept nou al arhitecturii. PCI poate lucra cu 32 sau 64 de bii de date la o vitez de maximum 2,112Gbps. Conceptul de ierarhizare a magistralei dup vitez permite compatibilitatea cu magistrala ISA. n ultimul timp plachetele ISA au disprut dar PCI a pstrat intern o magistral de vitez mic numit LPC (Low Pin Count), de fapt o magistral ISA cu semnale multiplexate pe aceleai linii pentru economia de pini. Microcontrollerele au beneficiat la apariie de experiena dezvoltrii acestor magistrale i au mprumutat variantele cele mai simple de magistrale sincrone, bazate pe structura ISA.

Bibliografie [1] Gerigan C., Ogruan P., Tehnici de interfaare, Ed. Transilvania Braov, 2000, 315p., ISBN 973-9474-94-2 [2] Borza P., Gerigan C., Ogruan P., Toace Gh., Microcontrollere. Aplicaii, Editura Tehnic Bucureti, 2001, ISBN973-31-1577-6, 220p [3] Ogruan P., Gerigan C., Banciu N., Memorii, interfee i periferice. Interfee specializate, Ed. Transilvania Braov, 2003, 190 pagini, ISBN 973-635-118-1 [4] Ogrutan P., Microcontrollere si controllere grafice Fujitsu, Ed. Universitatii Transilvania Brasov, 2006, 182 pag, ISBN 973-635-621-3 [5] Lipnharski W., 8051+LCD+EPROM, [online], www.ustr.net [6] Fleury P., Interfacing a HD44780 Based LCD to an AVR, 2003, [online], http://jump.to/fleury

18

S-ar putea să vă placă și