Implementace Platformy Počítače Z80 Do Fpga
Total Page:16
File Type:pdf, Size:1020Kb
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF CONTROL AND INSTRUMENTATION IMPLEMENTACE PLATFORMY POČÍTAČE Z80 DO FPGA DIPLOMOVÁ PRÁCE MASTER'S THESIS AUTOR PRÁCE Bc. TOMÁŠ NOVOTNÝ AUTHOR BRNO 2012 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV AUTOMATIZACE A MĚŘICÍ TECHNIKY FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF CONTROL AND INSTRUMENTATION IMPLEMENTACE PLATFORMY POČÍTAČE Z80 DO FPGA Z80 FPGA CORE DIPLOMOVÁ PRÁCE MASTER'S THESIS AUTOR PRÁCE Bc. TOMÁŠ NOVOTNÝ AUTHOR VEDOUCÍ PRÁCE Ing. SOBĚSLAV VALACH SUPERVISOR BRNO 2012 VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta elektrotechniky a komunikačních technologií Ústav automatizace a měřicí techniky Diplomová práce magisterský navazující studijní obor Kybernetika, automatizace a měření Student: Bc. Tomáš Novotný ID: 72999 Ročník: 2 Akademický rok: 2011/2012 NÁZEV TÉMATU: Implementace platformy počítače Z80 do FPGA POKYNY PRO VYPRACOVÁNÍ: Seznamte se s architekturou procesoru Z80. Dále prostudujte možnosti implementace procesoru do hradlového pole typu FPGA s ohledem na velikost pole, využití zdrojů pole a popřípadě externích komponentů. Funkci procesoru ověřte v hradlovém poli implementací počítače ZX80 Sinclair v následujících bodech: -Spuštění programu z paměti ROM -Emulátor zobrazovací jednotky na rozhraní VGA -Emulátor klávesnice -Demonstrace složitější aplikace využívajících vzniklých prostředků DOPORUČENÁ LITERATURA: Termín zadání: 6.2.2012 Termín odevzdání: 21.5.2012 Vedoucí práce: Ing. Soběslav Valach Konzultanti diplomové práce: doc. Ing. Václav Jirsík, CSc. Předseda oborové rady UPOZORNĚNÍ: Autor diplomové práce nesmí při vytváření diplomové práce porušit autorská práva třetích osob, zejména nesmí zasahovat nedovoleným způsobem do cizích autorských práv osobnostních a musí si být plně vědom následků porušení ustanovení § 11 a následujících autorského zákona č. 121/2000 Sb., včetně možných trestněprávních důsledků vyplývajících z ustanovení části druhé, hlavy VI. díl 4 Trestního zákoníku č.40/2009 Sb. ABSTRAKT Tato diplomová práce se zabývá implementací jádra Z80 do pole FPGA. V práci jsou diskutovány možnosti jádra jako mikrokontroléru nebo počítače ZX Spectrum. Je zde popsán navrhnutý řídící systém, který umožňuje měnit obsah jeho paměti a registrů na základě komunikace s PC přes sériovou linku. Zároveň jsou popsány vývojové prostředky, především kompilátory a vývojové desky, které lze použít. KLÍČOVÁ SLOVA ZX Spectrum, T80, Z80, FPGA, CopyBlaze, UART ABSTRACT This master thesis deals with Z80 core implementation inside FPGA. In this thesis we discuss possible cabalities of the core as a microcontroller or as a ZX Spectrum. There is also described proposed control system, which can change contents of the memory and registers during communication with PC via serial line. There are also shown a describe of development tools, especially compilers and development boards, which we have used. KEYWORDS ZX Spectrum, T80, Z80, FPGA, CopyBlaze, UART NOVOTNÝ, Tomáš Implementace platformy počítače Z80 do FPGA: diplomová práce. Brno: Vysoké učení technické v Brně, Fakulta elektrotechniky a komunikačních techno- logií, Ústav automatizace a měřící techniky, 2012. 90 s. Vedoucí práce byl Ing. Soběslav Valach PROHLÁŠENÍ Prohlašuji, že svou diplomovou práci na téma „Implementace platformy počítače Z80 do FPGA“ jsem vypracoval samostatně pod vedením vedoucího diplomové práce a s použi- tím odborné literatury a dalších informačních zdrojů, které jsou všechny citovány v práci a uvedeny v seznamu literatury na konci práce. Jako autor uvedené diplomové práce dále prohlašuji, že v souvislosti s vytvořením této diplomové práce jsem neporušil autorská práva třetích osob, zejména jsem nezasáhl nedovoleným způsobem do cizích autorských práv osobnostních a jsem si plně vědom následků porušení ustanovení S 11 a následujících autorského zákona č. 121/2000 Sb., včetně možných trestněprávních důsledků vyplývajících z ustanovení S 152 trestního zá- kona č. 140/1961 Sb. Brno . ................................... (podpis autora) PODĚKOVÁNÍ Rád bych poděkoval vedoucímu práce panu Ing. Soběslavu Valachovi za odborné vedení, konzultace, trpělivost a podnětné návrhy k práci. Také bych rád poděkoval mé rodině za trpělivost a podporu během studia. Brno . ................................... (podpis autora) OBSAH 1 Úvod 13 Úvod 13 2 Z80 14 2.1 Vlastnosti jádra Z80 . 14 2.1.1 Technické detaily . 14 2.2 Chování procesoru . 17 2.2.1 Časování . 18 2.2.2 Načtení instrukce Instruction Fetch ............... 18 2.2.3 Čtení a zápis z a do paměti . 18 2.2.4 I/O operace . 19 2.3 Základní zapojení Z80 . 20 2.3.1 Minimální systém . 20 2.3.2 Připojení RAM . 20 2.4 Programové prostředky . 21 2.4.1 Assemblery . 21 2.4.2 Z88dk pro Z80 . 22 2.5 Z80 jako soft-core procesor . 23 3 Sinclair ZX Spectrum 25 3.1 Hardware . 25 3.1.1 Paměťový subsystém . 25 3.1.2 ULA . 26 3.1.3 I/O . 26 3.2 Software . 28 3.2.1 Sinclair BASIC . 28 3.2.2 Z88dk pro ZX Spectrum . 28 3.2.3 Příklad programu v ZX Spectru . 30 4 FPGA a algoritmus řešení 31 4.1 FPGA . 31 4.1.1 Digital Clock Manager[10] . 32 4.1.2 Block RAM[3] . 32 4.2 Návrh systému . 34 4.3 Formát Z80[15] . 34 4.3.1 Formát Z80 verze 1 . 35 4.3.2 Formát Z80 verze 2 . 36 5 Klon ZX Spectra 38 5.1 Připojení paměti a procesoru . 38 5.1.1 Rozdělení paměti . 38 5.1.2 Inference pamětí syntetizérem . 40 5.1.3 Simulace paměti . 41 5.2 Videosystém . 41 5.2.1 Úvod, makro . 41 5.2.2 Rozložení paměti[7] . 42 5.2.3 Obrazovka[8] . 42 5.2.4 Zobrazení . 43 5.2.5 Implementace VGA řadiče . 44 5.3 Generátor hodin . 45 5.3.1 Použití druhého DCM . 46 5.3.2 Timing constraint ......................... 47 5.4 Klávesnice . 48 5.4.1 Obslužná rutina . 48 5.4.2 PS/2 rozhraní[11] . 49 5.4.3 Implementace klávesnice . 50 6 Řídící systém 52 6.1 HW část . 52 6.1.1 CopyBlaze[17] . 53 6.1.2 Obsluha vstupu a výstupu CopyBlaze . 54 6.1.3 UART a baud rate generátor . 55 6.1.4 Programování paměti klonu z CopyBlaze . 56 6.1.5 Programování T80 . 58 6.2 SW část . 61 6.2.1 Základní interakce s uživatelem . 61 6.2.2 Mazání paměti a reset ZX Spectra . 65 6.2.3 Neformátované ukládání dat do paměti klonu . 65 6.2.4 Ukládání obrazu Z80 do paměti klonu . 66 6.2.5 Dekomprimační algoritmus . 68 6.2.6 Čtení dat z paměti klonu ve formátu Z80 . 70 7 Implementace do vývojové desky 72 7.1 XILINX ML405 a její konfigurace . 72 7.1.1 Vytvoření automaticky inicializované paměti . 72 7.1.2 Programování Platform Flash . 74 7.2 Ostatní zařízení . 76 7.2.1 Sériový port . 76 7.2.2 VGA převodník . 76 7.2.3 LED diody a spínače . 77 7.2.4 Externí zařízení . 78 7.3 Další možnosti systému . 78 7.3.1 Kompatibilita s ostatními SW emulátory . 78 7.3.2 Spuštění vlastních aplikací . 79 8 Závěr 80 Literatura 81 Seznam symbolů, veličin a zkratek 84 Seznam příloh 86 A Video a Attribute RAM ZX Spectra[7] 87 B LookUp tabulka s adresami kláves a jejich kódováním (bitové|1 z n)[11] 88 C Struktura projektu 89 D Obsah DVD 90 SEZNAM OBRÁZKŮ 2.1 Blokové schéma Z80 [1] . 14 2.2 Interface Z80[2] . 16 2.3 Příklad časování Z80 (během T3 a T4 dochází k obnovení náboje dyn. pamětí)[2] . 18 2.4 Operace načtení instrukce Z80[2] . 19 2.5 Časový diagram operace čtení a zápisu do paměti[2] . 19 2.6 Časový diagram operace čtení a zápisu na port[2] . 20 2.7 Příklad zapojení systému se Z80[2] . 21 2.8 Příklad připojení externích pamětí [2] . 21 2.9 Blokové schéma testovacího zapojení s T80 (v celé práci je v blokových diagramech naznačena míra obsahu cizího kódu zašeděním bloku – pozn. autora). 24 2.10 Ukázka simulace komunikace po sériové lince (signál txd – Hello World!) . 24 3.1 Blokové schéma ZX Spectra s pamětí RAM 48 KB[6] . 26 3.2 Připojení klávesnice k ZX Spectru[6] . 27 3.3 Příklad výstupu Sinclair BASICu . 29 3.4 Ukázka z programu gfx.c . 30 4.1 Obecné blokové schéma FPGA[3] . 31 4.2 Blokové schéma DCM[3] . 32 4.3 Blokové schéma Block RAM[3] . 33 4.4 Navržený systém . 35 5.1 Blokové schéma implementovaného klonu ZX Spectra . 38 5.2 Ukázka simulace kontroly paměti a jeho projevu na výstupu (červené proužky, kde G a B složky jsou nulové, R složka je aktivní). 41 5.3 Rozměry obrazovky ZX Spectra . 43 5.4 Detail simulace mezi horizontalními pulsy s popisem jednotlivých částí s pomocným signálem start_h_video_signal . 44 5.5 Ukázka signálů z procesu, který zobrazuje data na výstup. Zde je vykreslení spodního loga na ZX Spectru (je zobrazen jen MSB bit RGB signálu) . 45 5.6 Blokové schéma generování frekvence T80 . 47 5.7 Blokové schéma kaskády DCM s naznačenými buffery [29] . 48 5.8 Ukázka vystavení I/O adres klávesnice (oranžové markery) . 49 5.9 Přenos jednoho bytu Host to Device, a) hodiny řídí Host, b) hodiny řídí Device[11] . 50 5.10 Blokové schéma PS/2 rozhraní (zašedení je míra cizího kódu) . 50 6.1 Blokové schéma navrženého řídícího systému . 52 6.2 Blokové schéma vstupů a výstupů CopyBlaze . 54 6.3 Schéma zapojení UART s Baud Rate Generátorem . ..