Sunteți pe pagina 1din 143

CUPRINS

Lucrarea 1. Proiectarea circuitelor secveniale sincrone ............................................ 1


Lucrarea 2. Proiectarea aplicaiilor folosind ierarhii de module ............................. 14
Lucrarea 3. Proiectarea dispozitivelor aritmetice n virgul fix ............................ 24
Lucrarea 4. Reprezentarea datelor. Operaii aritmetice ZCB ................................. 36
Lucrarea 5. Uniti de execuie i comand integrate. AMD 2901 i AMD 2909 ... 45
Lucrarea 6. Proiectarea dispozitivelor aritmetice n virgul mobil ....................... 55
Lucrarea 7. Procesorul didactic DLX ......................................................................... 65
Lucrarea 8. Memorii i ierarhii de memorii ............................................................... 72
Lucrarea 9. Transmisia i recepia serial a informaiei .......................................... 83
Lucrarea 10. Coduri detectoare/corectoare de erori. Criptarea informaiei ........... 92
Anexa A

Prezentarea mediului de dezvoltare hardware XILINX WebPack ISE -

6.2i ................................................................................................................................. 104


Anexa B Prezentarea simulatorului software SPIM ............................................... 132
Anexa C Valoriile pinilor programabili pentru DIGILAB DIO1 / 2E .................. 137
Bibliografie ................................................................................................................... 141

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

1
Proiectarea circuitelor
secveniale sincrone
1. Prezentare teoretic
n cadrul acestei lucrri de laborator se va prezenta metodologia de proiectare a unui
circuit secvenial sincron. Circuitul final este obinut cu ajutorul diagramelor
Karnough-Vength iar implementarea sa este realizat cu ajutorul utilitarului Schematic,
din pachetul software de dezvoltare Xilinx WebPACK ISE 6.2 i.
Calculatoarele sunt construite din circuite integrate care conin elemente de comutare
denumite pori. Porile elementare sunt : I, SAU, I-NU, SAU-NU i NOT. Circuitele
simple pot fi realizate prin combinarea direct de pori individuale. Circuitele mai
complexe sunt: multiplexoare, codificatoare, circuite de deplasare i unitile aritmeticologice.
n 1975, Ron Cline de la Signetics (companie preluat mai trziu de Philips i n
cele din urm de Xilinx) a avut ideea introducerii a dou plane de programare. Cu
ajutorul celor dou plane de progamare, aa cum se poate observa n figura 1.1, se
poate realiza orice circuit descris printr-o combinaie de pori I i SAU. Aceste
dispozitive s-au numit dispozitive PLA (Programmable Logic Array).
Caracteristicile acestor tipuri de circuite constau n urmtoarele:

conin dou planuri programabile;


orice circuit compus dintr-o combinaie de pori I sau SAU poate fi implementat;
ieirile porilor elementare I sunt distribuite la intrrile mai multor pori SAU;
densitate mare de logic disponibil pentru utilizator;

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

timp de propagare mare (Tpd), deci viteza de funcionare era relativ mic (mai
mic dect a circuitelor PAL prezentate mai jos).
Intrri

AND

AND

AND

AND
OR

OR

OR

Ieiri

Figura 1.1: Exemplu de dispozitiv PLA.


O alt companie MMI (mai trziu preluat de compania AMD) a modificat aceast
arhitectur obinnd arhitectura PAL (Programmable Array Logic - figura 1.2).
Modificarea introdus de MMI a constat n fixarea unui plan programabil (planul
SAU), n acest fel valoarea lui Tpd a fost micorat. Tot n urma acestei modificri,
complexitatea circuitelor programabile a fost redus. Dezavantajul a constat n pierderea
flexibilitii oferit de circuitele programabile PLA.
Alte arhitecturi au urmat acestora, (de exemplu PLD - Programmable Logic Device)
dar fr a avea succesul comercial al arhitecturilor PLA sau PAL.
Toate circuitele din aceast familie erau programate electric i erau terse n
aproximativ 20 de minute folosind lumin ultraviolet. Toate aceste circuite logice
programabile au fost incluse n categoria circuitelor SPLD (Simple PLD).
Urmtoarele circuite logice aprute sunt circuitele CPLD - figura 1.3 (Complex
Programmable Logic Device). Conceptul acestor dispozitive presupune utilizarea de
blocuri PLD sau macrocelule, interconectate ntre ele, ntr-un singur circuit.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

Intrri

AND
OR
Ieiri

AND

AND
OR
AND

Figura 1.2: Arhitectur PAL produs de MMI - Birkmer 1978.


Aceste circuite opereaz n prezent la viteze de 200MHz. O caracteristic important a
acestor circuite este aceea c modelul de timp pentru circuitele proiectate este uor de
determinat.

Figura 1.3: Arhitectur CPLD. Numrul maxim de pori este 200.


Dispozitivele CPLD posed o serie de caliti, care le fac utilizabile nc i n prezent:

ofer cea mai simpl cale de implementare a unui proiect. Odat ce proiectul a
fost descris ntr-un limbaj HDL (Hardware Design Language), programatorul
utilizeaz un set de utilitare de dezvoltare CPLD n vederea optimizrii i
simulrii circuitului proiectat. Modificrile ulterioare fcute circuitului proiectat
sunt reimplementate n circuitul CPLD iar testarea poate avea loc imediat.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

costuri de dezvoltare reduse. Costurile achiziionrii programelor de optimizare


i simulare n cazul circuitelor CPLD sunt reduse (programele de implementare,
optimizare i testare oferite de Xilinx sunt gratis).

modificarea uoar a circuitelor proiectate. Aceast calitate se datoreaz faptului c


un circuit CPLD este reprogramabil. Este foarte uor s se fac o modificare a
proiectrii, implementrii i testrii chiar prin apeluri la distan.

aria de implementare este redus. Aceast calitate este n direct coresponden


cu calitatea uneltelor software folosite pentru optimizarea circuitului proiectat. Cu
ct efortul de optimizare este mai mare cu att timpul de procesare necesar este
mai mare. Odat ce circuitul proiectat funcioneaz conform specificaiilor, se
trece la implementarea n mas. Acum exist o multitudine de firme productoare
de chip-uri care preiau doar fiierul obinut cu ajutorul programelor utilitare de
implementare i ofer circuitul hardware.

n 1985, compania numit Xilinx, aduce un nou concept. Realizarea unui circuit cu o
structur regulat care s conin celule logice sau module, interconectate ntre ele i
asupra crora utilizatorul s aib un control complet. Acest lucru implic faptul c
utilizatorul poate proiecta, programa i aduce modificri unui circuit oricnd este necesar.
Circuitele de acest tip poart numele de Field Programmable Gate Array FPGA (figura
1.4). Numrul de pori coninute de un circuit FPGA depete 10 milioane.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

Figura 1.4: Arhitectur FPGA (Xilinx - Freeman - 1985); peste 10.000.000 de


pori.
Actualmente exist dou tipuri de baz de circuite FPGA:
SRAM FPGA
OTP (One Time Programable) FPGA
Aceste dou tipuri difer prin modalitatea de implementare a celulelor logice, precum i
prin mecanismul utilizat pentru realizarea conexiunilor n interiorul circuitului. Aa cum
se poate uor intui, piaa de circuite FPGA este dominat de ctre SRAM FPGA.
Dac la circuitele FPGA de tipul OTP se utilizeaz pori logice tradiionale, pentru
implementarea circuitului proiectat, la cele de tipul SRAM se utilizeaz LUT (Look Up
Table).

Circuite secveniale sincrone


Definiie: Sistemele digitale n a cror componen exist elemente de memorie precum
i elemente logice combinaionale se numesc circuite secveniale.
Ieirea unui circuit secvenial la orice moment de timp este o funcie de intrrile
externe ale sale i de starea sa intern la acel moment de timp. Starea circuitului este
definit de coninutul elementelor de memorie din circuit i este o funcie de strile
anterioare i de intrrile circuitului.
Exist dou tipuri de circuite secveniale: sincrone i asincrone. Comportarea unui
circuit sincron depinde de valorile semnalului la momente discrete de timp.
Comportarea unui circuit asincron depinde de ordinea n care se modific semnalele de
intrare, aceste modificri putnd aprea la orice moment de timp. Instanele de timp
discrete ntr-un circuit sincron sunt determinate de un semnal de control, uzual denumit
ceas .
Circuitele secveniale sincrone utilizeaz bistabilele ca elemente de memorie. Un
bistabil este un circuit electronic care poate memora l sau 0. Un bistabil poate memora
una din cele dou stri logice pn la apariia frontului de ceas. n figura 1.5 sunt
prezentate simbolurile Xilinx ale celor mai utilizate bistabile: D, JK i T, mpreun cu
tabelele lor de excitaie.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

a)

c)

b)

Figura 1.5: Bistabilele T (a), D (b), i JK (c); simboluri i tabele de excitaie.


Procedura clasic urmat n cazul proiectrii oricrui circuit secvenial sincron
este urmtoarea:
1. se construiete diagrama logic a circuitului pornind de la enunul problemei;
2. se determin numrul de bistabile p necesare, pornind de la numrul de stri ale
diagramei stabilite la pasul l, utiliznd formula: 2 p - 1 < n < 2p , unde n
reprezint numrul de stri;
3. se asigur cte o etichet de lungime p bii pentru fiecare stare;
4. se stabilete tabela strilor de tranziie i tabela de ieire;
5. se determin o tabel de intrare pentru fiecare bistabil, utiliznd tabelele de
excitaie prezentate n figura 1.5;
6. se determin ecuaiile de intrare pentru fiecare intrare a bistabilelor ce compun
circuitul secvenial sincron;
7. se deseneaz diagrama circuitului.
Pentru a exemplifica procedura enunat se consider un exemplu practic. Se dorete
proiectarea unui automat folosit n distribuirea buturilor rcoritoare. Se presupune c
fiecare sticl cost 15.000 lei. Automatul accept monede de 5.000 lei precum i
bancnote de 10.000 i 50.000 lei.
Se presupune existena unui mecanism care sorteaz banii primii i emite trei semnale,
cte unul pentru fiecare tip. Cele trei semnale determin tranziii ale automatului dintr-o

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

stare n alta n funcie de valorile lor. Automatul trebuie s elibereze sticla i restul
corect n cazul in care suma acumulat este mai mare dect 15.000 de lei.
Pasul 1. Diagrama logic corespunztoare enunului problemei este prezentat n figura
1.6.

Figura 1.6: Diagrama logic pentru automatul de distribuit buturi rcoritoare.


Pasul 2. n diagrama din figura 1.6 se poate observa c numrul de stri este 11.
Deoarece 24 este primul numr mai mare dect 11, rezult c vor fi necesare 4 bistabile.
Bistabilele utilizate n implementare sunt bistabile de tipul D. Ele vor fi numerotate D0, ...
D3 iar tabela de excitaie utilizat este cea prezentat n figura 1.5.
Pasul 3. Codificarea strilor este urmtoarea: A - 0000, B - 0001, C - 0010, D - 0011, E 0100, F - 0101, G - 0110, H - 0111,I - 1000, J - 1001, K - 1010.
Pasul 4. Din diagrama de stri stabilit la pasul l, se poate deduce tabelul 1.1. Codificarea
semnalelor cuprinse n tabelul 1.1 este urmtoarea:

M, B1 , B2 - semnale care se activeaz cnd o moned de 5.000 lei, bancnot de 10.000


/ 50.000 lei este introdus n aparat;

EM, EB1 - semnal care se activeaz cnd o moned de 5.000 lei, bancnot de 10.000
lei trebuie returnat de ctre aparat;

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

ESB - semnal care se activeaz M B1 B2 cnd o sticl de butur rcoritoare


trebuie eliberat de ctre aparat.

Stare iniial Stare Final

Condiii

A - 0000

Comenzi

0001

M B1 B2

0010

M B1 B2

0111

M B1 B2

0000

M B1 B2

0000

M B1 B2

ESB

I
C

1000
0010

M B1 B2
M B1 B2

EBl & ESB

0001

M B1 B2

0011

M B1 B2

0000

M B1 B2 + M B1 B2

0010

M B1 B2

E
D

0100
0011

---

EBl

F
E

0101
0100

M B1 B2
---

EBl

G
F

0110
0101

M B1 B2
---

EBl

A
F
H

0000
0101
0111

M B1 B2
-----

EM
EBl

I - 1000

J
I

1001
1000

J - 1001

K
J
A

1010
1001
0000

B - 0001

C - 0010

D - 0011
E - 0100
F - 0101
G - 0110
H - 0111

K - 1010

EBl & ESB

EBl & ESB


ESB + EM & ESB

M B1 B2
--M B1 B2
---

EB l

M B1 B2
---

EBl

EBl

Tabelul 1.1: Tabelul strilor de tranziie.


Pasul 5. n acest pas se elaboreaz tabelele K-V de minimizare pornind de la tabelul 1.1
i tabelul de excitaie pentru bistabilul D din figura 1.5. Rezultatul obinut este prezentat

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

n figura 1.7. Aceast tabel este valabil doar pentru bistabilul 4, corespunztor intrrii
D3.

Figura 1.7: Tabela K-V de minimizare pentru D3.


Rezultatul obinut n urma minimizrii tabelei K-V din figura 1.7 este:
D3

y1 y 3 + y 0 y 2 M B1 B2

(1.1)

n mod analog se deduc i celelalte funcii de excitaie. Rezultatele obinute sunt:

D2

= y 2 y1 + y 2 y 0 + M B1 B2 y 3 y1 y 0 + y 2 y 0 + M B1 B2 y 3 y1 y 0 + y 2 y1

D1

= M B1 B2 y 2 y1 y 0 + y 3 y 0 + M B1 B2 y 3 y 2 y1 + y1 y 0 + y 3 y 2

M B1 B2 y1 y 0 + M B1 B2 y 0 + M B1 B2 y1 y 0
D0

(1.2)

y 2 y1 y 0 + M B1 B2 y1 y 0 ( y 2 + y3 ) + M B1 B2 y 0 + B1 y 3 y 2 y 0

M B2 + M B2 y1 + M B1 B2 y 2 y1 y 0

Pasul 6. Pentru fiecare semnal de ieire (EM, EB1 i E S B) se determin cte o tabel
K-V cu ajutorul creia se va stabili forma canonic. Spre exemplu, pentru semnalul
EM, pornind de la tabelul 1.1, se poate deduce tabela K-V prezentat n figura 1.8.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

10

Figura 1.8: Tabela K-V de minimizare pentru EM.


Conform tabelei K-V prezentat n figura 1.8 se poate deduce urmtoarea form
canonic pentru EM:
EM

y 3 y1 y 0 M B1 B 2 + y 2 y1 y 0

(1.3)

Procednd n mod analog pentru semnalele EB1 si ESB se obin urmtoarele forme
canonice:

)
y y [M B B (y + y ) + M B B ( y y ) + M B B y y ] (1.5)

EB1 = y3 y2 y1 y0 + MB1 B2 y3 y2 y1 + y2 y1 y0 + MB1 B2 y3 + y1 y0 + y2 y1 (1.4)

ESB =

Pasul 7 . Pentru desenarea diagramei circuitului se folosete o procedur destul de


laborioas care va fi prezentat n paragraful urmtor.

Implementarea unui circuit secvenial folosind Xilinx ISE


Cu ajutorul pachetului software WebPACK ISE, proiectele diverselor circuite pot fi
introduse foarte uor i rapid utiliznd limbaje de descriere cum sunt VHDL sau Verilog
sau utiliznd utilitarul Schematic . Acest utilitar folosete metoda tradiional de
proiectare, utiliznd biblioteci de pori logice i circuite logice programabile. Marele
dezavantaj al acestei metode este faptul c proiectul rezultat este dependent total de
tehnologia i circuitul FPGA ales la nceputul proiectrii. Un alt dezavantaj major l
constituie faptul c circuitele elaborate cu acest utilitar nu mai respect conceptul de
reutilizare.
Acest concept este deosebit de important n industrie, unde un circuit odat proiectat este
folosit pentru orice platform sau circuit FPGA/CPLD existent. Acest concept este
valabil pentru circuitele proiectate folosind limbaje de descriere hardware cum sunt
VHDL sau Verilog.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

11

OBSERVAIE . Mediul de programare Xilinx WebPACK ISE este prezentat n detaliu n


Anexa A. Se recomand citirea cu atenie a acestei anexe naintea nceperii realizrii
oricrei proiectri.
Proiectarea unui circuit cu ajutorul utilitarului Schematic presupune parcurgerea
urmtorilor pai:
1. Stabilirea circuitului i a familiei de circuite FPGA/CPLD utilizate n
implementarea circuitului proiectat.
Din meniul File se selecteaz opiunea New Project . Aici se alege un nume
pentru proiect, spre exemplu laboratorl. Pentru a putea implementa fizic
proiectul n final, se introduce XC9500 CPLDs n cmpul Device Family, Auto-PQ
XC9500 n cmpul Device i XST Verilog n cmpul Design Flow. n final se
selecteaz opiunea New Source din meniul Project.
n noua fereastra deschis se selecteaz opinea Schematic i se introduce un
nume pentru circuitul proiectat, spre exemplu soft- drink. Se execut Next i apoi
Close. Dac toate operaiile au fost realizate cu succes, atunci o pagin nou de
lucru, ca n figura 1.9, devine disponibil pentru a realiza circuitul dorit, utiliznd
doar circuitele din biblioteca XC9500 CPLD.
n figura 1.9 sunt prezentate doar cteva din opiunile disponibile. Restul
opiunilor pot fi uor descoperite dac sgeata mouse-ului este mutat deasupra
opiunii dorite.
2. Proiectarea circuitului dorit utiliznd doar circuite componente ale bibliotecii
XC9500 CPLD. Circuitul proiectat va conine patru bistabile D precum i
logica aferent implementrii ecuaiilor de la 1.1 pn la 1.4. Este important
pentru simulare ca proiectul s conin porturile de intrare i de ieire.
nainte de a trece la pasul urmtor, se verific dac implementarea este corect. Pentru
aceasta se alege opiunea Check Schematic din meniul Tools.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

12

Figura 1.9: Mediul de proiectare Schematic .


3. Ultimul pas, naintea simulrii, este crearea fiieirului netlist. Acesta este un
fiier text echivalent cu circuitul generat la pasul anterior. El reprezint o
cale compact pentru alte programe care doresc s "neleag" ce pori logice
exist n proiect, cum sunt ele conectate i care sunt denumirile porturilor de I/O.
Formatul EDIF (Electronic Digital Interchange Format) reprezint standardul industrial
pentru fiierele netlist. Xilinx ofer un format propriu pentru fiierul netlist, formatul
XNF (Xilinx Netlixt Format).

2. Desfurarea lucrrii
1. Fololosind ecuaiile 1.1 pna la 1.5, utilitarul Schemtic precum i circuitele
disponibile n biblioteca XC9500CPLD, se va implementa circuitul secvenial
prezentat n figura 1.6.
2. Se va simula circuitul obinut la punctual 1, folosind simulatorul ModelSim.
3. Se va implementa automatul obinut prin intermediul pachetului de dezvoltare
Xilinx WebPACK ISE 6.2i n circuitul CPLD XC9500.
Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

13

3. Probleme propuse
= x y + x + x y z .

1. Se d funcia booleana: F

Determinai tabela de adevr a acestei funcii.

Determinai diagrama logic utiliznd expresia booleana original.

Simplificai expresia algebric utiliznd algebra booleana.

Determinai tabela de adevr a expresiei simplificate i artai c este aceeai cu


cea determinat la punctul a.

Desenai diagrama logic a expresiei simplificate i comparai numrul total de


pori logice folosite cu numrul total de pori logice folosite n diagrama stabilit
la punctul b.

2. Simplicai urmtoarele funcii booleene utiliznd diagrame K-V:

F(A, B, C, D) =

(4,6,7,15)

F(A, B, C, D) =

(3, 7, 11, 13, 14, 15)

F(A, B, C, D) =

(0, l, 2, 4, 5, 7, 11, 15)

F(A, B, C, D) =

(0, 2, 4, 5, 6, 7, 8, 10)

3. S se proiecteze i s se simuleze utiliznd WebPACK ISE, un numrtor care


numr cresctor/descresctor de la 0 la 15.
4. S se proiecteze i s se simuleze utiliznd WebPACK ISE, un circuit secvenial
care recunoate urmtoarea secven: 0001 1000.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

14

2
Proiectarea aplicaiilor
folosind ierarhii de module
1. Prezentare teoretic
n cadrul acestui laborator se va prezenta metodologia de proiectare TOP DOWN
utilizat n cazul proiectrii oricrui circuit netrivial. Deasemenea, vor fi prezentate o
parte din utilitarele cuprinse n pachetul de dezvoltare Xilinx WebPACK ISE 6.2i care
reduc drastic timpul alocat implementrii i testrii unui circuit.
Actualmente, n industrie, proiectele realizate sunt deosebit de complexe. Metoda
utilizat n vederea proiectrii lor este tehnica TOP DOWN . Conform acestei metode,
proiectul este mprit n module, fiecare modul fiind implementat i testat separat,
urmnd ca la final modulele s fie combinate. WebPACK ISE 6.2 pune la dispoziia
proiectantului o serie de utilitare care pot fi utilizate n proiectarea modulelor precum
CORE Generator, State Diagram, HDL Design i DCM Wizard . n final, combinarea
tuturor modulelor se va realiza prin intermediul utilitarului Schematic . Pentru a
exemplifica metoda TOP DOWN precum si utilitarele disponibile n WebPACK ISE 6.2,
se va considera implementarea urmtoarei secvene de program:
for (x = 0, y = 3, i = 0, i 10; i = i + 1)
x = x + y;
if (x < 0)
y = 0;
else
x = 0;

Numerele se consider binare de 8 bii iar valoarea sumei x = x + y va fi afiat cu


ajutorul unui dispozitiv LCD cu apte segmente. Resursele hardware necesare
implementrii secvenei de program sunt prezentate n figura 2.1.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

15

Toate aceste resurse vor fi implementate pentru circuitul CPLD XC9500 aflat n dotarea
laboratorului. Primii pai de creare a unui proiect, selectarea circuitului FPGA dorit, etc.
se presupun cunoscui i realizai.

Figura 2.1: Resursele hardware necesare implementrii secvenei de cod.


ntreaga implementare realizat ca exemplu pstreaz principiul reutilizabilitii. n
consecin, modulele sunt implementate utiliznd limbajul VERILOG i nu se va
face apel la librria Xilinx, disponibil pentru acest tip de circuit CPLD. Singurul modul
implementabil cu ajutorul utilitarului State Diagram este modulul FSM.
Modulul registru - Se proiecteaz n Verilog conform urmtoarei proceduri:

Se selecteaz opiunea New Source din cadrul meniului Project. n fereastra nou
aprut se alege Verilog Module urmnd s se introduc numele modulului, spre
exemplu registru.

Urmtoarea fereastr este dedicat definirii intrrilor/ieirilor modulului


specificnd pentru fiecare semnal numele, tipul semnalului (I/O), bitul cel
mai semnificativ precum i bitul cel mai puin semnificativ. n vederea unei
reutilizabiliti ct mai mare se ignor acest pas.
Pentru implementrile viitoare este mai bine s se defineasc dimensiunea
oricrui semnal de I/O prin intermediul unui parametru Width. Dac ntr-un alt
proiect este nevoie de intrri de 32 bii, spre exemplu, este suficient modificarea
doar a acestui parametru, restul implementrii rmnnd nemodificat.

Se implementeaz modulul dorit, utiliznd sintaxa i construciile permise de


Verilog. Spre exemplu, implementarea registrului necesar proiectului poate fi
observat n figura 2.2.

