PROJEKTY

Minimig Dodatkowe w FPGA materiały na CD

Nie każdy z Czytelników EP pamięta komputer domowy o nazwie Czym jest Minimig? Amiga. W swoich czasach był to hit, marzenie niemalże każdego Minimig to akronim od słów Mini Amiga. nastolatka. W artykule opisujemy, jak można zbudować kopię Amigi Jest to układ FPGA, za pomocą którego zasymu- lowano pracę układów, w które wyposażona korzystając ze współczesnych układów. Projekt ma niewątpliwie dużą była . Aktualnie jest to jedna płytka wartość edukacyjną. PCB o wymiarach tylko 12×12 cm. Minimig Rekomendacje: objęty jest licencją GNU. Autorem jest holen- polecamy wszystkim, którzy z sentymentem wspominają starą, dobrą derski inżynier elektryk Dennis van Werren. Pro- Amigę, a może nawet przechowują programy dla niej przeznaczone, jekt opisano na stronie http://home.hetnet.nl/ ~weeren001/. albo chcieliby jeszcze raz pograć w ulubioną grę z lat młodości? Pomysł, aby zrobić Minimig narodził się w styczniu 2005. W tym czasie zrealizowa- no inny projekt C64DTV. Wówczas na którejś z grup dyskusyjnych padł pomysł, aby zmieścić PODSTAWOWE PARAMETRY Amigę w joystick’u. Rozważano zastosowanie • Pojedyncza, dwustronna płytka drukowana o wymiarach (120×120) mm układów ASIC i FPGA. Wydawało się to możliwe • Napięcie zasilania 5 VDC, pobór prądu około 0,3 A • Emulacja komputera Amiga 500 do zrobienia, choć niełatwe. Pierwszym krokiem • Praca pod kontrolą systemu operacyjnego Amiga OS • Wykorzystuje procesor M68000 (M68SEC000FU2) i układ Spartan 3 (XC3S400-4PQ208C-ND) takiego przedsięwzięcia byłoby odtworzenie • Stacja dysków emulowana przy pomocy karty SD struktury chipsetów Amigi i zaimplementowa- • Możliwość podłączenia klawiatury i myszy PS2 nie ich w FPGA. Autor projektu poświęcił mnóstwo wysiłku na studiowanie dostępnej literatury na temat PROJEKTY POKREWNE wymienione artykuły są w całości dostępne na CD programowania FPGA oraz analizę dokumenta- Tytuł artykułu Nr EP/EdW Kit cji komputera Amiga. Nauczył się języka , Snake czyli gra z lat 70 EdW 12/2006 AVT-2806 kupił zestaw startowy z FPGA i rozpoczął pisa- Gra telewizyjna „SQUASH” EdW 11/2004 AVT-2739 nie programu. Zajęło mu to blisko rok. Pierw- Wolfenstein 3D na STR911 EP 1/2008 AVT-5122 szą grą, którą uruchomił były popularne kiedyś Wideo gra „Piłkarzyki” EP 12/2008 AVT-5162 Lemmingi.

30 ELEKTRONIKA PRAKTYCZNA 2/2009 Minimig – Amiga w FPGA

Rys. 1. Schemat ideowy MiniMig V1.1

ELEKTRONIKA PRAKTYCZNA 2/2009 31 PROJEKTY

Rys. 1. c.d.

32 ELEKTRONIKA PRAKTYCZNA 2/2009 Minimig – Amiga w FPGA

