Sunteți pe pagina 1din 99

1

CAPITOLUL I. BAZE DE NUMERAŢIE. CODURI. ELEMENTE DE


ARTIMETICĂ NUMERICĂ.

1.1. SCURT ISTORIC

Evoluţia spectaculoasă din ultimele decenii a tehnologiilor informatice, caracterul de


masă al echipamentelor de comunicaţii, ne induc sentimentul orgolios că toate acestea
sunt produsul generaţiei actuale iar procesarea informaţei sub formă numerică, digitală,
cu realizari de tip calculatoare, automate secvenţiale, roboţi, este un proces pornit de cel
mult 50 de ani. Evident că lucrurile nu stau aşa. Şi nu este vorba doar de apariţia
conceptelor, fie în zona artistică, fie în cea teoretică, dar este util să ne amintim de câteva
realizări şi de anumite personaje care, nu de puţine ori, au glisat în mitologii recente.
Dacă este să urmărim conceptul de robot, de automat secvenţial, dincolo de introducerea
relativ recentă a termenului, anul 1920, realizată de scriitorul ceh Karel Čapek în romanul
RUR, trebuie să amintim un personaj fascinant, baronul Wolfang von Kempelen (1734-
1804). Personajul este cu atât mai fascinat cu cât el a fost implicat în amplele lucrari de
inginerie pe care le-a ordonat împărăteasa Maria Tereza pentru Banat şi Timişoara.
Pornind de la un spectacol de iluzionism prezentat la Palatul Schönbrunn, el promite să
construiască un dispozitiv tehnic care să surprindă publicul mai mult decât un astfel de
spectacol. În anul 1770 este prezentat publicului jucătorul mecanic de şah, numit Turcul,
după costumaţia aleasă. O copie a acestuia, realizată după gravurile de epocă este
prezentată în Fig.1.1.

Figura 1.1 Jucătorul mecanic de şah “Turcul” şi autorul său, baronul von Kempelen

Automatul a avut ulterior mai mulţi proprietari care au organizat timp de 84 de ani
turnee demonstrative în Europa şi America. Printre personalităţile care au jucat partide de
şah şi au fost înfrânte de acest misterios automat au fost Napoleon Bonaparte şi Benjamin
Franklin. Deşi contestat de mulţi contemporani şi considerat o şarlatanie, în sensul că se
presupunea că totul este un abil truc de iluzionism prin care se permite unei persoane să
2

se plaseze în interiorul automatului şi să-l acţioneze, nimeni nu a reuşit să dovedească


aceasta.
O altă invenţie a baronului Wolfang von Kempelen, de asemeni legată de conceptul
de robot, respectiv de capacitatea de comunicare în limbaj uman, a fost maşina care
reproducea vocea umană, sau cum a numit-o el, “Mechanismus der menschlichen
Sprache nebst Beschreibung einer sprechenden Maschine” (1791). Desenele
echipamentului, provenind din lucrarea respectivă sunt prezentate în Fig.1.2.

Figura 1.2 Maşina de reprodus vocea umană a baronulului von Kempelen

Un alt domeniu care poate fi considerat pionieratul calculatoarelor numerice il


constituie maşinile, automatele de calcul matematic. Primele soluţii au apărut acum 3000
de ani în Orient şi a au fost abacele. Deşi în mod obişnuit lumea consideră abacul drept o
invenţie chinezească, civilizaţia babiloniană a fost prima care a descoperit şi folosit acest
instrument pentru efectuarea calculelor matematice. Ulterior el se răspândeşte în China şi
Egipt.
3

Figura 1.3 Abac antic aparţinând civilizaţiei babiloniene

La începutul sec. XVII, în Anglia au loc mai multe descoperiri pe linia calculului
matematic automat. Mai întâi, excentricul matematicianul scoţian John Napier inventează
logaritmul prin care operaţiile de înmulţire se puteau efectua mult mai rapid, ca operaţii
de adunare. Putem spune că atunci s-a realizat primul algoritm numeric care era capabil
să accelereze viteza de calcul. Pentru implementarea calculului cu logaritmi, Napier
inventează o tablă marcată şi ulterior, ca o alternativă mai rapidă, piese marcate, care s-au
numit “oasele lui Napier”, deorece materialul folosit era fildeşul (Fig.1.4).

Figura 1.4 Echipamentul pentru calcul logaritmic inventat de John Naplier

Descoperirile lui John Naplier au stat la baza apariţiei riglei de calcul (Fig.1.5). Ea
a fost inventată în Anglia, în anul 1632. Dacă ne amintim că inginerii şi proiectanţii care
au lucrat la programele NASA din anii 60, (Mercury, Gemini, Apollo) au avut rigla drept
aparat de calcul matematic, putem avea o imagine a importanţei acestui echipament în
inginerie, vreme de mai bine de 300 de ani.
4

Figura 1.5 Rigla de calcul

O altă direcţie importantă a fost cea a maşinilor automate de calcul matematic.


Deşi au fost realizate mecanic, conform tehnologiei accesibile în epocă, se poate vedea
cum încă de la primele realizări au fost imaginate, structurate, principalele blocuri
funcţionale ale unui calculator numeric modern.
Una din primele încercări pe linia aceasta se consideră proiectele lui Leonardo da
Vinci (1452-1519) care a proiectat, imaginat, o maşină automată de calcul pe baza
angrenajelor mecanice (Fig.1.6). După cum se ştie, ca toate marile personalităţi ale
Renaşterii, Leonardo da Vinci a fost atras de ştiinţe şi de inginerie. De altfel, în scrisorile
sale, el se recomanda mai întâi drept inginer, în sensul că este capabil să construiască
fortificaţii, maşini de război, maşini agricole, mori de apă ori vânt, după aceea amintea de
abilităţile sale literare şi abia la urmă spunea că este pictor. Maşina de calcul din schiţa
prezentată în Fig.6 nu a fost niciodată realizată practic, ca multe alte invenţii ale sale, dar
principiul este corect şi a fost folosit la alte variante.

Figura 1.6 Schiţa maşinii de calcul gândită de Leonardo da Vinci

Prima maşină de calcul construită pe baza cuplajelor mecanice a fost realizată de


germanul Wilhelm Schickard în anul 1623. Ea s-a numit ceasul de calcul, “calculation
clock” şi este prezentată în Fig. 1.7.
5

Figura 1.7 Ceasul de calcul construit de profesorul german Wilhelm Schickard.

În anul 1642, la doar 19 ani, matematicianul şi filosoful francez Blaise Pascal, a


inventat şi construit pantru tatăl său care colecta taxele, o maşină automată de calcul pe
care a numit-o Pascaline. Pascal, matematician, fizician şi inventator de geniu, a construit
50 de maşini mecanice de calcul, pe care le-a îmbunătăţit succesiv, ajungând la versiunea
de 8 digiţi. Preţul prohibitiv şi problemele tehnologice au detrminat limitarea răspândirii
lor. Cele iniţiale ofereau calcule doar cu 6 digiţi (Fig. 1.8). Marea problemă a acestui tip
de maşini de calcul a fost precizia redusă a transmisiilor mecanice, datorată limitelor
tehnologice ale epocii. Aceste maşini mecanice de calcul puteau realiza doar operaţii de
adunare, fiind dedicate cerinţelor de contabilitate din epocă.

Figura 1.8 Două imagini ale maşinii mecanice de calcul inventată de Blaise Pascal, în
versiunea constructivă de 6 digiţi.

Saltul următor a fost de realizat la scurtă vreme, în 1671, de către matematicianul


german Gottfried Wilhelm Leibnitz (părintele calculului diferenţial şi integral) care
realizează o maşină de calcul capabilă să efectueze toate cele patru operaţii
aritmetice(Fig. 1.9). Deşi automatul se baza şi el pe cuplaje mecanice, pentru prima dată
apare conceptul de digital, realizat tehnologic prin caneluri mecanice. Un alt mare merit
al lui Leibnitz este faptul că el este primul care a intuit potenţialul sistemului numeric
binar în cadrul echipamentelor automate de calcul. Chiar dacă aparatul său folosea tot
sistemul zecimal, funcţionarea secvenţială fiind obţinută prin zece caneluri dispuse pe
periferia tamburilor, dificultăţile tehnologice de realizare şi geniul său matematic l-au
condus către sistemul numeric binar. De asemenea, automatul său reuşea să rezolve şi
6

operaţiile matematice complexe de tip înmulţire, împărţire şi extragere de radicali prin


algoritmi artimetici de tip secvenţial care foloseau operaţii simple de adunare. Aceasta a
reprezentat un imens câştig pentru calculul numeric şi constituie şi astăzi baza
funcţionării de tip matematic a calculatoarelor.

Figura 1.9 Maşina secvenţială de calcul inventată de Leibnitz.

În anul 1801, francezul Joseph Marie Jacquard inventează un echipament dar şi


un concept care a fost deosebit de important pentru ceea ce se numeşte astăzi digitizare.
El introduce războiul de ţesut programabil (Fig. 1.10). Elementul esenţial al invenţiei il
reprezintă cartela programabilă, un carton pe care sunt decupate fante corespunzatoare
informaţiilor folosite la procesul de ţesere. În ciuda opoziţiei exprimate de muncitorii din
ţesătorii, care îşi vedeau ameninţate locurile de muncă, până în 1812 peste 11000 de
războaie de ţesut programate funcţionau în Franţa. Invenţia sa are două aspecte
fundamentale privind tehnologiile contemporane: mai întâi digitizarea informaţiei
tehnice în echipamentele de automatizare dar şi efectul de mărire considerabilă a
productivităţii combinat cu reducerea numarului de lucrători.
7

Figura 1.10 Războiul de ţesut programat şi cartelă folosită în epoca sa.

Dacă vom compara cartela perforată folosită la războaile de ţesut cu cartela


perforată folosită la calculatoarele electronice până în anii 1970, vom constata asemănări
frapante şi vom înţelege de ce Joseph Marie Jacquard a produs un important pas înainte
în cadrul tehnologiilor de tip numeric.

Figura 1.11 Cartelă perforată folosită la calculatoarele electronice.


În anul 1822, matematicianul englez Charles Babbage expune un echipament de
calcul matematic care aduce două importante inovaţii. Mai întâi este vorba de energia
folosită pentru acţionarea sa. Fiind în plină epocă tehnologică a aburului, echipamentul
sau numit Difference Engine, folosea energia aburului. Din acest motiv avea şi dimeniuni
mult mai mari comparativ cu celelalte maşini de calcul mecanice. Varianta îmbunătăţită a
acestei maşini a fost cel mai scump proiect guvernamental al epocii dar nu a fost
niciodată finalizată. În ciuda acestui aspect, proiectul lui Babbege numit Analytic Engine,
folosind şi conceptul de cartelă perforată, impus de războaiele automate, ca şi suport al
informaţiei, a introdus două importante concepte în construcţia şi funcţionarea unei
maşini automate de calcul: STORE şi MILL. În STORE numerele sunt stocate iar în
MILL datele sunt procesate, ţesute cum se spunea în epocă, pe baza algoritmilor numerici
8

care existau., fiind transformate în noi rezultate. Procesul secvenţial de calcul se derula
conform “programului” înscris în cartelele perforate. În esenţă, maşina automată de
calcul propusă de Babbege conţine elementele principale ale oricărui calculator modern,
respectiv unitatea de memorie şi unitatea centrală de operare. De asemenea maşina
analitică mai folosea funcţia de instrucţiune condiţionată, element esenţial pentru
funcţionarea calculatoarelor numerice. Un aspect pitoresc al vieţii lui Babbage a fost
prietenia lui cu Ada Byron, fiica poetului Lord Byron. Fascinată de ideile lui Babbege,
chiar atunci când el a refuzat să le mai facă publice, dezamăgit de incapacitatea de
înţelegere a epocii, Ada a continuat să-i studieze şi comenteze cercetările, ba chiar să
lucreze programe pentru maşina care nu a mai fost contruită niciodată. Din acest motiv,
Ada Byron este considerată prima programatoare din lume.

Figura 1.12 O parte din echipamentele folosite la construcţia automatului de calcul


matematic Difference Engine
Următoarele elemente inovative încep să sosească, aşa cum era de aşteptat, din
Statele Unite. Dezvoltarea economică de la începutul sec 19 precum şi apetitul deosebit
pentru implementarea rapidă a descoperirilor şi invenţiilor în producţia industrială, au
fost elementele care au determinat ca USA să devină actorul principal al revoluţiei
tehnico-ştiinţifice. Creşterea explozivă a populaţiei a determinat ca operaţiile de
recensământ să se facă mai des. În acelaşi timp, calculele şi procesarea de date deveneau
tot mai anevoioase. Pentru a rezolva aceste probleme, Hermann Hollerith propune un
cititor de cartele asociat unui automat mecanic de calcul (Fig. 1.13). Rezultatele
calculelor erau afişate pe un cadran. În acest mod datele de intrare pentru un dispozitiv de
calcul au fost puse pe un suport material iar datele finale erau afişate. Dacă maşinile
programabile de ţesut foloseau cartelele ca elemente de memorie de tip read-only,
9

echipamentul propus de Hollerith a reprezentat o tehnologie de tip read/write.


Echipamentul a adus economii remarcabile la recensământul din anul 1890. Compania
fondată de Hollerith “Tabulation Machine Company” a devenit dupa mai multe
trasformări “International Bussines Machines” IBM, una din firmele cu cele mai multe
contribuţii la dezvoltarea tehnicii numerice de calcul.

Figura 1.13 Maşina de calcul a lui Hollerith.

Ca în multe alte domenii, al doilea război mondial a determinat o mare emulaţie a


cercetării şi pe partea de calculatoare. Armata avea nevoie de echipamente care să fie
capabile să efectueze o mare cantitate de calcule pentru a putea rezolva problemele de
traiectorii balistice, problemele de codare şi mai ales cele de decodare ori problemele de
optimizare a serviciilor de logistică. Astfel, în anul 1944, cooperarea dintre IMB şi
Universitatea Harvard a permis aparţţia lui MARK I, primul computer digital (Fig. 1.14).
El nu a fost în întregime electronic, deoarece dincolo de circuitele realizate cu tuburi
electronice se foloseau şi relee electromagnetice ori echipamente mecanice: transmisii,
ambreiaje. Acest calculator electromecanic cântărea 5000 Kg, încorpora 900 Km de fire
electrice, avea 2,5m înălţime şi aproape 16 m lungime. Era deservit de patru cititoare de
cartele iar una din primii peogamatori ai săi a fost o femeie, Grace Hooper, care a
introdus termenul de bug în limbajul specific acestei meserii. De asemenea ea este cea
care a inventat în anul 1953 primul limbaj de nivel înalt. S-a numit iniţial Flow-matic iar
ulterior a fost cunoscut sub denumirea de COBOL. Elementul esenţial care a stat la baza
elaborării limbajelor de nivel ridicat a fost faptul ca programarea era mai uşoară în astfel
de limbaje de tip formal, în raport cu programarea în binar. Este important de subliniat
importanţa prezenţei feminine din acest domeniu, mai ales că din diferite motive,
domeniul numeric, atât în partea de hard cât şi în cea de soft este, la noi, considerat un
apanaj al bărbaţilor. Calculatorul MARK I a funcţionat fără întrerupere timp de 15 ani.
10

Figura 1.14. Calculatorul MARK I


Tot în prima jumătate a sec XX, la universitatea americană Iowa, profesorul J.V.
Atanasoff a încercat să realizeze o maşină de calcul electronică, fara a folosi cuplaje
mecanice ori alte echipamente. În anul 1941, studentul său Clifford Berry a construit un
echipament capabil să rezolve un sistem de 29 de ecuaţii cu 29 de necunoscute. Nu era un
calculator propriuzis, deoarece nu putea rezolva decât acest tip de problemă matematică.
Dar invenţia sa a folosit pentru prima dată ca suport fizic de stocare a datelor sarcina de
pe un condensator, realizând astfel un sistem de memorare de tip dinamic (DRAM
dynamic RAM). Inventatorul nu a dat o importanţă deosebită invenţiei şi nu a păstrat nici
măcar prototipul. Aşa cum am amintit, o altă cerinţă a eforturilor militare au reprezent-o
maşinile de criptare şi de decriptare. În Anglia, echipa condusă de inginerul Tommy
Flowers, din care făcea parte şi matematicianul de excepţie Max Newman, au realizat
echipamentul electronic de decripare Colossus Mark I, în 1943 precum şi versiunea
îmbunătăţită Colossus Mark II în 1944 (Fig. 1.15).

Figura 1.15. Calculatorul electronic pentru decriptare Colossus Mark II


Astfel de cercetări militare s-au facut şi în Germania nazistă dar abia după război
au fost cunoscute. În anul 1965 a fost tipărită în limba engleză lucrarea germanului
Konrad Zuse. S-a aflat astfel că, deşi lumea considera pionieratul americano-englez în
domeniul calculatoarelor electronice, în Germania nazistă, Konrad Zuse construise un
11

astfel de echipament încă din anul 1938. Mai mult decât atât, el a obţinul această
performanţă fără condiţii deosebite, prima versiune fiind realizată între 1936-1938, în
locuinţa părinţilor săi. Echipamentul, numit Z1. A treia variantă, Z3, finalizată în anul
1941 a fost primul calculator digital, programabil, de uz general. Fără a avea alte
cunoştiinţe asupra maşinilor de calcul cu excepţia lucrărilor lui Leibnitz, Konrad Zuse a
decis să folosească reprezentarea binară a numerelor. Primele trei variante au fost distruse
în bombardamentele aliaţilor. Doar Z4 a fost salvat fiind încărcat într-un vagon şi ascuns
în munţi. În condiţiile celui de-al doilea război mondial este evident că cercetătorii
implicaţi în proiecte legate de calculatorul numeric nu aveau cum să ştie de ideile lor. Cu
toate acestea, Z4 avea aceleaşi blocuri funcţionale ca variantele americane, de fapt
blocurile funcţionale care caracterizează astazi colculatoarele numerice: unitate aritmetică
(pentru efectuarea calculelor), memorie(pentru stocarea datelor şi rezultatelor), sistem de
control (pentru supervizarea operaţiilor), periferice de intrare şi de ieşire. Ca şi în cazul
calculatorului MARK I, Konrad Zuse a dezvoltat de asemenea un limbaj de nivel înalt, pe
care l-a numit "Plankalkul", dar care nu a avut din cauza războiului o răspândire similara
limbajului COBOL. O imagine a primei versiuni Z1, aşa cum a fost construită în casa
părinţilor săi, este prezentată în Fig. 1.16.

Figura 1.16. Calculatorul Z1, realizat în condiţiile unei case private de către Konrad Zuse.

Nu trebuie să uităm că termenul de computer a desemnat în limba engleză


persoanele care efectual calcule matematice. În cel de-al doilea război mondial erau
cunoscute ecuţiile fizice ce permiteau calculul traiectoriilor dar pentru rezolvarea lor era
nevoie de o mare cantitate de calcule matematice. De obicei aceste calcule erau realizate
de un mare număr de femei angajate în acest scop. Din acest motiv calculatoarele au fost
dorite pentru a putea realiza o mare cantitate de calcule numerice într-un timp suficient de
scurt. Tehnica spaţială de după anii 50 dar şi armele balistice din timpul războiul rece au
fost principalii sponzori ai cercetărilor din domeniul calculatoarelor numerice.
12

Deşi la o distanţă de decenii, efortul lui Konrad Zuse şi familia de calculatoare


Z1-Z4 amintesc de revoluţia calculatoarelor personale, pornită în condiţii la fel de
modeste, prin faimosul APPLE. Privind imaginea din Fig. 1.17 ne este greu să credem că
toată schimbarea privind democratizarea sistemelor de calcul şi informatizarea societăţii a
pornit de la aşa ceva.

Figura 1.17. Primul home-computer APPLE

Performanţele primului computer, MARK I, par astăzi incredibil de modeste: o


adunare ori o scădere pentru numer de 23 digiţi (dimensiunea maximă permisă) se
executa în trei zecimi de secundă, înmulţirea a două numere cerea patru secunde iar
operaţia de împărţire necesita zece secunde. Capacitatea sa de memorare permitea
stocarea a 72 de numere de dimensiunea amintită. Cu toate acestea, profesorul Howard
Aiken, principalul proiectant al lui MARK I estima în anul 1947 ca Statele Unite vor avea
nevoie de maximum 6 computere pentru a satisface nevoia existentă de calcul numeric.
Deşi afirmaţia sa stârneşte zâmbete sau, în cel mai bun caz, o reflexia asupra puterii de
predicţie a celor mai creative minţi, consider că pentru evaluarea corectă a judecăţii sale
trebuie considerat şi costurile exorbitante ale acestor echipamente.
Vectorul care a modificat esenţial datele problemei, producând mutaţii
fundamentale asupra parametrilor tehnici dar şi asupra costurilor, a fost microelectronica,
tehnica circuitelor integrate. Dar înainte de revoluţia microelectronicii, un alt eveniment a
marcat evoluţia în domeniul calculatoarelor: apariţia tranzistorului. Anul 1947 este
considerat momentul naşterii tranzistorului când trei cercetători de la Laboratoarele Bell
au reuşit primul experiment practic. Asta deşi în anul 1925 un fizician canadian a
înregistrat un brevet care reda principiul de funcţionare al tranzistorului. Foarte rapid
tranzistoarele au înlocuit tuburile electronice folosite la construcţia primelor computere,
producând reduceri semnificative ale gabaritului şi consumului de energie electrică. De
exemplu un computer cu tuburi de tip comercial realizat în tehnologia cu tuburi emitea o
putere termica de 175 KW, fapt ce impunea plasarea computerului în săli speciale,
climatizate. Cu toate acestea, computerele cu tranzistori construite la începutul anilor 60
avea încă dimensiuni şi costuri importante. O parte însemnată a costurilor era dată de
13

manopera necesară pentru realizarea legăturilor electrice, operaţie extrem de laborioasă,


aşa cum se poate vedea din Fig. 1.18.

Figura 1.18 Cablajul necesar unui calculator realizat cu tranzistoare.

Circuitele integrate, la fel ca şi tranzistorul, au o paternitate discutabilă. Lumea


acceptă ca primi creatori pe doi ingineri americani, Jack Kilby (pentru Texax Instruments
în anul 1959) şi Robert Noyce (pentru compania Fairchild Semiconductors în anul 1961)
care în mod independent au realizat circuite pe germaniu respectiv pe siliciu. Deşi în anul
1949 inginerul german Werner Jacobi a realizat pentru Siemens o structură de 5
tranzistoare pe un strat comun. Din păcate, brevetul său nu a fost urmat de aplicaţii
practice în acea perioadă şi a trecut neobservat. În schimb circuitele integrate realizate în
Statele Unite au gasit rapid aplicaţii, fapt ce a condus la o rapidă reducere a preţilui de
producţie. Astfel, dacă în anul 1960, preţul unui integrat era de 1000$, în numai trei ani,
în 1963, preţul ajunsese la 25$/circuit. Prima generaţie de circuite integrate s-a numit SSI
(Small Scale Integration) şi conţineau zeci de tranzistoare pe integrat. Programele spaţiale
şi tehnicile militare au fost principalii actori care au determinat cercetări în acest
domeniu, au fost principalii clienţi şi au produs scaderea preţurilor prin largirea sferei
aplicaţiilor practice. La finalul anilor 60 s-a trecut la următoarea generaţie, care a mărit
numărul de tranzistoare pe chip. Circuitele din generaţia MSI (Medium Scale Integration)
au conţinut sute de tranzistoare la nivelul fiecărui integrat. Următorul pas tehnologic s-a
realizat la mijlocul anilor 70, când s-a lansat generaţia LSI (Large Scale Integration),
reusindu-se integrarea a mii de tranzistoare pe integrat. Ele au fost folosite pentru celule
de memorare şi pentru a doua generaţie de microprocesoare. Efortul de marire a densităţii
de integrare a continuat şi la mijlocul anilor 80 s-au atins densităţi de sute de mii de
tranzistoare, apărând generaţia VLSI (Very Large Scale Integration). În anul 1986
circuitul RAM-ul de un megabit a atins pragul de un milion de tranzistori. Circuitul
microprocesor din anul 1989 a depăşit pragul milionului de tranzistori iar cel de la nivelul
anului 2005 ajunsese la un miliard de tranzistori încorporaţi. Pentru a reflecta aceste
realităţi s-a introdus termenul de ULSI (Ultra Large Scale Integration). În paralel cu
14

creşterea densităţii de integrare a crescut şi frecvenţa de lucru a acestor circuite integrate.


Astfel la începutul anilor 70 frecvenţa de clock era inre 1 şi 3 MHz, la finalul anilor 70
ajunsese la 10 MHz, în deceniul următor a crescut la 16 MHz iar la începutul anilor 90 la
60 MHz. Frecvenţele actuale de lucru, pentru variante comericale sunt de 2GHz.
Aceste performanţe s-au datorat tehnologiilor de print utilizate care au permis, la
fiecare nouă generaţie, să se poată trasa semne tot mai fine pe substratul de material
semiconductor. Fineţea semnelor posibile, exprimată in microni, a evoluat în perioada
1970-2005 conform graficului din Fig 1.19.

Figura 1.19 Evoluţia fineţei de reprezentare în tehnicile de circuite integrate.

Tehnologia de realizare a circuitelor integrate începe cu obţinerea unui lingou


circular de material semicondutor, cel mai adesea de siliciu, care are o structură cristalină
perfectă. Din acest lingou sunt tăiate discuri uzual de trei diametre standard 100, 200 şi
300mm. Este nevoie ca suportul de siliciu să aibe o structură perfectă pentru a permite
apoi formarea altor structuri cristaline care se depun prin secvenţele procesului
tehnologic. Aceasta primă etapă tehnologică este prezentată în Fig. 1.20.

Figura 1.20 Etapa de formare a waferelor din lingoul cilindric de siliciu.


Discul de siliciu tăiat se numeşte wafer. Pe acest disc sunt trasate reţele de formă
regulată, toate identice. Fiecare astfel de zona va forma în urma unui complex proces
structura unui integrat. Va fi decupată şi plasată în capsula specifică, fiind realizate şi
legăturile electrice la pinii integratului.
15

Procesul tehnologic ulterior cuprinde mai multi paşi, prezentaţi în Fig. 1.21.
Tehnologia fotografică este capabilă să ofere o foarte bună rezoluţie. Din acest motiv este
utilizată la tehnologia circuitelor integrate. Mai întâi placa de silicon este acoperită cu un
start de substanţă fotosensibilă, stratul fotorezistent. Ca şi în tehnicile fotografice,
negativul, aici numit mască, nu trebuie să aibe aceeaşi dimensiune cu imaginea de pe
placa de siliciu. Stratul fotosensibil este expus la lumină prin masca 1. În funcţie de
natura stratului fotosensibil, suprafaţa expusă la lumină va putea fi eliminată printr-un
proces de spălare sau dimpotrivă, va fi cea care va rămâne după spălare. Placa de siliciu
este supusă la băi chimice, vapori de metal de înaltă temperatură ori este bombardată cu
fascicule de ioni. În urma acestor tratamentele doar zonele care au fost eliminate prin
procesul de spălare vor fi afectate. Acest set de operaţii se repetă de mai multe ori. Adică
se plasează un nou strat fotosensibil, se foloseşte o nouă mască în procesul fotolitografic,
se spală chimic pentru a elimina zonele expuse ori ne-expuse, în funcţie de natura
stratului fotosensibil şi se completează zonele rămase libere prin procedeele enumerate.

Figura 1.21 Etapele procesului de realizare a unui circuit integrat.


Procesul tehnologic descris se desfăşoară în spaţii speciale, numite clean-rooms,
unde sunt realizate condiţii inalte de puritate a aerului, pentru a nu modifica finele
procesele de dopare descrise. În realitate procesul tehnologic conţine peste 10 cicluri
descrise în Fig. 1.21. Din acest motiv, procesul durează de la una la patru săptămâni. La
16

începutul tehnologiei circuitelor integrate s-a folosit pentru procesul foto lumina din
spectrul vizibil, adică din domeniul de lungimi de undă 700nm (roşu) la 400nm (violet).
Este evident că utilizarea radiaţiei electromagnetive cu lungimi de undă mai mici de
400nm, din afara spectrului vizibil, este mai adecvata pentru operaţia de litografie,
respectiv se pot expune arii mai mici şi astfep creşte densitatea de integrare. Din acest
motiv, la tehnologia actuală, radiaţia folosită pentru a copia măştile este din zona
ultraviolet (<400nm) şi se experimentează tehnologii pentru lungimi de undă de 200nm.
Când placa de siliciu, wafer-ul, este procesată complet, ea este testată iar după
aceea sunt separate ariile individuale. Cele care au fost depistate defecte sunt eliminate
iar cele care funcţionează corect sunt duse la operaţiunea de incapsulare. Strucurile de tip
packing sunt structuri standardizate şi în acest mod este astfel optimizată utilizarea
circuitelor integrate. În mod obişnuit circuitele din familiile Ssi şi MSI sunt de tip DIP
(dual in-line package) cu variante de 14 sau 16 pini. Varianta clasică de 16 pini este
prezentată în Fig. 1.22. Circuitele integrate de memorie şi anumite circuite din familia
VLSI sunt oferite în capsule cu 16, 18, 24 şi 28 de pini.

Figura 1.22 Varianta DIP de capsulare a circuitelor integrate.

Problemele privind optimizarea dimensiunii capsulelor dar şi a elementelor active


din acestea au condus la concluzia că modul de capsulare devenise o limită a
performaţelor circuitelor integrate. Pentru a rezolva problema densităţii pinilor s-a trecut
la variantaPGA- pin grid array (Fig. 1.23) sau la cele de tip SOIC (small outline
integrated circuit) şi PLCC (plastic leaded chip carrier) prezenate în Fig. 1.24.

Figura 1.23 Soluţia de capsulă tip PGA-pin grid array.


17

Figura 1.24 Soluţii de package tip SOIC şi PLCC.

Toate elementele tehnologice prezentate au determinat creşterea densităţii de


integrare, de obicei măsurată în tranzistoare/integrat. Graficul din Fig. 1.25 redă elocvent
creşterea spectaculoasă a acestui parametru care oferă o informaţie directă şi asupra
complexităţii funcţiilor pe care le pot realiza astăzi circuitele numerice. Pe axa verticală
sunt reprezentate tranzistoarele intergrate pe un circuit iar pe axa orizontală familiile de
circuite integrate.

Fig. 1.25 Evoluţia densităţii de integrare în funcţie de familiile de circuite integrate.


18

1.2. SISTEME DE NUMERAŢIE. BAZE DE NUMERAŢIE. CODURI.

Un sistem de numeraţie reprezintă un set de reguli utilizate pentru scrierea


numerelor, folosind simboluri specifice, denumite cifre. În istorie au fost folosite două
sisteme principale de numeraţie: sistemul de numeraţie aditiv(roman) şi sistemul de
numeraţie poziţional (arab).

Sistemul de numeraţie aditiv, foloseşte pentru scrierea numerelor următoarele cifre:


I, V, X, L, C, D, M. Dacă se scriu consecutiv mai multe cifre de aceeaţi valoare, numărul
format este dat de suma acestor cifre:
III = 1+1+1+1=3, XX=10+10=20, CCC=100+100+100=300
În cazul cifrele de valori diferite există două reguli principale. Pentru o pereche de cifre
diferite unde cifra de valoare mai mare se află în faţa cifrei de valoare mai mică, valoarea
este dată de suma cifrelor:
CX=100+10=110, XIII=10+1+1+1=13
Pentru o pereche de cifre diferite unde cifra de valoare mai mare se află după cifra de
valoare mai mică, valoarea este dată de diferenţa cifrelor:
XC=100-10=90 IIX=10-1-1=8
Sistemul de numeraţie aditiv este un sistem dificil atât în ceea ce priveşte scrirea
numerelor dar mai ales la efectuarea operaţiilor aritmetice.

Sistemul de numeraţie poziţional, deşi este cunoscut drept sistemul de


numeraţie arab, a fost de fapt realizat de indieni şi chinezi. Arabii au fost cei care l-au
preluat şi l-au adus în Europa. Spre deosebire de sistemul de numeraţie roman, aici
aportul unei cifre în valoarea numarului din care face parte este dat atât de valoarea ei cât
şi de poziţia ocupată de cifră în scrierea numarului. Numerele folosite sunt
0,1,2,3,4,5,6,7,8,9. Un rol important l-a avut introducerea cifrei 0. Deoarece în sistemul
de numeraţie arab s-au folosit 10 cifre se spune că el foloseşte baza de numeraţie 10.
Sistemele de numeraţie poziţionale pot avea diverse alte baze. Baza de numeraţie 10 a
aparut într-un mod natural, în conformitate cu degetele de la ambele mâini, care au fost
cea mai la îndemână formă de socotitoare.
Numerele, indiferent de baza de numeraţie folosită, reprezintă simboluri din care noi
putem extrage informaţii daca ştim regulile care au fost folosite. Prima regulă a acestor
coduri este adoptarea unui grafism, pentru a reprezenta cantităţi diferite. În baza
zecimală, grafismul adoptat a fost prezentat. A doua regula se referă la ponderea alocată
fiecărei cifre. Ponderea este legată de rangul fiecărei cifre în funcţie de poziţia ei în cadul
numărului: cifrele unităţilor ( ), ale zecilor ( ), ale sutelor ( ), etc. Până acum ne-
am referit la numere întregi. Numerele zecimale au partea întreagă despărţită de cea
zecimală prin virgulă, iar în notaţia saxonă prin punct. Cifrele aflate după virgula
zecimală au şi ele ponderi, dar exprimate prin pueri negative ale lui zece, respectiv zecimi
( ), sutimi ( ), miimi ( 10 3 ). Ca şi la celelalte baze de numeraţie, în sistemul
zecimal putem vorbi de cea mai semnificativă cifră (cea care are ponderea, rangul cel mai
mare) şi de cea mai puţin semnificativă cifră (cea care are ponderea, rangul cel mai mic).

1.2.1 Reprezentarea numerelor într-o bază b


19

Pentru a reprezenta un numar natural într-o bază b, se foloseşte următoarea teoremă:


pentru orice numar natural nenul k, exită un unic număr natural n, numit rang şi n+1
numerre naturale c1,c2,c3,  cn numite cifre în baza b, care satisfac relaţiile:

(1.1)
c) cn  0

Din punct de vedere practic trebuie să observăm ca dacă avem o bază oarecare b,
ea va utiliza b simboluri. De exemplu, baza cinci foloseşte cinci cifre 0,1,2,3,4, baza
şapte foloseşte şapte cifre 0,1,2,3,4,5,6. Este interzis să folosim într-o bază dată cifre
egale sau mai mari decât valoarea bazei. Astfel, în baza trei pot exista numerele 1102,
220011, 1201001, în schimb nu pot exista numere de tipul 32154, 221003, 63534...
Definiţia (1) se poate extinde de la numerele naturale la numerele reale. În acest
caz, un număr real pozitiv k se scrie în baza b sub forma cn , cn1, cn2,  c1c0 , c1c2  dacă:

(1.2)
c) cn  0

Comparând cele două definţii, pentru numere naturale şi pentru numere reale, observăm
că în cazul numerelor reale apare o condiţie suplimentară. Ea este necesară pentru a
asigura unicitatea reprezentării numerelor. Se impune să nu existe un rang la
partea fracţionară a numărului după care, toate cifrelele reprezentării să fie egale
cu b-1. În cazul în care nu s-ar impune această condiţie, ar avea loc egalităţi de
forma:

(1.3)
Pentru a extinde definiţia anterioară la toate numerele reale, se dezvoltă
următoarele condiţii
a) Dacă k > 0, atunci numărul se reprezintă conform setului de relaţii (1.2)
b) Dacă k = 0, atunci numărul se reprezintă 0.
c) Dacă k < 0, atunci se fixează semnul -, după care urmează reprezentarea
numărului conform setului de relaţii (1.2).

Din punct de vedere matematic se pot imagina oricâte baze de numeraţie.


Practic, în cadrul structurilor numerice de astăzi, doar căteva prezintă înteres şi
sunt utilizate. Astfel, vom analiza bazele numerice 2, 8, 16 alături de baza 10, cea
în care suntem obişnuiţi să lucrăm în matematică.
20

Înainte de a analiza proprietăţile specifice bazelor enumerate, să observăm


câteva elemente generale şi să descriem algoritmii generali de trecere dintr-o bază
în alta. Trecerile dintr-o bază în alta sunt impuse dintr-un motiv extrem de simplu:
totalitatea calculelor matematice noi le facem în baza zecimală. Structurile
numerice lucrează în principal în binar dar mai sunt folosite şi sistemele numerice
octal ori haxazecimal. În plus, pentru diverşi algoritmi de aritmetică numerică se
folosesc sisteme derivate din sistemul binar. Să urmărim pentru început datele din
tabelul 1.1, unde s-au trecut numere în şase baze de numeraţie (10,2,3,4,8,16)
Tabel 1.1.
Baza Baza Baza Baza Baza Baza
zecimală binară ternară 4 octală hexazecimală
b=10 b=2 b=3 b=4 b=8 b=16
0 0 0 0 0 0
1 1 1 1 1 1
2 10 2 2 2 2
3 11 10 3 3 3
4 100 11 10 4 4
5 101 12 11 5 5
6 110 20 12 6 6
7 111 21 13 7 7
8 1000 22 20 10 8
9 1001 100 21 11 9
10 1010 101 22 12 A
11 1011 102 23 13 B
12 1100 110 30 14 C
13 1101 111 31 15 D
14 1110 112 32 16 E
15 1111 120 33 17 F
16 10000 121 100 20 10
17 10001 122 101 21 11
18 10010 200 102 22 12
19 10011 201 103 23 13
20 10100 202 110 24 14
21 10101 210 111 25 15
22 10110 211 112 27 16
23 10111 212 113 30 17
24 11000 220 120 31 18
25 11001 221 121 32 19
26 11010 222 122 33 1A
27 11011 1000 123 34 1B
28 11100 1001 130 35 1C
29 11101 1002 131 36 1D
30 11110 1010 132 37 1E
31 11111 1011 133 40 1F
32 100000 1012 200 41 20
33 1000001 1020 201 42 21

Prima observaţie ce apare este că bazele de valoare mai mică folosesc un numar
mai mic de cifre, simboluri dar pentru scrierea numerelor este nevoie de mai multi digiţi.
Numărul zecimal 30 se scrie în binar folosind cinci simboluri, în baza 3 folosind patru
21

simboluri, în baza 4 cu trei simboluri iar în bazele 10, 8 sau 16 se folosesc doar două
sinboluri, cifre.
Se vedem acum algoritmii de trecere din diverse baze în baza 10 şi invers, din
baza 10 în alte baze. Pentru trecerea în baza 10 pornind de la un număr natural scris într-o
baza oarecare b, se foloseşte relaţia:
(1.4)

Conversia inversă a numerelor naturale, dintr-o bază oarecare în baza 10 se face prin
algoritmul împărţirilor succesive (algoritmul resturilor): se împarte numarul scris în baza
10 la noua bază. Se păstrează câtul şi se notează restul. Cătul se împarte din nou la noua
bază, păstrând câtul şi restul. Seria de împărţiri continuă până când ultimul cât este mai
mic decât baza la care se împartea. Numărul transpun în noua bază se obţine din sirul
resturilor citit de la ultimul către primul.
Să alegem pentru exemplificare numărul 985435 din baza 10, care trebuie trecut
în baza 6. Şirul împărţirul succesive, cu resturile corespunzătoare se dă în tabelul 1.2.

Tabel 1.2.
Deîmpăr- Impărţi-tor (q) Cât Rest Simbol
n ţit (baza 10) (cn) cifră (Cn)
(baza 10) (baza 10) (baza 10) (baza 6)
0 985437 6 164239 3 3
1 164239 6 27373 1 1
2 27373 6 4562 1 1
3 4562 6 760 2 2
4 760 6 126 4 4
5 126 6 21 0 0
6 21 6 3 3 3
7 3 6 0 3 3

Conform celor enunţate, conversia obţinută este: (985437)10 = (33042113)6.


Conversiile din şi către baza 10 sunt folosite şi în cazul în care se doresc conversii între
baze diferite, de exemplu, din baza 6 în baza 16. În acest caz şirul conversiilor este: (...) 6
→ (...)10 → (...)16. Există şi posibilitatea de a aăplica direct algoritmul împorţirilor
succesive numărului din bază 16 pentru a-l obţine scris în baza 16. Seria de calcule este
prezentată în tabelul 1.3. Se observă următoarele elemente specifice:
-toate calculele se fac în baza 6
-este nevoie să fie cunoscută aritmetica specifică din baza 6
-baza 16, care constituie împărţitorul, este transcris în baza 6 şi devine 24
(16)10 → (24)6
-resturile obţinute în baza 6 sunt convertite în baza 16 şi abia acum sunt citite în
sens invers ordinii obţinerii lor
-în cazul în care aritmetica specifică bazei considerate nu este cunoscută sau
calculele numerice în baza respectivă sunt mai dificile, se preferă algoritmul
22

anterior, care foloseşte ca etapă intermediară conversia în baza 10. În acest caz,
aritmetica este redusă la cea clasică, specifică bazei zecimale.

Tabel 1.3.
Deîmpărţit Impărţitor Cât Rest Simbol
(baza 6) (baza 6) (baza 6) (baza 6) (baza 16)
33042113 24 1153045 21 D
1153045 24 25453 5 5
25453 24 1040 13 9
1040 24 23 0 0
23 24 0 23 F

Conform algoritmului redat în Tab.1.3. se obţine conversia: (33042113)6 → (F095D)16.

Pentru numerele reale exista mai multe variante de conversie: conversia parţilor întregi,
conform algoritmilor prezentaţi şi conversia separată a părţilor zecimale pe baza
algoritmului înmulţirilor succesive. De asemenea există şi algoritmul substituţiei
(algoritmul lui Homer) ce permite conversia întregului număr real, cu parte întreagă şi
parte zecimală. Deoarece algoritmul substituţiei operează cu întregul număr real, vom
prefera aceasta metodă de conversie.
Algoritmul substituţiei realizează conversia unui număr real dintr-o bază veche p
într-o bază nouă q. Toate calculele se fac în noua baza q. Se presupune că pentru
reprezentarea numărului real se reţine un număr finit de cifre pe partea fracţionară. Fie
numărul real scris în baza p: x = (cncn-1...c1c0,c-1c-2c-3...c-k)p. Paşii algoritmului de
conversie de tip substituţie sunt:
-se reprezintă în noua bază q toate cifrele numărului x:
cn, cn-1, ..., c1, c0, c-1, c-2, c-3, ..., c-k → Cn, Cn-1,..., C1, C0, C-1, C-2, C-3, ..., C-k
(pentru acest pas este utilă reprezentarea tabelară a cifrelor celor două baze, care
permite conversia rapidă).
-se reprezintă şi numărul p în baza q
-pe baza acestor conversii, se calculează în noua baza q expresia:
CnPn+Cn-1Pn-1+...+C1P+C0+C-1P-1+C-2P-2+C-3P-3+...+C-kP-k
-rezultatul calculat în noua bază q reprezintă valoarea cerută a numărului

De exemplu, să convertim în baza 10 numărul: (5B7AD) 16. Avem de calculat, în


baza 10, valoarea expresiei:

5.164 + 11.163 + 7.162 + 10.16 + 13 =


= (((5.16 +11)16 + 7) 16 + 10) 16 + 13 =
= 374701
în care B, A şi D au fost înlocuite cu reprezentările lor în baza 10, adică cu 11, 10
şi 13.
23

Atunci când numărul are şi parte fracţionară, este foarte probabil ca rezultatul
conversiei să aibă o infinitate de cifre la partea fracţionară. De exemplu, calculând
în baza 7, avem:

1.2.2. Reprezentarea numerelor în baza binară (b=2)

În cadrul echipamentelor numerice baza utilizată este baza 2, baza binară. Această
realitate vine din considerente tehnologice. La actualul stadiu de evoluţie tehnologică,
elementele care pot fi realizate la costuri accetabile economic sunt cele care au două stări
distincte şi care se preteză astfel pentru implementarea funcţiilor aritmetice şi logice de
tip binar. Baza binară foloseşte simbolurile 0 şi 1. In tabelul 1.1 a fost prezentată scrierea
în binar a numerelor din baza 10, de la 0 la 33. Se observă asfel că dacă principalul
avantaj il constituie numarul redus de simboluri folosite, 2, principalul dezavantaj este dat
de lungimea mare, numărul mare de cifre necesar scrierii numerelor.
Fiind un sistem de numeraţie de tip poziţional, el foloseşte, conform definiţiei generale a
bazelor de numeraţie, ponderea dată de puterile lui doi. Asfel, numărul 101101 în baza 2
are valoarea în baza 10: .
Trecerea din binar în zecimal a numerelor naturale se face pe baza algoritmului descris
anterior, al împartirilor succesive (al resturilor):

rezultă transpunerea binară 1101

O noţiune importantă este cea legată de cel mai puţin semnificativ bit (MPSB), respectiv
de cel mai semnificativ bit MSB (sau Most Significant Bit-MSB ). Bitul MPSB (sau Last
Significan Bit- LSB) este cel corespunzător ponderii (primul bit din partea dreaptă) iar
MSB este bitul cu cea mai mare pondere, respectiv ultimul bit din partea stângă a
numărului binar.
Dacă trebuie convertit un număr real din zecimal în binar, se aplică următoarea
regulă:
-partea întreagă a numărului real este trecută în binar cu algoritmul resturilor
-pentru partea zecimală conversia se realizează printr-un alt algoritm, bazat pe
înmulţiri succesive.
Algoritmul specific conversiei părţii zecimale este prezentată prin următoarele exemple:
a) Să se realizeze conversia:
0,39654×2 = 0,79308 = 0 (MSB al numărului din binar) + 0,79308
0,79308×2 = 1,58616 = 1 (următorul bit al numărului) + 0,58616

0,58616×2 = 1,17232 = 1 + 0,17232


24

0,17232×2 = 0,34464 = 0 + 0,34464


0,34464×2 = 0,68928 = 0 + 0,68928 ..............
Rezultă conversia: . Acest algoritm nu poate rezolva o
conversie a unui număr zecimal obţinând valoarea exactă. De obicei se alege un număr de
cifre după virgulă care sunt considerate suficiente pentru a avea precizia dorită. Doar în
situaşii particulare are loc o conversie exactă, aşa cum este descris în exemplul următor:
b) Să se realizeze conversia:
0,84375×2 = 1,6875 = 1 (MSB al numărului din binar) + 0,6875
0,6875×2 = 1,375 = 1 + 0,375
0,375×2 = 0,75 = 0 + 0,75
0,75×2 = 1,5 = 1 + 0,5
0,5×2 = 1 = 1 (LSB) + 0
Conversia obţinută în acest caz este una exactă
Algoritmul descris pentru conversia părţii zecimale a numerelor reale este valabilă şi
pentru baze finale diferite de 2, cu observaţia că produsul se va efectua între numărul de
după virgulă şi valoarea bazei noi.

1.2.2. Reprezentarea numerelor în baza octală (b=8)

Aşa cum s-a aratat anterior, baza binară are dezavantajul folosirii unui mare
număr de cifre pentru reprezentările numerice. Din acest motiv, sistemele numerice mai
folosesc două baze, cea octală şi cea hexazecimală. În plus, baza octală are două
importante proprietăţi care o fac atractivă: utilizarea completă a tripletei de biţi şi
facilitarea tehnicilor de minimizare a funcţiilor binare prin simbolul de marcare D.
Simbolurile, cifrele folosite de baza octală sunt: 0,1,2,3,4,5,6,7. În tabelul 1.4. sunt
prezentate numerele din octal împreună cu transcrierea lor binară. Se observă rapid prima
proprietate a bazei octale, respectiv folosirea completă a tripletei de biţi. Pentru cele 8
cifre ale sistemului octal se utilizează toate combinaţiile posibile ale tripletei de biţi,
pornind de la 000 pentru cifra 0, la tripleta 111 corespunzătoare cifrei 7. Altfel spus
fiecărei triplete de biţi îi corepunde una şi numai una din cifrele bazei octale şi reciproc,
fiecărei cifre din baza octala îi corespunde una şi numai una din combinaţiile tripletelor
de biţi. Această proprietate permite elaborarea algoritmulor rapizi de conversie din
binar în octal şi reciproc.

Tabel 1.4.
Zecimal Binar Octal
0 000 0
1 001 1
2 010 2
3 011 3
4 100 4
5 101 5
6 110 6
7 111 7
Algoritmul rapid de conversie din binar în octal are următorii paşi:
25

-şirul de biţi corespunzători scrierii binare este împărţit de la dreapta lastânga în


grupe de 3 biţi
-dacă ultima grupa nu este completă, nu are 3 biţi, se adaugă la stânga atâţia biţi
de 0 câţi sunt necesari pentru a avea o tripletă completă
-fiecare tripletă astfel formată este convertită direct în octal conform
corespondenţei din Tabelul 1.4.
Pentru exemplificarea algoritmului să alegem numărul binar 1110101000111011101.
Gruparea sa în triplete de biţi este: 1 110 101 000 111 011 101. Ultimul grup din stânga
se complectează cu 0 pentru a forma o tripletă: 001 110 101 000 111 011 101. Fiecare
tripletă se converteşte în corespondentul binar, conform datelor din Tabelul 1.4. Rezultă
numărul octal 1650735.