Se creeaz un simbol care va fi utilizat n schema final prin apelarea utilitarului

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

16

Create Schematic Symbol.

n cazul n care modulul proiectat este complex, se va realiza o simulare


comportamental a modulului utiliznd simulatorul ModelSim .

Figura 2.2: Secvena de cod Verilog pentru implementarea unui registru.


Aceast procedur se repet pentru proiectarea modulelor: sumator, convertor,
comparator-LEQ, comparatorLT, zero-gen, zece-generator i unu-generator.
Modulul FSM - Proiectarea lui se realizeaz cu ajutorul utilitarului State Diagram. Din
meniul Project se selecteaz opiunea New Source. n fereastra nou deschis se introduce
numele fsm i se selecteaz opiunea State Diagram. Panoul cu butoanele de lucru se afl
poziionat stnga fa de foaia virtual de lucru. Introducerea diagramei de stri se face
conform urmtoarei proceduri:

Se va selecta butonul Add State; apoi se va poziiona n cadrul foii virtuale


de lucru starea STATE0.
1.

Pentru modificarea numelui acestei stri se execut dublu click asupra strii
STATE0. n fereastra nou deschis se introduce A n loc de STATE0. n cazul
exemplului prezentat sunt necesare cinci stri: A, B, C, D, E.

2.

Se repet pasul 2 pn se introduc toate strile, care compun diagrama de


stri a circuitului.

3.

Se selectez butonul Add Transition pentru a aduga tranziiile dintr-o


stare ntr-o alt stare. n situaia n care, datorit unor condiii, se rmne

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

17

n aceeai stare, se va utiliza tot butonul Add Transition.


Dup selectarea butonului Add Transition, se alege starea iniial i apoi
starea urmtoare. n mod automat se va trasa o linie sau un arc de cerc
terminate printr-o sgeat care va uni cele dou stri selectate. Direciile
sgeilor vor indica modalitatea de parcurgere a strilor.
n cazul exemplului prezentat, strile sunt parcurse n ordine de la starea
A pn la starea E. Exist i o excepie: din starea C este posibil
rentoarcerea n starea B.

4.

Adugarea unei aciuni pentru o stare: aciunea unei stri arat cum
trebuie s se comporte ieirile circuitului ntr-o stare dat. Pentru a
specifica comportarea ieirilor ntr-o stare dat trebuie mai nti s se
selecteze starea dorit i apoi s se efectuez un dublu click. Fereastra
nou aprut are un buton, Output Wizard, utilizat pentru specificarea
comportrii ieirilor.
n cazul exemplului prezentat, n starea A, ieirile xCLEAR i iCLEAR
trebuie s aib valoarea zero. Specificarea acestor cerine se realizeaz cu
ajutorul urmtoarei secvene de operaii:

o Se selecteaz starea A i se execut dublu click;


o Se selecteaz butonul Output Wizard.
o n seciunea Output Wizard se selecteaz valorile DOUT = xCLEAR,
CONSTANT = 0;
o Se apas butonul OK pentru a asigna valoarea constant 0 ieirii
xCLEAR;
o Se selecteaz butonul Output Wizard.
o n cmpul Output Wizard se aleg valorile DOUT = iCLEAR,
CONSTANT = 0;
o Apsarea butonului OK implic asignarea valorii 0 ieirii iCLEAR;
o Se selecteaz butonul OK pentru a nchide fereastra Edit State.
Rezultatul aplicrii unei astfel de secvene de operaii poate fi observat n figura 2.3.
Odat cu creterea experienei n utilizarea utilitarului State Editor , se va observa c
acelai efect se obine i dac n interiorul cmpului Outputs din cadrul ferestrei Edit
State se introduce secvena xCLEAR = 0; iCLEAR = 0.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

18

Figura 2.3: Introducerea de actiuni pentru starea A.


5.

Se repet pasul 5 pn se epuizeaz toate strile, care compun graful strilor


circuitului.

6.

Adugarea condiiei RESET - Aceast condiie este deosebit de important


deoarece prima stare care este activat (starea de intrare), este indicat de
RESET. Pentru adugarea ei trebuie selectat butonul AddReset. Se alege punctul
iniial n jurul strii de intrare i apoi se selecteaz starea de intrare. n cazul
exemplului prezentat, punctul de start al condiiei RESET trebuie unit cu starea A.

7.

Trecerea dintr-o stare n alt stare se poate realiza fie prin intermediul unor
condiii, fie automat. n cazul automat, linia de tranziie care unete cele dou stri
nu conine nici o condiie. n cazul n care trecerea de la o stare ntr-o alt stare
se realizeaz numai prin intermediul unor condiii, aceste condiii trebuie
specificate.
Este suficient s se realizeze un dublu click pe linia de tranziie dorit pentru c
fereastra Edit Condition s fie deschis. n cadrul acestei ferestre, n cmpul
Condition se introduc condiiile care trebuie ndeplinite. Acest pas se repet pn
cnd sunt introduse toate condiiile care afecteaz funcionarea circuitului.
n cazul exemplului prezentat, circuitul trece din starea C n starea B numai dac i
< 0. Respectarea acestei condiii este dat de valoarea semnalului LT. Dac LT =
1, atunci inegalitatea i < 0 este adevrat, altfel LT = 0. Rezultatul implementrii
pailor prezentai poate fi observat n figura 2.4.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

19

Figura 2.4: Modulul FSM proiectat cu ajutorul utilitarului State Diagram.

Optimizarea circuitului FSM obinut - aceast opiune este absolut necesar s fie
selectat pentru a obine un circuit performant n funcie de un criteriu ales de noi,
spre exemplu viteza de funcionare a circuitului rezultat sau minimizarea ariei
ocupate de noul circuit. Intrarea n aceast procedur se realizeaz odat cu
selectarea butonului Optimize situat n bara orizontal de butoane. n cazul
exemplului prezentat, are loc urmtoarea succesiune de operaii:

1. Se selecteaz butonul Optimize aflat n bara orizontal de butoane;


2. Circuitul utilizat pentru implementare este XC9500 care este un circuit
Xilinx CPLD; de aceea se va alege opiunea CPLD/PAL;
3. Se dorete ca circuitul s funcioneze cat mai rapid (implicit aria
ocupat va fi mai mic), deci se va alege opiunea Speed(register
outputs);

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

20

4. Exist ansa, n cazul proiectelor care conin zeci sau sute de stri, ca
nu toate condiiile impuse s fie acoperite. Pentru a evita acest
neajuns se va alege opiunea Guarantee coverage.
Automatul
proiectat n figura 2.4 conine un numr mic de stri ceea ce va
conduce la selectarea opiunii Maximize Speed. Reduce Areea.
5. Urmtoarea fereastr se refer la optimizarea modului de ncrcare a
semnalelor de intrare ale automatului. Se prefer utilizarea setrilor deja
existente.

6. Automatul proiectat este translatat n cod Verilog/VHDL sau ABEL


pentru a putea fi apelat sub form de modul, ntr-un alt modul aflat pe
un nivel superior, n cadrul ierarhiei de module.
7. Unul dintre utilitarele cu care se pot realiza toi paii de optimizare
descrii este utilitarul Xilinx XST.
Rezultatul procedurii de optimizare a automatului cu stri proiectat este un fiier Verilog,
aa cum se poate observa n figura 2.5.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

21

Figura 2.5: Optimizarea modulului FSM rezult ntr-o descriere Verilog.


Modulul TOP Este considerat modulul de vrf i posed ca submodule toate modulele
proiectate pn n acest moment. Conform procedurii de proiectare Xilinx, el este n
mod obligatoriu proiectat cu ajutorul utilitarului Schematic. Proiectarea lui presupune
conectarea tuturor submodulelor componente i stabilirea semnalelor de intrare/ieire.
Nu trebuie pierdut din vedere faptul c modulul proiectat anterior, FSM, trebuie adugat la
proiect. Pentru aceasta, se selecteaz opiunea Add Source, din meniul Project, i se alege
fiierul FSM.v. Ultima etap este selectarea sursei FSM.v i lansarea procedurii Create
Schematic Symbol. n urma acestui pas, sunt create toate modulele necesare implementrii
circuitului dorit.
OBSERVAIE n codul surs al fiierului FSM.v fost introdus i o linie de cod prin
care ieirea yLOAD primete valoarea 0 indiferent de starea n care se gsete automatul.
Ultima etap a procesului de proiectare o constituie verificarea ntregului circuit
proiectat. Aceast etap presupune utilizarea unui simulator performant, de exemplu
ModelSim XE.
Urmtorul proces este procesul de sintez. Acesta presupune n primul rnd specificarea
exact a tipului de circuit CPLD folosit n procesul de implementare. n fereastra
Sources in Projects se poate observa c ntreaga proiectare realizat pn acum a fost
executat pentru Auto xc9500-.
Deoarece proiectarea a fost realizat independent de platforma utilizat (proiectarea
modulelor s-a executat n Verilog), este foarte simplu s se modifice tipul circuitului Xilinx
fr ns a modifica modulele deja proiectate.
Pentru a schimba tipul circuitului Xilinx, se face dublu click n fereastra Sources in Projects
pe Auto xc9500-. n noua fereastr se selecteaz n cmpul Device circuitul xc95108. Restul
cmpurilor sunt completate automat i nu este necesar s fie modificate. Pentru a putea lansa
utilitarul PACE, este necesar s se specifice fiierul de constrngeri. Pentru aceasta, se
adaug un nou fiier surs de tipul Implementation Constraints File la proiect, iar n fereastra
de editare a fiierului de constrngeri, se realizeaz urmtoarele operaii:

Se selecteaz celula (dublu click) Period din linia asociat intrrii de ceas CLK.

n fereastra Clock Period se definete semnalul de ceas. n cadrul exemplului


prezentat, au fost utilizate valorile deja existente.

Se nchide aceast fereastr selectnd butonul OK.

Se apas butonul Ports pentru a defini i celelalte porturi de intrare/ieire.


Spre exemplu, se selecteaz intrarea RESET i se utilizeaz butonul dreapta
al mouse-ului pentru a alege opiunea Pad to Setup unde se va specifica

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

22

comportarea semnalului.

Semnalele ledout0 . . . ledout6 au toate acelai comportament. Este indicat s


se grupeze aceste semnale ntr-unul singur ledout-gr i apoi, s se selecteze
opiunea Clock to Pad, pentru a specifica comportamentul grupului de semnale
ledout-gr.

Se salveaz toate modificrile fcute i apoi se prsete editorul de


constrngeri.

Dup realizarea fiierului de constrngeri trebuie invocat utilitarul grafic PACE care
realizeaz asignarea porturilor de intrare/ieire prezente n modulul TOP cu porturile
fizice ale circuitului CPLD. Procesul este foarte simplu i const n selectarea
intrrii/ieirii dorite i apoi alegerea pinului corespunztor. Fiecare pin este reprezentat
printr-un numr, semnificaia fiecrui numr regsindu-se n manualul circuitului oferit de
ctre productor.
Ultimul proces este cel de implementare. Acesta este un proces automat si nu ofer (n
cazul proiectrii cu circuite CPLD) nici o metod de a controla subprocesele sale. n
urma lui va rezulta un fiier cu extensia bit care va fi ulterior transferat n circuitul CPLD
fizic, testnd astfel funcionarea circuitului proiectat.

2. Desfurarea lucrrii
1. Se vor proiecta n Verilog i testa folosind ModelSim toate modulele care
alctuiesc schema funcional din figura 2.1.
2. Se va implementa i se va testa schema functional prezentat n figura 2.1
utiliznd Xilinx WebPACK ISE 6.2i i ModelSim.
3. Se va implementa fizic schema din figura 2.1 folosind circuitul CPLD XC9500,
aflat n dotarea laboratorului.

3.

Probleme propuse

1. S se implementeze o main automat de eliberare a buturilor rcoritoare


folosind circuitele FPGA/CPLD existente n laborator. S se elaboreze un raport
cu diferenele de proiectare observate.
2. Se consider un numrtor binar de 28 bii. S se proiecteze un circuit care
afieaz cei mai semnificativi patru bii n format hexazecimal utiliznd un dispozitiv
cu apte segmente. Pentru implementare se vor utiliza circuitele CPLD/FPGA din
dotarea laboratorului.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

23

3. S se proiecteze i implementeze folosind circuite CPLD/FPGA, un circuit


secvenial care s ndeplineasc urmtoarele cerine:

introducerea unei combinaii de la tastatur ca o secven de lungime 24.

combinaia introdus se memoreaz ca un cod.

orice alt combinaie introdus este ignorat (tastatura este blocat).

introducerea combinaiei permite deblocarea tastaturii i setarea unei alte


combinaii de cod.

4. S se proiecteze i implementeze jocul BLACKJACK utiliznd Xilinx WebPack


ISE 6.2i.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

24

3
Proiectarea dispozitivelor
aritmetice n virgul fix
1. Prezentare teoretic
Scopul acestui laborator este acela de a prezenta sumatorul carry look ahead precum i o
modalitate de implemetare a operaiilor de adunare, scdere, nmulire i mprire n
virgul fix. Reprezentarea numerelor n virgul fix este descris n standardul IEEE 754
i se presupune cunoscut.
Cuvintele calculatoarelor sunt compuse din bii, deci ele pot fi reprezentate ca numere
binare. Numrul de bii din care este compus un cuvnt se alege n funcie de precizia cu
care se dorete realizarea operaiilor n calculator. Spre exemplu, un cuvnt de 32 bii
ofer o gam de reprezentare cuprins ntre 0 i 232 - l (4.294.967.295).
Numerele ntr-un calculator pot fi fr semn sau fr semn. n cazul n care un numr
este reprezentat fr semn, el se codier numr pozitiv. Orice calculator folosete pentru
numerele binare cu semn reprezentarea n cod complementar fa de 2. Aceast
reprezentare are avantajul c toate numerele negative au l n bitul cel mai semnificativ, ea
devenind standardul universal pentru aritmetica de ntregi a calculatoarelor.
n cazul n care se lucreaz cu numere binare de dimensiuni mari: 32, 64 sau 128 bii,
este recomandat citirea/scrierea lor utiliznd o baz mai mare dect baza 2 i care s
asigure ulterior conversia rapid a numrului ntr-un numr binar.
Deoarece aproape toate dimensiunile de date de calculator sunt multipli de 4, utilizarea
numerelor hexazecimale pentru operaii de citire/scriere este o soluie des ntlnit.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

25

Conversia din binar n hexazecimal se realizeaz mecanic prin nlocuirea fiecrui grup
de patru cifre binare printr-o singur cifr hexazecimal i invers.

Proiectarea unei uniti aritmetice / logice


Unitatea Aritmetic/Logic (UAL) este dispozitivul care efectueaz operaiile aritmetice
i logice. Operaiile aritmetice i logice executate de ctre orice calculator sunt:
adunarea, scderea, I la nivel de bit, SAU la nivel de bit.
n calculator, adunarea se efectueaz prin adunarea celor dou numere bit cu bit de la
dreapta la stnga, transportul trecnd la urmtoarea cifr din stnga.
Scderea folosete adunarea: nainte de a fi adunat, scztorul este transformat ns n
negativul su.
Se va proiecta un circuit care implementez operaii aritmetice i logice pe l bit (UAL de 1
bit), urmnd ca acest circuit s fie multiplicat de 32 de ori, pentru a obine o unitate
aritmetic/logic, care lucreaz cu numere binare de lungime 32 bii (UAL de 32 bii).
Cele mai simple operaii de implementat sunt operaiile I i SAU, care necesit din punct
de vedere al resurselor hardware, doar o poart I cu dou intrri, o poart SAU cu dou
intrri i un multiplexor, aa cum se poate observa n figura: 3.1.a.)

Figura 3.1: UAL de 1 bit care realizeaz operaiile l i SAU.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

26

Urmtoarea operaie care va fi implementat este operaia de adunare. Pentru aceasta se


va utiliza un sumator de l bit care va fi adugat logicii deja existente. Unitatea aritmetic
logic de l bit care realizeaz operaiile: I, SAU i adunare este prezentat n figura
3.1.b.)
Pentru implementarea operaiei de scdere mai trebuie adugat un multiplexor i un
inversor resurselor hardware deja existente aa cum se poate observa n figura 3.1.c.
Conform acestei figuri, dac semnalul not_b = l i semnalul cin = l, atunci se obine
scderea n cod complementar fa de 2 a lui b din a.
Tot n figura 3.1 c.) se poate observa c, pentru realizarea operaiilor logice sau al
operaiei de adunare, este suficient ca semnalele not_b i cin s fie 0. Din aceast cauz
se pot combina aceste dou semnale ntr-o singur linie de control numit not_b1, ca n
figura 3.1.d.)
n cazul n care se adun doi operanzi cu acelai semn pot s apar cazuri de depire.
Acestea trebuie evideniate pentru a elimina situaiile n care rezultatul obinut poate fi
citit/interpretat eronat. O verificare simpl a depirii la adunare este s se constate
dac semnalul cin spre cel mai semnificativ bit este diferit de semnalul cout de la cel mai
semnificativ bit. Schema final pentru un UAL de l bit n care sunt semnalate situaiile de
posibil depire este prezentat n figura 3.1.d.)
Un circuit UAL de 32 de bii se realizez printr-o nlnuire de 32 de uniti UAL
de l bit. n cazul n care se dorete introducerea instruciunilor de ramificaie
condiionat, circuitului UAL de 32 bii i se mai adaug un inversor i o poart logic OR
cu 32 de intrri, aa cum se poate observa n figura 3.2.

Figura 3.2: UAL de 32 bii.


Aceste instruciuni determin o ramificare a controlului, fie dac dou registre sunt egale
n coninut, fie dac ele sunt diferite. Verificarea egalitii cu ajutorul circuitului UAL
se realizeaz prin scderea lui b din a i apoi testarea rezultatului cu zero. Astfel, dac se
adaug hardware pentru a se verifica dac rezultatul este 0, se poate testa egalitatea.
Metoda cea mai simpl de calcul presupune efectuarea unui SAU ntre toate ieirile, apoi
acest semnal s fie scos printr-un inversor.
Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

27

ZERO = rezultat 31 + rezultat 30 + ... + rezultat1 + rezultat 0

(3.1)

Sumatorul cu anticiparea transportului


n vederea determinrii factorilor generare i propagare transport se pornete de la
ecuaia care determin transportul de intrare pentru sumatorul 1.

= b0 cin0 + a 0 cin0 + a 0 b0

cin1

(3.2)

Factoriznd ecuaia 3.2, se obine urmtoarea ecuaie:

ci +1 = bi ci + ai ci + ai bi

= ai bi + ci (ai + bi )

(3.3)

Dac n aceast ecuaie se noteaz termenul ai bi cu g i i ai + bi cu pi atunci ecuaia


3.3 devine:

ci +1

= g i + p i ci

(3.4)

Termenii g i i pi se numesc generare transport i propagare transport. Dac n ecuaia


3.4 se presupune c g i = l, atunci rezult c ci +1 = 1. Aceasta nseamn c sumatorul
genereaz un transport ctre sumatorul urmtor, independent de valoarea intrrii cin.
Anolog, dac se presupune n ecuaia 3.4, g i = 0 i pi = 1 atunci rezult c ci +1 = ci ,
adic sumatorul propag transportul de la intrare la ieire.
Exemplu S se determine ecuiile pentru un sumator cu anticiparea transportului care
realizeaz suma a dou numere binare de 4 bii.
Soluie: Ecuaiile sunt urmtoarele:

c1 =
c2 =
c3 =
c4 =

g0 +
g1 +
g2 +
g3 +

p 0 c0
p1 g 0 + p1 p0 c0
p 2 g1 + p 2 p1 g 0 + p 2 p1 p 0 c 0
p3 g 2 + p3 p 2 g1 + p3 p 2 p1 g 0 + p3 p 2 p1 p 0 c 0

(3.5)

Aa cum se observ i n exemplul prezentat, aceast form simplificat conduce la un


volum considerabil de circuite logice chiar i pentru un sumator de 16 bii. Pentru a
nltura acest inconvenient este nevoie s se treac la un nivel superior de abstractizare.
Pentru a mri viteza, n cazul folosirii unui sumator de 16 bii, este necesar efectuarea
anticiprii transportului cu sumatoare de 4 bii. Noile semnale, P i G, vor semnifica propagarea i generarea transportului la nivel de bloc. Ecuaiile la nivel de bloc pentru transportul
Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

28

de intrare al fiecrui grup de 4 bii al sumatorului de 16 bii sunt prezentate n ecuaiile 3.6,
dar ele sunt asemntoare cu ecuaiile 3.5.

C1 = G0 + P0 c0
C 2 = G1 + P1 G0 + P1 P0 c0
C 3 = G2 + P2 G1 + P2 P1 G0 + P2 P1 P0 c0
C 4 = G3 + P3 G2 + P3 P2 G1 + P3 P2 P1 G0 + P3 P2 P1 P0 c0

(3.6)

unde:

P0
P1
P2
P3
G0
G1
G2
G3

=
=
=
=
=
=
=
=

p3 p 2 p1 p0
p7 p6 p5 p 4
p11 p10 p9 p8
p15 p14 p13 p12
g 3 + p3 g 2 + p3 p 2 g1 + p3 p 2 p1 g 0
g 7 + p 7 g 6 + p 7 p 6 g 5 + p 7 p6 p5 g 4
g11 + p11 g 10 + p11 p10 g 9 + p11 p10 p9 g 8
g15 + p15 g14 + p15 p14 g13 + p15 p14 p13 g12

(3.7)

Implementarea hardware este prezentat n figura 3.3.


Exemplu S se determine valorile gi, pi, Pi i Gi ale urmtoarelor dou numere de 16 bii: a
= 0001 1010 0011 0011 i b = 1110 0101 1110 1011. S se determine i valoarea
termenului C4.
Soluie :
Se determin nti valorile
pi = ai + bi .

gi

= ai bi

a: 0001 101000110011
b: 11100101 1110 1011

g i : 0000000000100011
pi : 1111 1111 1111 1011

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

29

Figura 3.3: Sumator pe 16 bii


Determinarea semnalelor P3, P2, P1 i P0 sunt simple operaii I ntre propagrile nivelului
inferior.
Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

30

P3
P2
P1
P0
G0
G1
G2
G3
C4

=
=
=
=
=
=
=
=
=

1111 = 1
1111 = 1
1111 = 1
1 0 11 = 0
0 + (1 0) + (1 0 1) + (1 0 1 1) = 0 + 0 + 0 + 0
0 + (1 0) + (1 1 1) + (1 1 1 0) = 0 + 0 + 1 + 0
0 + (1 0) + (1 1 0) + (1 1 1 0) = 0 + 0 + 0 + 0
0 + (1 0) + (1 1 0) + (1 1 1 0) = 0 + 0 + 0 + 0
0 + (1 0) + (1 1 1) + (1 1 1 0) + (1 1 1 0 0) =

= 0
(3.8)
= 1
= 0
= 0
0 + 0 +1+ 0 + 0 = 1

Se observ c la adunarea numerelor a i b de 16 bii exist un transport de ieire.

Algoritmul de nmulire al lui Booth


