Documente Academic
Documente Profesional
Documente Cultură
Cl
D
Q
Qdorit_MS
Flip-flop master-slave D
Reduce probabilitatea activării la variaţii bruşte de input.
Face posibilă proiectarea unor circuite secvenţiale complexe (ex.: regiştrii cu
deplasare).
D DM QM DS QS Q
CL
CLM CLS
Q
Flip-flop JK master-slave
Utilizarea controlului prin ceas
• Depinde de elementele de construcţie
folosite.
• Larg folosite flip-flop-urile active pe front
– crescător sau descrescător
– De exemplu, la componentele logice
programabile (programmable logic devices)
• Numeroase circuite integrate uzuale folosesc
latch-uri
• active pe nivel
• Asincronie (I/O, delay)
Latch-uri şi flip-flop-uri
• Circuite D
– Latch: 4 tranzistoare
– Flip-flop: utilizat în elemente programabile
– Alegerea uzuală pentru regiştri
IN D Q D Q D Q D Q
CLK
Registrul universal cu deplasare
• Intrările pot fi seriale sau paralele (simultane).
• Ieşiri seriale sau paralele
• Poate efectua deplasarea spre stânga sau spre dreapta
• Valori noi sunt introduse de la stânga la dreapta
• Intrări/ieşiri suplimentare pentru deplasare
• biţi “pierduţi” / ”recuperaţi”
clear pune la 0 conţinutul registrului şi ieşirile
ieşire s1 şi s0 controlează funcţia de deplasare
s0 s1 funcţie
intrare stânga Ieşire dreapta 0 0 păstrează starea
ieşire stânga Intrare dreapta
clear 0 1 deplasare dreapta
s0 ceas (shift)
s1
1 0 deplasare stânga
1 1 încărcare noua intrare
intrare
Contoare (circuite de numărare)
• Generează o anumită secvenţă de combinaţii la ieşire,
reluată de la început după ce se termină.
– În figură, 1000, 0100, 0010, 0001…
– Starea iniţială trebuie să fie una dintre combinaţii
IN D Q D Q D Q D Q
CLK
IN D Q D Q D Q D Q
CLK
Contor binar
• Ieşirea constă din scrierea în baza 2 a numerelor de la 0
la 15, în ordine, reluate apoi de la 0: 0000, 0001, 0010,
0011, 0100, 0101, 0110, 0111, 1000, 1001, 1010, 1011,
1100, 1101, 1110, 1111, 0000, 0001, …..
» 1: 0101010101010101…;
» 2: 001100110011…;
» 3: 0000111100001111…;
» 4: 00000000111111110000000011111111…
• Alte diagrame posibile?
D Q D Q D Q D Q
CLK
"1"
Capitolul al-IV-lea
Reprezentări interne
&IV.1.
Introducere
• Reprezentările interne elementare
constituie un element al arhitecturii
oricărui calculator
• Resursă accesibilă direct programatorilor
• Structurile de date mai complicate se
definesc pornind de la reprezentările
interne elementare.
Reprezentări elementare
• Date numerice
• Anumite submulţimi finite ale mulţimilor numerelor întregi,
respectiv raţionale
• Date “alfa-numerice” / logice
• Caractere ; valori de tip boolean
• Instrucţiuni
• În limbaj maşină
• Singurele reprezentări interne elementare ne-standardizate
» Şi, evident, neportabile.
Importanţa studiuluui
reprezentărilor
• Eficienţa şi siguranţa (fiabilitatea)
reprezentărilor interne
• Numerice:
r(n1) op r(n2) ?=? r(n1 op n2)
• Erori inevitabile şi efectul lor
• Mulţimi de cardinalităţi diferite
» R[a,b] şi Qm[a,b])
• Aproximări, depăşiri
• Tratarea cazurilor de excepţie
&IV.2.
Coduri detectoare şi
coduri corectoare de erori
Detectarea de erori
• Fiabilitatea transmisiei şi prelucrării
reprezentărilor de date.
dată dată
Codificare Decodificare
Transmisie
(posibil cu ”zgomot”)
Moduri de detectare / corectare
• Paritate: bit suplimentar
– detecţie
– paritate (im)pară: număr (im)par de 1
• Cod Hamming
– corecţie
– 4 biţi de informaţie, 3 biţi de paritate
– dectarea /corecţia mai multor erori simultan
Exemplu: ”paritate impară”
• Emiţător:
– Are de trimis valoarea (110)2
– generează bitul de ”paritate impară” P=1
– trimite (1101)2
• Receptor:
– primeşte (1101)2
– verifică imparitatea numărului de 1 din şir
– Dacă nu detectează erori, elimină bitul de paritate,
pentru a obţine valoarea transmisă: (110)2
&IV.3.
Codificări alfanumerice
Codificări alfanumerice
• Reprezentări binare ale datelor
alfanumerice
• Alfabetice, numerice, simbolurile pentru
operatori, separatori etc.
Scrierea
poziţională
Scrierea poziţională
• Este tot o reprezentare!
• 72018 nu este un număr, ci reprezentarea unui
număr
• Inventată de arabi / indieni
• Scrierea romană nu permite algoritmi eficienţi de
calcul
• Factor implicit ataşat fiecărei poziţii din
reprezentare
• Esenţială în arhitectura calculatoarelor
• Exemplu: sumatorul serial din sumatoare complete
Baze de numeraţie
• Orice număr natural d>1.
• Cu un singur simbol nu se pot folosi factori
impliciţi, ci juxtapunere + numărare
• Mulţimea cifrelor în baza d: {0,1,…,d-1}
• Calculatorul lucrează în baza d=2.
• Estimări analitice şi probabiliste: bazele în care se
pot face cel mai rapid calcule sunt 2 şi 3.
• Tehnic: 2 cifre cel mai uşor de realizat
• Teoretic: baza 2 se poate “scufunda” în logica
booleenă
» ca simboli şi ca operaţii
Limite
• Dacă s-ar reprezenta numerele în baza 2
fără semn (pozitive), atunci:
• Numărul maxim reprezentabil pe un octet
ar fi 255 = 28-1;
• Numărul maxim reprezentabil pe doi octeţi
ar fi 65535 = 216-1;
• Numărul maxim reprezentabil pe patru
octeţi ar fi 4294967295 = 232-1.
Scrierea poziţională
• Baza d, dN*-{1}:
pentru ai {0,1,…,d-1}, i= - m,…,n-1
± (an-1an-2….a1a0,a-1…..a-m)(d)=
± i=-m n-1 (ai*di) (10)
• ai = valoarea celei de-a i+1a cifre de la stânga virgulei
» i=0..n-1
• a-j = valoarea celei de-a ja cifre de la dreapta virgulei (j>0)
» j=1..m
• di este factorul implicit pentru poziţia i
– Se ridică la puterea i
• d+1 pentru partea întreagă
• d-1 pentru partea fracţionară
Baza d baza 10
• FA2,B(16)=
15×162 + 10×161 + 2×160+11×16-1
= 3840 + 60 + 2 + 11 / 16 =
4002,6875(10)
Baza 10 baza d
• 813,65(10) = 1100101101,10(1001)(2)
» 813 / 2 = 406 + 1 / 2 1 (LSBi)
» 406 / 2 = 203 + 0 / 2 0
» 203 / 2 = 101 + 1 / 2 1
» 101 / 2 = 50 + 1 / 2 1
» 50 / 2 = 25 + 0 / 2 0
» 25 / 2 = 12 + 1 / 2 1
» 12 / 2 = 6 + 0 / 2 0
» 6/2= 3+0/2 0
» 3/2= 1+1/2 1
» 1/2= 0+1/2 1 (MSBi)
» 0,65 / 2-1 = 1 + 0,3 1 (MSBf)
» 0,3 / 2-1 = 0 + 0,6 0
» 0,6 / 2-1 = 1 + 0,2 1
» 0,2 / 2-1 = 0 + 0,4 0
» 0,4 / 2-1 = 0 + 0,8 0
» 0,8 / 2-1 = 1 + 0,6 1 (LSBf)
» …. (perioadă)
Aproximarea reprezentării
• d1 = 8 = 23 ; d2 = 16 = 24
• 703,102(8) =
• = 111 000 011 , 001 000 010 (2) =
• = 0001 1100 0011 , 0010 0001 0000 (2) =
• = 1C3,21(16)
&IV.4.2.
Reprezentările
BCD şi în exces
• Coduri poziţionale
– Sisteme de numeraţie bazate pe scrierea poziţională
• de exemplu, codul BCD
• Coduri non-poziţionale
• De exemplu, codul Excess-k
» k=3 etc.
» în general, k=2p-1.
• Pentru aplicaţii tip business, numerele se pot
reprezenta ca şiruri de cifre în baza 10, fiecare
cifră fiind reprezentată pe 4 biţi
• BCD, Excess
Codurile BCD şi Excess-3
• Zecimal BCD Excess-3
0 0000 0011
1 0001 0100
2 0010 0101
...
7 0111 1010
8 1000 1011
9 1001 1100
• 1413(10) = 0001 0100 0001 0011(BCD)
Adunarea BCD
5 = 0101 + 5 = 0101+
8 = 1000
3 = 0011 13(10)= 1101
8(10)= 1000 = 8(BCD) 13(BCD) =
0001 0011
Temă: De ce?
5 = 0101 + 9 = 1001 +
8 = 1000 7 = 0111
6 = 0110 + 6 = 0110
CO FA CI CO FA CI CO FA CI CO FA CI Cin
S S S S
A1 11XX
A2 1X1X
CO FA CI CO FA CI 0
S S
Cout S3 S2 S1 S0
Reprezentarea în
complement faţă de 2
Complement
• Fie baza d > 1.
• Complementul unei cifre:
• Pentru o cifră a {0,1,…d-1}
cd(a) = (d – 1) – a
• Pentru d = 2 şi b {0,1} :
c2(b) = (2 – 1) – b = 1 – b b
• Dar complementul unui şir de biţi ?
Complement faţă de bază şi faţă de
cifra maximă
• Extinderea definiţiei complementului la un
şir de biţi se poate face în două moduri:
– Conform definiţiei pentru un bit (complement
faţă de cifra maximă)
• C1(1011) = 0100 C1(0100) = 1011
– Adaptând definiţia pentru şiruri (complement
faţă de bază).
• C2(1011) = 0100 0001 = 0101
• C2(0101) = 1010 0001 = 1011
Reprezentarea în
complement faţă de 2
Reprezentarea în
complement faţă de 1
Reprezentarea în
complement faţă de 1
• Asemănătoare cu C2, dar la decodificarea
numerelor negative se adaugă precizia.
• Complement faţă de 1: C1
• ValC1n,m (an-1an-2….a1a0a-1…..a-m) =
an-2 × 2n-2 +…+ a-m × 2-m, dacă an-1 = 0
0000 +0 0 +0 -7
0001 +1 +1 +1 -6
0010 +2 +2 +2 -5
0011 +3 +3 +3 -4
0100 +4 +4 +4 -3
0101 +5 +5 +5 -2
0110 +6 +6 +6 -1
0111 +7 +7 +7 0
1000 -0 -8 -7 +1
1001 -1 -7 -6 +2
1010 -2 -6 -5 +3
1011 -3 -5 -4 +4
1100 -4 -4 -3 +5
1101 -5 -3 -2 +6
1110-6 -2 -1 +7
1111 -7 -1 -0 +8
&IV.4.7.
• valC24,0(1111) = -1
• (-1) + (-1) = -2
• valC24,0(1110) = -2
» Rezultat corect, deci nu se produce depăşire
» Testarea depăşirii cu definiţia:
» QC24,0 [-8; 7]. -1QC24,0 . -2 [-8; 7].
» Calculatorul nu poate însă testa definiţia, întrucât
“ştie” reprezentările, nu numerele reprezentate
Depăşire – exemplul 2
• În reprezentarea C2 , cu n = 4, m = 0 :
• 0111 0111 = 1110
» Nu se “pierde” nici o cifră
• valC24,0(0111) = 7
• 7 + 7 = 14
• valC24,0(1110) = -2
» Rezultat eronat, deci se produce depăşire
» Testarea depăşirii cu definiţia:
» QC24,0 [-8; 7]. 7QC24,0 . 14 [-8; 7].
» Calculatorul nu poate însă testa definiţia, întrucât nu
“ştie” numerele reprezentate
Depşirea la adunare în C2
• De fapt, cifra de transport de la rangul cel
mai semnificativ (fie 0, fie 1) se pierde
întotdeauna din rezultat
• dar se reţine în indicatorul C (transport general)
• Trebuie găsită o condiţie asupra
reprezentărilor care, testată, să semnaleze
depăşirea
• Fără a folosi definiţia -numerele nu sunt disponibile
• Testarea va fi făcută de un circuit ataşat
sumatorului
Condiţia de depăşire
Reprezentarea
numerelor reale:
aritmetica în virgulă mobilă
Reprezentarea în virgulă mobilă (*)
• Reprezentările în virgulă fixă nu sunt potrivite
pentru numere reale
• Dualitatea magnitudine / precizie
– lungimea n+m fixată
– Creşterea magnitudinii înrăutăţeşte precizia şi
reciproc
• Virgulă mobilă: un număr se reprezintă printr-o
pereche de reprezentări în virgulă fixă
– Permiţând reprezentarea simultană de numere cu
magnitudini şi precizii diferite
Notaţia ştiinţifică; normalizare (*)
• Exemple
• 7.015791043…zece
» scriere poziţională
• 55312.1784zece X 10 -105
» ar necesita 110 cifre în scriere poziţională, doar 14 aici.
• 0.00000083zece X 10 4
» Se poate scrie şi eliminând zerourile semnificative
– Numeroase scrieri posibile pentru acelaşi număr
• Notaţia ştiinţifică:
– o singură cifră la stânga virgulei
– 0.031056zece X 10 7
– Încă numeroase scrieri posibile pentru acelaşi număr
» m1 X Be1 = m2 X Be1+k , unde m2 = m1 / B-k , pt. oricare k Z.
• Scriere normalizată: reprezentare în notaţie ştiinţifică
fără prefix de zerouri semnificative
• 6.15zece X 10 -75
» Poziţional 78 de cifre semnificative, dintre care 75 zerouri.
– Unică pentru un număr dat.
Notaţia ştiinţifică în binar
• 1.101doi X 2 2
• 6,5zece
• 1.xxx…xdoi X 2 yyy
• În binar, doar numărul 0 nu conţine nici o cifră 1
» Definire specială a reprezentării lui 0.
• Pentru oricare alt număr reprezentabil, cel mai
semnificativ 1 trebuie să devină singura cifră de la partea
întreagă
» Ceea ce, în general, alterează exponentul lui 2.
Reprezentări în virgulă mobilă
• Semnul S: 0 sau 1
• 1 bit
• Partea fracţionară f ; mantisa este 1+f
• mantisa are 1+23 (sau 1+52) biţi
• Caracteristica C
• k=8 sau k=11 biţi. exces = 2k-1 – 1
• c = exponent + exces.
• x = ( +/- ) 1.f B c – exces
• Primul 1 şi baza 2 se subînţeleg/nu se reprezintă
» O figură similară pentru numerele reprezentabile în virgulă fixă ar indica un
singur interval conţinând numere reprezentabile, simetric faţă de 0 şi cu cele
două capete aflate fiecare într-unul din intervalele figurate aici cu verde.
Interval conţinând
Interval conţinând
numerele negative zero numerele pozitive
reprezentabile
reprezentabile
0
1 11 20 31
Biţi “precizie” 24 53