Documente Academic
Documente Profesional
Documente Cultură
Curs 2
Magistrale
• Magistrala este suportul fizic care permite transferul
datelor intre diverse subsisteme ale unui sistem de
prelucrare a datelor.
• La o magistrala se conecteaza un numar de emitatori de
date si un numar de receptori de date.
Accesul la o magistrala
• In principiu, accesul la o magistrala este
bidirectional – transmitatorii pot deveni
receptori si invers.
• Un singur transmitator poate fi activ pe
bus la un moment dat.
• Rezulta ca este necesar un “arbitru” care
sa controleze accesul la magistrala (bus).
• Inntr-un sistem de calcul, arbitrarea
accesului la bus o face unitatea centrala.
Tipuri de drivere de bus
• Circuitele logice “conventionale” au iesiri
cu doar doua stari posibile.
• In consecinta, nu se pote lega impreuna
doua sau mai multe iesiri de circuite
logice.
• Au fost gasitye doua solutii pentru aceasta
problema: folosirea unor drivere open
collector, sau a unor drivere tri-state.
Magistrale cu drivere open collector
• Starea de repaus a bus-ului este recesiva (HIGH)
Magistrale cu drivere tri-state
• Starea de repaus a busului este HIGH-Z
Un exemplu de semnale de control
al transferului de date
• Data generata de XMT1 este dirijata catre REC3
Conceptul de “adresa”
• Pentru a gestiona corect transferurile de
date intre diverse emitatoare si receptoare
este necesar ca fiecare “resursa” sa aiba
un cod unic de identificare, denumit
“adresa”.
• Multimea tuturor combinatiilor posibile de
adrese formeaza “spatiul de adrese”.
• Semnalele de control ale transferurilor se
genereaza prin decodificarea adreselor.
Decodificatoare
• Un decodificator este un circuit logic
combinational cu N intrari si 2^N iesiri
(uzual iesirile sunt active LOW).
• Pentru orice combinatie posibila a
intrarilor, o singura iesire este activa.
Exemplu de decodificator
74138-un decodificator uzual
Un exemplu de sinteza a semnalelor de
selectie –consideram circuitul urmator – un
REGISTRU de 4 biti
Exemplu de sinteza a semnalelor
de selectie
• Circuitul prezentat este un registru de 4 biti.
• Presupunem ca avem 8 astfel de circuite. Sunt
deci necesare 3 linii de adresa A0-A1-A2.
• Se pune problema sintezei logice a semnalelor
de selectie READ0-READ7 si WRITE0-WRITE7.
• Observam ca WRITE0-7 sunt active pe frontul
crescator iar READ0-7 sunt active LOW.
Exemplu de sinteza a semnalelor
de selectie
• Avem nevoie de 3 linii de adresa: A0-A2
• RDL, WRL indica operatii de citire, respectiv scriere
• CLK este un clock de sincronizare
• Circuitul are 16 iesiri READ0-7 si WRITE0-7
Exemplu de sinteza a semnalelor
de selectie
Circuite de memorie
• O “memorie” este un dispozitiv capabil sa stocheze date
in format binar.
• Un bistabil de tip D este o celula de memorie de 1 bit.
• Un “registru” este un grup de bistabili accesabili simultan
si poate fi privit ca o “locatie” de memorie.
• Capacitatea unei memorii indica volumul de informatie
(masurat in biti sau octeti) pe care memoria respectiva il
poate stoca.
• Uneori capacitatea e raportata sub forma 1Kx4, 8xX8,
1kx32
• Circuitul descris anterior este o memorie 8x4 (8 locatii de
cate 4 biti).
Memorii RAM
• RAM este un acronim de la Random Access
Memory (pot fi scrise si citite in orice moment)
• Memoriile RAM sunt “volatile” – in sensul ca isi
pierd informatia la deconectarea tensiunii de
alimentare
• Memoriile RAM “statice” pot pastra informatia un
timp nedeterminat, cu conditia sa fie alimentate
cu energie.
• Elementul constitutiv de baza al memoriilor RAM
statice este bistabilul tip D.
Exemple de memorii RAM statice
Memorii RAM dinamice (DRAM)
• Principiul de functionare
Caracteristicile memoriilor DRAM
• Un bistabil dintr-o memorie RAM statica necesita 6
tranzistori MOS.
• O celula de memorie DRAM necesita doar un
condensator si un tranzistor.
• In consecinta, memoriile DRAM permit densitati mai mari
de integrare (capacitati mai mari) si sunt mai ieftine.
• Dezavantajul este ca datele se pierd daca nu sunt
accesate un anumit timp (de ordinul milisecundelor).
• Este nevoie de “refresh” pentru pastrarea datelor.
Memorii ROM (Read Only Memory)
• Sunt NEVOLATILE
• Principiul de functionare al primelor memorii ROM:
Memorii PROM
• Sunt reprogramabile
• Stocarea informatiei se face tot in niste capacitati cu
pierderi extrem de mici, astfel incat pot pastra datele
peste 10 ani.
• Necesita circuite speciale de programare.
• Stergerea se face cu o procedura speciala. De exemplul
la memoriile EPROM, stergerea se face prin expunere
relativ indelungata la raze ultraviolete (de ordinul 10-
20minute).
• Memoriile OTP (One Time Programmable ROM) sunt –
de regula – niste EPROM-uri in capsula fara geam.
Memorii EEPROM
• EEPROM – Electrically Erasable PROM
• Stergerea se face cu o tensiune “mare”, (de ordinul 12V)
generata intern cu o “pompa de sarcina”.
• Se pot sterge si scrie locatii individuale una cate una, dar
admit si stergerea unor blocuri sau a intregului chip
(“bulk”).
• Operatiile de stergere si scriere dureaza un timp de
ordinul milisecundelor. Citirea e rapida (zeci sau sute de
nanosecunde).
• Suporta un numar limitat de cicluri de stergere/scriere
(10.000-100.000)
Memorii FLASH
• Principial seamana cu EEPROM-urile in ce priveste
modul de stocare si stergere a informatiei.
• Diferenta: contin in plus un buffer RAM iar accesul la
scriere si stergere se face la nivelul unor blocuri de
dimensiune egala cu dimensiunea bufferului RAM.
• Exista doua tehnologii noi de realizare a memoriilor
FLASH.
• NOR FLASH – permit acces aleator la scriere, sunt
rapide, dar au capacitati mai mici si sunt mai scumpe.
• NAND FLASH – ceva mai greu de accesat, dar au
capacitati mai mari si sunt mai ieftine.
Memorii RAM nevolatile
• O metoda destul de larg raspandita de pastrare
a continutului unor memorii RAM este folosirea
unei baterii care mentine alimentarea chipului
chiar la intreruperea sursei principale.
• MRAM – Magnetoresistive RAM
• Stocheaza data in asa-numite Magnetic Tunnel
Junctions (MTJs)
• Spre deosebire de EEPROM/FLASH nu au
limita la numarul de cicluri de scriere/setrgere.
Exemple de memorii ROM uzuale
Magistrale externe la
microprocesoarele uzuale
Exercitiu: Conectarea unei memorii externe
ROM la un microprocesor Z80
Exercitiu: Z80 cu RAM extern
Exercitiu: Z80 cu porturi paralele
externe
Arhitectura calculatoarelor
Curs 3
Structura unitatii centrale
Unitatea aritmetica si logica (ALU)
• Pornim de la un exemplu de proiectare
Structura ALU
Numaratorul de adrese
Acumulatorul si registrul de conditii
Registrul de instructiuni
Registre-acumulator multiple
Memorie RAM externa –
arhitectura Harvard
Memorie RAM externa Arhitectura
Von Neumann
Fazele executiei unei instructiuni
• Extragerea instructiunii din memoria de
program (fetch)
• Decodificarea – identificarea operatiei si a
operanzilor
• Extragerea operanzilor (din registrele
interne sau din ROM/RAM)
• Executia propriu-zisa
• Stocarea rezultatului (intr-un registru intern
sau direct in RAM)
Structura generala a unei
instructiuni
Moduri de adresare a operanzilor
• Notatii:
• A – continutul campului “adresa operand”
din corpul instructiunii
• AE – Adresa efectiva
• (M) – continutul locatiei M
Adresarea imediata
• Campul “Adresa operand”, din corpul
instructiunii, contine chiar operandul
• Corolar – pentru ca instructiunile se iau din
memoria de program (ROM) rezulta ca
operanzii adresati imediat sunt intotdeuna
constante.
• Exemplu (HC11): LDAA #$A5
Adresarea directa
Adresarea indirecta
Adresarea indexata
• AE=(X)
• X este un registru special denumit
“registru index”. X e un registru de 16 biti
• Optional se poate specifica un
deplasament care se aduna la X pentru a
obtine valoarea adresei efective
• Exemplu: LDAA 5,X
• Se incarca acumulatorul A de la adresa
(X)+5
CISC si RISC
• CISC – Complex Instructions Set
Computer
• RISC – Reduced Instructions Set
Computer
• CISC e de obicei asociat cu arhutectura
Von Neumann
• RISC e de obicei asociat cu arhitectura
Harvard
Conceptul de STIVA (Stack) si
Stack Pointer-ul
• Stiva este o zona de memorie RAM adresata
indexat, folosind un registru index special
denumit Stack Pointer (SP).
• La majoritatea procesoarelor SP este
decrementat automat la fiecare operatie de
depunere in stiva, si incrementat la extragere.
• Corolar: SP se initializeaza cu ultima adresa de
RAM
• Accesul la stiva este LIFO
• Exista instructiuni speciale pentru accesul la
stiva (PUSH, PULL)
Exemple de utilizare a stivei
• Pentru salvarea adresei de intoarcere in
programul principal la apelarea unei
subrutine
• Pentru salvarea curenta a continutului
unor registre
• Pentru salvarea “starii” masinii in cazul
recunoasterii unei intreruperi.
Conceptul de intrerupere
• Intreruperile sunt un mecanism prin care se permite unei
unitati de prelucrare a datelor sa reactioneze la
evenimente externe, asincrone fata de executia
programului curent.
• E nevoie de un semnal hardware care sa indice aparitia
evenimentului extern
• Se salveaza “starea” CPU
• Se executa o rutina de tratare a intreruperii (ISR –
Interrupt Service Routine)
• Se restaureaza starea si se reia executia programului
principal din punctul unde a fost intrerupt.
• Daca apar mai multe intreruperi simultan, se vor trata
dupa o ordine de prioritati predefinita (hardcoded).
Recapitulare – Structura interna a
CPU
• ALU
• Registrul numarator de program PC
• Registrul de adrese. Se incarca fie cu continutul
PC, fie cu adresa operandului. Continutul lui e
scos pe magistrala de adrese a sistemului.
• Registrul de instructiuni – este incarcat din
memoria de program in ciclul de fetch si mentine
opcode-ul pe toata durata executiei
• Acumulatorul (unul sau mai multe)
Structura interna a CPU -
continuare
• Un numar de registre de uz general
• Unul sau mai multe registre index
• Un registru SP – index pentru stiva
• Un “registru de conditii” sau “de stare” –
contine bitii de conditie (ZVCN) care se
testeaza in cazul salturilor conditionate.
Arhitectura calculatoarelor
curs 4
Evolutia magistralelor in PC
Evolutia microprocesoarelor
1971 I4004 4 biti primul uP
Pin 1 DATA
Pin 2 Not connected
Pin 3 GND
Pin 4 +5 V DC at 275 mA
Pin 5 CLK
Pin 6 Not connected
Detalii constructive – mouse-ul mecanic
Mouse-ul optic - principiul de functionare
Numarul de
tranzitii este redus
la jumatate la
MFM
Schema logica a unui circuit de codare MFM
Codificarea RLL (Run Length
Limited)
• Exista mai multe variante de RLL, specificate
sub forma RLL(x,y) unde x (run length) este
numarul minim de “spatii” intre doua tranzitii
succesive, iar y (run limit) este numarul maxim
spatii. Cea mai uzuala varianta este RLL 2,7.
• “Spatiile” intre doua tranzitii (inversari ale fluxului
magnetic) sunt egale cu jumatate de timp de bit
• La RLL se codifica secvente de pana la 4 biti
succesivi si nu biti individuali.
Pattern-uri predefinite la RLL 2,7
R- Reversal (inversare de flux)
N – Lipsa tranzitie
Inainte de codarea propriu-zisa
octetul este analizat si divizat un
grupe care sa corespunda cu o
secventa de pattern-uri predefinite.
Exemplu:
Octetul 10001111 se poate
descompune in 10-0011-11 si se va
codifica in: NRNN-NNNNRNNN-
RNNN
R si N se refera la intervale egale cu
½ timpi de bit.
Interfata cu floppy-disk-ul
Structura FDC
Cablul de conexiune intre FDD si FCD
Descrierea functionarii interfetei cu FDD
Cursul nr. 10
Interfata USB
USB
– Introducere
– Caracteristici
– Topologia magistralei
– Versiuni USB
– Cabluri şi conectori
– Interfaţa electrică
– Tipuri de transfer
– Tipuri de pachete
– Descriptori
Introducere
• USB – Universal Serial Bus
• Dezvoltată în 1995 de un grup de firme:
HP, Compaq, Intel, Lucent, Microsoft,
NEC, Philips
• USB Implementers Forum (www.usb.org)
• Motivaţii:
– Simplificarea conexiunilor cu perifericele
– Asigurarea unor rate de transfer ridicate
– Uşurinţa utilizării (“Plug and Play”)
– Eliminarea restricţiilor datorate resurselor
hardware insuficiente
Caracteristici
• Detectează adăugarea unui nou periferic
• Determină resursele necesare perifericului
• Adăugarea şi eliminarea unui periferic se
pot realiza fără oprirea calculatorului
• Este posibilă o conexiune de tip arbore, cu
până la 127 de periferice
• Perifericele se pot alimenta cu +5 V prin
cablu
• Arhitectură master/slave (gazdă/dispozitiv):
transferuri de date iniţiate de master
Topologia magistralei (1)
• Distribuitoare
(“hub”)
• Funcţii
(dispozitive)
Topologia magistralei (2)
• Distribuitoare USB
– Recunosc conectarea dinamică a unui
periferic
– Asigură o putere de cel puţin 0,5 W pentru
fiecare periferic în timpul iniţializării
– Pot asigura o putere de până la 2,5 W
pentru funcţionarea perifericelor
– Fiecare distribuitor constă din:
• Repetor: comutator
• Controler: registre de interfaţă pentru
comunicaţia cu calculatorul
Topologia magistralei (3)
• Specificaţiile USB
originale definesc mufe
şi socluri de tip A şi tip B
• Gazdă şi distribuitor:
soclu de tip A
(dreptunghi)
• Periferic: soclu de tip B
(pătrat)
• În general, cablurile
conţin numai mufe
Cabluri şi conectori (3)
Token
Data
Handshake
Structura pachetelor USB (2)
• Campul SYNC are 8 biti – e folosit pentru
sincronizarea ceasului de esantionare a datelor
lareceptor
• Campul PID (Packet IDentifier) are 4 biti, dar se
transmite de doua ori
Valori posibile ale PID
Structura pachetelor USB (3)
• Campul ADDR contine adresa endpoint-ului destinatie.
Are 7 biti, ceea ce permite 128 combinatii.
• Adresa 0 este rezervata pentru device-urile care nu au
primit inca o adresa prin procesul de enumerare.
• Campul ENDP are 4 biti si contine adresa endpoint-ului
destinatie a transferului. Endpoint-ul cu adresa 0 este
rezervat pentru pachete de configurare.
• Dispozitivele low speed au numarul de endpoint-uri
limitat la 4.
• Campul CRC are 5 biti pentru pachete de tip token si 16
biti pentru pachete de date.
• Campul EOP (End Of Packet) are 3 biti.
Pachetele de tip SOF (Start of Frame)
• Se transmit de catre HOST pentru a marca
inceputul fiecarui “cadru” (1ms sau 125us).
Contin a dresa de 11 biti a cadrului impachetata
astfel:
Descriptori USB
• Descriptorii USB sunt structuri ierarhice de date,
destinate sa transmita catre HOSt informatii despre, tipul
dispozitivului, producatorul, versiunea de USB suportata,
numarul si tipul de endpoint-uri pe care le contine, etc.
Tipurile uzuale de descriptori sunt:
• Device Descriptors
• Configuration Descriptors
• Interface Descriptors
• Endpoint Descriptors
• String Descriptors
Descriptori USB (2)
Aplicatia software USB Trace
(Sysnucleus)
Bibliografie
• John Hyde – USB Design By Example, A
Practical Guide to Building I/O Devices, Intel
University Press
• USB in a Nutshell – www.beyondlogic.org
Arhitectura calculatoarelor
Curs 11
Interfete de retea Ethernet
Interfete pentru achizitii de date
Interfete Ethernet - Introducere
• Este descrisa de standardul IEEE 802.3
• Este bazata pe o comunicatie seriala
asincrona cu viteze de 10Mb/s, 100Mb/s,
1Gb/s
• La nivel fizic, transmisia si receptia datelor
se face diferential, pe 4 fire (TX+, TX-,
Rx+, Rx-)
• Codificarea datelor se face in sistem
Manchester (Date XOR Clock)
Structura generala a unei interfete
Ethernet
Circuite tipice de interfata Ethernet
CS8900
Un exemplu de transceiver SPI-Ethernet
Microchip ENC28J60
Circuite de izolare galvanica
Conectori si cabluri
Protocolul Ethernet (IEEE802.3) din perspectiva
modelului OSI
Topologii de retea Ethernet. Topologiile
folosite uzual sunt Star si Tree
Hub-uri si Switch-uri
Curs 12
Proiectarea unui micro-PLC
Formularea problemei
• Folosind exclusiv resursele interne ale
unui microcontroller (ATMEGA16), ne
propunem sa proiectam o “masina
virtuala” care sa emuleze un micro-PLC.
• Se pune deci problema crearii unei masini
logice programabile, care sa poata
executa intructiuni codificand operatii
asupra unui set de resurse (intrari/iesiri
digitale/analogice, timere, etc.
Identificarea si Codificarea
Resurselor
Definirea setului de instructiuni
Limbaje de programare pentru PLC-uri
• Limbajul bazat pe diagrame tip scară (Ladder
Diagram, LD)
• Limbajul bazat pe “blocuri funcţionale” (Function
Block Diagram, FBD)
• Limbajul bazat pe “text structurat” (Structured
text, ST)
• Limbajul bazat pe o lista de instrucţiuni
(Instruction List, IL)
• Limbajul bazat pe diagrame funcţionale
secvenţiale (Sequential Function Chart, SFC)
IEC-61131-3 Limbajul “scara”
(Ladder language)
C1 (( A B) C )
C2 D E
IEC-61131-3 Limbajul FBD
(Function Block Diagram)
Exemplu:
AND O0,I0,I1,Y1,1L
Lista functiilor (instructiunilor)
Functii elementare:
AND, NAND
OR, NOR
XOR
FF – Flip-Flop
TIMER
COUNTER
ACOMP – Analog comparator
DCOMP – Digital comparator
STORE – echivalent cu MOVE intre resurse
STORE IMMEDIATELY – initializarea cu constante
Optiuni simplificatoare
-Programul user se stocheaza in EEPROM
-Alocam 8 biti pentru adresarea operanzilor.
-Rezulta ca toate resursele sistemului pot fi organizate ca o
tabela cu 256 de locatii (denumita rt[RSIZE])
Consecinte
Destinaţia oricărei funcţii este întotdeauna adresată
direct.
Aceasta înseamnă că rezultatul operaţiei indicate de
funcţie va fi stocat în tabelul de resurse rt[RSIZE] şi nu
va afecta imediat ieşirile fizice ale sistemului.
De asemenea, intrarile fizice nu sunt automat
reflectate de variabilele din tabelul rt[] cu care sunt
asociate.
In consecinta, sunt necesare instructiuni speciale SOC
(Start of Cycle) si EOC (End of Cycle), care sa asigure
sincronizarea intre variabilele din tabelul de resurse si
intrarile/iesirile fizice ale sistemului.
Executia programului
Observatii privind executia programului
Un ciclu de execuţie a programului începe la detectarea
funcţiei speciale SOC (Start Of Cycle), care comandă
citirea stării intrărilor fizice (digitale şi analogice) şi
actualizarea variabilelor asociate din tabelul de resurse
rt[RSIZE].
În continuare se evaluează fiecare funcţie, iar rezultatele
operaţiilor indicate se stochează in variabilele specificate
ca destinaţie din rt[RSIZE].
La recunoaşterea funcţiei EOC (End Of Cycle) se
actualizează starea ieşirilor fizice ale sistemului cu valorile
din rt[RSIZE] şi se resetează numărătorul de program,
ceea ce este echivalent cu începerea unui nou ciclu de
execuţie.
Observatii privind executia programului (2)
Între momentele de început şi sfârşit de ciclu, toate
operaţiile se desfăşoară asupra variabilelor din tabelul
rt[RSIZE]. Din acest motiv, rareori are importanţă ordinea în
care sunt definite funcţiile în program. Decizia privind
modificarea stării ieşirilor se ia după evaluarea tuturor
funcţiilor.
Durata totală de execuţie a unui ciclu de program depinde
de numărul de funcţii definite în program.
Durata medie de evaluare şi execuţie a unei funcţii este de
aproximativ 0.4ms.
Numărul maxim de funcţii, pentru un buffer EEPROM
pentru stocarea programului de 512 octeţi, este de circa
100. Aşadar, timpul de execuţie a unui ciclu de program se
situează, aproximativ, în intervalul [1ms, 40ms].
Sintaxa instructiunilor – Functii logice
OP1 OP1
OP2 Yi OP2 Yi
AND OP3 NOR
OP3
OP4 OP4
OP1 OP1
OP2 Yi OP2 Yi
NAND OP3 XOR
OP3
OP4 OP4
SET FF DEST,SET,RESET,PRIORITY
S PRIORITY=0 RESET PRIORITAR
Yi
PRIORITY=1 SET PRIORITAR
R
RESET Exemplu:
FF O1, I0, I1, 1L
Sintaxa instructiunilor – Comparatoare
analogice
ACOMP DEST, OP1, OP2
DEST este o resursa booleana
OP1, OP2 sunt resurse de tip
octet
DEST=1 dacă OP1>=OP2
OP1 + Exemplu:
Yi ACOMP O0, A0, M1
Are ca efect activarea iesirii
OP2 -
O0 atunci cand valoarea
intrarii analogice A0
depaseste valoarea din M1
Sintaxa instructiunilor – Comparatoare
digitale
DCOMP DEST,OP1,OP2,MASK
DEST=1 dacă
OP1 Yi
DCOMP (OP1&MASK)==(OP2&MASK)
OP2 Exemplu:
M
DCOMP Y1,M0,M1,$0F
Y1=1 daca cei mai putin
semnificativi 4 biti ai M0 si M1
sunt identici.
Sintaxa instructiunilor –
STC - STORE on Condition
STC DEST,SRC,COND,EDGE
Transfer condiţionat între
variabile
SRC->DEST la tranziţia
specificată de EDGE a variabilei
COND DEST=SRC indicate de COND
Nota:
EDGE=0 – palier LOW
EDGE=1 – front crescator
EDGE=2 – front descrescator
EDGE=3 – palier HIGH
Sintaxa instructiunilor –
STIC - STORE IMMEDIATELY on Condition
STIC DEST,K,COND,EDGE
Iniţializare condiţionată a unei
variabile
COND DEST=K
K este o constantă adresată
imediat
K->DEST la tranziţia specificată
de EDGE a variabilei indicate
de COND
Sintaxa instructiunilor –
NUMARATOARE
COUNTER DEST,DIR,CLOCK,EDGE
DIR
Valori predefinite pentru EDGE:
Clock RISE, FALL
Valori predefinite pentru DIR – UP,
DEST DOWN
Exemplu:
COUNTER M0, UP, I0, RISE
Nota:
Numaratoarele NU fac overflow
Sintaxa instructiunilor –
TIMERS
TIMER TMR#,TYPE,INPUT,EDGE,K
TMR# Numărul de ordine al timerului
Valori predefinite pentru TYPE –
MONO,OSC
EDGE : RISE, FALL, 0, 3
Input YTMRx
Exemplu:
K
TIMER 0, OSC, 1L, 3, 5
Genereaza in variabila YTMR0 un ceas
cu perioada 2x5x10ms
TIMER 8, MONO, I0, RISE, 5
Genereaza la YTMR8 un impuls cu
durata de 5x100ms care incepe odata
cu frontul crescator al intrarii I0
Sintaxa instructiunilor –
TIMERS (2)
Timerele sunt predefinite
Exista un numar de 32 de timere
Fiecare este caracterizat de o cuanta
de timp Q
Durata impulsului este T k * Q
Input YTMRx
Constanta K este un număr întreg de
K
8 biti, care poate lua valori în
intervalul [1-255]
Sintaxa instructiunilor –
TIMERS (3)
Scrierea si compilarea programelor