Documente Academic
Documente Profesional
Documente Cultură
Indrumar CN New PDF
Indrumar CN New PDF
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:
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
Intrri
AND
OR
Ieiri
AND
AND
OR
AND
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.
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.
a)
c)
b)
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.
EM, EB1 - semnal care se activeaz cnd o moned de 5.000 lei, bancnot de 10.000
lei trebuie returnat de ctre aparat;
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
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
M B1 B2
--M B1 B2
---
EB l
M B1 B2
---
EBl
EBl
n figura 1.7. Aceast tabel este valabil doar pentru bistabilul 4, corespunztor intrrii
D3.
y1 y 3 + y 0 y 2 M B1 B2
(1.1)
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.
10
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)
ESB =
11
12
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
F(A, B, C, D) =
(4,6,7,15)
F(A, B, C, D) =
F(A, B, C, D) =
F(A, B, C, D) =
(0, 2, 4, 5, 6, 7, 8, 10)
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;
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.
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.
16
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.
3.
17
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:
18
6.
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.
19
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:
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.
21
Se selecteaz celula (dublu click) Period din linia asociat intrrii de ceas CLK.
22
comportarea semnalului.
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
23
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.
25
Conversia din binar n hexazecimal se realizeaz mecanic prin nlocuirea fiecrui grup
de patru cifre binare printr-o singur cifr hexazecimal i invers.
26
27
(3.1)
= b0 cin0 + a 0 cin0 + a 0 b0
cin1
(3.2)
ci +1 = bi ci + ai ci + ai bi
= ai bi + ci (ai + bi )
(3.3)
ci +1
= g i + p i ci
(3.4)
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)
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)
gi
= ai bi
a: 0001 101000110011
b: 11100101 1110 1011
g i : 0000000000100011
pi : 1111 1111 1111 1011
29
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
31
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
32
Figura 3.5: Algoritmul lui Booth de nmulire a dou numere binare cu semn.
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.
34
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
36
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.
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
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
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:
39
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
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
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.
42
[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
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
[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.
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.
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
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
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
49
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:
[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
[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
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
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.
[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
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.
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
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.
58
[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
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.
[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
[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
[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
[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
[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
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).
68
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
11b00001000001
11b00001000000
11b00001000010
11b00001000011
11b00001000100
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
//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.
75
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
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
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
Aj
= Fij
j = 1 ... n
(8.1)
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)
[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
daca k j = 1
x j
=
1
daca
(8.3)
kj = 0
(x
)(
)(
+ k1 x 2 + k 2 x3 + k 3 ... x n + k n
(8.4)
(A
n
Fij + A j Fij + k j
i = 1, m
(8.5)
j =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.
[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
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.
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
82
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.
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
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.
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.
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.
87
[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
[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
90
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.
[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
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)
:
:
7 24 3
7 24 3 34
7 28 3 38
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).
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).
97
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.
[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
[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
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
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.
101
[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.
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
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.
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
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.
[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
107
memorii;
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.
108
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
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
- 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
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
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
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.
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
[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 .
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
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
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.
118
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.
119
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
121
[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
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
[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
[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
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
[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.
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.
- 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.
129
proces
invoc
utilitarul
Floor
130
131
132
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.
133
134
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;
136
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.
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)
140
Universitatea POLITEHNICA din Bucureti, Catedra de Calculatoare
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
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
"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