Acest algoritm ofer o modalitate de a nmuli dou numerelor binare ntregi cu semn
folosind reprezentarea cod complementar fa de 2.
Algoritmul exploateaz faptul c secvenele de 0 din nmulitor necesit doar deplasare, iar
secvenele de l din cadrul nmulitorului, cuprinse ntre rangurile 2 k 2 m , pot fi tratate ca
2 k +1 2 m .
Exemplu. Se consider numrul binar 001 110 (+14). Acest numr conine o secven de
l ntre poziiile 23 i 21. Rezult k = 3 i m = l. Numrul poate fi reprezentat ca: 2k+1 - 2m
= 24 - 21 = 16 - 2 = 14.
nmulirea M 14 (unde M reprezint nmulitorul iar 14 denmulitul) poate fi realizat
ca: M x 24 - M 21. Se observ c produsul poate fi obinut prin deplasarea
nmulitorului binar M de 4 ori la stnga i scderea lui M deplasat stnga, odat.
Algoritmul lui Booth necesit examinarea biilor nmulitorului i deplasarea produsului
parial. nainte de a deplasa produsul parial, nmulitorul poate fi adunat/sczut la/din produsul parial conform regulilor:
1. Qn = 0, Qn+1 = 0 sau Qn = l, Qn+1 = l - produsul parial nu se modific;
2. Qn = l, Qn+1 = 0 - se scade nmulitorul din produsul parial;
3. Qn = 0, Qn+1 = l - se adun nmulitorul la produsul parial.
n figura 3.4 sunt prezentate resursele hardware necesare implementrii acestui
algorithm precum i biii Qn i Qn+1.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

31

Figura 3.4: Resursele hardware necesare implementrii algoritmului lui Booth.


Semnificaia resurselor folosite n figura 3.4 este urmtoarea:

Registru BR registru care menine valoarea nmulitorului;

E registru de 1 bit folosit pentru memorarea valorii transportului rezultat n urma


operaiei de adunare;

Registru AC registru auxiliar de lucru;

Registrul QR registru care menine valoarea denmulitului

Qn reprezint cel mai puin semnificativ bit al denmulitului memorat n QR. Un registru
suplimentar Qn+1 este adugat la QR pentru a facilita inspectarea celor 2 bii ai
denmulitului. Acest registru este iniializat cu 0.
Un exemplu numeric pentru algoritmul lui Booth este prezentat n tabelul 3.1. Algoritmul
lui Booth este prezentat sub form de organigram n figura 3.5. Exemplul numeric
prezentat presupune c nmulitorul are valoarea -9 i denmulitul are valoarea -13 (-9 x 13).
11001
Qn Qn+1 BR + 1ashr
AC
QR Qn+10
SC
10110
010
= 01001 11100
0
11

0
00

Iniial
ashr
se
se scade
scade BR
BR

ashr
ashr
ashr

se adun BR

0000
11110
01001
01001
01001
00111
00100
00011
00010

10011
01011

00

101
001

11001
10101
01100

11
1

100
000
011

10111

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

32

Tabelul 3.1: Algoritmul lui Booth. Exemplu. ashr = deplasare aritmetic la


dreapta

Figura 3.5: Algoritmul lui Booth de nmulire a dou numere binare cu semn.

mprirea numerelor binare n virgul fix


Uzual, operaia de mprire este realizat folosind comparri succesive, deplasri i
operaii de scdere. mprirea binar este mai simpl dect mprirea zecimal, deoarece

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

33

biii care formeaz ctul sunt 1 sau 0 i de aceea nu este necesar s se estimeze de cte ori
dempritul sau restul parial este cuprins n mpritor.
Resursele hardware necesare implementrii operaiei de mprire sunt cele prezentate n
figura 3.6. Algoritmul hardware de mprire a dou numere binare n virgul fix este
prezentat sub form de organigram n figura 3.7.

Figura 3.6: Resursele hardware necesare operaiei de mprire.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

34

Figura 3.7: Organigrama operaiei de mprire.

2. Desfurarea lucrrii
1. Se va implementa n Verilog i simula folosind simulatorul ModelSim o
unitate aritmetic logic cu dimensiunea de 32 bii. Schema bloc este
prezentat n figura 3.2.
2. Se va proiecta, implementa n Verilog i testa funcionarea unui sumator cu
transport anticipat (carry look ahead), care opereaz cu numere de 8 sau 32
de bii.
3. Se va implementa n Verilog i testa cu ajutorul simulatorului ModelSim
algoritmul de nmulire al lui Booth.
4. Se va implementa n Verilog i testa cu ajutorul simulatorului ModelSim
algoritmul de mprire prezentat n figura 3.7

3. Probleme propuse
1. S se obin negativul lui 210 i apoi s se verifice rezultatul. Numrul este
reprezentat pe 32 de bii.
2. S se converteasc versiunea binar de 16 bii a lui 210 i - 210 n numere binare de 32
bii.
3. S se converteasc urmtoarele numere haxazecimale i binare n cealalt
baz: eca8642016 i 0001 0011 0101 0111 1001 1011 1101 11112.
4. S se scrie ecuaia pentru logica transportului anticipat la un sumator cu 64 bii,
utiliznd sumatoare de 16 bii ca blocuri hardware de baz. S se includ n
soluie un desen asemntor cu cel prezentat n figura 3.3.
5. Formulai o procedur hardware pentru detecia depirii (overflow) prin
compararea semnului sumei cu semnele celor dou numere binare. Numerele sunt
reprezentate n cod complement fa de 2.
6. Elaborai un algoritm sub form de organigram pentru adunarea/scderea a dou
Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

35

numere binare n virgul fix, dac numerele negative sunt reprezentate n cod
complement fat de l.
7. Demonstrai c produsul a dou numere, fiecare avnd n bii, ntr-o baz r are
drept rezultat un numr binar a crui lungime nu este mai mare de 2n bii.
Demonstrai c afirmaia de mai sus conduce la concluzia c n cazul operaiei de
nmulire nu putem avea depire.
8. Artai coninutul registrelor E, A, Q i SC (ca n tabelul 3.1) dac nmulitorul
este 10101 iar denmulitul este 11111. Semnele nu sunt incluse.
9. S se verifice cu ajutorul algoritmului lui Booth urmtoarea egalitate: 0010 x 1101
= 1111 1010.

4
Reprezentarea datelor.
Operaii aritmetice ZCB
(Zecimal Codificat Binar).
1. Prezentare teoretic

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

36

n cadrul acestui laborator se vor prezenta modalitile de reprezentare a numerelor n


calculatoarele numerice, precum i realizarea operaiilor de adunare i scdere a
numerelor ZCB.
n calculatoarele numerice, informaia memorat n format binar se regsete n
memorie sau n registrele procesorului. Registrele conin date sau informaii de
control. Informaia de control este format dintr-un grup de bii utilizat n vederea
specificrii secvenei semnalelor de comand necesare manipulrii datelor n registre.
Datele sunt numere i alte informaii codificate binar, care sunt prelucrate n vederea
obinerii unui rezultat numeric.
Toate tipurile de date, cu excepia numerelor binare, sunt reprezentate n registrele
calculatorului n form binar, deoarece acestea sunt alctuite din bistabile, care pot
memora informaie 0 sau l .

Reprezentarea numerelor
Un sistem de numeraie, care utilizeaz baza r este un sistem, care folosete
simboluri distincte pentru cifrele r. Fiecrei cifre i este asignat un simbol unic. irurile
prin care se reprezint numerele sunt compuse din simboluri. Pentru a determina cantitatea
reprezentat de un numr este necesar s se nmuleasc fiecare cifr cu un ntreg putere a
lui r i apoi s se formeze suma tuturor cifrelor ponderate.
Sistemul de numeraie zecimal este alctuit din zece simboluri: 0, 1, 2, 3, 4, 5, 6, 7, 8 i
9. irul de cifre 126.3 este interpretat ca: l 102 + 2 10 1 + 6 10 + 3 10-1 .
Sistemul de numeraie binar utilizeaz baza 2 rezultnd astfel numai dou simboluri 0 i
l, utilizate n cadrul acestui sistem de numeratie. irul de bii 101111 este interpretat ca:
l 25 + 0 24 + l 23 + l 22 + l 21 + l 20.
Sistemul de numeraie octal utilizeaz baza opt i este alctuit din urmtoarele
opt simboluri: 0, l, 2, 3, 4, 5, 6 i 7. irul de cifre 736 este interpretat ca (478)10 si
(111011110) 2 .
Sistemul de numeraie hexazecimal utilizeaz baza 16 i este alctuit din urmtoarele
simboluri: 0, l, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E i F. irul de cifre F3 este interpretat
(243)10 i (11110011)2.
Sistemul de numeraie binar este cel mai natural sistem pentru calculator (aa cum s-a
subliniat, circuitele bistabile pot memora doar 0 i 1), n timp ce pentru utilizator, sistemul
de numeraie zecimal este considerat ca sistem natural. O metod de soluionare a acestui
conflict o constituie convertirea tuturor intrrilor din format zecimal n format binar,
realizarea tuturor operaiilor aritmetice n binar i apoi convertirea rezultatului n format
zecimal.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

37

O alt metod este utilizarea numerelor binare codificate zecimal (ZCB). Este foarte
important s nu se confunde conversia numerelor zecimale n binar si codificarea
binar a numerelor zecimale. Cnd se realizeaz conversia numrului zecimal 99 ntrun numr binar se obine irul de bii 1100011, reprezentarea ZCB fiind 10011001.
Singura diferen const n simbolurile utilizate pentru reprezentarea biilor.
n tabelul 4.1 se poate observa codificarea numerelor zecimale n diferite sisteme de
numeraie.

Codurile complementare
Reprezentarea n cod complementar este utilizat n calculatoarele numerice pentru
simplificarea operaiei de scdere i pentru manipulri logice. Exist dou tipuri de
coduri complementare pentru fiecare baz r folosit: cod complementar fa de r i cod
complementar fa de r - 1. Dac r este substituit cu 2 atunci se obine cod complementar
fa de 2 i cod complementar fa de 1. Analog dac r este substituit cu 10.
Cod complement fa de r - 1
Fie dat numrul N n baza r avnd n ranguri. Reprezentarea numrului N n cod
complementar fa de r - l este definit ca (rn - 1) - N. n cazul numerelor zecimale, r = 10 i r
- l = 9, reprezentarea numrului N n cod complementar fa de 9 este (10n - 1) - N.
10n reprezint un numr care conine un singur l urmat de un numr de n digii 0. 10n - l
este un numr reprezentat de n digii 9. Dac n = 4, spre exemplu, 10 4 = 10000
i 104 - l = 9999. Concluzia care se impune este urmtoarea: complementul fa de 9 al
unui numr zecimal este obinut prin scderea fiecrui digit din 9. Ca exemplu, se
consider numrul N = 546700 dat. Reprezentarea numrului N n cod complementar fa
de 9 este: 999999 - 546700 = 453299.
Dac substituim r cu 2 atunci r - 1 = l, iar numrul N reprezentat n cod
complementar fa de l este (2n - 1) - N. Raionnd ca n cazul complementului fa de
9, se ajunge la concluzia urmtoare: complementul fa de l al unui numr binar este
obinut scznd fiecare bit din 1.

Numr
hexazecimal
0
1
2
3
4
5

Hexazecimal Numr
codificat
octal
binar
0000
0001
0010
0011
0100
0101

0
1
2
3
4
5

Octal codi- Numr


ficat binar ZCB
000
001
010
011
100
101

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

0000
0001
0010
0011
0100
0101

Numr
zecimal
0
1
2
3
4
5
38

6
7
8
9
A
B
C
D
E
F

0110
0111
1000
1001
1010
1011
1100
1101
1110
1111

6
7

110
111

0110
0111
1000
1001

6
7
8
9
10
11
12
13
14
15

Tabelul 4.1: Reprezentarea numerelor zecimale n diferite sisteme de numeraie.


Cnd se efectueaz scderea se observ c modificarea biilor este 0 n l sau l n 0.
Astfel, se poate concluziona: complementul fa de l al unui numr binar se obine prin
inversarea biilor numrului N. Spre exemplu, reprezentarea numrului N = 1011001
n cod complementar fa de l este 0100110. Dac r este substituit cu 8 sau 16 atunci
se scade fiecare digit al numrului N din 7 respectiv F.

Complementul fa de r
Complementul fa de r al unui numr de n digii, N, n baza r este definit ca rn - N n
cazul n care N 0 i 0 dac N = 0. Comparnd cu complementul fa de r - 1, se
observ c, complementul fa de r este obinut prin adugarea lui l la complementul
fa de r - 1. Astfel, complementul fa de 10 al numrului zecimal N = 2389 este 7610 +
l = 7611, iar complementul fa de 2 al numrului binar N = 101100 este 010011 + l =
010100.
Complementul fa de 10 poate fi ns format i aplicnd urmtoarea procedur:

rmn nemodificate toate cifrele zero cele mai puin semnificative;


se scade prima cifr diferit de zero (cea mai puin semnificativ) din 10;
se scad celelalte cifre pn la cifra cea mai semnificativ.

Conform procedurii, reprezentarea numrului N = 246700 n cod complementar fa de


10 este 753300. n mod similar se procedeaz n cazul reprezentrii n cod
complementar fa de 2. Se pstreaz toi biii cei mai puin semnificativi neschimbai
dac valoarea lor este 0, precum i primul bit cel mai puin semnificativ care are valoarea
1. Se nlocuiesc toi ceilali bii cu l dac valoarea lor este 0 si cu 0 dac valoarea lor
este 1. Numrul binar N = 1101100 este reprezentat n cod complement fa de 2 ca
0010100.

Alte coduri binare

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

39

n calculatoarele numerice precum i n diverse aplicaii este necesar s se utilizeze alte


coduri precum codul Gray, codul 2421, codul excess-3 Gray, etc. Acestea sunt prezentate
n tabelele 4.2 i 4.3.
Cod
Gray

Numr
zecimal
echivalent

0000
0001
0011
0010
0110
0111
0101
0100
Tabelul 4.2: Codul Gray.
Digital
zecimal
0
1
2
3
4
5
6
7
8
9

0
1
2
3
4
5
6
7

Cod
Gray

Numr
zecimal
echivalent

1100
1101
1111
1110
1010
1011
1001
1000

BCD
8421

2421

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001

0000
0001
0010
0011
0100
1011
1100
1101
1110
1111

8
9
10
11
12
13
14
15

Excess-3 Excess-3
Gray
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100

0010
0110
0111
0101
0100
1100
1101
1111
1110
1010

Tabelul 4.3: Diferite coduri pentru cifrele zecimale.

Operaii aritmetice ZCB


Existena unei astfel de uniti este justificat de faptul ca utilizatorul oricrui calculator
ofer datele de intrare n format zecimal i se ateapt ca i rezultatul afiat s fie tot n
format zecimal. Pentru calculatoarele numerice, soluia adoptat este de a converti
datele de intrare n date binare, de a efectua toate operaiile solicitate n mod binar i apoi
de a converti rezultatul n format zecimal pentru a fi vizualizat de ctre utilizator.
Toate calculatoarele numerice au n componena lor o unitate aritmetic zecimal
deoarece intrrile si ieirile sunt foarte frecvente. Exist ns si multe calculatoare
numerice, care au n componena lor hardware pentru calcule aritmetice n care datele sunt

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

40

reprezentate n format binar si zecimal. Utilizatorul poate specifica n acest caz cum s se
efectueze calculele, binar sau zecimal.

Sumator ZCB
Considerm adunarea a dou numere ZCB mpreun cu un posibil transport din stagiul
anterior. Fiecare cifr care compune un numr ZCB nu poate depi valoarea 9, deci suma
a dou cifre nu poate depi valoarea 9 + 9 + 1 = 19, unde l reprezint transportul din
etajul/rangul anterior.
Pentru realizarea sumei celor dou numere ZCB, exist sumatoare binare de 4 bii.
Sumatorul va forma suma n binar i valoarea ei se va ncadra n rangul 0 ... 19. Numerele
binare sunt prezentate n tabelul 4.4, folosind notaiile K, Z8, Z4, Z2 i Z1, unde K reprezint
transportul iar indicii literei Z sunt ponderile 8, 4, 2 i l, asignate celor 4 bii n codul
ZCB.

K
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1

Z8
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0

Sum binar
Z4 Z2 Z1
0 0
0
0 0
1
0 1
0
0 1
1
1 0
0
1 0
1
1 1
0
1 1
1
0 0
0
0 0
1
0 1
0
0 1
1
1 0
0
1 0
1
1 1
0
1 1
1
0 0
0
0 0
1
0 1
0
0 1
1

C
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1

Sum ZCB
S8 S4 S2
0
0
0
0
0
0
0
0
1
0
0
1
0
1 0
0
1 0
0
1
1
0
1
1
1 0
0
1 0
0
0
0
0
0
0
0
0
0
1
0
0
1
0
1 0
0
1 0
0
1
1
0
1
1
1 0
0
1 0
0

S1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1

Zecimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

Tabelul 4.4: Determinarea sumatorului ZCB.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

41

Examinnd coninutul tabelului 4.4, se deduce c atunci cnd suma binar este mai mic
sau egal dect 1001, numrul ZCB corespunztor este identic; nici o conversie nu este
necesar. Atunci cnd suma este mai mare dect 1001, se obine un numr invalid n
reprezentare ZCB.
Procedura de adunare a dou numere ZCB implic utilizarea unui sumator binar (la fiecare
moment de timp este realizat adunarea a cte unei cifre a numrului ZCB) i este
urmtoarea:
1. Biii cei mai puin semnificativi ai celor dou numere ZCB sunt nsumai
rezultnd o sum binar;
2. Dac suma obinut la pasul l este egal sau mai mare dect 1010, ea este
corectat prin adugarea valorii 0110;
3. Operaia realizat n pasul 2 va genera automat un transport ctre pasul 4;
4. Urmtoarea pereche de bii ZCB este nsumat mpreun cu transportul generat la
pasul 3;
5. Dac rezultatul obinut n pasul 4 este mai mare sau egal cu 1010, atunci el
se corecteaz prin nsumare cu valoarea 0110;
6. Se repet paii 1 - 5 pn cnd ultimile perechi de bii ZCB sunt adunate.
Circuitul logic care detecteaz corecia necesar este determinat pe baza tabelului 4.4.
O corecie este necesar atunci cnd K = 1. Condiia pentru realizarea coreciei poate
fi exprimat ca o funcie booleana aa cum se poate observa n ecuaia 4.1.

= K + Z8 Z 4 + Z8 Z 2

(4.1)

Un sumator ZCB care adun doi operanzi ZCB (adunarea biilor ZCB este realizat n
paralel) i care include logica de corecie este prezentat n figura 4.1.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

42

Figura 4.1: Schema bloc a sumatorului ZCB.

Adunarea i scderea ZCB


Datele zecimale pot fi adunate n trei moduri diferite aa cum se poate observa n figura 4.2.
Metoda paralel utilizeaz un numr de sumatoare ZCB egal cu numrul de cifre care
formeaz numrul ZCB. Suma este realizat n paralel i necesit doar o operaie elementar.
n cadrul metodei 2, cifrele sunt aplicate serial la intrrile unui singur sumator ZCB, ct timp
biii pentru fiecare cifr codificat sunt transferate n paralel. Suma este format prin
deplasarea numerelor prin sumatorul zecimal la fiecare moment de timp. Dac numrul
ZCB este format din k cifre, atunci vor fi necesare k operaii elementare, una pentru fiecare
deplasare zecimal.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

43

Figura 4.2: Modaliti de adunare ZCB


n cadrul metodei 3, biii sunt deplasai cte unul la fiecare moment de timp prin sumatorul
complet. Suma binar obinut dup patru deplasri trebuie corectat pentru a deveni o
cifr valid ZCB valid.
Scderea ZCB se realizeaz tot prin intermediul adunrii deoarece A - B = A + B + 1,
unde B nseamn complementul lui B fa de 9.

2. Desfurarea lucrrii
1. Se va implementa n Verilog i simula schema bloc prezentat n figura 4.1
folosind Xilinx WebPACK ISE 5.1i i simulatorul ModelSim.
2. Se vor implementa n Verilog i se vor simula cele trei circuite de adunare ZCB
prezentate n figura 4.2. Rezultatele obinute (timpii de funcionare) vor fi
comparai i se va stabili care dintre metode este cea mai eficient.

3. Probleme propuse
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

44

1. Determinai o procedur hardware pentru detectarea apariiei unei depiri prin


compararea semnului sumei cu semnele celor doi operanzi. Numerele sunt
reprezentate n cod complementar fa de 2.
2. Elaborai un algoritm sub form de diagram pentru adunarea i scderea a dou
numere binare dac numerele negative sunt reprezentate n cod complementar fa
de 1.
3. S se proiecteze i s se simuleze utiliznd Xilinx WebPACK ISE 6.2i un circuit,
care realizeaz conversia din codul Gray n codul binar i invers.
4. S se proiecteze i s se simuleze utiliznd Xilinx WebPACK ISE 6.2i un circuit,
care realizeaz conversia din codul BCD 8421 n codul binar i invers.
5. S se proiecteze i s se simuleze utiliznd Xilinx WebPACK ISE 6.2i un circuit,
care realizeaz conversia din codul 2421 n codul binar i invers.
6. S se proiecteze, simuleze i s se implementeze un sumator ZCB folosind
Xilinx WebPack 6.2i.
7. Utiliznd circuite combinaionale, s se implementeze i simuleze folosind
Xilinx WebPack 6. 2i un circuit complement ZCB fa de 9.
8. Utiliznd circuite combinaionale, s se implementeze i simuleze folosind
Xilinx WebPack 6.2i un circuit complement ZCB fa de 9. Digiii zecimali sunt
reprezentai n cod excess-3.
9. Proiectai circuitele hardware necesare operaiei de adunare/scdere a numerelor
ZCB dac numerele negative sunt reprezentate n cod complement fa de 10.
Indicai o modalitate de detecie a situaiei de depire.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

45

5
Uniti de execuie i
comand integrate. AMD 2901
i AMD 2909
1. Prezentare teoretic
Unitile de execuie se prezint sub forma unor circuite integrate pe scar medie/larg.
Ele sunt structurate pe un anumit numr de bii astfel nct prin concatenarea lor i
utilizarea unor circuite adiionale, se pot realiza sisteme de prelucrare pentru date
organizate pe 4, 8, 16,24,32,48 sau 64 de bii.
Unitile de execuie integrate s-au comercializat n asociaie cu unitile de comand
corespunztoare i cu o serie de circuite adiionale, formnd microprocesoarele pe
trane de bii, microprocesoarele "bit-slice", microprocesoarele "multi-chip" etc. Printre
cele mai rspndite familii de microprocesoare "bit-slice" s-au aflat i cele produse de
compania Advanced Micro Devices sub numele de AMD 2900.

AMD 2901
Unitatea de execuie AMD 2901 este organizat pe trane de 4 bii/circuit i este
prevzut cu elementele necesare cuplrii n cascad.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

46

Semnalele de comand se aplic sub forma unor vectori binari la terminalele circuitului,
fiind, de regul, preluate sub controlul unui circuit micro-secveniator integrat (AMD
2909, 2911) de la o memorie cu coninut permanent.
n figura 5.1 se prezint schema bloc a circuitului AMD 2901.

Figura 5.1: AMD 2901 - schem bloc.


Semnificaia resurselor hardware prezente n figura 5.1 este urmtoarea:

un ansamblu de 16 registre generale de cte 4 bii, organizate sub forma unei


memorii(RAM) biport, cu dou intrri de adrese, o intrare de date i dou ieiri de
date;
o unitate aritmetic-logic, cu transport anticipat, capabil s efectueze 3 operaii
aritmetice binare i 5 operaii logice i s genereze, att indicatorii de condiii:
depire, zero, semn, transport ( C n + 4 ), ct i condiiile de propagare ( P ) i
generare ( G ) ale transportului, la nivelul ntregului circuit;
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

47