În mod asemănător se construişte algoritmul rapid de conversie din octal în binar:


-fiecarei cifre a numărului octal i se ataşează tripleta corespunzătoare, păstrind
ordinea cifrelor din numărul octal
-şirul de biţi rezultat este valoarea binară a numărului octal iniţial
Considerând numărul octal 5407101023065 rezulta tripletele 101 100 000 111 001 011
000 110 101, respectiv numărul binar echivalent 10110000011100101100011010.
Cele două algoritme au fost aplicate în cazul numerelor întregi. Conversia binar-octal
foloseşte acelaşi tip de algoritm şi pentru cazul numerelor reale.
Considerăm conversia: . Folosind tripletele de biţi se obţine rapid:

Pentru conversia din binar în octal trebuie extinsă regula completării cu 0 la


dreapta şi la stânga, pentru a obţine triplete complete:

În afara algoritmilor de conversie rapidă binar↔octal mai există algoritmi specifici


sistemului octal prin care se obţine conversia rapidă octal ↔ zecimal.
Paşii algoritmului rapid de conversie octal-zecimal sunt:
-se scrie numărul octal
-la pasul k se dubleză primele (k-1)cifre semnificative, folosind matematica
zecimală, deşi cifrele, numerle sunt în bază octală
-produsul obţinut se scade din (k+1) cifre semnificative, folosind matematica
zecimală, ca la pasul anterior
-dacă numărul octal iniţial are n cifre, algoritmul va avea (n-1)paşi
Pentru exemplificare se consideră conversia .
Paşii algoritmului rapid sunt următorii:

5 3 2 5 1 2 1
-1 0
-------------------
4 3 2 5 1 2 1
- 8 6
-------------------
3 4 6 5 1 2 1
- 6 9 2
26

_________________
2 7 7 3 1 2 1
- 5 5 4 6
__________________
2 2 1 8 5 2 1
- 4 4 3 7 0
___________________
1 7 7 4 8 2 1
- 3 5 4 9 6 4
___________________
(1 4 1 9 8 5 7)10

Asemănător cu schema prezentată se construieşte algoritmul rapid de conversie


zecimal-octal, ai cărui paşi sunt:
-se dublează primele k cifre folosind aritmetica octală
-se adună cifrele obţinute tot folosind aritmetica octală
-dacă numărul zecimal iniţial are n cifre, algoritmul va avea (n-1)paşi

Pentru exemplificare numărul (5325121)8 este convertit în baza 10 astfel:


1 4 1 9 8 5 7
+ 2
___________________
1 6 1 9 8 5 7
+ 3 4
___________________
2 1 5 9 8 5 7
+ 4 3 2
___________________
2 6 1 3 8 5 7
+ 5 4 2 6
___________________
3 3 5 6 6 5 7
+ 6 7 3 5 4
___________________
4 2 5 2 4 1 7
+1 0 5 2 5 0 2
___________________
(5 3 2 5 1 2 1)8

Un alt algoritm de conversie rapidă important este cel din baza octală în baza
hexazecimală, care va fi prezentat în paragraful dedicat sistemului numeric hexazecimal.

În afara algoritmilor rapizi de conversie se pot folosi şi metodele generale de


conversie. De exemplu, dacă se doreşte conversia octal-zecimal, este valabilă soluţia
standard, care foloseşte puterile ponderate ale bazei:

1.2.3. Reprezentarea numerelor în baza hexazecimală (b=16)


27

Alături de baza binară, sistemul hexazecimal (prescurtat hexa) este cea mai
folosită în cadrul tehnicilor numerice. Ea reuşeşte să realizeze un optim privind nivelul de
compresie al scrierii corelat cu numărul de simboluri utilizate. Cele 16 cifre ale bazei
hexazecimale sunt: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. În Tabelul 1.5. sunt prezentate
corespondentele zecimale, binare şi octale ale cifrelor bazei hexazecimale. Informaţia de
aici permite citeva concluzii:
-baza hexazecimală foloseşte ca cifre atât simboluri numerice cât şi primele 6
litere ale alfabetului
-este un sistem de numeraţie mai compact decât sistemul zecimal, astfel
simbolurilor A,B,C,D,E,F le corespund în zecimal şi octal câte 2 cifre iar în binar 4 cifre
-compactizarea scrierii numerelor se realizează prin 16 simboluri, cele 10 ale
sistemului binar plus cele 6 litere. În acest fel nu este greu să poată fi reţinute
corespondenţele binare şi zecimale ale tuturor simbolurilor din hexazecimal.
-proprietatea cea mai importantă a bazei hexazecimale este faptul că ea utilizează
complet tetrada (cvartetul sau nibble, în notaţia engleză) de biţi (gruparea de 4 biţi).
Este o proprietate similară cu cea a bazei octale referitoare la triade. Aceasta înseamnă că
există o corespondenţă biunivocă între cifrele bazei hexazecimale şi mulţimea
combinaţiilor posibile ale tetradei de biţi. Pe baza acestei observaţii se construiesc
algoritmii rapizi de conversie hexazecimal↔binar şi hexazecimal↔octal.

Tabelul 1.5.
Zecimal Binar Octal Hexazecimal
0 0000 0 0
1 0001 1 1
2 0010 2 2
3 0011 3 3
4 0100 4 4
5 0101 5 5
6 0110 6 6
7 0111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

Conversia numerelor reale zecimal↔hexazecimal se face prin algoritmii clasici:


-în cazul zecimal-hexazecimal prin cei doi algoritmi: pentru partea întreagă prin împărţiri
repetate iar pentru partea zecimală prin înmulţiri repetate.
-în cazul hexazecimal- zecimal prin adunarea produselor dintre cifrele numărului şi
ponderilor bazei corespunzătoare poziţiei cifrei considerate
Să efectuăm conversia .
28

Pentru partea întreagă se aplică:

conversia părţii întregi oferă rezultatul 185

Pentru partea zecimală se aplică:

conversia părţii zecimale oferă rezultatul exact 0,2

Rezultă rezultatul final al conversiei


Pentru conversia hexazecimal-zecimal considerăm exemplul următor:

Algoritmul rapid de conversie binar↔hexazecimal

Pentru conversiile rapide, se foloseşte similar conbersiilor binar-octal, faptul că


există o corepondenţă biunivocă între grupri de biţi şi simbolurile bazei
hexazecimale. Grupul de biţi folosit în acest caz este tetrada (cvartetul).
Astfel, pentru conversia binar→hexazecimal, etapele algoritmului în cazul
conversiei unui numar real scris în binar sunt:
-de la virgula zecimală, se grupeaza la stânga grupe de câte 4 biţi, respectiv la
dreapta grupe de câte 4 biţi
-în cazul în care în cele două direcţii de grupare rămân tetrade incomplete, se
adaugă zerouri
-tedradele formate se convertesc direct în hexazecimal, conform corespondenţei
din Tabelul 1.5.
Pentru exemplificare se consideră: 1011100101011101000101,1101011101101
-gruparea în tetrade: 10 1110 0101 0111 0100 0101,1101 0111 0110 1
-completarea tetradelor: 0010 1110 0101 0111 0100 0101,1101 0111 0110 1000
-conversia tetradelor în hexazecimal determină expresia: 2E5745,D768

Pentru conversia rapidă hexazecimal,→binar, pur şi simplu fiecare cifră


hexazecimală se transpune în tetrada corespunzatoare.
Fie numărul hexazecimal A1F46D0E,23BC. Conform algoritmului rezultă
numărul binar (s-a păstrat gruparea mai clară a tetradelor în reprezentarea binară):
1010 0001 1111 0100 0110 1101 0000 1110, 0010 0011 1011 1101.
În cazul numerelor naturale, este evident că algoritmii de conversie sunt identici.

Algoritmul rapid de conversie hexazecimal ↔octal


Datorită proprietăţii sistemelor octal-hexazecimal de a utiliza complet grupări fixe de biţi
pentru cifrele bazelor respective, există posibilitatea de a combina algoritmii rapizi
descrişi anterior pentru a obţine un algoritm rapid de conversie hexazecimal ↔octal.
29

Conversia nu va fi în acest caz una directă ci se va folosi baza binară ca etapă


intermediară: sau .
Etapele algoritmului hexazecimal-octal sunt:
-numărul hexazecimal se converteşte rapid în binar
-şirul binar este trecut în octal conform algoritmului specific
-elementul de bază este trecerea din tatrade de biţi în triade de biţi
Etapele algoritmului octal- hexazecimal sunt:
-numărul octal se converteşte rapid în binar
-şirul binar este trecut în hexazecimal conform algoritmului specific
-elementul de bază este trecerea din triade de biţi în tetrade de biţi

Exemplu: numărul hexazecimal A7F03E2,75BD devine în binar:


1010 0111 1111 0000 0011 1110 0010, 0111 0101 1011 1101
-gruparea în triade este:
1 010 011 111 110 000 001 111 100 010, 011 101 011 011 110 1
-se completează triadele obţinute:
001 010 011 111 110 000 001 111 100 010, 011 101 011 011 110 100
-triadele se convertesc în octal:
1237601742,353364

Exemplu: numărul octal 21375063534,23071 devine în binar:


010 001 011 111 101 000 110 011 101 011 100,010 011 000 111 001
-gruparea triadelor în tetrade:
010 1011 1111 0100 0110 0111 0101 1100,0100 1100 0111 001
-completarea tetradelor:
0010 1011 1111 0100 0110 0111 0101 1100,0100 1100 0111 0010
-convertirea în hexazecimal a tetradelor formate:
2BF5675C,4C72

1.2.4. Coduri numerice ponderate


Coduri numerice ponderate realizează o corespondenţă între o sursă (număr,
caracter, simbol) şi o structură ce conţine combinaţii de 0 şi 1. Ele păstrează regula
sistemelor numerice ponderate. De obicei sunt folosite pentru dezvoltarea de algoritmi
aritmetici binari. Cele mai importante coduri numerice ponderate sunt:
-codul binar propriuzis
-codul BCD (Binary Decimal Code) ponderat 8421
-codul binar-ecimale ponderate autocomplementare
- Aiken (ponderat 2421)
-pondere
-pondere
-codul zecimal binar
Codul binar pur, a fost prezentat anterior. El este un cod ponderat al puterilor lui 2
având ca şi coduri derivate, cel octal şi hexazecimal.
30

Codul BCD realizează conversia digiţilor zecimali în binar. Astfel, fiecare cifră
zecimală (1,2,3,4,5,6,7,8,9) este codificată binar prin 4 biti, după cum este redat în
Tabelul 1.6.
Ponderile codului BCD sunt 1, 2, 4, 8, 10, 20, 40, 80, 100, 200,..........Se poate vedea că
ponderile sunt diferite de cazul codului binar pur (1,2,4,8,16,32....) unde ele sunt date de
puterile lui 2. Din acest motiv nu trebuie confundat binarul cu BCD. Conversia zecimal –
binar pur se face considerând numărul în ansamblul său, spre deosebire de situaţia codării
zecimal-BCD când operaţia de codare se face la nivelul fiecărei cifre zecimale.

Tabelul 1.6.
Zecimal 0 1 2 3 4 5 6 7 8 9
BCD 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001
code

În acest mod, conversia zecimal-BCD se face:


13549 → 0001 0011 0101 0100 1001
Pentru a observa diferenţa clară binar-BCD, considerăm conversiile:

Codul binar Aiken (codul 2421) este un cod autocomplementar. Un cod se numeşte
autocomplementar dacă cuvântul de cod al complemetului cifrei N faţă de 9 (9-N) se
poate obţine din codul cifrei N prin complementarea fiecăruia din cei 4 biţi. Codul BCD
nu este un cod autocomplementar. Codul 2421 care se mai numeşte şi Aiken după numele
profesorului Howard Aiken, realizator al computerului MARK 1, are primele 5 cifre
(0,1,2,3,4) cu aceeaşi exprimare din codul BCD. Cifra 5 poate fi exprimată fie prin
combinaţia 0101 fie prin 1011. Pentru codificare s-a ales 1011, deoarece în acest caz
codul pentru cifra 5 se obţine prin complementarea codului pentru cifra 4. Această regulă
se aplica pentru obţinerea cifrei 6 din complementarea setului de biţi corespunzători
cifrei 3, codul cifrei 7 din complementarea biţilor cifrei 2 samd. Codurile Aiken
corespunzătoare cifrelor zecimale sunt date în Tabelul 1.8. O observaţie interesantă
privind toate codurile binar-zecimale ponderate este că prima şi ultima cifră, 0 respectiv 9
sunt codate identic prin seturile de biti 0000, respectiv 1111. În plus, condiţia necesară
pentru un cod ponderat să fie autocomplementar este ca suma ponderilor să fie egală cu
9.Aşa cum s-a spus la început, codurile autocomplementare prezintă o serie de avantaje în
cadrul aritmeticilor dezvoltate în codurile respective.
Tabelul 1.8.
Zecimal 0 1 2 3 4 5 6 7 8 9
Aiken 0000 0001 0010 0011 0100 1011 1100 1101 1110 1111
(2421)
Ansamblul codărilor în cadrul codurilor binar-zecimale ponderate de 4 biţi este redat
cumulat în Tabelul 1.9

Tabelul 1.9.
31

Codurile zecimal-binare sunt coduri formate de grupuri de n biţi, în caz general 5, din
care doar unul progresează şi de un grup de m biţi, de obicei 1 sau 2, care asigură
diferenţa dintre numerele mai mari decât 5 şi cele mai mici decât 5. Un astfel de cod este
prezentat în Tabelul 1.10.

Tabelul 1.10.
Cifră S O 4 3 2 1 0
zecimală
0 0 1 0 0 0 0 1
1 0 1 0 0 0 1 0
2 0 1 0 0 1 0 0
3 0 1 0 1 0 0 0
4 0 1 1 0 0 0 0
5 1 0 0 0 0 0 1
6 1 0 0 0 0 1 0
7 1 0 0 0 1 0 0
8 1 0 0 1 0 0 0
9 1 0 1 0 0 0 0

Fiecare combinaţie a unui astfel de cod are un număr ăpar de biţi de 1, fapt ce
asigură condiţii de securitate a transmisiei de date.

1.2.5. Coduri numerice neponderate.


Aceste coduri, pot avea un număr de biţi mai mare de 4. Există mai multe variante
dar cele mai utilizate sunt:
-Exces 3
32

-2 din 5
-Gray

Codul Exces 3 este un cod de tip autocomplementar ce derică din codul BCD. El se
obţine adăgând la fiacre cifră a codului BCD cifra 3. Chiar denumirea codului de Exces
vine din faptul că formarea sa se face adunând 3 la fiecare cifră.
Exemplu: se consideră numărul zecimal 48. Deorece Exces 3 derivă din BCD,
conversia se face la nivel de digit:
48→ 4 8
+3 +3
_____ _____
7 11
↓ ↓
0111 1010
Folosirea codului Exces-3 permite să se facă distincţia între situaţia când nu există
informaţie scrisă într-un registru ori locaţie de memorie şi situaţia când este scrisă
valoarea zero în locaţiile resăective. Folosind codul Exces, scrierea valorii 0 se face prin
gruparea de biţi 0011 iar lipsa unei informaţii de la o locaţie anume va fi reprezentată prin
cvartetul 0000. În Tabelul 1.11 este scris codul Exces-3:

Tabelul 1.11.
Zecimal 0 1 2 3 4 5 6 7 8 9
Exces-3 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100

Din acest tabel se poate observă uşor că Exces-3 este un cod de tip autocomplementar.
Asfel, în Exces-3, 1 se codifică 0100 şi 8 se codifică 1011. Codificarea lui 8 se obţine
prin negarea bit cu bit, prin complementarea, a cvartetului corespunzator lui 1. Relaţia
este valabilă şi pentru perechile de cifre 0-9, 2-7, 3-6 şi 4-5.

Codul 2 din 5 este un cod ce foloseşte 5 biţi pentru reprezentarea cifrelor zecimale. Ăn
Tabelul 1.12 sunt date codările 2 din 5 pentru cifrele zecimale. Din tabel se observă
faptul că elementul caracteristic al acestei codări, lucru ce i-a şi dat numele, este faptul ca
pentru oricare cifră zecimală, doar 2 din cei cinci biţi ai reprezentării au valoarea 1, restul
fiind egali cu 0.

Tabelul 1.11.
Zecimal 0 1 2 3 4 5 6 7 8 9
Codul 2 00011 00101 00110 01001 01010 01100 10001 10010 10100 11000
din 5

Modul în care este construit codul 2 din 5 permite o foarte simplă metodă de verificare a
corectitudinii transmiterii datelor numerice, prin simpla verificare a caracterului par al
biţilor de 1 din orice şir numeric codificat astfel.

Codul Gray (binar reflectat) a fost introdus de Emile Baudot (1845-1903) şi s-a numit
iniţial cod ciclic permutat. A fost folosit la sistemul de telegrafie iar prezentarea sa
33

oficială s-a produs cu ocazia Expozişiei Universale din Paris, în anul 1878. Cu toate că a
fost utilizat încă din secolul 19, el a rămas în actualitate fiind extrem de utilizat în
tehnicile numerice. Denumirea Gray a fost primită de la inginerul Frank Gray care a
inventat în anul 1953 un circuit electronic ce realiza conversia semnalelor analogice în
semnale numerice de tip binar reflectat. Invenţia sa era aplicată la sistemele de
televiziune color iar de atunci, codul binar reflectat a început să fie numit codul Gray.
Aplicaţiile sale acoperă atât zona teoretică (modul de organizare al diagramelor
Karnaugh, codarea din cadrul algoritmilor genetici, definirea conceptului de distanţă
pentru şiruri de biţi, în sensul distanţelor Hamming, soluţii la problema turnurilor din
Hanoi) cât şi din zona practică (encodere liniare şi rotative, circuite digitale de tip
numărător, corecţia erorilor în cadrul comunicaţiilor digitale, mărirea gradului de
siguramţă la transmiterea de date în condiţii de zgomot). Un traductor rotativ de poziţie
(encoder rotativ) având codificare Gray este prezentat în Fig. 1.26. Encoderul este
structurat pentru patru piste, patru senzori optici, obţinând astfel 16 cuvinte binare,
respectiv divizarea unei rotaţii în 16 paşi egali.

Figura 1.26 Encoder rotativ cu patru piste care foloseşte codul Gray.

Avantajul introdus de codul Gray este determinat de modul în care a fost gândit
iniţial, respectiv faptul că pentru oricare două numere consecutive se modifică doar
conţinutul unui singur bit (proprietatea de adiacenţă). Acesta este elementul care il face
rezistent la erori şi în acelaşi timp asigură performanţe economice în consumul de energie
electrică al circuitelor numerice ce îl utimizează. De exemplu, un numărător CMOS care
foloseşte codul Gray consumă doar 57% din energia electrică necesară unui numărător
binar clasic, deoarece numărul de comutaţii din cadrul numărătorului Gray este
semnificativ mai mic, mai ales pentru mărimi care cresc sau descresc succesiv. Pentru
primele 16 numere naturale, codificarea Gray pentru 4 biţi este dată in Tabelul 1.12:
Tabelul 1.12
Nr 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Gray 0000 0001 0011 0010 0110 0111 0101 0100 1100 1101 1111 1110 1010 1011 1001 1000
Binar 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
34

Tabelul 1.12 prezintă şi codificarea binară, pentru a putea urmări mai clar proprietatea de
adiacenţă a codului Gray. Dacă se urmăreşte tranziţia 3→4, se observă că în binar se
schimbă valoarea a 3 biţi (doi comutând de la 1 la 0 şi unul de la 0 la 1) pe când în cazul
Gray are loc comutarea unui singur bit. De fapt, pentru toate numerele succesive, în codul
Gray se modifică un singur bit. Dacă se consideră conceptul de distanţă Hamming între
şiruri de biţi sau de caractere, prin numărul de biţi (caractere) diferite, atunci este
evidentă proprietatea codării Gray care asigură distanţa unitară între numere consecutive.
Elementul prin care se normează spaţiul lungimii şirurilor de biţi cu distanţa Hamming se
numeşte cubul Hamming.În cazul particular al şirurilor de biţi cu lungimea de 3,
reprezentarea sa este de tip 3D, mai intuitivă, în raport cu termenul de cub. Cubul
Hamming pentru acest caz este prezentat în Fig. 1.27. Considerând fiecare latură a
cubului drept o tranziţie între valori succesive, se observă ca distanţa în sensul Hamming
a punctelor descrise prin triplete de biţi şi situate pe aceeaşi latură, este unitară

Figura 1.27 Cub Hamming pentru cazul cuvintelor de trei biţi.

Din cauza multiplelor aplicaţii, o problemă importantă este generarea codului


Gray, pentru cuvinte cu lungimi diferite. Denumirea iniţială a codului, binar reflectat, a
provenit din algoritmul de generare. Etapele algoritmului sunt:
-se porneşte de la primele două cifre binare, 0 şi 1, care se scriu în coloană
-se trasează sub ele o linie, în raport cu care vom scrie reflexia coloanei iniţiale
(ca şi cum linia trasată ar fi o oglindă, de unde şi denumirea de binar reflectat)
-se adaugă în stânga numerelor de pe coloană zerouri pentru cele aflate deasupra
liniei de reflexie şi valori de unu pentru cele aflate dedesubtul liniei
-dacă se doreşte obţinerea unor şiruri de mai mulţi biţi, respectiv dacă se doresc
numere de valoare mai mare convertite în Gray, se repetă etapele algoritmului: se fixează
linia de reflexie, se copiază coloana reflectată şi apoi se completează cu 0 sau 1,
deasupra, respectiv dedesubtul liniei
Vom prezenta etapelor algoritmului pentru formarea numerelor cu lungime
maximă de patru biţi :
0 0 00 00 000 000 0000 ......
35

1 1 01 01 001 001 0001


----- 11 011 011 0011
1 11 10 010 010 0010
0 10 ------ 110 0110
10 110 111 0111
11 111 101 0101
01 101 100 0100
00 100 -------
100 1100
101 1101
111 1111
110 1110
010 1010
011 1011
001 1001
000 1000
Deoarece conversiile binar natural↔Gray (binar reflectat) sunt cele mai utilizate, au fost
elaborate mai multe metode care să realizeze aceasta. Unele dintre ele au fost
implementate la nivel de structuri de circuite numerice, respectiv codificatoarele binar-
Gray şi Gray-binar. Vom prezenta esenţa acestor metode, pornind de la Tabelul 1.13,
unde cele doua coduri binare sunt scrise sub forma tabelului de adevăr:
Tabelul 1.13
Binar natural Gray (binar reflectat)

0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 1
2 0 0 1 0 0 0 1 1
3 0 0 1 1 0 0 1 0
4 0 1 0 0 0 1 1 0
5 0 1 0 1 0 1 1 1
6 0 1 1 0 0 1 0 1
7 0 1 1 1 0 1 0 0
8 1 0 0 0 1 1 0 0
9 1 0 0 1 1 1 0 1
10 1 0 1 0 1 1 1 1
11 1 1 0 0 1 1 1 0
12 1 1 0 1 1 0 1 0
13 1 1 1 0 1 0 1 1
14 1 1 1 1 1 0 0 1
15 1 1 1 1 1 0 0 0

Fără a detalia acum elementele specifice de sinteză combinaţională a circuitelor


numerice, vom prezenta doar ecuaţiile logice finale ce realizează conversiile
binar↔Gray.
Pentru conversia binar→Gray, biţii corespunzători codării Gray se obţin din cei ai
reprezentării clasic binere prin relaţiile logice:
36

(1.5)

Expresia generală pentru oricare alt bit cu excepţia celui mai puţin semnificativ
este dată de relaţia:
(1.6)
Conform setului de relaţii (5), algoritmul de conversie binar→Gray este:
-cel mai semnificativ bit se copiază pentru din cuvântul binar în cel Gray
-următorul rang al cuvântului Gray se obţine efectuând un SAU
EXCLUSIV între cel mai semnificativ bit şi următorul, din expresia binară
-numărul de biţi fiind identic în ambele forme de codare, algoritmul se
încheie cu obţinerea celui mai puţin semnificativ bit din codarea Gray, dat de
aceeaşi funcţie logică SAU EXCLUSIV
Pentru exemplificarea algoritmului să considerăm conversia:
(101110101101011)B→()G
Cel mai semnificativ bit se copiază: 1
Gruparea biţilor din cadrul expresiei binare clasice se face astfel, pentru toate cele
14 ranguri următoare:

Următorul ca rang, se obţine din operaţia de SAU EXCLUSIV aplicată celor mai
semnificativi biţi ai expresiei binare, primii doi din stânga:

Toţi cei 14 biţi care urmează după cel mai semnificativ, se obţin în acelaşi mod:
11  0
1 0  1 1 0  1
1 0  1
Codificarea în Gray este: 111001111011110

Tot din Tabelul 1.13 se obtine şi setul de relaţii logice prin care se
realizează conversia din Gray în binar.

