Sunteți pe pagina 1din 368

Arhitectura calculatoarelor

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

1972 I8008 8 biti 16ko primul pe 8 biti

1974 8080 8 biti 64ko primul uP de succes

1978 8086, 8088 16 biti 1Mo primul uP pe 16 biti

1982 80286 16 biti 16Mo PC-AT

1985 80386 32 biti 4Go primul uP pe 32 biti

1989 80486 32 biti 4 Go FPU incorporat

1993 Pentium 32 biti 4Go pipeline

1995 P. Pro 32 biti 64 Go arh. P6 superpipeline


Evolutia microprocesoarelor (2)
1997 P. II 32 biti 64 Go MMX

1999 P. III 32 biti 70 To SSE2

2002 P. IV 32 biti 70 To Arh. NetBurst

2004 P. IV 64 biti 70 To Arh. Hiper-threading

2006 Core 2 64 biti 70 To Arh. multicore (2 core-uri/cip)

2007 Dual Core 64 biti 70 To 2 procesoare/cip

2008-9 I5, I7 64 biti 70 To, Arhitectura Nehalem, multicore si


8Mo L3 hyperthreading 4core-uri/8 multithread
cache cache 8Mo (L3)

2011 Sandy Bridge


Punctul de plecare – Microprocesorul Intel
8088
Arhitectura XT, bazata pe I8088
Semnalele pe bus la XT
Arhitectura AT. Bus-ul ISA
Un exemplu de card ISA
Semnalele pe bus-ul ISA
Semnalele pe bus-ul ISA - continuare
Semnalele pe bus-ul ISA - continuare
Semnalele pe bus-ul ISA - continuare
Semnalele pe bus-ul ISA - continuare
Semnalele pe bus-ul ISA - continuare
Conectorii ISA
Asignarea semnalelor la conectorii ISA
Un exemplu de interfata
Layout-ul interfetei cu 8255
Arhitectura VESA (Video Electronic Standards
Association)
Un exemplu de card VESA
Particulatitati ale bus-ului VESA

• Poate functiona cu bus de date de 16/32


biti
• Spatiul de adrese extins la 30 de linii de
adrese (1GB adresabil direct)
• Frecventa ceasului de bus – 33MHz, fata
de 8MHz la ISA
• Functioneaza numai cu procesoare 486
• Standardul VLB este abandonat in
prezent.
Bus-ul PCI (Peripheral Component
Interconnect)
Particularitati ale bus-ului PCI

• Suporta cuvinte de date de 32/64 biti


• Frecventa ceasului de bus – 33MHz
• La nivelul PCI to CPU bridge exista un
buffer, care permite bus-ului PCI sa
functioneze asincron fata de CPU.
• Consecinta: Bus-ul PCI este CPU
independent (poate functiona cu diverse
tipuri de procesoare!)
• Este Plug and Play (PnP).
Un exemplu de card PCI
Despre PnP
• Necesita cooperarea intre interfata (adapter), BIOS si
driver-ul care face parte din sistemul de operare.
• La nivelul adapter-ului exista o mica zona de memorie
ROM (EEPROM) care stocheaza informatii despre tipul
adapter-ului, producator, precum si unele resurse (ex.
IRQ) necesare.
• Acestea sunt raportate catre BIOS in timpul secventei
POST (Power On Self Test) si stocate in ESCD
(Extended System Configuration Data) – o zona a
CMOS.
• In continuare BIOS aloca resursele si le afiseaza la
STARTUP
Despre PCI Plug and Play
Spatiul de adrese de configurare
• Fiecare bus PCI (teoretic pot fi mai multe) are o
adresa proprie.
• Fiecare slot PCI are asignat un numar, care face
parte din adresa lui “geografica”.
• Pe fiecare card PCI pot exista maximum 8
“devices” – asa ca sunt necesari 3 biti (denumiti
“function code”), care se adauga la adresa
geografica.
• La aceasta adresa exista un cuvant de 64 de biti
care descrie device-ul
PCI Express (PCIe sau PCI-E)

• Este de fapt o suma de bus-uri SERIALE de mare viteza,


(up to 256MB/s) denumite “lanes” – piste
• Pe fiecare lane exista 4 fire (2 pentru emisie, 2 pentru
receptie) -> transmisia este full duplex
• Un HUB central comuta dinamic dispozitivele conectate
la capetele unui lane.
• Corolar: mai multe lanes pot transmite date simultan in
ambele directii.
• Principiile PnP de la PCI raman valabile la PCI-E
• Este “scalabil” – pe un bus se pot conecta mai multe
lanes.
Identificarea slot-urilor PCI-E
Identificarea slot-urilor PCI-E
Un exemplu de interfata I/O pe bus
ISA
Un exemplu de interfata I/O pe bus
ISA - continuare
Interfata ISA
• 74LS682 – comparator digital de 8 biti
• 74LS645 octal bidirectional bus
transceiver tri-state
• 74LS273 Octal D flip-flop cu Clear si Clock
comun (Registru de iesire de 8 biti)
• 74LS138 – decodificator 3->8 cu intrari
multiple de validare.
Arhitectura calculatoarelor
Curs 5
Interfete periferice uzuale
Portul paralel
Portul paralel LPT
• Este cea mai simpla interfata de
intrare/iesire disponibila intr-un PC
• A aparut din nevoia de a interfata primele
PC-uri cu imprimantele existente la acea
vreme
• Din acest motiv, atat denumirea
semnalelor cat si asignarea acestora la
pinii conectorilor de interfata se supun
standardului Centronix.
Registrele portului LPT
• Registrul de date (0x378-LPT1, 0x278-
LPT2)
• Registrul de stare (0x379-LPT1. 0x279-
LPT2)
• Registrul de control (0x37A-LPT1, 0x27A-
LPT2)
Structura hardware a unui port
LPTx
Structura hardware a unui port
LPTx-continuare
Asignarea semnalelor la conectorul
de interfata
Protocolul Centronix
Conectori

Conector DB25 mama la computer

Conector “Centronix” 36 pini mama la imprimanta


Semnalele la conectorii LPT
Semnalele la conectorii LPT
Semnalele la conectorii LPT
Configuratia registrelor

-Este unidirectional la SPP


- La citire intoarce ultima valoare scrisa in port
Registrul de stare al SPP

-Busy – contine valoarea inversata a semnalului


de pe interfata (0 inseamna imprimanta ocupata)
-nAck – contine valoarea semnalului nACK
-PErr – paper out error
-Select – Imprimanta on line/ready
-nFault – bit de eroare generic
Registrul de stare este READ ONLY (Scrierile sunt
ignorate)
Registrul de control al LPT

-C5 (neimplementat la SPP) – 1 comanda portul de date ca


bidirectional
-C4 IRQEn – Daca este 1, frontul crescator al nACK
genereaza intrerupere
-nSelectIn – Daca este setat la 1, caracterele de control
ASCII DC1 – 0x11 si DC3 – 0x13 pot activa si dezactiva
imprimanta
-nAutoFd – Auto LF dupa CR
-nSTROBE – Cand este setat, genereaza STROBE
Accesul software la registrele LPT
Accesul din MS-DOS
#include <stdio.h>
#include <dos.h>
#define LPT_BASE 0x378
#define LPT_DATA LPT_BASE+0
#define LPT_STATUS LPT_BASE+1
#define LPT_CONTROL LPT_BASE+2

unsigned char data, ch;


