BIT-SERIJSKI MNO@A^ ZA NEOZNA^ENE BROJEVE
DOMINANTNE OPERACIJE I CILJ PROJEKTANTA Dominantne operacije u DSP-u su sabiranje i mno`enje, odnosno mno`enje sa akumulacijom. Cilj je da se projektuje mno`a~ koji: a. zauzima malu povr{inu na silicijumu b. karakteri{e se velikom brzinom rada c. odlikuje se mikro potro{njom
PODELA MNO@A^A Proto~ne mno`a~e mo`emo prema formatu prenosa ulazno-izlaznih podataka podeliti na bit-paralelne, cifarsko-serijske i bit-serijske. Bit-serijski mno`a~ zadovoljava zahteve male povr{ine na ~ipu i mikro potro{nje.
PODELA MNO@A^A - Karakteristike Velika povr{ina ~ipa Neznatno ka{njenje Velika disipacija snage Umerena povr{ina ~ipa Umereno ka{njenje Umerena disipacija snage Mala povr{ina ~ipa Veliko ka{njenje Veoma mala disipacija snage
PREDLO@ENO RE[ENJE Bit-serijski mno`a~ sa paralelnim izlazom tipa SSP (Serial_in-Serial_op-Paralell_out). Koncept stati~kog rezultata omogu}ava direktnu implementaciju operacije mno`enja sa akumulacijom. Ova osobina je iskori{}ena za formiranje polja za mno`enje matrica zasnovanog na bit-serijskom pristupu (Milerov mno`a~).
Milerov mno`a~ Milerov mno`a~ predstavlja linerano polje dve proste }elije. Operand "b" se unosi sa leve strane polja po~ev od bita najmanje te`ine. Operand "a" se unosi sa desne strane polja po~ev od bita najve}e te`ine. Svaka }elija u polju izra~unava po jedan bit proizvoda p. Prva }elija sleva izra~unava bit najve}e te`ine. Prva }elija sdesna izra~unava bit najmanje te`ine.
REALIZACIJA U VHDL-u Rad kola bit-serijskog mno`a~a je opisan u programskom jeziku Active-HDL 5.1. Sinteza i implementacija opisa izvr{ena je u programskom paketu ISE kompanije "XILINX". 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"
REALIZACIJA U VHDL-u Struktura mno`a~a sa registrima Funkcija ulazno-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 R -ulaz "RESET" funkcije clk -signal taktne pobude nula -ulaz logi~ke nule
REALIZACIJA U VHDL-u Struktura mno`a~a sa registrima – nastavak 1 “bit_serijski" predstavlja kolo bit-serijskog SSP mno`a~a. "SHIFTreg" predstavlja pomera~ki registar za upis operanda "A“. "SHIFTreg_B" predstavlja pomera~ki registar za upis operanda "B". U kolo se unose 8-bitni operandi, a rezultat je du`ine 16 bitova.
REALIZACIJA U VHDL-u Struktura bit-serijskog SSP mno`a~a Mno`a~ je sa~injen od 16 bafera i 16 }elija Milerovog mno`a~a. 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 clk -signal taktne pobude nula -ulaz logi~ke nule pom -paralelni izlaz za bitove rezultata
REALIZACIJA U VHDL-u Prikaz bit-serijskog SSP mno`a~a aout ain bout bin cout cin izlaz clk U1 celija U2 U3 in1 out1 U17 buf U18 U19 pom(15:0) pom(15) pom(14) pom(13) B U14 U15 U16 U30 U31 U32 pom(0) pom(1) pom(2) A nula
REALIZACIJA U VHDL-u Struktura }elije bit-serijskog mno`a~a 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+(ainxbin)+cin) clk -signal taktne pobude R -ulaz za "RESET" funkciju
REALIZACIJA U VHDL-u Prikaz }elije bit-serijskog mno`a~a
REALIZACIJA U VHDL-u Struktura potpunog sabira~a 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 slede}u tablicu istinitosti: x y c c0 z 1
REALIZACIJA U VHDL-u Prikaz potpunog sabira~a
REALIZACIJA U VHDL-u Struktura pomera~kih registara Funkcija pomera~kog registra je pomeranje upisanog sadr`aja u jednu, odnosno drugu stranu. Pomera~ki registri omogu}avaju paralelni upis operanada, i ubacivanje bitova "0" izmedju svakog bita operanada "A" i "B“.
REALIZACIJA U VHDL-u Struktura pomera~kih registara – nastavak 1 Bitovi modifikovanih operanada, paralelno se unose u registre, a iz registara se serijski unose u bit-serijski mno`a~. Operacija mno`enja je kompletna nakon 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“-funkcija pomeranja) serijski_izlaz -serijski izlaz operanda "A" clock -signal taktne pobude
REALIZACIJA U VHDL-u Prikaz pomera~kog registra za unos operanda “A” Q R clk U1 flip_flop paralelno_serijski Out1 peralelniIN serijskiIN U4 mux U7 A(7:0) nula clock par_ser_in A(0) U26 U27 U29 U30 U32 serijski_izlaz A(7) U33 U34
REALIZACIJA U VHDL-u Struktura multipleksera Multiplekser ima ulogu preklopnika. Funkcija ulazno-izlaznih pinova je slede}a: paralelno_serijski -izbor ulaza serijsjkiIN -ulaz multipleksera paralelniIN -ulaz multipleksera Out1 -izlaz multipleksera Dovodjenjem vrednosti "0" ili "1" na "paralelno_serijski" vr{i se izbor jednog od dva ulaza. Ako je dovedena "0" izabran je "serijskiIN“. Trenutno stanje ulaza "serijskiIN" bi}e preneto na “Out1”. Ako je dovedena "1" izabran je "paralelniIN“. Trenutno stanje ulaza "paralelniIN" bi}e preneto na "Out1".
REALIZACIJA U VHDL-u Prikaz multipleksera in1 out1 in2 U1 i_kolo U2 U3 inv paralelno_serijski serijskiIN peralelniIN U4 ili_kolo Out1
REALIZACIJA U VHDL-u Struktura D flip-flopa Flip-flop je osnovno kolo za izgradnju memorijskih elemenata. Uz pomo} D flip-flopa realizovanie su }elije Milerovog mno`a~a i pomera~ki registri. VHDL kôd D flip-flopa je oblika: 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 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 ulaza end if; end if; end process; end;
SINTEZA I IMPLEMENTACIJA KOLA Bit-serijski mno`a~ za neozna~ene brojeve je sintetizovan u programskom paketu ISE 4.1i kompanije XILINX koji se koristi za razvoj aplikacija baziranih na CPLD i FPGA kolima. Za implementaciju mno`a~a iskorišćeno je FPGA kolo iz XILINX-ove familije "SPARTAN2" tipa "2S15CS144".
SINTEZA I IMPLEMENTACIJA KOLA Listing rezultata implementacije 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
SINTEZA I IMPLEMENTACIJA KOLA Rezlutati implementacije kola Implemetnirano kolo je zauzelo 806 ekvivalentnih gejtova. 1008 gejtova je neophodno za realizaciju JTAG logike kojom se vrši testiranje i programiranje FPGA kola. Kolo koristi napajanje od 2.5V. Iskori{}enost FPGA ~ipa je 21%. Maksimalna radna frekvencija kola 161,316 MHz. Maksimalna potrošnja kola je 12,5mW.
SINTEZA I IMPLEMENTACIJA KOLA [ema zauzetosti }elija FPGA kola
SINTEZA I IMPLEMENTACIJA KOLA [ema veza }elija FPGA kola
SINTEZA I IMPLEMENTACIJA KOLA Prikaz gotovog ~ipa Raspored pinova ~ipa
TESTIRANJE RADA KOLA Testiranje rada potpunog sabira~a Na slici je dat talasni dijagram testiranja rada sabira~a za slede}e vrednosti: takt 1 takt 2 takt 3 takt 4 x 1 y c c0 z takt 1 takt 3 takt 4 takt 2
TESTIRANJE RADA KOLA Testiranje rada multipleksera Na slici je dat talasni dijagram testiranja rada multipleksera za slede}e vrednosti: takt 1 takt 2 takt 3 takt 4 paralelno_serijski 1 paralelniIN serijskiIN Out1 takt 1 takt 4 takt 3 takt 2
TESTIRANJE RADA KOLA Testiranje rada pomera~kog registra Vrednost ulaza "par_ser_in" je u prvom taktu "1" (upis "A"). Nakon prvog takta "par_ser_in" se menja u "0" (vr{i se pomeranje sadr`aja). Upisan je broj "A"=11110000. Izmedju svakog bita operanda "A" upisuje se vrednost "0", i za to vreme se vr{i upisivanje bitova operanda "B" (komentar “upis b“ na dijagramu).
TESTIRANJE RADA KOLA Testiranje rada }elije mno`a~a ]elija Milerovog mno`a~a je projektovana tako da na izlazu imamo uvek zbir vrednosti izlaza iz prethodnog takta, proizvoda "ain" i "bin", i vrednosti "cin". U slu~aju da se dobije rezlutat veli~ine dva bita, "cout" dobija vrednost bita ve}e te`ine dok "izlaz" dobija vrednost bita manje te`ine. takt 1 takt 3 takt 2
TESTIRANJE RADA KOLA Testiranje rada mno`a~a Kolo bit-serijskog mno`a~a sa registrima ima funkciju da izra~una proizvod dva binarna broja maksimalne du`ine 8 bitova. Proizvod mo`e biti maksimalne du`ine 16 bitova. Operandi se unose paralelno u registre, uz pomo} pomera~kih registara se vr{i ubacivanje nula izmedju bitova operanada, i dalje serijsko uno{enje bitova u bit-serijski mno`a~. Nakon 24 takta dobija se rezultat mno`enja operanada.
TESTIRANJE RADA KOLA Testiranje rada mno`a~a – nastavak 1 Na slici je dat talasni dijagram testiranja za slede}e vrednosti: - "A(7:0)"=10101010 (dekadno 170) - "B(7:0)"=11110000 (dekadno 240) - rezultat je "REZ(15:0)"=9F60 (heksadecimalno), (40800 dekadno)
ZADATAK za ve`bu studenta Proveriti ispravnost rada mno`a~a. Pokrenuti program "Active-HDL 5.1" ~ija se ikona nalazi na Desktop-u. Uneti operande u binarnom obliku.
ZADATAK Prozor “Active-HDL”-a Otvoriti dizajn "bit_serijski" U okviru "Design Browser-a" selektovati stavku "kolo (kolo)“. 2. Otvoriti novi talasni dijagram klikom na ikonu "New Waveform" u toolbar-u. 1.
ZADATAK Dodavanje signala u “Waveform Editor”-u Nakon otvaranja prozora "Waveform-a" desnim klikom na prazan prozor otvoriti padaju}i meni i selektovati stavku "Add Signals“. 3.
ZADATAK Manipulacija signalima u “Waveform Editor”-u U okviru prozora "Add Signals" dodati na waveform slede}e signale: A, B, REZ, R, clk, nula. 4. 6. 5. Nakon dodavanja signala potrebno je dodeliti vrednosti ulazima. U koloni "Stimulator" dodeliti odgovaraju}e vrednosti ulazima. 7.
ZADATAK Simulacija Pustiti kolo u rad za vreme jednog takta klikom na ikonu "Run For" u toolbar-u. 11.
ZADATAK Simulacija – nastavak 1 Nakon jednog takta promeniti vrednost ulaza "R" u "0" Potrebno je 24 taktova da bi se sra~unali svi parcijalni proizvodi, a samim tim i kona~an rezlutat. Da bi mogao da se vidi ceo talasni dijagram klikom na ikonu "Zoom To Fit" smestiti ceo dijagram u vidno polje. 12. 13.
ZADATAK Simulacija – nastavak 2 O~itati tra`eni rezultat. U konkretnom primeru za operande su uzeti "A"=11111111 i "B"=10, a tra`eni rezultat "REZ"=111111110 (heksadecimalno 1FE). NAPOMENA: U uputstvu za vežbu su precizno naznačeni redosled i koraci uno{enja vrednosti, na~in definisanja parametara i o~itvanja rezlutata.
ZAKLJU^AK Efikasnost realizacije operacija mno`enja ima izuzetno veliki uticaj na efikasnost DSP sistema. Bit-serijski mno`a~i imaju ekstremo jednostavne procesne elemente (}elije). Veze izmedju elemenata su {irine jednog bita, kratke i regularno rasporedjene, {to je od izuzetnog zna~aja za realizaciju. Znatno je smanjen broj ulazno-izlaznih pinova na ku}i{tu ~ipa. Mogu}nost realizacije mno`a~a sa velikim brojem elemenata na istom ~ipu. Veoma mala disipacija snage na ~ipu.
ZAKLJU^AK nastavak 1 Osnovni nedostatak: Usvajanjem bit-serijskog formata prenosa podataka smanjuje se propusnost sistema, a samim tim se smanjuje brzina obrade. Da ne bi do{lo do degradacije performansi potrebno je u {to ve}oj meri primeniti proto~nu obradu.