Czy istnieje mikrokontroler z 16 MB pamięci RAM?
Tak. Jednak jedyny, o którym wiem, należy do rodziny Renesas SuperH i nie zawiera pamięci ROM - więc musisz mieć zewnętrzną pamięć flash, ale ma 16 MB wbudowanej pamięci SRAM.
Chcę napisać emulator dla Sega Megadrive (Sega Genesis), który działa na AVR.
W rodzinie Atmel AVR nie ma 16MB mikrokontrolerów SRAM. Lub gdziekolwiek w linii produktów Atmel.
Jednak kilka urządzeń z linii Atmel AVR posiada interfejs zewnętrznej magistrali, który pozwoli na podłączenie dodatkowej pamięci. W szczególności ATxmega128A1U może obsługiwać do 16 MB zewnętrznej pamięci SRAM.
Szukałem więc mikrokontrolera, który ma podobne właściwości do Motoroli 68k dostarczanej z MegaDrive.
...
Jestem pewien, że nowoczesny SRAM nie jest prawie taki sam, jak to, co miał 68k, ale czy mogę dostać mikro AVR, pasuje do mocy 68k, czy źle patrzę na ten problem? Czy muszę zmienić projekt, aby pomieścić nowoczesne mikroukłady?
Nie wiem, czy jakieś zewnętrzne źródło pamięci będzie wystarczająco szybkie.
Ach, oto problem.
Procesor 68k (tj. Motorola 68000) NIE jest mikrokontrolerem i NIE ma 16 MB wewnętrznej pamięci SRAM.
Podczas gdy procesor ma wewnętrznie 32 bity, ze względu na ograniczenia pinów może adresować tylko do 16 MB pamięci zewnętrznej, w tym flash, sram i dowolnych urządzeń mapowanych w pamięci.
Nie potrzebujesz mikrokontrolera z 16 MB wewnętrznej pamięci SRAM do emulacji procesor 68k.
Czy istnieje 8-bitowy mikrokontroler Atmel AVR, który może emulować procesor Motorolla 68000?
Myślę, że tak. ATxmega128A1U ma zewnętrzną magistralę pamięci tak dużą jak magistrala procesora 68k i ma dużo pamięci flash i RAM, które pozwoliłyby mu na uruchomienie wersji mikrokodu procesora 68k.
Może działać z częstotliwością do 32 MHz, a wiele instrukcji zajmuje jeden cykl, ale nawet najgorszy przypadek zajmuje 5 cykli w pamięci wewnętrznej. Zewnętrzny interfejs jest wolniejszy, ale jeśli wybierzesz szybką pamięć, nadal będzie o wiele szybszy niż 68k.
Procesor 68k nie tylko działa 4 razy wolniej, ale także zajmuje co najmniej 4 razy najszybsze operacje, jakie posiada. cykle zegara, a wiele z nich zajmuje 2-4 razy dłużej, szczególnie dostęp do pamięci.
Więc nawet przy wolnej (jak na dzisiejsze standardy) pamięci SRAM (powiedzmy, część 70nS 8 MB za mniej niż 10 $) możesz użyć 0 stanów oczekiwania na procesorze 32 MHz i biegnij w kółko wokół 68k z częstotliwością 7 MHz. Na przykład prosta instrukcja ruchu na 68k, która zajęłaby 4 cykle przy 7,61 MHz, zajmuje 525 nS. Podobna prosta instrukcja ruchu na ATxmega128A1U pracującym z częstotliwością 32 MHz zajmuje 31 nS. Więc AVR mógł wykonać 16 ruchów, zanim 68K wykonał jeden. 68k zajmuje 50 cykli dla niektórych typów przerwań, podczas gdy AVR skacze do przerwania w 3 cyklach - tak więc AVR może obsłużyć kilka przerwań w czasie potrzebnym 68k, aby po prostu wskoczyć do jednego.
Spodziewam się, że możesz uruchomić cykl z dokładnym wysiłkiem, jeśli zaakceptujesz jitter, chociaż możesz być w stanie sprawić, by działał idealnie z dokładnością cykliczną bez jittera, jeśli będziesz skrupulatny. Procesory AVR działają dobrze z umiarkowanym przetaktowaniem, więc prawdopodobnie mógłbyś uruchomić go z częstotliwością 38,35 MHz i mieć 5 cykli AVR na cykl zegara 68k.
Nie oznacza to, że byłoby to łatwe i może być kilka bardzo skomplikowanych instrukcji, które zajęłyby więcej czasu na AVR niż w innym przypadku - ale nawet te można uwzględnić przy starannym zaprojektowaniu.
Czy mogę emulować Sega Genesis z 8-bitowym AVR Atmela?
Nie. Sega Genesis ma w sercu procesor 68k, ale ma również procesor dźwięku (Z80) i procesor wideo, których emulacja wymagałaby znacznie więcej zasobów. Na poniższym schemacie znajdziesz procesor 68k w lewym górnym rogu - zwróć uwagę, że jest to jedna mała porcja wszystkiego, co jest potrzebne do emulacji pełnego systemu Sega Genesis.
Więc chociaż mógłbyś łatwo emulować rdzeń 68k Sega Genesis, nie byłbyś w stanie uruchamiać gier stworzonych dla Genesis z tylko jednym mikrokontrolerem AVR. Emulowanie samego 68k na jednym chipie byłoby wystarczająco trudne - nawet jeśli uprościsz rzeczy, wątpię, abyś mógł zmieścić wszystkie trzy procesory w jednym układzie AVR 32 MHz.
Jednak prawdopodobnie mógłbyś emulować te dwa chipy z dwoma więcej AVR. Jeśli celujesz w prostszy graficzny wyświetlacz LCD, który nie wymaga dziwnych taktowań i generacji NTSC, możesz być w stanie nieco uprościć sprawę, a być może nawet umieścić obie funkcje w jednym oddzielnym chipie.
To ogromny projekt, na pewno nie weekendowy. Jeśli jesteś na etapie, na którym czujesz się komfortowo tylko z płytkami rozwojowymi Arduino, interesujące może być utworzenie prostego emulatora procesora 68k i podłączenie małej zewnętrznej pamięci ROM i RAM w celu uzyskania dostępu do pamięci. Arduino ATMega nie ma interfejsu pamięci zewnętrznej, ale można łączyć linie we / wy i emulować je. Jeśli zajdziesz wystarczająco daleko w projekcie, aby emulować proste programy 68k, to może warto porzucić arduino, używając środowiska programistycznego Atmel i lepszego układu AVR z interfejsem zewnętrznej magistrali i możesz zacząć czytać i wykonywać naboje. Możesz nawet przesłać dane wideo i dźwiękowe do komputera i zinterpretować je podczas przetwarzania - nadal będzie to zbyt wolne (Arduino Mega ma tylko 16 MHz), ale przynajmniej da ci dobre wyobrażenie o ilości pracy, którą musiałbyś wykonać, aby uzyskać emulację z pełną prędkością i możesz zacząć majstrować przy tym, ile wysiłku wymagałoby emulowanie VDP i procesorów dźwięku.
Upewnij się, że procedury emulacji są przenośne, a Ty ' Będę w stanie przełączyć się na lepszy procesor na tyle łatwo, że nie utkniesz.
Jeśli prosty projekt Arduino Mega nigdy nie zajdzie zbyt daleko, nie zmarnowałeś wielu zasobów na ten projekt. Jeśli okaże się, że chcesz go ukończyć, przejście na bardziej wydajny układ Atmel nie będzie tak przytłaczające.
Mówię, że spróbuj. Niektóre z tego, co powiedziałem i co powiedzieli inni, mogą wydawać się nie do pokonania, ale nie pozwól nam wchodzić ci w drogę. Zadawaj pytania za każdym razem, gdy napotkasz przeszkodę, a przekonasz się, że większość inżynierów lubi wyzwania i da ci zrozumienie i pomoc, których potrzebujesz, aby zejść daleko na tej ścieżce.
Emulacja to dużo zabawa.