Clasa de procesoare MCS 48

Vezi subiectul anterior Vezi subiectul urmator In jos

Clasa de procesoare MCS 48

Mesaj  Admin la data de Mier Oct 29, 2008 8:45 pm

Intern, MCS48 este organizat utilizand urmatoarele blocuri logice:
- unitatea aritmetico-logica
- registrul acumulator
- memoria program (1KB la 8048, 2KB la 8049)
- memoria de lucru – date (64 octeti la 8048, 128 octeti la 8049)
- porturi I/O

1. Unitatea Aritmetico-logica

Accepta cuvinte de cod pe 8 biti din una sau doua surse si genereaza un rezultat pe 8 biti. Sub controlul Decodorului de Instructiuni, ALU poate executa urmatoarele functii:
• adunarea, cu sau fara transport
• operatii logice: SI, SAU, SAU Exclusiv, etc
• incrementari, decrementari
• complement pe biti
• rotiri stanga – dreapta
• ajustari BCD

Daca in urma operatiilor executate de ALU rezulta o valoare care este reprezentata pe mai mult de 8 biti, rezultand astfel un overflow pe bitul cel mai semnificativ, in Program Status Word (registru ce stocheaza starea procesorului) se seteaza flag-ul Carry.

2 .Acumulatorul

Este cel mai important registru din procesor, fiind atat sursa pentru intrarile din ALU, cat si destinatie a rezultatelor operatiilor executate de acesta. De asemenea, datele de pe porturile I/O si de memorie trec tot prin acumulator.

O schema generala, in care este prezentat acumulatorul si modul de conectare al acestuia cu celelalte blocuri logice ale procesorului MCS 48 este prezentata mai sus.

3. Memoria program

Memoria program este o memorie de tip PROM (in cazul 8048 – 8049 ) sau de tip EPROM (pentru 8748 – 8749), avand dimensiunea de 1024 octeti pentru 8048/8748 sau 2048 pentru 8049/8749. Aceasta memorie poate fi adresata de catre Program Counter.
In memoria program exista trei zone de memorie de important speciala:
• locatia 0 : reprezentata de prima adresa de memorie. Este activata de linia de RESET si forteaza procesorul sa citeasca aceasta adresa; contine vectorul de reinitializare.
• locatia 3 : activeaza linia de intreruperi a procesorului, determinand un JUMP la subrutina respectiva
• locatia 7 : contine vectorul de intrerupere pentru timer / counter; este citit in cazul unui overflow al counter-ului

Prima instructiune care va fi executat dupa o actiune de RESET este instructiunea localizata la adresa de program “0”. Primul cuvant al instructiunii de intrerupere este localizat intotdeauna la locatia de memorie “3” iar primul cuvant al rutinei de timer la adresa “7”.
Memoria program poate contine, pe langa codul de program si date, sub forma de constante.

4. Memoria de date

Memoria de date este o memorie pe 8 biti putand avea capacitatea de 64 octeti (la 8048) sau 128 octeti (pentru 8049). Toate locatiile de memorie sunt adresate indirect prin doi registri(RAM Adress Register) de tip pointer, localizati la adresele 0 si 1.
La nivel functional, memoria este organizata in 4 zone dupa cum urmeaza:
• doua bankuri de cate 8 locatii (bank 0 – adresele 0-7 si bankul 1 - adresele 24 – 31) care pot fi adresate direct si reprezinta registrii de lucru ai procesorului. Bankul principal este bankul 0 si este utilizat pentru a putea stoca valori intermediare. Bankul 1 poate fi utilizat ca o extensie a registrului de lucru (bankul 0) sau poate fi rezervat pentru utilizarea in cazul subrutinelor de intreruperi. Daca bankul 1 nu este utilizat (selectia facandu-se prin program) el poate deveni memorie de uz general
• o zona de stack pointer (adresele de memorie 8 – 23) organizata ca un stack pe 8 nivele, fiecare nivel ocupand 2 adrese de memorie.
• o zona de memorie de uz general – adresele 32 – 64 (128 pt 8049)

5. Porturile Input / Output

Procesorul 8048 are 27 linii de I/O, acestea fiind grupate in 3 porturi de cate 8 linii si 3 linii de intrare de test, utilizate pentru testarea instructiunilor de JUMP conditional.
Astfel, porturile 1 si 2 sunt porturi cvasi-bidirectionale, adica datele scrise de procesor in aceste porturi sunt stocate in latch-uri si raman neschimbate pana cand sunt rescrise. Ca porturi de intrare, aceste linii nu lucreaza prin latch, adica o instructiune de intrare este preluata imediat. Portul 3 este un port bidirectional.

Liniile de intrare de test, notate T0, T1 si sunt utilizate pentru JUMP conditional pe ramuri ale programului fara a fi necesara incarcarea intrarii portului in acumulator. T0 este utilizat pentru programare si poate servi si ca iesire de clock. T1 este utilizat ca intrare de contor de eveniment utilizand instructiunea STRT CNT (Start Event Counter). Pinul (activ pe low) este utilizat ca o intrare de intrerupere, intreruperea fiind dezactivata de RESET.

6. Program counter si Stack-ul

Program counterul este un contor independent in timp ce Program Counter Stack este implementat utilizand perechi de registri din memoria de date (vezi mai sus la zonele de memorie). Din cei 16 biti, doar 10 sau 11 sunt utilizati pentru adresarea adreselor din memoria program, in timp ce bitii cei mai semnificativi sunt folositi pentru adresarea memoriei externe. In cazul unui RESET, Program Counterul este initializat cu 0.

La o intrerupere sau la o instructiune de CALL a unei subrutine continutul Program Counterului este salvat in unul din cei 8 registri ( de 16 biti – 2 octeti) din Program Counter Stack. Perechea de locatii de memorie din stack este data de 3 biti din Stack Pointer, care este parte a Program Status Word (vezi mai jos structura acestuia).
Primul jump sau intrerupere determina salvarea continutului Program Counterului la adresele 8 si 9 din memorie. In cazul unei noi subrutine, continutul este salvat la adresele 10 – 11. In caz de overflow (adica mai mult de 8 subrutine lansate) se suprascriu locatiile 8 si 9, semnalizand totodata acest lucru (buffer overflow).
avatar
Admin
Admin

Mesaje : 161
Data de înscriere : 29/10/2008

Vezi profilul utilizatorului http://Pariuri.forumz.ro

Sus In jos

Vezi subiectul anterior Vezi subiectul urmator Sus

- Subiecte similare

 
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum