You are on page 1of 208

SISTEME DE PRELUCRARE

NUMERICA CU PROCESOARE
Author: V. Tiponut POLITEHNICA University of TIMISOARA
Bibliografie
V.Tiponut, Sisteme Dedicate, Editura POLITEHNICA 2007
(in pregatire)
* * * Microcontrolerul 8051, (note de curs) * * * Microcontrolerul 8051, (note de curs)
Ted Van Sickle, Programming Microcontrollers in C,
Second Edition, by LLH Technology Publishing, 2001
Matthew Chapman, The Final Word on the 8051, 1994
Ce este un sistem EMBEDDED ?
An embedded system is a special-purpose system in which the
computer is completely encapsulated by or dedicated to the device or
system it controls.
An embedded system is a combination of computer hardware and An embedded system is a combination of computer hardware and
software, and perhaps additional mechanical or other parts, designed
to perform a specific function.
A general definition of embedded systems is: embedded systems are
computing systems with tightly coupled hardware and software
integration, that are designed to perform a dedicated function.
Any electronic system that uses a CPU chip, but that is not a general-
purpose workstation, desktop or laptop computer.
Definitie
Sistemele dedicate sunt combinatii de
structuri de calcul hard si soft, circuite structuri de calcul hard si soft, circuite
electronice si respectiv componente
electromecanice, concepute pentru a
realiza o functie specifica (dedicate
unei aplicatii).
STRUCTURA GENERICA A UNUI SISTEM DEDICAT
R
e
a
l

W
o
r
l
d

R
e
a
l

W
o
r
l
d
Embedded System
R
e
a
l

W
o
r
l
d

R
e
a
l

W
o
r
l
d
Information exchange with other systems
( CAN, Ethernet, Internet )
Componentele unui sistem dedicat
S1
S2
Anti-
Aliasing
S/H
ADC
D
a
t
a

P
r
o
c
e
s
s
i
n
g

U
n
i
t
D
a
t
a

E
x
c
h
a
n
g
e
Sn
D
a
t
a

P
r
o
c
e
s
s
i
n
g

U
n
i
t
Sampling Signal
A1
A2
An
Recon-
struction
DAC
D
a
t
a

E
x
c
h
a
n
g
e
Signal Conditioning
Signal Conditioning
Conditionarea semnalului
+
Udif
_
Ucm
Uout
Ad= 11000
CMRR = 100 dB
Programmable Gain
Configuratie programabila (FPAA)
Figure 1. Using a configurable building block for a programmable analog IC,
you can change circuit parameters or functionality by changing switch
settings with data stored in the memory.
Circuit cu capacitati comutate
I = fcCV
R = 1/(fcC)
Integrator cu capacitati comutate
With this switched-capacitor integrator, the integration time constant is
set by the capacitor ratio, which can be defined with better than 1%
accuracy. Changes in the power supply voltage, temperature, or aging
have no effect on the time constant.
Unitatea de procesare a datelor
(Data Processing Unit)
Terminologie:
Data Processor=Data aprocessing System=Data processing Unit
Definitie: Unitatea de procesare a datelor (UPD) este un sistem care
proceseaza datele achizitionate si codificate intr-o forma
recunoscuta de sistem. recunoscuta de sistem.
UPD include doua componente: componenta hardware si o componenta
software
Unitatea de procesare a datelor (I)
Componenta hardware - implementare
Componente standard (microprocesoare (uP), Componente standard (microprocesoare (uP),
microcontrolere (uC), procesoare de semnal
(DSP))
Application-Specific Integrated Circuits (ASIC)
Application-Specific Standard Products (ASSPd)
Field Programmable Gate Array (FPGA)
Solutia System on Chip (SOC)
Utilizarea uP ca procesor de date
Microprocesorul este un circuit care incorporeaza toate functiile unei
unitati centrale de prelucrare (CPU) pe un singur circuit integrat.
Unitatea centrala de prelucrare (CPU), denumita uneori procesor, este o
componenta dintr-un microcalculator, care interpreteaza programul de
instructiuni si proceseaza datele (efectueaza operatii aritmetice si instructiuni si proceseaza datele (efectueaza operatii aritmetice si
logice).
Procesorul de date include, pe linga CPU, memorii (date/program),
dispozitive intrare/iesire si dispozitve periferice. Un asemenea ansamblu
reprezinta, in general, un microcalculator.
CARACTERISTICI
Putere de procesare ridicata,
Flexibilitate in aplicatii,
Complexitate ridicata a circuitelor.
CONCLUZIE: Aceasta solutie este rar utilizata in sistemele dedicate,fara
a fi total exclusa. Este, insa, o solutie tipica pentru microcalculatoarele
din calculatoarele de uz general (in particular, calculatoarele personale).
Utilizarea uC ca procesor de date
Microcontrolerul este un circuit VLSI care include pe acelasi chip toate
elementele componente ale unui microcalculator (CPU, memorii,
dispozitive intrare/iesire, dispozitive periferice). Spre deosebire de
microcalculatoarele din calculatoarele de uz general, microcontrolerul
deserveste o aplicatie bine precizata. deserveste o aplicatie bine precizata.
CARACTERISTICI
Complextate scazuta a circuitelor precum si a aplicatiilor soft,
Prezenta unor circuite periferice si de intrare/iesire extrem de
elaborate, le recomanda pentru aplicatii de comanda a proceselor
(cele mai frecvente in aplicatiile dedicate),
Oferta extrem de larga in ce priveste performantele si la un pret de
cost scazut.
CONCLUZIE:
Microcontrolerul este componenta care se preteaza in cea mai mare
masura la implementarea procesorului de date din aplicatiile dedicate.
Implementarea procesorului de date cu DSP
Procesorul numeric de semnal este un microprocesor (microcontroler)
specializat pentru procesarea numerica a semnalelor.
CARACTERISTICI
Arhitectura specializata in scopul cresterea vitezei de executie a operatiilor
aritmetice,
Se recomanda a fi utilizat in aplicatii de calcul in timp real, care necesita Se recomanda a fi utilizat in aplicatii de calcul in timp real, care necesita
viteza de lucru ridicata precum si in aplicatiile ce impun precizie de calcul
ridicata (32 de biti),
Din ce in ce mai mult DSP sunt prevazute cu dispozitive periferice si de
intrare/iesire tipice microcontroleror, pentru a concura cu succes cu acestea
din urma,
Pretul de cost relativ ridicat (comparativ cu uC), fara a fi prohibitiv.
CONCLUZIE:
Implementarea procesorului de date utilizind DSP se justifica in cazul
aplicatiilor de prelucrari de semnale, in care precizia si mai ales viteza de
executie sunt importante (telecomunicatii, prelucrari multimedia,
comanda actionarilor electrice).
Implementarea procesorului de date cu circuite
ASIC/ASSP
ASIC (application-specific integrated circuit) este un circuit integrat
elaborat pentru a deservi o aplicatie particulara, bine precizata.
ASSPd (application specific standard products) este un circuit integrat
care implementeaza o functie specifica si care prezinta interes pentru o
clasa larga de utilizatori. ASSPd se situeaza intre ASIC si circuitele clasa larga de utilizatori. ASSPd se situeaza intre ASIC si circuitele
integrate standard, de uz general.
CARACTERISTICI
Costul implementarii cu ASIC este acceptabil numai in cazul aplicatiilor de
serie mare, care fac posibila amortizarea costului relativ ridicat al proiectarii,
Conditia mentionata este mai relaxanta in cazul circuitelor ASSPd, care se
adreseaza unei clase mai largi de utilizatori,
Procesorul de date implementat cu ASIC/ASSPd este performant deoarece
proiectarea acestuia a fost facuta pornind de la specificatiile impuse de
aplicatie.
CONCLUZIE:
Implementarea procesorului de date utilizind circuite ASIC/ASSPd este
de dorit ori de cite ori pretul de proiectare/fabricare nu este prohibitiv.
Implementarea procesorului de date cu circuite
FPGA
FPGA (field programmable gate array) este un dispozitiv electronic
continind componente logice si conexiuni programabile. Programarea
functionalitatii se face dupa fabricare, de catre utilizator (field
programmabile).
CARACTERISTICI CARACTERISTICI
Comparativ cu ASIC, solutia utilizind FPGA este mai lenta, nu suporta
aplicatii la fel de complexe iar consumul de la sursa de alimentare este mai
ridicat,
Prezinta flexibilitate ridicata,
Costuri de implementare competitive la serii mici.
CONCLUZIE:
Implementarea procesorului de date utilizind circuite FPGA se justifica
pentru serii mici si in aplicatii unde se necesita un calcul masiv paralel
(viteza mare de procesare).
Solutia SOC (system on chip)
SOC (system on chip) reprezinta o solutie de realizare a unui sistem
electronic conform careia toate componentele sistemului sunt integrate pe
acelasi chip (circuite digitale, circuite analogice, mixte, s.a.). O solutie
alternativa, mai ieftina, este SiP (system in package) in care mai multe
chipuri sunt incluse in aceeasi capsula.
CARACTERISTICI CARACTERISTICI
Consum mai redus de la sursa de alimentare si fiabilitate sporita comparativ cu
sistemele multichip,
Costurile de implementare sunt acceptabile numai in cazul unor aplicatii de
serie mare, datorita valorii ridicate a costului NRE (Non-recurring engineering -
adica costul platit o singura data pentru cercetare, proiectare si testarea unui
nou produs),
Reprezinta o solutie mai eficienta decit ASIC, deoarece poate include pe acelasi
chip si alte componente decit circuitele electronice (spre exemplu cristale de
cuart, microcomponente electromecanice, etc.).
CONCLUZIE:
Implementarea procesorului de date utilizind tehnologia SOC este de dorit
ori de cite ori pretul de proiectare/fabricare este competitiv.
Competitii actuale
Microcontroler Procesor de semnal
De regula este preferat microcontrolerul, deoarece:
Prezinta dispozitive periferice si un sistem de intrare/iesire mai
performant, performant,
Oferta mult mai larga de microcontrolere de uz general,
Pot oferi performante de calcul (viteza, precizie) comparabile cu
performantele procesoarelor de semnal (ARM).
Procesor de semnal FPGA
In cele mai multe aplicatii este preferat procesorul de semnal,
datorita costurilor mai reduse,
In aplicatiile care se necesita un calcul paralel masiv circuitele
FPGA devin competitive .
Unitatea de procesare a datelor (II)
Componentele Software
Sistemul de operare (Operating System) Sistemul de operare (Operating System)
Softul de aplicatie (Application Softvare)
Obs.: In cazul sistemelor dedicate mici
Sistemul de Operare poate lipsi
Sistemul de operare
Definitie: Sistemul de operare (SO) este un set de
programe de calcul care controleaza resursele
hardware si software ale unui calculator. hardware si software ale unui calculator.
In cazul sistemelor dedicate, SO trebuie sa fie:
De timp real (Real-time Operating System
RTOS)
Dedicat (Embedded)
Sarcinile unui sistem de operare
Planificarea proceselor (task-urilor)
Deservirea intreruperilor
Comunicarea si sincronizarea intre procese Comunicarea si sincronizarea intre procese
Managementul memoriei
Administreaza sistemul de fisiere
Asigura conectarea in reteaua de
calculatoare (TCP/IP)
Comanda Interfata Grafica-Utilizator
Ce este un RTOS ?
Un sistem de operare in timp real este capabil sa execute toate
sarcinile sale respectind anumite constringeri de timp, bine
precizate.
Citeva caracteristici:
Raspuns rapid si predictibil la evenimente externe urgente, Raspuns rapid si predictibil la evenimente externe urgente,
Comportament stabil la supraincarcari tranzitorii (cind
sistemul este supraincarcat de evenimente incit nu pot fi
respectate toate constringerile de timp impuse pentru
anumite procese, critice, timpii de executie inca trebuie
respectati)
Un inalt grad de programabilitate (constringerile de timp
ale sistemului trebuie sa fie satisfacute la un nivel ridicat de
utilizare a tuturor resurselor)
Ce este un SO dedicat ?
Un sistem de operare dedicat prezinta urmatoarele
caracteristici: caracteristici:
Dimensiuni mici (uneori sute de octeti)l
Trebuie sa fie capababil sa ruleze intervale mari
de timp (ani) fara interventie manuala
Structura unui microcalculator cu microprocesor
Arhitectura von Neuman
Microprocesorul este o componenta digitala programabila
care incorporeaza pe un singur circuit integrat toate functiile
unei unitati centrale de procesare (CPU).
Conceptul de magistrala
Microprocesor (PGA)
Arhitectura unui microprocesor
Modul de operare al CPU
Ciclu masina: o succesiune de patru
Faze (pasi) intre doua extrageri
succesive de instructiuni din memoria
program.
Fazele de exectie ale unui ciclu masina:
Extragere (fetch),
Decodificare (decode),
Executie (execute),
Scriere rezultat (writeback).
Observatii:
Un ciclu masina include de regula 2 operatii de extragere (fetch)
Executia unei instructiuni , adica un ciclu instructiune, se
realizeaza pe unul sau doua cicluri masina.
program.
Arhitectura tipica de microcontroler
Microcontrolerul (uC) este un
microcalculator pe un singur chip
utilizat pentru comanda altor utilizat pentru comanda altor
dispozitive si circuite electronice.
Un microcontroler include pe chip:
Unitatea centrala de procesare (CPU),
Memorii,
Interfete de intrare/iesire,
Dispozitive periferice integrate
(interne),
Convertoare A/D si D/A.
Microcontroler cu arhitectura HARWARD
Avantaje arhitecturii HARWARD:
Viteza de executie mai ridicata,
Siguranta sporita in functionare
Observatie: de regula, cele doua memorii sunt
conectate la CPU printr-o singura magistrala.
Structura detaliata a unui
microcontroler
Detaliu CPU al unui microcontroler
Registri inclusi in Register
File:
The Stack Pointer (SP)
Program Status Word (PSW)
Executia instructiunilor
;_________________________________________
; MAIN PROGRAM
CSEG
ORG 0000h
DEC 50H DEC 50H
NOP
END
;_________________________________________
Rezultatul executiei: este decrementat (DEC 50H ) continutul
locatiei din memoria RAM interna a microcontrolerului, avind
adresa 50H (adresare directa); instructiunea NOP nu are nici un
efect.
Instructiunea DEC
Instructiunea NOP
Setul de instructiuni
Generalitati:
Diferitele tipuri de uC include un numar variabil de instructiuni:
CISC (Complex Instruction Set Computer ) includ citeva zeci de
instructuni puternice, ortogonale (fiecare instructiune dispune
de toate modurile posibile de adresare ale operandului), de toate modurile posibile de adresare ale operandului),
RISC (Reduced Instruction Set Computer) include un set de
sute de instructiuni de complexitate mai scazuta.
Majoritatea instructiunilor sunt reprezentate in memoria program
pe 1-4 octeti (un octet ce specifica operatia si de la 0 la 3 operanzi,
separati prin virgule),
Pentru programator, instructiunile sunt specificate prin
mnemonice, acronime provenite din limba engleza si care
sugereaza natura operatiei efectuate,
Cu citeva exceeptii, instructiunile prelucreaza informatia
din memoria RAM interna a microcontrolerului.
Moduri de adresare a operanzilor
Adresare imediata: MOV A,#20h
Adresare directa: MOV A,R0 Adresare directa: MOV A,R0
MOV A,40h
Adresarea indirecta: MOV A,@R0
MOVX A,@DPTR
MOVX @DPTR,A
Instructiuni aritmetice (MCS51)
Instructiuni logice
Instructiuni de transfer
Operatii cu variabile booleene
Instructiuni de transfer a comenzii
Precizari
Organizarea memoriei program (1)
Memoria de pe chip mai mica de 64Ko
nEA Pinul External Addressing
Conectarea unei memorii program externe
PSEN Program Store Enable
P0 Adrese low (A7-A0) multiplexate in timp cu date (D7-D0)
ALE Address Latch Enable
P2 Adrese high (A15-A8)
Memorii program externe sunt rar utilizate
Faza de extragere a codului instructiunii
din memoria externa
Organizarea memoriei program (2)
Observatii:
Memoria de pe chip de 64Ko
Programare ISP (In System Programming)
Organizarea memoriei program (3)
Observatii:
Memoria de pe chip de 64Ko
Programare ISP (In System Programming) si IAP (In Application
Proramming)
Organizarea memoriei de date (1)
Observatii:
Sunt prezente 2 tipuri de memorii
de date:RAM (intern si extern) si
memorie Flash,
Accesul la memoria RAM se face Accesul la memoria RAM se face
dependent de tipul instructiunii
utilizate: cele mai multe
instructiuni acceseaza RAM intern;
RAM extern poate fi accesat prin
numai 2 instructiuni:
MOVX A,@DPTR
MOVX @DPTR,A
Zona RAM adresabila direct si indirect (1)
Memoria STIVA aici -
Zona RAM adresabila direct si indirect (2)
Rolul registrilor speciali pentru functii (SFR)
Exemplu de registri pentru
functii speciale (SFR)
Organizarea memoriei RAM de date (2) Organizarea memoriei RAM de date (2)
FLASH DATE
+
Schema de conectare a unei memorii externe
Memorii externe RAM de date sunt relativ frecvent utilizate
Faza de citire date dintr-o memorie
RAM externa
Faza de scriere date intr-o memorie
RAM externa
Memoria stiva (1)
Este o zona de memorie amplasata in memoria interna RAM si care
stocheaza temporar urmatoarele tipuri de date:
Automat, adresele de revenire din subrutine (de tratare a
intreruperilor sau subrutine apelate prin instructiuni CALL),
Prin program, continutul unor registri utilizati in subrutine si care
trebuie recontuit inainte de revenirea in progeamul principal, trebuie recontuit inainte de revenirea in progeamul principal,
Datele sunt manipulate cu instructiunile PUSH (incarca date in
stiva) si POP (extrage date din stiva).
Stiva este o memorie LIFO (last in, first out
ultimul intrat primul iesit,
Stiva poate creste in sus ca in figura sau in
jos,
Adresele de scriere/citire sunt date de registrul
Stack Pointer (SP); continutul acestuia indica
adresa ultimei locatii ocupata din stiva.
Memoria stiva (2)
Stabilirea zonei din RAM intern alocata stivei se face prin initializarea
continutului registrului SP.
Exixta posibilitatea prevenirii citirii/scrierii inafara limitelor memoriei
stiva, utilizind 2 registri: Stack Overflow respectiv Stack Underflow,
care contin adresele limita ale stivei. La atingerea lor sunt generate
intreruperi. intreruperi.
Exemple de utilizare a memoriei stiva
CSEG AT 23H
PUSH A
PUSH PSW
CALL SBRT
POP PSW
POP A
RETI
SBRT: PUSH A
PUSH PSW
-----------
-----------
POP PSW
POP A
RET
Sistemul de intreruperi
Intreruperile sunt semnale asincrone ale sistemului hardware (intreruperi
hardware) care solicita atentia unitati centrale de procesare (CPU) sau
evenimente sincrone software (intreruperi software), care indica
schimbari in executia programului.
Aparitia unei intreruperi determina salvarea starii de executie a Aparitia unei intreruperi determina salvarea starii de executie a
programului si executia unei subrutine de tratare a intreruperii, dupa care
se revine in programul principal, in punctul in care a fost parasit.
Intreruperile hardware, sunt generate de regula de evenimente externe
microcontrolerului, de interfetele de intrare/iesire sau de dispozitivele
periferice interne ale acestuia.
Intreruperile software sunt implementate cu instructiuni speciale de
intrerupere, incluse in setul de instructiuni ale microcontrolerului. Uneori,
intreruperile software sunt utilizate pentru a implementa apeluri de sistem
(System Call), prin care programele de aplicatie solicita servicii sistemului
de operare.
Controler programabil de intreruperi
(Pogrammable Interrupt Controller (PIC))
PCA Programmable Counter Array
nINT0/1 External Interrupt
IP Interrupt Priority
EA Enable All EA Enable All
Intreruperi mascabile/nemascabile!
Depasirea capacitatii N/T T0 (Timer0 Overflow)
Depasirea capacitatii N/T T1 (Timer1 Overflow)
Ce evenimente pot genera o intrerupere
hardware?
Depasirea capacitatii N/T T1 (Timer1 Overflow)
Depasirea capacitatii N/T T2 (Timer2 Overflow)
Receptia/transmisia seriala a unui caracter
Eveniment extern la intrarea nINTO
Eveniment extern la intrarea nINT1
Evenimente legate de PCA
Obs.: N/T Numarator/Temporizator (Counter/Timer
sau simplu Timer)
Secventa de Pooling
Intreruperea externa nINTO prioritate maxima
Intreruperea N/T T0
Intreruperea externa nINT1
Intreruperea N/T T1
Intreruperi generate de PCA
Intreruperile portului serial
Intreruperea N/T T2 prioritate minima
Reguli privind executia intreruperilor:
1. Executia unei intreruperi nu poate fi sistata de aparitia unei
intreruperi avind aceeasi prioritate,
2. O intrerupere cu prioritate ridicate poate intrerupe executia unei
intreruperi cu prioritate scazuta, intreruperi cu prioritate scazuta,
3. O intrerupere cu prioritate scazuta poate fi executata numai daca
nici o alta intrerupere nu este in curs de executie,
4. Daca doua intreruperi apar in acelasi timp, va fi executata mai intii
intreruperea cu prioritate ridicata. Daca ambele intreruperi au
aceeasi prioritate, va fi executata mai intii prima intreruperea
deservita de secventa de pooling.
Ce se intimpla la aparitia unei intreruperi?
1. Este savat in stiva continutul numaratorului program (Program Counter PC),
2. Sunt blocate intreruperile avind aceasi prioritate rspectiv prioritate mai
scazuta,
3. In cazul unor intreruperi (externe, temporizatoare) sunt sterse fanioanele 3. In cazul unor intreruperi (externe, temporizatoare) sunt sterse fanioanele
aferente,
4. Se transfera executia programului la subrutina de tratare a intreruperii,
5. Se executa subrutina de tratare a intreruperii, dupa care se revine in
programul principal.
Transferul executiei programului
Modalitati:
Se face salt la o adrese fixa din memoria program, unde se gaseste
adresa primei instructiuni din subrutina de tratare a intreruperii (asa
numitul vector de intrerupere) Intrerupere vectorizata
Se face salt la o adrese fixa din memoria program, unde se gaseste
prima instructiune din subrutina de tratare a intreruperii prima instructiune din subrutina de tratare a intreruperii
Sursa de
intrerupere
Fanion
Adresa
de salt
External 0 IE0 0003h
Timer 0 TF0 000Bh
External 1 IE1 0013h
Timer 1 TF1 001Bh
Serial RI/TI 0023h
Exemplu de subrutina de tratare a
intreruperii portului serial
ORG 0000H
JMP START
; Serial Interrupt
CSEG AT 23H
PUSH A
PUSH PSW
JB RI, L1
CALL TRSM
JMP L2 JMP L2
L1: CALL REC
L2: POP PSW
POP A
RETI
; Main Program
CSEG AT 50H
START: .
.
.
; Subrutine tratare intreruperi port serial
TRSM: CLR TI
.
RET
REC: CLR RI
.
RET
.
END
Portul (paralel) de intrare/iesire (I/O)
Portul este un circuit de interfata paralela, care permite conectarea unui
dispozitiv (periferic) extern la microcontroler.
Paralel datele sunt transferate (I/O) in format paralel (mai multi biti
simultan). simultan).
Observatii:
Un microcontroler are, tipic, patru porturi; numarul acestora poate fi mai
mare (opt sau chiar mai mult) sau pot lipsi cu desavirsire.
Unele porturi pot fi utilizate numai ca intrari/iesiri de uz general, altele
asigura si asa-numitele functii alternative.
In cazul unui microcontroler tipic, cu patru porturi, porturile P0 si P2 pot
fi utilizate atit ca intrari/iesiri de uz general I/O cit si pentru conectarea la
microcontroler a unor memorii externe (acestea realizeaza in exterior
magistrala de date (P0) si de adrese (P0, octetul inferior A7-A0 si P2
octetul superior A15-A8).
Functii alternative pentru portul P0
Portul paralel (de intrare/iesire I/O)
Portul P1 este utilizat, in general, ca intrari/iesiri de uz general.
Uneori, liniile sale reprezinta intrari/iesiri pentru circuitele periferice
interne (convertor A/N, convertor N/A, temporizatoare, registri de
captate/comparare, etc.).
Portul P3 este dedicat, in general, asa-numitelor functii alternative Portul P3 este dedicat, in general, asa-numitelor functii alternative
(semnalele nRD si nWR pentru comanda memoriilor externe, intrari
pentru intreruperile externe nINT0 si nINT1, intrari/iesiri pentru
interfetele seriale (SPI, I2C, CAN, UART)).
Comportamentul liniilor de port, ca intrare/iesire este progamabil.
Registrii care pastreaza temporar informatia transferata respectiv
sevesc la programarea comportamentului portului sunt plasati in
memoria RAM interna (zona SFR).
Linia de port in mod iesire: in contratimp
(push-pull) si drena in gol (open drain)
Caracteristica de transfer cu histeresis a
unei linii de port
Structura liniilor de port P0 (1)
driver
latch
T2(p)
o
Structura include un bistabil D (latch), un etaj de iesire (driver) si un
etaj separator la intrare (buffer).
buffer
driver
T1(n)
multiplexor
Structura liniilor de port P0 (2)
P0 poate fi utilizat ca intrari/iesiri de uz general respectiv, ca functie
alternativa, schimbul de date cu o memorie externa (A7-A0 si D7-D0,
multiplexate in timp), multiplexate in timp),
Intrari/iesiri de uz general (control=0):
T2 este blocat iesire drena in gol,
Pentru a utiliza linia ca intrare, se inscrie 1 in latch,
Exixta instructiuni care citesc pinul si altele care citesc latch-ul.
Accesul la memorie(control=1):
T2 accelereaza comutarea iesirii la tranzitia 0 1si asigura 1
logic la iesire,
Iesirea este in contratimp (push-pull).
Observatie: Liniile lui P0 au un comportament BIDIRECTIONAL.
Instructiuni care citesc latch-ul (2)
(read-modify-write- destinatia este un port sau bit de port)
ANL (logical AND, e.g., ANL P1, A)
ORL (logical OR, e.g., ORL P2, A)
XRL (logical EX-OR, e.g., XRL P3, A)
JBC (jump if bit = 1 and clear bit, e.g., JBC (jump if bit = 1 and clear bit, e.g.,
JBC P1.1, LABEL)
CPL (complement bit, e.g., CPL P3.0)
INC (increment, e.g., INC P2)
DEC (decrement, e.g., DEC P2)
DJNZ (decrement and jump if not
zero, e.g., DJNZ P3, LABEL)
MOV PX.Y, C (move carry bit to bit Y
of port X)
CLR PX.Y (clear bit Y of port X)
SETB PX.Y (set bit Y of port x)
Instructiuni care citesc latch-ul (2)
(read-modify-write- destinatia este un port sau bit de port)
Example: The carry tlag is originally set.The data present at input Port 3
is 11OOO1O1B. The data previously written to output Port 1 is 35H
(00110101B). (00110101B).
MOV P1.3,C
MOV C,P3.3
MOV P1.2,C
will leave the carry cleared and change Port 1 to 39H (OO111OO1B).
Structura liniilor de port P2
o T2(p)
Diferente fata de P0:
T2 este inlocuit cu un circuit electronic cu rol de rezistenta pull-up,
La accesarea memoriei externe curentul de iesire asigurat este mult
mai mare decit in regimul intrari/iesiri de uz general.
Structura liniilor de port P1 si P3
Diferente fata de P2:
Pentru functie functie alternativa trebuie inscris 1 in latch
Rezistenta de pull-up asigura un curent mare numai in cazul functiei
alternative, pe durata tranzitiei 0 1,
Ca intrare de uz general, curentul de iesire furnizat de circuitul de
pull-up este drastic diminuat => Cuasi-bidirectional
Structura interna a rezistentei pull-up
De la circitul SI-NU
Circuite temporizator/numarator
Functii:
Temporizator=> Marcarea cu precizie, prin intreruperi, a unor intervale
de timp cu durate programabile
Numarator => Numararea unor evenimente externe (tranzitii aplicate la
un pin extern) un pin extern)
Functionarea este programabila prin intermediul unor registri SFR (TMOD
si TCON)
Sunt disponibile trei circuite temporizator/numarator: T0, T1, T2
Structura de baza a unui circuit
temporizator/numarator
C/Tx => stabileste functia de numarator/temporizator
TRx > pornit/oprit functionarea (R=RUN)
Temporizatoarele T0 si T1 in
modurile de lucru 0 si 1
Temporizatoarele T0 si T1 in modurile de
lucru 2 (cu autoincarcare)
Temporizatoarl T0 in modul de lucru 3
(doua temporizatoare cu 8 biti)
Registrii SFR pentru programarea
functonarii temporizatoarelor T0 si T1
Temporizatorul T2
Moduri de lucru:
Modul captare (capture)
Modul cu autoincarcare (reload) Modul cu autoincarcare (reload)
Numarator sus/jos (up-down)
Generator unda dreptunghiulara (clock out)
Generator pentru frecventa de transmsie seriala (baud rate)
Temporizatorul T2 in modul de lucru
captare
Temporizatorul T2 in modul de lucru
cu autoincarcare
Temporiztorul numara in sus
Temporizatorul T2 in modul de lucru
numarator sus/jos
Temporizatorul T2 in modul de lucru
clock out mode
Genereaza o unda dreptunghiulara
Circuitul watch dog (WD)
WD este un circuit temporizator care reseteaza microcontrolerul
atunci cind acesta a parasit executia normala a programului.
La o executie normala a programului continutul WD este sters La o executie normala a programului continutul WD este sters
inainte sa fie atinsa capacitatea maxima de nmarare, cind este
initiata operatiunea de resetare.
Stergerea continutului WD se face cu o instructiune
corespunzatoare, plasata din loc in loc pe firul de executie
normala a programului.
Intirzierea WD poate fi programata.
In faza de punere la punct a programului functionarea WD este
inactivata.
Interfete de intare/iesire seriale
Caracteristici:
Asigurara comunicatia seriala sincrona si asincrona
Serial => bit cu bit
Asincron => schimbul de date poate incepe oricind Asincron => schimbul de date poate incepe oricind
Sincron => schimbul de date se realizeaza la
aparitia unor impulsuri de tact.
Interfete seriale tipice:
USART (Universal Syncronious/Asyncronious
Receive/Transmit
SPI (Serial Peripheral Interface)
I2C Inter Integrated Circuits)
Portul serial de intrare/iesire (I/O)
Caracteristici:
Comunicatia este full-duplex si bufferata
Interfata cu exteriorul prin linii ale portului P3 Interfata cu exteriorul prin linii ale portului P3
Registrii utilizati: SCON si SBUF
Exixta 4 moduri de lucru:
modul 0 (sincron)
Modul 1 (asincron, 8 biti de date, baud rate variabil)
Modul 2 (asincron, 9 biti de date, baud rate fix)
Modul 3 (asincron, 9 biti de date, baud rate variabil)
Comunicatia seriala asincrona
Structura interna USART
(modul asincron)
Generarea frecventei de transmisie
cu temporizatorul T2
Comunicatia seriala sincrona
Structura interna USART
(modul sincron)
Interfata RS-232
Ultima varianta a standardului EIA/TIA 232 E
TIA = Telecommunications Industry Association
EIA = Electronic Industries Alliance
Viteza maxima: 20 Kbps (116 Kbps)
Lungimea maxima a cablului: 15 m (2000 pF) Lungimea maxima a cablului: 15 m (2000 pF)
Nivelurile logice pentru date (logica negativa):
+5 .. +25 V pentru 0 logic
-5 .. -25 V pentru 1 logic
Pentru liniile de control logica este pozitiva
Frecvente de transmisie: 300, 1200, 2400, 4800, 9600, si
19200 bps
Transmisie asincrona( bit de start, date, paritate si stop)
Circuit pentru interfata RS-232
Conectorul normalizat DB9 si
semnalele utilizate
1 Data carier detect DCD
2 Received data RXD
3 Transmit data TXD
4 Data terminal ready DTR 4 Data terminal ready DTR
5 Signal ground
6 Data set ready DSR
7 Request to send RTS
8 Clear to send CTS
9 Ring indicator RI
Observ.: DTR, DSR, RTS, CTS sunt semnale
pentru protocolul de comunicatie
Conectare tipica DTE DCE
(fara semnale de protocol)
Linie telefonica
2 2 2 2
3 3 3 3 Linie telefonica
7 7 7 7
DTE DTE DCE DCE
3 3 3 3
Calculator PC Calculator PC Modem Modem
Sensul de circulatie a informatiei este inversat la DCE fata DTE !!!
Legatura cablu modem nul
2 2
DTE DTE
3 3
7 7
Utilizarea liniilor de comanda
(conectare DTE cu DCE)
TX
TX
RX RX
DTR DTR
DSR
DSR
CTS CTS
RTS RTS
DCE DTE
Modem
Calculator PC
GND
Utilizarea liniilor de
comanda
(conectare DTE cu DTE)
TX TX
RX RX
DTR DTR
DSR
DSR
CTS CTS
RTS RTS
GND
Calculator PC Calculator PC
DTE
DTE
Asigurarea locala a
validarilor
TX
TX
RX RX
DTR DTR
DSR
DSR
CTS CTS
RTS RTS
GND
DTE DTE
Calculator PC Calculator PC
Circuit de interfata pentru magistrsla
RS-232
Circuit pentru modularea impulsurilor
in durata (PWM)
Regimurile posibile de
lucru
MD2 MD1 MD0 Mode
0 0 1 Mode 1: Single Variable Resolution PWM
0 1 0 Mode 2: Twin 8-bit PWM
0 1 1 Mode 3: Twin 16-bit PWM 0 1 1 Mode 3: Twin 16-bit PWM
1 0 0 Mode 4: Dual 8-bit PWM
Mode 1: Single Variable Resolution PWM
Mode 2: Twin 8-Bit PWM
Mode 3: Twin 16-Bit PWM
Mode 5: Dual 8-Bit PWM
Introduction
I
2
C and SPI
Serial communication protocols
Meant for short distances inside the Meant for short distances inside the
box
Low complexity
Low cost
Low speed (a few Mbps at the fastest )
What is SPI?
Shorthand for Serial Peripheral Interface
Defined by Motorola on the MC68HCxx line of
microcontrollers
Generally faster than I
2
C, capable of several Mbps Generally faster than I
2
C, capable of several Mbps
Applications: Like I
2
C, used in EEPROM, Flash, and real
time clocks
Better suited for data streams, i.e. ADC
converters
Full duplex capability, i.e. communication between
a codec and digital signal processor
SPI Bus Configuration
An SPI bus example
SPI Protocol
Hardware realization is usually done with
a simple shift register
SERIAL PERIPHERAL INTERFACE
What is I
2
C?
Shorthand for an Inter-integrated circuits bus
Developed by Philips Semiconductor for TV sets
in the 1980s in the 1980s
I
2
C devices include EEPROMs, thermal sensors,
and real-time clocks
Used as a control interface to signal processing
devices that have separate data interfaces, e.g.
RF tuners, video decoders and encoders, and
audio processors.
I2C bus has three speeds:
Slow (under 100 Kbps)
Fast (400 Kbps)
Some features
Fast (400 Kbps)
High-speed (3.4 Mbps) I2C
v.2.0
Limited to about 10 feet for
moderate speeds
I
2
C Bus Configuration
2-wire serial bus Serial data (SDA) and Serial clock
(SCL)
Half-duplex, synchronous, multi-master bus
No chip select or arbitration logic required
Lines pulled high via resistors, pulled down via
open-drain drivers (wired-AND)
I
2
C Protocol
1. Master sends start condition (S) and controls the
clock signal
2. Master sends a unique 7-bit slave device address
3. Master sends read/write bit (R/W) 0 - slave
receive, 1 - slave transmit
4. Receiver sends acknowledge bit (ACK)
5. Transmitter (slave or master) transmits 1 byte of
data
I
2
C Protocol (cont.)
6. Receiver issues an ACK bit for the byte received
7. Repeat 5 and 6 if more bytes need to be transmitted.
8.a) For write transaction (master transmitting), master
issues stop condition (P) after last byte of data.
8.b) For read transaction (master receiving), master
does not acknowledge final byte, just issues stop
condition (P) to tell the slave the transmission is done
I
2
C Signals
Start high-to-low transition of the SDA line
while SCL line is high
Stop low-to-high transition of the SDA line
while SCL line is high
Ack receiver pulls SDA low while transmitter
allows it to float high
Data transition takes place while SCL is low,
valid while SCL is high
I
2
C Features
Clock stretching when the slave
(receiver) needs more time to process a
bit, it can pull SCL low. The master waits bit, it can pull SCL low. The master waits
until the slave has released SCL before
sending the next bit.
General call broadcast addresses every
device on the bus
10-bit extended addressing for new
designs. 7-bit addresses all exhausted
I
2
C Tradeoffs
Advantages:
Good for communication with on-board
devices that are accessed occasionally.
Easy to link multiple devices because of Easy to link multiple devices because of
addressing scheme
Cost and complexity do not scale up with the
number of devices
Disadvantages:
The complexity of supporting software
components can be higher than that of
competing schemes ( for example, SPI ).
Regimuri cu consum redus
Trecerea in regimurile cu consum redus se
face setind corespunzator anumiti biti dintr-un
registru de comanda (PCON) registru de comanda (PCON)
Exixta, in general, doua regimuri cu consum redus:
IDLE (inactiv)
POWER DOWN
Regimul IDLE
Functionarea CPU este sistata, dispozitivele
perifericile functioneaza, registrii interni si perifericile functioneaza, registrii interni si
iesirile porturilor isi pastreaza starea,
Iesirea din starea IDLE: prin resetare sau aparitia
unei intreruperi validata
Regimul POWER-DOWN
CPU si perifericile sunt inactive
Oscilatorul respectiv TIC (Timer interval Oscilatorul respectiv TIC (Timer interval
Counter) pot fi active/inactive
Porturile isi pastreaza nivelul logic la iesire
Consum de ordinul uA
Iesirea din regimul POWER-DOWN
Activarea pinului de RESET Activarea pinului de RESET
Ciclu deconectare-conectare a alimentarii
Intrerupere de la TIC
Intrerupere de la SPI
Intrerupere de la nINT0
Programarea memoriilor FLASH
Memoria FLASH DATE poate fi programata
cu date in cursul executiei aplicatiei, utilizind
registrii SFR corespunzatori
Memoria FLASH PROGRAM suporta doua Memoria FLASH PROGRAM suporta doua
modalitati de programare:
In-System Programming (ISP), utilizind
un program firmware (KERNEL) si UART
In Application Programming (IAP), cind
programarea se face de catre o aplicatie
scrisa de utilizator (BOOTLOADER)
In-System Programming (ISP)
Serial Programming
Inainte de incarcarea
fisierului program se
aduce microsistemul in
regim de programare regim de programare
Observatie: exixta
posibilitatea programarii
paralele utilizind porturile
paralele ale
microcontrolerului
Serial In-System Programming
Protocolul de comunicatie cu Kernelul
Comenzi disponibile
FORMATUL STANDARD INTEL HEX
Fisierul Intel HEX este un fisier text ASCII si care contine mai
multe inregistrari ce respecta formatul Intel HEX.
Aceste inregistrari constau din numere hexazecimale
reprezentind cod masina si/sau date constante.
Fisierele Intel HEX sunt utilizate frecvent pentru transfer de Fisierele Intel HEX sunt utilizate frecvent pentru transfer de
programe ce urmeaza a fi inscrise in memorii ROM sau EPROM.
Cele mai multe programatoare sau emulatoare utilizeaza
formatul Intel HEX.
Un fisier Intel HEX file este compus dintr-un numar nelimitat de
inregistrari format Intel HEX.
Fiecare inregistrare include pina la cinci cimpuri, aranjate
conform urmatorului format:
FORMATUL STANDARD INTEL HEX
Field Characters Description
1 Start code 1 An ASCII colon, ":".
2 Byte count 2
The count of the character pairs in
the data field.
3 Address 4
The 2-byte address at which the
data field is to be loaded into 3 Address 4 data field is to be loaded into
memory.
4 Type 2 00, 01, or 02.
5 Data 0-2n
From 0 to n bytes of executable
code, or memory loadable data.
n is normally 20 hex (32 decimal) or
less.
6 Checksum 2
The least significant byte of the
two's complement sum of the values
represented by all the pairs of
characters in the record except the
start code and checksum.
Tipuri de inregistrari Intel HEX
00
A record containing data and the 2-byte address at which
the data is to reside.
There are three possible types of Hex-records.
01
A termination record for a file of Hex-records. Only one
termination record is allowed per file and it must be the
last line of the file. There is no data field.
02
A segment base address record. This type of record is
ignored by Lucid programmers.
Each record may be terminated with a CR/LF/NULL
Example of INTEL HEX FORMAT
In Application Programming (IAP) or
User Download Mode (ULOAD)
Protejarea memoriei Flash
Program
Exixta mai multe regimuri de protejare a
datelor memorate:
modul lock
modul secure
Modul serial safe
Lock Mode
This mode locks the code memory, disabling
parallel programming of the program memory
Reading the memory in parallel mode and reading Reading the memory in parallel mode and reading
the memory via a MOVC command from external
memory is still allowed.
This mode is deactivated by initiating a code-erase
command in serial download or parallel
programming modes.
Secure Mode
This mode locks code in memory, disabling
parallel programming (program and
verify/read commands) as well as disabling verify/read commands) as well as disabling
the execution of a MOVC instruction from
external memory
Read/write of internal data Flash from
external memory is also disabled
This mode is deactivated by initiating a
code-erase command in serial download or
parallel programming modes.
Serial Safe Mode
This mode disables serial download capability
on the device. If serial safe mode is activated
and an attempt is made to reset the part into and an attempt is made to reset the part into
serial download mode, the part resets as a
normal reset only.
Serial safe mode can be disabled only by
initiating a code-erase command in parallel
programming mode.
SET SECURITY MODES COMMAND
Interfeta JTAG
Scurt istoric:
Standardul IEEE 1149 - "Standard Test Access Port and
Boundary-Scan Architecture a fost elaborat pentru testarea
placilor PCB echipate conform metodei de testare pe frontiera.
A fost elaborat de Joint Test Action Group (JTAG) si arhitectura A fost elaborat de Joint Test Action Group (JTAG) si arhitectura
definta de catre acestia este cunoscuta ca "JTAG boundary scan"
sau interfata JTAG.
Standardul defineste un protocol serial de comunicatie cu 5 pini
pentru accesul si comanda nivelurilor logice la pinii unui circuit
integrat ; extensii ulterioare ale standardului privesc circuite
specifice integrate pe chip si care permit accesul la insasi
resursele hardware prezente pe acesta, cu scopul depanarii
aplicatiilor.
Principiul testarii pe frontiera
Principiul testarii pe frontiera
Test Acces Port (TP)
Semnalele de comanda pentru testarea pe frontiera alcatuiesc impreuna
asa-numitul Port de Acces pentru Testare (Test Access Port (TAP)).
Acestea definesc un protocol serial pentru testarea pe frontiera a
circuitelor implementat cu un automat cu stari finite (cu 16 stari).
Sunt utilizate cinci semnale: Sunt utilizate cinci semnale:
TCK/clock synchronizes the internal state machine operations.
TMS/mode select is sampled at the rising edge of TCK to determine
the next state.
TDI/data in is sampled at the rising edge of TCK and shifted into the
device's test or programming logic when the internal state machine
is in the correct state.
TDO/data out represents the data shifted out of the device's test or
programming logic and is valid on the falling edge of TCK when the
internal state machine is in the correct state.
TRST/reset (optional), when driven low, resets the internal state
machine
Principiul testarii pe frontiera
In timpul testarii, semnalele de intrare/iesire
intra respectiv parasesc circuitul prin celulele de
testare pe frontiera (boundary-scan cells). testare pe frontiera (boundary-scan cells).
Aceste celule pot fi configurate pentru a permite
testare externa, pentru conexiuni intre chipuri sau
acces la resursele interne ale chipului, cu scop de
punere la punct a aplicatiilor.
Costul circuitelor suplimentare este minimal
comparativ cu restul circuitelor si pe deplin
justificat.
Conectarea mai multor
dispozitive supuse testarii
Testarea unei placi echipate
Etape:
Testerul aplica vectorul de test la pinii de intrare ai dispozitivului testat
Celulele de scanare pe frontiera capteaza datele aferente pinilor
monitorizati, care sunt scoase serial prin pinul TDO, pentru verificare.
Sunt introduse date prin pinul TDI.
Testerul verifica apoi datele obtinute la pinii de iesire ai circuitului. Testerul verifica apoi datele obtinute la pinii de iesire ai circuitului.
Printr-o conectare corespunzatoare pot fi testate simultan mai multe
circuite integrate de pe o placa echipata.
Pot fi depistate defecte ca pini neconectati, dispozitive lipsa, dispocitive
incorect plasate pe placa PCB, dispozitive defecte, etc..
Avantaje:
Testarea se face independent de celelalte circuite logice de pe placa
echipata.
Este redus considerabil numarul necesar al punctelor de testare (JTAG in
sine nu necesita puncte de testare) => scade pretul de fabricare si creste
densitatea de circuite plantate.
Depanarea aplicatiilor software
Unele companii include pe chip extensii (EMULATOARE) care
utilizeaza capabilitatile JTAG pentru a implementa functii de
depanare a aplicatiilor software. depanare a aplicatiilor software.
Cu un suport hardware potrivit aceasta interfata permite
incarcarea codului obiect, lansarea lui in executie, examinarea
continutului diferitilor registri, a continutului memoriei, etc..
Procedura de depanare este condusa de o aplicatie software
care ruleaza pe un calculator personal.
Familii semnificative de
microcontrolere (1)
Subiectul 01
Comentati arhitectura microcontrolerelor INTEL MCS251 si a microconvertoarelor
Analog Devices (AD). Caracterizati pe scurt fiecare dispozitiv inclus in schema bloc, explicati Analog Devices (AD). Caracterizati pe scurt fiecare dispozitiv inclus in schema bloc, explicati
denumirile prescurtate, apreciati valorile cantitative ale diferitilor parametri.
Intel 80X51
Microconvertoare AD (cu procesor 8052/ARM)
Familia de microcontrolere Intel
80X51
Microconvertoare Analog Devices
(AD) procesor 8052 (1)
Microconvertoare Analog
Devices (AD) 8052 core (2)
Microconvertoare Analog
Devices (AD) procesor ARM (3)
Generalitati privind procesorul ARM
ARM procesor RISC cu 32 de biti care detine 75% din piata de
procesoare pe 32 de biti (Advanced RISC Machine )
Proiectantii au la dispozitie unelte standard de dezvoltare de
aplicatii, sisteme de operare, aplicatii software optimizate si servicii aplicatii, sisteme de operare, aplicatii software optimizate si servicii
de asistenta in proiectare care scurteaza durata de elaborare a
aplicatiilor .
Este inclus in marea majoritate a aplicatiilor dedicate (calculatoare,
telefoane mobile, PDA, etc.).
Este inclus in FPGA comercializate, pentru a sprijini proiectantul in
elaborarea aplicatiei.
Este comercializat ca proprietate intelectuala (in 2006 2.45 billioane
unitati vindute(6.7 cents/unitate $164.1 million)
Familii semnificative de
microcontrolere (2)
Microcontrolere TI MSP430 Microcontrolere TI MSP430
Familia de microcontrolere Freescale HCS12(X)
Familia de microcontrolere MSP430
Caracteristici generale
Variante:
MSP430x1xx - Flash ROM No LCD
MSP430x2xx - Flash No LCD
MSP430x3xx - ROM/OTP LCD
MSP430x4xx - Flash/ROM LCD MSP430x4xx - Flash/ROM LCD
Caracteristici:
Arhitectura RISC, 16 biti
Consum foarte redus:
0.1-A RAM retention
0.8-A real-time clock mode
250-A/MIPS active
Familia de microcontrolere MSP430
Arhitectura
Familia de microcontrolere Freescale
HCS12(X)
Caracteristici
CPU pe 16 biti, 40 MHz
Memorie pina la 1 Mbytes Flash, 32 Kbytes RAM, 4 Kbytes EEPROM,
Interfete intrare/iesire: Interfete intrare/iesire:
6 interfete seriale SCI (asynchronous serial communications
interfaces
3 interfete SPI (serial peripheral interfaces)
Registru de captare cu 8 canale
2 convertoare A/N cu 16 respectiv 8 canale si o rezolutie de 10 biti
Circuit PWM (pulse-width modulator) cu 8 canale
5 interfete CAN (controlled area network)
2 interfete I2C
Familia de microcontrolere Freescale
HCS12(X)
Arhitectura
Alte tehnici de implemetare a procesorului
de date
Procesoare numerice de semnal
Implementarea in circuite FPGA
Implementarea cu circuite ASIC si ASSP Implementarea cu circuite ASIC si ASSP
Procesoare numerice de semnal (1)
Un procesor numeric de semnal este un microprocesor (CPU)
specializat, elaborat pentru a efectua calcule in timp real si in
special procesare de semnale.
Caracteristici functionale: Caracteristici functionale:
Elaborate pentru calcul in timp real,
Performante optime la procesarea unui flux de date,
Specializate pentru operatii aritmetice efectuate cu precizie si
mare viteza (filtrare, convolutii),
Proceseaza semnale convertite sub forma numerica si le
furnizeaza la iesire sub forma analogica,
Schimba informatii cu mediul inconjurator.
Schimbul de informatii cu mediul
inconjurator
Aplicatie tipica cu procesor numeric
de semnal
Operatii aritmetice necesare
Operatiune de filtrare (filtru FIR)
Efectuarea de operatii aritmetice cu
mare viteza
Cele mai multe prelucrari de semnal necesita operatii de adunare si
multiplicare DSP au sumator si multiplicator ce pot fi utilizate in
paralel si apelate printr-o singura instructiune.
Dispun de instructiuni speciale SIMD (Single Instruction, Multiple
Data). Data).
Intirzierile se realizeaza prin memorarea datelor in registri, pentru a
fi utilizate ulterior. Se evita utilizarea memoriei externe din motive de
viteza.
Accesarea coeficientilor
Trebuie sa fie manipulate eficient matrice de coeficienti se
utilizeaza un generator de adresa.
Urmatoarea adresa este generata pe durata ciclului de fetch sau
de memorare a rezultatului. de memorare a rezultatului.
Trasaturi arhitecturale.
Executia programului (1)
Utilizeaza, de regula, o unitate aritmetica in virgula mobila
integrata in fluxul de date pe 32 biti (simpla precizie) respectiv 64
biti (dubla precizie).
10
-308
to 10
308
Trasaturi arhitecturale.
Executia programului (2)
Utilizeaza o arhitectura Pipeline (in figura pe 5 niveluri)
IF = Instruction Fetch, ID = Instruction Decode, EX = Execute, MEM =
Memory access, WB = Register write back)
Trasaturi arhitecturale.
Accesarea memoriei
Adunarile si inmultirile in paralel necesita:
Extractia simultana (fetch) a doi operanzi
Efectuarea adunarii sau a inmultirii (de regula ambele)
Memorat rezultatul sau pastrat pentru a repeta operatiile
Solutia: Solutia:
DSP utilizeaza frecvent arhitecturi ale memoriei care permit
accesul simultan la date multiple: date si/sau instructiuni.
Procedee utilizate:
Arhitectura Harward
Arhitectura von Neumann modificata
Utilizeaza accesul direct la memorie (DMA)
Dispun de o unitate de calcul a adresei de memorie.
Arhitectura Harward
Frecvent aceasta arhitectura include o memorie cache
pentru instructiuni, lasind magistralele disponibile pentru
operanzi (Super Harvard ARChitecture - SHARC).
Implemetarea procesorului de date in
circuite FPGA
Circuitele FPGA sunt dispozitive semiconductoare ce contin circuite logice
combinatioale, secventiale si uneori blocuri de memorie, ce pot fi
interconectate corespunzator aplicatiei prin interconexiuni programabile.
Implementarea unui procesor de date intr-un FPGA se realizeaza dupa Implementarea unui procesor de date intr-un FPGA se realizeaza dupa
regulile cunoscute:
Se descriere comportamentul procesorului cu unul dintre limbajele
de descriere a circuitelor: VHDL, Verilog; aceste descrieri constituie
proprietate intelectuala (IP),
Se verifica prin simulare comportamentul procesorului,
Se genereaza si incarca fisierul de configurare a circuitului FPGA.
Pot fi implementate in acelasi FPGA mai multe procesoare de date, care
sa functioneze in paralel!
Mediu integrat pentru implemetarea
aplicatiei intr-un circuit FPGA
Implementarea cu circuite ASIC si
ASSP
ASIC (Application-specific integrated circuit) este un circuit integrat
elaborat pentru a deservi o singura aplicatie, particulara (deserveste
un singur beneficiar).
Circuitele ASIC performante pot include adesea un procesor pe 32 de Circuitele ASIC performante pot include adesea un procesor pe 32 de
biti, blocuri de memorie (ROM, RAM, EEPROM, flash) precum si alte
structuri logice SoC (System-on-chip).
Proiectarea unui ASIC presupune descrierea functionala utilizind un
limbaj HDL (Verilog, VHDL), simulare, proiectarea circuitului.
ASSP (Application-specific standard products) este un circuit integrat
care implementeaza o functie specifica si care deserveste un segment
larg de piata. ASSP-urile sunt disponibile ca si componentele
standard, off-the-shelf.
Costurile de implementarea a unui
circuit ASIC (NRE)
$2.000
$2.500
$3.000
K$ K$
K$
$0
$500
$1.000
$1.500
$2.000
180 130 90 65
Tehnologia [nm]
Costurile de implementarea pentru
ASIC si FPGA
K$ K$
ASIC
FPGA
Tehnici de elaborare a aplicatiilor
software
Medii integrate de simulare si depanare a
aplicatiilor software, aplicatiilor software,
Sisteme de dezvoltare, programe monitor,
Emulatoare
Medii integrate de simulare si
depanare a aplicatiilor software (1)
Un mediu integrat de dezvoltare (Integrated development
environment - IDE sau Integrated design environment and
integrated debugging) este o aplicatie software care asista
programatorul la dezvoltarea de programe.
Un IDE include de regula: Un IDE include de regula:
Editor de cod sursa,
Asamblor/compilator/interpretor
Depanator (debugger)
Unelte pentru elaborarea interfetei grafice-utilizator (GUI).
Editorul de cod sursa are capabilitati de highlighting si
autocompletare. Este un editor de text non document
Compilatorul este o aplicatie software care translateaza textul
scris intr-un limbaj de programare (codul sursa) intr-un alt
limbaj de programare (cod obiect).
Medii integrate de simulare si
depanare a aplicatiilor software (2)
Un compilator este utilizat pentru a translata un program sursa
scris in limbaj de nivel inalt, intr-un cod cu limbaj de nivel mai
scazut (limbaj de asamblare sau limbaj (cod) masina.
Limblajul de asamblare este un limbaj de nivel scazut ;
rezultatul asamblarii il constituie codul obiect (care se executa). rezultatul asamblarii il constituie codul obiect (care se executa).
Mediul integrat de simulare si
depanare a aplicatiilor software
uVISION
Vision2 este un IDE care combina facilitatile de administrara a
proiectului, editare a codului sursa si depanare a programelor
intr-un singur mediu, performant.
Componente:
C51 ANSI C compilator optimizat (C Cross Compiler) care creiaza din C51 ANSI C compilator optimizat (C Cross Compiler) care creiaza din
codul C sursa module obiect relocabile,
A51 Macro Assembler creiaza module relocabile din codul sursa in
limbaj de asamblare,
BL51 Linker/Locator combina modulele obiect relocabile creiate de
C51 si A51 intr-un modul obiect absolut,
LIB51 bibliotecarul (Library Manager) combina modulele obiect intr-o
biblioteca ce poate fi utilizata de linker (editorul de legaturi)
OH51 convertor cod obiect-HEX, creiaza fisiere Intel HEX din module
cod absolut.
RTX-51 sistem de operare in timp real (Real-time Operating System
RTOS) care simplifica elaborarea aplicatiilor software complexe.
Sistme de dezvoltare a aplicatiilor
C
D
4 3 2 1
D
C
C10
0. 1uF
C9
0. 1uF
AVDD
P1.0/ADC0/T2
1
P1.1/ADC1/T2EX
2
P1.2/ADC2
3
P1.3/ADC3
4
P1.4/ADC4
11
P1.5/ADC5/SS
12
P1.6/ADC6
13
P
1
.
7
/
A
D
C
7
1
4
AVDD
5
AGND
6
CREF
7
VREF
8
DAC0
9
DAC1
10
R
E
S
E
T
1
5
P
3
.
0
/
R
x
D
1
6
P
3
.
1
/
T
x
D
1
7
P
3
.
2
/
I
N
T
0
1
8
P
3
.
3
/
I
N
T
1
/
M
I
S
O
1
9
D
V
D
D
2
0
D
G
N
D
2
1
P
3
.
4
/
T
0
2
2
P
3
.
5
/
T
1
/
C
O
N
V
S
T
2
3
P
3
.
6
/
W
R
2
4
P
3
.
7
/
R
D
2
5
S
C
L
O
C
K
2
6
SDATA/MOSI
27
P2.0/A8/A16
28
P2.1/A9/A17
29
P2.2/A10/A18
30
P2.3/A11/A19
31
XTAL1
32
XTAL2
33
DVDD
34
DGND
35
P2.4/A12/A20
36
P2.5/A13/A21
37
P2.6/A14/A22
38
P2.7/A15/A23
39
E
A
4
0
P
S
E
N
4
1
A
L
E
4
2
P
0
.
0
/
A
D
0
4
3
P
0
.
1
/
A
D
1
4
4
P
0
.
2
/
A
D
2
4
5
P
0
.
3
/
A
D
3
4
6
P
0
.
4
/
A
D
4
4
9
P
0
.
5
/
A
D
5
5
0
P
0
.
6
/
A
D
6
5
1
P
0
.
7
/
A
D
7
5
2
D
G
N
D
4
7
D
V
D
D
4
8
U2
ADuC841BS62
C14
27pF
C13
27pF
+ C3
10uF
C15
0. 1uf
DVDD
P1.0
P1.1
P1.2
P1.3
DAC0
DAC1
P1.4
P1.5
P1.6
P1.7
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
SCLK
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
ALE
PSEN
EA
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
DVDD
AVDD
DVDD
TXD
RXD
R2
1K
DVDD
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
J3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
J2
C1
0. 1uf
P1.0
P1.1
P1.2
P1.3
DAC0
DAC1
P1.4
P1.5
P1.6
P1.7
P
3
.
2
P
3
.
3
P
3
.
4
P
3
.
5
P
3
.
6
P
3
.
7
S
C
L
K
A
L
E
P
S
E
N
E
A
MOSI
123
J4
JMP1X3
Programming Application
P
0
.
7
P
0
.
6
P
0
.
5
P
0
.
4
P
0
.
3
P
0
.
2
P
0
.
1
P
0
.
0
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
C2
0. 1uF
CREF
CREF RESET
R
E
S
E
T
XTAL2
XTAL2
P0.[0..7]
P1.[0..7]
R5
10K
Q1
14.7456MHz
1 2 3 4
A
B B
A
Title
Number Revision Size
A4
Date: 13-Nov-2006 Sheet of
File: D:\PROJECTS\3Projects UD\dL841-232\Hardware\dL841-232.Ddb Drawn By:
C16
0.1uf
DVDD
S1
SW-PB
DVDD
0. 1uf
DVDD
SCLK P2.2
P2.1
P2.0
MOSI
1
2
3
4
5
CON26
25
26
CON26
C1+
1
V+
2
C1-
3
C2+
4
C2-
5
V-
6
T2OUT
7
R2IN
8
R2OUT
9
T2IN
10
R1OUT
12
R1IN
13
T1OUT
14
GND
15
T1IN
11
VCC
16
U1
MAX232A
C7
0.1uF
C5
0.1uF
C6
0. 1uF
C4
0.1uF
DVDD
C8
0.1uF
1
6
2
7
3
8
4
9
5
J1
DB9
CTS
Rx
RTS
Tx
1
2
4
G
N
D
3
V
C
C
5
U3
NC7S08MS
R1
10K
DVDD
DVDD
RXD
AVDD
+
C11
10uF
R4
470
D1
LED
DVDD
1
2
3
J5
3PIN
D2
SM4004
R3
1. 6
Vin
1
G
N
D
2
+Vout
3
U4
LD1117DT50TR
+ C12
22uF
TXD
P
3
.
2
P
3
.
3
P
3
.
4
P
3
.
5
P
3
.
6
P
3
.
7
S
C
L
K
R
E
S
E
T
P2.[0..7]
P3.[2..7]
Emulatoare
Emularea hardware este procesul de imitare a comportamentului uneia
sau a mai multor componente hardware , incluse in sistemul proiectat,
cu o alta componenta hardware, numita sistem de emulare sau
emulator.
Se implementeaza prin interfete specifice incluse in chip, spre exemplu
BDM (Background Debug Mode) si accesate prin interfata JTAG => ICE
De cele mai multe ori este emulata UCP a microcontrolerului.
Programarea sistemelor
dedicate
Elaborarea componentei software a unui sistem dedicat este o
activitate importanta, consumind cca 70% din timpul de
proiectare al ansamblului. proiectare al ansamblului.
Modalitati de programare:
In limbaj de nivel scazut (asamblare)
In limbaj de nivel inalt (C/C++)
Metoda combinata (C/C++ cu unele parti critice din
program elaborate in limbaj de asamblare.
Programarea in limbaj de
asamblare (1)
Limbajul de asamblare constituie o reprezentre simbolica a
codului masina si a constantelor necesare pentru a programa o
UCP.
Obs.: Codul masina reprezinta un sistem de instructiuni si date
ce pot fi direct interpretate si executate de catre UCP. ce pot fi direct interpretate si executate de catre UCP.
Caracteristici:
Limbajul de asamblare este definit, de regula, de fabricantul
hardware-ului si se bazeaza pe abrevieri sugestive
(mnemonice) care sugereaza efectul instructiunii, registrii
implicati, etc.
Limbajul de asamblare este specific unei arhitecturi fizice
sau virtuale de UCP (nu este deci PORTABIL).
Programarea in limbaj de
asamblare (2)
Caracteristici (continuare):
Programarea in limbaj de asamblare este mai dificila
(necesita cunoasterea arhitecturi hardware, risc mare de
aparitie a erorilor, productivitate scazuta);
Conduce la un cod masina optim (dimensiuni mici si viteza Conduce la un cod masina optim (dimensiuni mici si viteza
mare de executie).
Limbajul de asamblare este utilizat actualmente pentru
comanda directa a subansamblului hardware, pentru portiuni
de program care necesita viteza sporita de executie,
memorie program de mica capaciate (drivere pentru
dispozitive hardware, sisteme dedicate, sisteme de timp
real).
Programarea in limbaj de
asamblare (3)
Asamblorul este un program utilitar care translateaza
instructiunile din limbaj de asamblare in instructiuni cod masina
specifice procesorului utilizat. Translatare este izomorfica (unu-
la-unu) de la mnemonice la instructiuni si date cod masina. la-unu) de la mnemonice la instructiuni si date cod masina.
Observatie:
Unele asambloare, numite macroasambloare, suporta
macrouri , adica simboluri care substituie o secventa de linii
program (instructiuni, date). Odata definit ca pseudocod,
numele macroului poate fi utilizat in locul codului operational
pe care il echivaleaza.
Structura unui program in
limbaj de asamblare
Declaratii
Org 0000h
jmp start
Tratare intreruperi
Cseg at 50h
start: mov a,#23h
.
Program principal
Subrutine
End
Exemple de programe scrise
in limbaj de asamblare
Aplicatia 1Blink.asm
Aplicatia 2ADCsingl.asm Aplicatia 2ADCsingl.asm
Aplicatia 3DACsine.asm
Aplicatia 4UARTIO.asm
Aplicatia 5PSMon.asm
Instructiuni aritmetice
Instructiuni logice
Instructiuni de transfer
Operatii cu variabile booleene
Instructiuni de transfer a comenzii
Precizari
Microconvertorul Analog Devices
ADuC 841
Aplicatia 2ADCsingl.asm
Registri utilizati (1)
Aplicatia 2ADCsingl.asm
Registri utilizati (2)
Aplicatia 2ADCsingl.asm
Registri utilizati (3)
Aplicatia 2ADCsingl.asm
Registri utilizati (4)
Aplicatia 2ADCsingl.asm
Registri utilizati (5)
Aplicatia 3DACsine.asm
Registri utilizati
Aplicatia 5PSMon.asm
Registri utilizati

You might also like