(1.7)

Şi în acest algoritm se poate deduce expresia generală valabilă pentru determinarea


oricărui rang al codificarii binare, cu excepţia celui mai semnificativ, care se
obţine prin copiarea celui mai semnificativ bit al formei Gray.
(1.8)
Conform setului de ecuaţii logice (7), algoritmul de conversie Gray→binar are
următorii paşi. Se observă că şi în acest caz, operaţia logică folosită este SAU
EXCLUSIV:
-cel mai semnificativ bit al codării Gray se copiază şi devine cel mai semnificativ
bit pentru varianta binară (similar primului pas din codărea inversă)
37

-următorul bit al expresiei binare se obţine aplicând funcţia SAU EXCLUSIV


între cel mai semnificativ al codării binare (obţinut la pasul anterior) şi bitul de rang
imediat inferior al cuvântului Gray
-spre deosebire de algoritmul anterior, când aveam de la început toţi biţii din care
se obţinea codarea Gray (respectiv se foloseau biţii cunoscuţi ai scrierii binare stndard),
în acest caz fiecare nou bit determinat pentru expresia binară clasică va fi folosit la pasul
următor. Algoritmul se construieşte pas cu pas şi pe masură ce determină un nou rang
inferior al formei binare, putem trece la următorul pas (următorul rang).
Să exemplificăm algoritmul prin conversia (1011010111101)G→()B.
Cel mai semnificativ bit al formei binare se obţe copiind cel mai semnificativ bit al
codării Gray: (1011010111101)G→(1....................)B.
În următorii paşi se aplică relaţia (8), respectiv se foloseşte cel mai semnificativ bit
al expresiei binare şi bitul de rang imedit inferior al expresiei Gray:
, rezultă (1011010111101)G→(11....................)B
Se repetă operaţia pentru a determina toţi cei 14 biţi corespunzători rangurilor diferite de
cel mai semnificativ:
, rezultă (1011010111101)G→(110...................)B
, rezultă (1011010111101)G→(1101.................)B
, rezultă (1011010111101)G→(11011...............)B
, rezultă (1011010111101)G→(110110.............)B
, rezultă (1011010111101)G→(1101100..........)B
, rezultă (1011010111101)G→ (11011001.........)B
, rezultă (1011010111101)G→ (110110010.......)B
, rezultă (1011010111101)G→ (1101100101.....)B
, rezultă (1011010111101)G→ (11011001010...)B
, rezultă (1011010111101)G→(110110010100..)B
, rezultă (1011010111101)G→ (1101100101001)B

După prezentarea celor doi algoritmi de codare, se extrag următoarele concluzii


pentru numerele care sunt supuse conversiilor binar-Gray:
-lungimea unui număr codat în binar este egală cu lunigimea conversiei sale Gray
şi reciproc
-cei mai semnificativi biţi sunt identici în cazul celor două codificări
-operaţia de bază prin care se realizează conversiile reciproce este funcţia logică
SAU EXCLUSIV.
1.2.6. Coduri detectoare de erori.
Transmisia datelor numerice poate fi afectată de erori din cauza zgomotului
electric care apare pe liniile de transmisie. Din acest motiv este nevoie să efectuăm o
operaţesuplimentară, cea de verificare a corectitudinii informaţeie transmise. Verificarea
se realizează prin folosirea unor coduri dedicate, numite coduri detectoare de erori.
Există mai multe metode de detectare a erorilor. Una din ele se bazează pe detectarea
combinaţiilor interzise de biţi. De exemplu, dacă se foloseşte codul BCD, pot exista doar
10 combinaţii corecte, de la 0000 la 1001, din cele 16 posibile.
38

Pentru a creşte puterea de detecţie a erorilor, de obicei se mareşte numărul biţilor


suplimentari, de verificare. În acest caz, informaţia utilî ete conţinută în n biţi de date iar
un număr suplimentar de biţi, k, redondanţi din punctul de vedere al informaţiei, sunt
folositiţi pentru verificare. Creşterea dimensiunii cuvântelor binare va conduce la
creşterea costurilor echipamentelor şi a consumurilor de energie în exploatare dar şi la
mărirea timpului necesar transmisiei. Dezavantajele enumerate sunt preţul creşterii
sigurantei transmisiei de date. Conceptul folosit la detectarea erorilor este cel de distanţă
Hamming, amintit în paragraful despre codul Gray. Astfel, dacă între două cuvinte există
distanţa Hamming d, atunci sunt necesare d erori de cod de un bit pentru a trece de la un
cod la al doilea cod. Pentru un cod dat, capacitatea sa de detectare a erorilor depinde de
distanţa sa Hamming. Astfel, pentru a putea detecta d erori de un bit, codul respectiv
trebuie sa aibe distanţa Hamming (d+1). În acst caz este imposibil ca d erori de un bit să
determine trecerea unui cuvânt valid, într-un alt cuvânt valid, din cadrul codului
respectiv.
Principalele coduri detectoare de erori sunt:
-coduri de tip :”p din n”
-coduri de control a parităţii

Coduri de tip ”p din n” sunt coduri în cadrul cărora din cei n biţi cât formează cuvântul,
p au mereu valoarea 1. În acest mod este posibil să recunoaştem mereu dacă un cuvânt
scris în acest cod a fost sau nu transmis corect.
Pentru valori fixate de n şi p biţi, numărul total de combinaţii posibile, de cuvinte diferite
posibil de obţinut, este dat de relaţia combinaţională:
(1.9)
Unul dintre cele mai uzitate coduri de acest tip este codul :”2 din 5”, care se mai
numeşte si codul 74210. El este folosit pentru reprezentarea cifrelor zecimale. Conform
relaţiei (9), numărul total de combinaţii posibile, respectiv numărul total de cuvinte
distincte ce se pot obţine, este . Combinaţiile codului ”2 din 5”au
fost redate în Tabelul 1.14.
Cea mai importantă aplicaţie practică a codului :”2 din 5” este transmiterea
informaţiei numerice în centralele telefonice. Deoarece cea mai mare informaţie
procesată prin centralele telefonice este reprezentată de cifrele zecimale, se impunea
determinarea unui cod numeric prin care să se poată detecta posibilele erori de transmisie
a numerelor de telefon formate.

Tabelul 1.14
Cifra Codul ”2 din 5”
zecimală 7 4 2 1 0
1 0 0 0 1 1
2 0 0 1 0 1
3 0 0 1 1 0
4 0 1 0 0 1
5 0 1 0 1 0
39

6 0 1 1 0 0
7 1 0 0 0 1
8 1 0 0 1 0
9 1 0 1 0 0
0 1 1 0 0 0

Coduri pentru testarea parităţii


Este unul din cele mai simple coduri de tip detectare de eroare. În esenţă. Codul conţine
un bit suplimentar prin care se asigură ca numărul total de biţi de 1 din cuvântul
considerat să fie par. Există şi posibilitatea de testare a imparităţii, care se rezolvă similar,
prin intermediul unui bir suplimentar. În cazul transmisiei de date, este necesar ca de la
început, emiţătorul şi receptorul să se pună de acord asupra tipului de verificare folosit,
cea care verifică paritatea ori imparitatea.
Dacă se foloseşte verificarea parităţii, considerând un cuvânt de 4 biţi utili şi
bitul de paritate p, expresia prin care se validează paritatea este o funcţia logică SAU
EXCLUSIV (SUMA MODULO 2), scrisă astfel:
(1.10)
Este simplu de observat ca expresia (10) reprezintă condiţia de paritate. Din această
expresie se obţine valoarea bitului de paritate:
(1.11)
În cazul în care verificarea transmisiei datelor se face pe baza detecţei imparităţii, cele
două expresii anterioare devin:
(1.12)
(1.13)
Codul de tip paritate, folosit pentru BCD, de tip cod 8421, este prezentat în Tabelul 1.15
la nivelul cifrelor zecimale, respectiv la cuvinte de dimensiune (1+4 biţi):
Tabelul 1.15
Cifra zecimală Cod 8421 tip par Cifra zecimală Cod 8421 tip par
0 0 0000 5 0 0101
1 1 0001 6 0 0110
2 1 0010 7 1 0111
3 0 0011 8 1 1000
4 1 0100 9 0 1001
Codul de tip paritate este un cod cu distanţa Hamming 2, deoarece o eroare la nivel de 1
bit produce un cuvânt cu paritate eronată, care este detectat.

1.2.7. Coduri corectoare de erori.


Din prezentarea codurilor pentru testarea parităţii rezultă şi principala lor limită:
ele nu pot detecta erorile duble. Astfel, dacă într-un cuvânt transmis are loc o dublă
eroare, caracterul par ori impar al biţilor transmişi nu se schimbă şi din acest motiv
eroarea dublă nu este detectată. Pentru a detecta şi corecta erorile datorate unui bit sau
mai multor biţi greşiţi, s-au elaborat coduri mai complexe, numite coduri corectoare de
erori. Ele se folosesc în situaţiile când retransmiterea informaţiei nu este posibilă ori ar
cere un timp de procesare prea mare pentru ansamblul procesului.
40

Să considerăm un cuvânt binar având m biţi de date şi r biţi de verificare. Cu m biţi se pot
forma cuvinte corecte. Pentru fiecare din aceste cuvinte pot exista n cuvinte
ilegale, cu erori de distanţă 1. O eroare de distanţă 1 este dată prin modificarea valorii
unui bit. Cuvintele binare cu eroare de distanţă 1 se formează prin inversarea sistematică
a fiecăruia din biţii componenţi. Pentru fiecare din cele cuvinte corecte există (n+1)
combinaţii de biţi dedicate fiecărui cuvânt. Cu cei n biţi se obţin combinaţii. Rezultă
astfel:
(1.14)
Deoarece , se obţine:
(1.15)
Cum m este un număr dat, va rezulta din (15) limita inferioară a numărului biţilor de
verificare, r, necesar corectării erorilor de un bit. Astfel, pentru cuvinte de 4 biţi, m=4,
numărul minim de biţi de verificare este r=3, iar pentru cuvinte cu m=8, se obţine r=4.
Limitele teoretice ale codurilor corectoare de erori pot fi atinse aplicând metoda
elaborată de Hamming. Metoda Hamming poate fi folosită pentru elaborarea codurilor
corectoare de erori, indiferent de lungimea cuvintelor. Astfel, într-un cod Hamming se
adaugă la cei m biţi ai cuvântului câte r biţi de paritate, obţinându-se cuvite de lungime
m+r. Spre deosebire de codurile binare clasice, numerotarea biţilor începe de la 1, nu de
la 0. Bitul 1 este bitul cel mai semnificativ. Toţi biţii ai căror număr este o putere a lui 2
sunt biţi de paritate, restul fiind biţi de informaţie, de date.

Figura 1.28 Construcţia codului Hamming pentru un cuvând de date de 4 biţi.

Dacă considerăm un cuvând de 4 biţi, rezultă că biţii 1,2 şi 4 sunt biţi de paritate. Astfel,
cuvântul va conţine acum 7 biţi, 3 de paritate şi 4 biţi de date. Fiecare bit de paritate
verifică anumite poziţii de biţi. Să considerăm exemplul din Figura 28 unde cercurile
semnifică biţii de informaţie iar pătratele semnifică biţii de paritate. Biţii de paritate
verifică următoarele poziţii:
-bitul 1 de paritate verifică biţii 1,3,5,7
-bitul 2 de paritate verifică biţii 2,3,6,7
-bitul 4 de paritate verifică biţii 4,5,6,7
În general bitul b este verificat de acei biţi astfel încât să fie verificată relaţia
(16):
(1.16)
Astfel bitul 5 se verifică prin biţii 1 şi 4 (conform relaţiei (16), 1+4=5) iar bitul 6 este
verificat de biţii 2 şi 4.
Considerând numărul binar 0101 exprimat în cod 8421 (el reprezintă valoarea
cifrei zecimale 5). Bitul 1 de paritate va determina un număr par de cifre de 1 pentru
41

poziţiile 1,3,5 şi 7. Va avea astfel valoarea 0. Similar, bitul 2 de paritate va avea valoarea
1 iar bitul 4 de paritate va avea valoarea 0. Dacă transmiterea datelor s-a realizat corect,
biţii de paritate verifică toţi condiţia de paritate. Dacă apare o eroare, fie la biţii de date
fie la cei de corecţie, codul prezentat poate corecta o singură eroare. Dacă de exemplu, pe
poziţia 6 a aparut o eroare de transmisie şi codul recepţionat este 0100111 în locul
variantei corecte 0100101 se va face următoarea verificare:
-bitul 1 de paritate este corect deoarece biţii 1,3,5,7 conţin 2 biţi de 1
-bitul 2 de paritate este incorect, deoarece biţii 2,3,6,7 conţin 3 biţi de 1
-bitul 4 de paritate este incorect deoarece biţii 4,5,6,7 conţin 3 biţi de 1
Prin analiza informaţiei conţinute în biţii de paritate rezultă ca bitul 6 este incorect şi
astfel eroarea poate fi corectată.
O metodă simplă de determinare a bitului incorect este următoarea: se adună ponderile
biţilor de paritate determinaţi ca incorecţi iar rezultatul obţinut va determina bitul incorect
transmis. În exemplul anterior, cum biţii de paritate incorecţi au fost 2 şi 4, rezultă ca
bitul incorect este 2+4=6, aşa cum a rezultat anterior din analiza seriilor de biţi verificaţi
de fiecare bit de paritate.
Se pot determina şi următoarele relaţii logice ce există între biţii iniţiali, de date,
şi forma finală a codului Hamming.
Considerăm numărul binar de date efective (având 4 biţi):

Numărul binar de tip cod Hamming, cu biţii suplimentari de corecţie este:

Relaţiile între cele două seturi de biţi sunt:

(1.17)

1.2.8. Coduri ciclice.


Codurile ciclice sunt o clasa de coduri în cadrul cărora un cuvânt W definit prin
, dacă este permutat ciclic cu un bit la dreapta produce un cuvânt
care este şi el un cuvând din cadrul codului.
Caracteristicile importante ale codurilor ciclice sunt simplitatea remarcabilă de
construcţie precum şi metodele rapide şi facil de implementat în ceea ce priveşte codarea-
decodarea lor. Pentru aceste operaţii sunt suficienţi regiştrii de deplasare, ce reprezintă
simple circuite numerice de tip secvenţial.
O categorie specială a codurilor ciclice sunt codurile Bose-Chauduri. Ele sunt extrem de
eficiente în detectarea şi corectarea erorilor multiple de tip aleator din transmisia de date.
Erorile din sistemele de transmitere de date datorate zgomotului din reţele de transmisie
au durate relativ lungi în raport cu ratele de transmitere a informaţiei. Astfel un zgomot
cu durata de 10ms care alterează transmiterea de date cu rata de transfer de 1200 biţi/sec
determină în cel mai defavorabil caz 12 biţi eronaţi, o eroare cu lungimea de 12 biţi. Un
cod ciclic redundant CRC -12 are probabilitatea de 99,955% să detecteze această eroare
cu lungimea de 12 biţi. Pentru detectarea erorilor un astfel de cod ciclic redundant (CRC)
foloseşte un calcul matematic care generează un număr în funcţie de secvenţa transmisă.
42

Emiţătorul efectuază calculele înaintea transmisiei datelor iar rezultatul este trimis către
receptor. Receptorul repetă aceeaşi secvenţa de calcul după ce s-a terminat secvenţa de
transfer de date. Dacă atât la nivelul emiţatorului cât şi al receptorului se obţin aceleaşi
rezultate se consideră că a avut loc o transmitere corectă a datelor. Procedura se numeşte
redundantă deoarece în cadrul ei are loc atât transmisia datelor propriu-zise cât şi a
datelor de verificare a transmisie. CRC-ul adaugă o serie de biţi, de obicei peste 25, la
secvenţa de transmisie. Grupul total de date, cele iniţiale plus datele de validare, sunt
considerate ca un polinom binar . Un şir de biţi care reprezintă un cuvând în diverse
coduri de tip CRC este uzual reprezentat ca polinom binar sub forma
unde este cel mai semnificativ bit iar este cel mai puţin semnificatib bit. Termenii
lipsă se reprezintă prin zerouri. Astefel, cuvântul binar 10101 se reprezintă în varianta
polinominală . Se observă că gradul polinomului binar este ca valoare cu o
unitate mai mic decât numărul de biţi ai cuvântului. Pe de altă parte cuvântul binar care
reprezinta doar datele de transmis, fară biţii adiţionali de control, se exprimă polinomial
prin , numit si polinomul mesaj. Acest polinom binar se divide prin polinomul
fix, notat care este cunoscut atât la emiţător cât şi la receptor. Rezultatul împărţirii
descrise este dat prin câtul polinomial şi restul exprimat tot polinomial .
Polinomul rest cunoscut şi drept termen de verificare (checksum), este adăugat
polinomului mesaj şi formează expresia completă polinomială .
La recepţie cuvântul binar exprimat polinomial este împărţit prin . Dacă împărţirea
este exactă, fără rest, se consideră ca transmisia de date a fost corectă, neperturbată. Dacă
restul este diferit de zero înseamnă ca transmisia datelor a fost cu erori şi atunci ori se
reia transmisia cuvântului binar respectiv, a setului de date ori are loc o operaţie de
corecţie de terminată prin valoarea restului obţinut exprimat polinomial ca şi
(polinomul eroare).
Adunările sau scăderile din calculele polinomiale se fac prin operatia de sumă modulo-2
(funcţia logică SAU exclusiv) care este de forma:

(1.18)

Este important de subliniat faptul că adunarea modulo-2 este identică scaderii modulo-2.
Etapele transmisiei de date sunt descrise anterior sunt:
-polinomul mesaj este deplasat cu c biţi la stânga, unde c este cel mai înalt grad al
polinomului . Noul cuvânt binar se exprimă prin .
-noul polinom astfel format, , se împarte la şi restul se adaugă la polinomul
pentru a forma expresia polinomială . Polinomul obţinut prin procedura
descrisă se poate împărţi la polinomul în felul următor:

(1.19)

Înmulţind relaţia (19) cu polinomul se obţine:


(1.20)
43

sau:
(1.21)
Deoarece adunarea modulo-2 este identică scaderii modulo-2, expresia (1.21) se mai
poate scrie sub forma:
(1.22)
sau:

(1.23)

Algoritmul descris este aplicat pe următorul exemplu unde consideram polinoamele:


=101101→
şi =11001→
Deoarece gradul lui este 4, polinomul se mută 4 biţi la stânga, ceea ce se obţine
prin produsul . Asfel:

Împărţind produsul obţinut la rezultă restul


Adunând la se obţine polinomul

Dacă la receptor nu se produc erori, atunci prin divizarea la restul este nul.

1.2.9. Coduri alfanumerice-codul ASCII.

Sunt folosite pentru a coda cifre, litere (în cele două variante grafice minuscule şi
majuscule), semne de punctuaţie, caractere speciale.

Tabelul 1.16A
44

Codul ASCII este cel mai răspândit cod alfanumeric. El a fost propus de American
National Standard Institute şi denumirea sa reprezintă abrevierea de la American
Standard Code for Information Interchange. Pentru fiecare simbol se folosesc 7 biţi de
codare, obţinându-se combinaţii, simboluri (Tab. 1.16A şi Tab. 1.16B).
45

Tabelul 1.16B

1.3. ELEMENTE DE ARITMETICĂ BINARĂ, OCTALĂ ŞI HEXAZECIMALĂ

Operaţiile aritmetice elementare (adunarea, scăderea, înmulţirea şi împărţirea) se


efectueză în sisteme numerice cu baze 2,8 şi 16 după aceleaşi reguli cunoscute din
sistemul zecimal. Elemetele specifice aritmeticilor binare, octale şi hexazecimale vin din
modul specific prin care se fac adunările, respectiv înmulţirile în bazele respective.
46

1.3.1. Elemente de aritmetică binară


Operaţia de adunare în binar se face respectând regulile din zecimal: adumarea începe
rangul cel mai puţin semnificativ (care are cea mai mică pondere). În cazul în care
adunarea biţilor cu aceeaşi pondere depăşeşte valoarea de unitate cea mai mare (în cazul
binar aceasta este 1 iar în cazul zecimal este 9), are loc o raportare către bitul de pondere
imediat superioară. De obicei, acest bit se numeşte de transport (carry). Adunarea binară,
la fel ca adunarea tradiţională în bază 10, începe cu bitul cel mai puţin semnificativ.
Pentru început prezentăm în Tab.1.17 regula adunării binare de un bit:

Tabelul 1.17
A B C=A+B carry
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

Conform regulii din tabelul anterior, vom aplica adunarea binară două grupe de exemple,
primul cu numere binare întregi şi apoi cu numere binare zecimale:

Exemple:
0011 + 10110+
1010 00111
1101 11101

În cazul în care avem mai multe numere binare care se adună, se aplică acealeaşi reguli:
110110+
101001
100111
11010
111101
11011101

Pentru numerele binare de tip zecimal, adunare foloseşte aceleaşi reguli:


0111,11 +
0101,01
1101,00

Operaţia de scădere binară respectă şi ea regula sistemelor numerice ponderate.


Elementele de bază, respectiv scaderea la nivel de un bit este dată în Tab.1.18. De această
dată vom vorbi de bitul de împrumut (borrow), când valoarea scăzătorului este mai mare
dăcât valorea descăzutului şi se efectueză operţia de împrumut de la bitul de rang imediat
superior. Ca şi în cazul adunării, operaţia de scădere începe cu bitul cel mai puţin
semnificativ. În exemplele următoare se vor analiza situaţii de scăderi ale numerelor
binare de tip întreg ori zecimal. Dacă rezultatul scăderii este un numar negativ, vom
folosi regula de scriere a numerelor binare negative (folosind bitul de semn).
47

Tabelul 1.18
A B C=A-B borrow
0 0 0 0
0 1 1 1
1 0 1 0
1 1 0 0

Exemple:
101101 - 11001011- 101,0-
011010 01101110 011,1
010011 01011101 001,1

Operaţia de scădere binară se mai poate face şi folosind algoritmi bazaţi pe moduri de
scriere de tip complement (complement faţă de 2-complemenet2 şi complement faţă de 1-
complement1).

Complementul faţă de unu al unui număr binar se obţine înlocuind toţi biţii de 0 cu 1 şi
toţi biţii de 1 cu 0 (putem spune că obţinerea complementului faţă de unu se realizează
negând numărul binar iniţial).
Astfel complementul1 al numărului binar: 110100111→001011000.
Pentru numerele cu virgulă zecimală scrise binar, regula enunţată se aplică doar după
virgula zecimală, ca în exemplul următor:
0,101110011→0.010001100

Complementul faţa de 2 al unui număr binar se obţine prin următorul algoritm: şirul de
cei mai puţini semnificativi biţi care conţin măcar un bit de 1 şi unul de 0 iar restul de biţi
ai numărului iniţial se modifică după regula negaţiei, respectiv biţii de 0 devin 1 iar biţii
de 1 devin 0.
Considerând numărul binar 1011101100, complementul să faţa de 2 se obţine:
-se păstrează setul de biţi mai puţin semnificativi 100
-restul de biţi se modifică prin negare
101110100→010001100
Un alt algoritm de scriere a complementului faţa de 2 foloseşte connceptul anterior de
complemet faţa de unu:
-numărul binar iniţial se scrie în complemet faţa de unu
-la numărul obţinut sa adună binar 1
Să reluam exemplul anterior conform ultimului algoritm de scriere:
-numărul binar iniţial este 101110100
-complemetul său faţă de unu este: 010001011
-la acesta se adună binar 1: 010001011+1=010001100
-complementul faţa de doi este astfel: 010001100 (rezultat obţinut şi anterior)
În cazul numerelor cu virgulă zecimală regula de scriere este următoarea:
-se lasă nemodificat bitul de 1 cu cel mai mic rang, cea mai mică pondere (primul
din partea dreaptă a numărului binar, după virgula zecimală)
-restul biţilor se modifică priu negare (1 → 0 iar 0 → 1 )
48

Să aplicăm algoritmul la următorul exemplu:


Fie numărul binar 1 1 0 0 0 1 1 0 0 , 1 0 1 1
-se modifică biţii numărului cu excepţia ultimului
110001100,1011→001110011,0101

Scăderea binară folosind complementul faţa de 2 are următorul algoritm:


-descăzutul rămâne nemodificat
-scăzătorul este rescris în complemet faţa de 2
-descăzutul şi scăzătorul modificat se adună dar la cel mai semnificativ bit nu se
mai aplică regula bitul de carry
-dacă nu există la finalul adunării bitul de carry, atunci termenul rezultat ca sumă
se rescrie în complement faţa de 2 iar la el se adaugă semnul negativ

