91
UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET KATEDRA ZA ELEKTRONIKU BRZI SABIRAČI studenti: Stanković Branislav 9785 Milošević Nenad 9701 Ristić Ivan 9770 Potić Martin 10332 Niš, Novembar 2005.

BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

  • Upload
    others

  • View
    6

  • Download
    1

Embed Size (px)

Citation preview

Page 1: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

UNIVERZITET U NIŠU ELEKTRONSKI FAKULTET KATEDRA ZA ELEKTRONIKU

BRZI SABIRAČI studenti: Stanković Branislav 9785 Milošević Nenad 9701 Ristić Ivan 9770 Potić Martin 10332

Niš, Novembar 2005.

Page 2: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

2

SADRŽAJ:

1. Uvod ……...………….............................................................................................. 32. Brzi sabirači .............................................................................................................. 2.1. Elementarna kola za sabiranje ......................................................................... 2.2. Opisi realizovanih kola ....................................................................................

446

3. Realizacija brzih sabirača .......................................................................................... 174. Sinteza i implementacija ........................................................................................... 335. Testiranje rada kola ................................................................................................... 536. Laboratorijska vežba .................................................................................................

Zadatak 1 ................................................................................................................ Zadatak 2 ................................................................................................................ Zadatak 3 ................................................................................................................

55556779

7. Literatura ................................................................................................................... 91

Page 3: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

3

UVOD

Najveći broj digitalnih sistema, kakvi su računari, projektovan je da izvršava različite operacije nad podacima. Te operacije mogu biti različitog tipa, a neke od tipičnih su: aritmetičke operacije, logičke operacije, kodiranje i dekodiranje podataka, reorganizacija podataka i dr. U opštem slučaju, nabrojane operacije se obavljaju od strane kombinacionih kola koja, zajedno sa različitim memorijskim komponentama, čine mikroarhitekturu standardnih procesora ili drugih aplikaciono specifičnih integrisanih kola. Ili konkretnije, komponente koje vrše transformacije nad podacima obavljaju aritmetičke operacije (sabiranje, oduzimanje, množenje i deljenje), logičke operacije (AND, OR, ExOR i komplementiranje), operacije poređenja (veće od, jednako sa, manje od) i operacije koje manipulišu bitovima (pomeranje, rotiranje, izdvajanje, umetanje). Sprežne komponente, koje se satoje od selektora i magistrala, koriste se za povezivanje aritmetičkih i memorijskih komponenata. Komponente za konverziju, kakve su dekoderi i koderi, koriste se za konverziju između različitih kodova. Konačno, univerzalne komponente, kao što su ROM-ovi i PLA-ovi, prvenstveno su namenjene za projektovanje upravljačkih jedinica. Kod digitalnih računara najčešće se obavljaju operacije sabiranja, oduzimanja, množenja i deljenja. Sabiranje i oduzimanje standardno se realizuju pomoću kombinacionih kola, dok se množenje i deljenje uobičajeno obavljaju pomoću sekvencijalnih kola. U daljem izlaganju biće detaljnije obrađena kola za sabiranje - sabirači. Osim uopštenog, biće i konkretno obrađene pojedine vrste sabirača.

Page 4: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

4

2. BRZI SABIRAČI Sabirač dva operanda je najednostavnije i najčešće primenjivano aritmetičko kolo. Sabiranje dva operanda ne koristi se samo kod operacija sabiranja nego i kod kompleksnijih operacija kao što su množenje i deljenje. Shodno tome, realizacija brzog dvooperandskog sabirača je imperativ svakog projektanta.

2.1. Elementarna kola za sabiranje Razlikuju se dva tipa elementarnih sabiračkih kola.

a) Polusabirač (HA - half adder) Polusabirač predstavlja kombinaciono kolo koje prihvata dve binarne cifre ( xi i yi ), a generiše bit sume ( Si ) i bit prenosa ( ci ). Tablica istinitosti na osnovu koje se opisuje rad polusabirača oblika je

xi yi Si ci 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1

Odgovarajući Bulovi izrazi za sumu i prenos su:

iii yxS ⊕= 2.1.1

iii yxc = 2.1.2

Implementacija koja se zasniva na NAND-NAND kolima prikazana je na slici 1.1.

Sl. 2.1. Polusabirač implementiran NAND-NAND kolima.

b) Potpuni sabirač (FA - full adder)

Direktna implementacija paralelnog sabirača dva operanda xn-1, xn-2 ... x0 i yn-1, yn-2 ... y0 se izvodi korišćenjem n osnovnih jedinica koje se nazivaju potpuni sabirači. Potpuni sabirač je kombinaciono kolo koje prihvata dva jednobitna operanda, recimo xi, yi i dolazeći bit prenosa označen kao ci, a generiše odgovarajući bit sume Si, i izlazni bit prenosa ci+1. Tablica istinitosti na osnovu koje se opisuje rad potpunog sabirača oblika je

xi yi ci Si ci+1 0 0 0 0 0

Page 5: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

5

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

Odgovarajući Bulovi izrazi za sumu i prenos su:

iiiiiiiiiiiii cyxcyxcyxcyxS +++= 2.1.3

iiiiiiiiiiiii cyxcyxcyxcyxc +++=+1 2.1.4 Karnoove mape i logičke šeme odgovarajućih izraza prikazane su na slici 2.2. Kao što se može uočiti sa slike 2.2, izraz za Si se ne može redukovati.

a)

b)Slika 2.2. a) Karnoove mape za Si i ci+1

b) Odgovarajuće logičke šeme za Si i ci+1 Izrazi za Si i ci+1 se mogu takođe napisati i u obliku:

)()()()( iiiiiiiiiiii

iiiiiiiiiiiii

cyxcyxcyxcyx

cyxcyxcyxcyxS

+++++++++++=

+++= 2.1.5

)()()(

1

iiiiii

iiiiiii

yxcycx

yxcycxc

+++++=

++=+ 2.1.6

Implementacija izraza za Si i ci+1 koristeći NOR kola prikazana je na slici 2.3.

Page 6: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

6

Slika. 2.3. Implementacija potpunog sabirača koristeći NOR kola.

Potpuni sabirač je moguće implementirati pomoću dva polusabirača i tri NAND kola kako je to prikazano na slici 2.4.

Slika. 2.4. Potpuni sabirač realizovan pomoću polusabirača.

2.2. Opisi realizovanih kola

Brzi sabirači se dele najpre prema broju sabiraka koje sabiraju na: 1. dvooperandske; 2. multioperandske.

Postoji više vrsta dvooperandskih sabirača. Neki od njih su: a. ripple-carry adder; b. carry-lookahead adder; c. carry-completion sensing adder; d. conditional sum adder; e. carry-skip adder.

Od multioperandskih sabirača mogli bismo da izdvojimo: w. carry-save adder; x. bit partitioned multiple adder.

U daljem izlaganju od dvooperandskih sabirača obradili smo ripple-carry i carry-lookahead sabirač, a od multioperandskih carry-save sabirač.

• RIPPLE CARRY SABIRAČ ( RCA )

Paralelni sabirač koji se sastoji od potpunih sabirača za n=4 prikazan je na slici 2.5. U aritmetičkoj jedinici paralelnog sabirača, svih 2n ulaznih bitova (xi i yi) su obično istovremeno dostupni sabiraču. Međutim, prenos kod potpunih sabirača postoji od pozicije 0 do pozicije i kako bi se dobio tačan rezultat i bit prenosa. Drugim rečima,

Page 7: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

7

potrebno je da se čeka dok prenos prođe kroz svih n sabirača pre nego što možemo tvrditi da smo dobili tačan rezultat koji se može upotrebljavati u daljem računanju. Zbog ovoga se paralelni sabirač prikazan na slici 2.5. naziva ripple-carry sabirač.

Slika 2.5. Četvorobitni ripple-carry sabirač

Pošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos ci=0, i prema tome će generisati sumu si. Sledeći prenos ci može dobiti drugu vrednost, u zavisnosti od odgovarajućih promena u si. Takođe primećujemo da u operaciji sabiranja, prenosni bit na poziciji 0, c0 je uvek nula i kao rezultat toga sabirač na toj poziciji može biti zamenjen jednostavnijim sabiračem sa mogućnošću sabiranja samo dva bita. Takvo kolo se naziva polusabirač i njegove Booleanove jednačine se izvode iz gore navedenih tako što se ci postavi na nulu. Neka se na ulaz sabirača sa slike 2.5. dovedu sledeća dva operanda: x

3x

2x

1x

0 = 1111 i

y3y

2y

1y

0 = 0001. Ako je operaciono kašnjenje signala potpunog sabirača FA

i kod

generisanja Si i c

i+1 (i = 0,..., 3) identično i iznosi t

FA, tada se rad sabirača može opisati

saglasno tabeli 1.

T = 0 prenos suma

1 1 1 1 +0 0 0 1

T = tFA

prenos suma

0 0 0 1 1 1 1 0

T = 2tFA

prenos suma

0 0 1 1 1 1 0 0

T = 3tFA

prenos suma

0 1 1 1 1 0 0 0

T = 4tFA

prenos suma

1 1 1 1 0 0 0 0

Tabela 1. Princip rada RCA

U principu, vreme potrebno da se odredi rezultat kod n-tobitnog RCA iznosi n∗tFA. Ovo znači da sabirač generiše korektan rezultat nakon fiksnog vremenskog kašnjenja nezavisno od stvarnog vremena prostiranja prenosa koje može biti veoma kratko. Jasno se vidi da se dugački lanac propagacije prenosa mora skratiti kako bi se ubrzalo sabiranje. Razmatraćemo dva glavna pristupa:

jedan je da se smanji vreme propagacije prenosa;

x3 y3 x2 y2 x1 y1 x0 y0

c c2 c1

s3 s2 s1 s0

c0

Page 8: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

8

drugi je da se uoči kraj prenosa i da se izbegne gubljenje vremena dok se čeka izvršenje kompletne operacije, osim ukoliko to nije potpuno neophodno. Jasno je da drugi pristup dovodi do varijabilnog vremena sabiranja, što može da smeta u sinhonim delovima. Dakle koncentrišemo se na prvi pristup i razmotrićemo nekoliko šema za ubrzavanje prenošenja prenosa.

• CARRY-LOOKAHEAD SABIRAČ ( CLA )

Kod ripple-carry sabirača prenosi na različitim bitskim pozicijama se generišu sekvencijalno. To znači da 1+ic zavisi od ic a ic ne može da se odredi ako

1−ic nije poznato. U ovom odeljku opisan je sabirač koji generiše sve prenose paralelno tj. sve bitove prenosa ic računa pre sumacije. Dakle, u ovom slučaju prostiranje prenosa nije jedan od uzroka kašnjenja. Neka su A = ( An-1 ... A1A0 ) i B= ( Bn-1 ... B1B0 ) sabirci a Ci prenos na bitskoj poziciji i . Prenos u LSB je C0. Tražimo relaciju između bitova prenosa Ci i ulaznih bitova Ai i Bi. Definišemo dve nove funkcije. Razmatrajući uslove pod kojima može biti generisan prenos na bitskoj poziciji i, zanemarujući ulazni prenos, definišemo funkciju generisanja prenosa:

iii BAG ×= . 2.2.1Mogućnost da pozicija i ’’prebaci’’ ulazni prenos sa pozicije i-1 na poziciju i+1 može biti definisana kao funkcija prostiranja prenosa:

iii BAP ⊕= . 2.2.2Odavde, Si i Ci+1 mogu da se izraze kao funkcije od Pi i Gi:

( ) iiii CPCBAS ⊕=⊕⊕= , 2.2.3( ) iiiiiiiii CPGCBABAC ×+=×⊕+×=+1 . 2.2.4

Prema tome, prenos C1 može da se predstavi kao: ( ) 000000001 CPGCBABAC ×+=×⊕+×= .. 2.2.5

Slično, C2 se predstavlja pomoću G1, P1 i C1 kao: 1112 CPGC ×+= . 2.2.6

Kada zamenimo C1 u gornjoj jednačini vrednošću iz prethodne, dobijamo prenos C2 izražen preko G0, G1, P0, P1 i C0:

( ) 100101100011112 PPCPGGPPCGGPCGC ++=++=+= . 2.2.7Nastavljajući ovom logikom imamo:

0001 PCGC += . 2.2.8

1001012 PPCPGGC ++= 2.2.9

21002102123 PPPCPPGPGGC +++= 2.2.10

3210032103213234 PPPPCPPPGPPGPGGC ++++= 2.2.11M

iiiiiiiiI PPPCPPPGPPGPGGC LLL 1002101211 +++++= −−−+ 2.2.12 Carry-lookahead logika koristi ove funkcije da izračuna sve prenose Ci unapred, a onda vodi ove vrednosti na niz EXOR kola i odatle se računa vektor sume Si. Kao što je gore navedeno, i-ti element vektora sume računa se koristeći relaciju:

iiii CBAS ⊕⊕= . 2.2.13

Page 9: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

9

a)

b)

c)

Slika 2.6.

Kolo koje generiše vrednosti Ci+1 zove se carry-lookahead jedinica. Jedna četvorobitna carry-lookahead jedinica je prikazana na slici 2.6.b). Konačna suma S se može izračunati kada sve vrednosti Ci za i = 0, 1, … n budu poznate. U n-toj etapi sabirača imali bismo:

Page 10: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

10

11001210121 −−−−− ++++= nnnnnn PPPCPPPGPGGC LLL 2.2.14Pošto se ovo izvodi za sve etape, onda za svaku etapu nastaje kašnjenje ∆g kako bi moglo da se generiše Pi i Gi, gde je ∆g kašnjanje jednog logičkog kola. Vreme kašnjenja za carry-lookahead sabirač može biti izračunato kao:

∆T = ∆ carry-lookahead jedinice + ∆CLA + ∆SUM = 2∆g + 2∆g + 3∆g , ( vreme kašnjenja EXOR kola je ∆XOR = 3∆g ). U jednačini 2.2.14 se vidi da je broj sabiraka n+1, a u poslednjem sabirku broj činilaca takođe je n+1. Kako broj bitova n raste, potrebno je sve više logičkih kola ( n+1 ) i što je još bitnije, potrebna su kola sa velikim brojem ulaza ( fan-in ). Već za n = 32 ovaj način realizacije postaje nepraktičan. Dakle, moramo smanjiti raspon carry-lookahead jedinice na štetu brzine. Možemo podeliti n etapa u manje grupe i na svaku grupu primeniti carry-lookahead postupak. Grupe se kasnije spajaju pomoću ripple-carry postupka. Deljenje sabirača na podjednake delove ima dodatnu korist zbog modularnosti, potreban je detaljan dizajn samo jednog integrisanog kola. Često se upotrebljavaju grupe veličine 4, koja je izabrana zato što je to čest faktor veličine reči i zbog tehničkih ograničenja ( npr. raspoloživost broja ulazno-izlazni pinova ). Za n bitova i grupe veličine 4 bita postoji 4n grupa. Za prostiranje prenosa kroz grupu kada su nam dostupni Pi, Gi i C0 potrebno nam je 2∆g vremenskih jedinica. Dakle ∆g je potrebno da bi se generisali svi Pi i Gi a ( ) gn ∆24 je potrebno da prostiranje prenosa kroz sve bitove i dodatno kašnjanje od 2∆g je potreban za generisanje konačnog izlaza što je ukupno ( ) gn ∆+ 32 . Ovo je skoro četvorostruko smanjanje vremena u poređenju sa 2n∆g kašnjenja koje ima ripple-carry sabirač.

Slika 2.7.

Dalje povećanje brzine sabiranja se može ostvariti ako se pored interno implementirane CLA tehnike unutar grupe implementira i CLA tehnika između grupa. S toga definišimo grupno generisani prenos G* i grupno propagirani prenos P*, za grupu obima 4 na sledeći način: G* = 1, ako se cout (grupe) generiše interno, a P* = 1, ako se cin (grupe) propagira interno i generiše cout

(grupe). Bulove jednačine ovih prenosa su:

3210321223 PPPGPPGPGGG +++=∗ , 2.2.15

3210 PPPPP =∗ . 2.2.16

Page 11: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

11

Grupno generisani i grupno propagirani prenosi od nekoliko grupa mogu se sada koristiti za generisanje grupnih prenosa cin

na sličan način kao kod prethodnog primera. Kombinaciono kolo koje implementira ove jednačine je dostupno na tržištu kao standardno integrisano kolo (IC). Ovo kolo se zove CLA generator. Za n=16 postoje četiri grupe čiji su izlazi označeni kao G0*, G1*, G2*, G3*, i P0*, P1*, P2*, P3*. Izlazi se koriste kao ulazi u CLA generator čiji su izlazi označeni kao c4, c8

i c12 i definisani su sledećim Bulovim izrazima:

∗∗ += 0004 PcGc , 2.2.17∗∗∗∗∗ ++= 1001018 PPcPGGc , 2.2.18

∗∗∗∗∗∗∗∗∗ +++= 210021021212 PPPcPPGPGGc . 2.2.19 16–to bitni sabirač koga čine 4 grupe, svaka sa internim CLA i dodatnim CLA generatorom prikazana je na sledećoj slici.

Slika 2.7. 16-bitni dvonivovski CLA sabirač (Napomena: označavanje x3-0

ukazuje na x3, x

2, x

1, x

0)

Rad sabirača sa prethodne slike se može opisati sledećim koracima: 1. Sve grupe paralelno generišu bitove G

i i P

i;

2. Sve grupe paralelno generišu bitove G*i i P*

i;

3. CLA generator generiše bitove c4, c

8 i c

12 koji se vode na ulaz grupama;

4. Grupe interno izračunavaju individualne (paralelno) bitove sume i CLA. Naime, one prvo generišu interne prenose, a nakon toga bitove sume. Minimalno kašnjenje koraka (1) do (4) (usvajajući minimalni broj kašnjenja kroz logička kola po grupi) iznosi: 1T za korak (1), 2T za korak (2), 3T za korak (3) i 4T za korak (4). Prema tome ukupno kašnjenje iznosi 9T. Ako se umesto spoljnjeg CLA generatora koristi ripple-carry tehnika između grupa vreme izračunavanja iznosi 11T. Kao što se vidi sa slike 2.7. CLA generator generiše dva dodatna izlaza G** i P**, čije su Bulove jednačine slične jednačinama (9.13) i (9.14). Ovi novi izlazi se zovu section-carry generate i section-carry propagate, respektivno, gde je sekcija ( u ovom slučaju ) skup od 4 grupe i čini je 16 bitova. Kada se vrši sabiranje brojeva čiji je broj bitova veći od 16, recimo 64, moguće je koristiti četiri kola čija je struktura slična onoj na slici 2.7. sa ripple-carry između susednih sekcija, ili da se koristi drugi nivo CLA i ostavi brže izvršenje kod sabiranja. To znači da se koristi isto kolo kao ono sa slike 2.7. koje prihvata četiri para section-carry generate i section-carry-propagate i generiše tri prenosa c16, c32

i c48. Na slici 2.8.

Page 12: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

12

prikazan je jedan detalj koji se odnosi na način realizacije 64-bitnog sabirača koji koristi CLA tehniku organizovanu u tri nivoa.

Slika 2.8. 64-bitni sabirač i CLA tehnika organizovana u tri nivoa

Struktura jednog CLA generatora prikazana je na slici 2.9. Sa povećanjem broja bitova n povećava se i broj nivoa CLA generatora. Broj potrebnih nivoa (da bi se postigla maksimalna brzina) približava se log

bn gde je b faktor

blokiranja, tj. broj bitova u grupi po sekciji. Faktor blokiranja kod slike 2.7. je 4 i odgovara najvećem broju realnih implementacija. Shodno prethodnom ukupno vreme sabiranja CLA sabirača je proporcionalno sa log

bn.

Slika 2.9. Integrisani CLA generator

Page 13: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

13

• CARRY SAVE SABIRAČI ( CSA )

Kada se javi potreba za korišćenjem dvooperandskih sabirača radi istovremenog sabiranja tri ili većeg broja operanada, vreme koje protekne zbog propagacije bita za prenos mora da se ponovi nekoliko puta. Ako je broj operanada k, tada se bitovi prenosa moraju propagirati (k-1) puta. Sa ciljem da se smanji cena koja se plaća zbog propagacije bita za prenos, kod sabiranja većeg broja operanada predlaže se nekoliko rešenja (tehnika). Tehnika koja se najčešće koristi je sabiranje sa pamćenjem prenosa (carry save-addition). Kod ovog načina sabiranja dozvoljava se propagacija prenosa samo u toku zadnjeg koraka, dok se u svim ostalim koracima generiše parcijalna suma kao i sekvenca bitova za prenos. Na ovaj način sabirač sa pamćenjem prenosa (CSA - carry save adder) prihvata tri n-to bitna operanda i generiše dva n-to bitna rezultata, n-to bitnu potencijalnu sumu i n-to bitni prenos. Drugi CSA prihvata ove dve bit-sekvence, kao i drugi ulazni operand, a generiše novu parcijalnu sumu i prenos. Na ovaj način CSA redukuje broj operanada koji se sabiraju sa tri na dva bez propagacije prenosa. Slika 2.10. je šematski prikaz n-to bitnog CSA sastavljenog od n potpunih sabirača. Registri služe za privremeno skladištenje izlaza potpunih sabirača pre njihovog slanja na ulaze sabirača. Ovaj tip registra se zove carry-save registar. Neka su F1, F2, …, Fk sabirci i X, Y, Z tri ulaza carry-save sabirača. Najpre se brojevi F1, F2 i F3 vode u sabirač i sabiraju. Zatim se rezultati S i C vode nazad na ulaze X i Y, a na ulaz Z se dovodi broj F4. F4 se dodaje na parcijalnu sumu iz prethodnog sabiranja. Ova operacija se ponavlja sa novim sabirkom sve dok se ne stigne do Fk. Neka su ( )jj

nj

nj fffF 021 L−−= , kj ≤≤1

K brojeva koje sabiramo. Operacije koje vrši svaki potpuni sabirač na bitskoj poziciji i su sledeće:

1) ubace se 1if , 2

if i 3if u sabirač. Rezultat si se čuva u Ri, a ci+1 u Ri

’; 2) si sačuvan u registru se vodi na potpuni sabirač na tekuću bitsku poziciju kao prvi

ulaz; vrednost ci+1 sačuvana u registru šalje se na potpuni sabirač na bitskoj poziciji i+1. Sabirač na trenutnoj bitskoj poziciji uzima ulazni prenos sa bitske pozicije i-1 kao drugi ulaz a vrednost 4