Prototyp Minimig został zbudowany na sprzedanych Amig wywindowała producenta Overscan trzech płytkach podłączonych do zestawu star- na pierwsze miejsce wśród wytwórców kompu- Na początku produkcji komputery domowe były najczęściej podłączane do telewizorów, które miały towego FPGA Digilent Spartan-3 z zewnętrznym terów domowych i zapewniła firmie ponad 80 duże zniekształcenia na brzegach obrazu. Aby omi- procesorem MC68000, zmodyfikowanym ukła- procentowy udział w rynku. Konstruktorzy Amigi nąć ten problem, obraz uzyskiwany z komputera otoczony był ramką. Ramka mogła zmieniać kolory, dem wizyjnym z wyjściem VGA i emulatorem (początkowo pracujący we własnej firmie Amiga ale nie można tam było wyświetlać ani grafiki, ani oryginalnej stacji dysków wykonanym z uży- Computers) postanowili zbudować – jak to sami tekstu, choć w przypadku C64 programiści ominęli ciem mikrokontrolera PIC. Później opracowano określili – „najbardziej zabójcze pudło do gier to ograniczenie. Takie komputery nie nadawały się do obróbki obrazu, ponieważ okno robocze nie nową wersję, w której wszystkie komponenty elektronicznych”. Jednak (dziś można powiedzieć obejmowało całego wyświetlanego obszaru. Amiga znajdują się na jednej płytce PCB. – na szczęście) pojawiła się pewna różnica zdań była pozbawiona tej wady. Umożliwiała wyłączenie ramek i wyświetlenie obrazu na całym ekranie. i jeden z nich zaczął pracować wraz z zespołem Skrót historii Amigi techników nad nowym modelem uniwersalnego Sukces komputera Amiga na światowym komputera. Przewidywał, że moda na gry szyb- nego, rychło ogłaszał bankructwo. W tej sytuacji rynku da się porównać jedynie z sukcesem słyn- ko przeminie i ludzie będą szukać czegoś wię- prawdziwy i wszechstronny komputer był jedy- nego Commodore C64. W roku 1987 liczba cej. Prace były prowadzone w tajemnicy przed ną szansą dla firmy. Premiera modelu nastąpiła pozostałymi wspólnikami i nie w styczniu 1984, podczas targów Consumer wiadomo czym by się to za- Electronics Show przy drzwiach zamkniętych. kończyło, gdyby nie gwałtowne Komputer pojawił się w sprzedaży już la- załamanie się rynku gier telewi- tem 1984 roku jako produkt firmy Commodore. zyjnych. Zgodnie z przewidy- Był on seryjnie wyposażony w 512 kB pamięci, waniami, moda prawie z dnia którą łatwo można było rozbudowywać i sta- na dzień przeminęła, i kto nie cję dysków 3,5”. Dyskietki miały pojemność zdążył się przerzucić na coś in- 880 kB (w konkurencyjnym PC tylko 720 kB).

Rys. 1. c.d.

ELEKTRONIKA PRAKTYCZNA 2/2009 33 PROJEKTY