Exemple:
-Cazul când există bitul de carry la sumă:
-să se efectueze scăderea:
1101100–1011011
-descăzutul se scrie neschimbat 1101100
-scăzătorul se scrie în complemet faţă de 2 0100101
-se adună cei doi termeni:
1101100+
0100101
10010001
-se renunţă la bitul de 1 cel mai semnificativ şi se obţine rezultatul scăderii
0010001

-Cazul când nu există bitul de carry la sumă:


-să se efectueze scăderea:
1011011–1101100
-descăzutul se scrie neschimbat 1011011
-scăzătorul se scrie în complemet faţă de 2 0010100
-se adună cei doi termeni:
1011011+
0010100
1101100
-nu exstă bit de carry, aşa că rezultatul adunării este scris în complement faţa de 2
iar apoi este pus semnul minus:
1101100→ -0010100

Scăderea binară folosind complementul faţa de 1 are următorul algoritm:


-descăzutul este copiat neschimbat
-scăzătorul se scrie sub forma de complemet faţă de 1
-cei doi termeni se adună ca două numere binare
-dacă adunarea binară produce la cei mai semnificativi biţi un bit de transport,
atunci el nu se scrie ca noul cel mai semnificativ bit dar se adună 1 la rezultatul
obţinut
49

-dacă adunarea binară nu produce la cei mai semnificativi biţi un bit de transport,
atunci rezultatul adunării se rescrie ca şi complemet faţa de 1 şi la final se adaugă
semnul minus

Exemple:
-Cazul când există bitul de carry la sumă:
-să se efectueze scăderea:
1101100–1011011
-descăzutul se scrie neschimbat 1101100
-scăzătorul se scrie în complemet faţă de 1 0100100
-se adună cei doi termeni:
1101100+
0100100
10010000
-se renunţă la bitul de 1 cel mai semnificativ, bitul de carry, apoi se adună 1 şi
astfel se obţine rezultatul,scăderii:
0010001+1=0010001
-Cazul când nu există bitul de carry la sumă:
-să se efectueze scăderea:
1011011–1101100
-descăzutul se scrie neschimbat 1011011
-scăzătorul se scrie în complemet faţă de 1 0010011
-se adună cei doi termeni:
1011011+
0010011
1101110
-nu exstă bit de carry, aşa că rezultatul adunării este scris în complement faţa de 1
iar apoi este pus semnul minus:
1101110→ -0010001

Operaţia de înmulţire binară se bazează pe inmulţirea binară la nivel de 1 bit, care este
prezentată în Tab. 1.19.

Tabelul 1.19
A B C=A B
0 0 0
0 1 0
1 0 0
1 1 1

Pentru a înmulţii numere binare de mai mulţi biţi, se respectă regula de la sistemele
ponderate (regula înmulţirii din baza 10) cu observaţia ca atunci când bitul de
multiplicare este 0, tot termenul rezultat este 0. Pentru exemplifivare considerăm
produsele binar: 0 1 0 1 0 0 1 0 şi 1 0 1 1 1 1 0 0 :
50

0101 1011
0010 1100
0000 0000
0101 0000
0000 1011
0000 1011
0001010 10000100

Înmulţirile binare cu puterile lui (cu 2, 4, 16...) se reduc la a decala deînmulţitul prin
introducere la dreapta sa a unui număr de zerouri egal cu exponentul lui 2 prin care se
exprimă înmulţitorul. Astfel, dacă avem înmulţirea binară 1001 1000, deoarece 1000
are valoarea 8 în baza 10, iar 8 se scrie ca putere a lui 2 ca şi , rezultatul se obţine rapid
inserând trei de 0 la dreapta deînmulţitului, adică 1001000.

Operaţia de împărţire binară se bazează pe proprietăţile împărţirii binară la nivel de 1


bit, care sunt rezumate în Tab. 1.20.
Tabelul 1.20
A B C=A B
0 0 imposibil
0 1 0
1 0 imposibil
1 1 1

Varianta clasică de împărţire binară, este asemeni operaţiei de împărţire în bază 10,
bazându-se pe operaţii de înmulţire şi scădere, doar că toate operaţiile se efectuează în
binar. Să considerăm împărţirea 10010000111 1011
10010000111 1011
- 1011 01101001
01110
-1011
001100
-1011
0001111
-1011
rest 0 1 0 1

Similar cu algoritmul rapid privind înmulţirile binare cu puterile lui (cu 2, 4, 16...), în
cazul împărţirii la numere binare ce exprimă puterile lui 2, operaţia se reduce la a decala
deîmpărţitul prin introducere la stânga sa a unui număr de zerouri egal cu exponentul lui
2 prin care se exprimă împărţitorul. Asfel 1000 100 este egal cu 0010.
51

1.3.2. Elemente de aritmetică octală


Aritmetica octală este comună cu cea din sistemele de numeraţie ponderate. Elementele
de bază care o particularizează sunt adunarea în octal, respectiv înmulţirea în octal. În
tabelele Tab.1.21 şi Tab.1.22 sunt prezentate regulile după care se fac adunarea şi
înmulţirea în octal. Pe baza acestora vom exemplifica apoi operaţiile aritmetice.

Tabelul 1.21
0 1 2 3 4 5 6 7
0 0 1 2 3 4 5 6 7
1 1 2 3 4 5 6 7 10
2 2 3 4 5 6 7 10 11
3 3 4 5 6 7 10 11 12
4 4 5 6 7 10 11 12 13
5 5 6 7 10 11 12 13 14
6 6 7 10 11 12 13 14 15
7 7 10 11 12 13 14 15 16

Tabelul 1.22
0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7
2 0 2 4 6 10 12 14 16
3 0 3 6 11 14 17 22 25
4 0 4 10 14 20 24 30 34
5 0 5 12 17 24 31 36 43
6 0 6 14 22 30 36 44 52
7 0 7 16 25 34 43 52 61

Exemple de operaţii în octal:

Adunarea: 3527 + 2736 + 1477 +


4167 6741 4554
7716 11676 6253

Scăderea: 6473 – 5417 - 3614 -


2763 5145 1415
3510 252 2177

Înmulţirea: 543 4167 762


27 2503 45
4665 14545 4672
1306 251230 3710
17745 10356 43772
13105045
52

1.3.3. Elemente de aritmetică hexazecimală


Aritmetica se face după aceleaşi reguli care au fost expuse în cazul artimeticei octale.
Elementele de bază care o particularizează sunt adunarea, respectiv înmulţirea în baza
hexazecimală. În tabelele Tab.1.23 şi Tab.1.24 sunt prezentate regulile după care se fac
adunarea şi înmulţirea. Pe baza acestora vom exemplifica apoi operaţiile aritmetice.
Tabelul 1.23
+ 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 1 2 3 4 5 6 7 8 9 A B C D E F
1 1 2 3 4 5 6 7 8 9 A B C D E F 10
2 2 3 4 5 6 7 8 9 A B C D E F 10 11
3 3 4 5 6 7 8 9 A B C D E F 10 11 12
4 4 5 6 7 8 9 A B C D E F 10 11 12 13
5 5 6 7 8 9 A B C D E F 10 11 12 13 14
6 6 7 8 9 A B C D E F 10 11 12 13 14 15
7 7 8 9 A B C D E F 10 11 12 13 14 15 16
8 8 9 A B C D E F 10 11 12 13 14 15 16 17
9 9 A B C D E F 10 11 12 13 14 15 16 17 18
A A B C D E F 10 11 12 13 14 15 16 17 18 19
B B C D E F 10 11 12 13 14 15 16 17 18 19 1A
C C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B
D D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C
E E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D
F F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E
Tabelul 1.24
0 1 2 3 4 5 6 7 8 9 A B C D E F
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 A B C D E F
2 0 2 4 6 8 A C E 10 12 14 16 18 1A 1C 1E
3 0 3 6 9 C F 12 15 18 1B 1E 21 24 27 2A 2D
4 0 4 8 C 10 14 18 1C 20 24 28 2C 30 34 38 3C
5 0 5 A F 14 19 1E 23 28 2D 32 37 3C 41 46 4B
6 0 6 C 12 18 1E 24 2A 30 36 3C 42 48 4E 54 5A
7 0 7 E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69
8 0 8 10 18 20 28 30 38 40 48 50 58 60 68 70 78
9 0 9 12 1B 24 2D 36 3F 48 51 5A 63 6C 75 7E 87
A 0 A 14 1E 28 32 3C 46 50 5A 64 6E 78 82 8C 96
B 0 B 16 21 2C 37 42 4D 58 63 6E 79 84 8F 9A A5
C 0 C 18 24 30 3C 48 54 60 6C 78 84 90 9C A8 B4
D 0 D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3
E 0 E 1C 2A 38 46 54 62 70 7E 8C 9A A8 B6 C4 D2
F 0 F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3 D2 E1
53

Adunarea: 35FB + 59F + 2A58 +


445E E46 71D0
7A59 13E5 9C28

Scăderea: BF1A – 645F - D7A39 -


4A35 35ED C7816
74E5 2E5 2 10223

Înmulţirea: 1E4A 9C2A


FA2 71D0
03C94 4AE220
12EE4 5C2A
1C656 28526
1D980D4 28F96C20
54

CAPITOLUL II. ELEMENTE DE ALGEBRĂ BOOLEANĂ. FUNCŢII BINARE


ELEMENTARE. REPREZENTAREA FUNCŢIILOR BINARE ŞI TEHNICI DE
MINIMIZARE.

2.1. ELEMENTE DE ALGEBRĂ BOOLEANĂ

La mijlocul secolului XIX matematicianul englez Geoge Boole (1815-1864) a dezvoltat


în lucrarile „The Calculul of Logic” şi “An Investigation of the Laws of Thought on Which
are Founded the Mathematical Theories of Logic and Probabilities” o teorie matematică
ce-şi propunea să modeleze logica propoziţiilor bivalente folosind algebra de două
elemente. Ţinând seama că logica bivalentă, logica aristotelică, este un element
fundamental al culturii de tip european, se poate spune că opera matematică a lui George
Boole, a iniţiat procesul prin care filonul esenţial al modului de gândire european a reuşit
să fie expus prin formalismul matematic. Elementele algebrei binare, booleene, au fost
dezvoltate la nivel teoretic în secolul XIX de matematicienii A. De Morgan (1806-1871),
W. Stanlaz (1835-1862) şi Charles Pierce (1839-1914). Aplicaţiile practice au aparut abia
în secolul XX. Cel care are meritul de a fi intuit enormul potenţial pratic de analiză şi
sinteză al algebrei binare a fost inginerul şi matematicianul american Claude Shannon
(1916-2001), părintele teoriei informaţiei. Lucrarea sa de doctorat “A Symbolic Analysis
of Relay and Switching” din anul 1934 impune algebra binară ca principal instrument
teoretic de analiză a structurilor de comandă realizate cu relee. Alături de Shannon, W.V.
Quine (1908-2000) şi E.J. NcCluskey (1929-) au adus contribuţii importante în
impunerea şi dezvoltarea algebrei binare ca teorie a structurilor numerice de tip
combinaţionale şi de tip secvenţial.
Primele aplicaţii au folosit ca elemente de implementare releele electrice iar ca structură
elementară de memorie contactorul electric cu automenţinere. Apoi au fost dezvoltate
aplicaţii care foloseau circuite electronice realizate cu tuburi. Apariţia tranzistorului, dar
mai ales apariţia circuitelor integrate au dus la o adevarată explozie a tehnicilor numerice
şi la dezvoltarea exponenţială a comunicaţiilor numerice. Nu în ultimul rând trebuie
amintit aportul remarcabil adus de matematicianul român Grigore Moisil (1906-1973).
Moisil, dincolo de meritul de a introduce în România teoria algebrei binare a dezvoltat
această teorie prin ceea ce se numeşte astăzi algebre Lukasiewcz-Moisil (algebre
trivalente şi polivalente).

2.1.1. Axiomele şi proprietăţile algebrei booleene


Pentru o mai simplă redactare a axiomelor şi proprietăţilor algebrei binare (booleene),
notaţia specifică teoriei mulţimilor o vom înlocui cu notaţii de tip aritmetic. Astfel, pentru
operaţia de reuniune, notată prin simbolul , vom utiliza simbolul aritmetic corespunzator
55

adunării , iar pentru operaţia de intersecţie, în locul simbolului se va folosi simbolul


aritmetic corespunzător înmulţirii ∙. Pentru operaţia de negare se păstreaza simbolul .
În aceste condiţii, considerând o mulţime nevidă M şi cele două operaţii de reuniune şi
intersecţie (+şi ) se defineşte laticea L, tripleta formată de:
L ( M ,+, ∙ ) (2.1)

O latice are următoarele axiome:


-asociativitatea:

şi (2.2)

-comutativitatea:

şi (2.3)

-absorbţia:

şi (2.4)

Fără a dezvolta mai mult la acest moment, este util să subliniem faptul că axioma
absorbţiei este esenţială din puct de vedere practic, pe baza ei fiind construite toate
strategiile şi algoritmii de minimizare a circuitelor numerice de tip combinaţional.
În acelaşi timp trebuie subliniat faptul că expunerea celor trei axiome a folosit un numar
limitat de termeni, pentru a ajuta înţelegerea lor. Ele se pot însă extinde şi la situaţia unui
număr arbitrar dar funit de termeni.
Cele trei axiome permit enunţarea proprietăţii de idempotenţă:
-idempotenţa:

şi (2.5)
,
De asemenea se defineşte drept latice finită acea latice care conţine următoarele două
elemente:
-cea mai mare margine inferioară (element ultim al laticei), notat cu 0. care are
proprietăţile:

şi (2.6)
,
-cea mai mică margine superioară (element prim al laticei), notat cu 1, care are
proprietăţile:

şi (2.7)
,
56

În cadrul laticilor finite se defineşte conceptutul de complement (element complementar).


Complementul unui element este elementul . Definirea elementului
complementar se face prin principiul terţului exclus şi prin principiul contradicţiei:

-principiul terţului exclus:


(2.8)
-pricipiul contradicţiei:
(2.9)
Cele două principii modelează matematic celebra expresie din logica aristotelica
“tertium non datur”, care este acceptat ca fiind esenţa gândirii de tip ştiinţific din
cultura europeană.
Nu orice element al unei latici finite acceptă un complement. Dacă o latice finită acceptă
pentru fiecare element al său un complement unic, laticea se numeşte complementară.

-distributivitatea: o latice se numeşte distributivă dacă:


(2.10)

Expresia (2.10) defineşte distributivitatea reuniunii în raport cu intersecţia


şi:
(2.11)

Expresai (2.11) defineşte distributivitatea intersecţiei în raport cu reuniunea

În aceste condiţii putem defini o algebră binară (booleană) ca fiind o latice


complementară şi distributivă. Astfel, o algebra booleană este quadruplul de forma:
(2.12)
unde:
= este operaţia unitară de complementare
Pe baza axiomelor, proprietăţilor şi definiţiilor exprimate prin relaţiile (2.1)...(2.12), se
mai demonstrează următoarele proprietăţi, foarte importante în cadrul algebrei binare:

-principiul involuţiei (principiul dublei negaţii):


, (2.13)

-teoremele lui De Morgan:


, (2.14)
şi
, (2.15)

Principiul involuţiei dar mai ales teoremele lui De Morgan au o foarte mare importanţă în
rezolvarea problemelor algebrei booleene şi în teoria şi practica circuitelor binare
(numerice).
Putem acum să definim algebra Boole de două elemente, algebra binară ca fiind o
alogebră Boole, unde mulţimea M are numai două elemente, respectiv 1 şi 0.
57

Deşi din puct de vedere matematic matematic trebuie corect definită algebra Boole de
două elemente, deoarece există elaborate algebre boole de 3 ori de 5 elemente
(matematicianul român Moisil fiind cel ce a dezvoltat teoretic aceste tipuri de algebre),
din puct de vedere al aplicaţiilor practice, cum elementele fizice care au implementat
funcţiile astfel dezvoltate aveau doar două stări fizice posibile, s-a încetăţenit expresia
mai puţin exactă matematic de algebră booleană ca definind algebra Boole de două
elemente.
In Tab. 2.1. sunt prezentate sintetic toate axiomele şi proprietăţile algebrei Boole aplicate
operatorilor SI, SAU, NU aplicate funcţiilor de tip monovariabilă şi funcţiilor de tip
multivariabilă:

Tabelul 2.1.
Denumirea consacrată a axiomei Expresia algebrică
ori proprietăţii
Identitate
Element neutru (element nul)
Element absorbant
Idempotenţa
Complementaritatea
Involuţia (duba negaţie)
Comutativitatea
Asociativitatea

Distributivitatea

Absorţia tip 1

Absorţie tip 2

Consens tip 1

Consens tip 2
Teoremele lui De morgan

2.2. FUNCŢII BINARE. FUNCŢII BINARE ELEMENTARE. SISTEME


COMPLETE DE FUNCŢII BINARE.

Dacă se consideră un set de variabile binare , unde pot lua


doar valorile , atunci putem spune că se pot forma vectori de forma X=
58

, definiţi de setul de variabile binare. Se defineşte drept funcţie binară


aplicaţia care aplica mulţimea vectorilor posibili definiţi anterior în
multimea .
Dacă pentru oricare din cei vectori formaţi prin setul de variabile binare
, altfel spus, dacă pentru orice combinaţie posibilă a variabilelor de
intrare, funcţia binară are o valoare bine definită, 0 sau 1, atunci vorbim de funcţii binare
complet definite.
Dacă pentru una sau mai multe combinaţii ale variabilelor de intrare (unul sau mai mulţi
vectori formaţi din setul variabilelor binare) funcţia binară nu are o valoare determinată,
adică nu este în mod explicit egală cu 0 sau egală cu 1, atunci spunem că funcţia binară
este incomplet definită.

2.2.1. Funcţii binare elementare

Funcţiile binare elemntare se definesc pe mulţimea funcţiilor binare de două variabile. Cu


ajutorul lor se construiesc funcţiile binare complexe, respectiv circuitele numerice de tip
combinaţional. Din acest motiv setul de funcţii binare elemntare are o deosebită
importanţă practică. Considerând două funcţii binare de două variabile, a şi b, se definesc
funcţii binare elementare, care sunt prezentate în Tab.2.2 Variabilele binare s-
au notat cu a şi b pentru a mai utiliza indici care îngreunează urmărirea explicaţiilor.

Tabelul 2.2.
a b
0 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

Să urmărim pentru început modul de completare al Tab.2.1. respectiv modul de generare


a setului de funcţii binare elemntare. În prima coloană din stânga sunt trecute cele doua
variabile binare a şi b. Cele două variabile binare au =4 combinaţii posibile; 00, 01, 10,
şi 11. Conform celor patru perechi de valori ale variabilelor binare, rezultă că şi cele 16
funcţiile binare elementare de două variabile , , ... , au patru valori posibile de
ieşire. Aşa cum rezultă din Tab.2.1. setul de 16 funcţii binare elemntare de două variabile
sunt funcţii complet definite. De asemenea, dacă vom transpune în zecimal vectorul
ieşirii pentru fiecare din cele 16 funcţii elementare, citit de la valoarea corespunzătoare
combinaţiei variabilelor de intrare 11 către valoarea combinaţiei variabilelor de intrare
00, respectiv dacă scriem în zecimal numerele binare 0000, 0001, 0010, 0011, ..., 1110,
1111 va rezulta şirul de numere zecimale : 0,1, 2, 3,..., 14, 15. El reprezintă indicele
folosit pentru notarea funcţiilor elementare binare.
În plus, funcţiile binare elementare au semnificaţii logice foarte clare şi, mai important
decât aceasta, din punct de vedere al aplicaţiilor practice, ele procesează în anume mod
59

semnalele binare ale variabilelor de intrare obţinând rezultate tehnice foarte importatnte.
Din aceste motive vom analiza pe rând setul funcţiilor binare elementare. Ele sunt
grupate în funcţie de modul în care procesează semnalele de intrare, variabilele de intrare:

-funcţia se numeşte funcţia constantă 0, deoarece pentru orice combinaţie a


variabilelor a şi b are ieşirea mereu egală cu 0. În reprezentarea de tip tabelar a funcţiei
se poate observa mai clar acest lucru:

a b
0 0 0
0 1 0
1 0 0
1 1 0

-funcţia se numeşte funcţia constantă 1, deoarece pentru orice combinaţie a


variabilelor a şi b are ieşirea mereu egală cu 1. Reprezentarea de tip tabelar a funcţiei
este:

a b
0 0 1
0 1 1
1 0 1
1 1 1

-funcţia se numeşte funcţia identitate b, deoarece valoarea ei este identică cu valoarea


variabilei binare b. Reprezentarea tabelară este:

a b
0 0 0
0 1 1
1 0 0
1 1 1

-funcţia se numeşte funcţia identitate a, deoarece valoarea ei este identică cu valoarea


variabilei binare a. Reprezentarea tabelară este:
a b
0 0 0
0 1 0
1 0 1
1 1 1
60

-funcţia se numeşte funcţia identitate negată , deoarece valoarea ei este identică cu


valoarea variabilei binare a negată, sau este egală cu funcţia negată, adică
Reprezentarea tabelară este:

a b
0 0 1
0 1 1
1 0 0
1 1 0

-funcţia se numeşte funcţia identitate negată , deoarece valoarea ei este identică cu


valoarea variabilei binare b negată, sau este egală cu funcţia negată, adică
Reprezentarea tabelară este:

a b
0 0 1
0 1 0
1 0 1
1 1 0

Observaţie: primele şase funcţii prezentate au o particularitate comună. Ele nu depind de


toate cele doua variabile binare. Primele două funcţii nu depind de nici una, iar
următoarele patru funcţii depind doar de una din cele două variabile binare. Din aceste
motive ele se numesc funcţii degenerate de două variabile.

-funcţia se numeşte funcţia conjuncţie. Ea realizează produsul logic al celor două


variabile: . Din acest motiv se mai numeşte funcţia ŞI (funcţia OR, conform
notaţiei saxone). Din reprezentarea tabelară se extrage semnificaţia ei funcţională,
practică, respectiv faptul ca ieşirea, valoarea funcţiei, este 1 doar atunci când ambele
variabile sunt egale cu 1.

a b
0 0 0
0 1 0
1 0 0
1 1 1
61

-funcţia se numeşte funcţia conjuncţie. Ea realizează suma logică a celor două


variabile: . Din acest motiv se mai numeşte funcţia SAU (funcţia AND,
conform notaţiei saxone). Din reprezentarea tabelară se extrage semnificaţia ei
funcţională, practică, respectiv faptul ca ieşirea, valoarea funcţiei, este 1 doar atunci când
măcar una din variabilele de intrare este egală cu 1.

a b
0 0 0
0 1 1
1 0 1
1 1 1

-funcţia se numeşte funcţia lui Pierce (sau funcţia lui Webb). Ea realizează negarea
sumei logice a celor două variabile: . Notaţia specifică este . Aplicând
formulele lui De Morgan, din negarea sumei rezultă produsul logic al variabilelor negate:
. Din acest motiv se mai numeşte funcţia NICI sau SI-NU (funcţia NOR,
conform notaţiei saxone, din NOT OR). Din reprezentarea tabelară se extrage
semnificaţia ei funcţională, practică, respectiv faptul ca ieşirea, valoarea funcţiei, este 1
doar atunci când măcar una din variabilele de intrare nu este egală cu 1 (sau ambele
variabile de intrare sunt 0)

a b
0 0 1
0 1 0
1 0 0
1 1 0

-funcţia se numeşte funcţia lui Sheffer. Ea realizează negarea produsului logic a celor
două variabile: . Notaţia specifică este . Aplicând formulele lui De
Morgan, din negarea produsului rezultă suma logică a variabilelor negate: .
Din acest motiv se mai numeşte funcţia NUMAI sau SAU-NU (funcţia NAND, conform
notaţiei saxone, din NOT AND). Din reprezentarea tabelară se extrage semnificaţia ei
funcţională, practică, respectiv faptul ca ieşirea, valoarea funcţiei, este 0 doar atunci când
a b ambele variabile de intrare sunt 1.

0 0 1
0 1 1
1 0 1
1 1 0
62

Observaţie: funcţiile lui Sheffer şi a lui Pierce (funcţiile NUMAI, NICI) au o importanţă
specială în teoria circuitelor numerice, deoarece ele permit realizarea circuitelor numerice
modulare.
-funcţia se numeşte funcţia echivalenţă. Ea se notează şi poate fi scrisă
folosind funcţiile SI, SAU, NU în modul următor: . Din
reprezentarea tabelară se observă că sensul practic al ei, respectiv echivalenţa dintre a şi
b, semnalizează prin valoarea 1 situaţiile în care variabilele a şi b sunt egale.

a b
0 0 1
0 1 0
1 0 0
1 1 1

-funcţia se numeşte funcţia SUMA MODULO 2 (sau funcţia SAU EXCLUSIV). Ea se


scrie . Din analiza tabelului funcţiei şi din teoremele şi proprietăţile algebrei
binare anterior prezentate, funcţia se poate scrie în funcţie de funcţiile SI,SAU, NU în
felul următor : . În plus se observă că funcţia modulo 2 este egală cu
funcţie echivalenţă negată: . Semnificaţia matematică a funcţiei sau
exclusiv este că ea realizează operaţia aritmetică de adunare binară la nivel de bit.
Această observaţie este usor vizibilă din tabelul funcţiei iar funcţia este elementul de bază
în realizarea circuitelor numerice de tip sumator, care realizează implementarea adunării
binare.

a b
0 0 0
0 1 1
1 0 1
1 1 0
63

În următoarele 10 relaţii se prezintă principalele proprietăţi algebrice ale funcţei suma


modulo 2 (SAU exclusiv), respectiv posibilităţile de operare şi de transcriere folosind
operatorii SAU, SI, NU:

(2.16)

-funcţia se numeşte funcţia implicaţie, de tip implicaţia lui a în b. Se notează prin


simbolul şi se mai poate scrie . Tabelul ce o descrie este:

a b
0 0 1
0 1 1
1 0 0
1 1 1

-funcţia se numeşte funcţia implicaţie, de tip implicaţia lui b în a. Se notează prin


simbolul şi se mai poate scrie . Tabelul ce o descrie este:

a b
0 0 1
0 1 1
1 0 0
1 1 1

-funcţia se numeşte funcţia inhibare sau funcţie interdicţie, de tip a înhibă b. Se


notează prin simbolul şi se mai poate scrie . Sensul fizic care
generează o serie de aplicaţii practice este acela că semnalul a devenind actic, egal cu 1,
64

determină la ieşirea funcţiei valoarea 0, indiferent de valoarea variabilei binare b. Tabelul


ce o descrie este:

a b
0 0 0
0 1 1
1 0 0
1 1 0

-funcţia se numeşte funcţia inhibare sau funcţie interdicţie, de tip b înhibă a. Se


notează prin simbolul şi se mai poate scrie . Sensul fizic care
generează o serie de aplicaţii practice este acela că semnalul b devenind actic, egal cu 1,
determină la ieşirea funcţiei valoarea 0, indiferent de valoarea variabilei binare a. Tabelul
ce o descrie este:

a b
0 0 0
0 1 1
1 0 0
1 1 0

Cele 16 funcţii binare elementare prezentate sunt importante din punct de vedere practic
şi datorită proprietăţii de decompoziţie a funcţiilor binare, respectiv de faptul că o funcţie
binară oarecare, un circuit numeric de tip combinaţional, poate fi realizat cu un anumit set
de funcţii binare elemntare sau de circuite numerice de tip funcţie elementară.
De asemenea proprietatea de seperpoziţie a funciilor binare arată că o funcţie binară
poate fi obţinută prin compunerea, superpoziţia mai multor funcţii binare elementare.
Chiar în setul celor 16 funcţii elemntare există situsţii cind o funcţie este obţinută prin
superpoziţia funcţiilor de tip SAU, SI, NU. . Prin această proprietate este posibilă sinteza
circuitelor numerice. De exemplu funcţiile inhibare , funcţia lui Pierce, funcţia lui
Shannon sau funcţia suma modulo2.

2.2.2. Sisteme complete şi minime de funcţii binare


Aşa cum am încheiat paragraful anterior, funcţiile binare se pot forma prin superpoziţia
funcţiilor binare elementare. În mod evident atât din considerente matematice dar şi din
considerente tehnico-economice se pune problema de a detrmina un sistem de funcţii
binare care să poată reprezenta orice funcţie binară, oricât de complexă. Un astfel de
sistem de funcţii, ca şi în alte capitole de matematică, se numeşte un sistem complet de
funcţii.
Dacă în plus, acest sistem este şi minimal, adică este format din numărul minim posibil
de funcţii elentare, atunci el se numeste minim, bază minimă. Dintr-un sistem minim, dcă
se elimină o singură funcţie ce aparţine sistemului, el nu mai este complet.
65

Pentru funcţiile binare, sunt valabile următoarele teoreme privind sistemele complete
minime de funcţii:
-Sistemul format din funcţiile conjuncţie SAU şi negaţie NU ( )este un sistem
minim.
-Sistemul format din funcţiile disjuncţie SI şi negaţie NU ( )este un sistem
minim.
-Sistemul format din funcţia Sheffer ( ) este un sistem minim.
-Sistemul format din funcţia Pierce ( ) este un sistem minim.

2.3. REPREZENTAREA FUNCŢIILOR BINARE

Multitudinea de posibilităţi de reprezentare a funcţiilor binare poate fi grupată în două


mari familii: reprezentări de tip grafic şi repretări de tip analitic (algebric). Cele mai
cunoscute şi folosite reprezentări grafice sunt: tabelul de adevăr, diagramele Karnaugh,
logigramele, diagramele de tipm şi grafurile. Din grupa reprezentărilo anlitice amintim
reprezentările anlitice, forma canonică disjunctivă, forma canonica conjunctivă, simbolul
de marcare D, termeni T.
Reprezentările grafice sunt mai intuitive, mai clare din punct de vedere al valorilor pe
care le au variabilele ori ieşirile funcţiilor dar ele îşi postrează acestte atribute doar în
cazul funcţiilor binare cu un număr redus de variabile (de obicei 3-4 variabile).
Reprezentările analitice permit scrieri mai comprimate pentru funcţiile binare cu un mai
mare numărt de variabile (în special simbolul de marcare D) şi procesarea de tip
matematic pe baza axiomelor, teoremelor şi proprietăţilor algebrei Boole enunţate
anterior.

2.3.1. Reprezentarea prin tabel de adevăr

Tabelele de adevăr (tabele conbinaţionale) reprezintă forma completă de reprezentare a


funcţiilor binare, cea mai intuitivă. Ea se bazează pe modul de reprezentare de tip tabelar
al funcţiilor binare şi se construieşte în felul următor:
-în partea stângă tabelul de adevăr conţine un număr de coloane egal cu numărul
variabilelor funcţiei binare
-în partea dreaptă tabelul conţine coloana valorilor funcţiei
În cazul în care tabelul de adevăr este folosit pentru descrierea circuitelor de tip
combinaţional cu mai multe ieşiri, el poate fi construit cu un număr de coloane în partea
dreaptă egal cu numărul variabilelor de ieşire.
Informaţia pe care ne-o prezintă tabelul de adevar este şi extrem de uşor de urmărit, în
sensul că este simplu de corelat satul de valori pe care le iau variabilele de intrare cu
valoarea corespunzătoare a ieşirii, respectiv valoarea funcţiei binare. Elementul de
dificultate îl reprezintă consumul de timp necesar completării tabelului de adevăr.
Putem considera astfel că tabelul de adevar este un model matematic al unei probleme de
tip numeric combinaţional. Din acest motiv trebuie să subliniem importanţa etapei de
construcţie, completare a tabelului de adevăr. Dacă la acest nivel se produc erori, ele vor
influenţa decisiv rezolvarea problemei, deoarece se vor propaga în toată analiza ori
proiectarea circuitului numeric ce are ca punct de start tabelşul de adevăr. Adică tabelul
de adevaăr va conţine o informaţie ce nu caracterizează, nu modelează corect problema
66

reală. Iar soluţia finală obţinută nu este soluţia problemei pe care am dorit s-o rezolvăm ci
soluţia unei alte probleme, poate apropiată dar evident diferită de ceea ce ne-am propus..
Dacă se consideră o funcţie binară de 4 variabile a,b,c,d putem să o imaginăm ca o
structură bloc prezentată în Fig. 2.1. S-au prezentat variabilele de intrare a,b,c,d iar blocul
ce urmează este funcţia considerată, ce poate avea diverse conţinuturi, moduri de
prelucrare a semnalelor provenite de la variabilele de intrare. Ieţirea acestui sistem este
chair valoarea funcţiei considerate.
Pentru o funcţie binară de 4 variabile se obţin combinaţii ale acestora.
Tabelul de adevăr o sa aibe astfel 16 linii care conţin toate aceste combinaţii posibile.
Deoarece în acest caz nu analizăm un exeplu concret, completarea tabelului de adevăr se
face arbitrar. Dacă ar fi fost vorba de modelarea unui proces tehnic, a unui circuit
numeric de tip combinaţional, atunci completarea tabelului de adevăt trebuia facută în
conformitate cu funcţia circuitului. În acealşi timp, aşa cum am amintit anterior, dacă
pentru toate combinaţiile variabilelor de intrare funcţia are valori bine definite, este vorba
de o funcţie complet definită, aşa cum este cazul tabelului de adevăr din Fig.2.2. În
Fig.2.3. a fost reprezentat tabelul de adevăr al unei funcţii incomplet definite, unde pentru
anumite combinaţii ale variabilelor de intrare, valoarea funcţiei nu este ferm definită, ea
putând să ia fie valoarea 0, fie valoarea 1. Aceste situaţii sunt reprezentate în tabel prin
semnul grafic *.

b
F(a,b,c,d)
c

Figura 2.1. Structura bloc a unei funcţii binare de 4 variabile.

a b c d F(abcd) a b c d F(abcd)

0 0 0 0 0 0 0 0 0 0
0 0 0 1 1 0 0 0 1 1
0 0 1 0 1 0 0 1 0 *
0 0 1 1 0 0 0 1 1 *
0 1 0 0 1 0 1 0 0 1
0 1 0 1 1 0 1 0 1 *
0 1 1 0 1 0 1 1 0 1
0 1 1 1 0 0 1 1 1 *
1 0 0 0 1 1 0 0 0 1
1 0 0 1 0 1 0 0 1 0
1 0 1 0 1 1 0 1 0 1
1 0 1 1 0 1 0 1 1 *
1 1 0 0 1 1 1 0 0 *
1 1 0 1 1 1 1 0 1 *
1 1 1 0 0 1 1 1 0 0
1 1 1 1 1 1 1 1 1 *
67

Figura 2.2. Tabel de adevăr pentru o Figura 2.3. Tabel de adevăr pentru o
funcţie complet definită funcţie incomplet definită

2.3.2. Reprezentarea prin diagrame de tip Veitch

Diagramale Veitch sunt forme de reprezentare tabelară a unei funcţii binare. Numărul de
câmpuri ale acestei reprezentări este egal cu numărul maxim posibil al combinaţiilor
variabilelor de intrare: pentru o funcţie de 3 variabile sunt necesare = 8 câmpuri, pentru
o funcţie de 4 variabile sunt necesare = 16 şamd. În cadrul diagramei câmpurile se
grupează sub forma de dreptunghi, dacă numărul lor este diferit de un pătrat perfect
(cazul funcţiei de 3 variabile) sau sub formă grafică de pătrat dacă numărul lor este egal
cu un patrat perfect (cazul funcţiei de 4 variabile).
Aranjarea valorilor funcţiei în cadrul câmpurilor diagramei este foarte simplă deoarece se
foloseşte o ordonare zecimală a câmpurilor, corespunzătoare valorii exprimate zecimal a
combinaţiilor variabilelor de intrare.
Pentru exeplificare să considerăm tabelul de adevăr al funcţei de 3 variabile F(a,b,c) unde
funcţia reprezintă suma modulo2 a celor 3 variabile şi are expresia algebrică:

De această dată completarea tabelului de adevăr trebuie să respecte semnificaţia funcţiei.


Corespunzător tabelului de adevăr şi pe baza sa se trece la construcţia si completarea
diagramei Veitch.
În Fig. 2.4. se prezintă atât tabelul de adevăr al funcţei F cât şi diagrama Veitch
corespunzătoare, unde, dincolo de valorile funcţiei, în câmpurile diagramei au fost trecute
şi numerele de ordine specifice. Pentru a fi mai sugestiv, tabelul de adevăr a fost
suplimentat cu o coloană în partea dreaptă unde s-au trecut valorile zecimale ale
combinaţiilor variabilelor de intrare.
După cum se poate uşor observa din exemplul din Fig. 2.4. diagrama Veitch este simplu
de completat. Ea asigura o prezentare mai compactă a informaţiei privind funcţia binară
dar această concentrare duce la diminuarea clarităţii informaţiei, în sensul în care nu mai
este o corespundenţa simplă, directă între combinaţia variabilelor de intrare şi valoarea
funcţiei. Aceasta va fi o observaţie permanentă în ceea ce priveşte reprezentarea
funcţiilor binare: creşterea gradului de compactizare a scrierii conduce la reducerea
simplităţii de citire a funcţiei.
În plus, diagrama Veitch nu poate fi folosită ăn tehnicile de minimizare a funcţiilor
binare.
68

a b c F Z

0 0 0 0 0
0 0 1 1 1
0 1 0 1 2
0 1 1 0 3
1 0 0 1 4
1 0 1 0 5
1 1 0 0 6
1 1 1 1 7

Figura 2.4. Modul de completare a diagramei Veitch.

2.3.3. Reprezentarea prin diagrame de tip Karnaugh

Diagrama Karnaugh este cea mai folosită formă de scriere tabelară a funcţiilor binare.
Marele său avantaj este fapul ca ea reprezintă esenţa unui algoritm de minimizare a
funcţiilor binare. Acest fapt este posibil prin faptul ca la completarea câmpurilor
diagramei Karnaugh este folosit codul Gray.
În esenţă, diagrama Karnaugh oferă un mod de reprezentare similar diagramei Veitch,
respectiv valorile funcţii binare sunt copiate în câmpurile diagramei. Numărul câmpurilor
este evident egal cu numărul de linii din tabelul de adevăr al funcţiei, respectiv cu
numărul combinaţiilor posibile ale variabilelor de intrare. Există astfel diagrame de 4, 8,
16, 32 ... câmpuri care corespund funcţiilor de 2, 3, 4, 5, ... variabile. Numai că modul de
completare a câmpurilor diagramei se particularizează la diagrama Karnaugh prin
folosirea codului Gray. Codul Gray oferă proprietatea pe baza căreia se dezvoltă apoi
algoritmul de minimizare: câmpurile adiacente, vecine, ale diagramei sunt ocupate de
valori ale funcţiei ce provin din combinaţii ale variabilelor de intrare care diferă printr-o
singură variabilă şi pot fi astfel aduse la forme mai simple. Prin câmpuri vecine înţelegem
două câmpuri care au o latură comună sau câmpuri aflate pe graniţa diagramei, respectiv
pe liniile de sus sau de jos dar pe aceeaşi coloană ori pe coloanele extreme din dreapta şi
stânga dar pe aceeaşi linie.
De exemplu dacă pentru două câmpuri adiacente corespund variabilele de intrare de
forma: şi , atunci se poate scrie:

+ =
Aceasta înseamnă că din 2 termeni de 3 variabile am obţinut o formă mai simplă, un
termen cu 2 variabile iar cele două forme sunt echivalente, adică informaţia binară se
prelucrează identic prin cele două expresii.
Să urmărim acum modul de completare a diagramelor Karnaugh, folosind aceeaşi notaţie
a câmpurilor, respectiv valoarea zecimală a combinaţiei variabilelor de intrare pentru care
a fost considerată valoarea funcţiei.

În Fig. 2.5. sunt prezentate diagramele Karnaugh pentru funcţii de 2 şi de 3 variabile. La


acest nivel se poate observa mai clar modul de completare al diagramei cu valorile
funcţiei. Se observă ca diagrama trebuie să prezinte obligatoriu modul în care au fost
69

considerate variabilele a,b,c. De exemplu pentru diagrama de 3 variabile, a şi b se


consideră pe coloane iar c pe linii. Conform acestei convenţii, diagrama se completează
conform valorilor zecimale scrise în fiecare câmp. Valoarea zecimală corespunde liniei
din tabelul de adevar, respectiv valorii zecimale a combinaţiei variabilelor de intrare de
pe linia considerată. Din acest motiv completarea diagramei Karnaugh pornind de la
tabelul de adevăr este o operaţie destul de cronofagă. Evident, nu este nevoie sa învaţam
pe de rost valorile binare ale câmpurilor. Completarea diagramei se face considerind
combinaţia variabilelor de intrare, respectiv şirul de biţi corespunzători variabilelor ai
unei linii din tabelul de adevăr, şir ce ne precizează câmpul diagramei iar apoi în câmpul
astfel determinat se trece valoarea funcţiei pentru combinaţia considerată a variabilelor de
intrare. Datorită folosirii codului Gray (vezi modul ăn care cresc de la stânga la dreapta
valorile lui ab), completarea diagramei nu se face parcurgând uniform tabelul de adevăr.

Figura 2.5. Completarea diagramelor Karnaugh pentru funcţii de 2 şi 3 variabile.

În Fig. 2.5. este redată diagrama Karnaugh pentru funcţia de 4 variabile a,b,c,d. Ele au
fost grupate astfel:
-pereche de variabile a,b marchează coloanele diagramei
-pereche de variabile c,d marchează liniile diagramei
Corespunzător acestei convenţii de grupare a variabilelor, valorile câmpurilor diagramei
Karnaugh pentru funcţiile de 4 variabile sunt notate în figură. Modul de completare a
diagramei pornind de la tabelul de adevăr este similar cazului anterior.
70

Figura 2.6. Completarea diagramelor Karnaugh pentru funcţii 4 variabile.

Deoarece modul de grupare a variabilelor pe linii şi coloane este arbitrar, este posibil să
exite situaţii conform celor prezentate în Fig. 2.7. unde diagrama funcţei de 3 variabile
foloseşte perechea c,d pentru notarea liniilor iar variabila a pentru notarea coloanelor,
respectiv la funcţiile de 4 variabile, perechea a,b pentruu linii şi perechea c,d pentru
coloane.
Este simplu de constatat practic (comparând Fig.2.5. 2.6. şi 2.7.) că modificarea
convenţiei de folosirea variabilelor pentru coloane şi linii duce la schimbarea valorilor
numerice ale câmpurilor diagramelor.

Figura 2.7. Modificarea câmpurilor diagramelor Karnaugh în cazul schimbării convenţiei


de notare a liniilor şi coloanelor.

Să urmărim acum modul practic de completare a unei diagrame Karnaugh pernind de la


tabelul de adevăr al unei funcţii binare de 4 variabile. Considerăm cunoscută funcţia
F(abcd) dată prin tabelul de adevăr din Fig. 2.8. Completarea diagramei Karnaugh se face
la nivelul fiecărui câmp. Pentru aceasta se formează setul de valori binare a variabilelor
abcd prin perechile ab respectiv cd , respectiv identificând câmpul diagramei prin
intersecţia coloanei determinată de ab cu linia determinată de cd. Astfel pentru secvenţa
71

variabilelor de intrare 0111 se urmăreşte intersecţia coloanei 2 pentru care valorile


variabelor ab sunt mereu 01 cu linia a treia pentru care valorile variabelor cd sunt mereu
11. La câmpul astfel determinat se trece valoarea funcţiei pentru setul 0111, respectiv
valoarea 0, aşa cum este ea dată de tabelul de adevăr. Metoda descrisă se repetă pentru
toate cele 16 câmpuri ale diagramei. În cazul în care funcţia binară are valori nedefinite,
ele se trec ca atare în tabelul de adevăr în câmpul corespunzător:

a b c d F
ab
0 0 0 0 0 00 01 11 10
0 0 0 1 1 cd 0 1 0 1
0 0 1 0 1 00
0 0 1 1 0 1 1 0 1
0 1 0 0 1 01
0 1 0 1 1 0 0 1 *
0 1 1 0 * 11
0 1 1 1 0 1 * 1 1
1 0 0 0 1 10
1 0 0 1 1
1 0 1 0 1
1 0 1 1 *
1 1 0 0 0
1 1 0 1 0
1 1 1 0 1 Figura 2.8. Completarea diagramelor Karnaugh pornind
1 1 1 1 1 de la tabelul de adevăr.

Metoda de completare descrisă este destul de laborioasă. Din acest motiv propun un
algoritm mai simplu de completare a diagramei Karnaugh pentru funcţii binare de 4
variabile. Algoritmul nu se poate regăsi în monografiile ori cursurile de electronică
numerică, el fiind o contribuţie originală a autorului.
Algoritmul de completare a diagramei se numeşte intuitiv “algoritmul ” are
următorii paşi:
-cele 16 valori ale funcţiei binare se grupează câte 4
-prima grupă astfel formată se trece pe prima coloană a diagramei, cu observaţia
că a treia valoare se trece pe poziţia a patra a coloanei diagramei iar a patra
valoare a grupei se trece pe poziţia a treia a coloanei diagramei (de unde si
denumirea de algoritmul )
-grupa a doua a tabelului de adevăr completează coloana a doua a diagramei în
modul descris anterior
-grupa a treia a tabelului de adevăr completează coloana a patra a diagramei
iar la nivelul elementelor se respectă
-grupa a patra a tabelului de adevăr completează coloana a treia a diagramei
iar la nivelul elementelor se respectă
Se poate vedea că algoritmul propus este mult mai rapid: în loc să lucăm la nivel de câmp
şi de linie, lucrăm cu grupe de 4 câmpuri (la nivel de coloană).
72

Anterior am amintit ca diagramele Karnaugh sunt operaţionale pentru funcşii de


amximum 4 variabile. Pentru funcţii cu număr mai mare de variabile reprezentarea
tabelara de tip Karnaugh devine dificilă: la funcţii de 5 variabile se completează 2
diagrame de 16 câmpuri iar pentru reprezentarea funcţiilor de 6 variabile sunt necesare 4
diagrame de 16 câmpuri fiecare (Fig.2.9 a,b).

(a)

(b)
Figura 2.9. Completarea diagramelor Karnaugh pentru funcţii de 5 respectiv 6 variabile

2.3.4. Reprezentarea prin logigrame


73

Logigramele sunt semne grafice care reprezintă cele mai importante funcţii binare. Ele
sunt folosite în cadrul schemelor numerice combinaţionale ori secvenţiale şi permit
eleborarea de structuri numerice complexe pe baza uneu set relativ redus de simboluri.
Prin modul grafic ales este foarte simplu să urmărim traseul informaţiei, semnalelor,de la
intrare către ieşire, în cadrul circuitelor numerice. În plus logigramele mai sunt folosite în
cadrul softurilor dedicate automatelor programabile (PLC). Convenţiile grafice specifice
logigramelor funcţiilor binare au fost adoptate pentru a descrie instrucţiunile de tip logic
ale unor automate programabile, tocmai datorită clarităţii de exprimare.
Cele mai importante logigrame sunt pentru funcţii binare de două variabile (cu două
intrări) sunt următoarele :
-funcţia binară SI: -funcţia binară SI-NU

-funcţia binară SAU: -funcţia binară SAU-NU

-funcţia binară SAU EXCLUSIV -funcţia binară SAU EXCLUSIV NEGAT

-funcţia binară NU

-funcţia binară SAU cu intraări negate -funcţia SI cu intrări negate

Pentru funcţii binare cu mai multe variabile logigramele îşi păstrează semnul grafic doar
că în partea stângă numărul intrărilor este mai mare.

2.3.5. Reprezentarea prin diagrame de timp


74

Diagramele de timp sunt reprezentări grafice prin care se urmăreşte evoluţia semnalelor
în cadrul şi la ieşirea circuitelor numerice în funcţie de parametru timp. Ele sunt foarte
utile în înţelegerea funcţionării şi controlul funcţionării corecte a circuitelor numerice.
Prin diagramele de timp se observă funcţionarea reală a circuitelor numerice şi mai ales a
circuitelor numerice secvenţiale unde variabila timp este determinantă în eveoluţia
circuitului. De asemenea ele permit semnalizarea fenomenelor de hazard static ori
dinamic, fenomene datorate timpilor de întârziere, de comutaţie specifici fiecărui tip de
circuit numeric. Cataloagele de circuite numerice conţin pentru fiecare tip de circuit
diagramele de timp care redau mai sugestiv funcţionarea acestora.
Există două tipuri de diagrame de timp:
-ideale: unde nu se consideră timpii de întârziere iar comutaţiile din starea 0 (low)
în starea 1 (high) se realizează instantaneu
-reale: când se consideră timpii de întârziere
În Fig. 2.10. este redată o diagramă reală pentru un circuit de tip negaţie NU. Se poate
vedea cum trecerea de la nivelul jos de tensiune la nivelul ridicat de tensiune nu se face
instantaneu ci necesită un anumit timp.

Figura 2.10. Diagrame de timp de tip real

Pentru urmărirea şi analiza funcţionării circuitelor sunt mai utile diagramele de timp
ideale. Să considerăm circuitul numeric reprezentat de logigrama din Fig. 2.11.(a) unde
s-au notat cu a,b variabilele de intrare iar cu y ieşirea circuitului. În Fig. 2.11 (b) este
redată diagrama de timp unde s-au reprezentat evoluţia asemnalelor atât pentru
variabilele de intrare cât şi pentru ieşirea circuitului:

(a)
75

(b)
Figura 2.11. Logigramă şi diagramă de timp de tip ideal

În Fig. 2.12. (a) este prezentat un caz mai complex, respectiv logigrama circuitului
numeric ce realizează conversia cuvintelor de 4 biţi din BCD în Excess 3. Variabilele de
intrare a,b,c,d reprezintă cuvântul binat pe 4 biţi codificat BCD iar variabilele w,x,y,z sunt
codificarea în Excess 3 a cuvintelor BCD care alimentează intrarea circuitului de
conversie. În Fig. 2.12 (b) este diagrama de timp ideală ce descrie funcţionarea
circuitului de conversie.

(a)
76

(b)
Figura 2.12. Logigrama şi diagrama de timp a circuitului codificator BCD-Excess3

2.3.6. Reprezentarea analitică de tip FCD şi FCC

Reprezentările de tip analitic ale funcţiile binare se bazează pe o teoremă din algebra
Boole care afirmă că orice funcţie binară exprimată prin tabel de adevăr poate fi scrisă şi
sub formă analitică.
Imaginea caracteristică a unei funcţii binare F cu n intrări este formată din cele valori
ale funcţiei ordonate după ordinea binară naturală (crescătoare).
Astfel, dacă se consideră funcţia binară F(abc) având două ieşiri X,Y definită prin tabelul
de adevăr:
a b c x Y
În aceste condiţii:
0 0 0 0 0 -imaginea caracteristică a ieşirii X este
0 0 1 1 0 - imaginea caracteristică a ieşirii Y este
0 1 0 1 0
Se constată ca întreaga informaţie din tabelul de adevăr este
0 1 1 0 1
conţinută în imaginea caracteristică a funcţiei respective. Prin
1 0 0 1 0
convenţia de reprezentare, şirul de biţi ai imaginii caracteristice
1 0 1 0 1
reprezintă toate valorile pe care le ia funcţia considerând toate
1 1 0 0 1 combinaţiile posibile ale variabilelor de intrare în ordine
1 1 1 1 1 crescătoare. În cazul descris, combinaţiile se consideră de la 000,
001...până la ultima combinaţie 111.
Pentru definirea formelor canonice este nevoie să se introducă noţiunile de minitemeni şi
de maxitermeni.
Minitermenii se pot defini intuitiv folosind diagramele Venn de reprezentare a
mulţimilor. Considerăm două mulţimi A şi B, prezentate în Fig. 2.13. Cu cele 2 mulţimi
astfel definite se pot construi regiuni folosind funcţia logică SI:
77

-aria comună celor două mulţimi (dată de intersecţia lor AB)


-aria lui B care exclude pe A (se scrie )
-aria lui A care exclude pe B (se scrie )
-aria exterioară celor două mulţimi (se scrie )
Cei patru termeni descrişi , , , se numesc minitermeni (termeni
canonici disjunctivi).

Figura 2.13. Diagrama Venn pentru definirea minitermenilor.

Pentru o funcţie cu n variabile se definesc minitermeni notaţi cu unde indicele i


reprezintă echivalentul zecimal al numărului binar ce defineşte minitermenul.
Considerând o funcţie de 3 variabile, setul de minitermeni este dat în Fig.2.14. Se poate
vedea ca termenii au valori a indicelui corespunzătoare valorilor zecimale ale
combinaţiilor variabilelor de intrare.

a b c minitermen

0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

Figura 2.14 Setul de minitermeni pentru o funcţie de 3 variabile.

În mod analog, cu ajutorul funcţiei logice SAU se definesc maxitermenii (termenii


canonici conjunctivi). Alegând tot o funcţie logică de 3 variabile, în Fig.2.15. se prezintă
cei maxitermeni posibili precum şi notarea lor comprimată de tip . Indicele
are acceaşi semnificaţie cu cea descrisă pentru cazul minitermenilor.

a b c maxitermen
78

0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

Figura 2.15 Setul de maxitermeni pentru o funcţie de 3 variabile.

Reprezentarea unei funcţii binare folosind minitermeni se numeşte formă canonică


disjunctivă (FCD). Forma canonică disjunctivă mai este cunoscută şi sub denumirea
intuitivă de sumă de produse.
Algoritmul de obţinere a FCD pornind de la tabelul de adevăr al unei funcţii binare este
următorul:
-se identifică în tabelul de adevăr toate combinaţiile variabilelor de intrare care
aplică funcţia în 1
-pentru toate aceste combinaţii se scriu minitermenii corespunzători (termenii
canonici disjunctivi). Minitermenii au forma algebrică de produs
-minitermenii astfel obţinuţi se reunesc într-o expresie algebrică folosind operaţia
de reuniune. Din acest motiv modul de scriere FCD se numeşte sumă de
produse.
-minitermeni folosesc logica pozitivă adică la scrierea lor variabila se ia ca atare
dacă în combinaţia considerată dacă bitul corespunzător variabilei este 1 iar dacă
variabilei îi corespunde bitul 0 atunci ea se consideră negată în cadrul
minitermenului.
Reprezentarea unei funcţii binare folosind maxitermeni se numeşte formă canonică
conjunctivă (FCC). Forma canonică conjunctivă mai este cunoscută şi sub denumirea
intuitivă de produs de sume.
Algoritmul de obţinere a FCC pornind de la tabelul de adevăr al unei funcţii binare este
următorul:
-se identifică în tabelul de adevăr toate combinaţiile variabilelor de intrare care
aplică funcţia în 0
-pentru toate aceste combinaţii se scriu maxitermenii corespunzători (termenii
canonici conjunctivi). Maxitermenii au forma algebrică de sumă.
-maxitermenii astfel obţinuţi se reunesc într-o expresie algebrică folosind operaţia
de intersecţie. Din acest motiv modul de scriere FCC se numeşte produs de sume.
-maxitermeni folosesc logica negatică adică la scrierea lor variabila se ia ca atare
dacă în combinaţia considerată dacă bitul corespunzător variabilei este 0 iar dacă
variabilei îi corespunde bitul 1 atunci ea se consideră negată în cadrul
maxitermenului
Vom exemplifica algoritmii de obţinere a formelor canonice FCD şi FCC folosind
următoarea funcţie cu 3 variabile de intrare şi două ieşiri, dată prin tabelul de adevăr.
79

Pentru a fi mai clar am adăugat patru coloane suplimentare, cea a minitermenilor, cea a
maxitermenilor precum şi cele două ale indicilor acestora (Fig.2.16).
a b c X Y minitermen maxitermen

0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1

Figura 2.16 Maxitermenii si minitermenii unei funcţii de 3 variabile

FCD pentru funcţia X este:


+ +
FCD pentru funcţia Y este:
+ + +
FCC pentru funcţia X este:
( )( )( )( )
FCC pentru funcţia Y este:
( )( )( )( )
Pentru o scriere mai comprimată se pot folosi indicii termenilor canonici:
+ + +
+ + +
sau

Pentru reprezentarea funcţiilor binare se recomandă în literatura de specialitate să se


aleagă acea formă care optimizează scrierea, respectiv care are o expresie mai economică.
Amintim acum ca fiecare termen al expresiilor canonice este implementate prin circuite
numerice, porţi logice, aşadar vom obţine un consum mai mic de componemte, o
fiabilitate sporită şi un consum de energie mai mic dacă se folosesc la implementarea
funcţiei binare un număr cât mai mic de circuite integrate.
Optimizarea implementării la nivelul alegerii formei canonice optimale, economice
implică etapele:
-se numără valorile de 0 şi 1 pe care funcţia binară le prezintă în tabelul de adevăr
-dacă numărul valorilor de 1 este mai mic se alege reprezentarea de tip FCD
-dacă numărul valorilor de 0 este mai mic se alege reprezentarea FCC
Deşi aceasta este recomandarea clasică din literatura de specialitate, experienţa de
proiectare a autorului şi discuţiile cu inginerii care foloseau circuite numerice determină
80

următoarea recomandare: pentru circuite de complexitate mică şi medie sau pentru


circuite unicat ori în serie redusă, este recomandabil să se folosească la nivelul proiectării
forma FCD. Încă din gimnaziu suntem obişnuţi cu forme de algebrice de tip sumă de
produse. Marea majoritate a exerciţiilor ori a problemelor au această formă. Din acest
motiv forma FCD ne este mult mai familiară. Se reduce astfel atât timpul de proiectare
cât şi probabilitatea erorilor la acest nivel. Mai mult decât atât, forma FCD este scrisă pe
logică pozitivă iar forma FCC foloseşte logica negativă iar toată activitatea noastră
foloseşte într-un procent covârşitor logica pozitivă.

2.3.7. Reprezentarea analitică prin simbol de marcare. Simbolul de marcare D.

Simbolul de marcare este un mod analitic de exprimare a funcţiilor bionare. El oferă cea
mai compactă formă de scriere a acestora. Din acest motiv se recomandă atunci când este
vorba de lucrul cu funcţii binare care au mai mult de 4 variabile.
Ca toate formele analitice de exprimare, câştigul obţinut pe partea de compactizare a
scrierii şi manipulării funcţiilor binare este însoţit de reducerea transparenţei funcţiei
binare, din puct de vedere al înţelegerii funcţionării structurii numerice modelate.
Pentru a obţine reprezentarea prin simbol de marcare se porneşte de la tabelul de adevăr
al funcţiei. Fiind o formulare de tip analitic şi la nivelul simbolului de marcare pot exista
cele două tipuri: cel derivat din FCD şi cel derivat din FCC.
Elementul care particularizează acestă reprezentare numărul de ordine scris în octal.
Numărul de ordine în primă variantă este scris în binar şi se obţine prin alipirea codarii
binare a termenilor canonici. Deoarece scrierea binară este dificilă s-a ales codarea în
octal a termenilor canonici. În plus, vom vedea în cadrul tehnicilor te minimizare că
sistemul octal, la fel ca şi codul Graz, are o serie de proprietăţi prin care se faciliteză
gruparea termenilor adiacenţi. Deşi simbolul de marcare se poate aplica pentru FCD şi
FCC, din cauza facilităţilor de lusru ulterioare vom preyenta doar varianta dedusă din
FCD, respectiv simbolul de marcare D.
Algoritmul de obţinere a reprezentării prin simbol de marcare D este următorul:
-se porneşte de la reprezentarea funcţiei binare prin tabel de adevăr
-deşi în literatura de specialitate nu se întineşte această etapă, vom introduce
o mică modificare a tabelului de adevăr, respectiv se introduce o coloană
suplimentara de codificare octală. Această contribuţie originală uşurează foarte
mult determinarea reprezebtării. Coloana octală afaşată este completată simplu,
crescător, de la valoarea 0, de forma: 0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15,
16, 17, 20, 21, 22, ....
-conform modelului de la FCD, se marchează valorile de 1 ale funcţiei
-simbolul de conţine variabilele funcţiei binare precum şi codificarea octală a
combinaţiilor variabilelor care aplică funcţia în 1. Din acest motiv este nevoie de
colona octală. Se citeşte simplu valoarea octală de pe această coloană din dreptul
valorilor de 1 ale funcţiei.
Să considerăm acum funcţia binară de 4 variabile dată de tabelul de adevăr:
81

a b c d F Octal G

0 0 0 0 0 0 0 Tabelul de adevăr conţine inserată şi


0 0 0 1 1 1 1 coloana notaţiilor octale, conform
0 0 1 0 1 2 * algoritmului.
0 0 1 1 0 3 *
0 1 0 0 1 4 0 Termenii care aplică funcţia în 1 sunt
0 1 0 1 1 5 1 codaţi octal: 1,2,4,5,6,10,11,12,13,17,17
0 1 1 0 1 6 1
0 1 1 1 0 7 * Simbolul de marcare D pentru funcţia
1 0 0 0 1 10 0 binară este:
1 0 0 1 1 11 *
1 0 1 0 1 12 1
1 0 1 1 1 13 1
1 1 0 0 0 14 0 Se poate vedea practiv utilitatea coloanei
1 1 0 1 0 15 0 suplimentare octale. Pentru funcţiile
1 1 1 0 1 16 1 incomplet definite, se respectă aceeaşi
1 1 1 1 1 17 * procedură, doar că simbolul de marcare D
va avea separat o linie pentru acestea.
Considerând o funcţie binară incomplet definită, cu stări indiferente, ,
reprezentarea sub formă de simbol de marcare este:

2.4. MINIMIZAREA FUNCŢIILOR BINARE

Minimizarea funcţiilor binare este varianta problemei de optimizare în cazul particular al


structurilor numerice. Ca orice problemă de optimizare miza algoritmilor de minimizare
este reducerea costurilor de implementare. În general, costul implementării unei aplicaţii
numerice de tip combinaţional este dat la o primă evaluare de numărul termenilor
existenti în forma canonică aleasă şi cu numărul de variabile al fiecărui termen (în cazul
aplicaţiilor dezvoltate ca exemple vpm considera FCD în conformitate cu observaţiile
anterioare). Dincolo de acest cost imediat intervin costurile de cablare (realizare a
cablajului, a schemei electrice corespunzătoare), consumul de energie electrică, precum şi
problemele de reducere a fiabilităţii ori de creştere a costurilor de service. Din aceste
motive se pune problema minimizarii funcţiilor binare cosrespunzătoare circuitelor
numerice prin reducerea expresiilor funcţiilor respective cu păstrarea conţinutului
matematic al funcţiei. Problema minimizarii este în esenţă alegerea sistemului
complet de funcţii şi a reprezentării cât mai economice în acest sistem.
Pentru a dezvolta metode sistematice de minimizare (algoritmi de minimizare) este
nevoie să fixăm la început câteva observaţii.
În dezvoltările de tip FCD şi FCC, fiecare termen, fie de tip produs fie de tip sumă, are
acelaşi număr de variabile. Aceşti termeni se numesc termeni normali. Numărul
variabilelor din fiecare termen este rangul termenului normal. Evident, în fiecare
termen al formelor FCD şi FCC fiecare variabilă se gaseşte o singură dată. Trebuie
subliniat faptul ca FCD şi FCC prezentate anterior sunt de tip normal şi ele reprezintă
82

formele cele mai complexe de scriere a funcţiilor binare. De fapt ele sunt punctul de
plecare al etapei de minimizare.
Prin etapa de minimizare expresiile FCD şi FCC se reduc la un număr mai mic de termeni
şi de variabile. Pentru a evalua minimizarea se defineşte numărul de variabile conţinut în
toţi termenii dezvoltării. Se numeşte formă canonică minimă (de tip disjunctiv ori
conjunctiv) forma care are cel mai mic număr de variabile considerat în toţi termenii
dezvoltării (numărul minim de argumente).
Se numeşte implicant prim al unei funcţii binare termenii care implică funcţia respectivă
fară a mai putea elimina o variabilă. Prin expresia “implică funcţia binară” se înţelege
faptul că forma minimizată este identică din puctul de vedere al prelucrării informaţiei cu
funcţia iniţială. Pe scurt, cele două expresii de tip FCD şi de tip minimizat au acelaşi tabel
de adevăr. Aceasta se mai înţelege ca la ieşirile lor să se obţină acealaşi valori pentru
situaţii identice la intrare.
Obţinerea implicanţilor primi pentru funcţiile binare date prin FCD se realizează folosind
următoarea proprietăţi ale algebrei binare:
(2.17)
(2.18)
Expresia (2.17) se mai mumeşte operaţie de alipire parţială şi se poate demonstra simplu
folosind algebra binară:

Expresia (2.18) se mai mumeşte operaţie de absorţie şi se demonstrează folosind algebra


binară:

Toţi algoritmii de minimizare folosesc cele două realţii, fapt redat de teorema lui Quine,
ce poate fi reţinută ca teorema minimizării: dacă într-o expresie de tip FCD a unei
funcţii binare se efectuează toate operaţiile de alipire parţială şi toate operaţiile de
absorţie se obţine disjuncţia (reuniunea) implicanţilor primi, respectiv forma
minimală.
Analiza teoremei lui Quine permite următoarele observaţii:
-teorema este foarte generală, ea nu oferă un algoritm de tip clasic sau o formulă
de obţinere a funcţiei minimizate
-cea mai directă aplicare a teoremei este minimizarea de tip algebric, respctiv
folosirea formulelor şi teoremelor algebrei binare pentru a obţine forme
minimizate
-aplicarea directă a teoremei, respectiv aplicarea teoremelor algebrei binare,
determină ca performanţa minimizării să depindă de experienţa operatorului
Dar cea mai importantă concluzie este faptul că fie aplicarea directă a teoremei fie
aplicarea algoritmilor deduşi pe baza ei, nu garantează atingerea reprezentării absolut
minimale. Prin definiţie o reprezentare a unei funcţii binare se numeşte absolut minimală
dacă nu există o reprezentare mai simplă decât aceasta. Matematicienii Abhyankar şi
Burthart au studiat problema determinării expresiei absolut minimale. Algoritmul oferit
de Abhyankar este excesiv de laborios şi din acest motiv, în practică se preferă obţinerea
de forme minimizate bazate pe algoritmi mai simpli combinaţi cu experienţa operatorilor.
Pornind de la teorema lui Quine, cea mai directă aplicare pentru minimizarea unei funcţii
binare este metoda algebrică, respectiv folosirea setului de formule, teoreme din algebra
binară pentru simplificarea formei funcţiei binare iniţiale.
83

Alături de formule date de (2.17), (2.18) mai sunt folosite:


(2.19)
(2.20)
(2.21)

Demonstrarea celor trei formule este un execiţiu util pentru exemplificarea calculului
algebric binar.

Pentru expresia (2.19) demostraţia detaliată este următoarea:

dacă :
iar ,
atunci:

cum:

se obţine:

aşadar:

Pentru expresia (2.20) reyolvarea este mai simplă:

dar
rezultă:

Pentru demonstrarea relaţiei (2.21) sunt necesare mai multe artificii de algebra binară:

deoarece , putem scrie:

Cele trei demonstraţii arată faptul că aplicarea directă a calculului algebric binar nu este
foarte simplă, foarte directă. Există o serie de artificii de tip algebric care folosesc
teoremele algebrei binare şi numai abilitatea operatorului poate să garanteze expresii
favorabile.
Să considerăm acum funcţia binară dată prin expresia FCD:
84

Folosind teoremele şi proprietăţile algebrei binare să se minimizeze funcţia binară.

Expresia iniţială a avut patru termeni cu câte patru variabile fiecare iar expresia finală,
minimizată, are trei termeni cu câte trei variabile fiecare.

2.4.1. Algoritmul de minimizare Quine

Algoritmul propus de Quine determină forma disjunctivă minimă a unei funcţii binare
exprimată prin FCD folosind o reprezentare tabelară. Paşii algoritmului sunt:
-termenii canonici ai FCD se trec în capul de tabel
-se grupează termenii canonici pentru a obţine implicanţii primi (grupul se
marchează în tabel)
-se determină reuniunea minimală a implicanţilor primi, care acoperă toate
coloanele tabelului. Ei sunt implicanţii esenţiali.

Pentru exemplificare considerăm funcţia:

Pentru minimizare se construieşte tabelul următor:

Implicanţi Termenii FCD


primi
*─────*
*─────────────────*
*──────*
*──────────────────*
*──────*
*───────*

Tabelul astfel construit oferă în coloana din stânga un şir de implicanţi primi obţinuţi prin
combinarea perechilor de termeni FCD. Din şirul celor 6 implicanţi primi se alege
numărul minim care acoperă toate coloanele (implicanţii primi esenţiali). Conform
tabelului există două soluţii:
, ,
şi , ,
Fiecare din cele două grupe de implicanţi primi esenţiali dau prin disjuncţie (reuniune),
câte o formă minimizată a funcţiei iniţiale:

sau
85

Aşa cum s-a enunţat anterior, pentru o funcţie binară dată nu există o singură formă
minimă. Algoritmul dezvoltat de Quine este simplu dar este destul delaborios ca scriere şi
calcul, deoarece necesită analiza tuturor perechilor de termeni canonici ai funcţiei. În
plus, modul de scriere de tip algebric al termenilor canonici, nu este cea mai clară
modalitate pentru a observa modul de cuplare a perechilor de termeni.
Regula după care se grupează perechile de termeni canonici pentru a obţine implicanţii
primi este: se grupează termenii care diferă între ei printr-o singură variabila.
Această variabilă este într-un termen ca atare/(nu este negată) iar în al doilea termen al
perechii este negată.

2.4.2. Algoritmul de minimizare Quine-Mc Cluskey

Mc Cluskez a reuşit să îmbunătăţească algoritmul anterior modificând modul de scriere a


termenilor canonici şi combinând o etapa de tip algebric cu forma tabelară finală. Înainte
de a descrie etapele şi modul de operare al algoritmului, reamintim elementul esenţial al
său, identic cu cel folosit la algoritmul Quine. Conceptul de bază este să grupăm termenii
canonici adiacenţi, respectiv termenii canonici care diferă printr-o singură variabilă.
Asupra unei astfel de perechi de termeni se poate aplica operaţia de alipire parţială, de
tip: . În caz general, prin operaţia de alipire, din doi
termeni de k variabile se obţine un termen (implicant prim) de (k+1) variabile. Dacă
o altă pereche de termeni canonici adiacenţi produce prin operaţia de alipire un implicant
prim care este adiacent în raport cu un alt implicant prim, atunci operaţia de alipire
parţială se repetă şi putem spune ca am grupat patru termeni canonici de k variabile
obţinând un singur termen de (k+2) variabile.
Schema acestor operaţii de alipire parţială este:

Presupunând că toate perechile grupate sunt termeni adiacenţi, care diferă printr-o singură
variabilă, se extrag următoarele reguli de grupare şi concluzii:
-gruparea termenilor se face doar în grupe ce respectă puterile lui 2, adică 2, 4, 8,
16 ...etc.
-în vederea minimizării, nu sunt admise grupari de termeni canonici diferite de
cele definite anterior
-o pereche de termeni canonici adiacenţi elimină o variabilă, în sensul că produce
un singur termen cu (k-1) variabile
-gruparea a patru termeni canonici conform schemei prezentate conduce la
eliminarea a două variabile (se obţine un singur temen cu (k-2) variabile),
gruparea de opt termeni conduce la eliminarea a trei variabile etc
-legătura între numărul de termeni canonici grupaţi şi numărul de variabile
eliminate din termenul final, este dată tot de puterile lui 2, astfel daca se grupeză
termeni canonici, atunci termenul final va avea (n-k) variabile
86

După aceste observaţii să urmărim etapele prin care se aplică algoritmul Quine-Mc
Cluskey.

Etapa I. Termenii canonici se transcriu ca un şir binar, conform regulei următoare: dacă
variabila este ca atare se scrie 1 iar dacă variabila este negată se notează cu 0

Etapa II. Termenii canonici se grupează după numărul de biţi de 1 în mai multe grupe:
grupa zero (toţi termenii din grupă nu conţin nci un bit de 1)
grupa unu (toţi termenii din grupă conţin câte un bit de 1)
grupa doi (toţi termenii din grupa conţin cite doi biţi de 1)
etc

Etapa III. Termenii canonici grupaţi anterior diferă la nivel de grupe vecine printr-un
singur bit. Astfel se pot grupa termenii din grupa vecini si se elimină cite o variabilă.
Variabila eliminată se notează cu _.

Etapa IV. Termenii cu o variabilă eliminată se grupează din nou în funcţie de numărul de
biţi de 1 (se numesc termeni de rangul 1, deoarece au o variabilă eliminată)

Etapa V. Procedând similar se obţin termenii de rangul 2 (cu două variabile eliminate)

EtapaVI. Se repetă procedura pînă când nu se mai pot realiza grupări care să permită
alipiri.

Etapa VII. Acum se trece la completarea tabelului implicanţilor primi. Se trec in tabel,
ca şi coloane, toţi termenii canonici în transcriere binară. Prima coloana din stânga va
conţine implicanţii primi. Pentru fiecare implicant prim se marchează grupul de termenii
canonici (2, 4, etc) prin care a fost obţinut. La final se determină setul de implicanţi
esenţiali, respectiv cei ce implica tot grupul termenilor canonici esenţiali.

Etapa VIII. Disjuncţia (reuniunea) setului de implicanţi esenţiali reprezintă forma


minimizată a funcţiei binare iniţiale.

Să considerăm o funcţie binară care să fie minimizată prin algoritmul enunţat. Fie aşadar
funcţia binară de patru variabile, dată sub FCD:

Etapa I. Transcrierea binară a termenilor FCD


0000, 0001, 0010, 0011, 0100, 0110, 0111, 1000, 1001, 1011, 1111

Etapa II. Formarea grupelor


-grupa zero: 0000
-grupa unu: 0001, 0010, 0100, 1000
-grupa doi: 0011, 0110, 1001
-grupa trei: 0111, 1011
87

-grupa patru: 1111