outportb(LPT_DATA,data);
ch=inportb(LPT_STATUS)
Accesul software la registrele LPT
Accesul din MS-Windows
• E nevoie de un driver special
• Un exemplu de astfel de driver este
PortTalk.sys, disponibiul free la:
http://www.beyondlogic.org/porttalk/porttalk22.zip
• Se copiaza porttalk.sys in C:\WINDOWS\system32\drivers\
• Se execută un clic dublu pe fişierul
porttalk.reg
Exemplu de program de test a porturilor
interfetei LPT din mediul Windows
Exemplu de program - continuare
• In mediul Dev-C++ se creaza un proiect ca in
figura precedenta.
• Fisierele PortTalk_IOCTL.h si pt_ioctl.c se
gasesc in pachetul PortTalk.
• Acestea ofera functiile OpenPortTalk(),
ClosePortTalk()
• void outportb(unsigned short
PortAddress, unsigned char byte)
• unsigned char inportb(unsigned short
PortAddress)
Main.c
int main(int argc, char *argv[ ])
{
OpenPortTalk();
printf("Blinking LPT data port....\nPress any key to exit.");
while(1)
{
outportb(LPT_DATA, 0xFF);
sleep(500);
outportb(LPT_DATA,0);
sleep(500);
if(kbhit()) break;
}
ClosePortTalk();
return 0;
}
Adaptor pentru testarea
programelor
Aplicatii ale portului paralel – interfata ISP STK200
Aplicatii ale portului paralel – interfata pentru relee
Aplicatii ale portului paralel – interfata pentru relee
Aplicatii ale portului paralel – folosirea liniilor de
intrare
Portul EPP – Enhanced Parallel Port
• Este definit de standardul IEEE 1284
• Permite transfer de date bidirectional (half
duplex)
• Este compatibil inapoi (backwards) cu
standardul SPP (Centronix)
• A fost proiectat pentru interfatarea cu periferice
rapide (scannere, ZIP drives)
• Setul de registre este extins
• Spre deosebire de SPP, unde elementele
hardware se limitau la registrele propriu-zise si
la circuitele de decodificare a adreselor, interfata
hardware ECP gestioneaza complet transferurile
Portul ECP – Extended Capabilities Port

• Este definit de acelasi standard IEEE 1284


• Este similar cu EPP, dar are in plus posibilitatea
de a folosi un canal DMA
• Sunt prevazute facilitati de compresie hardware
a datelor (Prin metoda RLE - Run Length
Encoding, simpla dar eficienta: in loc sa se
transmita acelasi caracter de mai multe ori se
transmite o singura data si suplimentar se
transmite un numar, indicand de cate ori se
repeta caracterul in secventa)
Note despre standardul IEEE 1284
• Defineste specificatii pentru:
• Interfata fizica (cabluri, conectori)
• Interfata electrica (circuite driver/receiver
terminatoare, impedantele cablurilor)
• Cinci moduri distincte de transfer a datelor
• O metoda de negociere intre host si
periferic, prin care se stabileste in mod
transparent modul de transfer.
IEEE 1284 – Modurile de transfer a datelor

1. Modul “de compatibilitate” – descrie protocolul


Centronix (SPP).
2. Modul “nibble” – transfer pe semioctet (4 biti) –
se folosesc liniile de stare pentru transferul
inver al datelor.
3. Transferul pe octet (PS2). Liniile de date sunt
bidirectionale
4. Modul de transfer EPP – handshake generat
hard
5. Transfer ECP – EPP+DMA+Compresie RLE
Registrele unei interfete EPP

Primele 3 registre sunt identice cu cele de la SPP


Suplimentar apar un registru de adrese si unul de date
Inca doua registre cu functii nespecificate – difera de la un
producator la altul.
Semnalele de pe interfata EPP
Arhitectura Calculatoarelor
curs 6
Interfete periferice simple ale PC
Tastatura, mouse, Gameport, PC
speaker
Tastaturi – Principiul de functionare
Tastaturi-principul de functionare
• Avem o structura matriciala in care tastele fac conexiune
electrica intre o linie si o coloana a matricii
• Liniile matricii se conecteaza la un port de iesire,
coloanele la un port de intrare cu rezistente de pull-up.
• Codurile generate soft pe portul de iesire au un sigur bit
pe zero, restul sunt 1 – in exemplul considerat secventa
este: 0x7x, 0xBx, 0xDx, 0xEx
• Cunoscand valoarea scrisa in portul de iesire si citind
starea curenta a portului de intrare se poate determina
care tasta este apasata.
• Secventa se repeta la intervale regulate de timp (de
ordinul ms), de exemplu in rutina de intrerupere asociata
cu un timer.
Scan codes
• In exemplul considerat, tasta S1 este identificata
cand valoarea scrisa in PORTB este 0x7X, iar
valoarea citita din PINC este 0xX7.
• Combinand cele doua valori
SC=(PORTB&0xF0) | (PINC&0x0F)=0x77
• Acesta este “scan code-ul” tastei S1 – un cod
unic care identifica fiecare tasta.
• Acest scan code este dependent de structura
matricii si, de regula, este convertit prin software
intr-un cod uzual (hexazecimal, ASCII etc.)
Tastatura PC – caracteristici
generale
• Este realizata cu un microcontroller dedicat
(8042, 6805 s.a.)
• Comunicatia cu PC-ul se face serial
• Configuratia conectorilor PS2 este:
Semnalele pe conectorul PS2 al tastaturii

• 1 data Nota: Conectorii PS2 si


