Documente Academic
Documente Profesional
Documente Cultură
Curs 2: Structura Unui Uc
Curs 2: Structura Unui Uc
STRUCTURA UNUI uC
CPU = Unitatea centrala
Contine:
- Performantele globale
- Viteza operationala
- Structura memoriei disponibile
Se utilizeaza 2 concepte:
1. VON NEUMANN
- Instructiunile si datele sunt aduse pe acelasi bus = system de comunicare intre
diferite componente (autostrada de date)
- Banda limitata
- Numar mare de cicli processor/ ciclu fetch = operatia de baza a unui processor
(citire, decodificare, executie)
- Versatilitate
2. HARVARD
- Spatiu de memorie separate pentru instructiuni si date
- Sunt posibile largimi diferite pentru busurile de date si instructiuni
- Numar minim de cicli processor/ ciclu fetch
- Cresterea reala a Throughput-ului
Curs 3:
UNITATEA CENTRALA DE BAZA (CPU)
Responsabila cu:
CPU lucreaza in conjunctie cu ALU pentru a complete executia instructiunii (in operatii aritmetice si
logice)
Controleaza:
- In instructiuni cu 2 operanzi, de obicei unul este registrul de lucru (in cazul asta W
register), celalalt este un registru de uz general sau o constanta
- In instructiuni cu 1 operand, acesta poate fi ori registrul de lucru ori cel de uz general
- Registrul W este un registru pe 8 biti, neaccesabil
- In functie de instructiunile executate, ALU poate afecta valorile bitilor carry (C),
digit carry (DC) si zero (z) din registrul STATUS (adica ALU poate modifica valoriile)
FORMATUL INSTRUCTIUNILOR
Instructiunile uC din gama mid-range pot fi impartite in 4 forme:
EXECUTIA INSTRUCTIUNILOR
Fiecare ciclu de instructiune (TCY) este alcatuit din 4 cicli Q1…Q4. Durata unui ciclu Q este aceeasi ca
perioada oscilatorului (TOSC). Cicli Q corespund proceselor de decodare, citire, procesare, scriere,
etc.
NOP = No Operation
SETUL DE INSTRUCTIUNI
Operatii cu registii orientate pe byte
carry (C),
zero (Z)
Contine:
MEMORIA:
Este compusa din 2 blocuri:
- Memoria de program
- Memoria de date
o Memoria RAM de uz general
o Registrii cu functiuni speciale (SFRs)
Instructiunile sunt organizate pe 14 biti si sunt de tip ‘single word’, rezulta un spatiu de adresare de:
- 8k * 14 biti
- 56k * 14 biti
Pentru a comuta inte paginile de memorie de program, tebuie modificati cei mai semnificativi biti din
contorul de program (PC). Acesta se face prin modificarea valorii unui registru special SFR numit
program counter latch high (PCLATCH).
Daca se executa instructiuni consecutive, cotorul de program va trece de granitele paginii fara
interventia utilizatorului.
Pentru dispositive care au implementat mai putin de 8k de memorie de program, accesarea unei
locatii pestea cea fizica va cauza accesarea adresei din pagina fizica, ignorand bitii din PCLATCH.
Vectorul de reset
- Un reset va fort contorul de program la valoarea 00h
- Vom numi aceasta adresa “adreas vectorului reset”
- Orice reser va sterge continutul registrului PCLATCH
Vectorul de intrerupere
- Cand o intrerupere este recunoscuta, PC este fortat la adresa 04h – “adresa
vectorului de intrerupere”
- Nu se modifica registrul PCLATCH
o Adresa de salt din intrerupere este in alt bank de memorie
o Inainte de a fi modificat de ISR, continutul PCLATCH trebuie salvat, astfel
incat dupa revenirea din rutina de intrerupere, continutul sau sa poata fi
restaurat
Situatia 1: - instructiune cu PCL ca destinatie. PC este incarcat prin scrierea PCL cu rezultatul ALU si
PCH din PCLATCH <4:0>
Se arata cum PC este incarcat in timpul unei instructiuni GOTO 11 biti din adresa de salt si 2 biti din
PCLATCH <4:3>
Situatie 3: Instructiunea CALL
PC este incarcat in timpul unei instructiuni CALL: PC incarcat (PUSHed) in varful stivei, apoi incarcat
cu 11 biti din adresa de salt si 2 biti din PCLATH<4:3>
Se arata cum este incarcat PC in timpul unei instructiuni tip return, in care PC este incarcat (POPed)
din varful stivei
Curs 5:
STIVA
Este o memorie de tip LIFO (Last In First Out).
Permite aparitia unor combinatii de pana la 8 sau 16 (enhanced) apeluri de subrutine sau
interuperi.
Contine adresa de reintoarcere din ramura de program active, in executia programului
uC din gama mid-range au o stiva cu 8 nivele x 13 biti, iar cele din gama enhanced o stiva de
16 nivele de 15 sau 16 biti
Spatiul stivei nu se poate citi sau scrie
Spatiul stivei nu face parte din spatial de memorie program sau memorie de date
Continutul contorului de program este “impins” (pushed) in stiva la executia unei instructuri
call sau cand o intrerupere provoaca o ramificare a programului
Stiva este golita (poped) in cazul aparitiei uneia din instructiunile return, retlw sau retfie
PCLATCH nu este modificat cand se executa operatii cu stiva
Pentru gama mid-range nu exista indicatoare de depasire a numarului maxim de push-uri in
stiva
Pentru gama enhanced exista doua indicatoare, unul de depasire a valorii maxime (overflow)
si unul de depasire a valorii minime (underflow)
STIVA PT uC ENHANCED
Stiva poate opera ca un buffet circular, daca bitul STVREN este 0.
- Daca in stiva au fost PUSH 16 valori, cea de-a 17 va fi memorata in locul primei
introdusa
NU sunt instructiuni de tip POP sau PUSH, dar sunt generate de instructiunile return,
retlw sau retfie
PCLATCH nu este modificat cand se executa operatii cu stiva
Pentru gama mid-range nu exista indicatoare de depasire a numarului maxim de push-
uri in stiva
Pentru gama enhanced exista doua indicatoare, unul de depasire a valorii maxime
(overflow) si unul de depasire a valorii minime (underflow)
-
Configuratia stivei dupa primul CALL sau o singura intrerupere:
Memoria de date este impartita in bancuri de memorie atat pentru zona GPR cat si pentru
zona SFR
- Zona GPR este impartita in bancuri pentru a putea permite adresarea a mai mult de
96 biti de memorie RAM
- registrii pentru functii speciale (SFRS) utilizati pentru controlul modulelor periferice
si a functiunilor centrale.
Pentru a putea face selectia bancurilor de memorie avem nevoie de biti de control
Acestia sunt localizati in registrul STATUS (STATUS<7:5>)
Organizarea bancurilor difera de la dispozitiv la dispozitiv
Pentru a muta continutul unui registru in altul, valoarea trebuie sa treaca prin registrul W
- Rezulta doua cicluri masina pentru mutari registru-registru
Intreaga memorie poate fi accesata direct sau indirect
Adresarea directa poate necesita utilizarea bitilor RP1:RP0
Adresarea indirecta necesita utilizarea registrului de selectare a bancurilor (FSR) si a bitului
registrului pointer indirect (IRP) din registrul STATUS pentru accesarea zonelor bank0/1 sau
bank2/3 ale memoriei de date
ACCESAREA DIRECTA
EXEMPLU DE INSTRUCTIUNE
ADRESAREA INDIRECTA
Adresarea indirecta este un mod de adresare a memoriei de date, in care adresa memoriei
de date din instructiune nu este fixate
Este utilizat un registru SFR ca pointer la locatia din memoria de date care trebuie citita sau
scrisa
Deoarece acest pionter este in RAM, continutul sau poate fi modificat de catre program
EXEMPLU DE ACCESARE INDIRECTA:
- UTILIZAREA ADRESARII INDIRECTE SIMPLE PENTRU A STERGE RAM (LOCATIILE 20h – 2Fh) INTR-
UN NUMAR MINIM DE INSTRUCTIUNI
Curs 6
RESET
Logicade reset este utilizata pentru a aduce microcontrollerul intr-o stare stabila, cunoscuta.
Sursa care a determinat aparitia semnalului de reset poate fi determinata verificand bitii de
stare a dispozitivului.
Logica de reset este proiectata astfel incat sa creasca performanta si sa scada costul
sistemului.
Timpul total variaza cu configuratia oscilatorului, frecventei acestuia si starea bitului PWRTE.
Exemplu:
CURS 7
PORTURI I/O
Pini I/O permit microcontrollerului sa monitorizeze si sa controleze alte dispozitive
Directia IN sau OUT a unui pin este controlata de registrul de directie a datelor notat TRIS.
Registrul PORT este un LATCH pentru datele de iesire, iar cand registrul PORT este citit se citeste
doar starea pinilor I/O nu si LATCH.
Cand registrul PORT este citit, se citeste starea prezenta a pinilor I/O si nu latch-ul!
Cand mai multe functiuni periferice sunt multiplexate in acelasi port, functionalitatea pinului
I/O respectiv trebuie schimbata astfel incat sa fie in concordanta cu cerintele functiunii respective.
Ex: ADC sau LCD module, la reset acesti pini sunt fortati ca pini I/O si trebuie programati ca pini de
intrare analogica, controlati de registrul ADCON1.
REGISTRUL TRIS
Bitii din registrul TRIS sunt suprascrisi in cazul anumitor periferice, cand acestea sunt validate.
Trebuie evitate instructiuni de tip citeste-modifica-scrie (BSF, BCF, XORWF) care au ca destinatie
registrul TRIS.
Registrul TRIS controleaza directia pinilor portului, chiar cand acestia sunt utilizati ca intrari analogice
Utilizatorul terbuie sa se asigure ca bitii TRIS se mentin setati tot timpul cand se utilizeaza acesti pini
ca intrari analogice.
! Trebuie avut grija cand apar instructiuni de scriere urmate de operatiuni de citire, pe
acelasi port.
TIMER0
Proprietati:
TIMER1
Proprietati:
Daca bitul T1SYNC este sters, semnalul clock extern este sincronizat cu semnalul de clock intern.
Sincronizarea este realizata dupa prescaler.
TIMER2
Proprietati:
Comparere/Captura/PWM
MODUL CAPTURA
In mod captura, la un eveniment, se captureaza valoarea TMR1.
Cand se realizeaza o captura, se seteaza bitul de cerere de intrerupere CCPxIF.
Bitul CCPxIF trebuie sters prin software.
Daca apare o noua captura inainte ca sa se citeasca registrii CCPRx, valoarea anterioara este
pierduta.
captura nu reseteaza TIMER1.
Modul Comparare
In mod comparare, valoarea din CCPRxH:CCPRxL este comparata constant cu valoarea din
TMR1.
La aparitia unei egalitati, pinul CCPx este: 1 sau 0 sau neschimbat.
Captura nu reseteaza TIMER1.
TIMER1 va genera intreruperi la depasirea valorii maxime (FFFF)
CURS 10
PWM
Fiecare modul CCP (comparare/captura/ PWM) contine un registru de 16 biti, care poate opera ca:
In mod PWM, la pinul de iesire CCPx, se va genera un semnal PWM cu rezolutia de 10 bit.
Pentru a fi disponibil ca pin de iesire, acesta trebuie sa aiba bitul corespondent din registrul
TRIS setat pe ‘0’.
Stergerea registrului CCPxCon va forta LATCH-ul PWM de iesire la starea initiala: ‘0’
Timer-ul de 8 biti este concatenat cu 2 biti ai clock intern sau cu 2 biti ai prescalerului pentru
a crea o baza de timp de 10 biti.
Rezolutia minima in timp a fiecarui Bit dintr-un ciclu PWM. depinde de prescaler-ul lui Timer2.
Gasirea rezolutiei maxime a factorului de umplere care poate fi utilizat cu o frecventa PWM de
78.125khz si frecventa oscilator 20MHz
Pentru a obtine o rezolutie mai mare a PWM se poate scadea valoarea frecventei PWM sau daca
este posibil, cresterea frecventei oscilatorului.
CURS 11
Comparatoare
Modulul comparator contine unul sau mao multe comparatoare analogice.
Intrarea si iesirea comparatoarelor sunt multiplexate cu pini de I/O.
Ca intrare a comparatoarelor, pe langa pini de I/O, poate fi si iesirea sursei de referinta
interne.
Controlul functionarii comparatorului se face cu registrul CMCON.
REGISTRUL CMCON
FUNCTIONAREA COMPARATORULUI
Intreruperile generate de comparator trebuie dezactivate in timpul configurarii dinamice a
modulului comparator. In caz contrar poate aparea o intrerupere falsa.
Timpul de raspuns al unui comparator este timpul minim trecut de la momentul selectarii unei noi
tensiuni de referinta sau sursa de intrare pana la momentul la care iesirea comparatorului are o
stare stabila.
La citirea registrului PORTx toti pini configurati ca intrare analogica vor fi cititi cu valoarea ‘0’.
Daca acesti pini sunt configurati ca intrare digitala si se aplica o tensiune analogica, valoarea
citita este in concordanta cu specificatiile trigerului SCHMITT.
Nivele analogice aplicate oricarui pin definit ca intrare digitala poate cauza ca bufferul de
intrare sa consume mai mult curent decat este in specificatii.
COMPARATOARE. INTRERUPERI.
Flag-ul de intrerupere al comparatorului este setat oricand valoarea de iesire a acestuia se
schimba.
Pentru a a determina daca s-a schimbat starea actuala a comparatorului trebuie ca sa se
memoreze starea bitilor de iesire.
Flag-ul de intrerupere a comparatorului este bitul CMIF
Acest flag este setat la aparitia unei intreruperi si trebuie resetat software.
Pentru validarea intreruperii trebuie setati atat bitii CMIE cat si PEIE.
INTRERUPERI
Utilizatorul, in rutina de tratare a intreruperii, poate sterge bitul de intrerupere in urmatoarele
moduri:
Daca apare o schimbare a registrului CMCON (COUT) cand se incepe o operatie de citire, atunci flag-
ul de intrerupere poate sa nu fie setat.
REFERINTA DE TENSIUNE
In functie de configuratia setata, la intrarea comparatorului se poate aplica o tensiune de
referinta interna.
Valoarea tensiunii de referinta poate fi setata prin scrierea in registrul tensiunii de referinta
VRCON.
Ecuatiile care determina valoarea tensiunii de iesire sunt:
De la cursuri:
- Latența: absorbed, by a body or a thermodynamic system, during a constant-temperature
process — usually a first-order phase transition + verifica curs: 10.06.20
De la Emy: