BI-JPO (Jednotky počítače)
Cvičení © Ing. Pavel Kubalík, Ph.D., 2010 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze
Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti
1. cvičení — Číselné soustavy, operace a reprezentace záporných čísel Seminární cvičení – opakování 1. Převést číslo 540,5 do osmičkové soustavy - opakovaným dělením a násobením osmi. 2. Převést číslo 540,5 do šestnáctkové soustavy. 3. Převést osmičkové číslo 1034,4 do dvojkové a odtud do šestnáctkové soustavy. 4. Dvojkové číslo 10 0001 1100,1 převést do desítkové soustavy - použitím Hornerova schématu. 5. Číslo 0,1 převést do dvojkové soustavy. Uvědomit si, že výsledek (tj. 0,0001100110011…) nelze zapsat přesně (na konečný počet míst) a že se tedy převodem může do výpočtu zavléci chyba. 6. Sčítání, odčítání, násobení a dělení ve dvojkové a šestnáctkové soustavě: •
Dvojková soustava: 101 . 110 = ? zkontrolovat převodem do desítkové soustavy 1101 1110 – 0111 = ?
•
Šestnáctková soustava:
ABCD + 10FF = ? 12A0 + BC8F = ? 7. Pokusit se vynásobit v osmičkové soustavě 124 * 14. Ověřit správnost převodem činitelů a součinu do desítkové soustavy. 8. Řádová mřížka – zobrazení čísel s ohledem na velikost prostoru pro toto zobrazení (počet bitů), další algoritmy s ohledem na toto omezení; např. ve dvojkové soustavě 10010111 v desítkové soustavě 5831 9. Procvičit sčítání v doplňkovém kódu pro všechny kombinace znamének sčítanců a pro případy, kdy nedojde k přeplnění, i pro případy, kdy k přeplnění dojde (operandy mají stejné znaménko, ale výsledek má opačné znaménko). Uvědomit si při tom jaký bude rozsah zobrazitelných čísel. 10. Procvičit odčítání v doplňkovém kódu převodem odčítance na opačné číslo (negace všech bitů a následné sečtením s „horkou jedničkou“ nebo postupem „opisuji od konce všechny nuly až narazím na jedničku, tu opíšu a všechny další bity neguji“. 11. Práce s čísli v přímém kódu - znaménko zvlášť, pak práce s absolutní hodnotou. Algoritmus různý podle znamének operandů – detekce přetečení různá pro sčítání i odčítání, možná úprava výsledku při záporném výsledku u odčítání. 12. Aritmetické posuvy – musí odpovídat násobení a dělení, detekce přetečení a ztráty přesnosti bez HW realizace, jen kdy výsledek odpovídá nebo neodpovídá násobeni nebo dělení.
1 / 17
13. Jsou dány dva operandy v dané řádové mřížce – zde 8 bitové, v šestnáctkové soustavě. Uvažujte následující případy: a) jde o nezáporná čísla (bez znaménka) b) jde o čísla v doplňkovém kódu c) jde o čísla v přímém kódu Pro všechny tři případy stanovte hodnotu součtu (výsledek zapište v šestnáctkové soustavě s příslušným znaménkem) a určete zda došlo k přeplnění. Dále určete znaménka obou operandů a výsledku. Zadané operandy: 7E, E9.
2 / 17
2. cvičení — Instrukce a strojový kód procesoru DOPv3 a)
b)
Seznamte se s instrukční sadou výukového procesoru DOP V3 o
Prostudujte jednotlivé skupiny instrukcí
o
Pokuste se určit význam jednotlivých instrukcí
Napište program v jazyce symbolických adres procesoru DOP
Příklad 1: long a; long b; a+=b; Příklad 2: long a; signed char b; a+=b; Příklad 3: signed char a,b; a=b>>4;
3 / 17
3. cvičení - Sčítačky, odčítačky, obvody pro posuv 1) Úplná 4-bitová sčítačka a její vnitřní zapojení
Nakreslete blok úplné 1-bitové sčítačky
Nakreslete vnitřní zapojení úplné 1-bitové sčítačky z půlsčítaček
Napište výrazy pro součet a přenos
Nakreslete úplnou 4-bitovou sčítačku z půlsčítaček
2) Úplná 4-bitová sčítačka a její modifikace
Úplnou 4-bitovou sčítačku překreslete na inkrementaci 4-bitového čísla o 1 a zjednodušte
Úplnou 4-bitovou sčítačku překreslete na dekrementaci 4-bitového čísla o 1 a zjednodušte
3) Datová cesta a její základní bloky
Navrhněte blok 4-bitového registru s povolením výstupu na sběrnici a to včetně vnitřního zapojení
Navrhněte vnitřní zapojení posuvu vlevo a vpravo pro 4-bitová čísla (logický posuv, cyklický posuv, aritmeticky posuv pro přímý a doplňkový kód)
Navrhněte vnitřní zapojení 4-bitového multiplexoru, zapojení popište výrazem a schématem
4) Navrhněte datovou cestu s registrem a to tak, aby bylo možné provádět tyto operace s registrem:
Zápis do registru (WE)
Vystavení hodnoty na sběrnici (OE)
Pamatování aktuální hodnoty
5) Navrhněte datovou cestu s registrem a to tak, aby bylo možné provádět tyto operace s registrem:
Zápis do registru (WE)
Vystavení hodnoty na sběrnici (OE)
Pamatování aktuální hodnoty
Inkrementaci obsahu registru (INC)
4 / 17
Domácí úkol: 6) Navrhněte datovou cestu s registrem a to tak, aby bylo možné provádět tyto operace s registrem:
Zápis do registru (WE)
Vystavení hodnoty na sběrnici (OE)
Inkrementace nebo dekrementace obsahu registru (INC/DEC)
Logicky posuv vlevo nebo vpravo (LSL/LSR)
5 / 17
4. cvičení — Datová část procesoru DOPv3 1) Seznamte se s datovou částí procesoru DOP •
Prostudujte datovou část procesoru DOP .
•
Nakreslete blokové schéma částí, které mají vliv na nastavení vstupního signálu CIN
2) Příklady k řešení na cvičení Napište seznam řídicích signálů, které musíte použít pro provedení následujících instrukcí. Seznam řídicích signálů rozdělte do skupin tak, aby bylo možné využít co nejméně taktů. Signály, které jsou nutné nastavit ve stejném taktu, vložte do stejné skupiny. Pokud čekáte na signál WAIT, zařaďte ho do příslušné skupiny řídicích signálů. •
LD W,[S+]
;[S]→W, S+
•
ST W
;W→[D]
Domácí úkol Napište seznam řídicích signálů, které musíte použít pro provedení následujících instrukcí. Seznam řídicích signálů rozdělte do skupin tak, aby bylo možné využít co nejméně taktů. Signály, které jsou nutné nastavit ve stejném taktu, vložte do stejné skupiny. Pokud čekáte na signál WAIT, zařaďte ho do příslušné skupiny řídicích signálů. •
SUB [D]
•
ADDS [S+]
;W=W+[S], S+
6 / 17
5. cvičení — Řadič, základní cyklus procesoru DOPv3 1) Řídicí část - horizontální mikroprogramovaný řadič •
Vymyslete jednoduchý mikroprogramovaný řadič
•
Velikost pamětí bude 256×16
•
Řadič bude umožňovat podmíněné i nepodmíněné skoky
2) Řídicí část - procesor DOP •
Seznamte se s realizací řadiče v procesoru DOP
•
Seznamte se s tabulkou podmínek
3) Příklady •
Najděte operační znak k instrukci LD W,[S]
•
Najděte operační znak k instrukci ADDB S
•
Najděte operační znak k instrukci PUSH W
4) Vývojový diagram DOPu •
Seznamte se se syntaxí mikroprogramovaného jazyka a vývojovým diagramem procesoru DOP
7 / 17
6. cvičení - Test 1
Test bude zaměřen především na látku odpřednášenou a bude zohledněna i náplň
předchozích cvičení. Test bude obsahovat: 2 příklady po 6 bodech, 1 otázku za 4 body a 1 otázku za 2 body.
První příklad bude orientován na návrh typických obvodů datové části procesorů s chováním určeným řídicími vstupy, zejména na návrh registrů na bázi synchronních klopných obvodů typu D, např. na návrh registru s jedním či dvěma datovými vstupy, s možností posuvu (nebo třeba dvou různých posuvů) anebo s možností inkrementace či dekrementace. Student by měl být schopen rozkreslit schéma až na úroveň jednotlivých logických členů (hradel a klopných obvodů). Složitost konkrétního zadání bude úměrná času určenému pro test.
Druhý příklad bude orientován na návrh sčítaček / odčítaček, a to pro čísla bez znaménka nebo/a pro čísla v doplňkovém kódu; může být požadována predikce přenosů. Sčítačka či odčítačka může být modifikována třeba tak, že na jejím výstupu bude (v závislosti na řídicích vstupech) číslo přiváděné na vstup inkrementované/dekrementované o 0, 1, 2 nebo 3. I u tohoto příkladu by měl být student schopen rozkreslit schéma až na úroveň jednotlivých logických členů. Složitost konkrétního zadání bude opět úměrná času určenému pro test.
Otázky budou vybrány z témat probíraných na příslušných cvičeních a z těchto témat: o
datová a řídicí část procesoru
o
zobrazitelná čísla
o
úplná a poloviční sčítačka
o
sčítačka s predikcí přenosů
o
sčítání čísel bez znaménka a přeplnění
o
odčítání a pojem výpůjčka
o
odčítání převedené na sčítání a vyhodnocení výpůjčky
o
doplňkový kód — definice a rozsah
o
sčítání a odčítání v doplňkovém kódu a detekce přeplnění
o
aritmetický posuv v doplňkovém kódu
o
prodlužování a zkracování řádové mřížky v doplňkovém kódu
o
základní (instrukční) cyklus
o
realizace základních operací (přesuny, skoky, operace se zásobníkem, …)
o
typy přerušení
o
obsluha přerušení
o
typy řadičů
o
mikroprogramovaný řadič
o
řadič s řídicími řetězci
o
řadič na bázi čítače
8 / 17
7. cvičení - Struktura a vytváření mikroprogramů procesoru DOPv3 Programovatelný logický posuv vlevo Zadání: Posuňte operand o velikosti dvojitého slova, jehož adresa je v registru S, vlevo o počet pozic, který je dán 8 bitovým přímým operandem. Výsledek uložte do paměti na adresu určenou v registru D. Nastavte příznaky. Pokyny pro řešení: • Návrh rozdělte na několik části • Části jsou na sobě nezávislé: načtení přímého operandu, načtení dat z paměti, vykonání instrukce, uložení dat do paměti
9 / 17
8. cvičení - Ladění mikroprogramů procesoru DOPv3
10 / 17
9. cvičení — Návrh obvodového a mikroprogramovaného řadiče Zadání: Obvod pro čtení dat z paměti
Navrhněte datovou a řídicí část obvodu, který bude umožňovat číst požadovaná data z paměti. Základními stavebními prvky datové části budou: •
paměť (vstupy: MRD, MWR, ADR; výstupy: WAIT, DATA)
•
16b registr RD pro data ( OED, WED )
•
8b registr RA pro adresu ( OEA, WEA )
•
8x přepínač pro nastavení adresy ( SW8 )
•
1x tlačítko pro spuštění operace čtení z paměti ( TL1 )
K zápisu do registru adresy dojde při stisknutí tlačítka. K samotné operací čtení z paměti dojde po uvolnění tlačítka. Data se do registru dat zapíší po skončení signálu WAIT. Počátečním stavem je stav S1, do kterého řadič přejde po příchodu signálu RESET. Po skončení operace čtení řadič čeká ve stavu S1 na další stisknuté tlačítko TL1. Předpokládejte, že paměť je připojena k registrům „přímo“ (bez použití sběrnice). Dále předpokládejte, že paměť nevyžaduje, aby data ani adresa měla předstih před řídicími signály (pro zápis, čtení apod.) – jsou přípustné i malé tolerance. Obdobně to platí i pro přesah. Cyklus paměti není znám; platí však, že operace je dokončena, jakmile přestane být aktivní signál WAIT. Řídicí část navrhněte nejprve jako klasický (neboli obvodový) řadič a poté s pomocí mikroprogramovaného řadiče.
Postup: 1)
Nakreslete datovou část.
2)
S pomocí MOORE automatu nakreslete řídicí část.
3)
Nakreslete vývojový diagram řídicí části.
4)
Nakreslete obvodový řadič složeny z bloků: hranový klopný obvod typu D, OR, AND, NOT a jejich kombinace.
5)
Nakreslete blokové schéma mikroprogramovaného řadiče, určete počty vodičů a zvolte podmínky skoků.
6)
Vyplňte obsah paměti mikroprogramovaného řadiče.
11 / 17
10. cvičení — Bezpečnostní kódy. Příklad 1. Navrhněte kód a obvod pro detekci 1 chyby. Počet informačních vodičů je roven 4.
Příklad 2. Navrhněte kód a obvod pro opravu 1 chyby. Počet informačních vodičů je roven 4.
Příklad 3. Navrhněte kód a obvod pro opravu 1 chyby s pomocí Hammingova kódu. Počet informačních vodičů je roven 4.
Domácí úkol Navrhněte kód a obvod pro detekci/opravu 1 chyby s pomocí těchto kódů: a)
detekce 1 chyby
b)
oprava 1 chyby bez využití znalosti Hammingova kódu
c)
oprava 1 chyby s využitím znalosti Hammingova kódu (15,11)
Počet informačních vodičů je roven 6.
12 / 17
11. cvičení — Test 2
Test bude zaměřen především na látku odpřednášenou a bude zohledněna i náplň předchozích cvičení. Test bude obsahovat: 2 příklady po 6 bodech, 1 otázku za 4 body a 1 otázku za 2 body.
Jeden příklad bude orientován na návrh řadiče. Složitost konkrétního zadání bude
úměrná času určenému pro test.
Druhý příklad bude orientován na návrh paměti (zvětšení adresového prostoru, zvýšení délky slova apod.) nebo na bezpečnostní kódy. Složitost konkrétního zadání bude opět úměrná času určenému pro test.
Otázky budou vybrány z témat probíraných na příslušných cvičeních a z těchto témat: o
násobení celých čísel bez znaménka
o
násobení celých čísel v doplňkovém kódu
o
dělení bez návratu přes nulu
o
dělení čísel menších než 1
o
dělení celých čísel
o
pohyblivá řádová čárka – definice, základní operace, přeplnění, nenaplnění, normalizace, princip skryté jedničky
o
přímý kód – definice, sčítání, odčítání, násobení a dělení
o
aditivní kód – definice, sčítání a odčítání
o
barrel shifter
o
základní princip pamětí SRAM a DRAM
o
vytváření pamětí s větší kapacitou a s větší délkou slova
o
n-bránová paměť
o
detekční a samoopravné kódy; lineární a cyklické kódy
o
kódová vzdálenost a detekční a korekční vlastnosti kódů
o
použití generovací matice — kódování
o
kontrolní matice, syndrom, detekce chyb a oprava jedné chyby
o
jednoduché lineární kódy
o
Hammingův kód
13 / 17
12. cvičení — Předvedení funkčnosti mikroprogramu
14 / 17
13. cvičení — Komplexní návrh datové a řídicí části v FPGA Navrhněte datovou a řídicí část 8-bitové sčítačky odčítačky v doplňkovém kódu s detekcí přeplnění. Navrženou část realizujte s pomocí obvodu FPGA umístěného na desce Spartan – 3 Starter Board.
Sčítačka odčítačka bude fungovat takto: •
Při prvním stisku tlačítka 0 dojde k zápisu hodnoty nastavené na přepínačích do registru REG1.
•
Při druhém stisku tlačítka 0 dojde k zápisu hodnoty nastavené na přepínačích do registru REG2.
•
Následně dojde při stisku tlačítka 1 k sečtení hodnot nebo při stisknutí tlačítka 2 k odečtení hodnot.
•
Zobrazí se výsledek.
•
Kdykoliv při stisku tlačítka 3 dojde k resetu řídicí části.
Datovou a řídicí část můžete popsat schématem nebo s pomocí VHDL jazyka. K realizaci podle schématu můžete použít všechny bloky v editoru ISE, popř. knihovnu bloků vytvořenou pro realizaci této úlohy. (Využití této knihovny bloků se doporučuje!) Při realizaci vyžijte prázdny vzorový projekt. Vaše modifikace provádějte pouze do souboru my_design.sch nebo my_design.vhd. Komponenty, které nebudou součástí knihovny, budou dodány na cvičení.
15 / 17
14. cvičení — Zápočet
16 / 17