Nový starý počítač

Mám tu pár námětů na přemýšlení… zase…

Postavit si nový starý počítač, rozuměj z nových součástek počítač v duchu dob předchozích, je oblíbená zábava nás, retronadšenců. Přístupů je několik:

  1. Postavit repliku starého stroje s identickými součástkami a původním schématem
  2. Postavit funkční repliku starého stroje tak, že některé součástky (typicky ty s nízkou integrací nebo paměti) nahradíme novějšími ekvivalenty (místo osmi čipů paměti jen jeden, místo glue logiky CPLD…)
  3. Postavit emulovanou repliku starého stroje (ZX Spectrum ve FPGA třeba)
  4. Postavit počítač vlastní konstrukce se součástkovou základnou z roku, řekněme 1984.
  5. Počítač vlastní konstrukce se starým osmibitovým procesorem, ale s novějšími periferiemi
  6. Počítač vlastní konstrukce, který sice využívá starý procesor a „ducha“ té doby, ale je třeba kompletně celý ve FPGA
  7. Počítač vlastní konstrukce s moderními součástkami a procesory, ale v duchu dob minulých (jednodeskáč s LED displejem a hexadecimální klávesničkou… a uvnitř Pentium třeba)

Plus cokoli mezi tím, že.

Já si teď hraju, po tom FPMI, s myšlenkou něčeho podobného. Některé věci jsou jasné:

  • Chci tam mít VGA výstup, protože monitorů je všude spousta a jsou levné, snáze sehnatelné než televize, jednoduše zapojitelné, a navíc generování signálu pro VGA není problém zařídit pomocí FPGA.
  • Chci tam mít SD kartu. Asi není potřeba o ničem debatovat, jednodušší alternativa není.
  • Sériový port potěší. A když už bude, tak bude rovnou jako USB, protože prostě proto.
  • Paměť bude SRAM na 3.3V, třeba někde okolo 512kB, a k ní bude jednoduchá MMU, jako když se rozšiřovalo Spectrum

Jinde se ještě rozhoduju.

Třeba klávesnice. U FPMI jsem použil tenhle retrokousek:

ale tentokrát budu chtít QWERTY. Mám dvě možnosti. Zaprvé – použiju jakoukoli klávesnici s PS/2. Je jich na trhu jako smetí, jejich připojení je jednoduché a máme ji doma všichni.

Zadruhé: udělám si vlastní. Líbila by se mi taková, jako byla u JPR-1 (ANK-1, pro pamětníky) – membránová. Je jednoduchá na výrobu, docela levná a vypadá správně děsivě. Když totiž hledám nějaká tlačítka s hmatníkem a vyšším zdvihem, z jakých bych mohl klávesnici sestavit, tak jsou výsledky žalostné.

Další otázka: Procesor. Líbil by se mi 6809/6309. Oba mám, to není problém. Problém je, že ho budu připojovat k FPGA, které používá 3.3V. 6809/6309 na tomhle napětí nepoběží. Podle některých by to šlo, ale brutálně podtaktované. Taky bych mohl použít převodníky úrovní – třeba ty s TXS0108 zvládnou i požadované frekvence.

Druhá varianta je použít 65C816 od WDC. Je to zajímavý hybrid mezi osmibitovým (6502) a šestnáctibitovým procesorem, ale hlavně funguje i na 3.3V (podle datasheetu by to na tomto napětí mohlo zvládnout frekvenci 14 MHz). Ergo bych ho jen tak připojil na FPGA, bez konvertorů, a celý počítač se mi tak smrskne na procesor, FPGA, statickou RAM.

Třetí varianta je nacpat celé jádro procesoru do FPGA taky. V tom případě bych asi použil 6809 – pro 6309 jsem nenašel vhodné funkční jádro, bohužel.

Otázka je, jestli přidávat FLASH nebo ne. Na jednu stranu je to jeden čip navíc, který zabere nemálo pinů u FPGA, na druhou stranu je zase práce s tím jednodušší. Druhá možnost je použít sériovou paměť FLASH a pro boot použít malou, třeba 1kB rutinu, která bude klidně uložena v interní paměti FPGA, po nabootování se přepíše do RAM, odpojí ROM a zavede z té sériové FLASHky celý systém. Třetí možnost je využít to, že stejně bude SD karta, a bootovat z ní. To by ale pak bylo na místě řešit věci jako práce s filesystémem na SD kartě už v bootloaderu, a to se mi asi moc nechce. Pravděpodobně tedy půjdu cestou druhou.

Takže: procesor mám, paměť i základní logiku taky, co dál? Periferie jsou jasné čtyři: klávesnice, VGA, SD a sériový port. Co dál je potřeba? Uvidím, kolik mi zůstane místa ve FPGA, a podle toho bych doplnil třeba druhý sériový port (k němu připojit ESP8266?) nebo SPI/I2C rozhraní, dostupné pro procesor jako periferie.

Zvuk? No, minimálně nějaký beeper se hodí. Dál bych ale asi zatím nešel, do budoucna můžu klidně zaintegrovat nějaký generátor hluku, buď jako samostatný čip (SAA1099, SN76489, SID, AY, …), nebo jako soft core do FPGA.

Displej chci jednoduchý grafický se základními barvami. Něco jako mělo Spectrum, trošku líp vyřešené atributy, ale zase nechci zaplácnout celý paměťový prostor (u 65816 by to asi nevadilo, ten dokáže adresovat až 16M) a ani rychlé by to moc nebylo. Nechci se zatím zabývat nějakým blitterem, akcelerátorem, hardwarovými sprity nebo něčím takovým.

Myš asi nebude hned nutná.

Zkrátka: představte si takové ZX Spectrum s procesorem 6809/65816, připojené k VGA a se SD místo diskety / kazety…

Zajímá mě, jak byste se vy rozhodovali v těch výše nastíněných otázkách…

Příspěvek byl publikován v rubrice Hardware se štítky , , , , . Můžete si uložit jeho odkaz mezi své oblíbené záložky.
  • Jindrich Kubec

    Co se týče grafiky, určitě bych šel nějakou hezčí cestou a la display list z 8bit atárek, nebo jejich chytřejší varianta z Amigy, případně se dá obšlehnout aspoň něco z konzolí jako je NES. „Něco jako spectrum“, to je tak rudimentární, že to snad ani není žádná výzva.

    Mimochodem 6502 cores pro FPGA existují a je to jednoduchý procesor se snadným programováním. (Ne že by 6809 nebo 65816 byly zásadně odlišné, jen jsem nezkoumal, zda jsou jejich cores k dispozici). Asi bych totiž vyšel z toho, že by bylo lepší, aby to celé žilo na 3.3V.

    Navíc s jednoduchou logikou řadiče paměti si uděláš nekonečně paměti (stránkování), přimapuješ si IO/bloky ze SDkarty do paměťovýho prostoru apod.

    Já jsem tu asi popsal 8bit atárko, že? 🙂

    • http://www.maly.cz Martin Malý

      6502 nechci, ten procesor se mi zas tak moc nelíbí. Když už, tak tu 65816… A 6809 k dispozici jako soft core je.

      „Lepší“ grafika (display list, sprity, tiles, …) přijde s dalším počítačem, teď chci „jednoduchou grafiku“. „Mapování SD karty“ na hardwarové úrovni je docela overkill, tam mi bohatě stačí udělat ji jako periferii a la IDE (do registrů zapíšu adresu bloku jako LBA a někam se mi namapuje buffer).