wszystkie pisane dla niego aplikacje są 32-bito- we. M68000 wymienia dane z otoczeniem uży- wając 16-bitowej magistrali danych. Jak wspomniano wcześniej, komputer wy- posażony był w szereg procesorów pomocni- czych. Ciekawy był również podział pamięci. Otóż Amigę wyposażono w 3 rodzaje pamięci, podzielone na bloki funkcjonalne: – ChipRAM – zwana też pamięcią audio/video. Może być używana przez wszystkie proceso- ry (graficzny, muzyczny i główny), – FastRAM – do tej pamięci dostęp ma jedynie procesor główny, toteż jest ona najszybsza, 3 typy pamięci używanej w Amidze mianowicie: – SlowRAM – widziana przez system jako ROM kickstartu, CHIP RAM i FAST RAM. Ponie- FastRAM, w rzeczywistości działa jak Chip- waż Minimig nie ma ROM-u Amigi (), Jej dodatkowym atutem był multi-tasking, który -RAM. Łączyła wady obu poprzednich ty- jego kopia jest ładowana przy starcie. Procesor pozwala na jednoczesną realizację kilku zadań. pów była więc najgorsza. Ten rodzaj pamięci PIC emuluje napęd dyskowy, z którego ładowa- Była to rzecz niespotykana w komputerach do- był dostępny tylko w pierwszych modelach ny jest obraz ROM. Takie rozwiązanie było uży- mowych. Amigi. wane w pierwszych Amigach, później kickstart umieszczono w pamięci stałej. Konfiguracja sprzętowa Minimig Po załadowaniu obrazu pamięci ROM do Amigi 500, 1000 i 2000 miały procesor Mo- Minimig rev. 1.0 jest zbudowany na poje- RAM, FPGA chroni ten obszar przed zapisem, toroli MC68000 taktowany zegarem 7,14 MHz dynczej płytce PCB o wymiarach 12×12 cm, dzięki czemu zachowuje się on jak pamięć stała. i wyspecjalizowane układy (Denise, Agnus i Pau- której schemat pokazano na rys. 1. Zawiera ona Pozostała część RAM-u (1,5 MB) jest podzielona la) odpowiedzialne za obraz, dźwięk, operacje wszystkie komponenty oryginalnej Amigi poza pomiędzy CHIP i FAST RAM. na pamięci oraz obsługę dysku. Układ graficz- stacją dysków, dyskiem HD i CD-ROM. Zamiast ny o nazwie OCS (Original Chipset) umożliwiał tego zastosowano kartę MMC. Minimig składa Procesor PIC Amidze uzyskanie maksymalnej rozdzielczości się z 4 głównych elementów: Układ PIC pełni dwie funkcje. Pierwszą 640×512 pikseli (+tzw. overscan) w 16 kolo- – układu FPGA firmy typu SPARTAN z nich jest załadowanie RAM-u układu Spar- rach, lub 320×512 pikseli maksymalnie w 32 XC3S400, tan-3. Układy te wymagają zewnętrznego kon- lub 64 kolorach (tryb Extra Half Bright, w któ- – procesora M68SEC000, figuratora, w Minimigu funkcję taką pełni układ rym „drugie” 32 kolory były o połowę ciemniej- – pamięci RAM, PIC. Drugim zadaniem układu jest załadowanie szymi odcieniami). Istniał także specjalny tryb – kontrolera MMC zbudowanego z użyciem kickstartu do pamięci RAM Minimiga. Dzieje się HAM(6), który umożliwiał uzyskanie w niskich mikrokontrolera PIC. to tylko raz po włączeniu zasilania. rozdzielczościach (tryb low, 320 pikseli w po- Sercem Minimiga jest FPGA. Zużyto 400 ziomie) aż 4096 kolorów, co w tamtych czasach tysięcy bramek z układu Spartan-3 firmy Xilinx. Funkcje układu FPGA było wielkością szokującą. Wszystkie główne komponenty (RAM i 68000) Działania układu FPGA są opisane w języku W czasach, gdy komputery PC były wypo- podłączone są bezpośrednio do FPGA. FPGA Verilog. Moduły nazwano identycznie, jak emu- sażane w różne „wynalazki” typu Covox, czy emuluje chipy specjalizowane Denise, Agnus, lowane przez nie funkcje: układ Denise nazywa AdLib, Amiga dzięki przetwornikom C/A dyspo- Paula i Gary, jak również obie kości CIA (układ się denise, Agnus – agnus, itd. Zachowano rów- nowała czterokanałowym generatorem dźwięku 8520). Oprócz tego, FPGA emuluje również kla- nież oryginalne nazwy sygnałów (DMSA, INT2, stereofonicznego. Powstała również wersja de- wiaturę i mysz Amigi, wykorzystując do tego OVL itd). Oprócz standardowych modułów, sktop Amigi, która była wyposażona w złącza celu typową klawiaturę i mysz PC pracujące znajdują się dwa niewystępujące w oryginalnej Zorro, służące do rozbudowy komputera np. w standardzie PS2. Oryginalna Amiga nie miała Amidze. Moduły te łączą FPGA z pamięcią RAM o karty graficzne. Były one funkcjonalnie po- złącz PS2, zaimplementowano je po to, aby uła- i procesorem 68000. Cały projekt zrealizowa- dobne do ISA, z tym że obsługiwały autokonfi- twić podłączenie współczesnych urządzeń. no za pomocą darmowego narzędzia Webpack gurację (pełne PnP). Minimig używa spe- cjalnej wersji procesora Budowa Amigi M68000: MC68SEC000. Jest W Amidze oprócz procesora głównego to układ zasilany napięciem wbudowano szereg procesorów pomocniczych. 3,3 V. Dzięki temu nie ma Procesor M68000 używany w Amidze, ma we- konieczności dopasowywa- wnętrzną architekturę 32-bitową i dlatego nia poziomów napięć po- między standardowym pro- cesorem M68000 zasilanym z napięcia 5 V a układem FPGA zasilanym z 3,3 V (Spartan-3). Minimig rev. 1.0 zawiera 2 MB pamięci RAM o czasie dostępu 70 ns. Zastosowa- no pamięć statyczną, 16- bitową. Jest ona podzielona na 16 banków po 2882524 bajtów każdy. RAM emuluje

34 ELEKTRONIKA PRAKTYCZNA 2/2009 Minimig – Amiga w FPGA

