Pytanie:
Czy istnieje mikrokontroler z 16 MB pamięci RAM?
baordog
2015-09-29 03:17:22 UTC
view on stackexchange narkive permalink

Oto moja sytuacja:

Jako osobisty projekt zamierzam napisać emulator dla Sega Megadrive (Sega Genesis), który działa na AVR. Szukałem więc mikrokontrolera, który ma podobne właściwości do Motoroli 68k dostarczanej z MegaDrive. Zauważyłem jednak, że specyfikacja 68k w porównaniu z większością mikro hobbystów. Wybieram AVR w przeciwieństwie do ARM, ponieważ podoba mi się architektura i pomyślałem, że to będzie dobre wyzwanie.

  M68K: 32-bitowy procesor 16-bitowa magistrala danych Do 20 MHz 16 MB pamięci RAM Brak portów we / wy  

Oto specyfikacja Arduino Leonardo:

  Napięcie wejściowe (zalecane) 7-12 V Napięcie wejściowe (ograniczenia) 6-20 V Cyfrowe piny we / wy 20PWM Kanały 7 Analogowe kanały wejściowe 12 Prąd prądu stałego na styk I / O 40 mA DC Prąd dla 3,3 V styk 50 mA Pamięć flash 32 kB (ATmega32u4), z czego 4 kB używane przez bootloader SRAM 2,5 kB (ATmega32u4) EEPROM 1 kB (ATmega32u4) Częstotliwość taktowania 16 MHz Długość 68,6 mm Szerokość 53,3 mm Waga 20 g  

Wydaje się to dość typowe dla niższego końca nowoczesne micros. Nigdy nie widzę, aby pamięć RAM wbijała się zbytnio w MBS.

Jestem pewien, że nowoczesny SRAM nie jest prawie taki sam, jak to, co miał 68k, ale czy mogę uzyskać mikro AVR, moc 68k, czy źle patrzę na ten problem? Czy muszę zmienić projekt, aby dostosować go do nowoczesnych mikro?

Nie wiem, czy jakieś zewnętrzne źródło pamięci będzie wystarczająco szybkie.

