bit-serijski mnozac za neoznacene brojevees.elfak.ni.ac.rs/papers/bit-serijski mnozac za... ·...
TRANSCRIPT
UNIVERZITET U NI[U ELEKTRONSKI FAKLUTET Predmet: Mikroprocesorski sistemi
BIT-SERIJSKI MNO@A^ ZA NEOZNA^ENE BROJEVE
student: Aleksandar Blagojevi} br.indeksa: 9857
1
SADR@AJ: 1. UVOD U BIT-SERIJSKE MNO@A^E ................................................................. 2 2. SISTEMATIZACIJA BIT-SERIJSKIH MNO@A^A .............................................. 2 2.1. Serijski-Serijski-Paralelni (SSP) mno`a~i ............................................ 3 2.2. Milerov mno`a~ .................................................................................... 3 2.3. Tok ulaznih podataka kroz Milerov mno`a~ ......................................... 4 3. REALIZACIJA BIT-SERIJSKOG MNO@A^A U VHDL-u ................................... 6 3.1. Struktura kola mno`a~a sa registrima za upis ..................................... 6 3.2. Struktura bit-serijskog SSP mno`a~..................................................... 8 3.3. Struktura }elije bit-serijskog SSP mno`a~a ......................................... 9 3.4. Struktura potpunog sabira~a ................................................................ 1
2 3.5. Struktura pomera~kih registara ............................................................ 1
5 3.6. Struktura multipleksera ........................................................................ 1
6 3.7. Struktura D flip-flopa ............................................................................ 1
8 3.8. VHDL kodovi za osnovne gradivne blokove ........................................ 1
9 4. SINTEZA I IMPLEMENTACIJA KOLA ............................................................... 2
0 5. TESTIRANJE RADA KOLA ............................................................................... 2
4 5.1. Testiranje rada potpunog sabira~a ...................................................... 2
4 5.2. Testiranje rada multipleksera ............................................................... 2
4 5.3. Testiranje rada pomera~kog registra ................................................... 2
5 5.4. Testiranje rada }elije Milerovog mno`a~a ............................................ 2
5 5.5. Testiranje rada mno`a~a ..................................................................... 2
6 6. ZADATAK .......................................................................................................... 2
7 6.1. Rezultati ............................................................................................... 3
2
2
1. UVOD U BIT-SERIJSKE MNO@A^E Primena proto~ne obrade je uspe{na koncepcija za pove}anje efikasnosti digitalnih sistema pa se dosta napora ulagalo i ula`e od strane projektanata da se ona uvede i iskoristi u {to ve}em broju primena. Uvodjenje proto~ne obrade je pokazalo veoma zna~ajne rezultate u arhitekturama namenjenim realizaciji na ~ipu. Tako sistoli~ka polja, koja su u potpunosti bazirana na principu proto~ne obrade, pokazuju izuzetno visok stepen efikasnosti upravo zbog mogu}nosti njihove realizacije na ~ipu. Jedna od osnovnih komponenti digitalnih sistema je podsistem za mno`enje binarnih brojeva. Efikasnost mno`a~a veoma ~esto uslovljava i efikasnost ~itavog sistema. Zbog svega ovoga vr{ena su mnoga istra`ivanja u pravcu projektovanja proto~nih mno`a~a, {to je rezultovalo u ~itavom nizu razli~itih proto~nih arhitektura za mno`enje binarnih brojeva. 2. SISTEMATIZACIJA BIT-SERIJSKIH MNO@A^A I pored toga {to postoji ~itav niz bit-serijskih proto~nih arhitektura, mo`e se uo~iti samo pet karakteristika po kojima se one medjusobno razlikuju. Karakteristike bit-serijskih arhitektura su:
1. format prenosa ulazno-izlaznih podataka; 2. postojanje globalne linije za podatke; 3. medjusobni odnos smerova prostiranja podataka; 4. slo`enost osnovne }elije; 5. prostranje generisanih prenosa.
Na osnovu iskustava, klasifikacija bit-serijskih mno`a~a prema formatu ulazno-izlaznih podataka pru`a najbolji uvid u pomenute arhitekture. Naime, jedino prema formatu prenosa ulazno-izlaznih podataka proto~ne bit-serijske arhitekture se mogu jednozna~no klasifikovati. Proto~ne mno`a~e mo`emo prema formatu prenosa ulazno-izlaznih podataka podeliti na bit-paralelne, cifarsko-serijske i bit-serijske. Slika 1: Klasifikacija proto~nih mno`a~a
3
Oznake pojedinih klasa mno`a~a na slici 1 su uvedene prema formatima prenosa podataka koji u~estvuju u procesu mno`enja. Tako prvo slovo u oznaci ozna~ava format prenosa jednog operanda (Serijski ili Paralelni), drugo slovo format prenosa drugog operanda i tre}e slovo format prenosa rezultata. Ovde }e biti posve}ena pa`nja bit serijskim mno`a~ima sa bit-paralelnim rezultatom, tj. SSP (Serial-Serial-Paralell) mno`a~ima, i bi}e predstavljena konkretna realizacija SSP mno`a~a. 2.1. Serijski-Serijski-Paralelni (SSP) mno`a~i Va`na elementarna operacija, koja se obavlja kod matri~nih izra~unavanja je mno`enje sa akumulacijom. Ona se mo`e opisati izrazom: ci = ci-1 + ai * bi , i=1,2,3,... Mno`a~i tipa SPS i SSS ne poseduju mogu}nost direktnog izvr{enja ove operacije. To je posledica kretanja rezultata kroz polje, odnosno ~injenice da je po zavr{etku jedne operacije mno`enja deo rezultata ve} u serijskom obliku iza{ao iz polja. Da bi se realizovalo mno`enje sa akumulacijom na bazi ovakvih mno`a~a potrebno je formirati slo`enije strukture u kojima u~estvuje vi{e mno`a~a. Kod SSP mno`a~a oba operanda se serijski unose u polje a rezultat se generi{e u paralelnom obliku. Drugim re~ima, oba operanda se kre}u kroz polje u serijskom obliku a rezultat je stati~an u toku izra~unavanja. Tek posle kompletiranja izra~unavanja rezultat se mo`e generisati na izlazima polja i to ili u paralelnom obliku ili se mo`e pomo}u pomera~kog registra konvertovati u serijski oblik. Koncept stati~kog rezultata, usvojen kod SSP mno`a~a, omogu}ava direktnu implementaciju operacije mno`enja sa akumulacijom. Ako se vi{e parova operanada unesu u polje, bez izbacivanja rezultata u medjuvremenu, rezultati pojedinih mno`enja se sabiraju u samom polju i na taj na~in bez ikakvog dodatnog hardvera se formira kona~ni akumulirani rezultat. Ova osobina SSP mno`a~a je iskori{}ena za formiranje polja za mno`enje matrica zasnovanog na bit-serijskom pristupu. 2.2. Milerov mno`a~ Mno`enje dva N-bitna neozna~ena operanda
∑−
=
=1
02*
N
i
iiaa i ∑
−
=
=1
0
2*N
i
iibb
mogu}e je obaviti u dva koraka. U prvom koraku se polinomi
( ) ∑−
=
=1
0*
N
i
ii xaxa i ( ) ∑
−
=
=1
0*
N
i
ii xbxb
mno`e i formira se rezultuju}i polinom stepena 2N-2:
4
( ) ∑−
=
=22
0*''
N
k
kk xpxp , gde je ∑
=−=
k
iikik bap
0
*' za 0≤k ≤2N-2
pri ~emu je ai=bi=0 za i≥N. U drugom koraku se formiraju 2N bitova p0,...,p2N-1 prizvoda a*b na osnovu polinoma p'(x). To se posti`e sabiranjem, na odgovaraju}i na~in pomerenih, koeficijenata p'k. Na slici 2 je dat serijski mno`a~ koji predstavlja linerano polje dve proste }elije. Ovaj mno`a~ se zasniva na ~injenici da se faktori p'k mogu izra~unavati istovremeno i da se aktivnosti iz prvog i iz drugog koraka mogu preklapati. Svaka }elija u polju sa slede}e slike izra~unava po jedan bit proizvoda p, pri ~emu prva }elija sleva u polju izra~unava bit najve}e te`ine a prva }elija sdesna u polju izra~unava bit najmanje te`ine. Svaka }elija se sastoji od jednog potpunog sabira~a, jednog "I" kola i ~etiri flip-flopa. Operandi "a" i "b" se unose u polje serijski i prostiru kroz polje u suprotnim smerovima. Operand "b" se unosi sa leve strane polja po~ev od bita najmanje te`ine a operand "a" se unosi sa desne strane polja po~ev od bita najve}e te`ine. U okviru svake }elije se nad prido{lim bitovima vr{i logi~ka "I" operacija i rezultat se sabira sa medjurezultatom koji odgovara bitu pi proizvoda. Prenos koji se generi{e u toku sabiranja prosledjuje se u prvu susednu }eliju sleve strane koja ovaj prenos uklju~uje u operaciju sabiranja u slede}em taktu. Da bi se obezbedilo kombinovanje bitova ai i bi na odgovaraju}i na~in, vr{i se ubacivanje nula iza svakog bita u oba operanda. Na ovaj na~in je omogu}eno da, ako se u krajnju levu i krajnju desnu }eliju ubacuju bitovi operanada na odgovaraju}i na~in, suma parcijalnih proizvoda koja se generi{e u i-toj }eliji odgovara bitu pi rezultata.
Slika 2: Milerov mno`a~
2.3. Tok ulaznih podataka kroz Milerov mno`a~ Osim gradivnih elemenata koje sadr`i svaka }elija ovog mno`a~a, potrebno je dodati i hardver za ubacivanje bitova operanada, za izbacivanje bitova rezultata i za resetovanje posle svakog ciklusa mno`enja. Ovi zahtevi se mogu zadovoljiti dodavanjem jo{ po dva flip-flopa u svaku }eliju.
5
U Tabeli 1 je prikazan tok podataka kroz Milerov mno`a~ sastavljen od 16 }elija u slu~aju mno`enja dva 8-bitna neozna~ena broja. VREME / ]ELIJA 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 -> ]ELIJE
b70b60b50b40b30b20b10b0 0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0a70a60a50a40a30a20a10a0
b70b60b50b40b30b20b10 b0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
a70a60a50a40a30a20a10a0
b70b60b50b40b30b20b1 0 0
b0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 a7
0a60a50a40a30a20a10a0
b70b60b50b40b30b20 b1 0
0 0
b0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 a7
0 0
a60a50a40a30a20a10a0
b70b60b50b40b30b2 0 0
b1 0
0 0
b0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 a7
0 0
0 a6
0a50a40a30a20a10a0
b70b60b50b40b30 b2 0
0 0
b1 0
0 0
b0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 a7
0 0
0 a6
0 0
a50a40a30a20a10a0
b70b60b50b40b3 0 0
b2 0
0 0
b1 0
0 0
b0 0
0 0
0 0
0 0
0 0
0 0
0 a7
0 0
0 a6
0 0
0 a5
0a40a30a20a10a0
b70b60b50b40 b3 0
0 0
b2 0
0 0
b1 0
0 0
b0
0 0 0
0 0
0 0
0 a7
0 0
0 a6
0 0
0 a5
0 0
a40a30a20a10a0
b70b60b50b4 0 0
b3 0
0 0
b2 0
0 0
b1 0
0 0
b0
0 0 0
0 a7
0 0
0 a6
0 0
0 a5
0 0
0 a4
0a30a20a10a0
b70b60b50 b4 0
0 0
b3 0
0 0
b2 0
0 0
b1
0 0 0
b0
a7
0 0
0 a6
0 0
0 a5
0 0
0 a4
0 0
a30a20a10a0
b70b60b5 0 0
b4 0
0 0
b3 0
0 0
b2 0
0 0
b1
a7
0 0
b0
a6
0 0
0 a5
0 0
0 a4
0 0
0 a3
0a20a10a0
b70b60 b5 0
0 0
b4 0
0 0
b3 0
0 0
b2
a7
0 0
b1
a6
0 0
b0
a5
0 0
0 a4
0 0
0 a3
0 0
a20a10a0
b70b6 0 0
b5 0
0 0
b4 0
0 0
b3 a7
0 0
b2
a6
0 0
b1
a5
0 0
b0
a4
0 0
0 a3
0 0
0 a2
0a10a0
b70 b6 0
0 0
b5 0
0 0
b4 a7
0 0
b3
a6
0 0
b2
a5
0 0
b1
a4
0 0
b0
a3
0 0
0 a2
0 0
a10a0
b7 0 0
b6 0
0 0
b5 a7
0 0
b4 a6
0 0
b3
a5
0 0
b2
a4
0 0
b1
a3
0 0
b0
a2
0 0
0 a1
0a0
b7 0
0 0
b6 a7
0 0
b5 a6
0 0
b4
a5
0 0
b3
a4
0 0
b2
a3
0 0
b1
a2
0 0
b0 a1
0 0
a0
0 0
b7 a7
0 0
b6 a6
0 0
b5 a5
0 0
b4
a4
0 0
b3
a3
0 0
b2
a2
0 0
b1
a1
0 0
b0 a0
0 a7
0 0
b7 a6
0 0
b6 a5
0 0
b5
a4
0 0
b4
a3
0 0
b3
a2
0 0
b2
a1
0 0
b1 a0
0 0
0 0
0 a6
0 0
b7 a5
0 0
b6 a4
0 0
b5
a3
0 0
b4
a2
0 0
b3
a1
0 0
b2
a0
0 0
b1 0
0 a6
0 0
0 a5
0 0
b7 a4
0 0
b6
a3
0 0
b5
a2
0 0
b4
a1
0 0
b3
a0
0 0
b2 0
0 0
0 0
0 a5
0 0
0 a4
0 0
b7 a3
0 0
b6
a2
0 0
b5
a1
0 0
b4
a0
0 0
b3
0 0 0
b2 0
0 a5
0 0
0 a4
0 0
0 a3
0 0
b7
a2
0 0
b6
a1
0 0
b5
a0
0 0
b4
0 0 0
b3 0
0 0
0 0
0 a4
0 0
0 a3
0 0
0 a2
0 0
b7
a1
0 0
b6
a0
0 0
b5
0 0 0
b4
0 0 0
b3 0
0 a4
0 0
0 a3
0 0
0 a2
0 0
0 a1
0 0
b7
a0
0 0
b6
0 0 0
b5
0 0 0
b4 0
0 0
0 0
0 a3
0 0
0 a2
0 0
0 a1
0 0
0 a0
0 0
b7
0 0 0
b6
0 0 0
b5
0 0 0
b4 0
0 a3
0 0
0 a2
0 0
0 a1
0 0
0 a0
0 0
0 0
0 0
b7
0 0 0
b6
0 0 0
b5 0
0 0
0 0
0 a2
0 0
0 a1
0 0
0 a0
0 0
0 0
0 0
0 0
0 0
b7
0 0 0
b6
0 0 0
b5 0
0 a2
0 0
0 a1
0 0
0 a0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
b7
0 0 0
b6
0
0 0
0 0
0 a1
0 0
0 a0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
b7
0 0 0
b6 0
0 a1
0 0
0 a0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
b7 0
0 0
0 0
0 a0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
b7 0
0 a0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
Tabela 1: Tok ulaznih podataka kroz Milerov mno`a~ i na~in generisanja parcijalnih proizvoda
6
3. REALIZACIJA BIT-SERIJSKOG MNO@A^A U VHDL-u Kolo koje je zadato projektnim zadatkom je opisano u programskom jeziku Active-HDL 5.1 kompanije "ALDEC", koji danas predstavlja jedan od standardnih softverskih alata za projektovanje hardvera. Nakon toga je izvr{ena sinteza i implementacija opisa u programskom paketu ISE kompanije "XILINX". Za sam razvoj i testiranje koda kori{}en je programski paket Active-HDL 5.1. U samom projektu, osim osnovnih gradivnih elemetana, razlikujemo slede}e sklopove :
• mulitiplekser -"mux.bde" • potpuni sabira~ - "potpun_sabirac.bde" • pomera~ki registar za operand "A" - "SHIFTreg.bde" • pomera~ki registar za operand "B" - "SHIFTreg_B.bde" • }elija Milerovog mno`a~a - "celija.bde" • bit-serijski SSP mno`a~ - "bit_serijski.bde" • finalno kolo mno`a~a sa registrima za upis - "KOLO.bde"
3.1. Struktura kola mno`a~a sa registrima za upis Na slici 3 je data šema bit-serijskog mno`a~a kojem su pridru`eni registri za unos podataka, a na slici 4 je dat odgovaraju}i VHDL kôd. Funkcija pojedinih ulaznih i izlaznih pinova je slede}a:
• A(7:0) -paralelni ulaz za bitove operanda "A" • B(7:0) -paralelni ulaz za bitove operanda "B" • REZ(15:0) -paralelni izlaz za bitove rezultata mno`enja • R -ulaz "RESET" funkcije • clk -signal taktne pobude • nula -ulaz logi~ke nule
Na dijagramu se nalaze tri entiteta: "bit_serijski", "SHIFTreg" i "SHIFTreg_B". Entitet "bit_serijski" predstavlja kolo bit-serijskog SSP mno`a~a, "SHIFTreg" predstavlja pomera~ki registar za upis operanda "A" i "SHIFTreg_B" predstavlja pomera~ki registar za upis operanda "B". Pomera~ki registri su kori{}eni da bi se obezbedilo uno{enje operanada nad kojima je potrebno izvr{iti mno`enje. Struktura Milerovog mno`a~a zahteva serijski unos operanada sa ubacivanjem nula izmedju svakog bita izvornog operanda, kao {to je prikazano u Tabeli 1.
U strukturu sa slike 3 se unose 8-bitni operandi. Rezultat je du`ine 16 bitova. Unos operanada i generisanje rezultata se obavlja paralelno.
7
B(7:0) serijski_izlaz
clocknula
par_ser_in
U1
shiftreg_b
A(7:0)serijski_izlaz
clocknula
par_ser_in
U2
shiftreg
A
pom(15:0)
B
Rclknula
U3
bit_serijski
B(7:0) A(7:0)
R
nulaclk
REZ(15:0)
Slika 3: [ema bit-serijskog mno`a~a sa registrima za upis library IEEE; use IEEE.std_logic_1164.all; entity KOLO is port( R : in STD_LOGIC; clk : in STD_LOGIC; nula : in STD_LOGIC := '0'; A : in STD_LOGIC_VECTOR(7 downto 0); B : in STD_LOGIC_VECTOR(7 downto 0); REZ : out STD_LOGIC_VECTOR(15 downto 0) ); end KOLO; architecture KOLO of KOLO is ---- Component declarations ----- component bit_serijski port ( A : in STD_LOGIC; B : in STD_LOGIC; R : in STD_LOGIC; clk : in STD_LOGIC; nula : in STD_LOGIC; pom : out STD_LOGIC_VECTOR(15 downto 0) ); end component; component shiftreg port ( A : in STD_LOGIC_VECTOR(7 downto 0); clock : in STD_LOGIC; nula : in STD_LOGIC; par_ser_in : in STD_LOGIC; serijski_izlaz : out STD_LOGIC ); end component; component shiftreg_b port ( B : in STD_LOGIC_VECTOR(7 downto 0); clock : in STD_LOGIC; nula : in STD_LOGIC; par_ser_in : in STD_LOGIC; serijski_izlaz : out STD_LOGIC ); end component; ---- Signal declarations used on the diagram ---- signal NET58 : STD_LOGIC; signal NET62 : STD_LOGIC;
8
begin ---- Component instantiations ---- U1 : shiftreg_b port map( B => B, clock => clk, nula => nula, par_ser_in => R, serijski_izlaz => NET58 ); U2 : shiftreg port map( A => A, clock => clk, nula => nula, par_ser_in => R, serijski_izlaz => NET62 ); U3 : bit_serijski port map( A => NET62, B => NET58, R => R, clk => clk, nula => nula, pom => REZ ); end KOLO; Slika 4: VHDL kôd bit-serijskog mno`a~a sa registrima za upis
3.2. Struktura bit-serijskog SSP mno`a~a Na slici 5 je prikazana struktura bit-serijskog SSP mno`a~a. Zbog velikog broja medju veza kao i velikog obima kola koga karakteriše visoko regularna struktura, VHDL kôd nije dat iz razloga što bi se odredjene sekvence više puta ponavljale. Strukturu mno`a~a ~ini 16 bafera i 16 }elija Milerovog mno`a~a. Deo slike je zbog preglednosti i istovetnog rada }elija izostavljen i zamenjen isprekidanim linijama, a raspored i medjusobna veza elementa su identi~ni u celom kolu. Funkcija ulazno-izlaznih pinova je slede}a:
• A -serijski ulaz za bitove prvog operanda • B -serijski ulaz za bitove drugog operanda • R -ulaz "RESET" funkcije (dovodi se jednobitna informacija) • clk -signal taktne pobude • nula -ulaz logi~ke nule • pom -paralelni izlaz za bitove rezultata mno`enja
9
Slika 5: Struktura bit-serijskog mno`a~a
3.3. Struktura }elije bit-serijskog SSP mno`a~a Na slici 6 je predstavljena struktura }elije bit-serijskog SSP mno`a~a, a na slici 7 je dat odgovaraju}i VHDL kôd. Funkcija ulazno-izlaznih pinova je slede}a:
• ain -ulaz za bitove operanda "a" • aout -izlaz za bitove operanda "a" iz prethodnog takta • bin -ulaz za bitove operanda "b" • bout -izlaz za bitove operanda "b" iz prethodnog takta • cin -ulaz za bitove prenosa iz prethodne }elije • cout -izlaz za bitove prenosa iz prethodnog takta • izlaz -izlaz za bitove rezultata (izlaz = izlaz + (ain x bin) + cin) • clk -signal taktne pobude • R -ulaz za "RESET" funkciju
R aout ain bout bin cout cin izlaz clk
U1
celija R aout ain bout bin
cout cin izlaz clk
U2
celija R
aout ainboutbin
cout cinizlazclk
U3
celija
in1 out1
U17 buf in1 out1
U18 buf in1 out1
U19buf
pom(15:0)
pom(15) pom(14) pom(13)
clk R
B R
aout ainboutbin
cout cinizlazclk
U14
celija
R aout ain bout bin cout cin izlaz clk
U15
celija R aout ain
boutbin cout cinizlaz clk
U16
celija
in1out1
U30buf in1out1
U31 buf in1 out1
U32 buf
pom(0) pom(1) pom(2)
Anula
pom(15:0)
10
Slika 6: Struktura }elije bit-serijskog SSP mno`a~a library IEEE; use IEEE.std_logic_1164.all; entity celija is port( R : in STD_LOGIC; ain : in STD_LOGIC; bin : in STD_LOGIC; cin : in STD_LOGIC; clk : in STD_LOGIC; aout : out STD_LOGIC; bout : out STD_LOGIC; cout : out STD_LOGIC; izlaz : out STD_LOGIC ); end celija; architecture celija of celija is ---- Component declarations ----- component buf port ( in1 : in STD_LOGIC; out1 : out STD_LOGIC ); end component; component flip_flop port ( D : in STD_LOGIC; R : in STD_LOGIC; clk : in STD_LOGIC; Q : out STD_LOGIC ); end component; component i_kolo port ( in1 : in STD_LOGIC; in2 : in STD_LOGIC; out1 : out STD_LOGIC ); end component; component potpun_sabirac port ( c : in STD_LOGIC; x : in STD_LOGIC; y : in STD_LOGIC;
D Q
Rclk
U1
flip_flop
in1out1
in2
U2
i_kolo
cc0
xz
y
U3
potpun_sabirac
DQ
Rclk
U4
flip_flop
D Q
Rclk
U5
flip_flopDQ
Rclk
U6
flip_flop
Rclk
bin
cin
ainaout
cout
bout
in1out1
U7
buf
in1 out1
U8
buf
izlaz in1out1
U9
buf
11
c0 : out STD_LOGIC; z : out STD_LOGIC ); end component; ---- Signal declarations used on the diagram ---- signal NET135 : STD_LOGIC; signal NET152 : STD_LOGIC; signal NET158 : STD_LOGIC; signal NET503 : STD_LOGIC; signal NET79 : STD_LOGIC; signal NET95 : STD_LOGIC; begin ---- Component instantiations ---- U1 : flip_flop port map( D => bin, Q => NET503, R => R, clk => clk ); U2 : i_kolo port map( in1 => NET158, in2 => NET503, out1 => NET79 ); U3 : potpun_sabirac port map( c => NET135, c0 => cout, x => NET95, y => NET79, z => NET152 ); U4 : flip_flop port map( D => cin, Q => NET95, R => R, clk => clk ); U5 : flip_flop port map( D => NET152, Q => NET135, R => R, clk => clk ); U6 : flip_flop port map( D => ain, Q => NET158, R => R, clk => clk ); U7 : buf port map( in1 => NET158, out1 => aout ); U8 : buf port map( in1 => NET503, out1 => bout );
12
U9 : buf port map( in1 => NET152, out1 => izlaz ); end celija;
Slika 7: VHDL kôd }elije bit-serijskog SSP mno`a~a 3.4. Struktura potpunog sabira~a Na slici 8 je predstavljena struktura potpunog sabira~a, a na slici 9 je dat odgovaraju}i VHDL kôd. Funkcija ulazno-izlaznih pinova je slede}a:
• x -ulaz za bitove prvog operanda • y -ulaz za bitove drugog operanda • z -izlaz za bitove rezultata • c -ulaz za bitove prenosa iz prethodnog blokka • c0 -izlaz za bitove prenosa iz posmatranog bloka
Realizovani potpuni sabira~ je projektovan u odnosu na Tabelu 2, koja predstavlja tablicu istinitosti po kojoj treba da funkcioni{e zahtevani potpuni sabira~.
x y c c0 z0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1
Tabela 2: Tablica istinitosti potpunog sabira~a
13
Slika 8: Struktura potpunog sabira~a library IEEE; use IEEE.std_logic_1164.all; entity potpun_sabirac is port( c : in STD_LOGIC; x : in STD_LOGIC; y : in STD_LOGIC; c0 : out STD_LOGIC; z : out STD_LOGIC ); end potpun_sabirac; architecture potpun_sabirac of potpun_sabirac is ---- Component declarations ----- component i3_kolo port ( in1 : in STD_LOGIC; in2 : in STD_LOGIC; in3 : in STD_LOGIC; out1 : out STD_LOGIC ); end component; component ili3_kolo port ( in1 : in STD_LOGIC; in2 : in STD_LOGIC;
in1out1in2
in3
U1
ili3_kolo
in1out1
in2
U2
i_kolo
in1out1
in2
U3
i_kolo
in1out1
in2
U4
i_kolo
carry2
carry1
carry3
in1out1in2
in3
U5
i3_kolo
in1out1in2
in3
U6
i3_kolo
in1out1in2
in3
U7
i3_kolo
in1out1in2
in3
U8
i3_kolo
in1
out1in2in3in4
U9
ili4_kolo
sum1
sum2
sum3
sum4in1
out1
U10
inv
in1out1
U11
inv
in1out1
U12
inv
c1x1 y1
xyc
c0
z
14
in3 : in STD_LOGIC; out1 : out STD_LOGIC ); end component; component ili4_kolo port ( in1 : in STD_LOGIC; in2 : in STD_LOGIC; in3 : in STD_LOGIC; in4 : in STD_LOGIC; out1 : out STD_LOGIC ); end component; component inv port ( in1 : in STD_LOGIC; out1 : out STD_LOGIC ); end component; component i_kolo port ( in1 : in STD_LOGIC; in2 : in STD_LOGIC; out1 : out STD_LOGIC ); end component; ---- Signal declarations used on the diagram ---- signal c1 : STD_LOGIC; signal carry1 : STD_LOGIC; signal carry2 : STD_LOGIC; signal carry3 : STD_LOGIC; signal sum1 : STD_LOGIC; signal sum2 : STD_LOGIC; signal sum3 : STD_LOGIC; signal sum4 : STD_LOGIC; signal x1 : STD_LOGIC; signal y1 : STD_LOGIC; begin ---- Component instantiations ---- U1 : ili3_kolo port map( in1 => carry1, in2 => carry2, in3 => carry3, out1 => c0 ); U10 : inv port map( in1 => y, out1 => y1 ); U11 : inv port map( in1 => c, out1 => c1 ); U12 : inv port map( in1 => x, out1 => x1 ); U2 : i_kolo port map( in1 => x, in2 => y, out1 => carry1 ); U3 : i_kolo
15
port map( in1 => c, in2 => y, out1 => carry2 ); U4 : i_kolo port map( in1 => x, in2 => c, out1 => carry3 ); U5 : i3_kolo port map( in1 => c, in2 => y, in3 => x, out1 => sum1 ); U6 : i3_kolo port map( in1 => c1, in2 => y1, in3 => x, out1 => sum2 ); U7 : i3_kolo port map( in1 => y1, in2 => x1, in3 => c, out1 => sum3 ); U8 : i3_kolo port map( in1 => x1, in2 => c1, in3 => y, out1 => sum4 ); U9 : ili4_kolo port map( in1 => sum1, in2 => sum2, in3 => sum3, in4 => sum4, out1 => z ); end potpun_sabirac; Slika 9: VHDL kôd potpunog sabira~a 3.5. Struktura pomera~kih registara Na slici 10 je data struktura pomera~kog registara za upis operanda "A". Zbog velikog broja medju veza kao i velikog obima kola koga karakteriše visoko regularna struktura, VHDL kôd nije dat iz razloga što bi se odredjene sekvence više puta ponavljale. Deo slike je zbog preglednosti izostavljen i zamenjen isprekidanim linijama, a raspored i medjusobna veza elementa su identi~ni u celokupnom kolu.
Nisu dati struktura i VHDL kôd registra za upis operanda "B" zbog veoma sli~ne strukture i istog principa funkcionisanja. Osnova funkcija uop{tenog pomera~kog registra je pomeranje upisanog sadr`aja u jednu, odnosno drugu stranu. U konkretnom rešenju, pomera~ki registri su bili neophodni. Registri su
16
implementirani da bi se ostvario paralelni upis operanada, a i da se obezbedi ubacivanje bitova "0" izmedju svakog bita operanada "A" i "B" na osnovu Tabele 1. Bitovi modifikovanih operanada, unose se u bit-serijski mno`a~ serijski u toku naredna 24 taktna intervala. Na osnovu Tabele 1, za operaciju mno`enja i generisanje rezultata potrebno je 24 taktnih intervala. Funkcija ulazno-izlaznih pinova je slede}a:
• A(7:0) -paralelni ulaz za bitove operanda "A" • nula -ulaz za bitove logi~ke nule • par_ser_in -izbor re`ima rada ("1"-paralelni upis; "0"-pomeranje) • serijski_izlaz -serijski izlaz za bitove operanda "A" (po Tabeli 1) • clock -signal taktne pobude
Slika 10: Struktura pomera~kog registra za operand "A" 3.6. Struktura multipleksera Mulltiplekser se koristi kao selektor bitova za serijski mno`a~. Kada je selektorski ulaz na postavljen na logi~ku "0", na izlazu multipleksera se generi{e bit operanda, a kada je selektorski ulaz postavljen na "1" na izlazu multipleksera se generi{e nula. Na slici 11 je prikazana struktura multipleksera, a na slici 12 odgovaraju}i VHDL kôd. Funkcija ulazno-izlaznih pinova je slede}a:
D Q
R clk
U1
flip_flop
paralelno_serijski
Out1peralelniIN
serijskiIN
U4
mux
paralelno_serijski Out1 peralelniIN
serijskiIN
U7
mux
A(7:0)
nula
clock
par_ser_in
A(0)
D Q R clk
U26
flip_flop
D Q
Rclk
U27
flip_flop
paralelno_serijski
Out1peralelniINserijskiIN
U29
mux
paralelno_serijski
Out1peralelniINserijskiIN
U30
mux
D Q
Rclk
U32
flip_flop
serijski_izlaz
A(7)
D Q R clk
U33
flip_flop
paralelno_serijski Out1 peralelniIN
serijskiIN
U34
mux
17
• paralelno_serijski -izbor ulaza (za "0" izlaz dobija vrednost bita na "serijskiIN", za "1" izlaz dobija vrednost bita na "paralelniIN")
• serijskiIN -ulaz multipleksera • paralelniIN -ulaz multipleksera • Out1 -izlaz multipleksera
Osnovna funkcija multipleksera je funkcija preklopnika. Naime, u konkretnom slu~aju, dovodjenjem "0" ili "1" na "paralelno_serijski" vr{imo izbor jednog od dva ulaza. Ako je dovedena "0" izabran je "serijskiIN", {to zna~i da }e trenutno stanje ulaza "serijskiIN" biti preneto na izlaz, tj. na "Out1". U slu~aju da je vrednost "1" bi}e izabran "paralelniIN", {to zna~i da }e trenutno stanje ulaza "paralelniIN" biti preneto na izlaz, tj. na "Out1".
Slika 11: Struktura multipleksera library IEEE; use IEEE.std_logic_1164.all; entity mux is port( paralelno_serijski : in STD_LOGIC; peralelniIN : in STD_LOGIC; serijskiIN : in STD_LOGIC; Out1 : out STD_LOGIC ); end mux; architecture mux of mux is ---- Component declarations ----- component ili_kolo port ( in1 : in STD_LOGIC; in2 : in STD_LOGIC; out1 : out STD_LOGIC ); end component; component inv port ( in1 : in STD_LOGIC; out1 : out STD_LOGIC ); end component; component i_kolo port ( in1 : in STD_LOGIC;
in1out1
in2
U1
i_kolo
in1out1
in2
U2
i_kolo
out1
U3
inv
paralelno_serijski
serijskiIN
peralelniIN
in1 out
1 in2
U4
ili_kolo Out1
in1
18
in2 : in STD_LOGIC; out1 : out STD_LOGIC ); end component; ---- Signal declarations used on the diagram ---- signal NET129 : STD_LOGIC; signal NET137 : STD_LOGIC; signal NET66 : STD_LOGIC; begin ---- Component instantiations ---- U1 : i_kolo port map( in1 => NET66, in2 => serijskiIN, out1 => NET129 ); U2 : i_kolo port map( in1 => paralelno_serijski, in2 => peralelniIN, out1 => NET137 ); U3 : inv port map( in1 => paralelno_serijski, out1 => NET66 ); U4 : ili_kolo port map( in1 => NET129, in2 => NET137, out1 => Out1 ); end mux;
Slika 12: VHDL kôd multipleksera 3.7. Struktura D flip-flopa Za implementaciju memorijskih elemenata u gradivnim blokovima potpuni sabira~ i pomera~ki registar kori{}en je D flip-flop. Na slici 13 je dat odgovaraju}i VHDL kôd D flip-flopa. library IEEE; --biblioteka koju koristimo use IEEE.STD_LOGIC_1164.all; entity flip_flop is --funkcija koja realizuje D flip-flop port ( D : in std_logic; --D ulaz koji se upisuje u flip-flop na uzlaznu ivicu clk-a clk : in std_logic; --ulaz za clk Q : out std_logic; --izlaz iz flip-flopa na kome je vrednost D u trajanju od jednog clk intervala R : in std_logic); --ulaz za asinhroni reset kada R ima vrednost '1' end entity flip_flop; architecture flip_flop of flip_flop is --opis funkcije kola begin process (clk) --proces koji je aktivan kada se menja clk begin if R='1' then --ispitujemo da li se vrsi resetovanje ili ne Q<='0'; --resetujemo ff tako sto mu izlaz postavimo na nulu else --ako se ne resetuje: if clk='1' then --obezbedjuje da ff radi na uzlaznu ivicu clk-a Q<=D; --ako je clk na uzlaznoj ivici, upisuje se nova vrednost end if; --ulaznog signala end if; end process; end; Slika 13: VHDL kôd D flip-flopa
19
3.8. VHDL kodovi za osnovne gradivne blokove Na narednim slikama su dati VHDL kôdovi za slede}e osnovne gradivne blokove: bafer, invertor, "I" logo~ko kolo i "ILI" logi~ko kolo. library IEEE; --biblioteka koju koristimo use IEEE.STD_LOGIC_1164.all; entity buf is --bafer sluzi za odvajanje dva stepena u kolu port( in1 :in std_logic ; --in1 je ulazni signal out1 :out std_logic ); --out1 je izlazni signal end buf; architecture buf of buf is --opisivanje funkcije kola begin out1 <= in1 ; --ulazni signal se prenosi na izlaz end buf; Slika 14: VHDL kôd bafera library IEEE; --biblioteka koju koristimo use IEEE.STD_LOGIC_1164.all; entity inv is --kolo vrsi invertovanje ulaznog signala port( in1 :in std_logic ; --in1 je ulaz kola out1 :out std_logic ); --out1 je izlaz kola end inv; architecture inv of inv is --opisivanje funkcije kola begin out1 <= not in1 ; --na izlaz se salje invertovani ulazni signal end inv; Slika 15: VHDL kôd invertora library IEEE; --biblioteka koju koristimo use IEEE.STD_LOGIC_1164.all; entity i_kolo is --kolo vrsi "i" funkciju sa dva operanda port ( in1 : in std_logic; --prvi operand in2 : in std_logic; --drugi operand out1 : out std_logic); --rezultat funkcije "I" end entity i_kolo; architecture i_kolo of i_kolo is --opis funkcije kola begin out1 <= in1 and in2; --izlaz dobija vrednost "I" funkcije od ulaznih operanada end; Slika 16: VHDL kôd "I" logi~kog kola library IEEE; --biblioteka koju koristimo use IEEE.STD_LOGIC_1164.all; entity ili_kolo is --kolo vrsi "ili" funkciju sa dva operanda port( in1 :in std_logic ; --prvi operand in2 :in std_logic ; --drugi operand out1 :out std_logic ); --rezultat funkcije "ILI" end ili_kolo; architecture ili_kolo of ili_kolo is --opis funkcije kola begin out1 <= in1 or in2 ; --izlaz dobija vrednost "ILI" funkcije od ulaznih operanada end ili_kolo; Slika 17: VHDL kôd "ILI" logi~kog kola
20
4. SINTEZA I IMPLEMENTACIJA KOLA Bit-serijski mno`a~ za neozna~ene brojeve opisan u Sekciji 3.1. je sintetizovan kori{}enjem programskog paketa ISE 4.1i kompanije XILINX. Paket ISE 4.1i se koristi za razvoj aplikacija baziranih na XILINX-ovim kolima iz familije CPLD ili FPGA. Za implementaciju bit-serijskog SSP mno`a~a za neozna~ene brojeve iskorišćeno je FPGA kolo iz serije "SPARTAN2" koje ima oznaku "2S15CS144", a napaja se naponom od 2.5V. Listing i rezultati koji su prikazani u generisanom izve{taju odnose se na implementaciju kola na konkretnom FPGA ~ipu "2S15CS144". Design Information ------------------ Command Line : C:\Xilinx\bin\nt\map.exe -p 2S15CS144-5 -o map.ncd bit_serijski.ngd bit_serijski.pcf Target Device : x2s15 Target Package : cs144 Target Speed : -5 Mapper Version : spartan2 -- $Revision: 1.58 $ Mapped Date : Wed Sep 21 20:14:13 2005 Design Summary -------------- Number of errors: 0 Number of warnings: 0 Number of Slices: 41 out of 192 21% Number of Slices containing unrelated logic: 0 out of 41 0% Number of Slice Latches: 64 out of 384 16% Number of 4 input LUTs: 81 out of 384 21% Number of bonded IOBs: 21 out of 86 24% Number of GCLKs: 1 out of 4 25% Total equivalent gate count for design: 806 Additional JTAG gate count for IOBs: 1,008 Na osnovu dobijenih rezultata mozemo da zakljucimo sledece:
a) implementirano kolo bit-serijskog mno`a~a za neozna~ene brojeve zauzima 806 ekvivalentnih gejtova, b) dodatno, neophodno je jo{ 1008 gejtova koji se koriste za realizaciju JTAG logike kojom se vrši testiranje i programiranje FPGA kola, c) maksimalna radna frekvencija kola mno`a~a za neozna~ene brojeve je 161,316 MHz.
Na slikama 18. i 19. prikazane su unutrašnje strukture koje se odnose na zauzetost makro }elija i medjusobne povezanosti makro }elija u okviru FPGA ~ipa "2S15CS144". Slike su preuzete iz Xilinx Floorplanner Editor-a koji je zadužen u okviru paketa ISE za sam fizički razmeštaj ćelija. Slika 18. prikazuje razmeštaj ćelija gde možemo videti i koji pinovi kola su iskorišćeni. Iako se zapa`a da izvodi kola nisu grupisani, to je u~injeno da bi se postiglo pribli`no isto kašnjenje veza do svih pinova. Izgled povezanosti samih veza prikazan je na slici 19.
21
Slika 18: Šema zauzetosti ćelija FPGA kola
Slika 19: Šema veza ćelija FPGA kola
22
Na slici 20. je dat prikaz kola, koji je generisan u Xilinx FPGA Editor-u.
Slika 20: Prikaz kola u "Xilinx FPGA Editor-u" Na slici 21. je dat prikaz gotove komponente, koji je generisan u programu Xilinx Chip Viewer. Slika 21: Prikaz gotovog ~ipa u "Xilinx Chip Viewer-u"
23
Na kraju izvršena je i analiza potrošnje kola u delu paketa pod imenom XPower, je pokazao totalnu potrošnju od 12,5mW. Pri tome, pri temperaturi ambijenta od 25 °C, temperatura kućišta je 25,425 °C. Na slici 22. prikazan je i sam fizički raspored pinova na FPGA kolu. Slika 22: Raspored pinova FPGA kola Ovim je završen ceo proces sinteze i implementacije kola. Program generiše i programski fajl kojim je potrebno isprogramirati FPGA kolo da bi se dobila željena funkcija.
24
5. TESTIRANJE RADA KOLA 5.1. Testiranje rada potpunoga sabira~a
Potpuni sabira~ obavlja operaciju sabiranja definisanou Tabelom 2. Na ulaze x, y i c se dovode bitovi operanda "x", "y" i bit prenosa iz prethodnog bloka "c", respektivno. Na izlazu se dobijaju vrednosti rezultata sabiranja "z" i prenosa "c0". Na slici 23 je dat talasni dijagram koji se odnosi na testiranje rada sabira~a za slede}e vrednosti ulaznih operanada:
takt 1 takt 2 takt 3 takt 4 X 1 0 1 1 Y 1 0 1 1 C 1 1 1 0 C0 1 0 1 1 Z 1 1 1 0
Slika 23: Talasni dijagram rada potpunog sabira~a 5.2. Testiranje rada multipleksera
Multiplekser ima funkciju preklopnika. Na slici 24 je dat talasni dijagram testiranja rada multipleksera i to za slede}e vrednosti ulaza, izlaza i vrednosti selektorskog signala:
takt 1 takt 2 takt 3 takt 4
paralelno_serijski 0 1 0 1 paralelniIN 1 1 0 0 serijskiIN 0 0 1 1
Out1 0 1 1 0 Slika 24: Talasni dijagram rada multipleksera
takt 1 takt 3 takt 4takt 2
takt 1 takt 4takt 3 takt 2
25
5.3. Testiranje rada pomera~kog registra Registri se koriste za unos operanda "A" i "B". Osim osnovne funkcije pomeranja unetog sadr`aja, imaju i funkciju dodavanja bitova "0" izmedju bitova operanada, na na~in koji je definisan tabelom 1. Ulaz "par_ser_in" slu`i za izbor re`ima: "0"-vr{i se pomeranje upisanog sadr`aja, "1"-vr{i se paralelan upis operanda koji treba pomerati. Vrednost ulaza "par_ser_in" je, u prvom taktu "1" (upisuje se "A"), i nakon prvog takta se menja u "0" (vr{i se pomeranje). Kao {to se sa talasnog dijagrama vidi, upisan je broj "A"=11110000. U prvom tatku se ova vrednost upisuje u registar. Na dalje se izmedju svakog bita operanda "A" upisuje vrednost "0", za vreme koje se vr{i upisivanje bitova operanda "B" (komentar "upis b" na talasnom dijagramu na slici 25.).
Slika 25: Talasni dijagram rada pomera~kog registra 5.4. Testiranje rada }elije Milerovog mno`a~a ]elija Milerovog mno`a~a je projektovana tako da na izlazu uvek dobija zbir vrednosti izlaza iz prethodnog takta, proizvoda "ain" i "bin", i vrednosti "cin". U slu~aju da je dobije rezlutat veli~ine dva bita, "cout" dobija vrednost bita ve}e te`ine dok "izlaz" dobija vrednost bita manje te`ine.
Slika 26: Talasni dijagram rada }elije Milerovog broja~a U prvom taktu izvr{eno je resetovanje }elije, tako da na izlazima ne dolazi do promene stanja. U drugom taktu na ulaze "ain", "bin" i "cin" dovedene su sve "1", izlazi "aout" i "bout" dobijaju takodje vrednosti "1". Rezultat izvr{ene operacije treba da
takt 1 takt 3takt 2
26
bude "10", pa tako "cout" dobija vrednost "1", a "izlaz" vrednost "0", {to je i trebalo dobiti. U tre}em taktu promenljiva "ain" menja vrednost u "0". Sada rezlutat treba da bude jednak "1", pa tako izlaz "cout" dobija vrednost "0" a "izlaz" dobija vrednost "1", {to je i trebalo dobiti (slika 26.). 5.5. Testiranje rada mno`a~a Kolo bit-serijskog mno`a~a opisano u ovom radu se koristi za mno`enje neozna~enih osmobitnih brojeva. Proizvod je du`ine 16 bitova. Operandi se unose paralelno. U toku 24 takta uz pomo} pomera~kih registara se vr{i ubacivanje nula izmedju bitova operanada na osnovu sadr`aja definisanog Tabelom 1. Bitovi u bit-serijski mno`a~ se unose serijski. Nakon 24 takta dobija se rezultat mno`enja. Na slici 27 je dat talasni dijagram koji se odnosi na testiranje rada mno`a~a i va`i za slede}e vrednosti ulaznih operanada:
• "A(7:0)"=10000000 (dekadno 128) • "B(7:0)"=00000010 (dekadno 2) • dobijeni rezultat je "REZ(15:0)"=100 (heksadecimalno) , (256 dekadno)
Slika 27: Talasni dijagram rada mno`a~a Na slici 28 je dat talasni dijagram testiranja rada mno`a~a koji se odnosi na slede}e vrednosti ulaznih operanada:
• "A(7:0)"=10101010 (dekadno 170) • "B(7:0)"=11110000 (dekadno 240) • dobijeni rezultat je "REZ(15:0)"=9F60 (heksadecimalno) , (40800 dekadno)
Slika 28: Talasni dijagram rada mno`a~a
27
6. ZADATAK Proveriti ispravnost rada bit-serijskog SSP mno`a~a za neozna~ene brojeve. Mno`a~ je projektovan tako da mo`e izvr{avati operaciju mno`enja nad dva neozna~ena (bez znaka) operanda du`ine 8 bitova. Dobijeni rezultat je du`ine 16 bitova. Operandi se unose u binarnom obliku. Postupak rada uklju~uje slede}e korake: 1. Pokrenuti program "Active-HDL 5.1" ~ija se ikona nalazi na Desktop-u 2. Otvoriti dizajn "bit_serijski" 3. U okviru "Design Browser-a" selektovati stavku "kolo (kolo)" (segment 1. na slici 29.) 4. Otvoriti novi talasni dijagram klikom na ikonu "New Waveform" u toolbar- u (segment 2. na slici 29.) Slika 29: Otvaranje dizajna u Active-HDL-u 5. Nakon otvaranja prozora "Waveform-a" desnim klikom na prazan prozor otvoriti padaju}i meni i selektovati stavku "Add Signals" (segment 3. na slici 30.)
1.
2.
28
Slika 30: Prozor "Waveform Editor-a"
6. U okviru prozora "Add Signals" dodati na talasni dijagram slede}e signale: A, B, REZ, R, clk, nula. Postpak je slede}i: kliknuti na `eljeni signal (npr. A) (segment 4. na slici 31.), i zatim na dugme "Add" (segment 5. na slici 31.). Postupak je identi~an za sve signale. Nakon dodavanja `eljenih signala zatvoriti prozor klikom na dugme "Close" (segment 6. na slici 31.).
Slika 31: Prozor "Add Signals" za dodavanje signala u talasni dijagram
3.
4. 5. 6.
29
7. Nakon dodavanja signala potrebno je dodeliti vrednosti ulazima. Duplim klikom u polju svake promenljive u koloni "Stimulator" pristupiti dodeljivanju vrednosti ulaza (segmnt 7. na slici 32.). Postupak je isti za sve ulaze. NAPOMENA: Polje "REZ" predstavlja izlaz, na kome se dobija rezultat mno`enja, {to zna~i da mu ne treba dodeljivati nikakvu vrednost. Slika 32: Dodeljivanje vrednosti ulazima 8. Otvara se prozor "Stimulators" u okviru koga treba definisati ulaze. Ulazi "A" i "B" predstavljaju paralelne ulaze za bitove operanada koji se mno`e (maksimalno 8-bitni). "R" predstalja ulaz za RESET funkciju, "clk" ulaz taktne pobude i "nula" ulaz logi~ke nule. 9. Definisanje vrednosti ulaza vr{i se na slede}i na~in:
• vrednosti operanada "A" i "B" su prizvoljne i unose se u okviru prozora "Stimulators" ->"Value"->u polju "Force value" (segment 8. na slici 29. gde je vrednost une{enog operanda "A" jednaka "11111111". Nakon definisanja potrebno je potvrditi unos sa "Apply" (segment 9. na slici 33.). Identi~na procedura je prilikom unosa operanda "B", s tim {to se, naravno, u okviru "Waveform editor"-a, duplim klikom selektuje ulaz "B".
Slika 33: Prozor "Stimulators" za dodelu vrednosti ulazima
7.
8.
9.
30
• vrednost funkcije "R" postavljamo na "1", tj. resetujemo kolo, na identi~an na~in kao {to je u~injeno sa dodelom vrednosti operandima "A" i "B".
• vrednost funkcije "nula" postavljamo na "0", istim postupkom kao funkciji "R".
• vrednost signala taktne pobude "clk" defini{e se na slede}i na~in: "Stimulators"->"Clock"->"Apply" (segment 10. na slici 34.).
Slika 34: Prozor "Stimulators" za definisanje signala taktne pobude 10. Pustiti kolo u rad za vreme jednog takta klikom na ikonu "Run For" u "toolbar"-u (segment 11. na slici 35.).
Slika 35: Prikaz pu{tanja u rad simulacije
11. Nakon jednog takta promeniti vrednost ulaza "R" u "0" (postupkom opisanim u ta~ki 9.).
12. Da bi na izlazu iz mno`a~a dobili ta~an rezultat potrebno je prema tabeli 1. da prodje 24 taktova da bi se sra~unali svi parcijalni proizvodi. Ovo zna~i da treba na ikonu "Run For" (slika 35., segment 11.) kliknuti 24 puta zaredom. Nakon 24 taktova dobi}emo tra`eni rezultat.
10.
11.
31
13. Da bi mogao da se vidi ceo talasni dijagram klikom na ikonu "Zoom To Fit" smestiti ceo dijagram u vidno polje (segment 12. na slici 36.), i o~itati rezultat (segment 13. na slici 36.). U konkretnom primeru za operande smo imali "A"=11111111 i "B"=10, a tra`eni rezultat "REZ"=111111110 (heksadecimalno 1FE). Slika 36: Sme{tanje talasnog dijagrama u vidno polje i o~itavanje rezultata 14. Od{tampati dobijeni vremenski diajagram.
12.
13.
32
6.1. Rezultati GRUPA 1: operand "A" ______________ ______________ ______________ binarni oblik heksadecimalni oblik decimalni oblik
operand "B" ______________ ______________ ______________ binarni oblik heksadecimalni oblik decimalni oblik
rezultat "REZ" ______________ ______________ ______________ binarni oblik heksadecimalni oblik decimalni oblik
GRUPA 2: operand "A" ______________ ______________ ______________ binarni oblik heksadecimalni oblik decimalni oblik
operand "B" ______________ ______________ ______________ binarni oblik heksadecimalni oblik decimalni oblik
rezultat "REZ" ______________ ______________ ______________ binarni oblik heksadecimalni oblik decimalni oblik
GRUPA 3: operand "A" ______________ ______________ ______________ binarni oblik heksadecimalni oblik decimalni oblik
operand "B" ______________ ______________ ______________ binarni oblik heksadecimalni oblik decimalni oblik
rezultat "REZ" ______________ ______________ ______________ binarni oblik heksadecimalni oblik decimalni oblik
GRUPA 4: operand "A" ______________ ______________ ______________ binarni oblik heksadecimalni oblik decimalni oblik
operand "B" ______________ ______________ ______________ binarni oblik heksadecimalni oblik decimalni oblik
rezultat "REZ" ______________ ______________ ______________ binarni oblik heksadecimalni oblik decimalni oblik