un selector de date (selector resurse UAL) pentru cele dou intrri ale
unitii aritmetice-logice, care pot reprezenta combinaii ntre ieirile memoriei
biport (A, B), o intrare extern de date (D), constanta "ZERO" i ieirea unui
registru suplimentar - extensie (Q);
un selector de ieire din circuit, care furnizeaz prin intermediul unor tampoane TS
fie date de la ieirea A a memorie biport, fie datele de la ieirea UAL;
un registru auxiliar-extensie (Q), care poate fi ncrcat fie cu datele de la ieirea
UAL, fie cu propriul su coninut deplasat stnga/dreapta prin intermediul unei reele
logice de deplasare-multiplexor QSHIFT;
o reea de deplasare-multiplexor RAMSHIFT, plasat pe intrarea B a memoriei
biport RAM.
Conform figurii 5.1, vectorul de comand este compus din 9 bii dup cum urmeaz:
biii I 2 : 0 reprezint sursa UAL, biii I 5 : 3 reprezint funcia UAL iar biii I 8 : 6 reprezint
destinaia UAL.
Unitatea aritmetic-logic poate efectua, sub controlul semnalelor I 3: 5 , trei operaii aritmetice binare i cinci operaii logice, asupra operanzilor aplicai la intrrile R i S. n
tabelul 5.1, sunt prezentate funciile logice realizate de unitatea de execuie AMD 2901.

Microcod octal Grup


I 2:0

I 5:3

0
1

4
4

5
6
0
1
5
6
0
1
5
6
0

4
4
3
3
3
3
6
6
6
6
7

AND

OR

Funcie Microcod octal Grup


I 2:0

I 5:3

AQ
A B

2
3

6
6

DA
DQ

DQ
AQ
A B
D A
DQ
AQ

4
7
2
3
4
7
2
3
4
7
0

6
6
3
6
3
3
4
4
4
4
5

AB

MASK

A B

DA

MASK

DA

AQ
A B

DA

EXOR

EXNOR

Funcie

PASS

PASS

"ZERO"

Q
B
A
D
Q
B
A
D
0
0
0
0

AQ

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

48

3
4
7

7
7
7

DQ

INVERT

DQ

B
A
D

Tabelul 5.1: AMD 2901 - Funcii logice.


Funciile aritmetice realizate de ctre AMD 2901 sunt cele prezentate n tabelul 5.2.

Cn

Microcod octal
I 2:0

I 5:3

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

0
0
0
0
0
0
0
0
1
1
1
2
2
2
2
1
1
1
1
1
2
2
2
2

Grup
ADD

PASS

Decrementare

Complementul
fat de 1

Scdere n complementul fa de
1
Scdere n complementul fa de
1

= 0
Funcie
A+Q
A+B
D+A
D+Q
Q
B
A
D
Q1
B1
A1
D1
-Q 1
-B 1
-A 1
-D 1
QA1
BA1
AD1
QD1
AQ1
AB1
DA1
DA1

Cn

Grup
ADD plus 1

Incrementare

PASS

Complementul
fat de 2

Scdere n complementul fa de
2
Scdere n complementul fa de
2

= 1

Funcie
A+Q+1
A+B+1
D+A+1
D+Q+1
Q+1
B+1
A+1
D+1
Q
B
A
D
-Q
-B
-A
-D
QA
BA
AD
QD
AQ
AB
DA
DQ

Tabelul 5.2: AMD 2901 - Funcii aritmetice.


Microinstruciunea care controleaz unitatea de execuie posed 24 de bii. Biii 3 - 0 au
aprut ca urmare a nglobrii datei n microinstruciune. Cmpul D al
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

49

microinstruciunii (n figura 5.3 Data "D") se va extinde n incremeni de 4 bii odat cu


extinderea lungimii cuvntului prelucrat de ctre unitatea de execuie.
Cmpul C n este asociat cu transportul n rangul cel mai puin semnificativ al unitii de
execuie, fiind la latitudinea celui care scrie microprogramul.

AMD 2909
Secveniatorul de microprogram AMD 2909 face parte din familia de circuite AMD
2900 i constituie elementul de baz n jurul cruia este organizat unitatea de comand
microprogramat. Schema bloc a unitii de comand este prezentat n figura 5.2
Resursele hardware prezente n figura 5.2 sunt urmtoarele:

Multiplexor (MUX) 4 x (4:1);


Incrementator (INC);
Contor de microprogram (CMP);
Registru de microinstruciuni (RMI);
Memorie de tip PROM (PROM);
Comutator de adrese (CA);
Registru de ramificare (RR);
Indicatorul de stiv (IS);
Stiv cu capacitatea 4 cuvinte x 4 bii (STV).

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

50

Figura 5.2: AMD 2909 - schem bloc.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

51

n locaiile memoriei PROM, adresate cu ajutorul cmpului P3: 0 , sunt stocai vectori de
comand, care impun unitii de comand microprogramate efectuarea operaiilor
prezentate n tabelul 5.3.
P3: 0 - cod

Operaie

Mnemonica

hexa
0
1

Ramificare la adresa R dac F 0


Ramificare necondiionat la adresa R

JRNZF
JR

2
3
4
5
6
7
8
9
A
B
C
D
E
F

CONTINU
Ramificare la adresa D
Ramificare la subrutina cu adresa R dac F 0
Ramificare la subrutina cu adresa R
Revenire din subrutin
Ramificare la adresa coninut n vrful stivei (fr POP)
Terminare de ciclu i POP dac F = 0
PUSH i CONTINU
POP i CONTINU
Terminare de ciclu i POP dac C n + 4 = 1
Ramificare la adresa R dac F = 0
Ramificare la adresa R dac F3 = 1
Ramificare la adresa R dac OVR = l
Ramificare la adresa R dac C n + 4 = 1

CONT
JD
JSRNZF
JSR
RS
JSTV
TCPOZF
PUCONT
POCONT
TCPOC
JRZF
JRF3
JROVR
JRC

Tabelul 5.3: Setul de operaii pentru AMD 2909.


Proiectarea i simularea aplicaiilor dezvoltate pe circuitele AMD 2901 i AMD 2909
se vor realiza cu ajutorul simulatorului C#_AMD. Aplicaia C#_AMD ofer posibilitatea
de a urmri funcionarea pas cu pas a execuiei unui program.
Aa cum se poate observa i n figura 5.3, editorul este mprit n dou pri. Jumtatea
superioar a ferestrei prezint instruciunile linie cu linie, iar cea inferioar ofer
posibilitatea operrii unor modificri precum: introducere de linii noi (InsertLine),
respectiv tergerea anumitor linii din program (DeleteLine).
nceputul procesului de simulare se realizeaz odat cu selectarea butonului Test. n
fereastra Simulator sunt afiate: programul surs, instruciunea curent n format binar,
registrele unitii de execuie AMD 2901 i registrele de comand AMD 2909. Toate
resursele afiate n aceast fereastr au fost prezentate n figurile 5.1 i 5.2.
Exemplu. Se consider un microprocesor pe 4 bii realizat cu circuite din familia AMD
2900. Se dorete proiectarea i simularea unui contor pe 16 bii. Contorul este realizat
prin concatenarea registrelor de cte 4 bii R3, R2, R1, R0.
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

52

Soluie. Primul pas este realizarea algoritmului care rezolv cerinele impuse n enun.
Cu ajutorul ferestrei de editare, algoritmul este ncrcat n simulator aa cum se observ
n figura 5.3.

Figura 5.3: Algoritmul de implementare al unui contor pe 16 bii folosind circuite


din familia AMD 2900.
Se selecteaz butonul TEST pentru a simula aplicaia proiectat. Rezultatele simulrii la
un moment dat pot fi observate n figura 5.4. a) i b) funcie de interfaa selectat.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

53

Figura 5.4: Fluxul informaional n cazul implementrii unui contor pe 16 bii


folosind circuite din familia AMD 2900.

2. Desfurarea lucrrii
1. Se va elabora diagrama logic pentru exemplul prezentat n figura 5.3;
2. Cu ajutorul tabelelor 5.1, 5.2, 5.3, se va realiza programul care implementeaz
funcionarea unui contor pe 16 bii;
3. Cu ajutorul simulatorului JAMD se va introduce programul obinut i se va rula
pas cu pas. Se va observa coninutul resurselor microprocesorului la fiecare pas.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

54

3. Probleme propuse
1. S se proiecteze i s se simuleze folosind simulatorul JAMD, un numrtor
zecimal, hexazecimal, octal.
2. S se proiecteze i s se simuleze un program, care determin maximul a patru
numere.
3. S se proiecteze i s se simuleze algoritmul de nmulire al lui Booth.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

55

6
Proiectarea dispozitivelor
aritmetice n virgul mobil
1. Prezentare teoretic
n cadrul acestui laborator se vor prezenta algoritmii hardware pentru implementarea operaiilor de
adunare, scdere, nmulire i mprire a numerelor n virgul mobil utiliznd conceptele benzii
de asamblare.

Banda de asamblare
Banda de asamblare este o tehnic de descompunere a proceselor secveniale n suboperaii,
fiecare suboperaie putnd fi executat ntr-un segment special dedicat i n paralel cu alte
suboperaii. Rezultatul obinut n cadrul fiecrui segment este transferat urmtorului segment
din banda de asamblare. La rezultatul final se ajunge atunci cnd datele au trecut prin toate
segmentele benzii de asamblare.
Suprapunerea calculelor este posibil datorit asocierii unui registru fiecrui segment al
benzii de asamblare. Registrele au rolul de a izola segmentele astfel nct fiecare segment al
benzii de asamblare poate opera pe date distincte simultan cu operarea altor segmente.
Exemplu Se dorete aflarea rezultatul expresiei: Ai Bi + C i pentru i = 1 ... 7 .
Soluie Fiecare operaie poate fi implementat n cte un segment al benzii de asamblare.
Fiecare segment conine unul sau dou registre precum i un circuit combinaional aa cum
se poate observa n figura 6.1. Registrele R1 ... R5 primesc date noi la fiecare apariie a
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

56

frontului de ceas. Circuitul de nmulire precum i sumatorul din figura 6.1 sunt circuite
combinaionale.

Figura 6.1: Calculul expresiei Ai Bi + C i folosind banda de asamblare.

Coninutul registrelor benzii de asamblare este prezentat n tabelul 6.1.


Ceas

Segmentul 2 Segmentul 3
R3
R4
R5

1
2

Segmentul 1
R1
R2
Al
B1
A2
B2

A1 B1

C1

A3

B3

A2 B2

C2

A1 B1 + C1

A,

B4

A3 B3

C3

A2 B2 + C 2

5
6

A5
A6

B5
B6

A4 B4
A5 B5

C4
C5

A3 B3 + C 3

7
8

A7

B7

A6 B6

C6
C7

A7 B7

A4 B4 + C 4

A5 B5 + C 5
A6 B6 + C 6
A7 B7 + C 7

Tabelul 6.1: Coninutul registrelor benzii de asamblare.

Reprezentarea numerelor n virgul mobil


Reprezentarea numerelor n virgul mobil face obiectul standardului IEEE 754. Conform
acestui standard reprezentarea lor este alctuit din dou pri. Prima parte reprezint un
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

57

numr cu semn denumit mantis. Partea a doua specific poziia punctului zecimal i se
numete exponent.
Reprezentarea numerelor n virgul mobil poate fi fcut n precizie simpl sau dubl.
Folosirea preciziei simple impune o reprezentare a numrului utiliznd 32 de bii.
Primul bit (bitul cel mai semnificativ) este bitul de semn. Dac valoarea acestui bit este 0,
numrul este pozitiv, altfel numrul este negativ. Urmtorii 8 bii sunt alocai pentru
valoarea exponentului, iar ultimii 23 de bii reprezint mantisa. Gama de reprezenatre
n cazul preciziei simple este: -1.8 10-38 3.40 1038.
n cazul n care se folosete precizia dubl, numrul biilor utilizai pentru
reprezentarea numrului se dubleaz devenind 64. Primul bit (bitul cel mai
semnificativ) este bitul de semn. Exponentul este reprezentat pe urmtorii 11 bii,
iar mantisa sau fracia pe 52 de bii.
Reprezentarea general a unui numr n virgul mobil, folosind precizia simpl, este
dat n ecuaia 6.1.
(1) s (1 + MANTISA) 2 Exponent 127

(6.1)

Valoarea variabilei Exponent din cadrul ecuaiei 6.1 este 127 pentru a se evita valori
negative ale exponentului. Pentru precizia dubl, aceast valoare se modific devenind
1023.

Adunarea i scderea n virgul mobil


Resursele hardware necesare implementrii acestor operaii sunt prezentate n figura 6.2.

Figura 6.2: Resursele hardware necesare adunrii/scderii a dou


numere n virgul mobil.

Algoritmul necesit parcurgerea urmtoarelor etape:


[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

58

1. Se verific dac unul dintre operanzi este zero sau nu;


2. Se aliniaz mantisele;
3. Se adun sau se scad mantisele;
4. Se normalizeaz rezultatul obinut.
Algoritmul de adunare/scdere a dou numere n virgul mobil utiliznd tehnica band de
asamblare poate fi observat n figura 6.3.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

59

Figura 6.3: Adunarea i scderea a dou numere reprezentate n virgul mobil.

n cadrul segmentului l al benzii de asamblare, exponenii sunt comparai prin scdere.


Exponentul mai mare este ales ca exponent al rezultatului. Rezultatul diferenei indic de
cte ori mantisa asociat cu exponentul mai mic trebuie deplasat ctre dreapta. Astfel se
realizeaz alinierea mantiselor.
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

60

Variabila Valoarea1 memoreaz rezultatul comparrii. Dac bitul cel mai semnificativ al acestei variabile este 0, mantisa primului numr trebuie deplasat dreapta. Pentru a
memora numrul de deplasri care trebuie efectuate, au fost alocai 8 bii (Valoarea1[7 : 0]).
Dac Valoarea1[8] este l, atunci mantisa asociat numrului 2 trebuie deplasat dreapta de
un numr de ori egal cu valoarea lui Valoarea1[7 : 0]. Pentru implementarea sumatorului
care apare n cadrul benzii de asamblare se recomand utilizarea unui sumator cu transport
anticipat (CARRY LOOK AHEAD).
n cadrul segmentului 3 al benzii de asamblare, cele dou mantise sunt adunate sau sczute n
funcie de valoarea semnalului OP. Dac OP = 0 atunci trebuie realizat operaia de
adunare i, n consecin, cele dou mantise trebuie adunate. Dac OP = 1, operaia de
scdere trebuie realizat i, n consecin, cele dou mantise trebuie sczute.
Rezultatul pasului de adunare/scdere a mantiselor se reprezint pe 26 de bii. Bitul cel mai
semnificativ, bitul 25, este utilizat pentru a specifica dac mantisa este egal sau nu cu zero.
Restul de bii este folosit pentru a reprezenta registrele E i A concatenate.
Rezultatul este normalizat n cadrul segmentului 4 al benzii de asamblare. Cnd apare o
depire superioar, mantisa-rezultat este deplasat dreapta i exponentul este incrementat
cu o unitate. Cnd apare o depire inferioar, numrul de zerouri din cadrul mantisei
(poziiile cele mai semnificative) determin numrul de deplasri stnga al mantisei, numr
care trebuie sczut din exponent. Memorarea acestui numr se face prin intermediul
variabilei Valoarea2.
Dac bitul cel mai semnificativ al variabilei Valoarea1 este 0, atunci exponentul trebuie
deplasat spre stnga, altfel exponentul trebuie s fie deplasat spre dreapta. Numrul de
deplasri este indicat de ctre Valoarea2[7 : 0].
Rezultatele simulrii acestui algoritm folosind mediul de dezvoltare Xilinx pot fi observate n
figura 6.4.

nmulirea n virgul mobil


Operaia de nmulire n virgul mobil presupune realizarea urmtorilor pai:
1. Se verific dac unul dintre numere este zero sau nu;
2. Se adun exponenii;
3. Se nmulesc mantisele;
4. Se normalizeaz produsul.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

61

Figura 6.4: Rezultatele simulrii algoritmului de adunare/scdere.

Implementarea n band de asamblare al acestui algoritm poate fi observat n figura 6.5.


nmulirea a dou numere binare se realizeaz cu ajutorul unui circuit combinaional
(denumit matrice de multiplicare) care formeaz toi biii produsului odat. Aceasta este
cea mai rapid metod deoarece timpul necesar efecturii operaiei este egal cu timpul de
propagare al semnalului lund n calcul ruta cea mai dezavantajoas.
Circuitul matrice de multiplicare necesit un numr mare de pori, implementarea lui este
neeconomic, acesta fiind principalul motiv pentru care acest circuit nu a avut o rpndire
foarte mare pn la apariia circuitelor integrate. Proiectarea unui asemenea circuit ale
crui intrri ar avea dimensiunile de j respectiv k bii va necesita j k pori I i
sumatoare de ( j 1) k bii pentru a obine un produs de (j + k) bii.
Un exemplu de circuit matrice de multiplicare este prezentat n figura 6.6.
Trebuie remarcat c exponentul rezultat corect este obinut prin scderea valorii 127
din exponentul sum.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

62

Figura 6.5: Algoritmul de nmulire a dou numere n virgul mobil.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

63

Figura 6.6: Circuitul matrice de multiplicare pentru k = 4 i j = 3.

mprirea n virgul mobil


Algoritmul de mprire a dou numere reprezentate n virgul mobil necesit
parcurgerea urmtorilor pai:
1. Se verific dac unul dintre cei doi operanzi este zero sau nu;
2. Se iniializeaz registrele i se evalueaz semnul;
3. Se aliniaz dempritul;
4. Se scad exponenii;
5. Se mpart mantisele.
Algoritmul n band de asamblare al acestei operaii este prezentat n figura 6.7
mprirea a dou numere n virgul mobil normalizate va produce ntotdeauna un ct
normalizat. Din acest motiv, spre deosebire de celelalte operaii n virgul mobil,
rezultatul operaiei de mprire nu necesit normalizare.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

64

Figura 6.7: Algoritmul de mprire a dou numere n virgul mobil

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

65

2. Desfurarea lucrrii
1. Se va proiecta n Verilog utiliznd Xilinx WebPACK ISE 5.1i algoritmul de
adunare/scdere a dou numere reprezentate n virgul mobil, prezentat n figura
6.3.
2. Se va verifica funcionarea algoritmului utiliznd simulatorul ModelSim.
3. Se va utiliza circuitul Xilinx Spartan XC2S200E pentru a verifica timpii reali de
funcionare a circuitului proiectat.

3. Probleme propuse
1. S se proiecteze i simuleze utiliznd Xilinx WebPACK 5.2i i limbajul Verilog un
circuit combinaional care s realizeze operaia de nmulire dintre dou numere
binare. Se va utiliza schema prezentat n figura 6.6;
2. S se proiecteze i simuleze utiliznd Xilinx WebPACK 5.2i i limbajul Verilog un
circuit care s realizeze operaia de nmulire n virgul mobil precizie simpl
prezentate n figura 6.5;
3. S se proiecteze i simuleze utiliznd Xilinx WebPACK 5.2i i limbajul Verilog un
circuit care s realizeze operaia de mprire n virgul mobil precizie simpl
prezentate n figura 6.7;

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

66

7
Procesorul didactic DLX
1. Prezentare teoretic
Procesorul didactic DLX este compus din urmtoarele resurse hardware:
1. UAL (Unitate arimetic - logic pentru ntregi);
2. RG[32 : 31] - registre generale biport;
3. TS1, TS2, TD - registre tampon pentru registrele generale. Acestea sunt transparente programatorului;
4. TEMP - registru temporar, transparent pentru programator;
5. RAI - Registrul adresei de ntrerupere (Registru Special);
6. CP - Contorul de Program;
7. RA, RD - Registrul de adrese, registrul de date;
8. RI - Registrul instruciunii;
9. M - memoria principala.
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

67

Operaiile executate de unitatea aritmetic i logic sunt operaii aritmetice, logice i


operaii de deplasare. Operaiile de deplasare pot fi: S1 << S 2 - deplasare logic
stnga, S1 >> S 2 - deplasare logic dreapta i S1 >> aS 2 - deplasare aritmetic
dreapta.
Instruciunile procesorului DLX au 32 de bii, dintre care 6 sunt folosii pentru
codificarea operaiei si au urmtorul format:
1. Instruciuni de tipul I - acestea sunt instruciunile de tipul imediat i au formatul
prezentat n figura 7.1 a.). Instruciunile conin cmpurile: COP - cod operaie, rs, rd adresele registrului surs i destinaie, imediat - conine fie o adres, fie un operand
imediat.

Figura 7.1: Formatul instruciunilor.


2. Instruciuni de tip R - aceste instruciuni sunt de tip registru i
au formatul prezentat n figura 7.1 b.). Operanzii se gsesc n registrele generale
specificate de cmpurile rs i rt, iar rezultatul este depus n registrul specificat de
cmpul rd.

Cmpul func reprezint o extensie a codului de operaie, pentru a putea codifica mai multe
instruciuni dect ar permite un cmp de cod de operaie de lungime 6 bii. Acest cmp
codific instruciunile operaionale aritmetice i logice, instruciunile de scriere/ citire
n/din registrul special RAI i instruciunile de deplasare:
RG[rd ] RG[rs ] ( func) RG[rt ] .
3. Instruciuni de tip J - aceste instruciuni au formatul prezentat n figura 7.1 c.).
Cmpul imediat/offset este utilizat pentru generarea adresei de salt. Instruciunile care
intr n aceast categorie sunt cele de salt simplu, salt cu legtur, revenire (RET) i
ntrerupere (TRAP).

Modurile de adresare prevzute n instruciuni sunt:


1. imediat - operandul se afl n instruciune;
2. registru - operandul se afl ntr-un registru specificat de cmpul rs;
3. cu deplasare bazat - coninutul registrului se adun cu cmpul imediat pentru a se
forma adresa;
4. relativ la CP cu offset de 16 bii. n acest caz se realizeaz i extensia semnului;
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

68

5. relativ la CP cu offset de 26 de bii. n acest caz se realizeaz i extensia semnului.


Setul de instruciuni al procesorului este compus dintr-un numr de 73 de instruciuni
prezentate n tabelul 7.1. Acest set de instruciuni este folosit pentru scrierea i testarea de
aplicaii folosind simulatorul java JDLX.
Nr Instruciunea Descriere
Instruciuni - ncarc / Memoreaz
1 LB
ncarc octet
2 LBU
ncarc octet fr semn
3 LH
ncarc semicuvnt
4 LHU
ncarc semicuvnt fr semn
5 LW
ncarc cuvnt
6 LF
ncarc float
ncarc double float
1 LD
8 LHI
ncarc imediat
9 SB
memoreaz octet
10 SH
memoreaz semicuvnt
1 SW
memoreaz cuvnt
12 SF
memoreaz float
13 SD5
memoreaz double
Instruciuni UAL cu operand imediat
14 ADDI
Adunare cu operand imediat
15 SUBI
scdere cu operand imediat
16 Sil
I logic imediat
17 SAUI
SAU imediat
18 XSAUI
SAU exclusiv imediat
19 SLLI
deplasare logic stnga imediat
20 SRLI
deplasare logic dreapta imediat
2 SRAI
shift aritmetic dreapta imediat
22 ADDUI
adunare fr semn imediat
23 SUBUI
scdere fr semn imediat
Instruciuni SET cu operand imediat
24 SLTI
seteaz mai mic dect operand imediat
2 SGTI
seteaz mai mare dect operand imediat
26 SLEI
seteaz mai mic sau egal dect operand
2 SGEI
seteaz mai mare sau egal dect operand
2 SEQI
seteaz egal cu operand imediat
29 SNEI
seteaz diferit de operand imediat
30 JMP
salt la adresa specificat de operandul imediat
3 JR
ntoarcere la adresa specificat de rs
32 JAL
cheam de la adresa imediat