if novog sabirka kao treći ulaz i sabira ih. Rezultat si se smešta u Ri, a ci+1 u Ri

’; 3) ponavlja se korak 2), s tim što se u opštem slučaju oznaka 4

if menja oznakom 3+j

if u j-toj operaciji. Sabiranje se obavlja sve dok kj = ; 4) ponavlja se korak 3), ali se kao treći ulaz potpunog sabirača uzima 0 sve dok svi

registri R’n-1, …, R0 ne sadrže 0.

U koracima od 1) do 3) ponavlja se k-2 operacija za sabiranje k-brojeva, pošto se u prvom ciklusu sabiraju 3 broja a ostalih k-3 brojeva traži još k-3 ciklusa.

Page 14: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

14

Slika 2.10. Posle koraka 3) nastupa prostiranje prenosa. Konačna suma je dostupna u najviše ( ) ( )21 −+− kn koraka. Neka je potrebno t ciklusa za sabiranje k n-to bitnih brojeva:

32 −+≤≤− kntk . 2.2.20Vreme kašnjenja CSA je:

( )FFFAftCSA ∆∆×=∆ , . 2.2.21 Kada je dužina bitske reči n veoma duga, ripple-carry prostiranje u finalnoj fazi će značajno degradirati performanse CSA sabirača. Da bi se ubrzao korak 4), može se iskoristiti carry-propagagate sabirač ( CPA ). Pošto se u koraku 4) samo dva vektora, vektor sume i vektor prenosa sabiraju, CPA može biti bilo koji od brzih dvooperandskih sabirača opisanih u prethodnim poglavljima. Na primer, možemo uzeti CLA. U tom slučaju potreban broj ciklusa za sabiranje k brojeva će biti:

)1(12 −=+−= kkt . 2.2.22Prethodno opisani CSA ima jedan nivo.

Implementacija CSA CSA se može implementirati na nekoliko različitih načina. Kod najjednostavnije implementacije osnovni element CSA je FA sa tri ulaza x, y i z, čija se aritmetička operacija može opisati sa

Sczyx +=++ 2 , 2.2.23gde su S i c izlazi bitova prenosa i sume, respektivno. Njihove vrednosti se određuju na osnovu sledećih izraza

2mod)( zyxS ++= , 2.2.24i

2)( Szyxc −++

= . 2.2.25

Struktura FA sa tri ulaza (slika 2.11) naziva se brojač (3, 2).

Page 15: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

15

Slika 2.11. Brojač (3, 2)

Struktura CSA za četiri četvorobitna operanda X, Y, Z i W je prikazana na slici 2.12. Gornja dva nivoa su četvorobitni CSA-ovi, dok se na trećem nivou koriste četvorobitni CPA-ovi (carry propagating adder). CPA može biti tipa CLA, CRA ili drugi. Da bi sabirali k operanda, X1, X2, ... Xk, potrebno je (k-2) CSA blokova i jedan CPA. Kada su CSA-ovi povezani kaskadno, kao na slici 2.12. tada vreme za koje se vrši sabiranje k operanda iznosi

CPACSA TTk +− )2( , 2.2.26gde je TCPA

vreme propagacije signala kroz CPA, a TCSA vreme propagacije signala kroz

CSA blok. Obično je TCSA = TFA= 2T, gde je TFA vreme propagacije signala kroz FA, a T

vreme propagacije signala kroz logičko kolo.

Slika 2.12. CSA za četiri operanda

Bolji način organizacije CSA-ova koji dovodi do kraćeg vremena generisanja rezultata je poznat pod imenom Wallace-ovo stablo. Principiska šema Wallace-ovog stabla za šest operanda prikazano je na slici 2.13.

23 22 21 20 CS

23 22 21 CP

w3 w2 w1 w0

23 22 21 20 CS

S5 S4 S3 S2 S1 S0

x3 y3 z3 x2 y2 z2 x1 y1 z1 x0 y0 z0

20

x y z

c s

(3, 2) brojač

Page 16: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

16

Slika 2.13. Wallace-ovo stablo za šest operanda.

Strelice na izlazima cout ukazuju da ove izlaze treba pomeriti ulevo pre nego što se oni

sabiraju sa bitovima sume (detalji sa slike 2.13). Broj operanada na svakom nivou je smanjen za 2/3, tako da je

( )( )23log

2klogstabla nivoa broj ≈ . 2.2.27

Ako je broj operanada nivoa i jednak Ni, tada je broj operanada nivoa (i + 1) jednak ⎣ ⎦23∗iN . Broj operanada najnižeg nivoa (tj. nivoa 0) je 2, tako da je maksimalan broj operanada nivoa 1 jednak 3, a nivoa 2 je ⎣ ⎦ 429 = . Rezultujuća sekvenca brojeva je 2, 3, 4, 6, 9, 19, 28 itd. U sledećoj tabeli dat je tačan broj nivoa koji se odnosi do 63 operanada.

broj operanada broj nivoa3 1 4 2

5 ≤ k ≤ 6 3 7 ≤ k ≤ 9 4

10 ≤ k ≤ 13 5 14 ≤ k ≤ 19 6 20 ≤ k ≤ 28 7 29 ≤ k ≤ 42 8 43 ≤ k ≤ 63 9

Primera radi, za k = 12 potrebno je pet nivoa, rezultujuće kašnjenje je 5*TCSA, umesto 10*TCSA

koje važi za linearnu kaskadu od deset CSA-ova.

Page 17: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

17

3. PREDLOG REALIZACIJE BRZIH SABIRAČA U VHDL-u VHDL je programski jezik koji se koristi za projektovanje hardverskih komponenti i koji smo i mi koristili. Opisivanje i testiranje kola izvršeno je u programskom paketu ACTIV-HDL, dok je za sintezu i implementaciju opisa korišćen programski paket ISE firme XILINX. U daljem izlaganju biće prikazani opisi za gore pomenute sabirače, sa kratkim opisom svakog entiteta ponaosob.

RIPPLE CARRY SABIRAČ ( RCA )

Slika 3.1.

library IEEE; use IEEE.std_logic_1164.all; -- entitet 8-bitnog ripple carry sabiraca entity ripple is port ( X : in std_logic_vector (7 downto 0); Y : in std_logic_vector(7 downto 0); Cu : in std_logic; S : out std_logic_vector(7 downto 0); Ciz : out std_logic ); end entity; architecture rippleArch of ripple is signal c1Help, c2Help, c3Help, c4Help, c5Help, c6Help, c7Help : std_logic; component full_adder is port( Xi,Yi,Ci : in std_logic; Si, Ci1 : out std_logic ); end component full_adder; begin FA0: component full_adder port map (Xi => X(0), Yi => Y(0), Ci => Cu, Si => S(0), Ci1=> c1Help); FA1: component full_adder port map (Xi => X(1), Yi => Y(1), Ci => c1Help, Si => S(1), Ci1=> c2Help); FA2: component full_adder port map (Xi => X(2), Yi => Y(2),

Page 18: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

18

Ci => c2Help, Si => S(2), Ci1=> c3Help); FA3: component full_adder port map (Xi => X(3), Yi => Y(3), Ci => c3Help, Si => S(3), Ci1=> c4Help); FA4: component full_adder port map (Xi => X(4), Yi => Y(4), Ci => c4Help, Si => S(4), Ci1=> c5Help); FA5: component full_adder port map (Xi => X(5), Yi => Y(5), Ci => c5Help, Si => S(5), Ci1=> c6Help); FA6: component full_adder port map (Xi => X(6), Yi => Y(6), Ci => c6Help, Si => S(6), Ci1=> c7Help); FA7: component full_adder port map (Xi => X(7), Yi => Y(7), Ci => c7Help, Si => S(7), Ci1=> Ciz ); end architecture rippleArch;

Na slici 3.1. prikazana je šema 8-mo bitnog ripple-carry sabirača, a zatimn sledi opis kola u VHDL-u. Kako se sa slike 3.1. može uočiti, osnovna komponenta 8-mo bitnog ripple-carry sabirača je potpuni sabirač - full adder ( FA0,…,FA7 ) i njegova unutrašnja struktura prikazana je na sledećoj slici. U nastavku je takođe dat i opis potpunog sabirača u VHDL-u.

library IEEE; use IEEE.std_logic_1164.all; -- entitet full adder entity full_adder is port ( Xi,Yi,Ci : in std_logic; Si,Ci1 : out std_logic ); end entity full_adder; -- entitet invertor library IEEE; use IEEE.std_logic_1164.all; entity invertor is port (invIn : in std_logic; invOut : out std_logic ); end entity invertor;

Page 19: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

19

architecture invertorArch of invertor is begin invOut <= not invIn; end architecture invertorArch; -- entitet i kola library IEEE; use IEEE.std_logic_1164.all; entity i is port (iin1 : in std_logic; iin2 : in std_logic; iin3 : in std_logic; iout : out std_logic ); end entity i; architecture iArch of i is begin iout <= iin1 and iin2 and iin3; end architecture iArch; -- entitet i2 kola library IEEE; use IEEE.std_logic_1164.all; entity i2 is port (iin1 : in std_logic; iin2 : in std_logic; iout : out std_logic ); end entity i2; architecture i2Arch of i2 is begin iout <= iin1 and iin2; end architecture i2Arch; -- entitet ili kola library IEEE; use IEEE.std_logic_1164.all; entity ili is port (iliin1 : in std_logic; iliin2 : in std_logic; iliin3 : in std_logic; iliin4 : in std_logic; iliout : out std_logic ); end entity ili; architecture iliArch of ili is begin iliout <= iliin1 or iliin2 or iliin3 or iliin4; end architecture iliArch; -- arhitektura full Addera architecture full_adder_Arch of full_adder is signal I1In1Help, I1In2Help, I2In1Help, I2In3Help, I3In2Help, I3In3Help, iliHelp1, iliHelp2, iliHelp3, iliHelp4, ili2Help1, ili2Help2, ili2Help3: std_logic; -- I1In1Help, I1In2Help, I2In1Help, I2In3Help, I3In2Help, I3In3Help, iliHelp1 -- iliHelp2, iliHelp3, iliHelp4 su -- pomocni unutrasnji signali koji sluze ze medjusobno povezivanje komponennata -- komponenta invertor

Page 20: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

20

component invertor is port ( invIn : in std_logic; invOut : out std_logic ); end component invertor; -- komponenta i kolo component i is port (iin1 : in std_logic; iin2 : in std_logic; iin3 : in std_logic; iout : out std_logic ); end component i; component i2 is port (iin1 : in std_logic; iin2 : in std_logic; iout : out std_logic ); end component i2; -- komponenta ili kolo component ili is port (iliin1 : in std_logic; iliin2 : in std_logic; iliin3 : in std_logic; iliin4 : in std_logic; iliout : out std_logic ); end component ili; -- pocetak mapiranja portova begin invertor1: component invertor port map (invIn => Xi, invOut => I1In1Help); invertor2: component invertor port map (invIn => Yi, invOut => I1In2Help); invertor3: component invertor port map (invIn => Xi, invOut => I2In1Help); invertor4: component invertor port map (invIn => Ci, invOut => I2In3Help); invertor5: component invertor port map (invIn => Yi, invOut => I3In2Help); invertor6: component invertor port map (invIn => Ci, invOut => I3In3Help); i1: component i port map (iin1 => I1In1Help, iin2 => I1In2Help, iin3 => Ci, iout => iliHelp1); i8: component i port map (iin1 => I2In1Help, iin2 => Yi, iin3 => I2In3Help, iout => iliHelp2); i3: component i port map (iin1 => Xi, iin2 => I3In2Help, iin3 => I3In3Help, iout => iliHelp3); i4: component i port map (iin1 => Xi, iin2 => Yi, iin3 => Ci, iout => iliHelp4);

Page 21: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

21

i5: component i2 port map (iin1 => Xi, iin2 => Yi, iout => ili2Help1); i6: component i2 port map (iin1 => Xi, iin2 => Ci, iout => ili2Help2); i7: component i2 port map (iin1 => Yi, iin2 => Ci, iout => ili2Help3); ili1: component ili port map (iliin1 => iliHelp1, iliin2 => iliHelp2, iliin3 => iliHelp3, iliin4 => iliHelp4, iliout => Si); ili2: component ili port map (iliin1 => ili2Help1, iliin2 => ili2Help2, iliin3 => ili2Help3, iliin4 => '0', iliout => Ci1); end architecture full_adder_Arch;

a)

