Caracteristicile
procesorului PIC16F84:
Caracteristici speciale:
Procesoarele PIC16F8X
fac parte din familia microprocesoarelor PIC16CXX de 8 biţi cu preţ
scăzut şi bună performanţă. Acest grup de procesoare
este format din următoarele modele:
Toate microprocesoarele de tip PIC
implementează o arhitectură de tip RISC. Microprocesoarele din
această familie au caracteristici avansate, stivă de 8 locaţii
şi multiple surse de generare a întreruperilor de tip intern şi
extern. Implementarea este de tip Harvard şi are magistrala de
instrucţiuni cu lăţimea de 14 biţi şi magistrala de
date cu lăţimea de 8 biţi. Pipeline-ul cu două etape
permite executarea tuturor instrucţiunilor într-un singur ciclu, cu
excepţia instrucţiunilor de tip salt care necesită di ciclii.
Setul de instucţiuni este redus, 35 de instucţiuni. În plus pentru a
creşte performanţa un set mare de regiştrii implemntaţi
hardware este folosit.
Faţă de alte microprocesoare din
această clasă, microprocesoarele PIC oferă o compresie a codului
mai bună, raportul fiind de 2:1, şi o viteză de execuţie
mai mare, raportul fiind de 4:1.
Microprocesoarele PIC16F8X suportă
până la 68 Bytes de memorie RAM, până la 64 Bytes de memorie de date
(EEPROM), 13 pini I/O şi de asemenea un numărător intern.
Această
familie de microprocesoare are caracterisitici speciale care permit reducere
numărului de componente extern, astfel costul este mai redus, stabilitatea
este crescută şi se reduce consumul de putere. Se pot folosi 4 tipuri
de oscilatoare externe, dintre care, oscilatorul de tip RC asigură o
soluţie ieftină, oscilatorul de tip LP minimizează consumul de
putere, oscilatorul de tip XT este un oscilator cu, cuarţ standard şi
oscilatorul HS utilizează cristale High-Speed. Pentru a reduce şi mai
mult consumul de putere modul SLEEP este implemntat, utilizatorul poate
ieşi din acest mod prin intermediul câtorva întreruperi externe şi
interne.
Un mecanism de
tip Watchdog este implementat pentru a oferi protecţie în cazul în care
software-ul duce la blocarea funcţionării.
Soluţiile
care folosesc memorie de program Flash, permit utilizarea acestui tip de
microcontroler în producţie şi la realizarea de prototipuri.
Reprogramarea In-Circuit permite modificarea programului fără a
necesita extragerea dispozitivului din cadrul sistemului în care
funcţionează. Acest lucru este foarte util pentru realizarea de
prototipuri în care dispozitivul nu este uşor de accesat dar programul
trebuie să fie modificat. Această caracteristică este foarte
utilizată şi în cazul aplicaţiilor de tip remote.
În concluzie,
această familie de microprocesoare se potriveşte perfect pentru
aplicaţii care variază de la automobile de mare viteză şi
controlul motorului acestora, până la senzori cu, consum mic de putere ce
pot fi controlaţi remote, încuietori electronice, dispozitive de
securitate şi carduri de acces. Tehnologia Flash/EEPROM permite
modificarea rapidă a programelor executate în funcţie de
aplicaţie. Numărul redus de pini face posibilă utilizarea
acestui tip de microprocesoare pentru aplicaţii în care există
limitări de spaţiu. Posibilitatea de programare serială
oferă flexibilitatea de a îmbunătăţii produsul pe parcursul
asamblării şi testării.
Buna
performanţă a familiei de microprocesoare PIC16CXX se datorează
unui număr de caracteristici arhitecturale comune microprocesoarelor de
tip RISC. Pentru început arhitectura este tip Harvard, ceea ce înseamnă
că memoria de program şi memoria de instrucţiuni sunt separate.
Acest lucru îmbunătăţeşte viteza de execuţie în care
instrucţiunile şi datele sunt aduse din aceeaşi memorie.
Instrucţiunile folosite sunt de tip single word, opcode-ul pentru o
instrucţiune fiind de 14 biţi. Pe magistrala care comunică cu
memoria de program o instrucţiune este adusă într-un singur ciclu. O
structură pipeline cu 2 etape permite aducerea unei instrucţiuni
şi execuţia precedentei în acelaşi ciclu. Cu excepţia
instrucţiunilor de tip salt care se execută în doi ciclii, toate
instrucţiunile se execută într-un singur ciclu.
Microprocesoarele
PIC16F83 şi PIC16CR83 accesează o memorie de program de 512x14 în
timp ce modelele PIC16F84 şi PIC16CR84 accesează o memorie de program
de 1kx14.
Microprocesoarele
PIC16CXX accesează direct sau indirect regiştrii implementaţi
hardware şi memoria de date. Toţi regiştrii speciali, incluzînd
Program Counter-ul, sunt mapaţi direct in memoria de date. Setul de
instrucţiuni permite executarea oricărei instrucţiuni cu oricare
registru prin oricare tip de accesare.
Dispozitivele 16CXX utilizează un ALU
de 8 biţi şi un registru acumulator (working register). ALU poate
executa instrucţiuni de tip aritmetic sau logic folosind ca operatori fie
registrul acumulator, fie datele din memoria de date (general purpose
register). În cazul instrucţiunilor cu 2 operanzi în mod normal unul
dintre ei este registrul acumulator iar celălalt este un registru din
memoria de date sau o valoare constantă. În cazul instrucţiunilor cu
un operator, acesta este fie registrul acumulator fie un registru din memoria
de date. Mărimea registrului acumulator este de 8 biţi şi nu
poate fi adresat. În funcţie de tipul instrucţiunii ALU poate afecta
unul dintre biţii din registrul de status: Carry(C), Digit Carry(DC) sau
Zero(Z) .
Structura internă a
microprecesoarelor PIC este descrisă de diagrama următoare:
Figura
1 Diagrama bloc a microprocesorului PIC
Semanalul de
clock primit de la oscilatorul extern, este divizat în 4 semnale de enable
numite Q1, Q2, Q3, Q4. Intern Program Counter-ul este incrementat de fiecare
dată când Q1 este setat. Instrucţiunea este adusă din memoria de
program şi este stocată în registrul instrucţiune (IR –
Instruction Register) la fiecare Q4. Instrucţiunea este apoi
decodificată şi executată pe durată următorului ciclu
Q1 – Q4.
Figura 2 Structura ciclului de
instrucţiune
Un ciclu de
instrucţiune durează 4 tacte de ceas, de la Q1 la Q4. Mecanismului
pipepline utilizează 2 etape, fiecare etapă durând un ciclu de
instrucţiune. În prima etapă a pipeline-ului instrucţiunea este
citită din memoria de program. În a doua etapă, instrucţiunea
este decodificată şi executată. Datorită pipeline-ului
fiecare instrucţiune se execută într-un singur ciclu de
instrucţiune.
Un ciclu de tip
fetch (prima etapă în pipeline) începe cu incrementarea Program Counter-ului
în Q1.
În cea de-a doua
etapă a pipeline-ului, instrucţiunea adusă din memoria de
program în etapa precedentă, este stocată în registrul
instrucţiune în Q1. În Q2 memoria de date este cită (dacă tipul
instrucţiunii necesită acest lucru), în Q3 instrucţiunea se
execută, în Q4 rezultatul este scris în memoria de date (dacă tipul
instrucţiunii necesită acest lucru).