COP
6'b000000
6'b000001
6'b000010
6'b000011
6'b000100
6'b000101
6'b000110
6'b000111
6'b001000
6'b001001
6'b001010
6'b001011
6'b001100
6'b010000
6'b010001
6'b010010
6'b010011
6'b010100
6'b010101
6'b010110
6'b010111
6'b011110
6'b011111
6'b011000
6'b011001
6'b011010
6'b011011
6'b011100
6'b011101
6'b100000
6'b100001
6'b100010

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

69

3 JALR
cheam de la adresa rd
34 TRAP
instruciunea TRAP
35 RET
revenire la adresa indicat de RG[31]
Instruciuni de ramificare
36 BEQ
ramificare dac egalitate
37 BNE
ramificare dac nu exist egalitate
Alte instruciuni
38 NOP
fr operaie
39 R3
instruciune care necesit 3 registre
40 HALT
instruciunea HALT
Instruciuni UAL
41 ADD
adunare
42 ADDU
adunare - operanzi fr semn
43 SUB
diferen
44 SUBU
diferen - operanzi fr semn
45 MULT
nmulire
46 MULTU
nmulire - operanzi fr semn
47 DIV
mprire
48 DIVU
nprire - operanzi fr semn
49 I
I logic
50 SAU
SAU logic
51 XSAU
SAU-EXCLUSIV
52 SLL
deplasare stnga logic
53 SRL
deplasare dreapta logic
54 SRA
deplasare dreapta aritmetic
Instruciuni n virgul mobil
55 ADDF
adunare n virgul mobil - precizie
56 ADDD
adunare n virgul mobil - precizie dubl
57 SUBF
scdere n virgul mobil - precizie simpl
58 SUBD
scdere n virgul mobil - precizie dubl
59 MULTF
nmulire n virgul mobil - precizie
60 MULTD
nmulire n virgul mobil - precizie
61 DIVF
mprire n virgul mobil - precizie
62 DIVD
mprire n virgul mobil - precizie
Istruciuni de setare
63 SLT
seteaz mai mic
64 SGT
seteaz mai mare
65 SLE
seteaz mai mic sau egal
66 SGT
seteaz mai mare sau egal
67 SEQ
seteaz egal
68 SNE
seteaz diferit
Instruciuni de transfer date

6'b100011
6'bl00100
6'b100101
6'b110000
6'bl10001
6'b111101
6'b111110
6'b111111

11b00000000000
11b00000000001
11b00000000010
11b00000000100
11b00000000101
11b00000000110
11b00000000111
11b00000001000
11b00000001001
11b00000001010
11b00000001011
11b00000001100
11b00000001101
11b00000001110
11b00000100000
11b00000100001
11b00000100010
11b00000100100
11b00000100101
11b00000100110
11b00000100111
11b00000101000
11b00000110000
11b00000110001
11b00000110010
11b00000110011
11b00000110100
11b00000110101

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

70

69
70
71
72
73

MOVS2I
MOVI2S
MOV
MOVF
MOVD

mut din registrul RAI n registrul RG


mut din registrul RG n registrul RAI
mut din RG n RG
mut numr n virgul mobil - precizie
mut numr n virgul mobil - precizie

11b00001000001
11b00001000000
11b00001000010
11b00001000011
11b00001000100

Tabelul 7.1: Procesor didactic DLX - Setul de instruciuni.


Implementarea hardware a procesorului didactic DLX este realizat utiliznd limbajul
VERILOG. Sursele implementrii sunt prea mari pentru a fi introduse n cadrul
laboratorului. Sursele se gsesc la adresa http://www.csit-sun.pub.ro/resources. Acestea
vor trebui s suporte unele modificri pentru a rezolva problemele propuse n cadrul
acestei lucrri de laborator.
Un exemplu de program pentru procesorul didactic DLX este oferit n continuare.

000111_00 000_00011 11111111 11110001


0 : lhi 0 3 -15 --- rg[3] = (-15)(c )<< 16
010111_00 011_00100 00000000 00010000
4: srai 3 4 16 --- rg[4] = rg[3] >> 16(a) = -15(c)
000100_00 100_00010 00000000 00110111
8: lw 4 2 55 --- rg[2] = mem[55 + rg[4]] = mem[40] = 127 = 7fh
010000_00 010_00001 00000000 00010111
12: addi 2 1 23 --- rg[1] = rg[2] + 23 = 150 = 96h
001001_00 000_00001 00000000 01000000
16: sh 0 1 64 --- mem[64 + 0] = rg[1] = 98h -- scriere semicuv !!
001001_00 000_00010 00000000 01000100
16: sh 0 2 68 --- mem[68 + 0] = rg[2] = 7fh -- scriere semicuv !!
111110_00 010_00001 00011_000 00000101
20: mult 2 1 3 --- rg[3],rg[4] = rg[2] * rg[1]
001010_00 000_00011 00000000 01001000
24: sw 0 3 72 --- mem[72 + 0] = rg[3] = 0h
001010_00 000_00100 00000000 01001100
28: sw 0 4 76 --- mem[76 + 0] = rg[4] = 4a6ah
111111_00 00000000 00000000 00000000
32: halt
00000000 00000000 00000000 01111111
40: 127
Configuraia memoriei nainte de lansarea n execuie a programului este:
00011100_00000011_11111111_11110001
01011100_01100100_00000000_00010000
00010000_10000010_00000000_00110111
01000000_01000001_00000000_00010111
00100100_00000001_00000000_01000000
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

71

00100100_00000010_00000000_01000100
11111000_01000001_00011000_00000101
00101000_00000011_00000000_01001000
00101000_00000100_00000000_01001100
11111100_00000000_00000000_00000000
00000000_00000000_00000000_01111111
Dup rularea programului coninutul memoriei va fi:
00011100_00000011_11111111_11110001
01011100_01100100_00000000_00010000
00010000_10000010_00000000_00110111
01000000_01000001_00000000_00010111
00100100_00000001_00000000_01000000
00100100_00000010_00000000_01000100
11111000_01000001_00011000_00000101
00101000_00000011_00000000_01001000
00101000_00000100_00000000_01001100
11111100_00000000_00000000_00000000
00000000_00000000_00000000_01111111
xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx
xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx
xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx
xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx
xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx
xxxxxxxx_xxxxxxxx_00000000_10010110
xxxxxxxx_xxxxxxxx_00000000_01111111
00000000_00000000_00000000_00000000
00000000_00000000_01001010_01101010
xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx
xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx
xxxxxxxx_xxxxxxxx_xxxxxxxx_xxxxxxxx

2. Desfurarea lucrrii
Se vor modifica sursele Verilog pentru procesorul didactic DLX, pentru a implementa
exemplul prezentat n laborator. S se compare coninutul memoriei obtinut cu cel
prezentat n cadrul laborator.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

72

3. Probleme propuse
1. S se implementeze i s se simuleze urmtorul program folosind sursele
VERILOG pentru procesorul didactic DLX:
lhi 0 3 -15
srai 3 4 16
lw 4 2 28
addi 2 1 23
halt
lb rg[3] rg[4] 10
zona libera
127

rg[3] = (-15)(c) << 16


rg[4] = rg[3] >> 16(a) = -15(c)
rg[2] = mem[43 + rg[4]] = mem[28] = 127
rg[1] = rg[2] + 23 = 150

2. S se implementeze i s se simuleze urmtorul program folosind sursele


VERILOG pentru procesorul didactic DLX:
0: lf 0 4 72
4: lf 0 3 76
8: addf 4 3 1
12: sf 0 1 100
16: lf 0 4 80
20: multf 3 4 1
24: sd 0 1 120
28: halt
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000

f[4] = mem[72 + 0]] = 0,25


f[3] = mem[76 + 0]] = 0,75
f[1] = f[3] + f[4] = 1
mem[100 + 0] = f[1]
f[4] = mem[80+0]] = -0,5
f[1] = f[3] * f[4]
mem[120 + 0] = f[1] = 0,375 =
1_01111110_1100_0000_0000_0000

//32:
//36:
//40:
//44:
//48:
//52:
//56:
//60:
//64:
//68:
//72: 0,25
//76: 0,75
//80: -0,5

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

73

8
Memorii i ierarhii de memorii
1. Prezentare teoretic
Memoria reprezint una din componentele eseniale ale unui calculator numeric. Rolul su
este de a memora programe i date. La modul general, memoria se mparte n memorie
principal i memorie secundar. Memoria principal stocheaz informaiile i datele
curente necesare procesorului ct timp memoria secundar memoreaz date care nu sunt
folosite n mod curent.
Subsistemul de memorie al unui calculator numeric este vzut ca o ierarhie de module de
memorie. La baza ierarhiei se afl memoria auxiliar/secundar (lent dar de capacitate
foarte mare, de ordinul zecilor de GB), iar n vrful ierarhiei se afl memoria cache (foarte
rapid dar de capacitate foarte mic, de ordinul KB).
Memoria cache este o memorie special, utilizat pentru mrirea vitezei de prelucrare a procesorului. Aceasta este dispus ntre procesor i memoria principal n vederea compensrii
diferenei de vitez dintre cele dou componente. Viteza de funcionare a memoriei cache este
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

74

foarte apropiat de viteza de funcionare a procesorului, acesta fiind un motiv pentru care, de
obicei, aceast memorie este ncapsulat mpreun cu procesorul.

Memoria principal
Este o memorie cu un timp de acces de aproximativ 700ns. Capacitatea ei variaz de la 32MB
pn la 512MB. Tehnologia folosit n construcia acestui tip de memorie se bazeaz pe
circuite integrate semiconductoare. Circuitele integrate RAM pot opera n dou moduri:
1. static - memoria static RAM este format din bistabile care memoreaz informaia n
form binar. Informaia rmne disponibil att timp ct circuitul este alimentat
cu curent electric.
2. dinamic - memoria dinamic RAM, memoreaz informaia binar n form de
sarcini electrice ce sunt aplicate unor condensatori. Condensatorii, realizai cu
ajutorul tranzistoarelor MOS, tind s se descarce n timp i astfel apare riscul ca
informaia s se distrug. Pentru a elimina acest inconvenient, n aceste memorii se
realizeaz un ciclu de remprosptare a informaiei la intervale de cteva
milisecunde.
Memoria ROM (Read Only Memory) este o memorie cu acces aleator i este utilizat
pentru memorarea programelor, care sunt rezidente permanent n calculator i pentru
stocarea tabelelor de constante definite de ctre productorul calculatorului. Tot n aceast
memorie se pstreaz i programul iniial de pornire a calculatorului (bootstrap loader)
responsabil cu lansarea sistemului de operare. Coninutul acestei memorii se pstreaz
chiar dac circuitul nu este alimentat. Singura metod de a terge informaia dintr-un
astfel de circuit const n iradierea sa cu raze ultraviolete.
Simbolul i tabela de funcionare a unui circuit de memorie RAM sunt prezentate n
figura 8.1.

Figura 8.1: Memorie RAM 128 x 8.

Odat ce proiectantul unui calculator dispune de modulele de memorie fizice, el


trebuie s asigneze memoriilor RAM sau ROM ntreaga cantitate de memorie,
determinat n prealabil, necesar pentru rularea aplicaiilor. Adresarea memoriei de
ctre procesor este stabilit pe baza unei tabele n care se specific adresele de memorie
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

75

asignate fiecrui dispozitiv/tip de memorie. Aceast tabel poart denumirea de "harta


adreselor de memorie". Modalitatea de construire a acestei tabele este prezentat prin
intermediul unui exemplu.
Exemplu Se presupune c un calculator necesit 512 octei de RAM i 128 octei de
ROM. Pentru implementare, la dispoziia proiectantului exist circuitele RAM i ROM
cu capacitate de 128 x 8 fiecare. Numrul circuitelor de memorie este limitat la 5. Harta
adreselor de memorie este prezentat n tabelul 8.1.
Componenta

RAM l
RAM2
RAM3
RAM4
ROM

Adresa
hexazecimal
0000 - 007F
0080 - 00FF
0100 - 017F
0180 - 01FF
0200 - 03FF

10
0
0
0
0
1

9
0
0
1
1
x

Magistrala de adrese
8 7 6 5 4 3
0 x x x x x
1 x x x x x
0 x x x x x
1 x x x x x
x x x x x x

2
x
x
x
x
x

1
x
x
x
x
x

Tabelul 8.1: Harta adreselor de memorie.

Memoria total este: 512 + 128 = 640 octei. Pentru a accesa o memorie de 640
octei este necesar un cuvnt-adres de 10 bii. Astfel, dac se va considera o
magistral de adrese de 16 bii, primii 6 bii vor fi ntotdeauna egali cu 0. Avnd
n vedere c memoria RAM ocup 512 octei rezult necesitatea utilizrii a 9 linii de
adres. Deoarece sistemul conine si memorie RAM si memorie ROM, o linie de
adres este necesar pentru a se realiza o distincie ntre ele. Deci n total vor fi 10 linii
de adres ocupate. Restul de 6 linii de adres vor fi tot timpul 0. Pentru uurina
proiectrii, valoarea de pe magistrala de adrese este exprimat n hexazecimal.

Memoria asociativ
Memoria asociativ se bazeaz pe conceptul c timpul de cutare a unei informaii date
ntr-o memorie este redus considerabil dac datele memorate pot fi identificate dup
coninut i nu dup adres.
Cnd se scrie un cuvnt ntr-o memorie asociativ, nici o adres nu este furnizat.
Memoria este capabil s determine locaia goal i neutilizat n vederea memorrii
noului cuvnt. La citirea unui cuvnt dintr-o memorie asociativ, coninutul cuvntului
sau o parte a cuvntului este specificat. Memoria localizeaz toate cuvintele care se
potrivesc cu coninutul specificat i ele vor fi marcate pentru citire.
Organizarea hardware a unei memorii asociative este prezentat n figura 8.2.
n figura 8.2 registrele A i K sunt registre de n bii. Registrul M, registrul de potrivire, este
de m bii, unul pentru fiecare cuvnt de memorie.
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

76

Figura 8.2: Organizarea hardware a unei memorii asociative

Fiecare cuvnt din memorie este comparat cu coninutul registrului A. Cuvintele care se
potrivesc seteaz un bit corespunztor n registrul M a crui valoare este 1. n final,
registrul M va conine doar biii care indic ce cuvinte s-au potrivit. Citirea se realizeaz
printr-un acces secvenial la memorie, doar pentru cuvintele ai cror bii corespunztori n
registrul M sunt 1.
Registrul K este un registru de mascare n vederea stabilirii unui cmp particular sau
a unei chei din cuvntul memorat n registrul A. Comparaia ntregului cuvnt de
memorie cu coninutul registrului A se va realiza doar dac registrul K conine toi
biii egali cu 1. n mod normal se compar doar cuvintele care au biii l n poziiile n
care exist l n registrul K.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

77

Organizarea hardware a unei celule de memorie asociative precum i relaia dintre


vectorul memorie i registrele externe sunt prezentate n figura 8.3.
Aa cum se observ n figura 8.3, fiecare bit A j din registrul A este comparat cu toi
biii coloanei j din matricea vector, dac k j = 1 , j = 1 ... n . Dac toi biii
registrului K sunt egali cu biii din cuvntul i, atunci se seteaz M i = 1 , altfel
Mi = 0.
Circuitul de potrivire logic din figura 8.3 se poate deduce matematic. Cuvntul i este
egal cu coninutul registrului A dac:

Aj

= Fij

j = 1 ... n

(8.1)

Figura 8.3: Organizarea hardware a unei celule de memorie

Egalitatea a doi bii poate fi exprimat ca x j = A j Fij + A j Fij , unde x j = 1 dac toi
biii de pe poziia j sunt egali. Pentru ca bitul M i s fie l trebuie respectat urmtoarea
egalitate:

Mi

= x1 x 2 x3 , ..., x n

(8.2)

n funcie de valoarea lui K j , exist dou situaii posibile:


1. k j = 0 , atunci biii corespunztori A j i Fij nu trebuie comparai;

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

78

2. k j = 1 , atunci biii corespunztori A j i Fij trebuie comparai.


Se poate concluziona c:
xj + kj

daca k j = 1

x j
=
1

daca

(8.3)

kj = 0

Ecuaia (8.2) se rescrie ca:


Mi