b)

Slika 3.2. full adder; a) šema logičkih kola potpunog sabirača, b) blok šema potpunog sabirača

Page 22: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

22

Na ulaze xi i yi dovode se komponente koje se sabiraju. Ulazna veličina ci je dolazeći bit prenosa. Na svom izlazu potpuni sabirač generiše sumu Si i signal prenosa ci+1.

CARRY-LOOKAHEAD SABIRAČ ( CLA )

Slka 3.3. osmobitni CLA

Na slici 3.3. prikazan je 8-mo bitni carry-lookahead sabirač. Realizovan je na taj način što su dva četvorobina carry-lookahead sabirača spojena ripple-carry metodom. Četvorobitni CLA ralizovani su korišćenjem četiri potpuna sabirača i CLA logike, kao što je prikazano na sledećoj slici.

Slika 3.4. četvorobitni CLA

Page 23: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

23

Slika 3.5. CLA logika

--- 4-BITNA CARRY LOOK-AHEAD LOGIKA--- -- dvoulazno ILI kolo library IEEE; use IEEE.std_logic_1164.all; entity DvaINili is port (iliin1 : in std_logic; iliin2 : in std_logic; iliout : out std_logic ); end entity DvaINili; architecture DvaINiliArch of DvaINili is begin iliout <= iliin1 or iliin2; end architecture DvaINiliArch; -- troulazno ILI kolo library IEEE; use IEEE.std_logic_1164.all; entity TriINili is port (iliin1 : in std_logic; iliin2 : in std_logic; iliin3 : in std_logic; iliout : out std_logic ); end entity TriINili; architecture TriINiliArch of TriINili is begin iliout <= iliin1 or iliin2 or iliin3; end architecture TriINiliArch; -- cetvoroulazno ILI kolo library IEEE;

Page 24: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

24

use IEEE.std_logic_1164.all; entity CetirINili is port (iliin1 : in std_logic; iliin2 : in std_logic; iliin3 : in std_logic; iliin4 : in std_logic; iliout : out std_logic ); end entity CetirINili; architecture CetirINiliArch of CetirINili is begin iliout <= iliin1 or iliin2 or iliin3 or iliin4; end architecture CetirINiliArch; -- dvoulazno I kolo library IEEE; use IEEE.std_logic_1164.all; entity DvaINi is port (iin1 : in std_logic; iin2 : in std_logic; iout : out std_logic ); end entity DvaINi; architecture DvaINiArch of DvaINi is begin iout <= iin1 and iin2; end architecture DvaINiArch; -- ENTITET I ARHITEKTURA CARRY LOOK-AHEAD LOGIKE library IEEE; use IEEE.std_logic_1164.all; entity claLogic is port (XL,YL : in std_logic_vector(3 downto 0); C0L : in std_logic; CizL : out std_logic_vector(4 downto 1) ); end entity claLogic; -- arhitektura architecture claLogicArch of claLogic is signal p0,g0,p1,g1,p2,g2,p3,g3,p0c0,p1g0,p1p0c0,p2g1,p2p1g0,p2p1p0c0, p3g2,p3p2g1,p3p2p1g0,p3p2p1p0c0,Helps : std_logic; component DvaINili is port (iliin1 : in std_logic; iliin2 : in std_logic; iliout : out std_logic ); end component DvaINili; component TriINili is port (iliin1 : in std_logic; iliin2 : in std_logic; iliin3 : in std_logic; iliout : out std_logic ); end component TriINili; component CetirINili is port (iliin1 : in std_logic; iliin2 : in std_logic; iliin3 : in std_logic; iliin4 : in std_logic; iliout : out std_logic

Page 25: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

25

); end component CetirINili; component DvaINi is port (iin1 : in std_logic; iin2 : in std_logic; iout : out std_logic ); end component DvaINi; begin ILI00: component DvaINili port map (iliin1 => XL(0), iliin2 => YL(0), iliout => p0); ILI01: component DvaINili port map (iliin1 => XL(1), iliin2 => YL(1), iliout => p1); ILI02: component DvaINili port map (iliin1 => XL(2), iliin2 => YL(2), iliout => p2); ILI03: component DvaINili port map (iliin1 => XL(3), iliin2 => YL(3), iliout => p3); I0: component DvaINi port map (iin1 => XL(0), iin2 => YL(0), iout => g0); I1: component DvaINi port map (iin1 => XL(1), iin2 => YL(1), iout => g1); I2: component DvaINi port map (iin1 => XL(2), iin2 => YL(2), iout => g2); I3: component DvaINi port map (iin1 => XL(3), iin2 => YL(3), iout => g3); I4: component DvaINi port map (iin1 => p0, iin2 => C0L, iout => p0c0); I5: component DvaINi port map (iin1 => p1, iin2 => p0c0, iout => p1p0c0); I6: component DvaINi port map (iin1 => p1, iin2 => g0, iout => p1g0); I7: component DvaINi port map (iin1 => p1p0c0, iin2 => p2, iout => p2p1p0c0); I8: component DvaINi port map (iin1 => p2, iin2 => p1g0, iout => p2p1g0); I9: component DvaINi

Page 26: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

26

port map (iin1 => g1, iin2 => p2, iout => p2g1); I10: component DvaINi port map (iin1 => p2p1p0c0, iin2 => p3, iout => p3p2p1p0c0); I11: component DvaINi port map (iin1 => p2p1g0, iin2 => p3, iout => p3p2p1g0); I12: component DvaINi port map (iin1 => p2g1, iin2 => p3, iout => p3p2g1); I13: component DvaINi port map (iin1 => p3, iin2 => g2, iout => p3g2); dvaILI: component DvaINili port map (iliin1 => p0c0, iliin2 => g0, iliout => CizL(1)); triILI: component TriINili port map (iliin1 => p1p0c0, iliin2 => p1g0, iliin3 => g1, iliout => CizL(2)); cetirILI: component CetirINili port map (iliin1 => p2p1p0c0, iliin2 => p2p1g0, iliin3 => p2g1, iliin4 => g2, iliout => CizL(3)); cetirILI2: component CetirINili port map (iliin1 => p3p2p1p0c0, iliin2 => p3p2p1g0, iliin3 => p3p2g1, iliin4 => p3g2, iliout => Helps); dvaILIdva: component DvaINili port map (iliin1 => Helps, iliin2 => g3, iliout => CizL(4)); end architecture claLogicArch; -- ENTITET I ARHITEKTURA 4-bitnog CARRY LOOK-AHEAD SABIRACA !!!!!!!!! -- sastoji se od CLA logike koja je prethodno opisana i 4 Full Adder-a library IEEE; use IEEE.std_logic_1164.all; -- entitet entity CLA_4bAdder is port (X4b,Y4b : in std_logic_vector(3 downto 0); C04b : in std_logic; Ciz4b : out std_logic; Siz4b : out std_logic_vector(3 downto 0) ); end entity CLA_4bAdder; --architektura architecture CLA_4bAdderArch of CLA_4bAdder is

Page 27: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

27

signal C14bHelp,C24bHelp,C34bHelp : std_logic; component full_adder is port( Xi,Yi,Ci : in std_logic; Si, Ci1 : out std_logic ); end component full_adder; component claLogic is port (XL,YL : in std_logic_vector(3 downto 0); C0L : in std_logic; CizL : out std_logic_vector(4 downto 1) ); end component claLogic; begin FA0: component full_adder port map (Ci => C04b, Xi => X4b(0), Yi => Y4b(0), Si => Siz4b(0), Ci1 => open); FA1: component full_adder port map (Ci => C14bHelp, Xi => X4b(1), Yi => Y4b(1), Si => Siz4b(1), Ci1 => open); FA2: component full_adder port map (Ci => C24bHelp, Xi => X4b(2), Yi => Y4b(2), Si => Siz4b(2), Ci1 => open); FA3: component full_adder port map (Ci => C34bHelp, Xi => X4b(3), Yi => Y4b(3), Si => Siz4b(3), Ci1 => open); LOGIC: component claLogic port map (XL(0) => X4b(0), XL(1) => X4b(1), XL(2) => X4b(2), XL(3) => X4b(3), YL(0) => Y4b(0), YL(1) => Y4b(1), YL(2) => Y4b(2), YL(3) => Y4b(3), CizL(1) => C14bHelp, CizL(2) => C24bHelp, CizL(3) => C34bHelp, CizL(4) => Ciz4b, C0L => C04b); end architecture CLA_4bAdderArch; -- CARRY LOOK-AHEAD 8-BITNI -- ovaj sabirac je sastavljen od dva cetvorobitna sabiraca prethodno opisana library IEEE; use IEEE.std_logic_1164.all; -- entitet entity CLA_Adder_8b is port (X,Y : in std_logic_vector(7 downto 0);

Page 28: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

28

Cu : in std_logic; S : out std_logic_vector(7 downto 0); Ciz : out std_logic ); end entity CLA_Adder_8b; --arhitektura architecture CLA_Adder_8b_Arch of CLA_Adder_8b is signal CinterHelp : std_logic; component CLA_4bAdder is port (X4b,Y4b : in std_logic_vector(3 downto 0); C04b : in std_logic; Ciz4b : out std_logic; Siz4b : out std_logic_vector(3 downto 0) ); end component CLA_4bAdder; begin CLA_4b_1: component CLA_4bAdder port map (X4b(0) => X(0), X4b(1) => X(1), X4b(2) => X(2), X4b(3) => X(3), Y4b(0) => Y(0), Y4b(1) => Y(1), Y4b(2) => Y(2), Y4b(3) => Y(3), Siz4b(0) => S(0), Siz4b(1) => S(1), Siz4b(2) => S(2), Siz4b(3) => S(3), C04b => Cu, Ciz4b => CinterHelp); CLA_4b_2: component CLA_4bAdder port map (X4b(0) => X(4), X4b(1) => X(5), X4b(2) => X(6), X4b(3) => X(7), Y4b(0) => Y(4), Y4b(1) => Y(5), Y4b(2) => Y(6), Y4b(3) => Y(7), Siz4b(0) => S(4), Siz4b(1) => S(5), Siz4b(2) => S(6), Siz4b(3) => S(7), C04b => CinterHelp, Ciz4b => Ciz); end architecture CLA_Adder_8b_Arch;

