390 likes | 623 Vues
Mikroprocesorski sistemi Elektronski fakultet u Nišu HAMINGOV KODER/DEKODER. Student: Sr đan Vujašević 11424. 1. Gre ške Hamingova distanca Sindrom re č Hamingov kôd Realizacija Hamingovog koder/dekoder u VHDL-u Rezultati simulacije Rezultati sinte ze i implementacije
E N D
Mikroprocesorski sistemi Elektronski fakultet u Nišu HAMINGOV KODER/DEKODER Student: Srđan Vujašević 11424
1. Greške • Hamingova distanca • Sindrom reč • Hamingov kôd • Realizacija Hamingovog koder/dekoder u VHDL-u • Rezultati simulacije • Rezultati sinteze i implementacije • Laboratorijska vežba Student: Srđan Vujašević 11424
Otkrivanje i korekcija grešaka – strana 1 • Svaki put kada se informacija prenosi kroz neki kanal, može doći do greške u prenosu usled šuma • Informacija smeštena u nekoj komponenti za skladištenje podataka (memoriji), može se oštetiti, jer ni jedan hardver nije apsolutno siguran • Glas kada se prenosi kroz vazduh može se iskvariti usled vetra, šuma, visoke temperature... Student: Srđan Vujašević 11424
Metode za otkrivanje i korekciju grešaka – strana 2 • Kontrola greške unapred, u kome svaki karakter ili blok podataka koji se šalje sadrži dodatne (redundatne) informacije. Na osnovu ovih informacija primalac može ne samo da otkrije postojanje greške, već i da odredi koji su bitovi u primljenom podatku pogrešni i da grešku ukloni negacijom pogrešnih bitova. • Kontrola greške unazad, odnosno kontrola sa povratnom spregom. U ovom slučaju svaki karakter ili blok podataka koji se šalje sadrži samo neophodne dodatne informacije koje omogućuju primaocu da otkrije prisustvo greške, ali ne i mesto na kome se ona nalazi. Student: Srđan Vujašević 11424
Izbor metode za otkrivanje grešaka – strana 3 • Faktori od kojih zavisi izbor metode: • Broja bitova sa greškom (eng. bit error rate, BER) na komunikacionoj liniji. BER predstavlja verovatnoću u definisanom vremenskom intervalu da jedan bit ima grešku. Tako BER=10-4 znači da, u proseku, 1 od 10000 bita ima grešku u definisanom vremenskom intervalu. Za najveći broj mreža BER je oko 10-4 , dok je unutar računarskog sistema obično vrednost za BER 10-4ili manje. • 2. Tipa greške, tj. da li se greška javila na pojedinačnom bitu ili na grupi uzastopnih bitova. U poslednjem slučaju reč je o proširenoj (eksplozivnoj) grešci (eng. burst error). Student: Srđan Vujašević 11424
Pojam Hamingove distance – strana 1 ▪ Hamingova distanca (HD) - broj bitova u kojima se dve digitalne reči razlikuju HD( 101, 100 ) = 1 HD( 111, 000 ) = 3 ▪ Kôdna distanca (Dmin) - minimalna Hamingova distanca između dve bilo koje reči Student: Srđan Vujašević 11424
Pojam Hamingove distance – strana 2 Ilustracija kôdne distance: Student: Srđan Vujašević 11424
Pojam Hamingove distance – strana 3 Detekcija greške ▪ Kôd može detektovati do d bitova greške ako je minimalna distanca kôda Dmin ≥ d + 1 Korekcija greške ▪ Kôd može korektovati do c bitova greške ako je minimalna distanca kôda Dmin ≥ 2c + 1 Kodovi parnosti ▪ parna parnost ukupan broj jedinica u kodnoj reči je paran: - 0110110 1 - 0001011 0 ▪ neparna parnost ukupan broj jedinica u kodnoj reči je neparan: - 0110110 0 - 0001011 1 Student: Srđan Vujašević 11424
Pojam sindrom reči – strana 1 •Sindrom reč se dobija poređenjem dve K-bitne vrednosti bit po bit uzimanjem eksluzivne disjunkcije • Sindorm reč je neoznačen ceo broj dužine K koji ima vrednost K izmedju 0 i • Vrednost 0 označava da nema grešaka u zapisu, dok ostalih 2K-1 vrednosti određuju mesto greške, u slučaju da greška postoji • Kako greška može da se javi na bilo kom od M bitova podatka i K bitova koji se koriste u proveri, mora da važi Student: Srđan Vujašević 11424
Pojam sindrom reči -strana 2 Želja je da generisana sindrom reč ima sledece karakteristike: • Ako su svi bitovi u njoj 0 tada nije otkrivena nikakva greška • Ako u reči postoji tačno jedna 1, tada greška postoji u jednom od 4 bita za proveru, dok je zapis podatka u redu i ne zahteva nikavu korekciju • Ako sindrom sadrži više od jednog bita koji ima vrednost 1, tada vrednost sindrom reči posmatrane kao ceo neoznačen broj određuje poziciju na kojoj se nalazi greška. Korekcija se sastoji u komplementiranju vrednosti odgovarajućeg bita podatka Student: Srđan Vujašević 11424
Pojam sindrom reči - strana 3 Pozicije bitova podataka i bitova za proveru C1 = M1 M2 M4 M5M7 C2 = M1 M3 M4 M6 M7 C3 = M2 M3 M4 M8 C4 = M5 M6 M7 M8 gde označava operaciju ekskluzivne disjunkcije. Student: Srđan Vujašević 11424
Hamingov kôd- strana 1 • Jedan od najčešće korišćenih kodova sa korekcijom greške u RAM memorijama • Glavne odlike Hamingovog kôda su: - Detekcija greške je jednostavna (dodavanjem parity bitova) - Korekcija greške je kompleksna i zahteva Hamingov kôd sa više parity bitova Student: Srđan Vujašević 11424
d7 d6 d5 d4 p3 d3 d2 d1 p2 d0 p1 p0 Hamingov kôd – strana 2 •U Hamingovom kôdu, p - parity bitova je dodato na m - bitova u poruci, tako da imamo novonastalu kodnu reč on m+p – bitova •Sve pozicije u reči, čiji je broj stepena 2 (pozicije 1,2,4,8,...) koriste se za parity bitove. Ostale pozicije su namenjene za bitove originalne poruke • Izgled kodovane poruke, za originalnu poruku od 8-bitova: pozicije: 12 1 Student: Srđan Vujašević 11424
Hamingov kôd – strana 3 •Prilikom izbora broja parity bitova mora biti zadovoljena sledeća relacija: na primer: za 8-bitnu poruku poruka potrebna su nam 4 parity bita, tako da će podatak koji prenosimo sadržati ukupno 12 bitova Student: Srđan Vujašević 11424
Hamingov kôd – strana 4 • parity bitovi su 1,2,4,8, ... (P1,P2,P3,P4) • 3 = 1+2 • 5 = 1+4 • 6 = 2+4 P1 proverava bitove 3, 5, 7, 9, 11 • 7 = 1+2+4 P2 proverava bitove 3,6,7,10,11 • 9 = 1+8 P4 proverava bitove 5,6,7,12 • 10 =2+8 P8 proverava bitove 9,10,11,12 • 11 = 1+2+8 • 12 = 4+8 • Tako da vrednosti P1,P2,P4 i P8 računamo kao: • P1 = XOR nad bitovima (3,5,7,9,11) • P2 = XOR nad bitovima (3,6,7,10,11) • P4 = XOR nad bitovima (5,6,7,12) • P8 = XOR nad bitovima (9,10,11,12) Student: Srđan Vujašević 11424
Hamingov kôd – strana 5 • Na mestu prijema kompozitna reč od 12 bitova se ponovo proverava na grešku. Parnost reči se proverava nad istim grupama bitova u reči uključujući i bitove parnosti. Tako da će mo sad imati četiri bita provere: C1 = XOR nad bitovima (1,3,5,7,9,11) C2 = XOR nad bitovima (2,3,6,7,10,11) C4 = XOR nad bitovima (4,5,6,7,12) C8 = XOR nad bitovima (8,9,10,11,12) Student: Srđan Vujašević 11424
Hamingov kôd – strana 6 • Hamingov kod se može koristiti za kodnu reč proizvoljne dužine. Generalno za p - parity bitova i originalnu reč od m - bitova imamo ukupno p+m bitova koji mogu biti kodovani sa bitova. Grupe bitova za generisanje parity bitova i bitova provere na prijemu određuju se iz liste binarnih brojeva iz liste od 1 do . Svaka grupa bitova počinje sa brojem koji je stepena 2, na primer 1,2,4,8,16 itd. Ovi brojevi su takođe i pozicije parity bitova. • Osnovni Haming kod može detektovati i korigovati greške u samo jednom bitu. Upotrebom dodatnih parity bitova mogu se korigovati jednostruke greške i detektovati dvostruke Student: Srđan Vujašević 11424
Blok šema sistema sa Hamingovim kodiranjem – strana 7 Student: Srđan Vujašević 11424
Realizacija Hamingovog koder/dekoder u VHDL-u - strana 1 Hamingov koder Blok hamenc ima jedan 8-bitni ulazni port datain(7:0) koji predstavlja ulazne podatke koje treba kodirati Hammgovim kodom, i jedan 12-bitni izlaz hamout(11:0) koji predstavalja kodovanu ulaznu kodnu reč (8 bitova poruke i 4 parity bita). ENTITY hamenc IS PORT(datain : IN std_logic_vector(7 downto 0); --d7 d6 d5 d4 d3 d2 d1 d0 hamout : OUT std_logic_vector(11 downto 0)); --d7 d6 d5 d4 p3 d3 d2 d1 p2 d0 p1 p0 END hamenc; Student: Srđan Vujašević 11424
Realizacija Hamingovog koder/dekoder u VHDL-u - strana 2 Hamingov dekoder Blok Hamingovog dekodera ima 12-bitni port hamin(11:0) koji predstavlja ulazne podatke kodovane Hamingovim kodom, 8-bitni izlaz dataout(7:0) koji predstavlja 8-bitnu originalnu informaciju, 4-bitni izlaz error_pos(3:0) koji pokazuje na kojem bitu se javila greška, izlazni pin error_flag koji nam signalizira da li je došlo do greške ( '1' - nastala greška, '0' - nema greške ) i izlazni pin p koji nam signalizira da je došlo do dvostruke greške u kodu ( '1' - nastala greška, '0' - nema greške ) ENTITY hamdec IS PORT ( hamin : IN std_logic_vector(11 DOWNTO 0) ; dataout : OUT std_logic_vector(7 DOWNTO 0) ; error_pos : OUT std_logic_vector(3 DOWNTO 0) ; p: OUT std_logic; error_flag : OUT std_logic); END hamdec ; Student: Srđan Vujašević 11424
Rezultati simulacije - strana 1 Da bi smo testirali kako sistem radi doveli smo na ulaz kodera 8-bitnu sekvencu "00010000". Na grafiku vidimo da smo na izlazu dobili 12-bitnu sekvencu "000110000001" koja predstavlja kodiranu ulaznu reč. Student: Srđan Vujašević 11424
Rezultati simulacije - strana 2 Zatim smo na ulaz dekodera doveli ovu 12-bitnu sekvencu, ali tako što smo na mesto 5 bita umesto '0' stavili '1', Student: Srđan Vujašević 11424
Rezultati simulacije - strana 3 I na kraju kako bi pokazali šta se dešava kada se javlja dvostruka greška, osim modela greške na 5 bitu, isto smo uradili i sa šestim bitom, znači umesto '0' stavili '1' kako bi modelovali grešku pri prenosu Student: Srđan Vujašević 11424
Rezultati simulacije - strana 4 Kao još jedan primer, biće ilustrovan prenos sekvence podataka. Student: Srđan Vujašević 11424
Rezultati sinteze i implementacije-strana 1 Za sintezu opisanih kola iskorišćen je program Synplify Pro firme Synplicity. Nakon toga je izvršena implementacija na FPGA kolima firme XILINX uz pomoć njihovog programskog paketa XILINX ISE verzije 6.3 i prikazani su dobijeni rezultati. Student: Srđan Vujašević 11424
Rezultati sinteze i implementacije - strana 2 • Sinteza Hamingovog kodera Student: Srđan Vujašević 11424
Rezultati sinteze i implementacije- strana 3 • Sinteza Hamingovog dekodera Student: Srđan Vujašević 11424
Rezultati sinteze i implementacije - strana 4 • Implementacija Hamingovog kodera • Sintezu kodera vršili smo na FPGA čipovima serije SPARTAN2 pod oznakom xc2s15 vq100. • Design Summary • -------------- • Number of errors: 0 • Number of warnings: 0 • Logic Utilization: • Number of 4 input LUTs: 5 out of 384 1% • Logic Distribution: • Number of occupied Slices: 3 out of 192 1% • Number of Slices containing only related logic: 3 out of 3 100% • Number of Slices containing unrelated logic: 0 out of 3 0% • *See NOTES below for an explanation of the effects of unrelated logic • Total Number of 4 input LUTs: 5 out of 384 1% • Number of bonded IOBs: 20 out of 60 33% • Total equivalent gate count for design: 30 • Additional JTAG gate count for IOBs: 960 • Podaci vezani za vremenske karakteristike implementacije: • The AVERAGE CONNECTION DELAY for this design is: 1.095 • The MAXIMUM PIN DELAY IS: 1.953 • The AVERAGE CONNECTION DELAY on the 10 WORST NETS is: 1.496 • Što se tiče potrošnje samog kola ona je deklarisana na 9.29mW i pri temperaturi ambijenta od 25oC, temperatura kućišta je 25.3oC. Student: Srđan Vujašević 11424
Rezultati sinteze i implementacije - strana 5 • Implementacija Hamingovog kodera Student: Srđan Vujašević 11424
Rezultati sinteze i implementacije - strana 6 • Implementacija Hamingovog kodera Student: Srđan Vujašević 11424
Rezultati sinteze i implementacije - strana 7 • Implementacija Hamingovog kodera Student: Srđan Vujašević 11424
Rezultati sinteze i implementacije- strana 8 • Implementacija Hamingovog dekodera • Sintezu dekodera vršili smo na FPGA čipovima serije SPARTAN2 pod oznakom xc2s15 vq100. • Design Summary • -------------- • Number of errors: 0 • Number of warnings: 0 • Logic Utilization: • Number of 4 input LUTs: 27 out of 384 7% • Logic Distribution: • Number of occupied Slices: 14 out of 192 7% • Number of Slices containing only related logic: 14 out of 14 100% • Number of Slices containing unrelated logic: 0 out of 14 0% • *See NOTES below for an explanation of the effects of unrelated logic • Total Number of 4 input LUTs: 27 out of 384 7% • Number of bonded IOBs: 26 out of 60 43% • Total equivalent gate count for design: 162 • Additional JTAG gate count for IOBs: 1,248 • Peak Memory Usage: 54 MB • Podaci vezani za vremenske karakteristike implementacije: • The AVERAGE CONNECTION DELAY for this design is: 0.961 • The MAXIMUM PIN DELAY IS: 1.943 • The AVERAGE CONNECTION DELAY on the 10 WORST NETS is: 1.348 • Potrošnja je slična kao u prethodnom slučaju, deklarisana je na 10.49mW i pri temperaturi ambijenta od 25oC, temperatura kućišta je 25.4oC. Student: Srđan Vujašević 11424
Rezultati sinteze i implementacije - strana 9 • Implementacija Hamingovog kodera Student: Srđan Vujašević 11424
Rezultati sinteze i implementacije- strana 10 • Implementacija Hamingovog kodera Student: Srđan Vujašević 11424
Rezultati sinteze i implementacije - strana 11 • Implementacija Hamingovog kodera Student: Srđan Vujašević 11424
Laboratorijska vežba - strana 1 Proveriti ispravnost rada Hamingovog kodera. 1. Pokrenuti program Active-HDL čija se ikonica nalazi na Desktop-u; 2. Otvoriti dizajn Haming; 3. Otvoriti listing TestBench-a, hamenc_TB.vhd, koji se nalazi u folder-u TestBench (segment 1. na slici 1.); 4. Promeniti vrednosti ulaza datain koji je dat u dizajnu, umesto postojeće vrednosti (segment 2. na slici 1.). Izvršiti kompajliranje pritiskom na uokvirenu ikonicu (segment 3. na slici 1.); 5. Podesiti Top level entitet na hamenc_TB.vhd (segment 4. na slici 1.); Slika 1. Student: Srđan Vujašević 11424
Laboratorijska vežba - strana 2 6. Otvoriti NewWaveform (segment 5. na slici 2); 7. Dodati signale (segment 6. na slici 2); 8. Podesiti vreme simulacije na 100 ns ili više ako je potrebno (segment 7. na slici 2); 9. Pokrenuti simulaciju pritiskom na uokvirenu ikonicu (segment 8. na slici 2); 10. Po završetku simulacije može biti potrebno da se vremenski dijagram uveća ili umanji radi bolje preglednosti. Komande za uveličavanje i umanjivanje su uokvirene (segment 9. na slici 2); 11. Uporediti dobijeni vremenski dijagram sa ispravnim radom dizajna (vremenski dijagram na slici 2). Slika 2. Student: Srđan Vujašević 11424
Laboratorijska vežba - strana 3 Proveriti ispravnost rada Hamingovog dekodera. 1. Ponoviti sve korake za listing Testbench-a, hamdec_TB.vhd. Student: Srđan Vujašević 11424