(x

)(

)(

+ k1 x 2 + k 2 x3 + k 3 ... x n + k n

(8.4)

sau ntr-o form mult mai compact:


Mi

(A
n

Fij + A j Fij + k j

i = 1, m

(8.5)

j =1

n vederea realizrii operaiei de citire din memoria asociativ, se scaneaz coninutul


registrului M i se citete doar un bit al su la un moment dat, obinnd astfel o secven
de cuvinte aflate n memoria asociativ i care se potrivesc cu cuvntul de memorie.
n cazul operaiei de scriere apar urmtoarele situaii posibile:
1. memoria este vid - n acest caz scrierea poate fi realizat prin adresarea fiecrei
locaii ntr-o anumit secven. Astfel memoria devine o memorie cu acces
aleator n cazul scrierii i o memorie de tip adresabil dup coninut n cazul
operaiei de citire. Avantajul este c adresele cuvintelor de intrare pot fi
decodificate ca n cazul memoriilor cu acces aleator, rezultnd astfel numai d
linii de adrese n loc de m (m = 2d).
2. suprascrierea unui cuvnt - este situaia n care memoria este complet ocupat i
se dorete introducerea unui nou cuvnt n memorie. n aceast situaie se mai
adaug un registru special (registrul de etichete) care memoreaz cuvintele active
i cele inactive asignnd valoarea l pentru cuvintele active i 0 pentru cuvintele
inactive. Numrul biilor acestui registru trebuie s fie acelai cu numrul de
cuvinte din memorie. Se nlocuiesc doar cuvintele cu eticheta 0 utiliznd n acest
scop un algoritm FIFO, LRU etc. Dup realizarea operaiei de suprascriere,
eticheta corespunztoare va avea valoarea 1.

Memoria cache
Memoria cache este o memorie de mic capacitate dar cu o vitez de accesare foarte
mare. Cnd CPU dorete s acceseze memoria principal, nti se examineaz memoria
cache. Dac, cuvntul solicitat se gsete stocat n memoria cache, atunci el este preluat
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

79

de ctre procesor, din aceast memorie. n caz contrar este accesat memoria principal,
se citete cuvntul dorit i este stocat apoi n memoria cache.
Pentru a respecta principiul "localitii spaiale", se transfer din memoria principal
n memoria cache nu doar cuvntul solicitat de procesor, ci un bloc de cuvinte care
conine cuvntul solicitat. Dimensiunea blocului transferat variaz de la o arhitectur la
alta, dar uzual, blocul transferat are o dimensiune cuprins ntre l i 16 cuvinte.
Performana unei memorii cache este msurat n termeni de "hit ratio". Dac, cuvntul
solicitat de CPU se afl memorat n memoria cache, atunci este vorba de un succes HIT,
iar altfel, de un insucces MISS. HIT RATIO se definete ca fiind raportul dintre numrul
de succese i numrul total de referiri CPU la memorie.
Procesul de amplasare a datelor citite din memoria principal, n memoria cache se
numete mapare . Uzual n proiectarea i organizarea memoriilor cache se folosesc
urmtoarele tipuri de proceduri de mapare:
1. mapare complet asociativ;
2. mapare direct;
3. mapare asociativ pe mai multe ci.
Pentru o descriere ct mai complet a fiecrui mod de mapare se va utiliza urmtorul
exemplu.
Exemplu Se presupunem existena unui calculator care posed o memorie principal cu
capacitatea de 32k 12 i o memorie cache cu capacitatea 512 cuvinte 12. Procesorul
calculatorului poate comunica cu ambele memorii. El trimite o adres de 15 bii ctre
memoria cache. Dac se obine HIT, CPU accept 12 bii de date de la memoria cache. n
caz de MISS, CPU citete cuvntul din memoria principal i cuvntul va fi apoi memorat
n memoria cache.

Maparea complet asociativ


Acest tip de mapare este cea mai flexibil i mai rapid organizare a memoriei cache. Organizarea acestui tip de memorie poate fi observat n figura 8.4. n memoria complet
asociativ sunt memorate adresele i coninutul cuvintelor de memorie.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

80

Figura 8.4: Maparea asociativ.

Adresa CPU de 15 bii este memorat n registrul argument/descriptor i apoi se


ncearc depistarea unei potriviri de adrese dintre aceast adres i o adres din
memoria cache. Dac procesul se ncheie cu HIT, atunci datele de 12 bii sunt citite i
transmise ctre CPU.
Dac procesul se ncheie cu MISS, atunci perechea adres-dat este citit din memoria
principal, trimis la procesor i memorat n memoria cache. n cazul cel mai
defavorabil, memoria este complet ocupat i noua pereche adres-dat trebuie
suprascris n locul altei perechi stabilit de ctre algoritmul de replasare utilizat (uzual
se folosesc algoritmii LRU i FIFO).

Mapare direct
O versiune mai ieftin de memorie cache este prezentat n figura 8.5. n cadrul acestei
implementri, adresa CPU se mparte n dou cmpuri: INDEX (numrul biilor acestui
cmp este egal cu numrul biilor necesari pentru a accesa memoria cache) i
ETICHET. n concluzie, cei 15 bii ai adresei CPU se mpart dup cum urmeaz: 6 bii
pentru cmpul ETICHET i 9 bii pentru cmpul INDEX.

Figura 8.5: Maparea direct.

Fiecare cuvnt memorat n memoria cache este format din cmpul de date i eticheta
asociat. Atunci cnd o cerere este lansat, cmpul INDEX este utilizat pentru adresa
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

81

de acces a memoriei cache. Cmpul ETICHET al adresei CPU este comparat cu


"eticheta" cuvntului citit din memoria cache.
Dac procesul returneaz MISS, cuvntul cerut se citete din memoria principal i
este memorat n memoria cache mpreun cu o nou etichet, nlocuindu-se astfel
valoarea anterioar.
Dezavantajul major const n scderea valorii HIT RATIO dac dou sau mai multe
cuvinte ale cror adrese au acelai index dar etichete diferite sunt accesate n mod repetat.
Un exemplu numeric este prezenata n figura 8.6.

Figura 8.6: Exemplu mapare direct.

Cuvntul aflat la adresa 00000 este memorat n memoria cache. Procesorul


dorete s acceseze cuvntul aflat la adresa 02000. Indexul de adrese este 000 i el
va fi utilizat pentru accesarea memoriei cache. n urma comparaiei dintre cele dou
etichete, se constat c rezultatul ntors este MISS, deoarece eticheta memoriei cache este
00, iar eticheta adres este 02.
Se acceseaz memoria principal i cuvntul 5670 este transferat ctre CPU. Cuvntul
din memoria cache de la 000 este replasat cu eticheta 02 i data 5670.

Maparea asociativ pe mai multe ci


n cadrul acestei metode de organizare a memoriei cache, fiecare cuvnt al memoriei
cache poate memora unul sau mai multe cuvinte din memorie sub acelai index de
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

82

adres. n figura 8.7 este prezentat un exemplu de memorie cache cu o organizare


asociativ pe mai multe ci.

Figura 8.7: Maparea asociativ pe mai multe ci.

Fiecare index de adres refer dou cuvinte de date i etichetele asociate lor. Fiecare
etichet necesit 6 bii, iar fiecare cuvnt 12 bii, rezultnd lungimea cuvntului de
2 (6 + 12 ) = 36 bii. Un index de adrese de 9 bii poate acoperi 512 cuvinte deci
dimensiunea memoriei cache este de 512 x 36. Aceast memorie cache poate acoperi un
numr de 1024 cuvinte ale memoriei principale deoarece un cuvnt din memoria cache
conine dou cuvinte dat.
Cnd CPU genereaz o cerere de memorie, valoarea index a adresei este utilizat pentru
accesarea memoriei cache. Cmpul etichet din adresa CPU este comparat cu cele dou
etichete din memoria cache n vederea stabilirii unei potriviri. Compararea logic este realizat printr-o cutare asociativ de etichete ntr-o mulime. n caz de MISS, algoritmii
de nlocuire cei mai frecvent utilizai sunt FIFO i LRU.

Scrierea n memoria cache


n cazul n care CPU genereaz semnal de scriere n memoria principal, exist dou
metode care se pot aplica:
1. reactualizarea informaiei din memoria principal n paralel cu reactualizarea
informaiei din memoria cache dac cuvntul se gsete n memoria cache, la
adresa specificat. Aceast procedur se numete WRITE-THROUGH.
2. WRITE-BACK. n cadrul acestei metode, doar locaia memoriei cache este
reactualizat n cadrul operaiei WRITE. Locaia reactualizat este marcat i doar
n caz de suprascriere a informaiei se va face reactualizarea locaiei memoriei
principale.

2. Desfurarea lucrrii
1. Se va utiliza un simulator de memorie cache pentru a simula diferite organizri
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

83

ale memoriei cache pentru primele 1 milion de referine n monitorizarea


execuiei
programului
gcc.
Sunt
disponibile
(http://www.csitsun.pub.ro/resources) att dinero (simulatorul de memorie cache), ct i gcc. Se
presupune o memorie cache de instruciuni de 32kB i o memorie cache de date
de 32kB folosind aceeai organizare. S se aleag cel putin dou tipuri de
asociativiti i dou dimensiuni de bloc. S se deseneze o diagram ce prezint
organizarea unei memorii cache cu cea mai bun rat de eec.
2. Se va studia influena folosirii unui nivel secundar de memorie cahe asupra
performanei unui procesor. Se presupune existena unui procesor cu un CPI
(numrul de cicluri/instruciune) de baz de 1.0 i o frecven de ceas de
500MHz. Se consider c toate referinele la memorie vor avea succes n memoria
cache primar. Memoria principal are un timp de acces de 200ns, incluznd aici
i timpul necesar tratrii cazurilor de eec. Frecvena de eec pe instruciune n
memoria cache primar este de 5%. Care va fi creterea de vitez a mainii dac
este adugat un nivel suplimentar de memorie cache cu un timp de acces de 20ns,
att pentru eec, ct i pentru succes i suficient de mare pentru a reduce frecvena
de eec la memoria principal la 2%?

3. Probleme propuse
1. Pe baza hrii adreselor de memorie stabilit n cadrul exemplului l, s se
proiecteze circuitul care realizeaz conexiunea memoriei cu CPU.
2. Pe baza organizrii hardware a unei celule de memorie asociativ prezentat n
figura 8.3, s se proiecteze o memorie asociativ cu m = 4 i n = 3. S se realizeze
simularea operaiilor de scriere/citire n/din memoria asociativ proiectat.
3. Se reconsider exemplul prezentat n figura 8.6. n cadrul exemplului mrimea
blocului de memorie are dimensiunea de l cuvnt. Cum arat aceeai proiectare
dac se utilizeaz un bloc de capacitate 8 cuvinte ?
4. Enunai cel puin un avantaj al folosirii metodei WRITE-THROUGH de
scriere n memoria cache.
5. Folosind limbajul de asamblare pentru MIPS i simulatorul SPIM exemplicai
toate modurile de adresare la memorie cunoscute. Spre exemplu, pentru a
exemplifica modul de adresare indirect cu autodecrementare se poate scrie
programul MIPS din figura 8.8
# adresare indirect cu autodecrementare
.text
la
$a1, 0x0040001c
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

84

sub
$a1, $a1, 0x00000004
lw
$t1, ($a1)
lw
$t2, ($t1)
pc: not
$t1, $t2
adr: .word
0x00400020
li
$v0, 1
op: .word 7
move $a0, $t1
syscall
end: mop
Figura 8.8: Program MIPS pentru exemplificarea modului de adresare indirect cu
autodecrementare a memoriei principale.

9
Transmisia i recepia
serial a informaiei
1. Prezentare teoretic
La sistemele de calcul se cupleaz o mare varietate de echipamente periferice. Aceste
echipamente, fiind produse de diverse firme, nu sunt complet compatibile ntre ele ca
mod de dialog i transfer de informaie, dei din punct de vedere logic realizeaz
aceleai funcii. Prin urmare, a aprut necesitatea unei standardizri i unificri a
echipamentelor de transmisie de date.
Transferul de date ntre echipamentul periferic i calculator se poate face din punct de
vedere logic, paralel sau serial folosind diverse tehnologii: infrarou, usb, Bluetooth etc.
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

85

Transferul serial are avantajul c asigur o fiabilitate mai mare transmisiei n comparaie
cu transferul paralel, n schimb necesit resurse fizice mai complexe.

Norme de transmitere serial a informaiei. Protocolul de


transmisie.
ntre dou dispozitive cuplate ce transmit datele serial asincron trebuie s existe o linie
de referin (masa electric), 2 linii pentru date i 2 linii pentru comenzi i stri, dup
cum se poate observa n figura 9.1. Conform normei de transmisie CCITT, semnalele de
legtur au urmtoarea semnificaie:
103 = date transmisie
104 = date recepionate
105 = cerere pentru emisie
106 = gata de emisie
107 = conectat la linie
108 = conecteaz la linie

Figura 9.1: Norma de transmisie CCITT.

Semnalele ce se transmit pe aceste linii sunt sub forma unor nivele de tensiune n logic
negativ. Astfel, l logic este considerat ntre -6V i -12V, iar 0 logic este considerat
ntre +6V i +12V. Avantajele unei astfel de alegeri sunt:
tensiunea de referin 0;
o pan de alimentare se poate deosebi de oricare din cele dou stri;

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

86

imunitate la zgomot.

Protocolul de transmitere date


Acest protocol poate fi urmrit n figura 9.2 i este compus din urmtoarele secvene:
Dispozitivul transmite continuu l logic cnd este inactiv.
Datele transmise pe o singur linie (103) sunt precedate de un bit de start (0 logic)
i urmate de l sau 2 bii de stop (l logic).

Figura 9.2: Protocolul de transmisie a datelor.

Semnalele de comand i stare servesc numai pentru stabilirea legturii ntre dispozitive.
Dintre dispozitivele care lucreaz serial asincron, care corespund standardului CCITT, se
pot meniona: DISPLAY-uri, CONSOLE, MODEM-uri.

Proiectarea unui dispozitiv de transmisie serial asincron


Un dispozitiv de transmisie serial asincron se compune din:
1. registru de transmisie
2. logica de generare a paritii
3. numrtor de bii
Schema bloc a unui dispozitiv de transmisie este prezentat n figura 9.5. Semnificaia
semnalelor prezente n schema bloc este urmtoarea:
rxrdy = recepie terminat;
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

87

rdy = transmitor liber;


txrdy = transmisie terminat;
DDISP = date disponibile;
DREQ = cerere date;
DPL = deplasare date.
Proiectarea unitii de comand prezentat n figura 9.4 se realizeaz utiliznd diagrama
logic prezentat n figura 9.3.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

88

Figura 9.3: Diagrama logic a unitii de comand pentru transmisia serial a


informaiei

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

89

Figura 9.4: Schema bloc a protocolului de transmisie.


[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

90

Recepia serial a informaiei


n proiectarea unui dispozitiv de recepie serial a informaiei se pornete de la
protocolul de transmisie serial asincron prezentat n figura 9.5.

Figura 9.5: Protocolul de transmisie serial asincron.

Resursele harware utilizate n proiectare sunt:


Dou registre de deplasare de 4 bii n care se asambleaz informaia recepionat
serial;
Trei bistabile care indic modul de desfurare a operaiei de recepie;
Bistabilul DA = bistabil care indic faptul c datele au fost acceptate;
Bistabilul PE = bistabil care indic apariia unei erori de paritate;
Bistabilul SE = bistabil care indic bit de stop invalid.
Schema bloc a dispozitivului de recepie serial a informaiei este prezentat n figura 9.7.
Informaia recepionat serial este asamblat n registrele de deplasare de 4 bii. Avnd n
vedere faptul c informaia este precedat de un bit de start egal cu 0, se poate detecta
recepia complet a caracterului, fr numrarea biilor n felul urmtor:
se ncarc iniial registrele de deplasare cu l logic;
se testeaz valoarea bitului BIT9. Cnd aceasta a devenit 0 (bitul de start a ajuns n
aceast poziie) nseamn c s-a terminat recepionarea caracterului.
Pentru a asigura o bun funcionare a dispozitivului de recepie este bine ca preluarea unui bit de
informaie s se fac la un moment de timp ct mai aproape de mijlocul bitului. Preluarea
bitului se face prin aplicarea semnalului de deplasare DEPL registrelor de deplasare.
Pentru a genera semnalul DEPL ct mai aproape de mijlocul bitului, se aplic
automatului de comand o frecven de 8 sau 16 ori mai mare dect frecvena de
transmisie serial. Dup sesizarea bitului de START, se las automatul s evolueze prin
4, respectiv 8 stri, i apoi se genereaz semnalul DEPL.
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

91

Pentru biii urmtori, automatul de comand trece prin 8 respectiv 16 stri, pentru a
genera noi semnale DEPL. Diagrama unitii de comand este prezentat n figura 9.6.

Figura 9.6: Diagrama logic a unitii de comand pentru recepia informaiei.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

92

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

93

Figura 9.7: Schema bloc pentru recepia serial a informaiei

2. Desfurarea lucrrii
1. Se va proiecta n Verilog i realiza utiliznd Xilinx WebPACK ISE 6.2i schema
bloc a protocolului de transmisie prezentat n figura 9.4. Verificarea funcionrii
schemei bloc se va realiza cu ajutorul simulatorului ModelSim.

3. Probleme propuse
1. Se va proiecta n Verilog i realiza utiliznd Xilinx WebPACK ISE 6.2i schema
bloc pentru recepia serial a informaiei prezentat n figura 9.7. Verificarea
funcionrii schemei bloc se va realiza cu ajutorul simulatorului ModelSim.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

94

10
Coduri detectoare/corectoare
de erori. Criptarea informaiei
1. Prezentare teoretic
n cadrul acestei lucrri de laborator se vor prezenta algotimii CRC i Reed-Solomon folosii
la detectarea i corectarea erorilor care pot aprea ntr-o transmisie de date. Algoritmii RSA i
IDEA prezentai sunt uzual folosii pentru criptarea informaiei i se bazeaz pe chei publice.
Implementrile hardware ale altor algoritmi de criptare, care se bazeaz pe metode
tradiionale (de exemplu algoritmul de criptare DES), pot fi studiate la http://www.csitsun.pub.ro/resources.

Sume de control
Scopul unei tehnici de detecie a erorilor este acela de a pune la dispoziia receptorului
unui mesaj, transmis printr-un canal cu zgomote (pasibil de introducere de erori), o
metod de a determina dac mesajul a fost corupt sau nu. Pentru a face posibil acest lucru,
emitorul construiete o valoare numit sum de control care este o funcie de mesaj i
o anexeaz acestuia. Receptorul poate s foloseasc aceeai funcie pentru a calcula
suma de control pentru mesajul primit, iar apoi s o compare cu suma de control
anexat (concatenat mesajului) pentru a vedea dac mesajul a fost receptat corect.
Exemplu S se aleag o funcie care are ca rezultat (sum de control) suma octeilor din
mesaj modulo 256:

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

95

f ( x) =

(octeti

(10.1)

mesaj ) mod 256

Considernd toate valorile n zecimal, se obine:


mesaj
mesaj cu suma de control

:
:

7 24 3
7 24 3 34

mesaj dup transmisie

7 28 3 38

Al doilea octet al mesajului a suferit o modificare n timpul transmisiei, de la 24 la 28.


Cu toate acestea, receptorul poate determina prezena unei erori comparnd suma de
control transmis (34) cu cea calculat (38 = 7 + 28 + 3).
Dac nsi suma de control este corupt, un mesaj transmis corect poate fi (incorect)
interpretat drept unul eronat. Acesta nu este ns un eec periculos. Un eec periculos
are loc atunci cnd att mesajul ct i suma de control se modific astfel nct rezult ntro transmisie consistent intern (interpretat ca neavnd erori).
Din pcate, aceast posibilitate nu poate fi evitat i cel mai bun lucru care se poate realiza
este de a minimiza probabilitatea ei de apariie prin creterea cantitii de informaie din
suma de control (de exemplu, lrgind dimensiunea ei la doi octei n loc de unul).

Coduri CRC
Ideea de baz pentru algoritmii CRC este de a trata mesajul drept un numr
reprezentat n binar, de a-l mpri la un alt numr binar fixat i de a considera restul
drept sum de control. La primirea mesajului, receptorul poate efectua aceeai mprire i
poate compara restul cu suma de control primit (restul transmis).
Exemplu Considernd c mesajul care trebuie transmis este alctuit din 2 octei (6,
23), el este reprezentat n baza 16 ca numrul 0617 i n baza 2 ca 0000_0110_0001_0111. Se
presupune folosirea unei sume de control de l octet i a unui mpritor constant 1001.
Atunci suma de control va fi restul mpririi 0000_0110-0001_0111 : 1001 = ...
0000010101101, rest 0010. Mesajul transmis de fapt va fi: 06172, unde 0617 este mesajul
iniial (informaia util), iar 2 este suma de control (restul).
Aritmetica binar fr transport

Toate calculele executate n cadrul algoritmilor CRC sunt realizate n binar, fr transport.
Deseori se folosete denumirea de aritmetic polinomial, dar n continuare se va folosi
denumirea de aritmetic CRC deoarece la implementarea cu polinoame s-a renunat.
Adunarea a dou numere n aritmetica CRC, aa cum se poate observa n figura 10.1, este
asemntoare cu adunarea binar obinuit, ns nu exist transport. Aceasta nseamn c
fiecare pereche de bii corespondeni determin bitul corespondent din rezultat, fr
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

96

nici o referin la alt bit din alt poziie (aa cum se poate observa din exemplul
prezentat n figura 10.2 a). ).
Definiia operaiei de scdere este identic cu operaia de adunare i poate fi observat n
figura 10.1, iar un exemplu este prezentat n figura 10.2 b).
Se poate concluziona c att adunarea ct i scderea n aritmetica CRC sunt
echivalente cu operaia SAU EXCLUSIV (XOR), iar operaia XOR este propria sa
invers. Acest fapt reduce operaiile primului nivel de putere (adunare, scdere) la una
singur, care este propria sa invers (o proprietate foarte convenabil a acestei aritmetici).

Figura 10.1: Definirea operaiilor de adunare/scdere.

Pe baza adunrii, se poate defini i nmulirea, care se realizeaz natural, fiind suma dintre
primul numr deplasat corespunztor i cel de-al doilea numr (se folosete adunarea CRC).
Un exemplu pentru aceast operaie este prezentat n figura 10.2 c).
Pentru realizarea operaiei de mprire, este nevoie s se cunoasc cnd un numr este
cuprins n altul. De aceea, se va considera urmtoarea definiie: X este mai mare dect
sau egal cu Y dac poziia celui mai semnificativ bit l al lui X este mai mare sau aceeai cu
poziia celui mai semnificativ bit l al lui Y. Un exemplu complet este prezentat n figura 10.2
d).

Transmisia - recepia datelor folosind CRC


Aa cum s-a artat pn acum, calculul CRC este de fapt o simpl mprire. Pentru
realizarea unui calcul CRC este nevoie de un divizor, denumit n limbaj matematic
polinom generator. Lungimea polinomului uzual este de 16 sau 32 de bii, CRC-16,
CRC-32, i aceste dimensiuni sunt folosite n calculatoarele digitale moderne. Lungimea
unui polinom - W- este de fapt poziia celui mai semnificativ bit l (lungimea polinomului
10011 este 4).
La transmitor, nainte de calculul CRC, se adaug W bii cu valoarea 0 la sfritul
mesajului care va fi mprit folosind aritmetica CRC la polinom, astfel nct toi biii
mesajului s participe la calculul CRC. Un exemplu este prezentat n figura 10.2 d).
mprirea produce un ct, care nu va fi ignorat i un rest, care este suma de control
calculat (CRC-ul). n mod uzual CRC-ul este apoi adugat mesajului, iar rezultatul este
trimis ctre receptor, n acest caz se transmite 11010110111110.
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

97

Figura 10.2: Exemplificarea operaiilor binare fr transport

Receptorul calculeaz suma de control pentru ntreg mesajul primit (fr adugare de
zerouri) i compar restul cu 0. Realizarea acestei operaii este motivat de faptul c
mesajul transmis T este multiplu de polinomul folosit drept divizor.

Implementarea direct
CRC-ul se poate calcula utiliznd noiunile teoretice prezentate pn acum. Algoritmul,
implementarea Verilog precum i rezultatele simulrii pot fi observate n figura 10.3.

Implementarea bazat pe tabel


Acest algoritm este o variant mbuntit a algoritmului anterior, el fiind foarte eficient
deoarece implic doar o deplasare, o operaie SAU, o operaie SAU EXCLUSIV i un
acces la memorie pentru fiecare octet. Algoritmul precum i rezultatele implementrii
sale n Verilog sunt prezentate n figura 10.4.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

98

Figura 10.3: Implementare direct

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

99

Figura 10.4: Implementarea bazat pe tabel

Coduri Reed-Solomon
Codurile Reed-Solomon (RS) sunt coduri corectoare de erori n bloc inventate n 1960 de
Irving Reed i Gustave Solomon. Aceste coduri au nceput s fie utilizate ncepnd cu
1990, atunci cnd progresele tehnologice au fcut posibil trimiterea datelor n cantiti
mari si la viteze ridicate. Actualmente aceste coduri sunt utilizate ntr-o gam larg de
echipamente electronice cum sunt:
dispozitivele pentru stocarea datelor (CD, DVD, hard-disk);
telefoanele mobile;
echipamentele folosite n comunicaiile prin satelit;
televiziunea digital;
modemurile de mare vitez (ADSL, xDSL).
Realizarea unei transmisii folosind codurile RS presupune ca, codificatorul RS s preia
un bloc de date i s adauge o informaie suplimentar caracteristic. Una dintre
caracteristicile importante ale codului RS const n faptul c acest cod va codifica grupuri
de simboluri de date.
Decodificatorul RS proceseaz fiecare bloc i ncearc s corecteze erorile aprute i s
recupereze datele trimise original.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

100

Un cod RS este specificat ca RS(n, k) cu simboluri de s bii. Aceast descriere


semnific faptul c, codificatorul preia k simboluri de paritate astfel nct s rezulte
un cuvnt de cod de n simboli. Sunt n - k simboluri de paritate, de cte s bii fiecare. Un
decodificator RS poate corecta pn la t simboluri ce conin erori, cu 2t = n - k.
Un cod RS este obinut mprind mesajul original n blocuri de lungime fix. Fiecare
bloc este apoi mprit n simboluri de m bii. Fiecare simbol are lungime fix (ntre 3 si 8
bii). Natura liniar a acestui cod asigur faptul c fiecare cuvnt de m bii este valid
pentru codificare astfel nct se pot transmite date binare sau text.
Exemplu Un cod des folosit este RS(255, 233) cu simboluri de 8 bii. Fiecare cuvnt de
cod conine 255 de simboluri din care 233 sunt de date i 22 sunt de paritate. Pentru
acest cod se pot stabili urmtoarele relaii: n = 255, k 233, s = 8, t = 16.

Codurile RS pot fi scurtate dac la codificator se fac anumii bii zero, nu se transmit dar
sunt adugai la decodificator. Spre exemplu, codul RS(255, 233) poate fi scurtat la (200,
168). Operaiile realizate de codificator sunt urmtoarele:
se preia un bloc de 168 de bii de date;
se adaug virtual 55 de bii de zero crend astfel un cod (255, 233);
se transmit doar 168 bii de date i 32 bii de paritate.
Un decodificator RS poate corecta un numr de t erori i pn la 2t tersturi. La
decodificarea unui cuvnt RS pot aprea urmtoarele variante:
dac 2s + r < 2t atunci codul original transmis poate fi corectat n ntregime;
decodificatorul indic faptul c nu poate reface codul original;
decodificatorul va genera un cuvnt decodat cu erori i nu va fi semnalat acest
lucru.
Arhitectura decodorului poate fi urmrit n figura 10.5.

Figura 10.5: Arhitectura unui decodificator RS.