Potpuni sabirač opisan je kod ripple-carry sabirača, tako da ga nećemo ponovo opisivati. CLA logika služi da predvidi prenose na svim bitskim pozicijama, na osnovu bitova sabiraka koji se dovode na ulaze. Na taj način se izbegava prostiranje prenosa, tj. skraćuje se vreme dobijanja konačnog rezultata.

Page 29: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

29

CARRY SAVE SABIRAČ ( CSA )

Slika 3.6. CSA

-- CARRY SAVE LOGIKA -- Ova logika se realizuje pomocu 8 FA vezanih kaskadno library IEEE; use IEEE.std_logic_1164.all; -- entitet entity Carry_Save_Logic is port ( Xlog,Ylog,Zlog : in std_logic_vector(7 downto 0); Slog : out std_logic_vector(7 downto 0); CSlog : out std_logic_vector(8 downto 1) ); end entity Carry_Save_Logic; -- arhitektura architecture Carry_Save_Logic_Arch of Carry_Save_Logic is component full_adder is port( Xi,Yi,Ci : in std_logic; Si, Ci1 : out std_logic ); end component full_adder; begin FA0: component full_adder port map (Xi => Xlog(0), Yi => Ylog(0), Ci => Zlog(0), Si => Slog(0), Ci1 => CSlog(1)); FA1: component full_adder port map (Xi => Xlog(1), Yi => Ylog(1), Ci => Zlog(1), Si => Slog(1), Ci1 => CSlog(2)); FA2: component full_adder port map (Xi => Xlog(2), Yi => Ylog(2), Ci => Zlog(2), Si => Slog(2), Ci1 => CSlog(3)); FA3: component full_adder port map (Xi => Xlog(3), Yi => Ylog(3),

Page 30: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

30

Ci => Zlog(3), Si => Slog(3), Ci1 => CSlog(4)); FA4: component full_adder port map (Xi => Xlog(4), Yi => Ylog(4), Ci => Zlog(4), Si => Slog(4), Ci1 => CSlog(5)); FA5: component full_adder port map (Xi => Xlog(5), Yi => Ylog(5), Ci => Zlog(5), Si => Slog(5), Ci1 => CSlog(6)); FA6: component full_adder port map (Xi => Xlog(6), Yi => Ylog(6), Ci => Zlog(6), Si => Slog(6), Ci1 => CSlog(7)); FA7: component full_adder port map (Xi => Xlog(7), Yi => Ylog(7), Ci => Zlog(7), Si => Slog(7), Ci1 => CSlog(8)); end architecture Carry_Save_Logic_Arch; -- CARRY SAVE ADDER -- ovaj sabirac se realizuje povezivanjem opisane Carry Save logike i jednog osmobitnog -- Ripple Carry sabiraca library IEEE; use IEEE.std_logic_1164.all; -- entitet entity Carry_Save_Adder is port ( X,Y,Z : in std_logic_vector(7 downto 0); W : out std_logic_vector(8 downto 0); Wiz : out std_logic ); end entity Carry_Save_Adder; -- arhitektura architecture Carry_Save_Adder_Arch of Carry_Save_Adder is signal ssHelp : std_logic; signal Shelp : std_logic_vector(7 downto 0); signal CShelp : std_logic_vector(8 downto 1); component ripple is port ( X : in std_logic_vector (7 downto 0); Y : in std_logic_vector(7 downto 0); Cu : in std_logic; S : out std_logic_vector(7 downto 0); Ciz : out std_logic ); end component ripple; component Carry_Save_Logic is port ( Xlog,Ylog,Zlog : in std_logic_vector(7 downto 0); Slog : out std_logic_vector(7 downto 0); CSlog : out std_logic_vector(8 downto 1)

Page 31: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

31

); end component Carry_Save_Logic; begin LOGIC: component Carry_Save_Logic port map( Xlog(0) => X(0), Xlog(1) => X(1), Xlog(2) => X(2), Xlog(3) => X(3), Xlog(4) => X(4), Xlog(5) => X(5), Xlog(6) => X(6), Xlog(7) => X(7), Ylog(0) => Y(0), Ylog(1) => Y(1), Ylog(2) => Y(2), Ylog(3) => Y(3), Ylog(4) => Y(4), Ylog(5) => Y(5), Ylog(6) => Y(6), Ylog(7) => Y(7), Zlog(0) => Z(0), Zlog(1) => Z(1), Zlog(2) => Z(2), Zlog(3) => Z(3), Zlog(4) => Z(4), Zlog(5) => Z(5), Zlog(6) => Z(6), Zlog(7) => Z(7), Slog(0) => W(0), Slog(1) => Shelp(1), Slog(2) => Shelp(2), Slog(3) => Shelp(3), Slog(4) => Shelp(4), Slog(5) => Shelp(5), Slog(6) => Shelp(6), Slog(7) => Shelp(7), CSlog(1) => CShelp(1), CSlog(2) => CShelp(2), CSlog(3) => CShelp(3), CSlog(4) => CShelp(4), CSlog(5) => CShelp(5), CSlog(6) => CShelp(6), CSlog(7) => CShelp(7), CSlog(8) => CShelp(8)); RCA: component ripple port map (X(0) => CShelp(1), X(1) => CShelp(2), X(2) => CShelp(3), X(3) => CShelp(4), X(4) => CShelp(5), X(5) => CShelp(6), X(6) => CShelp(7), X(7) => CShelp(8), Y(0) => Shelp(1), Y(1) => Shelp(2), Y(2) => Shelp(3), Y(3) => Shelp(4), Y(4) => Shelp(5), Y(5) => Shelp(6), Y(6) => Shelp(7), Y(7) => '0', Cu => '0',

Page 32: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

32

S(0) => W(1), S(1) => W(2), S(2) => W(3), S(3) => W(4), S(4) => W(5), S(5) => W(6), S(6) => W(7), S(7) => W(8), Ciz => Wiz); end architecture Carry_Save_Adder_Arch;

Slika 3.7. CSA logika

Carry save sabirač je realizovan povezivanjem carry save logike i jednog osmobitnog ripple-carry sabirača. Na ulaze CS logike se dovode tri binarna broja X, Y i Z, a na izlazima se dobijaju signal sume i prenosa. Za konačno sumiranje se koristi osmobitnog ripple-carry sabirač. Prostiranje prenosa dozvoljeno je samo u poslednjem koraku. Kako se sa slike 3.7. može videbi CSA logika se sastoji od osam kaskadno vezanih potpunih sabirača.

Page 33: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

33

4. SINTEZA I IMPLEMENTACIJA KOLA Kao što je pomenuto u prethodnij glavi, sinteza kola je izvršena u programskom paketu ISE 6.3i. To je programski paket firme XILINX za sintezu baziran na CPDL i FPGA kolima. Za implementaciju brzih sabirača koristili smo FPGA kolo iz XILINX-ove familije SPARTAN2 sa oznakom XC2S15-CS144. Radi se o kolu koje ima 30K gejtova i ima ugrađene periferije poput PCI intefejsa, AGP 2x interfejsa itd. Dolazi u 100 pinskom VQ (very thin quad flat pack) kućištu. Upotrebljeno je iako nije bilo potrebe za tolikim brojem pinova, jer je to najmanje pakovanje u okviru pomenute serije . Kolo koristi napajanje od 2.5V. U daljem izlaganju biće predstavljeni rezultati dobijeni pomoću gore pomenutog programa za svaki od realizovanih sabirača poanaosob.

RIPPLE CARRY SABIRAČ ( RCA ) Na slici 4.1. prikazana je šema sinteze kola ripple-carry sabirača na najvišem nivou (sl. 4.1.a), koju je izgenerisao sam program, kao i prvi (sl. 4.1.b) i drugi podnivo (sl. 4.1.c). U programu je moguće analizirati svaki blok dubinski do nivoa samih gejtova ( logičkih kola ).

a)

b)

Page 34: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

34

c)

Slika 4.1. Šema sinteze kola ripple-carry sabirača a) na najvišem nivou

b) prvi podnivo c) drugi podnivo

Nakom sinteze izvršili smo smo implementaciju kola na FPGA kolo iz XILINX-ove familije SPARTAN2 sa oznakom XC2S15-CS144, i dobili sledeće rezultate: Design Information ------------------ Command Line : C:/Xilinx/bin/nt/map.exe -intstyle ise -p xc2s15-cs144-6 -cm area -pr b -k 4 -c 100 -tx off -o ripple_map.ncd ripple.ngd ripple.pcf Target Device : x2s15 Target Package : cs144 Target Speed : -6 Mapper Version : spartan2 -- $Revision: 1.16.8.2 $ Mapped Date : Wed Oct 26 22:30:49 2005 Design Summary -------------- Number of errors: 0 Number of warnings: 0 Logic Utilization: Number of 4 input LUTs: 16 out of 384 4%

Page 35: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

35

Logic Distribution: Number of occupied Slices: 12 out of 192 6% Number of Slices containing only related logic: 12 out of 12 100% Number of Slices containing unrelated logic: 0 out of 12 0% *See NOTES below for an explanation of the effects of unrelated logic Total Number of 4 input LUTs: 16 out of 384 4% Number of bonded IOBs: 26 out of 86 30% Total equivalent gate count for design: 96 Additional JTAG gate count for IOBs: 1,248 Iz dobijenih podataka vidimo da je implemetnirano kolo zauzelo 96 ekvivalentnih gejtova, i da je dodato još 1248 gejta koja su potrebni za realizaciju JTAG logike kojom vršimo testiranje i programiranje FPGA kola. Na slici 4.2.a) i 4.2.b) vidimo unutrašnju strukturu kola dobijenu nakon implementacije gde se vidi zauzetost blokova unutar kola. Slike su uzete iz Xilinx Floorplanner editora koji je zadužen u okviru paketa ISE za sam fizički razmeštaj ćelija. Na slici 4.2.a) prikazan je sam razmeštaj ćelija, odakle možemo videti i koji pinovi kola su iskorišćeni. Možemo primetiti da izvodi kola nisu grupisani. To je učinjeno kako bi smo postigli približno isto kašnjenje veza do svih pinova. Šema povezanosti samih ćelija prikazana je na slici 4.2.b).

a)

Page 36: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

36

b)

Slika 4.2.

a) razmeštaj ćelija b) šema veza ćelija.

U sledećoj tabeli prikazane su vrednosti kašnjenja između pojedinih pinova unutar kola. Za nas najveću važnost ima ukupno kašnjenje Cul - Ciz, koje u našem slučaju iznosi 21.062ns. Inače sve vrednosti u tabeli date su u nano sekundama. Data Sheet report: ----------------- All values displayed in nanoseconds (ns)

Pad to Pad Source Pad Destination Pad Delay Cu Cu Cu Cu Cu Cu Cu Cu Cu X<0> X<0> X<0>

Ciz S<0> S<1> S<2> S<3> S<4> S<5> S<6> S<7> Ciz S<0> S<1>

21.0629.066

10.78412.56713.65915.52116.85019.20419.97021.0629.066

10.784

Source Pad Destination Pad Delay X<6> X<6> X<7> X<7> Y<0> Y<0> Y<0> Y<0> Y<0> Y<0> Y<0> Y<0>

S<6> S<7> Ciz S<7> Ciz S<0> S<1> S<2> S<3> S<4> S<5> S<6>

9.51210.2789.7849.578

20.9609.120

10.68212.46513.55715.41916.74819.102

Page 37: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

37