Etapa III -IV. Grupare şi obţinere termeni de rongul trei (având trei variabile, una este
eliminată)
-grupa zero: 000_, 00_0, 0_00, _000
-grupa unu: 00_1, _001, 001_, 0_10, 01_0, 100_
-grupa doi: 0_11, _011, 011_, 10_1
-grupa trei: _111, 1_11

Etapa IV-V. Obţinerea termenilor de rangul doi (având două variabile, celelalte două
fiind eliminate)
-grupa zero: 00_ _, _00_, 0_ _0,
-grupa unu: _0_1, 0_1_,
-grupa doi: _ _11,
OBS: în cadrul celor doua etape de grupare şi eliminare a variabilelor, fiecare nou termen
se trece o singură dată, chiar daca el se poate obţine din mai multe grupări

Etapa VI. Deoarece termenii de rangul doi nu mai permit alipiri, se trece la completarea
tabelului.

Etapa VII. Completarea tabelului implicanţilor primi.

0000 0001 0010 0011 0100 0110 0111 1000 1001 1011 1111
00_ _ * * * *
_00_ * * * *
0_ _0 * * * *
_0_1 * * * *
0_1_ * * * *
_ _11 * * * *

Etapa VIII. Determinarea expresiei minimizate prin reuniunea implicanţilor esenţiali


(cei care se obţin prin gruparea tuturor termenilor FCD iniţiale)
Se poate observa că nu există o singură expresie minimizată, putând fi efectuate mai
multe grupări:

sau

OBS: deşi algoritmul Quine-Mc Cluskey reuşeşte să înbunăţească algoritmul


Quine, prin modul de notare binară al termenilor, el rămâne destul de greoi în aplicare.
Etapa algebrică de detrminare a implicanţilor consumă mult timp şi în ciuda notaţiei
binare, poate introduce greşeli.

2.4.3. Algoritmul de minimizare bazat pe diagrame Karnaugh

Algoritmul de minimizare bazat pe folosirea diagramelor Karnaugh reuşeşte să integreze


într-o procedură globală cele două etape ale algorimului Quine-Mc Cluskey, respectiv
88

etapa algenrică şi cea tabelară de determinare a implicanţilor esenţiali, respectiv a formei


minimizate a funcţiei binare.
Înainte de a prezenta etapele de aplicare a algoritmului de minimizare ce foloseşte
diagramele Karnaugh, să reamintim elementele specifice diagramelor, elemente ce permit
dezvoltarea unei proceduri globale:
-diagramele Karnaugh se construiesc pe baza codului Gray
-din acest motiv, oricare din câmpurile adiacente conţin termeni canonici care diferă
printr-o singură variabilă şi astfel asupra lor se poate aplica operaţia de alipire

ab
00 01 11 10
a b c d
cd
00 0 4 12 8
0 0 0 0
01 1 5 13 9 0 0 0 1
0 0 1 0
11 3 7 15 11
0 0 1 1
2 6 14 10 0 1 0 0
10
0 1 0 1
0 1 1 0
Dacă urmărim câmpurile diagramei Karnaugh ale 0 1 1 1
funcţei binare de patru variabile şi alegem 1 0 0 0
o serie de câmpuri adiacente din cadrul diagramei 1 0 0 1
se poate verifica afirmaţia anterioară:
1 0 1 0
-câmpuri adiacente orizontal:
0-4 termenii canonici şi sunt 1 0 1 1
şi ; ei permit aplicarea 1 1 0 0
operaţiei de alipire 1 1 0 1
0-8 şi câmpurile extreme se consideră 1 1 1 0
adiacente şi 1 1 1 1
7-15 şi
-câmpuri adiacente vertical:
5-7 şi
0-2 câmpuri extreme adiacente şi
15-14 şi

Etapele algoritmului de minimizare sunt:


-conform tabelului de adevaăr al funcţiei binare se completează diagrama Karnaugh
corespunzatoare
-pentru completarea rapidă a diagramei se recomandă folosirea algoritmului rocadei
89

-se grupează biţii de 1, câmpurile corespunzătoare termenilor adiacenţi în grupe de 2, 4,


8...câmpuri adiacente, conform regulilor de grupare enunţate în paragraful anterior. O
grupare de 2 biţi, 2 termeni adiacenţi elimină o variabilă, o grupare de 4 biţi elimină 2
variabile iar o grupare de 8 biţi conduce la eliminarea a 3 variabile.
-nu se acceptă grupari de 3, 5, 6 ...câmpuri
-etapa de grupare se consideră terminată când toţi biţii de 1 sunt cuprinţi într-un câmp de
adiacenţă
-în cazul în care un bit de 1 nu poate fi grupat el se consideră separat, respctiv facând
parte dintr-o grupare de 1 element
-un bit de 1 poate să facă parte din mai multe grupări de adiacenţă. În acest caz se
păstrează termenul canonic corespunzător câmpului respectiv, aşadar nu se elimină nici o
variabilă.
-modul de grupare trebuie să respecte următoarea regulă: minimizarea este cu atât mai
bună cu cât există mai puţine grupări şi fiecare are mai multe câmpuri de 1 (evident
numărul câmpurilor de 1 trebuie să fie cele permise, ale puterilor lui 2 )
-pentru fiecare grupare de câmpuri adiacente se determină împlicantul primi
corespunzător
-expresia finală minimizată este data de reuniunea implicanţilor primi determinaţi

Vom exemplifica algoritmul de minimizare pentru o funcţie de patru variabile ,


dată prin tabelul de adevăr:
a b c d

0 0 0 0 1
0 0 0 1 1
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 1
0 1 1 0 1
0 1 1 1 1
1 0 0 0 0
1 0 0 1 1
1 0 1 0 1
1 0 1 1 0 Diagrama corespunzătoare tabelului de adevăr
1 1 0 0 0 este construită folosind un set de bare prin care
1 1 0 1 1 se codează, marchează semnul variabilelor a,b,c,d
1 1 1 0 0 din câmpurile diagramei.
1 1 1 1 1

Convenţia de reprezentare prin bare a semnului variabilelor funcţiei binare este


următoarea:
-semnul variabilei în câmpurile din dreptul barei de marcare este pozitiv (variabila se ia
ca atare)
90

-semnul variabilei în câmpurile care nu sunt cuprinse de bara de marcare este negativ
(variabila se ia negată)
Astfel:
-variabila a este ca atare, pozitivă, în cele două coloane din dreapta
-variabila a este negată, negatică, în cele două coloane din stânga
-variabila b este ca atare, pozitivă, în cele două coloane din mijlocul diagramei
-variabila b este negată, negatică, în cele două coloane extreme, din dreapta şi din
stânga
-variabila c este ca atare, pozitivă, în cele două linii de jos
-variabila c este negată, negatică, în cele două linii de sus
-variabila d este ca atare, pozitivă, în cele două linii de la mijlocul diagramei
-variabila d este negată, negatică, în cele două linii extreme, de sus si de jos

În prima etapa, informaţia din tabelul de adevăr a fost transferată în diagrama Karnaugh.
Apoi sunt grupaţi toţi biţii de 1 din diagrama. Grupările conţin 1, 2 şi 4 biţi, deci vom
obţine la final termeni de 4, 3 şi 2 variabile. Se observă că unele câmpuri de 1 fac parte
din mai multe grupări. În mod evident, gruparea termenilor nu este unică, fiind posibile
mai multe variante. Important este ca să se respecte recomandarea de a avea cât mai
puţine grupări cu cât mai multe câmpuri fiecare. Câmpul din colţul dreapta-jos a
diagramei nu poate fi cuprins în nici o grupare şi din acest motiv este luat ca atare.

Conform grupărilor prezentate în diagramă, rezultă implicanţii primi ai formei


minimizate. Există mai multe metode de determinare a expresiei de tip algebric a
implicanţilor. Metoda propusă nu este descrisă în literatura de specialitate analizată dar
este foarte intuitivă deoarece foloseşte metode specifice operaţiilor grafice de reuniune şi
intersecţie din teoria mulţimilor.

Etapele de obţinere a implicanţilor primi sunt:


-se alege o grupare de câmpuri adiacente
91

-gruparea respectivă de câmpuri trebuie obţinută din intersecţia regiunilor


variabilelor ca atare sau a variabilelor negate, aşa cum au fost ele definite anterior
şi aşa cum sunt marcate prin barele de lânga diagramă
-variabila ca atre se consideră zona din dreptul barei variabilei iar variabila negată
corespunde celeilalte jumătăţi de diagramă
-o grupare de 4 câmpuri se obţine din intersecţia a două regiuni de variabile, o
grupare de 2 câmpuri corespunde intersecţiei a 3 regiuni de variabile iar pentru un
câmp singular este nevoie de intersecţia a 4 regiuni de variabile
Pe baza acestor reguli să urmărim cum se obţin implicanţii primi:
-pentru câmpurile de 4 variabile rezultă implicanţii de 2 variabile:
şi
-pentru câmpurile de 2 variabile rezultă implicanţii de 3 variabile:
, ,
-pentru câmpul singular se păstrează termenul canonic corespunzător

Expresia minimizată a funcţiei binare este dată reuniunea implicanţilor primi determinaţi:
= + + + + +
Algoritmul de aplicare al minimizării prin diagrame Karnaugh permite o serie de
concluzii referitoare la performanţele acestuia:
-aşa cum s-a afirmat iniţial algoritmul reprezintă o metodă globală de minimizare,
care nu are o etapă algebrică şi una tabelară
-el se bazează pe folosirea codului Graz în notarea câmpurilor diagramei
-fundamental este o metodă grafică, ce se bazează pe gruparea câmpurilor
adiacente. Din acest motiv este şi simplu de aplicat
-deşi este algoritmul cel mai bine prezentat în literatura de specialitate, pentru
cazul funcţiilor binare de 3 şi 4 variabile, de obicei nu se aminteşte faptul că
uşurinţa de aplicare se reduce doar la aceste situaţii. Dacă funcţiile binare au 5, 6
sau 7 variabile, aplicarea algoritmului este foarte dificilă. Aşa cum dificilă este şi
reprezentarea funcţiilor binare de 5,6 sau 7 varibile prin diagrame Karnaugh.
Din acest motiv putem spune că atât algoritmul de minimizare prin diagrame Karnaugh
cât şi celelalte prezentate anterior devin greoaie în aplicare sau chiar imposibil practic de
folosit pentru funcţiile cu mai multe variabile.
Şi cum foarte multe aplicaţii practice (marea majoritate) sunt aplicaţii care prelucrează
seturi extinse de semnale, respectiv sunt modelate matematic prin funcţii binare cu multe
variabile, se poate concluziona că algoritmii de minimizare prezentaţi până acum au o
aplicabilitate practică redusă. Este important de subliniat acest aspect deoarece el nu se
regăseşte în literatura de specialitate. Mai mult decât atât, deşi se insistă pe importanţa
etapei de minimizare, de obicei sunt prezentate metodele cu importanţă didactică: metoda
algebrică, metodele Quine şi Quine-Mc Cluskey sau cea a diagramelor Karnaugh. Aceşti
algoritmi sunt relativ simplu de înţeles şi de aplicat pe exemple de tip didactic, unde
funcţiile binare au maxim 4 variabile. Din păcate toate aceste metode sunt extrem de
dificil de aplicat în cazul funcţiilor binare cu mai multe variabile şi în acest fel nu dau
rezultate practice mulţumitoare.
Singura metodă care poate rezolva problemele complexe este algoritmul de minimizare
dezvoltat pe baza simbolului de marcare D. Cu toate acestea ea nu se regăseşte în cele
mai multe cărţi dedicate circuitelor numerice.
92

2.4.4. Algoritmul de minimizare bazat pe simbolul de marcare D

Deşi este puţin prezentat în literatura de specialitate, algoritmul de minimizare dezvoltat


pe modelul simbolului de marcare D este singura procedură prin care se pot minimiza
funcţiile binare cu multe variabile. În literatură diagramele Karnaugh minimizează funcţii
de maximum 5-6 variabile dar chiar în aceste cazuri procedurile sunt complicate şi
folosirea simultană a două sau patru diagrame standard de 16 câmpuri poate conduce la
erori ori minimizări insuficinet de performante.
Elementul de bază ce permite folosirea simbolului de marcare D în algoritmii de
minimizare este folosirea sistemului octal în notarea termenilor canonici ce definesc
FCD. Sistemul octal are o proprietate remarcabilă, respectiv el poate identifica termeni
canonici disjunctivi care sunt adiacenţi, respectiv care diferă între ei printr-o singură
variabilă. Identificarea termenilor adiacenţi se face prin diferenţa numerelor octale ce
codifică termenii respectivi.
Diferenţele octale care determină termeni adiacenţi sunt date de valorile 1, 2, 4, 10, 20,
40, 100, 200, 400...
Din păcate, nu toate diferenţele octale enunţate sunt utilizabile. Iar setul de excepţii nu se
regaseşte în literatura de specialitate. Limitând enunţul la setul de adiacenţe octale şi
minimizând doar după această regulă, se obţin erori, respectiv se consideră operaţii de
alipire parţială cu termeni care nu permit acest lucru.
Pentru a evita erorile de acest tip este nevoie să cunoaştem excepţiile de la regula
enunţată iniţial. Determinarea excepţiilor se realizează analizând toate adiacenţele octale
posibile de 1, 2 şi 4. Trebuie subliniat faptul că toate operaţiile aritmetice se rezolvă ăn
octal. Pentru a demonstra care dintre adiacenţele octale sunt permise şi care sunt interzise
se transpun numerele octale corespunzătoare adiacenţelor în binar şi se analizează dacă se
poate aplica operaţia de absorţie, respectiv dacă cele două numere binare diferă printr-un
singur bit.
Analiza adiacenţelor cu 1:
este corectă deoarece diferă prin-un bit (cel subliniat, cmpsb)
este incorectă deoarece diferă prin doi biţi (cei subliniaţi)
este corectă deoarece diferă prin-un bit (cel subliniat)
este incorectă deoarece diferă prin doi biţi (cei subliniaţi)
este corectă deoarece diferă prin-un bit (cel subliniat)
este incorectă deoarece diferă prin doi biţi (cei subliniaţi)
este corectă deoarece diferă prin-un bit (cel subliniat)
Adiacenţele corecte cu 1 sunt , , şi . În felul acesta se
observă regula simplă a adiţiei cu 1: dintre toate adiţiile posibile cu 1 sunt corecte cele
care pornesc de la cifră impară şi sunt incorecte cele care pornesc de la cifră pară.

Analiza adiacenţelor cu 2:
este corectă deoarece diferă printr-un singur bit, bitul al doilea
93

este corectă deoarece diferă printr-un singur bit, bitul al doilea


este incorectă deoarece diferă prin doi biţi (cei subliniaţi)
este incorectă deoarece diferă prin doi biţi (cei subliniaţi)
este corectă deoarece diferă printr-un singur bit, bitul al doilea
este corectă deoarece diferă printr-un singur bit, bitul al doilea
Adiacenţele corecte cu 2 sunt , , şi
Adiacenţele excepţii sunt: şi

O regulă rapidă de reţinere a adicenţelor cu 2 este: adiacenţele incorecte sunt cele


de la mijlocul coloanei, iar cele corecte sunt primele două şi ultimele două.

Analiza adiacenţelor cu 4
este corectă deoarece diferă printr-un singur bit, bitul al treilea
este corectă deoarece diferă printr-un singur bit, bitul al treilea
este corectă deoarece diferă printr-un singur bit, bitul al treilea
este corectă deoarece diferă printr-un singur bit, bitul al treilea
Toate adiacenţele cu 4 sunt corecte, nu există excepţii.

Analiza adiacenţelor cu 1, 2 şi 4 ne oferă trei concluzii cu aplicabilitate practică, fără de


care nu se poate realiza o minimizare corectă:
-nu toate adicenţele date de diferenţele cu 1 şi 2 sunt corecte şi oferă perechi,
grupa de termeni canonici adiacenţi
-toate adiacenţele cu 4 sunt corecte (nu există excepţii)
-observaţiile deduse sunt valabile şi pentru adiacenţele cu 10, 20. 40, 100. 200,
400, ...
De asemenea se observă că adiacenţele corecte produc termeni canonici care diferă între
ei mereu la nivelul aceluiaşi bit (restul biţilor din scrierea binară a termenilor canonici
fiind identici):
-adiacenţele cu 1 diferă la nivelul bitului cel mai puţin semnificativ
-adiacenţele cu 2 diferă la nivelul bitului de rang imediat superior, al doilea bit
-adiacenţele cu 4 diferă la nivelul bitului trei
Analog, le demostrează că şi la adiacenţe de valoare mai mare se păstrează această
observaţie, respectiv:
-adiacenţele cu 10 diferă la nivelul bitului patru
-adiacenţele cu 20 diferă la nivelul bitului cinci
-adiacenţele cu 40 diferă la nivelul bitului şase
-adiacenţele cu 100 diferă la nivelul bitului şapte
-adiacenţele cu 200 diferă la nivelul bitului opt
-adiacenţele cu 400 diferă la nivelul bitului nouă
Înainte de a prezenta un exemplu practiv, trebuie să reamintim modul de grupare al
termenilor canonici. Şi în algoritmul de minimizare prin simbol de marcare D, gruparea
termenilor se face după regula amintită anterior, respectiv în grupe de 2, 4, 8, 16...
94

Etapele algoritmului de minimizare prin simbol de marcare D:


-din tabelul de adevăr modificat (conţinînd coloana notaţiei octale) se obţine
simbolul de marcare D
-elementul de bază al minimizării îl reprezintă seriile de adiacenţă
-o serie de adiacenţă este gruparea numerelor octale din simbolul de marcare D
conform regulilor definite anterior: pe adiacenţele corecte şi în grupele stabilite 2,4,8...
-prima serie de adiacenţă începe cu cel mai mic număr octal (primul din D)
-adiacenţa se notează printr-o bară care are notat ca indice valoarea adiacenţei
ex: , , , ,
-OBS: în cadrul seriilor de adiacenţă trebuie respectată regula ordinului:
•întotdeauna printr-o adiacenţa de o cifră, se modifică doar cifra unităţilor
numărului octal din seria de adiacentă (aşa cum a fost redat în exemplul
anterior). Adiacenţele de două cifre modifică doar cifra zecilor, adiacenţele de trei
cifre modifică doar cifra sutelor, samd
•nu se permit adiacenţe de forma , , etc

-după prima adiacenţă din serie, se urmăreşte dacă seria poate fi extinsă, respectiv
dacă putem găsi în simbolul de marcare un set de numere octale care să satisfacă
o nouă adiacenţă. La a doua adiacenţă trebuiesc găsite 2 numere care să satisfacă
adiacenţa, la a treia adiacenţă sunt necesare 4 numere, la a patra sunt necesare 8
numere etc
-fiecare nouă adiacenţă se marchează la fel ca prima

Exemplu: sau
-dacă în simbolul de marcare lipseşte măcar un singur termen necesar unei noi
adiţii, ea nu se poate efectua şi se consideră seria de adiţii incheiată
-după încheiere primei serii de adiţie, se trece la completarea următoarei serii,
după acealeaşi reguli
-etapa seriilor de adiacenţă se consideră încheiată atunci când toţi termenii din
simbolul de marcare D sunt cuprinşi măcar într-o serie de adiacenţă
-la fel ca în algoritmul de minimizare prin diagrame Karnaugh, termenii
simbolului de marcare pot fi conţinuţi în mai multe serii de adiacenţă.
-şi tot similar diagramei Karnaugh, calitatea minimizării impune un număr cât mai
mic de serii de adiacenţă şi un număr cit mai mare de adicenţe în fiecare serie
-fiecare adiacenţă însemnă o variabilă eliminată, respectiv din 2 termeni de k
variabile, se obţine 1 termen de (k-1)variabile iar în cazul seriilor cu mai multe adiacenţe,
dacă am format o serie de două adiacenţe (formată din 4 termeni) însemnă ca din 4
termeni de k variabile am obţinut un singur termen de (k-2) variabile, samd
-dacă un termen nu poate fi cuprins în nici-o serie de adiacenţa, el este luat ca
atare într-o serie ce-l conţine doar pe el. Semnificaţia din punct de vedere al minimizarii
este că termenul respectiv rămâne ca atare, neminimizat.
-după terminarea etapei seriilor de adiacenţă urmează etapa determinării expresiei
formei minimizate, respectiv reuniunea implicanţilor primi. Pentru aceasta se urmează
paşii:
95

-fiecare serie de adiacenţă determină un implicant prim


-determinarea implicantului prin corespunzător serie se face astfel:
•se copiază primul termen din serie
•el se codifică binar, ca şi variabile ale funcţiei minimizate
•se elimină variabilele corespunzătoare tuturor adiacenţelor din serie după regula
anterioară: adiacenţa cu 1 elimină cmpsb, adiacenţa cu 2 elimină bitul 2, adiacenţa
cu 4 elimă bitul 3, samd
•produsul logic al varabilelor rămase este implicantul prin corespunzător seriei

-reuniunea tuturor implicanţilor primi determinaţi în etapa anterioară determină


forma minimizată a funcţiei binare
Exemplu: se consideră seria de adiacenţă a unei funcţii de 6 variabile
:
-primul termen al seriei este 0, iar codificarea la nivelul celor 6 variabile este:

-seria are 3 adiacenţe, deci vor fi eliminate 3 variabile


-conform adiacentelor, sunt eliminate variabilele, de la dreapta la sânga, prima, a doua şi
a treia, respectiv , şi
-implicantul prin rezultat în urma seriei de adiacenţă este:
-reuniunea tuturor implicanţilor primi determinaţi în etapa anterioară determină
forma minimizată a funcţiei binare
Observaţii:
-literatura de specialitate atunci când prezintă metoda minimizarii cu simbol de
marcare D, enunţă doar principiul determinării termenilor adiacenţi, prin
diferentele octale specifice, 1, 2, 4, 10, 20, 40,.....
-nu sunt prezentaţi explicit excepţiile
-nu se prezintă regula ordinului ca modalitate de formare a seriilor de adiacenţa
-de asemenea trebuie re-inut faptul că seriile de adiacenţă se construiesc prin
operaţia de adunare aplicată în octal

Să aplicăm acum algoritmul de minimizare în totalitate, pe exemplul unei funcţii binare


de 6 variabile exprimată prin simbol de marcare D:

-prima serie de adiacenţă este:

Obs: se recomandă ca după completarea fiecărei serii de adiacenţă să se sublinieze în


simbolul de marcare fiecare termen, număr octal, folosit. În cazul în care un termen, un
număr octal, e cuprins în mai multe serii de adiacentă el se subliniază de mai multe ori
-următoarele serii de adiacenţă:
96

-în total s-au obţinut 14 serii de adiacenţă. Înseamnă că forma minimizată a funcţiei va
avea 14 termeni. Dintre aceştia, 2 termeni au 3 variabile, 7 termeni au 4 variabile iar 5
termeni au 5 variabile. Pentru a evalua etapa de minimizare trebuie să obsevăm din
reprezentarea prin simbol D că funcţia binară a avut iniţial 43 de termeni cu cîte 6
variabile fiecare.
-implicanţii primi ai funcţiei se obţin astfel:

pentru prima serie de adiacenţa prezentăm detaliat procedura:


-primul termen al seriei se scrie binar, deasupra notaţiei binare se trac variabilel
funcţiei iar apoi marcăm variabilele eliminate, corespunzătoare adiacenţelor din serie, în
cazul concret 1, 4 şi 20
-ceilalţi implicanţi primi rezultă conform procedurii:
97

Forma minimizată a funcţiei este:


+ + + + + +
+ + + + + + +
+ +

2.4.5. Minimizarea funcţiilor binare incomplet definite

În toate exemplele de până acum, algoritmii de minimizare au aoperat asupra funcţiilor


binare complet definite. Pentru funcţiile incomplet definite se aplică următoarea regulă:
stările nedefinite ale funcţiei pot fi cuprinse în grupările specifice algorimilor de
minimizare dacă ele conduc la imbunătăţirea performanţei de minimizare. Dacă nu
conduc la minimizari mai puternice, starile indiferente nu se consideră.
a b c d

0 0 0 0 1
0 0 0 1 1
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 1
0 1 1 0 1
0 1 1 1 1
1 0 0 0 0
1 0 0 1 1
1 0 1 0 1
1 0 1 1 0
1 1 0 0 0 Considerăm cazul funcţiei minimizate prin
1 1 0 1 1 diagramă Karnaugh. Stările nedefinite au fost
1 1 1 0 0 semnalizate şi în cadrul diagramei. În acest caz,
1 1 1 1 1 gruparea termenilor se poate face astfel:
98

Conform noilor grupări, forma minimizată a funcţiei binare este:

În cazul minimizării prin simbol de marcare D, stările nedefinite se trec în cadrul


simbolului sub termenii care aplică funcţia în 1:
99

Expresia minimizată este acum:


+ + + + + +
+ + + + + + +
+ +

CAPITOLUL III. CIRCUITE NUMERICE COMBINAŢIONALE

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