[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

101

Algoritmul de criptare RSA


Algoritmul RSA este un sistem criptografic ce utilizeaz chei publice i a fost creat
de un grup de cercettori de la MIT (Massachusetts Institute of Technology) cu scopul
de a asigura securitatea datelor schimbate prin intermediul Internet-ului.
Metodele tradiionale de criptare (spre exemplu algoritmul DES - implementrile
hardware i JAVA precum i simulrile acestor implementri pot fi vizualizate la
n (n 1)
chei, n timp ce algoritmii
http://www.csit-sun.pub.ro) folosesc un numr de
2
bazai pe chei publice utilizeaz un numr de cel mult n chei publice.

O alt deosebire const n faptul c n sistemele tradiionale de criptare, cheia de criptare


trebuie inut secret deoarece ea trebuie utilizat n cadrul procesului de decriptare.
n cazul criptrii cu chei publice, cheia de criptare/decriptare nu mai este trimis
receptorului, deci canalul de comunicaie dintre transmitor i receptor poate s nu fie
securizat.
Utilizarea algoritmului RSA implic crearea a dou chei de ctre transmitor: una
public i una privat. Cheia public este trimis oricrui destinatar la care trebuie trimis
mesajul criptat. Cheia privat sau secret este utilizat pentru decriptarea mesajului
criptat cu ajutorul cheii publice.
Modalitatea de realizare a unei comunicaii criptate cu ajutorul algoritmului RSA
este prezentat n figura 10.6.

Figura 10.6: Arhitectura unui decodor RS.

Transmisia folosind algoritmul RSA necesit parcurgerea a dou etape importante:


1. Generarea cheilor - se genereaz dou chei una public i una privat. Pentru
aceasta trebuie parcuri urmtorii pai:
1.

se aleg dou numere prime p i q cu aceeai magnitudine (lungime) i se


genereaz numrul n = p q ;

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

102

2.

se determin = ( p 1) (q 1) ;

3.

se alege e ca fiind un numr prim n raport cu , deci cel mai mare divizor
comun (notat gcd(e, )) al celor dou numere trebuie s fie 1. n
implementrile practice valoarea lui e este aleas ca fiind un numr prim
Fermat (3, 5, 17, 65537,...);

4.

se determin valoarea d care reprezint inversiunea modular a lui e i


:
1

d = rest e

Cheia public este alctuit din perechea (n, e), ct timp cheia privat este format din
perechea (n, d). Implementarea hardware a celui mai mare divizor comun se realizeaz
cu ajutorul algoritmului lui Euclid.
Algoritm EuclidExtins(a, b)
if b = 0 then
return (a, 1, 0)
else

a
(d, x, y) = EuclidExtins(b, rest )
b
a
return (d, y, x y' )
b
2. Transmisia informaiei - n cadrul acestei etape, att transmitorul ct i
receptorul trebuie s execute cteva operaii distincte. Transmitorul
realizeaz urmtoarele operaii:
a. obine cheia public (n, e) de la receptor;
b. convertete mesajul ntr-o mulime de ntregi pozitivi;
c. calculeaz textul criptat conform relaiei: c = me mod n;
d. transmite mesajul c la receptor.
Receptorul realizeaz urmtoarele operaii:
a. utilizeaz cheia privat (n, d) pentru a calcula m = cd mod n;
b. extrage textul din colecia de numere ntregi m.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

103

Algoritmul de criptarea IDEA


IDEA este un algoritm bazat pe chei publice care cripteaz blocuri de cte 64 de bii
folosind o cheie de criptare de lungime 128 de bii. Criptarea i decriptarea presupun
utilizarea aceluiai algoritm. Implementarea acestui algoritm impune utilizarea a trei
operaii: XOR, adunarea modulo 65536 i nmulirea modulo 65537 care opereaz pe subblocuri de dimensiune 16 bii.

Funcionarea algoritmului const n parcurgerea a opt pai. Blocul de date de dimensiune 64


de bii este mprit n 4 pri X0, X1, X2 i X3, fiecare parte avnd dimensiunea de 16 bii. n
fiecare pas, ntre cele 4 sub-blocuri se realizeaz o operaie XOR, de adunare sau de
nmulire, mpreun cu 6 subchei de dimensiune 16 bii fiecare.
ntre paii 2 i 3, sub-blocurile sunt interschimbate, iar n final cele 4 sub-blocuri sunt combinate mpreun cu 4 subchei pentru a forma ieirea. n cadrul fiecrui pas al algoritmului
se execut urmtoarea succesiune de operaii:
se nmulete X0 cu prima subcheie;
se adun X1 la a doua subcheie;
se adun X2 la a treia subcheie;
se nmulete X3 cu a patra subcheie;
XOR ntre rezultatele pailor l i 3;
XOR ntre rezultatele pailor 2 i 4;
se nmulete rezultatul pasului 5 cu subcheia numrul 5;
se adun rezultatele obinute n cadrul pailor 6 i 7;
se nmulete rezultatul de la pasul 8 cu subcheia numrul 6;
se adun rezultatele obinute la paii 7 i 9;
XOR ntre rezultatele pailor l i 9;
XOR ntre rezultatele pailor 3 i 9;
XOR ntre rezultatele pailor 2 i 10;
XOR ntre rezultatele pailor 4 i 10.
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

104

Cele patru rezultate sunt sub-blocurile obinute n urma pailor 11, 12, 13 si 14. Se interschimb cele dou sub-blocuri din mijloc i astfel se obine intrarea pentru urmtorul pas.
Excepie face ultimul pas n care nu se mai execut interschimbarea celor dou subblocuri din mijloc. Dup pasul opt se execut urmtoarea secven de operaii pentru a
determina rezultatul final:
se nmulete X0 cu prima subcheie;
se adun X1 la a doua subcheie;
se adun X2 la a treia subcheie;
se nmulete X3 cu a patra subcheie.
n final cele patru sub-blocuri se vor concatena pentru a forma blocul criptat de lungime
64 de bii.
Algoritmul utilizeaz 52 de subchei: 6 subchei pentru fiecare pas i 4 subchei pentru
pasul final. Generarea subcheilor pornete de la cheia de lungime 128 de bii care se
mparte n opt subchei. Acestea reprezint primele opt subchei utilizate n algoritm. La
pasul urmtor cheia este deplasat la stnga 25 de poziii i apoi mprit n opt pri.
Acest proces de generare a subcheilor este continuat pn se genereaz toate cele 52 de
subchei necesare funcionrii algoritmului.
Schema general a algoritmului de criptare IDEA este prezentat n figura 10.8.

Figura 10.7: Schema general a algoritmului de criptare cu chei publice IDEA.

2. Desfurarea lucrrii
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

105

Se va proiecta n Verilog utiliznd Xilinx WebPACK ISE 5.1i i se va simula un circuit,


care implementeaz algoritmul IDEA. Se va folosi schema general prezentat n figura
10.7.

3. Probleme propuse
1. S se proiecteze n Verilog utiliznd Xilinx WebPack ISE 6.2i i s se simuleze
un circuit, care implementeaz algoritmul CRC bazat pe tabel.
2. S se proiecteze n Verilog utiliznd Xilinx WebPack ISE 6.2i i s se simuleze
un circuit, care implementeaz algoritmul de criptare RSA.

Indicaii

Este bine s se calculeze o tabel de conversie pentru fiecare dintre cele 256
valori de intrare posibile. Pentru a cripta mesajul va fi necesar doar accesul la o
memorie local care memoreaz tabela determinat. La decriptare se va utiliza
acelai artificiu.

Pentru a putea implementa n hardware expresia me mod n se va utiliza urmtorul


algoritm:
res = m;
for (i = 2; i<= e; i = i + 1) begin
res = res * m;
if (res > m) begin
res = res % n;
end
end
cypher(m, n, e) = res;

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

106

Anexa A
Prezentarea mediului de
programare i testare Xilinx
WebPACK ISE 5.1i / 5.2i
A.1

Introducere

Xilinx WebPACK ISE 6. 2i reprezint o soluie de proiectare a sistemelor numerice deosebit


de complex. Aceasta integreaz pachete software pentru proiectarea cu ajutorul circuitelor
FPGA sau CPLD, utiliznd, n acest scop programe proprietare i industriale.
Cu ajutorul pachetului software ISE 6.2 se poate proiecta, testa i implementa o aplicaie ntrun timp foarte scurt. Dup ce testarea practic a aplicaiei, ce se realizeaz cu ajutorul
circuitelor FPGA sau CPLD, demonstreaz o funcionare corect, se poate trece la
implementarea n serie a structurii numerice respective, sub forma unui circuit specializat
(ASIC).
n aceast anex se va prezenta n detaliu mediul de proiectare i testare Xilinx ISE 6.2.
Versiunea Xilinx ISE 6.2 poate fi obinut de la adresa: http://www.xilinx.com/ise_ classics/index.html.
Cu ajutorul mediului ISE 6.2 pot fi realizate urmtoarele operaii:
1. Crearea de cod surs n limbajul Verilog sau VHDL;
2. Generarea automat de cod pentru circuite combinaionale, circuite secveniale i
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

107

memorii;
3.

Verificarea, din punct de vedere sintactic, a codului elaborat;

4. Simulare comportamental i la nivelul transferurilor ntre registre a proiectului


sau numai a unor module ale proiectului;
5. Sintez;
6. Plasarea i rutarea proiectului ntr-un FPGA sau CPLD selectat de ctre
proiectant;
7. Analiza timpilor de execuie i de comutare ai circuitului proiectat;
8. Impunerea de contrngeri de tipul arie sau constrngeri de tipul timp asupra
circuitului proiectat;
9. Configurarea circuitului proiectat.
Fereastra principal a aplicaiei se numete Project Navigator i este mprit n
cinci seciuni principale dup cum se poate observa n figura A.l.

Figura A.1: Fereastra principal a aplicaiei

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

108

Prima seciune Bar de meniuri este folosit pentru:


1. Creare sau deschidere de proiecte;
2. Creare sau deschidere de fiiere sursa;
3. Setarea anumitor parametri de funcionare pentru diferitele utilitare
cuprinse n pachetul software ISE 6.2.

n cea de a doua seciune principal - Fiiere surs sunt vizibile toate fiierele
surs din cadrul proiectului. Fiierele sunt prezentate sub forma unei ierarhii
pentru a se putea selecta uor i rapid orice fiier surs din cadrul proiectului.
Tot n acesta seciune sunt prezentate i relaiile dintre fiiere, n figura A.l se
pot observa cele trei subseciuni ale sale.
n prima subseciune Module View pot fi create i vizualizate urmtoarele tipuri de
fiiere:
1. Entiti sau arhitecturi VHDL;
2. Module Verilog;
3. Generatoare de teste VHDL/Verilog;
4. Module generate automat de ctre ISE cu ajutorul utilitarului - Xilinx
CORE Generator Modules ;
5. Pachete;
6. Scheme grafice utiliznd circuite care se regsesc n bibliotecile Xilinx;
7. Fiiere de constrngere definite de ctre programator;
8. Fiiere de tipul EDIF Netlist;
9. Orice document de tip text definit de ctre programator.
Subseciunea Snapshoot View este dedicat salvrii strilor codului proiectului.
Vizualizarea coninutului acestei subseciuni poate fi fcut n orice moment.
Subseciunea Library este util programatorului pentru a putea observa,
aduga/terge, bibliotecile utilizate n cadrul proiectului. Aceast subseciune este
util n special programatorilor care utlizeaz VHDL, i creeaz propriile biblioteci
i care vor putea fi reutilizate oricnd n diferite alte proiecte.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

109

n seciunea a treia Procese sunt prezentate toate procesele utilizate n crearea


i implementarea unui proiect. Aceste procese sunt:
1. Verificarea sintaxei codului HDL;
2. Sinteza i elaborarea proiectului;
3. Introducerea de constrngeri asupra proiectului;
4. Verificare RTL;
5. Plasarea i rutarea modulelor proiectului;
6. Analiza timpului;
7. Simularea proiectului n timp i afiarea formelor de und;
8. Planificarea proiectului n circuitul FPGA/CPLD i definirea de contrngeri
de tip arie;
9. Configurarea dispozitivului.

Fiecare proces are o list de parametri care pot fi modificai n funcie de cerinele
proiectului, nainte de a rula procesul. Pentru a putea modifica parametrii unui proces, se
selecteaz procesul dorit i cu ajutorul butonului dreapta al mouse-ului se deschide
fereastra care conine parametrii procesului.
Seciunea a patra Transcript este dedicat vizualizrii progreselor realizate de
fiecare proces implicat n realizarea circuitului FPGA/CPLD. Tot n aceast
seciune mai pot fi vizualizate mesajele de eroare sau de atenionare generate de
fiecare proces, precum i fiierul de comand.
Ultima seciune, Editare/Vizualizare cod surs VHDL/Verilog, este destinat
vizualizrii sau editrii de fiiere surs utilizate n cadrul proiectului. n
aceast seciune vor fi deschise spre consultare i fiierele de tip raport, care
sunt generate la terminarea fiecrui proces prezentat n seciunea Procese .

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

110

A.2 Proiectarea, sinteza i implementarea


unui circuit utiliznd ISE 6.2
Procesele prezente n seciunea Proces sunt afiate n ordinea n care ele sunt
programate spre execuie. Proiectarea unui circuit n vederea implementrii, n Xilinx
ISE, presupune crearea unui proiect. Pentru a putea proiecta un circuit de dimensiuni
mari, se recomand utilizarea tehnicii top-down. n acest fel circuitul este descompus n
module.
Modulele care alctuiesc proiectul pot fi realizate utiliznd fie un limbaj de programare
HDL, fie folosind utilitarul Schematic, n cele ce urmeaz se vor prezenta toate procesele
implicate n proiectarea, sinteza i implementarea unui circuit digital.
Procesul Design Entry Utilities este cel care permite definirea modulelor care compun
proiectul. Acest proces presupune existenta urmtoarelor subprocese:

- Create Schematic Symbol - creeaz simbolul unui modul deja definit. Acest simbol
(un exemplu de simbol este prezentat n figura A.2) nu poate fi utilizat n ISE
Schematic Editor. Acest subproces este util n cazul n care se dorete
vizualizarea porturilor unui modul proiectat. Dac se va realizeaz un dublu-click
pe acest simbol, atunci n seciunea Editare/Vizualizare cod surs VHDL/Verilog
vom putea vizualiza codul surs care a generat modulul, n cazul n care
proiectul este de tip mixt (include module VHDL, Verilog i schematic), atunci
schema general a circuitului va conine mai multe asemenea simboluri
interconectate ntre ele.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

111

Figura A.2: Exemplu simbol generat de ISE.

2. Launch ModelSim Simulator.


Acest subproces este necesar atunci cnd se
dorete testarea funcionrii unui modul. ISE nu beneficieaz de un simulator
propriu, dar se recomand folosirea simulatorului produs de compania ModelTech
i denumit ModelSim care se integreaz perfect cu ISE.
3. View Command Line Log File. Aa cum se poate observa i n figura A.3 acest
subproces este folosit pentru vizualizarea sintaxei fiecrui proces lansat de ISE.
Comenzile vizualizate sunt comenzi specifice Xilinx. O facilitate deosebit const
n faptul c aceste comenzi pot fi copiate i editate ntr-un fiier script, care poate fi
rulat.

Figura A.3: Vizualizarea sintaxei proceselor ISE

4. View Verilog Instantiation Template. Acest subproces este utilizat pentru a crea
rapid declaraii de componente i instanieri de templet-uri, utiliznd un limbaj
HDL. Acest facilitate este foarte util deoarece templet-urile definite pot fi
copiate n proiecte ierarhice pentru utilizri viitoare.
Procesul User Constraints este urmtorul proces invocat. Acest proces precum i toate
subprocesele sale folosesc ca intrare un fiier a crui extensie este ucf (User Constraints
File). Acest fiier este editat de ctre proiectant ceea ce nseamn c ori de cte ori se
modific acest fiier, ntregul proiect se va recompila.

Pentru a crea acest fiier se selecteaz meniurile: File, New Source, Implementation
Constraints Editor. Acum trebuie s se selecteze modulul de vrf al proiectului deoarece
fiierul de constrngeri este n direct coresponden cu acesta. n acest fiier,
fiecrui port al modulului de top i va corespunde un pin fizic n circuitul
FPGA/CPLD, n care se va realiza implementarea.
Observaie: Fiecrui proiect i este ataat numai un singur fiier de tip ucf.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

112

Procesul User Constraints conine urmtoarele subprocese:


1. Create Timing Constraints. Acest subproces invoc editorul de constrngeri care
este prezentat n figura A.4. Tab-ul General este utilizat pentru a putea vizualiza
semnalele globale ale proiectului. Folosirea tab-ului Ports asigneaz fiecrui
semnal global cte un port n coresponden cu specificaiile circuitului
FPGA/CPLD utilizat.

Figura A.4: Editorul ISE pentru crearea constrngerilor de timp.

2. Assign Package Pines. Este un subproces nou denumit i PACE . Cu ajutorul acestui
subproces se pot vizualiza, aa cum se poate observa n figura A.5, pinii I/O ai
circuitului FPGA/CPLD n care se va face implementarea. Fiecare tip de pin este
codificat cu o anumit culoare (aa cum se poate observa n figura A.6) sau cu un
anumit simbol n modul de vizualizare pachet. PACE este recomandat pentru
introducerea pinilor i constrngerilor legate de arie.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

113

Figura A.5: Xilinx PACE .

n fiierul cod surs (modulul de vrf) trebuie conectate intrrile i ieirile. n caz
contrar se va obine o implementare care nu are nici o funcionalitate, ceea ce
implic faptul c fiierul rezultat n urma procesului ngdbuild va fi vid.
ngdbuild este un proces care identific modulul de vrf i porturile sale cu pinii
circuitului FPGA/CPLD.

Figura A.6: Codificare PACE bazat pe culori.

Subprocesul PACE este utilizat pentru asignarea pinilor la porturile modulului de vrf,
ntr-o etap introductiv din cadrul proiectrii circuitului FPGA/CPLD (aa cum se poate
observa n figura A.7). De asemenea, acest subproces ofer posibilitatea de a seta
tensiunile care vor fi aplicate porturilor de I/O. Utilizarea acestui subproces trebuie
fcut cu atenie deoarece toate mofificrile efectuate sunt suprascrise n fiierul ucf.
3. Create Area Constraints. Este o facilitate nou oferit de utilitarul Xilinx
Floorplan. Fiecare submodul din cadrul proiectului poate avea propriile
constngeri legate de dimensiunea ariei ocupate. Aria ocupat de fiecare
modul este afiat cu o culoare separat, aa cum se poate observa n figura
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

114

A.8, pe aria total disponibil a circuitului FPGA/CPLD


4.

Edit Constraints File. Acest subproces este folosit n momentul n care se


dorete o editare direct a fiierului de constrngeri. Coninutul unui fiier de
constrngeri este prezentat n figura A.9. In fereastra deschis de subproces, se
pot edita, terge sau aduga constrngerile care se aplic circuitului final.

Figura A.7: Asignarea pinilor I/O folosind PACE.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

115

Figura A.8: Aria ocupat de fiecare submodul din cadrul proiectului este afiat
folosind o culoare distinct.

Metoda cea mai simpl, este aceea de a utiliza facilitatea de generare automat a
fiierului de constrngeri (se va utiliza opiunea BUILT-IN). Odat ce modelul
care ne intereseaz a fost ales, copiem codul corespunztor modelului ntr-un
fiier nou, a crui extensie trebuie s fie ucf .

Figura A.9: Exemplu de fiier de constrngeri.


Procesul Synthesize este urmtorul proces invocat. Sinteza unor circuite complexe (de
exemplu sinteza unui circuit pentru implementarea operaiilor aritmetice n virgul
mobil) poate dura ore iar spaiul liber necesar pe harddisk este de ordinul zecilor de GB.

Rularea acestui proces implic existena a cel puin unuia din urmtoarele utilitare: Xilinx
XST Compile, Synplicity sau Leonardo Spectrum. Xilinx XST Compile este un utilitar
proprietar Xilinx i dedicat mediilor de testare hardware care conin doar circuite
FPGA/CPLD Xilinx. Celelalte dou utilitare realizeaz sinteza si pentru alte tipuri de
circuite FPGA/CPLD, spre exemplu circuitele ALTERA.
Acest proces conine un numr de patru subprocese. Trebuie remarcat faptul c toate
subprocesele se execut ntr-o ordine prestabilit. Rularea unui subproces specificat
implic execuia n ordine a tuturor subproceselor care preced subprocesul ales.
Subprocesele procesului Synthesize sunt urmtoarele:
1. View Synthesis Report. Acest subproces ofer o imagine detaliat despre
rezultatele obinute de toate subutilitarele apelate de utilitarul de sintez. n
raportul generat, aa cum se poate observa n figura A. 10, se regsesc informaii
privitoare la aria utilizat de circuit, opiunile selectate precum i rezultatele
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

116

estimrilor legate de stabilirea cii de ntrziere. Informaiile referitoare la aria


utilizat de ctre circuit sunt exprimate n uniti de msur interne Xilinx.

Figura A.10: Raport de sintez generat de ISE.

2. View RTL Schematic. Acest subproces ofer posibilitatea de a vizualiza codul surs
Verilog/VHDL sub forma unei scheme. Un exemplu este prezentat n figura A. 11.
Acest subproces are o utilitate deosebit deoarece el ofer posibilitatea unei
verificri logice si ierarhice rapide a ntregului circuit proiectat.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

117

Figura A.11: Schem generat de ISE pornind de la cod surs Verilog/VHDL.

3. Analyze Hierarchy. Acest subproces este responsabil cu elaborarea prii RTL a


proiectului evideniind relaiile dintre module i specificaiile ntre ierarhiile de
module unde modulele sunt instaniate. Tot n cazul acestui subproces se reliefeaz
i biblioteca specific care este utilizat n proiectarea circuitului. Un exemplu de
astfel de raport este prezentat n figura A.12.

Figura A.12: Raport cu privire la relaiile dintre module.

4. Check Syntax. Dup cum sugereaz chiar numele, acest subproces este utilizat
pentru vizualizarea erorilor de sintax. La compilarea fiierelor surs pot aprea
erori care pot fi vizualizate n seciunea TRANSCRIPT . Dup cum se poate
observa i in figura A.13, erorile sunt marcate cu ajutorul unui ptrat. Se
selecteaz cu ajutorul mouse-ului eroarea ce se dorete a fi remediat i automat n
seciunea Editare/Vizualizare cod surs VHDL/Verilog este deschis fiierul surs
corespunztor erorii. Aceast facilitate este deosebit de util n cazul proiectelor
care conin multe fiiere surs.

Figura A.13: Vizualizarea erorilor coninute n fiiere surs HDL.


[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

118

Procesul Implement Design. La finalul acestui proces ntregul circuit proiectat se va


regsi ntr-un fiier special cu extensia bit. Fiierul care conine prototipul circuitului
implementat va fi mutat n circuitul Xilinx FPGA/CPLD disponibil n vederea testrii
funcionrii sale reale.

Acest proces conine trei subprocese importante: Translate, Map i Place Route. Fiecare
subproces conine unul sau mai multe subsubprocese, care vor fi detaliate. O remarc
important este aceea c, ordinea acestor subprocese este prestabilit i selectarea rulrii
unui subproces aleator implic rularea tuturor subproceselor anterioare lui.
n cazul n care implementarea se va face ntr-un circuit Xilinx CPLD vom avea doar dou
subprocese: Translate i Fit. n concluzie procesul de implementare a unui circuit ntr-un
circuit Xilinx CPLD este uor diferit fa de procesul de implementare a unui circuit
ntr-un circuit Xilinx FPGA.
Procesul Implement Design dispune de un numr mare de proprieti care pot fi
modificate n funcie de cerinele fiecrui proiect (aa cum se poate observa n figura A.
14). Pentru a putea avea acces la aceste proprieti n vederea modificrii lor, este
suficient s se selecteze procesul Implement Design i apoi se acioneaz butonul din
dreapta al mouse-ului.

Figura A.14: Vizualizarea i editarea proprietilor procesului Implement Design.


[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

119

1. Translate, n ISE translatarea unui proiect se efectueaz prin intermediul utilitarului


ngdbuild. Acest utilitar realizeaz combinarea tuturor modulelor existente n cadrul
unui proiect. Una din erorile frecvente este imposibilitatea localizrii fiierului de tip
netlist al unei componente de ctre procesul de translatare. Acest fiier de tip netlist
trebuie generat n mod obligatoriu pentru fiecare modul component al proiectului, dup
etapa de proiectare a modulului.
Acest subproces conine urmtoarele subsubprocese:
Translation Report - n acest raport sunt cuprinse informaii referitoare la modulele
care vor fi combinate. Alte informaii care se regsesc n raport sunt cele referitoare
la ieirile obinute n urma rulrii utilitarului ngdbuild .
Floorplan Design - acest proces ne ofer posibilitatea vizualizrii modului n
care logica proiectat ocup resursele disponibile din cadrul circuitului Xilinx
FPGA. Aa cum se poate observa i n figura A.15 se pot vizualiza i porturile de
intrare/ieire.

Figura A.15: Vizualizarea resurselor ocupate.

Tot cu ajutorul acestui proces, putem realiza constrngeri de tip arie prin desemnarea unor arii specifice pentru implementarea proiectului. Toate aceste faciliti nu sunt oferite de ctre nici un alt proces.
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

120

Generate Post-Translate Simulation Model - acest proces ofer un model n


limbaj HDL rezultat n urma procesului de traslatare, aa cum se poate observa n
figura A. 16.

Figura A.16: Model rezultat n urma procesului de translatare

Deoarece procesul Place Route nu a fost rulat, nici o informaie referitoare la


ntrzierile prin circuit nu este disponibil. Rezultatul acestui proces este utilizat
n vederea realizrii unei verificri post-sintez cu ajutorul fiierul netlist pentru
proiectare. Acest fiier ofer o implementare structural modulului VHDL/Verilog
deoarece n componena sa se regsesc numai semnale, declaraii de componente
si instanieri de componente.
3. Map. Acest subproces conine urmtoarele procese:
Map Report - rezultatul acestui proces este un raport care include toate
informaiile legate de maparea circuitului aa cum se poate oberva n figura
A.17. n raport se regsesc informaii legate de nlturarea blocurilor logice
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

121

redundante. Cele mai multe optimizri sunt realizate n timpul procesului


de sintez.
Tot n acest raport se mai gsesc i informaii referitoare la plasarea
relaional a macro-urilor proiectului. Foarte important este faptul c acest
raport cuprinde informaii referitoare la aria total ocupat de ctre proiect.
Aria este exprimat n uniti interne Xilinx. O list complet a numrului de
componente Xilinx utilizate (IOB, LUT etc.) poate fi consultat tot n cadrul
acestui raport.

Figura A.17: Raport complet asupra maprii proiectului.

Generate Post-Map Static Timing Report - acest proces conine


urmtoarele sub-procese:
- Post-Map Static Timing Report - acest raport este prezentat n
format xml (aa cum se poate observa n figura A.18) pentru a facilita
navigarea prin document. El este esenial pentru o analiz n vederea
realizrii unei hri de preplasare a circuitului n structura ariei Xilinx FPGA. Aceast preplasare se realizeaz n funcie de
ntrzierile determinate.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

122

Pe baza acestui raport se poate verifica dac constrngerile impuse


circuitului sunt realiste sau se nscriu ntr-o anumit tabel care
trebuie respectat. n raport se poate observ valoarea fiecrei
constrngeri obinut n cazul utilizrii celei mai defavorabile ci din
punct de vedere al ntrzierilor. Tot n acest raport se poate observa
dac o anumit constrngere poate fi sau nu ndeplinit.
-

Text-based Post-Map Static Timing Report - acest proces ofer acelai


raport prezentat anterior cu deosebirea c formatul fiierului este txt n
loc de xml Acest proces a fost introdus pentru a se putea tipri
raportul obinut ntr-o form grafic facil.

Figura A.18: Raport complet n versiune xml.

- Text-based Post-Map Static Timing Report - acest proces ofer acelai


raport prezentat anterior cu deosebirea c formatul fiierului este txt n
loc de xml Acest proces a fost introdus pentru a se putea tipri
raportul obinut ntr-o form grafic facil.
- Analyze Post-Map Static Timing - n urma rulrii acestui proces putem
analiza harta final a implementrii circuitului din punct de vedere al
timpilor statici. Xilinx ofer metode noi de analiz a timpilor, aceste
metode putnd fi uor apelabile (butoanele ncadrate ntr-un dreptunghi
n figura A.19).
Se pot obine rapoarte diferite dac se selecteaz de fiecare dat alte
semnale sau dac se modific diferitele opiuni disponibile.
[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

123

Manually Place Route (FPGA Editor) - acest proces este utilizat dac se
dorete realizarea procesului Place Route manual. Pentru aceasta, ISE ofer
un utilitar numit FPGA Editor, aa cum se poate observa n figura A.20.
Acest utilitar ofer acces la nivel logic pentru circuitul Xilinx FPGA selectat

precum i la resursele de rutare.


Figura A.19: Analiza timpilor statici.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

124

Figura A.20: FPGA Editor

Chiar dac acest utilitar este perfect funcional, utilizarea sa este


recomandat doar pentru inginerii cu vaste cunotine VLSI. n mod normal,
rularea procesului Place Route n modul automat este recomandat
deoarece ieirea obinut este optimizat.
Modificrile fcute cu ajutorul acestui utilitar afecteaz funcionarea
circuitului. Modul n care funcionarea circuitului este afectat nu este
reflectat nici n codul surs HDL nici n rezultatele obinute n urma simulrii
circuitului.
Generate Post-Map Simulation Model - n momentul lansrii n execuie a
acestui proces, proiectul nu a trecut de etapa Place Route. Conform acestei
observaii, nu se poate realiza dect o simulare de timp parial bazat pe
ntrzierile blocurilor actuale precum i pe baza ntrzierilor de rutare
estimate.
Ieirile obinute n urma acestui proces sunt salvate n dou fiiere: un fiier
cu extensia vhd n care se regsete o reprezentare structural a
implementrii si al doilea fiier cu extensia sdf (Standard Delay Format)
care conine informaii legate de ntrzierile prin circuit.
Ambele fiiere pot fi deschise ntr-un simulator HDL (ModelSim spre exemplu) pentru a putea realiza o verificare a logicii proiectrii pentru harta
obinut ntr-un proces anterior.
3. Place Route - Acest proces ca i procesul Map posed un numr mare de parametri
care pot fi modificai n funcie de necesitile proiectului. Modalitatea de accesare i
modificare este similar cu cea descsris n cadrul procesului Map. Din cadrul acestui
proces fac parte urmtoarele subprocese:
Place Route Report - acest raport conine informaii importante
referitoare la proiect, dup executarea procesului de implementare.
Informaii privitoare la semnalul de ceas sau eventualele anomalii ale
acestui semnal pot fi regsite n acest raport, aa cum se poate observa n
figura A.21. Tot aici apare i scorul de proiectare.
Scorul de proiectare este influenat de muli factori. Totui un scor de
proiectare mic indic n general o implementare bun. Pe lng aceste
informaii, raportul mai conine informaii privitoare la media ntrzierilor

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

125

prin circuit, ntrzierea maxim a pinului precum i media ntrzierilor


semnalelor n cazul utilizrii celei mai defavorabile rute.
Asynchronous Delay Report - acest raport se concentreaz asupra celor mai
proaste 20 de ci din implementare i arat ntrzierile obinute pentru
fiecare semnal. Acest raport este foarte util n cazul n care apar probleme
legate de aria implementrii.

Figura A.21: Raport obinut n urma procesului de Place Route .

Pad Report - este cel mai cuprinztor raport i se refer la cile prin care se
propag semnalele prin circuit precum i la pinii pachetelor A.22.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

126

Figura A.22: Raport cu privire la cile de propagare a semnalelor


prin circuit.

[Figures / Material] based on or adapted from figures and text owned by Xilinx Inc. courtesy of
Xilinx Inc. 94 Xilinx Inc. 2003. All rights reserved.

127

Acest raport este uor de importat n Excel pentru a se putea realiza o analiz
mai atent i pentru o eventual listare a informaiilor coninute n raport.
Guide Results Reports - acest raport face posibil urmrirea rezultatelor
obinute n urma rulrii procesului Place Route, aa cum se poate observa i
n figura A.23. Scopul urmrit este acela de a menine implementarea
anterioar ct mai mult posibil. Avantajul acestei abordri l constituie
pstrarea nemodificat a layout-ului implementrii. Consecina direct a
acestui fapt este c timpul de funcionare al circuitului rmne nemodificat.

Figura A.23: Raport cu privire la gradul de optimizare.

Din analiza acestui raport se poate deduce gradul de optimizare (realizat de


ctre programele software Xilinx) obinut ntre dou implementri succesive.
Obinerea unui raport mai complet implic activarea opiunii Guide Results
Reports. Este una dintre proprietile proceselor Translate i Map.
Generate Post-Place Route Static Timing - acest proces mpreun cu cele
trei sub-procese ale sale ne ofer valorile timpilor fiecrei constrngeri
aplicabile circuitului. Aceste valori sunt obinute n urma finalizrii
procesului Place Route i indic cu exactitate funcionarea circuitului.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

128

- Post Place Route Static Time - acest proces ofer un raport n care se
poate observa o trecere n revist a fiecrei constrngeri (figura A.24).
Calea cea mai defavorabil este artat automat numai dac acea cale nu
reuete s respecte cerinele impuse de constrngere. Raportul este prezentat n format xml pentru a facilita consultarea rezultatelor obinute. Selectnd
hiperlink-urile pentru semnale sau componente coninute n raport se poate
invoca utilitarul Xilinx Floorplane.

Figura A.24: Raport asupra constrngerilor impuse circuitului.

- Text-base Post Place Route Static Time - acest raport este identic cu
raportul obinut de ctre procesul anterior cu deosebirea c formatul
utilizat acum este txt. Acest raport poate fi uor tiprit dac este
necesar.
- Analyze Post-Place Route Static Timing - acest utilitar ne ofer
toate opiunile i capabilitile utilitarului Xilinx Timing Analyzer
Tool. Astfel se pot genera rapoarte, n diferite formate, selectnd un
grup particular de semnale sau chiar un subgrup de semnale ce se
doresc a fi examinate.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

129

View Edit Placed Design acest


Planner (figura A.25).

proces

invoc

utilitarul

Floor

Figura A.25: Visualizare modului de plasare al circuitului n circuitul Xilinx


FPGA/CPLD disponibil.

View Edit Routed Design (FPGA Editor) - acest utilitar permite


realizarea operaiilor de plasare i rutare manuale folosind editorul FPGA
oferit de Xilinx. Cu ajutorul lui este prezentat logica actual a circuitului
precum i rutarea resurselor procesului Xilinx, aa cum se poate observa n
figura: A.26.
Printre facilitile oferite se pot meniona: realizarea unei operaii de Place
Route manual pentru orice/toat logica coninut de ctre circuit,
modificarea layout-ului i funcionalitii circuitului, adugarea de blocuri
logice la logica deja existent.
Orice modificare realizat cu ajutorul acestui utilitar nu se va reflecta n codul
RTL sau n rezultatele simulrii comportamentale. Recomandarea este ca
acest utilitar s se utilizeze cu atenie i doar n urmtoarele cazuri:

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

130

- eliminarea erorilor din circuitului proiectat; se poate realiza o evaluare


grafic a implementrii;

Figura A.26: FPGA Editor.

- eliminarea erorilor din circuitului proiectat; se poate realiza o evaluare


grafic a implementrii;
- evaluarea cilor constrngerilor; se pot modifica atributele pentru
intrri/ieiri fr a fi necesar o compilare a codului surs;
- realizarea de modificri care totui nu modific funcionalitatea
circuitului. n acest caz se dorete doar modificarea implementrii la
nivel de circuite.
- modificarea atributelor pentru Xilinx Device Resource fr a
modifica funcionarea circuitului.
Analyze Power (XPower) - este un utilitar folosit pentru estimarea
consumului de putere al unui circuit FPGA/CPLD. Un exemplu
poate fi observat n figura A.27.Acest utilitar preia fiierele de
implementare ale circuitului FPGA/CPLD precum i datele de intrare ale
proiectului pentru a produce o estimare foarte precis pentru fiecare
tensiune de alimentare.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

131

XPower poate procesa fiiere rezultate n urma procesului de simulare,


fiiere n format vcd . Acesta facilitate este foarte important deoarece
detaliile de funcionare real ale circuitului proiectat sunt memorate n
fiiere cu format vcd, aceste detalii fiind eseniale n obinerea unei precizii
foarte ridicate a estimrii puterii consumate.

Figura A.27: Rezultate obinute cu ajutorul utilitarului XPower .

Generate Post-Place Route Simulation Model - invocarea acestui proces are


drept scop obinerea a dou tipuri de fiiere: VHDL/Verilog (circuitul este
descris la nivel structural) i fiiere n format sdf (Standard Delay
Format). Fiierele obinute pot fi simulate utiliznd ModelSim, obinnd
astfel simulri de timp pornind de la cile de ntrziere pe care le posed
circuitul proiectat.
Generate IBIS Model (I/O Buffer Information Specification) - Acest
utilitar genereaz un model care permite simularea pe nivel precum i
analiza intrrilor/ieirilor circuitului. Raportul astfel obinut este
personalizat pentru circuitul Xilinx FPGA/CPLD utilizat pentru
implementarea circuitului.
Multi Pass Place Route - este unul dintre cele mai importante utilitare
oferite de Xilinx. Acest utilitar este folosit pentru a realiza multiple iteraii
ale utilitarului Place Route. Fiecare iteraie implic utilizarea de intrri
diferite pentru utilitarul Place Route. Fiecare intrare este aleas aleator i
determinat doar de un numr particular ales de ctre proiectant. Valoarea
acestui numr particular nu poate fi mai mare de 100, aa cum se poate
observa n figura A.28.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

132

Figura A.28: Fereastra principal a utilitarului Muli Pass Place Route .

Acest utilitar determin prin mai multe iteraii aleatoare cea mai bun
configuraie pentru circuitul proiectat, urmnd ca aceast configuraie s fie
cea final. Acest utilitar posed urmtorii parametrii care pot fi modificai n
funcie de caracteristicile care trebuie ndeplinite de circuitul final:
- Starting Placer Cost Table (1-100) - se alege valoarea l, deoarece
numrul iteraiei urmtoare este dat de numrul iteraiei curente la
care se adaug aceast valoare;
- Number of PAR iterations (0 - 100) - reprezint numrul de iteraii
ales de ctre proiectant. Aa cum s-a specificat mai sus, limita maxim
a acestui numr este 100.
- Number of Results to Save (O - 100) - se alege o valoare diferit de zero dac se
dorete un raport final cu rezultatele obinute n urma rulrii acestui proces.
- Save Results in Directory - se alege directorul unde vor fi salvate rapoartele
rezultate.
Dup terminarea rulrii acestui proces, se poate selecta opiunea MFPR
Raport pentru a putea vizualiza i analiza rezulatele obinute. Acest raport
va conine informaii referitoare la sinteza rezultatelor obinute pentru
fiecare situaie testat. Simbolul * este cel care ne indic exact configurata
ce a fost salvat, aa cum se poate observa n figura A.29.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

133

Figura A.29: MFPR Raport.

Back-annotate Pin Locations - Acest process permite verificarea porturilor


de intrare/ieire ale circuitului, n urma rulrii acestui proces se vor obine
dou rapoarte. Primul raport se refer la denumirile pinilor circuitului. Cu
ajutorul acestui raport putem verifica dac exist mai multe denumiri pentru
acelai pin (aceast situaie creeaz un conflict) sau dac avem mai multe
semnale asignate aceluiai port de intrare/ieire al circuitului.
Raportul al doilea obinut ne permite s vizualizm modalitatea de asignare a
semnalelor de intrare/ieire. Acest raport este n coresponden direct cu
fiierul ucf. Dac fiierul ucf nu a fost elaborat, atunci ntregul raport poate
fi copiat ntr-un fiier cu extensia ucf, selectnd din meniul Projet opiunea
New Source File.
Procesul Generate Programming File. n momentul n care acest proces este rulat,
proiectarea circuitului este n faza de programare la nivel de circuit Xilinx FPGA/CPLD.

Funcionalitatea circuitului a fost testat, iar cerinele legate de timpii de funcionare au


fost soluionate.
Ca i procesele anterioare, i acest proces conine un numr semnificativ de parametri
care pot fi configurai. Modalitatea de acces i setare este identic cu cea explicat la
procesele de mai sus. Acest proces conine trei subprocese i anume:

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

134

Programming File Generation Report - acest raport este rezultatul


executrii procesului BITGEN. In acest raport se pot examina setrile salvate
n urma rulrii tuturor proceselor descrise anterior.
Generate PROM or ACE or JTAG File - rezultatul rulrii acestui proces va
fi transferat n circuitul Xilinx FPGA/CPLD si reprezint varianta fizic a
circuitului proiectat. De fapt rularea acestui proces implic realizarea unei
conversii dintr-un fiier cu extensia bit care este un fiier cu format
proprietar Xilinx, ntr-un fiier al crui format este unul utilizat n industrie.
Configure Device (iMPACT) - acest process este utilizat numai pentru
transferarea efectiv a circuitului proiectat ntr-un circuit Xilinx
FPGA/CPLD disponibil. Transferarea ntre calculator i circuitul Xilinx se
va realiza cu ajutorul unui cablu proprietar. La finalul acestui proces,
circuitul Xilinx FPGA/CPLD va conine prototipul circuitului proiectat.

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

135

Anexa B
Prezentarea simulatorului
software SPIM
B.1

Prezentare general

SPIM este un simulator software care execut programe scrise pentru procesoarele MIPS
R2000/R3000. SPIM poate citi i executa imediat fiiere n limbaj de asamblare sau
fiiere executabile. El conine un utilitar de depanare i ofer cteva servicii
asemntoare cu cele ale sistemului de operare.

Odat lansat comanda xspim el afieaz pe ecran fereastra prezentat n figura: B.l. Fereastra principal este mprit n cinci panouri:
1. Panoul superior se numete afiare registre. El prezint valoarea registrelor n UCP
MIPS i UVM (Unitatea de Virgul Mobil). Acest afiaj este actualizat de fiecare
dat cnd programul se oprete din execuie.
2. Panoul doi conine butoanele de control pentru operarea simulatorului. Butoanele
realizeaz urmtoarele operaii:
quit - ieire din simulator;
load - citete un fiier surs sau executabil n SPIM;
run - pornete execuia programului;
step - execut un pas din program;

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

136

Figura B.1: Fereastra principal a simulatorului SPIM.

clear - reinitializeaz registrele si memoria;

set value - stabilete valoarea dintr-un registru sau o locaie de memorie;


137

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

print - tiprete valoarea dintr-un registru sau o locaie de memorie;

breakpoint - stabilete sau anuleaz un punct de ntrerupere sau enumera toate


punctele de ntrerupere;

help - afieaz un mesaj de ajutor;

mode - stabilete modul de operare SPIM

3. urmtorul panou se numete segment de text. In acest panou sunt afiate


instruciuni aparinnd programului curent, ct i codul sistemului ncrcat automat
n momentul lansrii simulatorului. Fiecare instruciune este afiat pe cte o singur
line:
[0x00400000] Ox8fa40000 lw $4, 0($29) ; 89 : lw $aO, 0($sp)

Primul numr, cel ntre paranteze drepte, reprezint adresa hexazecimal a locaiei de
memorie unde se afl memorat instruciunea. Cel de al doilea numr rezint
codificarea numeric a instruciunii. Urmtoarea parte din instruciune (pn la
punct i virgul) este descrierea mnemonic a instruciunii. Linia efectiv din fiierul
scris n asamblare ncepe dup punct i virgul. Valoarea 89 reprezint numrul
liniei din fiierul care conine instruciuni n limbaj de asamblare. Dac linia nu mai
conine nimic dup punct i virgul, atunci instruciunea a fost produs de SPIM ca
parte din translatarea unei pseudoinstruciuni.
4. urmtorul panou, stive de date si segment, ofer spre vizualizare datele
ncrcate n memoria programului precum i datele din stiva programului.
5. ultimul panou cuprinde mesajele de eroare.

B.2 ncrcarea i rularea unui program


n primul rnd trebuie s se ncarce programul scris n limbaj de asamblare. Aceast
operaie se realizeaz prin selectarea butonului load. Odat selectat acest buton, se va
deschide o nou fereastr n care se introduce numele fiierului i se va selecta noul
buton assembly file. Rolul noului buton abort este evident.
Odat selectat butonul assembly file, programul este ncrcat n simulator, rularea sa
realizndu-se odat cu selecia butonului run. Odat selectat butonul run, se va
activa o fereastr cu dou casete de text i dou butoane. Aceste casete conin valorile
corecte pentru executarea programului i, n concluzie, ele pot fi ignorate, deci se
selecteaz butonul ok.
138
Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

Observaie n timpul rulrii programului, coninutul panoului de afiare al


registrelor este inactiv deoarece aceste registre sunt modificate continuu. Dac se dorete
oprirea programului se va tasta CTRL-C. Acum se va activa o nou fereastr, nainte de a
aciona n aceast nou fereastr, se va observa coninutul registrelor i al memoriei
pentru a observa cum ruleaz programul. Dac este prea complicat, rulai programul pas
cu pas.

Dac programul conine instruciuni care scriu/citesc la terminal, simulatorul afieaz o


nou fereastr denumit consol. Toate caracterele scrise de ctre program sunt afiate la
consol. Toate intrrile n program se fac tot prin intermediul consolei.

B.3 Deosebiri fa de un procesor normal


SPIM-ul nu simuleaz latena cache-ului sau a memoriei i nici nu reflect cu exactitate
ntrzierile operaiilor de virgul mobil sau ale instruciunilor de nmulire i
mprire.
O pseudoinstruciune este expandat la mai multe instruciuni main, n execuia
pas cu pas sau cnd se examineaz memoria, instruciunile care apar difer de
programul surs. Corespondena ntre cele dou seturi de instruciuni este simpl.
Procesoarele pot numra octeii din cuvnt, octetul cu numrul cel mai mic este sau cel
mai din stnga sau cel mai din dreapta. Procesoarele MIPS pot opera cu ordinea
octeilor big-endian sau little-endian. Directiva .byte 0, l, 2, 3 ntr-o main de tip bigendian va rezulta ntr-un cuvnt de memorie al crui coninut este de la stnga la
dreapta 0, 1,2, 3, n timp ce la o main de tip little-endian ordinea este invers.

B.4 Apeluri sistem


SPIM ofer cteva servicii asemntoare cu cele pe care sistemul de operare le ofer
prin intermediul instruciunii de apel de sistem - syscaii. Programul ncarc codul
apelului de sistem n registrul $ VO i argumentele n registrele $ aO - $ a3 ($ f!2
pentru valorile de virgul mobil). Valorile ntoarse de apelurile sistem se regsesc n
registrul $ vO ($ fO pentru rezultatele de virgul mobil).
Serviciile oferite de SPIM sunt prezentate n tabelul B. L

139
Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

Serviciu

print_int
print_float
print_double
print_string
read_int
read_float
read_double
read_string
sbrk
exit

Codul apelului
de sistem
1
2
3
4
5
6
7
8

9
10

Argumente

Rezultat

$ a0 = integer
$ f12 = real
$ f12 = double
$ a0 = string
integer (n $ v0)
float (n $ f0)
double (n f0)
$ a0 = buffer, $ a1
= lungime
$ a0 = cantitate
adres (n $ v0)

Tabelul B.1: Serviciile oferite de SPIM.

140
Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

Valoriile pinilor programabili pentru DIGILAB


DIO1 i DIGILAB 2E

Denumire
resurs

Pin

Denumire
resurs

Pin

Denumire
resurs

Pin

SW 1

P 16

BTN 2

P 41

LED nr. 7

P 61

B0

P 188

SW 2

P 18

BTN 3

P 42

LED nr. 8

P 63

BTN

P 77

SW 3

P 21

BTN 4

P 43

PS2CLK

P 189

LED

P 69

SW 4

P 23

LED nr. 1

P 44

PS2D

P 187

SW 5

P 27

LED nr. 2

P 46

CLOCK

P 80

SW 6

P 30

LED nr. 3

P 48

HSYNC

P 192

SW 7

P 33

LED nr. 4

P 55

VSYNC

P 194

SW 8

P 35

LED nr. 5

P 57

R0

P 193

BUTON
(BTN) 1

P 40

LED nr. 6

P 59

G0

P 191

141
Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

Dispozitive de afiare 7 segmente

Placa de I/O DIGILAB DIO1 este prevzutcu un numr de 4 dispozitive de afisare 7


segmente. Pentru a le referi sunt necesare 4 semnale codificate dupcum urmeaz: AN1
dispozitivul 1, AN2 dispozitivul 2, AN3 dispozitivul 3i AN4 dispozitivul 4.
Segmentele sunt codificate conform figurii de mai jos, iar punctul zecimal
este referit prin intermediul semnalului DP.

De reinut este c dac se dorete iluminm unui anumit segment atunci


semnalul segmentului respectiv trebuie s aib valoarea 0 (zero).
Pin
Denumire
Denumire
corespunztor
resurs
resurs

Pin
corespunztor

ca

P 17

AN 2

P 47

cb

P 20

AN 3

P 49

cc

P 22

AN 4

P 56

cd

P 24

ce

P 29

cf

P 31

cg

P 34

DP

P 36

AN 1

P 45
142

Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

Pinii pentru LCD Seiko (2 rnduri, 16 caractere)


NET
NET
NET
NET
NET
NET
NET
NET
NET
NET
NET

"db<0>"
"db<1>"
"db<2>"
"db<3>"
"db<4>"
"db<5>"
"db<6>"
"db<7>"
"db<8>"
"db<9>"
"db<10>"

LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC

=
=
=
=
=
=
=
=
=
=
=

"P58";
"P59";
"P60";
"P61";
"P62";
"P63";
"P64";
"P68";
"P57";
"P56";
"P55";

# 10
# 9
# 8
# 7
# 6
# 5
# 4
# 3
# 2
# 1
# 0

data
data
data
data
data
data
data
data
en
rw
rs

0
1
2
3
4
5
6
7

a11
a10
a9
a8
a7
a6
a5
a4
a12
a13
a14

143
Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare

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