X<0> X<0> X<0> X<0> X<0> X<0> X<1> X<1> X<1> X<1> X<1> X<1> X<1> X<1> X<2> X<2> X<2> X<2> X<2> X<2> X<2> X<3> X<3> X<3> X<3> X<3> X<3> X<4> X<4> X<4> X<4> X<4> X<5> X<5> X<5> X<5> X<6>

S<2> S<3> S<4> S<5> S<6> S<7> Ciz S<1> S<2> S<3> S<4> S<5> S<6> S<7> Ciz S<2> S<3> S<4> S<5> S<6> S<7> Ciz S<3> S<4> S<5> S<6> S<7> Ciz S<4> S<5> S<6> S<7> Ciz S<5> S<6> S<7> Ciz

12.56713.65915.52116.85019.20419.97019.6219.343

11.12612.21814.08015.40917.76318.52917.6819.174

10.27812.14013.46915.82316.58916.7469.343

11.20512.53414.88815.65414.0898.3789.877

12.23112.99713.2008.988

11.34212.10811.370

Y<0> Y<1> Y<1> Y<1> Y<1> Y<1> Y<1> Y<1> Y<1> Y<2> Y<2> Y<2> Y<2> Y<2> Y<2> Y<2> Y<3> Y<3> Y<3> Y<3> Y<3> Y<3> Y<4> Y<4> Y<4> Y<4> Y<4> Y<5> Y<5> Y<5> Y<5> Y<6> Y<6> Y<6> Y<7> Y<7>

S<7> Ciz S<1> S<2> S<3> S<4> S<5> S<6> S<7> Ciz S<2> S<3> S<4> S<5> S<6> S<7> Ciz S<3> S<4> S<5> S<6> S<7> Ciz S<4> S<5> S<6> S<7> Ciz S<5> S<6> S<7> Ciz S<6> S<7> Ciz S<7>

19.86819.6219.343

11.12612.21814.08015.40917.76318.52917.6819.615

10.27812.14013.46915.82316.58916.5779.174

11.03612.36514.71915.48514.0898.3789.877

12.23112.99713.2008.988

11.34212.10811.2019.343

10.1099.7849.578

Sledeća tabela nam pokazuje na kojem pinu FPGA kola su povezani ulazi i izlazi ripple-carry sabirača, dok je na slici 4.3. prikazan fizički raspored pinova na FPGA kolu.

Page 38: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

38

#PINLOCK_BEGIN NET "X<5>" LOC = "K1"; NET "Y<5>" LOC = "J3"; NET "Y<4>" LOC = "H4"; NET "X<4>" LOC = "H3"; NET "S<4>" LOC = "H2"; NET "S<5>" LOC = "4"; NET "Y<2>" LOC = "B4"; NET "X<3>" LOC = "A4"; NET "S<6>" LOC = "N5"; NET "S<3>" LOC = "B5"; NET "X<6>" LOC = "K6"; NET "Y<3>" LOC = "A5"; NET "Y<6>" LOC = "6"; NET "X<2>" LOC = "D6"; NET "S<7>" LOC = "M6"; NET "S<2>" LOC = "C6"; NET "X<7>" LOC = "M8"; NET "S<1>" LOC = "A8"; NET "Y<7>" LOC = "8"; NET "Y<1>" LOC = "C8"; NET "Ciz" LOC = "N9"; NET "X<1>" LOC = "D8"; NET "Y<0>" LOC = "D10"; NET "X<0>" LOC = "C13"; NET "S<0>" LOC = "C12"; NET "Cu" LOC = "C11"; #PINLOCK_END

Slika 4.3. Raspored pinova FPGA kola Na kraju smo izvršili i analizu potrošnje kola u programu XPower koji je sastavni deo XILINX paketa i dobili smo sledeće rezultate:

Power summary: I(mA) P(mW) Total estimated power consumption: 7

Vccint 2.50V: 0 0 Vcco33 3.30V: 2 7

Inputs: 0 0 Logic: 0 0

Outputs: Vcco33 0 0 Signals: 0 0

Quiescent Vcco33 3.30V: 2 7

Page 39: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

39

Thermal summary: Estimated junction temperature: 25C

Ambient temp: 25C Case temp: 25C Theta J-A: 34C/W

Decoupling Network Summary: Cap Range (uF) # Capacitor Recommendations:

Total for Vccint 8 470.0-1000.0 1 0.0470-0.2200 1 0.0100-0.0470 2 0.0010-0.0047 4

Total for Vcco33 6 470.0-1000.0 1 0.0470-0.2200 1 0.0100-0.0470 1 0.0010-0.0047 3 Ovim je završen proces sinteze i implementacije kola ripple-carry sabirača. Program generiše i fajl kojim treba isprogramirati FPGA kolo kako bi obavljalo željenu funkciju.

CARRY-LOOKAHEAD SABIRAČ ( CLA ) Kao kod ripple-carry i kod carry-lookahead sabirača izlaganje o sintezi i implementaciji započinjemo šemom sinteze kola, dobijenom programom Xilinx ECS. (slika 4.4.)

a)

Page 40: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

40

b)

c)

Slika 4.4. Šema sinteze kola carry-lookahead sabirača a) na najvišem nivou

b) prvi podnivo c) treći podnivo

Page 41: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

41

Nakon implementacije ovog kola dobili smo sledeće rezultate: Design Information ------------------ Command Line : C:/Xilinx/bin/nt/map.exe -intstyle ise -p xc2s15-cs144-6 -cm area -pr b -k 4 -c 100 -tx off -o cla_adder_8b_map.ncd cla_adder_8b.ngd cla_adder_8b.pcf Target Device : x2s15 Target Package : cs144 Target Speed : -6 Mapper Version : spartan2 -- $Revision: 1.16.8.2 $ Mapped Date : Thu Oct 27 00:29:49 2005 Design Summary -------------- Number of errors: 0 Number of warnings: 0 Logic Utilization: Number of 4 input LUTs: 17 out of 384 4% Logic Distribution: Number of occupied Slices: 12 out of 192 6% Number of Slices containing only related logic: 12 out of 12 100% Number of Slices containing unrelated logic: 0 out of 12 0% *See NOTES below for an explanation of the effects of unrelated logic Total Number of 4 input LUTs: 17 out of 384 4% Number of bonded IOBs: 26 out of 86 30% Total equivalent gate count for design: 102 Additional JTAG gate count for IOBs: 1,248 Odavde primećujemo da smo ovog puta iskoristili 102 ekvivalentna gejta, i da je opet dodato još 1248 gejta za realizaciju JTAG logike kojom vršimo testiranje i programiranje FPGA kola. Slike 4.5.a) i 4.5.b) predstavljaju unutrašnju strukturu kola dobijenu nakon implementacije. Slika 4.5.a) prikazuje razmeštaj ćelija, a na slici 4.5.b) prikazana je šema povezanosti ćelija.

Page 42: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

42

a)

b)

Slika 4.5.

a) razmeštaj ćelija b) šema veza ćelija.

Page 43: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

43

Iz sledeće tabele možemo videti vrednosti za kašnjenja između pojedinih pinova unutar kola. Za nas opet najveću važnost ima ukupno kašnjenje Cul - Ciz, koje sada iznosi 20.279ns, što je za 0.783ns manje negu o slučaju ripple-carry sabirača. Vrednosti u tabeli date su u nano sekundama. Data Sheet report: ----------------- All values displayed in nanoseconds (ns)

Pad to Pad Source Pad Destination Pad Delay Cu Ciz 20.279Cu S<0> 9.098Cu S<1> 10.190Cu S<2> 12.299Cu S<3> 12.925Cu S<4> 14.787Cu S<5> 16.116Cu S<6> 18.470Cu S<7> 19.236X<0> Ciz 20.279X<0> S<0> 9.098X<0> S<1> 10.190X<0> S<2> 12.299X<0> S<3> 12.925X<0> S<4> 14.787X<0> S<5> 16.116X<0> S<6> 18.470X<0> S<7> 19.236X<1> Ciz 19.432X<1> S<1> 9.343X<1> S<2> 11.452X<1> S<3> 12.078X<1> S<4> 13.940X<1> S<5> 15.269X<1> S<6> 17.623X<1> S<7> 18.389X<2> Ciz 17.632X<2> S<2> 9.174X<2> S<3> 10.278X<2> S<4> 12.140X<2> S<5> 13.469X<2> S<6> 15.823X<2> S<7> 16.589X<3> Ciz 16.697X<3> S<3> 9.343X<3> S<4> 11.205X<3> S<5> 12.534

Source Pad Destination Pad Delay X<6> Ciz 11.321X<6> S<6> 9.512X<6> S<7> 10.278X<7> Ciz 9.343X<7> S<7> 9.578Y<0> Ciz 20.442Y<0> S<0> 9.152Y<0> S<1> 10.353Y<0> S<2> 12.462Y<0> S<3> 13.088Y<0> S<4> 14.950Y<0> S<5> 16.279Y<0> S<6> 18.633Y<0> S<7> 19.399Y<1> Ciz 19.263Y<1> S<1> 9.174Y<1> S<2> 11.283Y<1> S<3> 11.909Y<1> S<4> 13.771Y<1> S<5> 15.100Y<1> S<6> 17.454Y<1> S<7> 18.220Y<2> Ciz 17.632Y<2> S<2> 9.615Y<2> S<3> 10.278Y<2> S<4> 12.140Y<2> S<5> 13.469Y<2> S<6> 15.823Y<2> S<7> 16.589Y<3> Ciz 16.528Y<3> S<3> 9.174Y<3> S<4> 11.036Y<3> S<5> 12.365Y<3> S<6> 14.719Y<3> S<7> 15.485Y<4> Ciz 14.040Y<4> S<4> 8.378

Page 44: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

44

X<3> S<6> 14.888X<3> S<7> 15.654X<4> Ciz 14.040X<4> S<4> 8.378X<4> S<5> 9.877X<4> S<6> 12.231X<4> S<7> 12.997X<5> Ciz 13.151X<5> S<5> 8.988X<5> S<6> 11.342X<5> S<7> 12.108

Y<4> S<5> 9.877Y<4> S<6> 12.231Y<4> S<7> 12.997Y<5> Ciz 13.151Y<5> S<5> 8.988Y<5> S<6> 11.342Y<5> S<7> 12.108Y<6> Ciz 11.152Y<6> S<6> 9.343Y<6> S<7> 10.109Y<7> Ciz 9.343Y<7> S<7> 9.578

Na slici 4.6. prikazan je fizički raspored pinova na FPGA kolu, a u tabeli pored slike pokazano je kojem pinu FPGA kola su dodeljeni ulazi i izlazi carry-lookahead sabirača. #PINLOCK_BEGIN NET "X<5>" LOC = "K1"; NET "Y<5>" LOC = "J3"; NET "Y<4>" LOC = "H4"; NET "X<4>" LOC = "H3"; NET "S<4>" LOC = "H2"; NET "S<5>" LOC = "4"; NET "Y<2>" LOC = "B4"; NET "X<3>" LOC = "A4"; NET "S<6>" LOC = "N5"; NET "S<3>" LOC = "B5"; NET "X<6>" LOC = "K6"; NET "Y<3>" LOC = "A5"; NET "Y<6>" LOC = "6"; NET "X<2>" LOC = "D6"; NET "S<7>" LOC = "M6"; NET "S<2>" LOC = "C6"; NET "X<7>" LOC = "M8"; NET "Y<7>" LOC = "8"; NET "X<1>" LOC = "C8"; NET "Ciz" LOC = "N9"; NET "S<1>" LOC = "C9"; NET "Y<1>" LOC = "D9"; NET "Y<0>" LOC = "D10"; NET "X<0>" LOC = "C13"; NET "S<0>" LOC = "C12"; NET "Cu" LOC = "C11"; #PINLOCK_END

