1.   Introducere

 

1.1.        Caracteristici

 

Caracteristicile procesorului PIC16F84:

 

Caracteristici speciale:

 


1.2.        Descriere generală

 

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.

 

1.3.        Analiza arhitecturii

 

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

1.3.1.        Structura ciclului de instrucţiune

 

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

 

1.3.2.        Mecanismul pipeline

 

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).