V9.1i pobranego ze strony Xilinx. Prawdziwa Przetwornik C/A generujący sygnał wizji niej obraz Kickstart. Po realizacji tego zadania Amiga miała dwie osobne szyny dla pamięci zrealizowano na rezystorach. Ma on rozdziel- program jest usuwany, a na ekranie monitora CHIP RAM i FAST RAM, natomiast Minimig ma czość 4 bitów, czyli tyle co oryginalny w Amidze pojawia się obraz taki, jaki można było oglądać jedną, synchroniczną magistralę do RAM-u. Jest 500. w oryginalnej Amidze. ona taktowana zegarem o częstotliwości rów- Wszystkie sygnały zegarowe uzyskiwane nej podwojonej częstotliwości podnośnej koloru są z pojedynczego kwarcu o częstotliwości Kickstart PAL (2×7,09379 MHz). Ten sygnał jest głównym 4,433619 MHz. Do ich generowania użyto mo- Aby zbudować Minimiga potrzebny jest zegarem Minimiga (oznaczenie clk w kodzie duł DCM układu FPGA. Magistrala wewnętrzna obraz ROM-u oryginalnej Amigi. Niestety jest źródłowym). Częstotliwość sygnału zegarowego Minimiga jest użyta jako magistrala CHIP RAM on chroniony prawami autorskimi. Aby legalnie znacząco odbiega od używanego w Amidze. i FAST RAM. Ponadto są do niej podłączone zdobyć obraz ROM-u należy przeczytać doku- Aby wyrównać czas dostępu do CIA, moduł gary również wszystkie inne układy peryferyjne. mentację UAE (emulator Amigi) http://www. zmodyfikowano tak, aby spowalniał procesor Minimig dzieli czas dostępu do magistrali winuae.net/. Minimiga zbudowano tak, że nie podczas dostępu CPU do CIA. Dzięki temu uzy- na cztery szczeliny czasowe, rozdysponowane są potrzebne żadne narzędzia do programo- skano w przybliżeniu oryginalną częstotliwość pomiędzy poszczególne układy: wania FPGA (np. programator JTAG). Układ sygnału. Clk jest też używany jako zegar punk- – szczelina 0: FAST RAM (M68000), FPGA jest skonfigurowany w taki sposób, aby tów obrazu w Minimig. Standardowy układ – szczelina 1: CHIP RAM (disc, bitplanes, cop- uruchomienie odbywało się za pośrednictwem Amigi był przeznaczony do generowania obrazu per, blitter i M68000), układu PIC, i dlatego wystarczy zaprogramo- w standardzie PAL, natomiast w Minimig układ – szczelina 2: FAST RAM i BLITTER (niestan- wać PIC18LF252. Układ można zaprogramować generuje obraz dla monitora VGA. Z tego po- dardowy, daje CPU więcej cykli dostępu do bez wylutowywania z płytki, za pośrednictwem wodu okazało się konieczne podwojenie często- CHIP RAM, dla naprawy problemów z kom- portu szeregowego (trzeba przestawić zworkę tliwości synchronizacji linii. Uzyskano to przez patybilnością), na płycie). reakcję zarówno na narastające, jak i na opada- – szczelina 3: CHIP RAM (disc, bitplanes, spri- Sławomir Skrzyński, EP jące zbocze sygnału clk. tes, audio i 68000). [email protected] Oprócz clk, generowane są też dwa inne zegary: qclk i vgaclk. Qclk jest sygnałem przesu- Sekwencja startowa Literatura: niętym o 90° w stosunku do clk. Synchronizuje Pierwszym krokiem jest konfiguracja FPGA. http://home.hetnet.nl/~weeren001 on dostęp do pamięci RAM w taki sposób, że Jak napisano wcześniej, robi to układ PIC. Kolej- http://jw-amigowiec.w.interia.pl obsługa pamięci przez układy specjalizowane nym krokiem jest załadowanie obrazu Kickstart. http://www.e-service.net.pl nie koliduje z dostępem do pamięci przez CPU. Jest to wykonywane w następujący sposób: http://www.pcworld.pl Vgaclk steruje wyświetlaniem pikseli na monito- po konfiguracji FPGA, w pamięci pod adresem Bajtek 5-6/90 – Klan Commodore – Amiga is the rze VGA. 0 umieszczany jest mały program ładujący do Future, autor: Janusz Płoński

R E K L A M A

ELEKTRONIKA PRAKTYCZNA 2/2009 35