Slika 4.6. Raspored pinova FPGA kola

Analiza potrošnje kola u programu XPower dala je sledeće rezultate:

Page 45: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

45

Power summary: I(mA) P(mW) Total estimated power consumption: 9

Vccint 2.50V: 1 3 Vcco33 3.30V: 2 7

Inputs: 0 0 Logic: 0 0

Outputs: Vcco33 0 0 Signals: 0 0

Quiescent Vccint 2.50V: 1 3 Quiescent Vcco33 3.30V: 2 7

Thermal summary: Estimated junction temperature: 25C

Ambient temp: 25C Case temp: 25C Theta J-A: 34C/W

Decoupling Network Summary: Cap Range (uF) # Capacitor Recommendations:

Total for Vccint 8 470.0-1000.0 1 0.0470-0.2200 1 0.0100-0.0470 2 0.0010-0.0047 4

Total for Vcco33 6 470.0-1000.0 1 0.0470-0.2200 1 0.0100-0.0470 1 0.0010-0.0047 3 Ovim je završen proces sinteze i implementacije kola carry-lookahead sabirača.

Page 46: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

46

CARRY SAVE SABIRAČI ( CSA ) Kako je već rečeno carry-save sabirač spada u grupu multioperandskih sabirača. Šema simteze ovog kola data je na slici 4.7.

a)

b)

c)

Slika 4.7. Šema sinteze kola carry-save sabirača a) na najvišem nivou

b) prvi podnivo c) drugi podnivo

Page 47: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

47

Nakon implementacije kola carry-save sabirača dobili smo sledeće rezultate: Design Information ------------------ Command Line : C:/Xilinx/bin/nt/map.exe -intstyle ise -p xc2s15-cs144-6 -cm area -pr b -k 4 -c 100 -tx off -o carry_save_adder_map.ncd carry_save_adder.ngd carry_save_adder.pcf Target Device : x2s15 Target Package : cs144 Target Speed : -6 Mapper Version : spartan2 -- $Revision: 1.16.8.2 $ Mapped Date : Wed Oct 26 23:48:31 2005 Design Summary -------------- Number of errors: 0 Number of warnings: 0 Logic Utilization: Number of 4 input LUTs: 30 out of 384 7% Logic Distribution: Number of occupied Slices: 19 out of 192 9% Number of Slices containing only related logic: 19 out of 19 100% Number of Slices containing unrelated logic: 0 out of 19 0% *See NOTES below for an explanation of the effects of unrelated logic Total Number of 4 input LUTs: 30 out of 384 7% Number of bonded IOBs: 34 out of 86 39% Total equivalent gate count for design: 180 Additional JTAG gate count for IOBs: 1,632 Odavde vidimo da je kolo zauzelo 180 ekvivalentna gejtova, i da je dodato još 1632 gejta za realizaciju JTAG logike za testiranje i programiranje FPGA kola. Slike 4.8.a) i 4.8.b) predstavljaju unutrašnju strukturu kola dobijenu nakon implementacije. Na slici 4.8.a) prikazan je razmeštaj ćelija, a na slici 4.8.b) prikazana je šema veza između ćelija.

Page 48: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

48

a)

b)

Slika 4.8.

a) razmeštaj ćelija b) šema veza ćelija.

Page 49: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

49

Iz sledeće tabele vidmo koliko iznose kašnjenja između pojedinih pinova unutar kola. Vrednosti u tabeli date su u nano sekundama. Data Sheet report: ----------------- All values displayed in nanoseconds (ns)

Pad to Pad Source Pad Destination Pad Delay X<0> W<0> 9.647X<0> W<1> 9.375X<0> W<2> 11.625X<0> W<3> 12.521X<0> W<4> 14.093X<0> W<5> 15.004X<0> W<6> 17.964X<0> W<7> 19.332X<0> W<8> 20.708X<0> Wiz 20.567X<1> W<1> 11.370X<1> W<2> 12.528X<1> W<3> 13.424X<1> W<4> 14.996X<1> W<5> 15.907X<1> W<6> 18.867X<1> W<7> 20.235X<1> W<8> 21.611X<1> Wiz 21.470X<2> W<2> 10.278X<2> W<3> 11.465X<2> W<4> 13.037X<2> W<5> 13.948X<2> W<6> 16.908X<2> W<7> 18.276X<2> W<8> 19.652X<2> Wiz 19.511X<3> W<3> 9.900X<3> W<4> 11.472X<3> W<5> 12.383X<3> W<6> 15.343X<3> W<7> 16.711X<3> W<8> 18.087X<3> Wiz 17.946X<4> W<4> 9.071X<4> W<5> 10.910X<4> W<6> 13.870X<4> W<7> 15.238X<4> W<8> 16.614

Source Pad Destination Pad Delay Y<2> Wiz 19.511Y<3> W<3> 9.900Y<3> W<4> 11.472Y<3> W<5> 12.383Y<3> W<6> 15.343Y<3> W<7> 16.711Y<3> W<8> 18.087Y<3> Wiz 17.946Y<4> W<4> 9.071Y<4> W<5> 10.910Y<4> W<6> 13.870Y<4> W<7> 15.238Y<4> W<8> 16.614Y<4> Wiz 16.473Y<5> W<5> 10.722Y<5> W<6> 13.682Y<5> W<7> 15.050Y<5> W<8> 16.426Y<5> Wiz 16.285Y<6> W<6> 10.991Y<6> W<7> 12.359Y<6> W<8> 13.735Y<6> Wiz 13.594Y<7> W<7> 10.933Y<7> W<8> 11.358Y<7> Wiz 11.217Z<0> W<0> 9.647Z<0> W<1> 9.375Z<0> W<2> 11.625Z<0> W<3> 12.521Z<0> W<4> 14.093Z<0> W<5> 15.004Z<0> W<6> 17.964Z<0> W<7> 19.332Z<0> W<8> 20.708Z<0> Wiz 20.567Z<1> W<1> 11.370Z<1> W<2> 12.528Z<1> W<3> 13.424

Page 50: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

50

X<4> Wiz 16.473X<5> W<5> 10.722X<5> W<6> 13.682X<5> W<7> 15.050X<5> W<8> 16.426X<5> Wiz 16.285X<6> W<6> 10.719X<6> W<7> 12.087X<6> W<8> 13.463X<6> Wiz 13.322X<7> W<7> 10.792X<7> W<8> 11.217X<7> Wiz 11.076Y<0> W<0> 9.816Y<0> W<1> 9.544Y<0> W<2> 11.588Y<0> W<3> 12.484Y<0> W<4> 14.056Y<0> W<5> 14.967Y<0> W<6> 17.927Y<0> W<7> 19.295Y<0> W<8> 20.671Y<0> Wiz 20.530Y<1> W<1> 10.929Y<1> W<2> 12.087Y<1> W<3> 12.983Y<1> W<4> 14.555Y<1> W<5> 15.466Y<1> W<6> 18.426Y<1> W<7> 19.794Y<1> W<8> 21.170Y<1> Wiz 21.029Y<2> W<2> 10.278Y<2> W<3> 11.465Y<2> W<4> 13.037Y<2> W<5> 13.948Y<2> W<6> 16.908Y<2> W<7> 18.276Y<2> W<8> 19.652

Z<1> W<4> 14.996Z<1> W<5> 15.907Z<1> W<6> 18.867Z<1> W<7> 20.235Z<1> W<8> 21.611Z<1> Wiz 21.470Z<2> W<2> 10.447Z<2> W<3> 11.634Z<2> W<4> 13.206Z<2> W<5> 14.117Z<2> W<6> 17.077Z<2> W<7> 18.445Z<2> W<8> 19.821Z<2> Wiz 19.680Z<3> W<3> 10.127Z<3> W<4> 11.699Z<3> W<5> 12.610Z<3> W<6> 15.570Z<3> W<7> 16.938Z<3> W<8> 18.314Z<3> Wiz 18.173Z<4> W<4> 9.071Z<4> W<5> 10.910Z<4> W<6> 13.870Z<4> W<7> 15.238Z<4> W<8> 16.614Z<4> Wiz 16.473Z<5> W<5> 11.126Z<5> W<6> 14.086Z<5> W<7> 15.454Z<5> W<8> 16.830Z<5> Wiz 16.689Z<6> W<6> 10.991Z<6> W<7> 12.359Z<6> W<8> 13.735Z<6> Wiz 13.594Z<7> W<7> 10.933Z<7> W<8> 11.358Z<7> Wiz 11.217

Slika 4.9. prikazuje fizički raspored pinova na FPGA kolu, a u tabeli pored slike pokazano je kojem pinu FPGA kola su dodeljeni ulazi i izlazi carry-save sabirača.

Page 51: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

51

#PINLOCK_BEGIN NET "W<4>" LOC = "H4"; NET "Z<4>" LOC = "H1"; NET "X<4>" LOC = "G4"; NET "Y<4>" LOC = "G1"; NET "W<5>" LOC = "F2"; NET "X<3>" LOC = "F3"; NET "Y<3>" LOC = "F4"; NET "Z<3>" LOC = "E1"; NET "W<2>" LOC = "N4"; NET "Z<2>" LOC = "K5"; NET "W<3>" LOC = "A4"; NET "Y<2>" LOC = "N5"; NET "W<6>" LOC = "B5"; NET "X<2>" LOC = "K6"; NET "Z<6>" LOC = "A5"; NET "Z<1>" LOC = "6"; NET "Y<5>" LOC = "D6"; NET "X<1>" LOC = "M6"; NET "X<5>" LOC = "C6"; NET "Y<1>" LOC = "N8"; NET "X<6>" LOC = "B7"; NET "Y<6>" LOC = "A8"; NET "Z<5>" LOC = "B8"; NET "X<0>" LOC = "K8"; NET "W<7>" LOC = "C8"; NET "Z<0>" LOC = "N9"; NET "Y<0>" LOC = "K9"; NET "W<1>" LOC = "N10"; NET "W<0>" LOC = "10"; NET "Wiz" LOC = "A10"; NET "X<7>" LOC = "B10"; NET "Z<7>" LOC = "C13"; NET "W<8>" LOC = "C12"; NET "Y<7>" LOC = "C11"; #PINLOCK_END

Slika 4.9. Raspored pinova FPGA kola

Analizom potrošnje kola u programu XPower dobili smo sledeće rezultate:

Power summary: I(mA) P(mW) Total estimated power consumption: 7

Vccint 2.50V: 0 0 Vcco33 3.30V: 2 7

Inputs: 0 0 Logic: 0 0

Page 52: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

52

Outputs: Vcco33 0 0 Signals: 0 0

Quiescent Vcco33 3.30V: 2 7

Thermal summary: Estimated junction temperature: 25C

Ambient temp: 25C Case temp: 25C Theta J-A: 34C/W

Decoupling Network Summary: Cap Range (uF) # Capacitor Recommendations:

Total for Vccint 8 470.0-1000.0 1 0.0470-0.2200 1 0.0100-0.0470 2 0.0010-0.0047 4