[Według Wikipedii] (https://en.wikipedia.org/wiki/Sega_Genesis#Technical_specifications) Sega Genesis działała z częstotliwością 7,6 MHz i miała tylko 72 KB pamięci RAM, a nie 16 MB, plus 64 KB dodatkowej pamięci wideo.
Hmm wygląda na to, że miałem złe specyfikacje 68k.
Użyj procesora aplikacji lub FPGA.
Nie znasz tablicy aplikacji
AVR ma 16-bitową szynę adresową pamięci.Zasadniczo nie jest w stanie uzyskać dostępu do więcej niż 64 KB pamięci.* Możesz * to zwiększyć przez hacki programowe, takie jak stronicowanie pamięci, ale nie ma możliwości, aby architektura AVR była w stanie ** natywnie ** adresować 8 MB pamięci.
Ponadto ** całkowicie tracisz narzut na emulację **.* Prawidłowe * emulowanie SNES (który wykorzystuje procesor ~ 21 MHz) wiernie wymaga komputera ** 3 + GHz ** (patrz [tutaj] (http://arstechnica.com/gaming/2011/08/accuracy-takes-power-one-mans-3ghz-quest-to-build-a-perfect-snes-emulator / 1 /)).Co najmniej ** **, aby emulować Megadrive / genesis, który wykorzystuje procesor 7,6 MHz i 3,58 MHz, powinieneś oczekiwać urządzenia hosta o częstotliwości 100+ MHz.
Więc w zasadzie, zakładając, że chcesz emulacji w czasie rzeczywistym (np. Odtwarzalnej), to, co chcesz zrobić, jest zasadniczo niemożliwe na AVR.Jeśli jesteś OK z dużo, DUŻO wolniejszym (100X wolniejszym niż w czasie rzeczywistym), prawdopodobnie mógłbyś to zrobić z zewnętrzną pamięcią SRAM sterowaną programowo na AVR, ale wątpię, że to jest to, co próbujesz zrobić.
* Istnieją * możliwości ([dynamiczna rekompilacja] (https://en.wikipedia.org/wiki/Dynamic_recompilation) przychodzą na myśl), które mogą pomóc w problemach z wydajnością, ale wszystkie są naprawdę, bardzo skomplikowane i tak nie jestNie brzmi to tak, jakbyś chciał spędzić większość projektu na wdrażaniu niestandardowego transpilera (i szczerze mówiąc, wdrożenie odpowiedniego optymalizującego kompilatora na AVR jest * również * prawdopodobnie zbyt wolne), więc utkniesz z powyższym.
Szczerze mówiąc, naprawdę powinieneś najpierw napisać emulator, najlepiej w przenośnym C. * Następnie * spójrz na przeniesienie go na ARM, a * potem * spójrz na zaprojektowanie płyty dla wybranego MCU ARM, gdy będziesz mieć kilka liczb dla wymaganej wydajności.Szczerze mówiąc, myślę, że nie zdajesz sobie sprawy, jak niesamowicie zaangażowani są właściwi, wierni emulatorzy.Prawidłowe modelowanie i emulowanie nawet prostych starszych konsol jest naprawdę ** naprawdę ** trudne, ponieważ żadna z nich nie jest całkowicie cyfrowa, wszystkie mają wiele analogowych dziwactw.
Na przykład, co mam na myśli, kiedy mówię „wolno” dla zewnętrznej pamięci stronicowanej programowo, [tutaj] (http://dmitry.gr/index.php?r=05.Projects&proj=07.%20Linux%20on%208bit) to facet, który napisał emulator x86 dla AVR, z zewnętrzną pamięcią SIMM.Emulowany procesor działa z prędkością około ** 6,5 KILOherca ** (z (podkręconym) zegarem bazowym 24 MHz), a uruchomienie trwa 2 godziny do prostego polecenia bash.
@ConnorWolf Zgadzam się z większością twoich obserwacji.Próbowałem zasugerować użycie Raspberry Pi 700 MHz (co moim zdaniem zadziałałoby cudownie), ale OP nalega na użycie AVR.Znalazłem 32-bitowy AVR pracujący z częstotliwością 84 MHz, który może * po prostu * to zrobić, jeśli napisze wnętrzności emulatora w języku asemblera i wyciągnie wszystkie przystanki.(Nie jest niczym niezwykłym, że emulatory wymagają tylko 10x szybszych procesorów) Będzie musiał emulować również cały inny sprzęt na Genesis.Mam nadzieję, że ma schematy i mapę pamięci dla procesora.
@ConnorWolf Warto zauważyć: zasadniczo niemożliwe jest zaimplementowanie dynamicznej rekompilacji w AVR, ponieważ nie można uruchomić kodu z pamięci danych.(Możesz przechowywać w pamięci programu, ale to powolne i zjada cykle flash!)
Emulator ARM @ConnorWolf: Dmitry'ego Grinberga dla AVR, z którym jesteś połączony, jest niesamowity i odpowiedni.Emuluje procesor Intel PXA255, procesor ARM.Czy ktoś napisał emulator x86 dla AVR?
Wow, to są świetne punkty.Lepiej byłoby znaleźć sposób na przetransponowanie romów do avr i uniknięcie kroku translacji na chipie hosta.Być może jest to bardziej wykonalne, jeśli wyeksportuję część ciężkiego podnoszenia do FPGA?To właśnie wyzwanie związane z wydajnością jest tym, co przyciągnęło mnie do avr jako trzymającego rękę.
@davidcary - Ups, to ARM, a nie x86.Derp.Słuszna uwaga.
@duskwuff - Nawet nie pomyślałem o problemach z separacją kodu / danych, masz całkowitą rację.
@tcrosley - Twierdzę, że procesory AVR32 nie są tak naprawdę „AVR”, ponieważ nie używają już rdzenia procesora AVR.Tak naprawdę to tylko branding.Przede wszystkim starałem się pokazać, że ograniczenie rdzenia procesora AVR sprawia, że ten projekt jest praktycznie niemożliwy.
@ConnorWolf Zdaję sobie sprawę, że Atmel nazywa je AVR32, a nie zwykłymi AVR.Myślę, że to to samo z Microchip, czy PIC32 nadal jest PIC?(Moim zdaniem tak, ale to tylko moja opinia.)
@tcrosley czy nadal jest to niemożliwe na AVR32?
@baordog AVR32, taki jak ten połączony z 8 MB zewnętrznej pamięci RAM, który wskazałem w mojej odpowiedzi, powinien działać dobrze i prawdopodobnie wystarczająco szybki, aby obsłużyć również wideo.Po prostu lubię Raspberry Pi, ponieważ ma sprzęt na płycie do robienia wideo i dźwięku kompozytowego i HDMI.W obu przypadkach 32-bitowe rejestry w AVR32 i ARM są lepiej dopasowane do 32-bitowych rejestrów 68000 i pozwolą uniknąć konieczności wykonywania wszystkich funkcji związanych z procesorem w czterech 8-bitowych operacjach zamiast jednej 32-operacja bitowa.
@baordog - Istnieją mikrokontrolery AVR32, które są wystarczająco duże, aby uruchomić Linuksa, z MMU i wszystkim.Nie jest to również AVR w żaden inny sposób niż nazewnictwo marketingowe.Części AVR32 to w zasadzie tylko mikrokontrolery MIPS wykonane przez Atmel.
@ConnorWolf - Koniec z fascynującą architekturą Harvardu?Widzę, dokąd z tym zmierzasz.
@baordog - myślę, że pytanie jest bardziej "Dlaczego tak nastawiony jesteś na AVR"?Jeśli to dlatego, że lubisz procesor AVR, w zasadzie nie ma opcji dla tego, co chcesz.Jeśli chcesz tylko nazwę AVR, AVR32 prawdopodobnie będzie odpowiedni dla tego, co chcesz, zakładając, że wybierzesz duży, potężny.
Sześć odpowiedzi:
tcrosley
2015-09-29 03:40:09 UTC
view on stackexchange narkive permalink

Mimo że Motorola 68000 i Sega Genesis są dość stare (wczesne lata 80-te), nie znajdziesz niskonakładowego (tj. 8-bitowego) AVR, który mógłby emulować całą maszynę do gier.

Sega Genesis działał z częstotliwością 7,61 MHz i miał 72 KB pamięci RAM (plus dodatkowe 64 KB pamięci wideo). Jednak programy gier znajdowały się w pamięci ROM, więc będziesz potrzebować dodatkowej pamięci RAM do ich przechowywania (chyba że planujesz w jakiś sposób podłączyć oryginalne wkłady). Większość kartridży z grami miała mniej niż 4 MB, ale istnieje co najmniej jedna gra (Pier Solar, wydana w 2010 r.), Która ma 8 MB ROM.

Ponadto system z pewnością musiał zawierać systemową pamięć ROM, która działał jako jakiś dyrektor wykonawczy, a także zapewniłby wspólną bibliotekę we / wy dla kaset (nie mogę znaleźć żadnego odniesienia do tego, jak duże było to). Będziesz musiał znaleźć ROMy (lub obrazy ROM) dla nich i skopiować je również do pamięci RAM (lub dodać sekcję ROM do swojego systemu).

IMO, którego będziesz chciał użyć 32-bitowy mikrokontroler. Jeśli masz zamiar używać oryginalnych wkładów oraz pamięci ROM programu i nie potrzebujesz MB pamięci RAM, możesz użyć większości dowolnego 32-bitowego mikrokontrolera, który ma wystarczająco dużo miejsca dla twojego emulatora. Jeśli zamierzasz pobrać kasety i systemowy obraz ROM do pamięci RAM, to aby uzyskać 8 MB lub więcej pamięci RAM, będziesz potrzebować mikrokontrolera z zewnętrzną magistralą pamięci (nie możesz uzyskać 8 MB na ten sam chip co mikrokontroler).

Biorąc pod uwagę, że chcesz pozostać przy AVR, proponuję procesor taki jak AT32UC3A3256, który ma 256 KB Flash, 128 KB RAM i działa z częstotliwością 84 MHz. Problem polega na tym, że jest to 144-pinowe urządzenie do montażu powierzchniowego, które będzie trudne do lutowania.

Jednak jest zestaw testowy za ten procesor od Element 14 za jedyne 31,25 USD. Nie musisz się więc martwić o lutowanie. Dodatkowo płyta ma 8 MB zewnętrznej pamięci RAM, więc możesz załadować kasetę do pamięci RAM.

enter image description here

Tak dla porządku , nadal uważam, że powinieneś rozważyć Raspberry Pi, pracujące z częstotliwością 700 MHz z 512 MB pamięci RAM za nieco mniej niż koszt płyty rozwojowej powyżej. Pracując z taką prędkością, nie miałbyś problemów z emulacją kodu 68000 i wykonywaniem operacji we / wy z odpowiednią prędkością.

Niezależnie od tego, czy wybierzesz trasę AVR, czy Raspberry Pi, oprócz 68000 Sega Genesis zawierał również Zilog Z80 i kilka układów specjalnego przeznaczenia, w tym Yamaha YM2612 i Texas Instruments SN76489A. Z80 był używany do sterowania dźwiękiem, a także zapewnia kompatybilność wsteczną z wcześniejszym systemem Sega Master. Układ Yamaha był syntezatorem dźwięku FM, a układ TI był programowalnym generatorem dźwięku (ta maszyna miała wiele opcji dźwiękowych). Był też wirtualny procesor wyświetlania (VDP). Prawdopodobnie możesz pominąć dźwięk (co oznacza, że ​​nie musisz martwić się o Z80, układy Yamaha lub TI), ale będziesz musiał emulować sprzęt graficzny.

Kilka zasobów:

EASy68K - edytor / asembler / symulator dla 68000. Open source, więc powinieneś być w stanie odszukać kod symulacyjny 68K

Cyclone 68000 - emulator mikroprocesora 68000 napisany w asemblerze ARM 32-bit. Przydatne tylko, jeśli zdecydujesz się użyć Raspberry Pi

Wreszcie, jeśli nie znasz jeszcze zestawu instrukcji 68000, zaplanuj spędzenie tygodni (lub więcej), aby zostać ekspertem. Wiele operacji debugowania zostanie przeprowadzonych na poziomie emulatora, próbując dowiedzieć się, dlaczego sekcja kodu 68000 w kasecie z grą nie wykonuje się poprawnie. (Co oznacza, że ​​prawdopodobnie będziesz chciał mieć możliwość ustawienia wirtualnego punktu przerwania w kodzie kasety). Będziesz także potrzebować dezasemblera, więc nie będziesz musiał zajmować się kodem maszynowym; oto źródło dla jednego.

Rozważyłem to, ale chcę ograniczyć się do avr.
@baordog Zaktualizowałem moją odpowiedź dwoma sugerowanymi układami AVR.
Zwróć uwagę, że oba wspomniane procesory to części AVR32.Są one prawie całkowicie różne od części architektury AVR, które zna OP, poza tym, że oba są wykonane przez Atmela.
@duskwuff Nie poradzi sobie z niczym mniej wydajnym niż te, a procesory AVR są produkowane przez firmę Atmel.
@baordog Ponownie zmodyfikowałem moją odpowiedź - znalazłem płytę rozwojową z 32-bitowym AVR, która zawiera 8 MB zewnętrznej pamięci RAM za 31 USD.
duskwuff -inactive-
2015-09-29 03:43:45 UTC
view on stackexchange narkive permalink

To się nie wydarzy.

Największym mikrokontrolerem w linii ATmega z obsługą pamięci zewnętrznej jest ATmega1284, ale tylko ten ma 8 KB wewnętrznej pamięci SRAM i może zaadresować do 64 KB pamięci pamięć zewnętrzna. To nie wystarczy do emulacji Genesis, która miała 72 KB pamięci RAM i kolejne 64 KB pamięci wideo. Możliwe byłoby zaimplementowanie dostępu do dodatkowej pamięci poprzez przełączanie banków, ale to spowodowałoby, że dostęp do pamięci z AVR byłby bardzo kosztowny.

Jest kilka części w linii ATmega z bardziej wewnętrzną pamięcią SRAM, jak ATmega1284 (16 KB), ale te w ogóle nie obsługują pamięci zewnętrznej. Krótko mówiąc, adresowanie ponad 64 KB pamięci RAM z ATmega jest raczej trudne.

(Nie jestem pewien, skąd masz 16 MB. 68000 nie ma żadnej pamięci wewnętrznej w ogóle, poza rejestrami; ilość pamięci w systemie 68000 może się znacznie różnić.)

Dodatkowo procesor 68000 w Genesis działa z częstotliwością 7,6 MHz. Emulowanie tego na AVR 16 MHz nie będzie możliwe - podczas gdy częstotliwość taktowania AVR jest wprawdzie nieco wyższa, 68000 jest 32-bitowym procesorem, więc emulacja jednej z jego instrukcji będzie często wymagać znacznie więcej niż jednej instrukcji na AVR. (Nawet proste dodanie prawdopodobnie będzie wymagało kilkudziesięciu instrukcji.)

Jeśli chcesz emulować Genesis, polecam zamiast tego przyjrzeć się mikrokontrolerom ARM.

Kilka drobnych chwytów: - 68000 wymaga co najmniej 4 zegarów, aby cokolwiek zrobić (a większość instrukcji zajmuje 8 zegarów lub więcej), więc AVR działający z częstotliwością 16 MHz jest ~ 9 razy szybszy (nadal nie jest wystarczająco szybki, aby emulować 7,16 MHz 68000 wchociaż w czasie rzeczywistym).Również największym ATmega jest 1284 - który ma 16 KB RAM, 128 KB ROM i działa z częstotliwością 20 MHz.
@BruceAbbott Jak napisałem w mojej odpowiedzi, AVR może działać tylko na jednym 8-bitowym rejestrze (lub czasami na parze) naraz, co dość mocno wysadza liczbę instrukcji - nie wspominając o ładowaniu instrukcji, dekodowaniu itp. ATmega1284 ma niecowięcej SRAM, ale nie obsługuje pamięci zewnętrznej, więc tutaj nie ma sensu.Zaktualizowałem moją odpowiedź, aby odzwierciedlić to kryterium.
Czy mikrokontroler Parallax byłby w stanie wykonać takie zadanie?Jest 32-bitowy, może mieć trochę więcej pamięci RAM i jest znacznie szybszy!Są również w porządku dla wyjścia VGA.
@IsmaelMiguel Nie. Wciąż nie ma wystarczającej ilości pamięci RAM (32 KB, a kod zjada ją), a dziwna architektura Propellera nie nadaje się do emulacji.
@duskwuff To ma sens.Ciekawie byłoby zobaczyć na nim coś potężnego.A co z użyciem śmigła do wyjścia i wyjścia ORAZ Arduino do przetwarzania?
@IsmaelMiguel Nie pomaga.AVR jest nadal zbyt wolny i nie ma wystarczającej ilości pamięci, aby emulować 68000, a śmigło nie ma wystarczającej ilości pamięci, aby emulować układ wideo.
Jaka szkoda.Nadal byłoby naprawdę interesujące.
Adam Davis
2015-09-29 17:54:08 UTC
view on stackexchange narkive permalink

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.

enter image description here

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.

Czy uważasz, że łatwiej byłoby emulować procesory wideo / dźwięku za pomocą FPGA?
Myślę, że wyzwaniem przy pisaniu emulatora będzie 68000 instrukcji typu: ADD.L (A0) +, D3.Teraz ATxmega128A1U ma podobny format adresowania przy użyciu rejestrów X, Y lub Z.Te oczywiście są 16-bitowe, ale podobno Sega używała tylko 72 KB pamięci RAM, więc to może działać, w zależności od tego, do czego te dodatkowe 8 KB są używane.Problem występuje, ponieważ AVR ma trzy rejestry adresowe, a 68000 ma osiem.Nagle emulowany rejestr A0 nie jest ładowany do X, Y lub Z. Więc trzeba coś przerzucić.Jeden rejestr adresowy będzie prawdopodobnie musiał być przeznaczony dla SP.
Podejście FPGA zostało pomyślnie wykonane: https://code.google.com/p/fpgagen/
@baordog Nie wiem.Procesor dźwięku to procesor Z80.Nie patrzyłem na procesor wideo.Powinieneś przeprowadzić dalsze badania, aby dowiedzieć się, o co chodzi - procesor wideo ma własną pamięć, ale generował również złożone sygnały PAL lub NTSC.Jeśli miałbyś zintegrować graficzny wyświetlacz LCD, może się okazać, że wiele złożoności procesora wideo znika - ale znowu nie jestem pewien, jak bardzo jest złożony.Jestem pewien, że możesz to zrobić w FPGA, ale może nie musisz tego robić, jeśli wolisz mikrokontrolery.
Jeśli poprawnie czytam [selektor produktów SuperH] (http://www.renesas.com/products/mpumcu/superh/product_selector.jsp), procesor SuperH z największą ilością pamięci RAM to Renesas SuperH R5S72680W266FP z prawie 3 MBpamięci RAM, co jest całkiem niesamowite.Czy istnieje procesor, który „ma 16 MB wbudowanej pamięci SRAM”?Nie widzę tego.Każda inna część tej odpowiedzi wygląda świetnie.
@davidcary znalazł go na Digikey, ale nie widzi go również w witrynie Renesas.R8J73540BGZV - http://www.digikey.com/product-search/en?KeyWords=%20R8J73540BGZV&WT.z_header=search_go
pjc50
2015-09-29 17:34:34 UTC
view on stackexchange narkive permalink

Żadna z innych odpowiedzi nie wspomniała, że ​​można po prostu dostać chip, który natywnie obsługuje zestaw instrukcji m86k: serię Coldfire. Usunięto szereg instrukcji; jeśli nie są zbyt często używane, można je emulować, przechwytując przerwanie „nieprawidłowa instrukcja”.

Jednak nadal musiałbyś emulować procesor wideo Yamaha YM7101 i procesor dźwięku Yamaha YM2612. Możesz albo spróbować zbudować emulacje oprogramowania w znacznie szybszym DSP, albo zbudować ich wersję FPGA. Prawdopodobnie w oparciu o istniejące emulacje FPGA Megadrive.

davidcary
2015-09-29 19:50:14 UTC
view on stackexchange narkive permalink

Czy istnieje mikrokontroler z 16 MB pamięci RAM?

Jestem prawie pewien, że nie ma procesorów z 16 MB wbudowanej pamięci RAM.

„16 MB RAM” wspomniane w niektórych opisach 68000 odnosi się do 24-bitowej zewnętrznej magistrali adresowej, która teoretycznie może adresować maksymalnie 2 ^ 24 bajty = 16 MB zewnętrznej pamięci RAM. Rozumiem, że zdecydowana większość systemów wykorzystujących 68000 łączy znacznie mniej niż 16 MB zewnętrznej pamięci RAM.

W szczególności Sega Mega Drive (inaczej Sega Genesis) ma 72 kB pamięci RAM i 64 kB pamięci wideo. em> zewnętrzna pamięć RAM. Ani Motorola 68000, ani Zilog Z80 nie mają wbudowanej pamięci RAM ani pamięci podręcznej.

Sugeruję utwórz drugie, niezależne pytanie z tytułem opisującym to, co naprawdę chcesz wiedzieć, ale pozostaw to pytanie jako pytanie kanoniczne dotyczące pamięci RAM mikrokontrolera, aby pomóc wielu, wielu osobom wprowadzonym w błąd przez „16 MB RAM ”, co oznacza teoretyczną maksymalną zewnętrzną pamięć DRAM w niektórych procesorach, podczas gdy e „2,5 KB RAM” oznacza rzeczywistą fizyczną wbudowaną pamięć SRAM zawartą w innych procesorach.

(*) Kilka bardzo zaawansowanych procesorów wyprodukowanych po 2006 r. ma 16 MB lub więcej wbudowanej pamięci podręcznej, ale te procesory wymagają jeszcze więcej zewnętrznej pamięci RAM - więc jeśli naprawdę potrzebujesz 16 MB pamięci RAM, będziesz potrzebować 16 MB zewnętrznej pamięci RAM w taki czy inny sposób.

TraceKira
2015-10-29 02:56:34 UTC
view on stackexchange narkive permalink

Możesz UŻYWAĆ CORTEX -M4 z płyty STMF432 ... bardzo wydajne z dużą ilością megabajtów pamięci RAM i urządzeniami peryferyjnymi

enter image description here

Od kiedy 256 * KB * pamięci RAM to „dużo megabajtów pamięci RAM”?
W każdym razie OP był dość specyficzny, że chcieli użyć mikrokontrolera AVR, a nie ARM.


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...