Karta CF sama w sobie jest urządzeniem mocno retro
Karta CF pojawiła się na rynku w 1994 roku, więc jest mniej "retro", niż np. FPGA (1985 - pierwszy komercyjny model Xilinxa XC2064).
które zostało projektowane w taki sposób, aby móc pracować na magistralach bardzo starych urządzeń.
Nie - zostało zaprojektowane jako zgodne na poziomie logicznym z ówczesnym standardem dysków twardych, Parallel ATA, jednak z zastosowaniem nieco innego, znacznie mniejszego złącza. Miało to na celu przyszłą konwergencję standardów w przypadku miniaturyzacji dysków twardych, co ziściło się w postaci np. IBM Microdrive.
Do 8242 przecież można podłączyć zewnętrzny EPROM i wykonać na nim własny kod, chociaż wewnętrzna pamięć programowana maską zawiera firmware do obsługi klawiatury.
Jak chcesz podłączyć zewnętrzną pamięći do 8042/8242, nie mając szyny adresowej? Przez porty I/O (P1/P2)? Wtedy zawartość pamięci masz jako dane, a nie kod programu. Można oczywiście przepisać dane odczytane z I/O do wewnętrznej, malutkiej pamięci RAM (256 bajtów), tylko nie widzę w tym specjalnie sensu.
Natomiast karta CF jest już dostatecznie blisko. Osobny linuksowy komputer emulujący pamięć masową byłby już przesadą, bo równie dobrze mógłbym na nim emulować całość systemu.
(...)
Problem zaczyna się dla mnie wtedy, gdy projekt zaczyna emulować fragmenty oryginalnego hardware'u w kawałkach softu wykonywanego na współczesnych mikrokontrolerach. Szczególnie, jeśli te mikrokontrolery równie dobrze mogłyby emulować całą maszynę - a to można powiedzieć o wszystkich Raspberry Pi, czy nawet "małych" ARM-ach albo ESP32.
Dokładnie tak. Podobnie nie podchodzi mi stosowanie Raspberry Pi tylko po to, by mieć wyjście HDMI. To już niech na tym Raspberry chodzi emulator całości, niby po co w tym czasie grzać 40-letniego kompa?
Generalnie jest kilka poziomów, których wolę się trzymać.
1. Najbardziej postawowy (...)
My favourite.
2. Mocno uwspółcześnione projekty, gdzie procesor nadal jest fizyczny (...)
Czyli kompromis między sercem a rozumem
Bo tak naprawdę to już niewielka różnica (między tym a punktem 3) - skoro w 48K cała logika została zamknięta w nowocześniejszym chipie, i można tam jeszcze dorzucić procesor, bez przycinania funkcjonalności (złącze krawędziowe!), to co za różnica, czy ten Z80 będzie fizyczny, czy emulowany? To raczej właśnie podejście emocjonalne, że procesor, czyli serce komputera, powinien być fizyczny, prawdziwy, grzać się i śmierdzieć
. I trochę się z tym zgadzam, bo w sumie całe retro to bardziej serce niż rozum
W przypadku VHDL-a nie masz algorytmu. Masz opis zadania realizowanego sprzętowo
...i opis zadania to jest właśnie algorytm!
Algorytm – skończony ciąg jasno zdefiniowanych czynności koniecznych do wykonania pewnego rodzaju zadań, sposób postępowania prowadzący do rozwiązania problemu.
(
https://pl.wikipedia.org/wiki/Algorytm)
Z sobie tylko znanych powodów (tzn. w celu udowodnienia swojej tezy) przycinasz definicję algorytmu do tego, co się będzie finalnie wykonywać na procesorze. Natomiast języki opisu sprzętu (VHDL, Verilog) są jak najbardziej algorytmami, ciągiem jasno zdefiniowanych czynności koniecznych do wykonania pewnego rodzaju zadań - a konkretnie, kolejnych faz przygotowania wsadu (core) dla układu programowalnego.
Taki kod można spokojnie przetłumaczyć na schemat złożony z bramek i może on służyć jako punkt wyjścia do prototypowania układów ASIC. Nie 1:1, bo występują istotne różnice technologiczne, ale pierwszym etapem przy projektowaniu cyfrowego ASIC-a często jest właśnie zaimplementowanie tego w VHDL-u albo Verilogu.
Bo generalnie FPGA powstał do prototypowania. To, że się ostatnio upowszechnił do innych zastosowań, wynika z sumarycznych kosztów procesu, które zostały znacznie zredukowane.
By zaprogramować pierwszy FPGA (XC2064), trzeba było zapłacić 12 tys. dolarów za samo oprogramowanie (pod DOS).
FPGA nie ma wiele wspólnego z programową emulacją.
Z programową - faktycznie nie.
Za to ze sprzętową - bardzo dużo. FPGA realizuje dokładnie to, co się potocznie nazywa
hardware emulation. Bo nie ma tu żadnego fizycznego odwzorowania w krzemie, tylko jego udawanie poprzez sterowanie stanami logicznymi przez warstwę konfiguracyjną.
Ma za to wiele wspólnego z technologią w jakie były produkowane takie układy jak ULA do ZX Spectrum czy ZX81.
FPGA powstało jako funkcjonalna alternatywa dla ULA. A technologicznie różnią się bardzo, bo ULA ZX Spectrum jest strukturą bipolarną, a FPGA (nawet te pierwsze) to CMOS z tranzystorami NMOS i PMOS.
Tam krzemowa struktura zawierała określony zestaw uniwersalnych bramek. Potem na taką strukturę nanoszono maskę z połączeniami, odpowiadającymi potrzebom konkretnego odbiorcy. W przypadku FPGA różnica jest taka, że te połączenia są konfigurowalne za każdym razem przy starcie układu.
I z tego wynika podstawowa, funkcjonalna różnica: ULA była "kończona" przez producenta, a FPGA - przez użytkownika końcowego.
Wydaje mi się, że w pewnym momencie zaczęliśmy mówić o dwóch różnych kwestiach. Dyskusja zaczęła się od tego, jakie (w miarę) współczesne rozwiązania są dopuszczalne w rekonstrukcjach urządzeń retro, żeby wciąż można było uznać je za "zgodne z klimatem retro".
Ale to znowu dyskusja o uczuciach. Dla jednych retro to komputer w oryginalnym kartonie w szafie za szkłem, a z kolei druga skrajność to emulator ZX na smartfonie. Plus oczywiście ileś gradacji uczuć pomiędzy skrajnościami.
Sam używam emulatora na PC, ale tylko w kwestiach programistycznych (ot, czasami poklepię sobie trochę kodu), ale nie uważam, żebym wtedy siedział przy sprzęcie retro. Myślę, że podobnie by było, gdybym usiadł do Spectrum Nexta czy Uno. Ale nie siadam.
Z drugiej strony - mam ZX Spectrum 48K z ULA Plus, czyli supermałe FPGA dające nowe możliwości barwne. Retro, nie-retro?
Z trzeciej strony - moim peryferium numer 1 dla oryginalnych ZX jest divIDE. Scalaki z epoki (może poza flashem, ale można go zmienić na zwykły EPROM), no ale karta CF! Czyli już lata 90-te. Ale zwycięża wygoda, na pewno nie będę się szarpał z taśmami, a nawet kasetkami MD, jak zachce mi się w coś pograć. Z kolei FDD3000 zajmuje za dużo miejsca i wyciągam tylko na specjalne okazje (kurczę, muszę w końcu zmontować tego FDD35...).
Potem zaczęliśmy mówić o FPGA i emulacji. I tutaj już zaczynamy dyskusję o faktach, a nie odczuciach. FPGA to nie emulacja. Oczywiście możesz mówić, że jest inaczej, ale wówczas będziesz w błędzie.
No i tu skierowałeś dyskusję na swoje swoich osobiste odczucia, a nie fakty. W dodatku podnosisz temperaturę dyskursu stawiając się w roli jedynego nieomylnego, nie popierając tego niczym, poza własnymi odczuciami.
I oczywiście najprościej jest odbić piłeczkę - FPGA to
jest emulacja. Oczywiście możesz mówić, że jest inaczej, ale wówczas będziesz w błędzie.
hardware emulation is the process of imitating the behavior of one or more pieces of hardware (typically a system under design) with another piece of hardware, typically a special purpose emulation system. The emulation model is usually based on a hardware description language (e.g. Verilog) source code
(
https://en.wikipedia.org/wiki/Hardware_emulation)
Dalej jest konkretnie o zaletach stosowania FPGA, polecam cały ten wpis.