• 2 (reserved) USB cunt conectati la
• 3 gnd sursa interna de +5V a
PC-ului si pot fi folositi
• 4 +5v pentru a alimenta
• 5 clock dispozitive externe.
• 6 (reserved) Consumul maxim admis
este 500mA la USB.
Detalii de functionare
• La apasarea unei taste se trimite pe linia
seriala un cod (denumit “make code”, care
este scan code-ul de identificare a tastei.
Acesta este un octet in plaja 0x00-0x7F
• La eliberarea tastei se transmite un nou
cod, (“break code”) format din doi octeti,
din care primul este 0xF0 iar al doilea este
scan-code-ul.
Comunicatia cu calculatorul
• Comunicatia este bidirectionala
• Comunicatia este seriala sincrona (ceasul
de sincronizare este comun pentru
emitator si receptor)
• Bus-ul de comunicatie este open collector
• Se trasnmite intai un bit de start (zero
logic), apoi 8 biti de date, incepand cu
LSB, apoi un bit de paritate impara, si un
bit de stop – intotdeauna 1 logic.
Protocolul de comunicatie intre
tastatura si PC
• Calculatorul poate trimite comenzi catre tastatura
• Tastatura trimite codurile tastelor apasate
• Dispozitivul care este MASTER pe bus la un moment dat
genereaza ceasul
• Calculatorul poate intrerupe o transmisie de la tastatura,
tinand linia de ceas in zero logic o perioada mai mare de
60us.
• Dupa fiecare comanda de la calculator tastatura trebuie
sa trimita un cod de ACK (0xFA) in maxim 20ms. In caz
contrar comanda este retransmisa.
Registrele interfetei cu tastatura
Registrul de stare

OBF/IBF (Output/Input buffer full)


INH – Inhibit
RX/TX TO – Timeout la receptie/transmisie
PERR – Parity Error detected
SYS – System flag, indica faptul ca tastatura si-a
executat auto-testul de power up.
Un exemplu de cod pentru citirea
datelor de la tastatura

Nota: In realitate, citirea datelor se face cu ajutorul


intreruperilor (Hardware IRQ1, BIOS interrupt
0x09)
Un exemplu de cod pentru scrierea
datelor in bufferul tastaturii

Nota: In continuare, trebuie asteptat ACK de la


tastatura
Un exemplu de dialog pe bus-ul de
comunicatie intre computer si tastatura
Mouse-ul PS2

La nivel fizic, bus-ul de comunicatie PS2 cu


mouse-ul este perfect similar cu cel de la tastatura
La orice “eveniment” (deplasare sau click) mouse-
ul transmite 3 octeti pe acest bus.
Structura datelor transmise de mouse

X_Movement si Y_movement sunt de fapt offset-


uri fata de precedentele valori raportate
La power on, mouse-ul trimite doi octeti 0xAA si
0x00 – primul indicand self test OK al doilea tine
loc de mouse ID.
Conectorul PS2 pentru mouse

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

• Un astfel de mouse contine urmatoarele blocuri


functionale:
• IAS – Image Acquisition System (LED, lentila,
micro-camera pentru captura de imagini)
• DSP – Digital Signal Processor
• Un bloc de comunicatie (USB/PS2)
• Imaginile succesive capturate de camera video
sunt comparate si pe baza lor se calculeaza
directia si valoarea deplasarii fata de pozitia
anterioara.
Accesul software la resursele mouse-ului

Dialogul cu mouse-ul e controlat de driver-ul soft.


Accesul se face cu BIOS Interrupt 33H
Continutul registrului AX la apel indica codul functiei.
Exemplu, testarea unui buton:
MOV AX,5
MOV BX,1
INT 33H
TEST BX,1
Jz NOT_DEPRESSED
Exemple de functii INT33H pentru mouse

0 Mouse Reset and Status


1 Show Cursor
2 Hide Cursor
3 Get Button Status and Mouse Position
4 Set Mouse Cursor Position
5 Get Button press Information
6 Get Button Release Information
7 Set Min and Max Horizontal Cursor Position
8 Set Min and Max Vertical Cursor Position
Gameport-ul. Interfata cu joystick-ul
Gameport-ul
• Un joystick contine doua butoane si doua
potentiometre, actionate simultan de o maneta.
• Masurand (indirect) valorile rezistentelor celor
doua potentiometre se poate estima in ce
masura joystick-ul este deplasat fata de pozitia
de echilibru.
• Interfata poate conecta simultan doua joystick-
uri
• Interfata cuprinde un singur registru Read/Write,
plasat la adresa 0x201.
Gameport. Principiul de functionare

• Constanta de timp a unui monostabil este egala cu


0.7*R*C. Cunoscand valoarea condensatorului C si
masurand durata impulsului generat, se poate calcula
valoarea R.
• In acest mod se determina valorile potentiometrelor de
pe joystick.
• In repaus, condensatoarele de temporizare sunt
incarcate si iesirile monostabilelor sunt la 1 logic.
• Scrierile in registrul 0x201 descarca condensatoarele,
care ulterior se incarca prin rezistenta potentiometrelor.
Dupa 0.7RC iesirile monostabililor revin in 1 logic.
Gameport. Schema interfetei
Accesul software la joystick
INT 15 - BIOS - JOYSTICK SUPPORT
AH = 84h
DX = subfunction 0000h read joystick switches Return:
AL bits 7-4 = switch settings 0001h read positions of joysticks
Return:
AX = X position of joystick A
BX = Y position of joystick A
CX = X position of joystick B
DX = Y position of joystick B
Return: CF set on error
AH = status 80h invalid command
86h function not supported (other) CF clear if successful
PC speaker-ul
PC speaker-ul. Principiul de functionare
PC-ul standard contine un asa-numit PIT
(Programmable Interval Timer) care controleaza 3
canale - timere (0,1,2).
Canalul 0 – controleaza ceasul de timp real si da
intreruperi cu frecventa de 18.2Hz.
Canalul 1 – se ocupa de refresh-ul memoriei
DRAM
Canalul 2 este de uz general si poate fi folosit
pentru a controla speaker-ul.
Registrele PIT

Exista 4 registre care controleaza timerele PIT,


plasate la adresele:
0x40 channel 0 read/write
0x41 channel 1 read/write
0x42 channel 2 read/write
0x43 control write
Programarea speaker-ului se rezuma la selectarea
frecventei si scrierea unui bit de validare in
registrul de control de la adresa 0x61.
Programarea PIT Registrul de control 0x43

Channel Channel Order Order Mode Mode Mode Format

Cei doi biti Channel codifica adresa timerului (10


pentru timer2)
Order – ordinea de scriere in 0x42: LSB/MSB
Mode – Modul de functionare a timerului
011 – pentru acesti biti indica functionarea prin
incarcarea unei valori in numaratorul timerului si
decrementarea pana la zero, apoi auto-reload
Format: binar/BCD
Exemplu de programare a speaker-ului
int frequency = 4000;
int countdown = 1193180 / frequency;
int lowerbyte = countdown & 0xff;
int higherbyte = (countdown >> 8) & 0xff;
outportb(0x43, 0xB6); //select timer2
outportb(0x42, lowerbyte); //define frequency
outportb(0x42, higherbyte);
int value = inportb(0x61); //connect timer output to buzzer
value = value | 3;
outportb(0x61, value); //start buzzer
sleep(100);
value = inb(0x61);
value = value & 0xfc;
outportb(0x61, value); //stop buzzer
Arhitectura calculatoarelor
curs 7
Portul serial al PC
Parallel vs. serial
Diagrame de timp TTL-RS232
DTE-DCE
Baud rate
• Termenul “baud rate” desemneaza viteza
de transmisie in biti pe secunda
• Viteze standard: 110. 300, 600, 1200,
4800, 9600, 19200, 38400, 57600, 115200
• Timpul de bit: 1/Baud_rate
• De exemplu, pentru o viteza de 9600
baud, timpul de bit corespunzator este:
1/9600=0.10416ms
Alti parametri specifici
comunicatiilor seriale
• Paritatea – un bit optional de control folosit
pentru detectarea erorilor. Se transmite
dupa MSB
• Numarul de biti de date (5,7,8 – usual 8)
• Numarul de biti de stop (1, 1.5, 2 – uzual
1)
• String-ul descriptiv: 9600,N,8,1 – indica
transmisie la 9600 baud, fara paritate, 8
biti de date, un bit de stop.
Handshake si conectori
Cablul DTE-DCE
Cabluri “Null modem” (DTE-DTE)
Aplicatii soft de tip terminal
Hyper-Terminal
Br@y terminal
Tera term
Serial port monitors
Exemplu de captura date cu “free
serial port monitor”
Tabel cu codurile ASCII
UART-ul
• Dumb UARTs (8250, 16550)
• FIFO UARTs (1655A, 16650)
• Diferenta principala este prezenta unei
memorii FIFO de 16 octeti
• Intreruperi mai rare la CPU
• 16750 (64 bytes FIFO, 480Kbps)
• 16850 (128 bytes FIFO, 1.5Mbps)
Structura transmitatorului UART
Structura receptorului UART
Tipuri de erori posibile
Adresarea registrelor UART-ului
Conectarea UART-ului 8250 la bus-
ul intern
Registrele UART-ului 8250
Toate sunt registre de 8 biti
Registrele UART-ului. Descriere
• RHR/THR – Reciever Holding
Register/Transmitter Holding Register. Sunt
doua registre vizibile la aceeasi adresa
• IER – Interrupt Enable register
• IIR – Interrupt Identification Register
• Line Control Register ( se mai numeste Data
Format Register)
• MCR – Modem Control Register
• Line Status Register
• Modem Status Register
• Baud Rate Divisor Latch Register (LSb/MSB)
Registrele de date RHR/THR
• U acceasi adresa, dar de fapt sunt doua
registre fizice distincte.
• THR este adresat in operatiile de scriere
• RHR este accesat in operatiile de citire
• In cazul in care comunicatia este setata
pentru mai putin de 8 biti e date, se iau in
considerare bitii mai putin semnificativi ai
RHR/THR
Intreruperi generate de UART
• Sunt 4 tipuri distincte de intreruperi
asociate cu UART-ul, si anume:
• RxRDY – la receptia unui caracter
• TBE – Tx Buffer Empty (Transmitator
ready pentru a primi date)
• In caz de eroare la receptie sau la detectia
unui break
• La schimbarea starii semnalelor de
handshake cu modem-ul
Interrupt Enable Register (IER)
Interrupt Identification Register
(IIR)
Registrul LCR (Line Control
Register)
• Bitii 0 si 1 codifica numarul de biti de date
(uzual 11 – 8 biti de date)
• Bitul 2 – numarul de biti de stop (0 – un bit
de stop, 1 – doi biti de stop)
• Bitii 3-4-5 – tipul de paritate (00-none)
• Bitul 6 – Force break
• Bitul 7 – DLAB (Divisor Latch Access Bit).
Cand DLAB=1 adresele BASE si BASE+1
se refera la Divisor Latch (LSB/MSB)
Registrul MCR (Modem Control
Register)
• Bitii 0 si 1 controleaza direct semnalele de
handshake DTR si RTS. De retinut ca
aceste semnale sunt inversate hardware –
un 1 scris in acesti biti are ca efect
trecerea in 0 logic a semnalului de pe
interfata.
• Bitul 4 setat la 1 comanda intrarea in
Loopback test mode
Registru LSR (Line Status Register)
Registrul MSR (Modem Status
Register)
• Bitul 7 – reflecta starea curenta a DCD
• Bitul 6 – reflecta starea RI (Ring Indicator)
• Bitul 5 – reflecta starea curenta a DSR
• Bitul 4 – reflecta starea curenta a CTS
• Bitii 3-0 sunt respectiv DELTA_DCD,
DELTA_RING, DELTA_DSR, DELTA_DCD
– indica schimbari de stare ale semnalelor
respective de la ultima citire
Registrul Divisor Latch (MSB/LSB)
• BAUD_RATE=clock_frequency/Divisor_co
nstant
• Clock_frequency poate fi 1.8432MHz sau
3.072MHz
• Registrul Divisor Latch este accesat cand
DLAB=1 (bitul 7 – cel mai semnificativ din
LCR)
Imbunatatiri la UART-ul 16550
• Se introduce un buffer FIFO de 16 octeti
• Apare un registru suplimentar denumit FCR
(FIFO Control Register), care contine bitii:
• FIFO Enable (0 indica functionarea in mod
8250)
• RESET Transmitter/Receiver FIFO
• Receiver FIFO Threshold – defineste numarul
de octeti receptionati la care se genereaza o
intrerupere de buffer full
Comparatie cu UART-urile
implementate in microcontrollere
• La microcontrollerele de uz general (ex.
seria Atmel AVR) lipseste sectiunea de
control a modem-ului si bufferul FIFO
• Totusi, microcontrollerele avansate (ARM)
contin un UART intern complet compatibil
cu 16550
Controlul transmisiei (Flow Control)
• Hardware Flow Control. Se realizeaza cu
ajutorul semnalelor DTR/DSR sau RTS/CTS
• Software Flow Control (XON/XOFF). XON=0x11,
XOFF=0x13. Aceste caractere de control sunt
transmise de DCE pentru a semnala host-ului
(DTE) momentele cand poate transmite date.
Sistemul functioneaza la transmisii ASCII – in
cazul transferurilor binare, codurile XON/XOFF
pot fi confundate cu octeti din pachetul de date.
Protocolul XMODEM
• Este un ftp primitiv, inventat in 1997
• Continutul fisierului este binar, impartit in blocuri
de 128 de octeti.
• Este “receiver driven”, i.e. transmisia este
controlata de receptor
• Pentru a demara transmisia receptorul trimite
codul ASCII NAK (0x15)si in interval de o
secunda transmitatorul trebuie sa inceapa
transmisia unui bloc.
• Daca emitatorul nu intelege NAK-ul initial,
receptorul face 10 retry-uri apoi abort.
Structura pachetelor XMODEM

SOH – Start of Heading (ASCII 0x01)


Block number – incepe de la 1. Daca se depaseste
255, urmatorul pachet are numarul 0.
STX – Start of Text (ASCII 0x02)
ETX – End of Text (ASCII 0x03)
Checksum – suma de control de 8 biti calculata
adunand octetii din bloc si deplasand la stanga
rezultatul la fiecare adunare.
Incheierea transmisiei
Daca checksum-ul din pachet coincide cu checksum-ul
recalculat de receptor, acesta transmite ACK, catre
emitator si acesta decide daca sa transmita urmatorul
pachet, sau – daca nu mai sunt alte pachete sa transmita
EOT (0x04 – End of Transmission)
Daca checksum-ul este eronat, receptorul transmite NAK si
se repeta transmisia intregului bloc.
Daca lungimea fisierului nu e divizibila cu 128, ultimul bloc
se umple cu EOF (0x1A) pana la completarea celor 128 de
octeti ai blocului.
Pentru a abandona un transfer inceput, emitatorul sau
receptorul pot transmite o secventa de 2-5 caractere CAN
(0x18)
XMODEM - CRC
• Diferente fata de XMODEM:
• Pachetele au o structura usor diferita
• Suma de control este pe 16 biti (doi octeti)
• La inceputul transferului, receptorul
transmite ‘C’ (0x43) in loc de NAK
Variatiuni ale XMODEM
• XMODEM – 1k (lungimea blocurilor
extinsa la 1K)
• YMODEM – se pot transmite mai multe
fisiere in mod “batch”
• YMODEM-G – viteza marita prin
suprimarea ACK-urilor de la sfarsitul
fiecarui bloc de date
• ZMODEM – blocuri de lungime variabila,
XON/XOFF
Bibliografie
• Jan Axelson – Serial Port Complete
second edition, Lakeview Research 2007
• Ying Bai – Windows Serial Port
Programming Handbook, Auerbach
Publications 2005
Arhitectura calculatoarelor
Curs 8
Dispozitive de afisare
Interfete video
Formularea problemei
Conceptul de pixel
Formularea problemei
• Se da o matrice de elemente optice (pixeli)
adresabile individual, care pot fi comandate
ON/OFF
• Si o zona de memorie (“video”) avand o
capacitate egala cu numarul de pixeli din
matricea de afisare
• Se pune problema realizarii unor circuite cat mai
simple, care sa transfere informatia din memoria
video in matricea de pixeli folosind un numar
minim de cabluri.
Exemplu de comanda matrice LED-uri
Multiplexarea in timp
Un exemplu de simulare a unui
circuit de multiplexare in timp
Analiza solutiei bazata pe
multiplexare in timp
Solutia simplificata
Afisarea in culori
• Fiecare culoare este o combinatie a
culorilor fundamentale R (Red) G (Green)
si B (Blue)
• Intensitatea fiecarei culori se poate
codifica prin amplitudinea componentei
respective
• Daca transmitem R,G,B ca semnale
binare rezulta 2^3=8 culori posibile
Solutia generala
Marirea numarului de culori
Se aloca mai multi biti pentru fiecare culoare fundamentala
Se foloseste cate un DAC pentru generarea unor semnale cu amplitudine
variabila pentru R, G, B
Generarea culorilor
Fluxul de date pentru afisare
Afisarea pe monitoare CRT
Diagrama de timp la afisarea pe un
monitor CRT
Semnalele la conectorul VGA
Conectorul VGA
Evolutia sistemelor de afisare
Interfata MDA
• MDA- Monochrome Display Adapter
• Dispunea de 4K de memorie RAM on-board, mapata in
memoria sistemului incepand cu adresa B0000H
• Functiona exclusiv in mod text
• Pentru a afisa un caracter pe ecran, se scriau DOI octeti
consecutivi in memoria video – primul continea codul
ASCII al caracterului de afisat, al doilea un set de
“atribute” (ex: underline, reverse video, blinking)
• Aspectul grafic al caracterelor afisate pe ecran (fontul)
era predefinit intr-o memorie ROM aflata pe interfata
MDA (denumita generator de caractere)
HGA – Hercules Graphics Adapter
• Este primul adaptor video cu posibilitatea
de a functiona in mod grafic
• Este compatibil cu MDA, dar in regim
grafic poate face uz de doua pagini de
cate 32K RAM (total 64K), mapata de la
B0000H-BFFFFH
• In mod text, caracterele erau matrici de
pixeli de dimensiunea 9x14, adica o
rezolutie rezonabil de buna.
CGA- Color Graphics Adapter
• In mod text caracterele erau matrici de
pixeli 8x8, echivalent cu o rezolutie mai
proasta decat la MDA sau Hercules
• Se puteau afisa in mod text 40 caractere
pe rand
• Dispunea de 16K RAM dinamic. Refresh-
ul acestuia era uneori vizibil pe ecran,
fenomen denumit “snow” – foarte
suparator
EGA – Enhanced Graphics Adapter
• Avea 64K RAM, extensibil la 256K
• Rezolutie maxima 640x350 pixeli
• Rezolva toate problemele deranjante ale CGA
• Aveau un mare inconvenient – rezolutia (pixeli
per inch) era inegala pe verticala fata de
orizontala (54 ppi orizontal si 75 ppi vertical) –
un cerc desenat era reprezentat ca o elipsa si
erau necesare corectii soft.
VGA – Video Graphics Array
• Memorie standard 256K (A0000H-
BFFFFH)
• Trei seturi de font-uri diferite, care se
puteau transfera din rom BIOS in memoria
interfetei
• Rezolutie maxima 640x480x16 culori
• Sunt compatibile inapoi cu MDA, CGA,
EGA
Super VGA (SVGA)

Nevoia de mai multa memorie a condus la o


solutie de organizare a acesteia in bancuri – un
singur banc este mapat la un moment dat in
memoria sistemului. Dimensiunea acestuia se
numeste “apertura”
Registrele adaptorului VGA
DVI – digital video interface

Transferul datelor intre adaptorul video si monitor


se face in intregime digital
Datele digitale sunt codificate “TMDS” – Transition
Minimized Differential Signalling
Transmisia este seriala sincrona
Viteze de 165Mbps pe fiecare canal
Semnalele la conectorul DVI
Note despre TMDS
• Datele nu sunt pachetizate
• Transmisia este sincrona – exista o linie
speciala pentru clock
• La fiecare octet transmis, primul bit este
necodat, urmatorii sunt XOR sau XNOR cu
precedentul bit
• Un al 9-lea bit indica functia folosita pentru
codare (XOR sau XNOR)
• Scopul este minimizarea numarului de tranzitii –
pentru reducerea radiatiei electromagnetice
Note despre TMDS-continuare
• Exista doua canale RGB simultane cu clock
comun, denumite “link-uri”.
• Al doilea este folosit doar la rezolutii mari daca
volumul de date de transferat depaseste
capacitatile link1 (cand sunt necesari mai mult
de 24 biti per pixel). Link2 transfera bitii mai
putin semnificativi
• Nu exista posibilitati de compresie a datelor –
intreaga imagine a ecranului este retransmisa
permanent
Arhitectura calculatoarelor
Curs 9
Dispozitive de stocare a datelor
pe suport magnetic
Principiile inregistrarii magnetice a datelor
digitale

Figura reprezinta un cap magnetic de scriere/citire


cu ferita.
Schimband sensul curentului prin bobina capului
se modifica polaritatea campului magnetic generat
Capul de citire detecteaza variatiile campului
magnetic (e(t)=dF/dt)
Semnalele electrice la scriere si
citire

Transmisia este seriala


Codificare NRZI
Tenhologii de realizare a capetelor magnetice
• Capete din ferita – sunt reversibile. Cu acelasi
cap se poate face si scrierea si citirea
• Capete “thin film” – realizate prin depuneri
metalice in vid, cu o tehnologie asemanatoare
cu cea folosita pentru realizarea
interconexiunilor intre componente pe chip-urile
de siliciu
• Capete magneto-rezistive. Unele materiale isi
modifica semnificativ rezistenta electrica atunci
cand se afla intr-un camp magnetic. Cu aceasta
tehnologie se pot face doar capete de citire
• Discurile moderne au capete thin film pentru
scriere si magnetorezistive pentru citire
La inceput au fost benzile
magnetice

Datele erau inregistrate pe piste paralele


Capetele erau fixe
Exista o pista separata pentru sincronizare
Datele erau organizate in blocuri de lungime fixa si puteau
fi citite in ambele sensuri de miscare a benzii
Organizarea datelor pe discuri
magnetice (cazul floppy discului)
Stuctura datelor pe discuri
• Datele sunt scrise pe piste circulare concentrice
• Pistele sunt impartite in sectoare de dimensiune
unghiulara constanta. Rezulta densitati diferite
de date de la o pista la alta – pistele dintre axul
de rotatie au densitati de date mai mari
• Trecerea de la o pista la alta se face prin
deplasarea mecanica a capetelor
• Nu mai exista o pista dedicata pentru
sincronizare
Pista, sector, cilindru
Solutii pentru deplasarea capetelor
Motorul pas cu pas + melc/roata melcata
Miscarea capetelor cu actuator tip “voice coil”
Imagini din interiorul unui HDD
Imagini din interiorul unui HDD
Problema sincronizarii citirii datelor
Codificarea FM
La discuri nu mai exista posibilitatea de a crea o pista
speciala de sincronizare
Se pune problema “amestecarii” ceasului de sincronizare cu
datele in asa fel incat sa poata fi scrise/citite cu acelasi cap.
Capetele de citire pot detecta doar variatii ale fluxului
magnetic (inversari sau “reversals”)
Rezulta ca, daca vrem sa marcam precis timpul de bit, e
necesar sa avem cel putin cate o schimbare de flux la
inceputul fiecarui timp de bit. Aast creaza ceasul de
sincronizare.
Bitii de 1 necesita o tranzitie suplimentara la mijlocul timpului
de bit.
Codificarea FM
Dezavantaje ale codificarii FM.
Codificarea MFM
• Suportul magnetic nu permite densitati oricat de mari de tranzitii ale
fluxului magnetic (particulele magnetice alaturate de pe suport se
influenteaza una pe alta – fiecare tranzitie creaza un micro dipol
magnetic pe suport)
• Este preferabil ca numarul de tranzitii sa fie cat mai mic
• Codificarea FM genereaza tranzitii chiar si la inceputul bitilor de 1,
care au deja o tranzitie la mijlocul timpului de bit
• La MFM regula este: “o singura tranzitie pentru un timp de bit” - nu
se mai genereaza tranzitii suplimentare pentru bitii cu valoarea 1.
• In plus, se genereaza tranzitii la inceputul timpului de bit pentru bitii
cu valoarea 0, doar daca si precedentul bit transmis avea valoarea
0.
• In acest fel se reduce la jumatate numarul de tranzitii necesar pentru
a transmite o anumita secventa de biti, ceea ce conduce la densitati
duble ale inregistrarii. (double density)
• Sistemul MFM este inca folosit pentru floppy discuri
MFM vs. FM

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

• Transferurile de date se realizeaza in


blocuri de dimensiunea unui sector (512
octeti de date+adresa sector)
• Datele sunt codificate FM (simple density)
sau MFM (double density)
• Verificarea integritatii datelor se face la
nivelul unui sector cu ajutorul unui CRC de
16 biti.
Interfata cu hard disk-ul

Schema contine circuitele aflate in controller+HDD


Notati prezenta blocului de control ECC (error correcting
code 4-8 octeti)
Interfata ATA/IDE
• ATA- AT Attachement
• IDE – Integrated Drive Electronics
• ATA si IDE sunt practic sinonime
• Pe un mainboard uzual exista doua interfete ATA, fiecare
putand controla doua discuri (un master si un slave)
• Majoritatea circuitelor de control au fost integrate in
unitatea de disc (de unde si numele IDE). Rezulta
posibilitatea de a conecta CD-ROM-uri pe aceeasi
interfata cu discurile magnetice.
• Specificaţiile standardului ATA definesc conectorii şi
cablurile interfeţei, semnalele interfeţei, rolul acestor
semnale, modul de configurare al unităţilor şi comenzile
care pot fi transmise acestora.
Transferul “programat” al datelor (PIO-
Programmed Input/Output)

Transferul datelor intre CPU si interfata se face


prin cuvinte de 16 biti
La fiecare cuvant (sau grup de cuvinte transferat)
se genereaza intrerupere catre CPU si se executa
o secventa de program.
Transferurile de tip DMA
Accesul software la disc –Intreruperea BIOS Int13H
Limitari ale capcitatii discurilor introduse de
folosirea Int13H

Se poate observa că prin utilizarea funcţiilor BIOS se


poate adresa o unitate de discuri cu cel mult 1024 de
cilindri, 256 de capete şi 63 de sectoare pe pistă. Deci,
numărul maxim de sectoare adresabile este 1024 x 256 x
63 = 16.515.072. Ţinând cont că un sector conţine 512
octeţi (½KB), capacitatea maximă adresabilă a unităţii este
de 8.257.536 KB sau 7,8 GB (8,4 GB în zecimal).
Limitari ale capacitatii discurilor introduse de
standardul ATA (in versiunea initiala)

Se poate observa că interfaţa ATA permite un


număr maxim de sectoare adresabile de 65.536 x
16 x 255 = 267.386.880. Capacitatea maximă
adresabilă a unei unităţi de discuri ATA este de
133.693.440 KB sau 127,5 GB (136,9 GB în
zecimal).
Limitari combinate

Lunad in calcul minimul valorilor specificate de


INT13H si de standardul ATA, rezulta o capacitate
limita maxima de 504Mb!!
Solutii: Modificarea BIOS
Modificarea standardului ATA
LBA – Logical Block Addressing
• S-a renuntat la adresarea CHS (Cylinder, Head, Sector)
a blocurilor bazata pe corespondenta cu capetele si
pistele fizice de pe disc. Fiecarui sector I se atribuie o
adresa logica (LBA), obtinuta printr-o “translatare”a
valorilor reale ale numarului de capete si cilindri.
• De exemplu, daca numarul real de cilindri este 8000
(limita BIOS este la 1024) si numarul real de capete este
16, translatarea va imparti numarul de cilindri la 8,
inmultind in schimb numarul de capete cu 8. Numarul
total de sectoare ramane acelasi, dar se pastreaza
compatibilitatea cu limitele INT13H.
• Translatarea implica atat modificari ale BIOS cat si ale
interfetei cu discul fizic.
Interfata SATA (Serial ATA)

Consta din doua canale asincrone diferentiale,


cate unul pentru scriere respectiv citire.
Este o conexiune point to point cu viteza maxima
de 6Gb/s.
Nivelele de tensiune pe linie sunt de +/-0.25V.
Caracteristici ale SATA
• Viteza crescuta (pana la 6Gbps)
• Cablu mai simplu cu lungime pana la 1m
• Pinii de alimentare si masa electrica sunt mai lungi pe
conector –> discurile SATA pot fi conectate/deconectate
cu alimentarea pornita
• Este strict o conexiune point to point – nu admite decat
un disc per interfata (nu mai exista posibilitatea de
conectare a doua discuri pe aceeasi interfata (MASTER
SLAVE)
• Codificarea NRZI (8b/10b). Pentru fiecare octet de date
se transmit serie efectiv 10 biti – datorita conditiei sa nu
exista secvente mai mari de 4 biti cu aceeasi valoare
transmisi consecutiv. Se introduce automat un bit cu
polaritatea opusa celor din secventa.
Discuri optice Interfata ATAPI (ATA Packet Interface)

• Primul compact disc (audio) a aparut in 1980 si


a fost creat de Sony si Philips. Standardul
propus s-a numit “red book” si definea intre
altele diametrul (120mm) si grosimea (1.2mm)
discului.
• In 1985 este definit standardul pentru CD-ROM
(“yellow book”)
• In 1990 este definit standardul pentru CD-R
(Recordable) (“orange book”).
• In 1995 – partea a II-a a orange book descrie
standardul pentru CDE-RW (reinscriptibil)
Suportul fizic al CD-ROM-urilor

Discul fizic consta dintr-un substrat de policarbonat


transparent, datele fiind înregistrate sub forma unor cavităţi
(“pits”) microscopice de mărimi variabile, plasate între spaţii
plate, numite suprafeţe (“lands”). Întregul disc este acoperit
cu un strat de aluminiu reflectorizant, peste care se
suprapune un strat protector de plastic
Organizarea datelor pe CD-ROM

Citirea informaţiilor de pe disc se bazează pe gradul


diferit în care este reflectată o rază laser de către cavităţi şi
suprafeţe. Suprafeţele au un grad de reflexie mai mare
decât cavităţile. Raza reflectată este detectată de o celulă
fotoelectrică, care va genera o succesiune de impulsuri
electrice.
Datele sunt intregistrate pe o pista (track) sub forma unei
spirale, incepand din centrul discului.
Codificarea datelor pe CD-ROM-uri
• Bitii de 1 sunt codificati prin TRANZITII de
la cavitati la suprafete si invers.
• Lungimea minima a unei cavitati/suprafete
pe o pista este limitata la minim 3 biti si
maxim 11 biti pentru a evita
desincronizarile la citire.
• Rezulta ca nu se pot inregistra doi biti
consecutivi cu valoarea 1. Intre 2 biti de 1
exista minim 2 si maxim 10 biti de zero.
Modulatia 8->14
(EFM Eight to Fourteen Modulation)
• Fiecare octet binar este codificat si scris pe disc ca un
“pachet” de 14 biti, care sa raspunda cerintei ca intre 2
biti de 1 sa exista minim 2 si maxim 10 biti de zero.
Rezulta pachete de forma urmatoare:
Structura pachetelor de date (cadre)
• Pentru evitarea unei piste separate de ceas, este necesară o
sincronizare periodică. De aceea, datele sunt divizate în blocuri
numite cadre, la începutul fiecărui cadru existând un antet
desincronizare.
• Pentru ca între două secvenţe de cod EFM alăturate să nu existe
doi biţi de 1 succesivi, după fiecare secvenţă de 14 biţi sunt inseraţi
3 biţi suplimentari, care nu sunt luaţi în considerare la prelucrarea
datelor. Pentru reprezentarea unui octet de date sunt necesari deci
17 biţi de canal: 14 biţi EFM şi 3 biţi suplimentari.
• CIRC – Inseamna Cross Interleaved Reed- Solomon Code – exista
doua grupe de cate 4 octeti CIRC in fiecare cadru
• Esantioane L si R se refera la CD-ul audio (cate 6 esantioane L si R
de cate 16 biti per cadru)
Sisteme de fisiere (File Systems)
• Un sistem de fisiere este o metoda de stocare si
organizare a datelor intr-un sistem de calcul.
• Ideea de filesystem este asociata cu un mediu de
stocare a datelor: exista disk file systems, network file
systems (NFS), Flash file systems (FFS) sau RAM disks.
• Elementul central al oricarui filesystem este conceptul de
fisier, caracterizat printr-un nume, un continut si o serie
de informatii aditionale (metadata), de exemplu, data si
ora cand a fost creat, atribute, etc.
• In continuare ne vom referi doar la disk file systems.
Istoricul disk file systems
• Primul disk file system este definit de sistemul de
operare CP/M (Control Program for Microcomputers)
• Introducea numele de fisiere in formatul 8.3 (maxim 8
caractere pentru numele propriu-zis si 3 caractere pentru
extensie)
• Lungimea fisierului era mentinuta de sistemul de operare
intr-un FCB (File Control Block) asociat.
• Nu exista conceptul de “director”
• Un fisier era format dintr-un numar de “records” – blocuri
de date de 128 de octeti, concept din care a derivat
ulterior conceptul de “cluster”.
Sistem de fisiere de tip FAT
(FAT12, FAT16, FAT32)
• FAT este acronimul pentru File Allocation
Table
• 12,16,32 se refera la numarul de biti
folositi pentru codificarea adresei cluster-
elor.
• FAT12 a fost creat pentru floppy disc-uri
• A fost introdus de MS-DOS
• Introduce un element revolutionar –
conceptul de director.
Organizarea datelor pe disc in
cazul FAT12
• Dimensiunea unui cluster este de un
sector de disc (512 octeti).
Structura sectorului 0
Structura sectorului 0 - continuare
Structura sectorului 0 - continuare
Arhitectura calculatoarelor

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)

• Port pentru calculatorul gazdă


• Porturi pentru funcţii
• Conectare în cascadă până la 5 nivele
Topologia magistralei (4)
• Funcţii USB
– Periferice USB care pot transmite sau
recepţiona date sau informaţii de control
– Un periferic poate conţine funcţii multiple
– Trebuie să răspundă la cererile de
tranzacţie transmise de calculator
– Conţin informaţii de configuraţie care
descriu posibilităţile lor şi resursele
necesare
– Configurarea funcţiei: alocarea unei lăţimi
de bandă şi selectarea opţiunilor de
configuraţie
Versiuni USB (1)
• Versiunea 1.0 (1995): max. 12 Mbiţi/s
• Versiunea 1.1 (1998): max. 12 Mbiţi/s
– Canal cu viteză redusă (1,5 Mbiţi/s)
• Versiunea 2.0 (2000)
– Rata de transfer maximă a crescut de 40 de
ori, la 480 Mbiţi/s (High-Speed)
– Utilizează aceleaşi cabluri, conectori şi
interfeţe software
– Permite utilizarea a noi tipuri de periferice:
camere video, scanere, imprimante
Versiuni USB (2)
• USB On-The-Go (USB OTG)
– Supliment la specificaţiile USB 2.0
– Un dispozitiv poate avea rolul de master sau
rolul de slave (gazdă, periferic)
• Protocol pentru inversarea rolurilor
– Două dispozitive pot comunica între ele fără
intermediul unui calculator
• PDA  imprimantă
• Imprimantă  aparat foto
Versiuni USB (3)
• Versiunea 3.0
– Specificaţii finalizate în 2008 de USB 3.0
Promoter Group
– Mod SuperSpeed: 5 Gbiţi/s
– Două canale simplex diferenţiale în plus faţă
de canalele diferenţiale existente  în total 8
fire
– Tehnologia este similară cu PCI Express 2.0
 codificare 8b/10b (500 MB/s)
Cabluri şi conectori (1)
• Semnale diferenţiale pe liniile D+ şi D-
• Tensiunea de alimentare pe linia VBUS
• Terminatori la fiecare capăt al cablului
– Asigură nivele de tensiune corecte pentru
periferice
– Permit detectarea conectării şi deconectării
perifericelor
– Permit diferenţierea între periferice rapide şi
lente
Cabluri şi conectori (2)

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

• Conectorii de date din mufa de tip A sunt mai scurţi


comparativ cu conectorii de alimentare
• Anumite dispozitive funcţionează într-un mod diferit
atunci când conectorul este inserat parţial
Cabluri şi conectori (4)

• Conectori mini-USB şi micro-USB pentru PDA,


telefoane mobile, aparate foto
• Mini-USB: 7x3 mm; nu se utilizează pentru aparate noi
• Micro-USB: 7x1,5 mm
Cabluri şi conectori (5)
• USB OTG
– Socluri micro-AB
– Permit conectarea unei mufe micro-A sau
micro-B
– Un pin ID: utilizat pentru a detecta tipul mufei
inserate
• Conectat la masă la micro-A, neconectat la micro-
B
• Dacă este conectată o mufă A: rol de calculator
gazdă  furnizează tensiune de alimentare
Interfaţa electrică
• Semnalul de ceas este codificat împreună
cu datele
• Codificarea utilizată este NRZI (Non
Return to Zero Inverted on Ones)
• Biţi suplimentari inseraţi (“bit stuffing”)
pentru a asigura tranziţii suficiente ale
semnalelor transmise
Tipuri de transfer (1)
• Transferuri de control
– Se utilizează de driverele calculatorului pentru
configurarea perifericelor
• Transferuri de date voluminoase (Bulk)
– Constau din volume mari de date
– Se utilizează pentru imprimante, scanere
– Fiabilitatea asigurată prin: cod detector de
erori; reluarea transferurilor cu erori
– Rata de transfer poate varia
Tipuri de transfer (2)
• Transferuri de tip întrerupere
– Se utilizează pentru date cu volum redus
– Transferul datelor poate fi solicitat de un
periferic în orice moment
– Rata de transfer nu poate fi mai redusă decât
cea specificată de periferic
– Datele constau din notificarea unor
evenimente, din caractere sau coordonate
Tipuri de transfer (3)
• Transferuri izocrone
– isos – egal, uniform; chronos – timp
– Izocron – cu durată egală; care apare la
intervale egale
– Se utilizează pentru datele generate în timp
real, care trebuie furnizate cu rata cu care
sunt recepţionate
– Trebuie respectată şi întârzierea maximă cu
care sunt furnizate datele
Tipuri de transfer (4)
– Furnizarea la timp a datelor este asigurată cu
preţul unor pierderi potenţiale în şirul de date
– Porţiune dedicată a lăţimii de bandă
– Transferuri izocrone:
• Furnizarea la timp a datelor
• Lipsa retransmiterii datelor eronate
– Transferuri asincrone:
• Furnizarea corectă a datelor
• Retransmiterea datelor eronate
Fluxul de date prin USB
Descrierea generala a protocolului USB

• Este de tip MASTER-SLAVE (Dispozitivul HOST


este MASTER)
• Toate transferurile de date sunt initiate de HOST
la intervale de timp predefinite (1ms pentru
USB1.x sau 125us pentru USB 2.0)
• La nivel fizic transmisia este diferentiala
• La detectarea unui nou dispozitiv conectat la
bus, HOST initiaza un proces denumit
“enumerare”, prin care se identifica dispozitivul
SLAVE, I se aloca o adresa si se incarca un
driver
Detectarea dispozitivelor SLAVE

Detectia se face prin conectarea la nivelul SLAVE a unor


rezistente de 1.5K la linia de date D+ (USB2.0) sau D-
(USB1.x).
La nivelul HOST ambele linii sunt conectate la GND prin
rezistente de 15K.
Procesul de enumerare
• Asignarea unei adrese unice pe bus pentru fiecare
SLAVE. Asignarea este facuta de HOST. Inainte de a
capata o adresa proprie, toate perifericele USB comunica
cu HOST-ul folosind adresa 0.
• Citirea de catre HOST a unor structuri de date denumite
“descriptori”, care contin informatii despre clasa din care
face parte dispozitivul, VendorID si Product ID. Acestea
sunt necesare HOST-ului pentru a identifica si incarca un
driver specific, care sa coordoneze comunicatia cu
dispozitivul SLAVE.
• Incarcarea driverului
• Selectarea unei configuratii pentru dispozitivul SLAVE
(de exemplu tipul de power, sau alte caracteristici de
functionare).
• Procesul de enumerare este transparent pentru utilizator.
Odata enumerat, dispozitivul este adaugat in “device
manager”.
Clase de dispozitive USB
Cele mai raspandite clase de dispozitive USb sunt
urmatoarele:
• HID (Human Interface Devices – Tastaturi si Mouse)
• Mass storage devices (Discuri virtuale)
• Printers
• Audio devices
• Imaging devices (Camere foto/video)
Dispozitivele care apartin aceleiasi clase au o serie de
trasaturi comune, iar impartirea pe clase este utila pentru
ca faciliteaza standardizarea dezvoltarii software la
nivelul driverelor si al firmware. In multe situatii, nu mai
este necesar sa scriem un driver specific pentru un
anume dispozitiv, fiind posibil sa folosim un driver
generic, valabil pentru intreaga clasa din care face parte
Conceptul de “endpoint”
• Definitia unui endpoint conform specificatiilor
standardului USB este: "a uniquely addressable
portion of a USB device that is the source or sink of
information in a communication flow between the
host and device."
• Un endpoint este deci un buffer RAM localizat la nivelul
controllerului USB al device-ului.
• Un endpoint este caracterizat de un numar (de la 0 la 15)
si o directie (IN sau OUT din perspectiva HOST).
• Un endpoint asociat cu transferuri de tip control trebuie
sa permita ambele directii de transfer.
• Endpoint-ul cu numarul 0 este intotdeauna de control.
• Pentru fiecare endpoint exista un descriptor – un bloc de
informatie care defineste tipul de transfer, adresa
(numarul) endpointului, numarul maxim de octeti de date
care se pot transfera si – in unele cazuri – intervalul de
Conceptul de “pipe”
• Un pipe este o conexiune logica intre driverul
soft de la nivelul HOST si un endpoint aflat la
nivelul device-ului USB.
• Un pipe nu are asociat nici un suport fizic
specific.
• Orice device are un default control pipe care
foloseste endpoint 0.
Transfer, tranzactie, pachet de date
• Orice transfer de date consta din una sau mai
multe tranzactii, iar fiecare tranzactie consta in
1, 2 sau 3 pachete de date.
Tipuri de pachete de date
• Token packet (este in esenta un header care
descrie tranzactia)
• Data packet (este optional, contine “payload-ul”)
• Handshake packet (pachet de stare folosit pentru
confirmare si detectia erorilor)
Structura pachetelor USB

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

• Un hub este, in esenta, un repetor multiport –


semnalele electrice receptionate pe fiecare port
sunt re-transmise amplificat pe toate celelalte
porturi. (este un dispozitiv specific layer-ului 1
OSI)
• Un switch dispune de un buffer de memorie
pentru fiecare port, e capabil sa decodifice
adresa de destinatie a mesajului si retransmite
mesajul DOAR catre nodul destinatar. (este un
dispozitiv de layer 2 OSI)
Reprezentarea logica a datelor la nivel fizic.
Codarea Manchester
Layerul “data link” al protocolului Ethernet

Defineste reguli pentru:


• Adresarea nodurilor
• Structurarea pachetelor (frames-cadre) de
date
• Accesul la mediul de comunicatie
• Detectarea si tratarea coliziunilor
• Detectarea erorilor de comunicatie
Adresarea nodurilor de retea Ethernet.
Adrese MAC

• Ethernet foloseste un sistem de adresare pentru


a identifica in mod unic fiecare nod al retelei.
Acest sistem de adresare este unul local (valabil
doar in interiorul LAN-ului)
• Adresele utilizate se numesc adrese MAC
(Media Access Control Address). O adresa MAC
indentifica in mod unic o interfata de retea ce
foloseste Ethernet
• Adresa MAC este scrisa intr-o memorie
ROM/EEPROM la nivelul NIC si, in principiu, nu
poate fi schimbata.
Formatul adreselor MAC

• O adresa MAC este un bloc de date cu lungimea


de 48 de biti (6 octeti), reprezentata printr-un sir
de 12 caractere hexazecimale.
• Primele 6 caractere hex (24 de biti) sunt
administrate de IEEE si identifica producatorul.
(Organizational Unique Identifier)
• Ultimele 6 caractere hexazecimale sunt
administrate de catre producator si de regula
reprezinta un numar de serie, unic, al interfetei
de retea.
Tipuri de adrese MAC

• Adrese de broadcast – Cand adresa MAC a


destinatiei unui pachet are toti bitii 1 (FF FF FF
FF FF) aceasta indica faptul ca pachetul
respectiv este destinat tuturor nodurilor.
• Daca primul octet al MAC Address este impar,
aceasta indica un pachet multicast (cu destinatie
multipla)
• Daca primul octet al MAC address este par,
atunci transmisia este unicast (cu destinatar
unic)
Structura “frame-urilor” Ethernet

Primii 8 octeţi sunt folosiţi pentru sincronizare şi nu vor fi luati in


calcul pentru CRC
Campul preambul este format din 7 octeţi 0xAA, iar octetul de start
cadru are valoarea 0xAB
Campul tip / lungime are următoarea semnificaţie:
sub 0x0600 –câmpul este interpretat ca lungime
peste 0x0800 –câmpul este interpretat ca tipul pachetului
Campurile Adresa Destinatie si Adresa Sursa contin adresele MAC ale
nodurilor.
Accesul la mediu (CSMA/CD)
Detectarea si tratarea coliziunilor
• Detectarea coliziunilor se face verificand
prezenta semnalelor electrice pe linia de
receptie (Rx+,Rx-) pe durata emisiei unui cadru.
• In caz de coliziune se reincearca transmisia
frame-ului de n ori (n=16).
• O noua tentativa de transmisie se face dupa
asteptarea unui numar de maxim 2^q
microsecunde (q=10). Timpul de asteptare este
generat pseudo-aleator (t<2^q).
Tipuri de erori in protocolul
Ethernet
– Collision Transmisie simultana produsa inainte de
expirarea slot-time-ului (64/512 octeti)
– Late collision. Transmirie simultana produsa dupa
expirarea slot-time-ului
– Long frame - Transmisie excesiv de lunga
– Short frame, collision fragment Transmisie ilegal de
scurta
– FCS error. Transmisie corupta
– Range error. Numarul de octeti din frame nu
corespunde cu cel declarat (in campul Type/Length)
– Ghost sau jabber. Frame cu preambul prea lung
Schema bloc a unui chip Ethernet
Controller (CS8900)
Software pentru monitorizarea traficului in
retele Ethernet - Wireshark
Intrebari
• Cum se explica aparitia coliziunilor, in
conditiile in care exista mecanismul de
“carrier sense” (un nod al retelei nu incepe
transmisia daca detecteaza prezenta
datelor pe linie)?
• Cum se pot reduce/elimina coliziunile la
nivelul unui tronson de retea?
Interfete speciale
• Adaptoare/convertoare de protocol.
• Exemple: USB to serial, USB to Ethernet,
Ethernet to serial, USB to WiFi, Serial to
Bluetooth, Serial to CAN, RS232 to
RS422/485
• Interfete pentru achizitii de date.
• Exemple: Module cu intrari analogice si
convertoare A/D, Module cu intrari/iesiri
digitale.
Adaptoare/Convertoare de protocol
Convertoare RS232-Ethernet

Creaza un port serial virtual intr-o retea Ethernet


Convertorul are o adresa IP proprie si este in
principiu accesibil in LAN sau chiar in Internet
Varianta WiFi
RS232 to Bluetooth
RS232 to CAN converters
Wireless Sensors
Calculatoare de proces
Interfete pentru achizitii de date
Arhitectura calculatoarelor

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 de program FBD pentru Mitsubishi Alpha 2


IEC-61131-3 – Limbajul IL

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 la destinatie
Definirea setului de instructiuni
• Structura generala a unei instructiuni:
• FNAME DEST, OP1, OP2, OP3, OP4

DEST poate specifica orice resursă a sistemului.


Operanzii pot fi numele unor resurse (variabile
asociate cu resurse fizice sau logice, constante
predefinite), sau constante adresate imediat.

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

OP1 FNAME DEST,OP1,OP2,OP3,OP4


OP2 Yi
OP3 OR FNAME poate fi AND, NAND, OR,
OP4 NOR, XOR
Operanzii sunt resurse booleene
Sintaxa instructiunilor – Bistabili

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

Fisierele sursa sunt fisiere text cu extensia .src


In urma compilarii se obtine un fisier binar, avand acelasi nume
cu fisierul sursa si extensia .bin, care contine codul executabil.
Fisierele binare se transfera in EEPROM-ul microcontrollerului pe
linia seriala.
La sfarsitul transferului, se incepe imediat executia programului.
Detalii privind implementarea (1)
Variabile globale
eeprom unsigned char prgbuf[PRGSIZE]; //prog memory
unsigned int xprg=0; //echivalent cu program counter
unsigned char rt[RSIZE]; //resource table
unsigned char opcode;
unsigned char op1;
unsigned char op2;
unsigned char op3;
unsigned char op4;
unsigned char dest;
unsigned char result; //rezultatul ultimei operatii
Detalii privind implementarea (2)
Detectia fronturilor variabilelor logice
Pentru fiecare variabila booleana se rezerva cate un octet (nu
doar un bit) in tabela de resurse.
Starea curenta a variabilei este memorata in bitul cel mai putin
semnificativ al octetului.
La fiecare evaluare a starii variabilei, noua valoare este shiftata in
bitul cel mai putin semnificativ, deplasand la stanga continutul
octetului.
In acest mod cei mai putin semnficativi doi biti ai octetului
codifica frontul: 00 palier LOW, 01 – RISE, 02- FALL, 11 –palier
HIGH.
Detalii privind implementarea (3)
Programul principal
while (1)
{
//check communication
//execute PLC program
if(rt[offset_QRUN]!=0)
{
fetch(); // get opcode
get_operands();
execute();
} // end if
} // end while
Detalii privind implementarea (4)

Funcţia fetch() extrage codul funcţiei din prgbuf[],


de la poziţia curentă, indicată de pointer-ul xprg şi
actualizează variabila globală opcode.
Funcţia get_operands() localizează operanzii
corespunzător cu valoarea opcode şi actualizează
variabilele op1, op2, op3, op4,
Funcţia execute() identifică si execută funcţia
codificată de opcode.
Detalii privind implementarea (5)
Functia fetch()
void fetch(void)
{
opcode=prgbuf[xprg];
}
Nota:
Poinetrul xprg este incrementat dupa executia
fiecarei instructiuni, in asa fel incat sa adreseze
urmatorul opcode din program (numarul de octeti
care compun o instructiune este variabil)
Detalii privind implementarea (6)
Functia get_operands()
void get_operands(void)
{
switch(opcode)
{
case 0x00: //Start of Cycle
read_di();
read_analog_input();
break;
….
Detalii privind implementarea (7)
Functia get_operands()
case 0x04: /* functia AND */
dest=prgbuf[xprg+1];
op1=rt[prgbuf[xprg+2]];
op2=rt[prgbuf[xprg+3]];
op3=rt[prgbuf[xprg+4]];
op4=rt[prgbuf[xprg+5]];
break;
...... Observati modul de extragere a operanzilor
adresati direct
Detalii privind implementarea (8)
Functia get_operands()
case 0x04: /* functia AND */
dest=prgbuf[xprg+1];
op1=rt[prgbuf[xprg+2]];
op2=rt[prgbuf[xprg+3]];
op3=rt[prgbuf[xprg+4]];
op4=rt[prgbuf[xprg+5]];
break;
...... Observati modul de extragere a operanzilor
adresati direct
Detalii privind implementarea (9)
Functia get_operands()
case 0x09: /* functia FF */
dest=prgbuf[xprg+1];
op1=rt[prgbuf[xprg+2]];
op2=rt[prgbuf[xprg+3]];
op3=prgbuf[xprg+4]; // adresare imediata
break;
Detalii privind implementarea (10)
Functia get_operands()
case 0x0a: /* functia TIMER */
dest=(prgbuf[xprg+1])&0x1f;//dest e offset in TTAB
op1=(prgbuf[xprg+2])&0x01;
op2=(rt[prgbuf[xprg+3]])&0x03;
op3=(prgbuf[xprg+4])&0x03;
op4=prgbuf[xprg+5];
break;
Detalii privind implementarea (11)
Functia execute()
void execute(void)
{
switch(opcode)
{
case 0x00:
next();
break;
case 0x04: /* functia AND */
xand();
next();
break;
Detalii privind implementarea (12)
Functia execute()
case 0x0a: /* functia TIMER */
xtimer();
next();
break;
case 0x0b: /* functia COUNTER */
xcounter();
next();
break;
case 0x0f: /* EOC */
write_do();
next();
break;
Detalii privind implementarea (13)
Functiile logice xand, xnand, xor, xnor, xxor
void xand(void)
{
result=rt[dest];
if((op1&op2&op3&op4) & 0x01)
{
result=(result<<1)|0x01;
}
else result=result<<1;
rt[dest]=result;
}
Concluzii
Micro-PLC-ul prezentat, permite accesul la resursele
unui microcontroller printr-un set foarte redus de
instructiuni.
Poate fi folosit de utilizatori fara nici un fel de cunostinte
de programare.
Rezolva circa 70% din problemele de automatizare
uzuale.
Permite o intelegere mai profunda a modului de
functionare a ORICARUI calculator digital.

S-ar putea să vă placă și