Pytanie:
Procesor w emulatorze obwodu
Prof. Falken
2012-01-07 18:38:34 UTC
view on stackexchange narkive permalink

Pomysł:

Uruchom emulator 68000 na komputerze i podłącz komputer do istniejącego systemu 68000, zastępując procesor przewodem taśmowym prowadzącym do komputera.

I zdaj sobie sprawę, że emulacja nie byłaby dokładna w cyklu, ale to nie jest celem.

Pytanie: ile by to wymagało, jeśli chodzi o logikę łączenia systemów, minimum?

Mam kilka szalonych pomysłów: port IDE na PC to 5 woltów. IDE to w zasadzie 16-bitowy port równoległy. 68000 ma 16-bitową magistralę danych. Może jakiś zatrzask do zachowania 20-bitowego adresu pamięci? Czy zresetować flanki można zapisać i odczytać przez emulator?

Prawdopodobnie można było dość łatwo zbadać odpowiedź systemu docelowego na adresy generowane przez procesor, aby sprawdzić, czy w ten sposób wybrano odpowiednie chipy. W rzeczywistości uruchomienie systemu byłoby prawdopodobnie znacznie trudniejsze.
Metoda, która była do tego używana, nazywa się [ICE] (http://en.wikipedia.org/wiki/In-circuit_emulator)
Cztery odpowiedzi:
billt
2012-01-09 23:44:50 UTC
view on stackexchange narkive permalink

Zdobądź płytę FPGA w stylu PCI, której możesz używać ogólnych IO dla docelowego połączenia 68000. Zaimplementuj system sterowania w układzie FPGA i napisz oprogramowanie, które powie mu, co ma robić. To po prostu tworzenie własnego zestawu ICE. Jeśli komercyjne zestawy ICE są horrendalnie drogie (sprawdź i dowiedz się, czy są, nie wiem), może to potencjalnie być tańsze i dać ci kontrolę nad tym, jak to działa. Sprawdź płyty FPGA Raggedstone, Broaddown lub Mini-Can, są to stosunkowo niedrogie karty, ale nie jesteś pewien, czy ma wystarczająco dużo dostępnych pinów IO dla tego, czego potrzebujesz. Następnie sprawdź OpenCores pod kątem bloków PCI o otwartym kodzie źródłowym i innych rzeczy, które mogą być przydatne. Być może będziesz musiał dodać trochę rzeczy do zmiany poziomu na małym dodatku PCB do tych płyt. Sprawdź białe księgi Xilinx / Altera na temat używania przełączników Quickswitch między 3,3 V FPGA i 5 V PCI, podłączenie innych połączeń do gniazda 5 V 68000 byłoby zasadniczo tym samym procesem.

O ile pamiętam, DIP 68000 to 68 pinów, a niektóre z nich nie są używane w niektórych systemach, np. Amiga nie zaleca używania niektórych pinów peryferyjnych typu 6800, i są one rozłączane w późniejszych systemach Amiga.

W ostatnim akapicie mówisz, że nie muszę się martwić o wdrożenie szpilek w stylu 6800?
plastikowe opakowanie DIP miało 64 szpilki. istnieją również inne współczynniki kształtu, ale OP nie ma specyfikacji.
Komercyjne zestawy ICE są generalnie horrendalnie drogie, ale w zależności od konkretnego modelu 68000 i użytego opakowania, stary ICE może być dostępny bardzo niedrogo.Pracowałem nad grą SEGA Genesis w 1993 roku i użyliśmy ICE, który w tamtym czasie kosztował 10-15 000 USD;Ponad 20 lat później, gdybyś mógł znaleźć ten sam model, spodziewam się, że byłby całkiem tani ...
Majenko
2012-01-07 18:48:02 UTC
view on stackexchange narkive permalink

Sądzę, że byłoby to prawie niemożliwe do zrobienia.

Po pierwsze, synchronizacja jest krytyczna w procesorze.

Procesor, podczas gdy główne „urządzenie” w systemie , nie jest absolutnym panem wszystkich.

Jest zależny od zegara systemowego.

Twój komputer i jego interfejs oraz emulator musiałyby być podporządkowane temu zegar główny.

Interfejs IDE z pewnością nie mógł tego zrobić.

Potrzebowałbyś specjalnie zbudowanego interfejsu, który wykonywałby całą emulację wszystkich sygnałów i linii sterujących (które są wszystkie czasowe krytyczne), a także podaj wszystkie dane i linie adresowe (a jest ich dużo). Dzięki temu byłoby to możliwe, ale byłoby to trudne i kosztowne. Lepiej jest po prostu emulować cały system lub użyć prawdziwego układu 68000.

Dobrze. System składający się z prostego pryzmatu pamięci ROM, statycznej pamięci RAM i być może portu równoległego może być w porządku, ale dowolna liczba „interesujących” komponentów będzie miała krytyczne taktowanie. Nadążanie za UART może być trudne. Nadążanie za kontrolerem dysku byłoby zdecydowanie trudne. Niektóre (tanie) projekty polegały na procesorze do dynamicznego odświeżania pamięci RAM. Kanały DMA prawdopodobnie zatrzymałyby show. I w zasadzie wszystko, co przerywa.
Wydaje się, że http://www.makestuff.eu/wordpress/?cat=18 robi to, co sugerowałeś
JustJeff
2012-01-07 19:34:07 UTC
view on stackexchange narkive permalink

W zależności od systemu możesz lub nie być w stanie oszukać docelowy sprzęt, aby „myślał”, że ma 68 KB. W niektórych (większości) systemach, jak powiedział Majenko, trzeba by odpowiadać na określone sygnały w czasie rzeczywistym, co byłoby uciążliwe. Jeśli jednak docelowy sprzęt nie ma wielu elementów nadrzędnych magistrali, możesz sobie z tym poradzić. Musiałbyś naprawdę zbadać wymagania czasowe danego systemu. Jeśli poradzi sobie z pracą z bardzo niskimi częstotliwościami zegara lub pozwoli na zawieszenie i ponowne uruchomienie zegara, perspektywa jest bardziej obiecująca.

Ale są tutaj dwa inne problemy.

Po pierwsze, nie chcesz podłączać magistrali danych docelowego sprzętu bezpośrednio do magistrali IDE komputera. Cel powinien przesyłać dane na magistralę danych komputera tylko wtedy, gdy komputer tego chce, więc potrzebny byłby dwukierunkowy bufor zdekodowany, aby odpowiedzieć na odpowiedni adres w mapie pamięci komputera. Słusznie wyczułeś, że potrzebujesz bufora do przechwytywania danych z komputera dla docelowej magistrali adresowej.

Innym, prawdopodobnie większym problemem, byłoby skonfigurowanie oprogramowania PC do obsługi tego. Aby uzyskać dostęp do tej docelowej karty systemowej, musiałbyś przydzielić co najmniej kilka adresów w pamięci komputera lub mapach we / wy, a przy nowoczesnych systemach operacyjnych nie dzieje się tak bez sterownika urządzenia. Więc jeśli chcesz to osiągnąć, musisz albo wiedzieć, jak to zrobić, albo być przygotowanym, aby się tego nauczyć.

http://hackaday.com/2011/02/03/stk200-pocket-change-programmer/ <- pokazuje, jak oszukać sterownik portu równoległego, aby wskazywał na port IDE w systemie Linux. :-)
JonnyBoats
2012-01-07 19:44:04 UTC
view on stackexchange narkive permalink

Właściwie to, co opisujesz, jest bardzo zbliżone do emulatora w obwodzie (ICE). W przypadku najpopularniejszych układów, takich jak 68000, na ogół można kupić ICE, taki jak ten, do 68000.

Ponieważ ICE potrzebuje dodatkowo sposobu interakcji z użytkownikiem do docelowej płytki drukowanej często używany jest do tego komputer PC. Jeden kabel z ICE zostanie podłączony do płytki drukowanej zamiast układu procesora, a drugi zostanie podłączony do komputera.

Być może wykraczając poza zakres twojego pytania, warto zauważyć, że kiedy projektowany jest nowy chip CPU, będzie on generalnie symulowany w oprogramowaniu na jakimś innym istniejącym komputerze, a następnie ICE będzie zbudowany z faktyczną produkcją wiórów jako ostatnim krokiem. Dzieje się tak, ponieważ wyprodukowanie ICE jest znacznie tańsze niż wyprodukowanie skomplikowanego chipa CPU za pierwszym razem.



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...