Total for Vcco33 7 470.0-1000.0 1 0.0470-0.2200 1 0.0100-0.0470 2 0.0010-0.0047 3 Ovim je završen proces sinteze i implementacije i kola carry-save sabirača. U daljem toku biće rečeno nešto o testiranju dobijenih kola.

Page 53: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

53

5. TESTIRANJE RADA KOLA U cilju verifikacije dizajna, napravljen je TestBench na Waves Based principu i izvršena je simulacija rada kola. Od tri sabirača, dva imaju identičan interfejs prema korisniku, ali bez obzira na to, mora biti izvršena simulacija sva tri sabirača kako bi se pokazao njihov pravilan rad. 5.1 TESTIRANjE RIPPLE CARRY SABIRAČA ( RCA ) Procedura za testiranje kola je sledeća:

1. Na vektor-ulaz X dovede se prvi operand 2. Na vektor-ulaz Y dovede se drugi operand 3. Na ulaz ulaznog prenosa Cu dovodi se pobuda takva da do polovine trajanja oba

operanda Cu bude na niskom nivou, a od polovine pa do kraja na visokom nivou. 4. Nakon toga dovodimo još jedan par operanda, a Cu je isto kao u prethodnom

primeru 5. Na izlazima s i Ci vidimo rezultat koji je generisao ovaj sabirač.

Slika 5.1. pokazuje rezultate simulacije u VHDL-u.

Slika 5.1. 5.2 TESTIRANjE CARRY-LOOKAHEAD SABIRAČA ( CLA ) Procedura testiranja ovog sabirača je identična proceduri opisanoj kod ripple-carry sabirača, obzirom da ova dva kola imaju identične ulazne i izlazne pinove. Slika 5.2. predstavlja rezultate simulacije ovog kola u VHDL-u.

Page 54: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

54

Slika 5.2. 5.3 TESTIRANJE CARRY SAVE SABIRAČA ( CSA Procedura za testiranje carry-save sabirača je sledeća:

1. Na vektor-ulaz X dovede se prvi operand 2. Na vektor-ulaz Y dovede se drugi operand 3. Na vektor-ulaz Z dovede se treći operand 4. Nakon toga dovodimo još jedan par operanda 5. Na izlazima W i Wiz vidimo rezultat koji je generisao ovaj sabirač.

Na slici 5.3. vidimo rezultate simulacije u VHDL-u.

Slika 5.3.

Page 55: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

55

6. LABORATORIJSKA VEŽBA

ZADATAK 1. Proveriti ispravnost rada ripple-carry sabirača koristeći proizvoljno izabrane vrednosti ulaznih veličina. Posmatrati dijagram stanja i za svaki ulazni signal odgovarajući izlazni upisati u za to predviđenu tabelu.

Pokrenuti program Active HDL čija se ikonica nalazi na Desktop-u; Otvoriti dizajn Ripple-Carry Adder ( 1 ); Kliknuti desnim tasterom miša na ripple ( 2 ), odabrati Set as Top-Level ( 3 ) iz

padajućeg menija; Kliknuti na ikonicu New Waveform ( 4 );

Slika 1

Desnim klikom miša na levu polovinu ( 5 ) praznog dela izabrati Add Signals ( 6 );

Page 56: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

56

Slika 2

Otvara se Add Signals dialog; Dodati signale X, Y i Cu;

Slika 3

Page 57: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

57

Izabrati meni Simulation ( 7 ) i izabrati stavku Initialize Simulation ( 8 ); Ponovo izabrati meni Simulation ( 7 ) i izabrati stavku End Simulation ( 9 ); Izabrati vreme simulacije ( obično 100nS ) ( 10 );

Slika 4

Izabrati stavku Fill... ( 11 ) i ubaciti vrednosti za ulazne signale ( korak treba

izvršiti za svaki ulazni signal posebno );

Page 58: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

58

Slika 5

Slika 6

Izabrati File meni, izabrati stavku Save As...; Otvara se Save As dialog; Imenovati fajl i snimiti na dugme Save;

Page 59: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

59

Desni klik na ripple ( 12 ), izabrati stavku Generate TestBench ( 13 ); Izabrati opciju WAVES Based;

Slika 7

Page 60: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

60

Slika 8

Otvoriti prethodno snimljen signal (Waveform Editor 1.awf ili kako je već snimljen )

Desni klik mišem na staku WAVES ( 14 ); Izabrati stavku Compile All in Folder ( 15 );

Page 61: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

61

Slika 9

Desni klik na ripple_TB_runtest.do ( 16 ); Izabrati stavku Execute ( 17 ); Zabeležiti dobijene rezultate.

Page 62: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

62

Slika 10

Page 63: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

63

Slika 11

Slika 11 pokazje kako bi trebalo da izgledaju konačni rezltati. Naravno grafici se razlikuju u zavisnosti od zadatih ulaznih veličina.

Page 64: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

64

Grupa 1: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 2: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 3: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 4: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 5: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 6: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Page 65: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

65

Grupa 7: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 8: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 9: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 10: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 11: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 12: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Page 66: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

66

Grupa 13: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 14: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 15: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 16: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Page 67: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

67

ZADATAK 2. Proveriti ispravnost rada carry-lookahead sabirača koristeći proizvoljno izabrane vrednosti ulaznih veličina. Posmatrati dijagram stanja i za svaki ulazni signal odgovarajući izlazni upisati u za to predviđenu tabelu.

Pokrenuti program Active HDL čija se ikonica nalazi na Desktop-u; Otvoriti dizajn Carry-Lookahead Adder ( 1 ); Kliknuti desnim tasterom miša na cla_adder_8b ( 2 ), odabrati Set as Top-Level ( 3

) iz padajućeg menija; Kliknuti na ikonicu New Waveform ( 4 );

Slika 1

Desnim klikom miša na levu polovinu ( 5 ) praznog dela izabrati Add Signals ( 6 );

Page 68: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

68

Slika 2

Otvara se Add Signals dialog; Dodati signale X, Y i Cu;

Slika 3

Page 69: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

69

Izabrati meni Simulation ( 7 ) i izabrati stavku Initialize Simulation ( 8 ); Ponovo izabrati meni Simulation ( 7 ) i izabrati stavku End Simulation ( 9 ); Izabrati vreme simulacije ( obično 100nS ) ( 10 );

Slika 4

Izabrati stavku Fill... ( 11 ) i ubaciti vrednosti za ulazne signale ( korak treba

izvršiti za svaki ulazni signal posebno );

Page 70: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

70

Slika 5

Slika 6

Izabrati File meni, izabrati stavku Save As...; Otvara se Save As dialog; Imenovati fajl i snimiti na dugme Save;

Page 71: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

71

Desni klik na cla_adder_8b ( 12 ), izabrati stavku Generate TestBench ( 13 ); Izabrati opciju WAVES Based;

Slika 7

Page 72: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

72

Slika 8

Otvoriti prethodno snimljen signal (Waveform Editor 1.awf ili kako je već snimljen )

Desni klik mišem na staku WAVES ( 14 ); Izabrati stavku Compile All in Folder ( 15 );

Page 73: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

73

Slika 9

Desni klik na cla_adder_8b _TB_runtest.do ( 16 ); Izabrati stavku Execute ( 17 ); Zabeležiti dobijene rezultate.

Page 74: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

74

Slika 10

Page 75: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

75

Slika 11

Slika 11 pokazje kako bi trebalo da izgledaju konačni rezltati. Naravno grafici se razlikuju u zavisnosti od zadatih ulaznih veličina.

Page 76: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

76

Grupa 1: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 2: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 3: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 4: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 5: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 6: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Page 77: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

77

Grupa 7: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 8: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 9: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 10: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 11: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 12: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Page 78: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

78

Grupa 13: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 14: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 15: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Grupa 16: ULAZNI SIGNALI

heksadekadni binarni

X Y Cu

IZLAZNI SIGNALI heksadekadni binarni S Ci

Page 79: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

79

ZADATAK 3. Proveriti ispravnost rada carry-save sabirača koristeći proizvoljno izabrane vrednosti ulaznih veličina. Posmatrati dijagram stanja i za svaki ulazni signal odgovarajući izlazni upisati u za to predviđenu tabelu.

Pokrenuti program Active HDL čija se ikonica nalazi na Desktop-u; Otvoriti dizajn Carry Save Adder ( 1 ); Kliknuti desnim tasterom miša na carry_save_adder ( 2 ), odabrati Set as Top-

Level ( 3 ) iz padajućeg menija; Kliknuti na ikonicu New Waveform ( 4 );

Slika 1

Desnim klikom miša na levu polovinu ( 5 ) praznog dela izabrati Add Signals ( 6 );

Page 80: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

80

Slika 2

Otvara se Add Signals dialog; Dodati signale X, Y i Z;

Slika 3

Page 81: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

81

Izabrati meni Simulation ( 7 ) i izabrati stavku Initialize Simulation ( 8 ); Ponovo izabrati meni Simulation ( 7 ) i izabrati stavku End Simulation ( 9 ); Izabrati vreme simulacije ( obično 100nS ) ( 10 );

Slika 4

Izabrati stavku Fill... ( 11 ) i ubaciti vrednosti za ulazne signale ( korak treba

izvršiti za svaki ulazni signal posebno );

Page 82: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

82

Slika 5

Slika 6

Izabrati File meni, izabrati stavku Save As...; Otvara se Save As dialog; Imenovati fajl i snimiti na dugme Save;

Page 83: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

83

Desni klik na carry_save_adder ( 12 ), izabrati stavku Generate TestBench ( 13 ); Izabrati opciju WAVES Based;

Slika 7

Page 84: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

84

Slika 8

Otvoriti prethodno snimljen signal (Waveform Editor 1.awf ili kako je već snimljen )

Desni klik mišem na staku WAVES ( 14 ); Izabrati stavku Compile All in Folder ( 15 );

Page 85: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

85

Slika 9

Desni klik na carry_save_adder _TB_runtest.do ( 16 ); Izabrati stavku Execute ( 17 ); Zabeležiti dobijene rezultate.

Page 86: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

86

Slika 10

Page 87: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

87

Slika 11 Slika 11 pokazje kako bi trebalo da izgledaju konačni rezltati. Naravno grafici se razlikuju u zavisnosti od zadatih ulaznih veličina.

Page 88: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

88

Grupa 1: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Grupa 2: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Grupa 3: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Grupa 4: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Grupa 5: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Grupa 6: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Page 89: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

89

Grupa 7: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Grupa 8: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Grupa 9: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Grupa 10: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Grupa 11: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Grupa 12: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Page 90: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

90

Grupa 13: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Grupa 14: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Grupa 15: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Grupa 16: ULAZNI SIGNALI

heksadekadni binarni

X Y Z

IZLAZNI SIGNALI heksadekadni binarni W Wiz

Page 91: BRZI SABIRAČIes.elfak.ni.ac.rs/Papers/Brzi sabiraci.pdfPošto je ovo kombinatorno kolo, primećujemo da će sabirač na poziciji i, na početku operacije videti prenos c i=0, i prema

91

7. LITERATURA

1) Mi Lu; Aritmetic and Logic in Computer Systems, John Wiley & Sons Inc. , 2004

2) Oklobdžija D. Vojin; The Computer Engineering Handbook, CRC Press, 2002

3) Dr Dejan B. Živković, Dr Miodrag V. Popović; Impulsna i digitalna elektronika, Elektotehnički fakultet, Nauka, 1997