ZX Spectrum > RÓŻNOŚCI
Wojny religijne: co jeszcze jest retro, czy FPGA to emulacja itp.
tapy:
Jak wspominałem wcześniej, każdy ma swoje indywidualne podejście do tego tematu, ja nie zmienię Twojego, a Ty mojego. Ja dopuszczam użycie jako peryferii układów CPU i FPGA, ale użycie ich jako procesor kłóci się z moim wyobrażeniem retro, emulacja namiarowymi bramkami przy równoległej emulacji lub nadmiarowym zegarem przy sekwencyjnym pozostanie dla mnie tym o czym pisałem.
Wracając do tematu wątku jestem w trakcie opracowywania aktywnego backplane RCBus (5 slotów+slot rozszerzenia), który będzie zaopatrzony w przetwornicę step-down MP1584, układ supervisora TL7705 oraz konwertera serial-usb CH340E. Chwilowo utknąłem na problemie dystrybucji zasilania (zasilanie od strony USB i/lub zewnętrznego zasilacza) co może się skończyć dodaniem jeszcze jednego układu, ale to wyjdzie w praniu.
PS. Wczoraj została wydana pierwsza wersja specyfikacji RCBus, zawierająca obsługę Z80 (niepełna niestety), 68xx i 65xx, w załączniku dokumenty.
Atlantis:
--- Cytat: tapy w 2023.03.18, 09:34:54 ---Jak wspominałem wcześniej, każdy ma swoje indywidualne podejście do tego tematu, ja nie zmienię Twojego, a Ty mojego. Ja dopuszczam użycie jako peryferii układów CPU i FPGA, ale użycie ich jako procesor kłóci się z moim wyobrażeniem retro, emulacja namiarowymi bramkami przy równoległej emulacji lub nadmiarowym zegarem przy sekwencyjnym pozostanie dla mnie tym o czym pisałem.
--- Koniec cytatu ---
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". I tutaj mamy do czynienia ze spektrum - po jednej stronie mamy budowę repliki Apple One w oparciu o oryginalne, nieprodukowane od lat siedemdziesiątych części, kosztujące na eBay'u nawet po kilkaset dolarów. Po drodze ludzie będą decydować się na kompromisy: układy CMOS zamiast TTL/LS, zastąpienie części logiki przez GAL/CPLD/FPGA, użycie przetwornicy impulsowej zamiast stabilizatora liniowego. Na końcu tego spektrum znajduje się programowa emulacja na współczesnych komputerach. I tutaj faktycznie każdy sam sobie wybiera co jest zgodne z tym, co postrzega jako "klimat retro". Ja mam w tym zakresie dość ostre restrykcje. :)
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. ;) Emulacja odnosi się do odwzorowywania zachowania oryginalnego systemu przez sofware'owy algorytm. FPGA odtwarza oryginalną architekturę w konfigurowalnej macierzy krzemowych bloków logicznych. Dwie zupełnie różne sprawy, dwa zupełnie różne podejścia, z których to drugie jest nieporównywalnie bliższe sprzętu. Ma też swoje zalety - w FPGA o wiele łatwiej odtworzyć oryginalne zależności czasowe, co przekłada się na stopień kompatybilności z oryginałem.
Ta różnica jest też dość dobrze widoczna z punktu widzenia programisty. Co prawda w VHDL-u jestem dopiero początkujący i robiłem na nim proste projekty (m.in. zegar do którego planuję dodać w przyszłości moduł synchronizacji przez DCF77) ale to wystarczyło, żeby poczuć różnicę. Proces pisania kodu pod CPLD/FPGA w dużo większym stopniu przypomina projektowanie urządzenia elektronicznego z układów TTL, niż pisanie sekwencyjnego kodu do wykonania na procesorze. Musisz się przestawić na zupełnie inny mindset.
--- Cytuj ---Wracając do tematu wątku jestem w trakcie opracowywania aktywnego backplane RCBus (5 slotów+slot rozszerzenia), który będzie zaopatrzony w przetwornicę step-down MP1584, układ supervisora TL7705 oraz konwertera serial-usb CH340E. Chwilowo utknąłem na problemie dystrybucji zasilania (zasilanie od strony USB i/lub zewnętrznego zasilacza) co może się skończyć dodaniem jeszcze jednego układu, ale to wyjdzie w praniu.
--- Koniec cytatu ---
Chętnie bym skorzystał z czegoś takiego. Dla mnie właśnie największym problemem w sporej części amatorskich konstrukcji jest zasilanie z okrągłej wtyczki 5V. Identyczne złącza dostarczające zasilanie o różnych napięciach i polaryzacjach od zawsze były zmorą świata retro. Łatwo mówić "uważaj co robisz", tylko ludzie tak nie działają. Wystarczy jedna chwila, kiedy jest się trochę bardziej zmęczonym albo zamyślonym i w wyniku podpięcia 9V zamiast 5V mamy zniszczone urządzenie. Takie sytuacje powinno się eliminować na etapie projektu, stosując gniazda unikalne dla określonego standardu zasilania (np. USB) albo obwody zasilania tolerujące szeroki zakres napięć i obydwie polaryzacje. Ja rozumiem, czterdzieści lat temu producenci chcieli oszczędzić, jednak jeśli dzisiaj budujemy urządzenie do którego części kosztują kilkaset zł, to nie wyobrażam sobie, żeby nie pomyśleć o takim zabezpieczeniu. Już parę razy kończyło się to tak, że po złożeniu płytki przyjmującej 5V (np. klon Cobry 1) wkładałem ją do obudowy z zewnętrzną przetwornica impulsową albo zasilaczem 230V. Dla świętego spokoju. ;)
trojacek:
--- Cytat: Atlantis w 2023.03.17, 10:59:57 ---Karta CF sama w sobie jest urządzeniem mocno retro
--- Koniec cytatu ---
Karta CF pojawiła się na rynku w 1994 roku, więc jest mniej "retro", niż np. FPGA (1985 - pierwszy komercyjny model Xilinxa XC2064).
--- Cytuj ---które zostało projektowane w taki sposób, aby móc pracować na magistralach bardzo starych urządzeń.
--- Koniec cytatu ---
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.
--- Cytuj ---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.
--- Koniec cytatu ---
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.
--- Cytuj ---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.
--- Koniec cytatu ---
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?
--- Cytuj ---Generalnie jest kilka poziomów, których wolę się trzymać.
1. Najbardziej postawowy (...)
--- Koniec cytatu ---
My favourite.
--- Cytuj ---2. Mocno uwspółcześnione projekty, gdzie procesor nadal jest fizyczny (...)
--- Koniec cytatu ---
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 ;)
--- Cytat: Atlantis w 2023.03.17, 17:03:16 ---W przypadku VHDL-a nie masz algorytmu. Masz opis zadania realizowanego sprzętowo
--- Koniec cytatu ---
...i opis zadania to jest właśnie algorytm!
--- Cytuj ---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.
--- Koniec cytatu ---
(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.
--- Cytuj ---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.
--- Koniec cytatu ---
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).
--- Cytuj ---FPGA nie ma wiele wspólnego z programową emulacją.
--- Koniec cytatu ---
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ą.
--- Cytuj ---Ma za to wiele wspólnego z technologią w jakie były produkowane takie układy jak ULA do ZX Spectrum czy ZX81.
--- Koniec cytatu ---
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.
--- Cytuj ---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.
--- Koniec cytatu ---
I z tego wynika podstawowa, funkcjonalna różnica: ULA była "kończona" przez producenta, a FPGA - przez użytkownika końcowego.
--- Cytat: Atlantis w 2023.03.18, 11:05:01 ---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".
--- Koniec cytatu ---
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...).
--- Cytuj ---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. ;)
--- Koniec cytatu ---
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. ;)
--- Cytuj ---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
--- Koniec cytatu ---
(https://en.wikipedia.org/wiki/Hardware_emulation)
Dalej jest konkretnie o zaletach stosowania FPGA, polecam cały ten wpis.
tapy:
Dorzucę jeszcze jeden temat do przemyśleń - odpowiednio duży EPROM, zatrzask i mamy działający Z80 :D
(uprościłem, w filmie jest odpowiedź) - https://www.youtube.com/watch?v=kfMMjk288co
Atlantis:
--- Cytat: trojacek w 2023.03.19, 14:15:23 ---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.
--- Koniec cytatu ---
Tak, ale jednocześnie karta CF potrafi pracować także w trybie ośmiobitowym, dzięki czemu może pracować właściwie bezpośrednio na magistrali procesora. Czasami trzeba tylko dodać bufor zapewniający odpowiednie poziomy logiczne.
--- Cytuj ---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.
--- Koniec cytatu ---
Zobaczy tutaj. Projekt zegara oparty na 8042. Działa to podobnie jak w przypadku 8051 - możesz mu kazać zignorować wewnętrzną pamięć i pobierać kod z zewnętrznej magistrali. Wtedy porty robią za szynę adresową. Tracisz większość pinów, ale możesz to sobie zrekompensować dodając na magistrali dodatkowy port równoległy. To że 8042/8242 był wykorzystywany głownie jako sterownik klawiatury (i taki firmware wgrywano mu fabrycznie) nie zmienia faktu, że jest to normalny mikrokontroler, który można wykorzystywać w rozmaitych projektach.
--- Cytuj ---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?
--- Koniec cytatu ---
Mam podobne podejście, ale już np. karta graficzna z HDMI zrealizowana na FPGA mi nie przeszkadza dlatego, że to rozwiązanie jest zdecydowanie bliżej sprzętu. Nic lepszego nie dostaniemy do czasu, kiedy ktoś wymyśli sposób na małoseryjną produkcję układów scalonych na podstawie kodu VHDL/Verilog. Dzisiaj to brzmi jak fantazja, ale kiedy zaczynałem bawić się elektronika amatorską nikomu nie śniło się, że będzie można wysłać pliki do Chin i po paru tygodniach dostać kilka sztuk w pełni profesjonalnych płytek drukowanych. Za kilkanaście dolarów...
--- Cytuj ---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 ;)
--- Koniec cytatu ---
Mi akurat procesor odtworzony w programowalnej logice nie przeszkadza. Problemy zaczynają się wtedy, jeśli odtwarzany układ miał jakieś istotne komponenty analogowe - tak jak SID z C64. Wtedy siłą rzeczy nie będziemy w stanie odtworzyć jego funkcjonalności za pomocą CPLD/FPGA.
--- Cytuj ---...i opis zadania to jest właśnie algorytm!
--- Koniec cytatu ---
Semantyka! ;)
Gdyby chcieć stosować tak szerokie definicje to trzeba by uznać, że każdy układ logiczny (nawet ten złożony z bramek) realizuje jakiś algorytm. Mi chodziło o coś innego - w przypadku (software'owej) emulacji mamy sekwencyjny kod uruchamiany na procesorze, którego celem jest odtworzenie działania jakiegoś hardware'u. W przypadku FPGA mamy syntezowany kod, który odpowiada za odpowiednie skonfigurowanie połączeń między blokami. Jest on odpalany na etapie uruchamiania urządzenia, a potem FPGA działa już jak normalna sieć elementów logicznych. Dosłownie fizycznie istniejąca w krzemie, a nie naśladowana przez program odpalony na CPU.
--- Cytuj ---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ą.
--- Koniec cytatu ---
Ok, czyli mówimy teraz o dwóch różnych rzeczach. Ja cały czas mówię o emulacji programowej, bo w świecie miłośników komputerów retro jest to domyślne znaczenie. Można oczywiście też użyć szerszego znaczenia, za słownikiem języka polskiego PWN: "wierne naśladowanie działania systemu komputerowego lub jakiegoś jego elementu przez inny system komputerowy"
Nawet wtedy odtwarzanie takiej funkcjonalności FPGA nie będzie emulacją, bo nie jest "systemem komputerowym".
A jeśli rozszerzymy jeszcze trochę znaczenie, to za emulację trzeba będzie uznać odtworzenie ULA ze Spectrum w postaci bramek TTL. :)
--- Cytuj ---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.
--- Koniec cytatu ---
I w sumie oryginalne podejścia są słuszne. Granie w gry sprzed trzydziestu lat na telefonie to ciągle granie w gry retro, chociaż nie na sprzęcie retro. To trochę tak jak dyskusja pomiędzy kolekcjonerem pierwszych wydań książek a kimś, komu zależy na tekście - choćby w formie ebooka. :)
--- Cytuj ---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.
--- Koniec cytatu ---
W Polsce ZX Spectrum był przez niektórych jeszcze mocno eksploatowany w pierwszej połowie lat dziewięćdziesiątych, a nawet później. Więc teoretycznie coś takiego mogłoby poznać, gdyby ktoś z użytkowników mógł sobie wówczas pozwolić na sprowadzenie karty CF. ;)
--- Cytuj ---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
--- Koniec cytatu ---
Tylko to jest właśnie bardzo szerokie znaczenie terminu "emulacja" i gdyby się go trzymać, to trzeba będzie uznać, że emulacją jest odtworzenie funkcjonalności ULA za pomocą układów 74xx (czyli Harlequin też emuluje Spectrum!) albo zreprodukowanie jej metodą inżynierii wstecznej w innym kawałku krzemu. W potocznym i najczęściej stosowanym znaczeniu emulacja odnosi się do uruchamiania starego softu za pomocą programowego emulatora.
Nawigacja
[#] Następna strona
Idź do wersji pełnej