Čipy, data, procesory

Dodatky ke knize právě vznikají pod názvem Čipy, data, procesory. Hlavní část textu se věnuje práci s programovatelnými logickými poli (FPGA) a jazyku VHDL, který slouží k popisu číslicových obvodů. Kromě syntézy počítačů z hotových komponent se dostaneme i k návrhu vlastního mikroprocesoru!

Dalšími tématy v knize jsou například krystalové oscilátory, návod, jak můžete přeprogramovat EEPROM přímo v počítači OMEN za chodu, střípky z historie mikroprocesorů, nebo třeba popis „šestnáctibitového 65C02“, tedy obvodu WDC 65C816, který poháněl některé modely počítačů Apple // a sloužil jako „SuperCPU“ ve stejnojmenné kartě k počítačům Commodore. Poprvé v češtině najdete i podrobný návod k použití extrémně vylepšeného osmibitového procesoru 6809 – Hitachi HD6309.

Kniha postupně vzniká, některé části jsou už napsány a zveřejněny, jiné zatím čekají. To, kdy budou dopsány, záleží jen na zájmu čtenářů. K dopsání můžete přispět i vy!

https://www.osmibity.cz/addons.html
Rubriky: Knihy, OMEN | Štítky: | Komentáře nejsou povolené u textu s názvem Čipy, data, procesory

MyMensch – 65C02 v novém

Víte, už jsem si myslel, že jsem jeden z mála bláznů, co přepisují staré procesory do FPGA. Tak: nejsem! Dělají to i jiní, lepší…

Třeba The Western Design Center, neboli WDC, společnost Billa Mensche, spoluautora MOS6502. Ta dodneška vyrábí nejen procesory W65C02, ale i šestnáctibitovou verzi W65C816, a oba dokonce jako mikrokontrolér se zabudovanými periferiemi a monitorem v ROMce (W65C134 a W65C265).

Ke všem procesorům mají i vývojové desky, můžete se mrknout: W65C02SXB, W65C816SXB, W65C134SXB a W65C265SXB. Pokud vás zaráží, že „mikrokontrolérové“ verze jsou levnější než ty s původními procesory, je to proto, že na desce s „holým“ procesorem jsou i periferní obvody, které u mikrokontroléru nejsou potřeba, protože jsou integrované.

Mimochodem, za necelých 20 USD nabízejí MENSCH Microcomputer, což je vlastně W65C816, 16bitový následovník slavné 65C02, zabalený spolu s několika periferiemi do podoby jednočipu (W65C265). Na desce toho o moc víc není, ale máte většinu pinů vyvedenou, a je to taková dobře použitelná varianta, když chcete nasadit 65C816 a zároveň ušetřit za periferie.

Ale zpátky k FPGA: Ve WDC samozřejmě už delší dobu nabízejí svoje procesory jako IP (Intellectual Property) pro syntézu obvodů v logických polích. Teď se rozhodli nabízet vlastní „nový“ procesor, opět jako IP, ale tentokrát připravili i vývojovou desku W65Cx65MMC, familiárně zvanou MyMensch.

Deska obsahuje kromě USB převodníku, spousty pinů, tlačítek RESET a NMI, osmi LEDek a JTAG rozhraní hlavně prostor pro FPGA řady MAX10 v provedení BGA.

Mají připraveno několik variant, ta první (Rev-A), která je dostupná na trhu a kterou po mém dotazu dali do prodeje i na Tindie, kde není omezení pro zasílání do ČR, obsahuje FPGA MAX10M08SC, ve kterém je „nahraný“ obvod W65C02i1M08SC.

Že jste o něm nikdy neslyšeli? Nedivím se, je to úplná novinka. Jak název napovídá, je tam W65C02 a je to v MAX10M08SC. Ale kromě samotného jádra 65C02 zaintegrovali i:

  • 2x W65C22 VIA (paralelní porty)
  • 2x W65C51 ACIA (sériové porty)
  • Rozhraní I2C
  • Rozhraní SPI
  • JTAG
  • HW násobičku a děličku
  • Paralelní rozhraní pro maticovou klávesnici 4×4 s debounce logikou
  • Rozhraní pro uživatelskou FLASH paměť UFM
  • Unikátní 64bitové ID
  • 30 kB RAM pro uživatelské programy (s mechanismem ochrany paměti proti přepsání)
  • 2 kB Boot loader
  • 12 kB RAM pro data
  • Hardwarový breakpoint
  • … a zbytek jsou vstupně-výstupní piny GPIO

Celé to běží na 14.7456 MHz, ACIA mají 1.8432 MHz (tedy maximální komunikační rychlost je 115200 Bd)

Blokové schéma, autor: dokumentace WDC

Pokud si chcete hrát s 65C02, i když ne s tou úplně originální, a chcete k tomu použít hotový systém s mnoha a mnoha možnostmi, dokonce i s modernější 3.3V logikou, zkuste třeba právě MyMensch.

Mimochodem, WDC na téhle technologii provozuje i nějaké gadgety pro Internet věcí

(Předpokládám, že můžete FPGA sami naprogramovat a použít tak desku jako běžný FPGA devkit, ale obávám se, že původní obsah už nezískáte…)

Rubriky: Emulace, Hardware, IoT | Štítky: , , | Komentáře nejsou povolené u textu s názvem MyMensch – 65C02 v novém

Zapište si do kalendářů: Patnáctého května vychází Porty, bajty, osmibity

Já vím, otravoval jsem tu s tím už rok, ale konečně se TO stane! 15.5. začne prodej druhé knihy, tentokrát věnované stavbě osmibitových počítačů. Ponese název Porty, bajty, osmibity a opět ji vydá sdružení CZ.NIC.

Celý příspěvek
Rubriky: ASM80.com, Hardware | Štítky: , | Komentáře nejsou povolené u textu s názvem Zapište si do kalendářů: Patnáctého května vychází Porty, bajty, osmibity

OMEN Kilo: Zapojení procesoru

Čím jiným začít, než fyzickým zapojením procesoru 6809…

Možná nepřekvapí jistá podobnost s procesorem 6502. Je to logické, protože, jak jsme si už několikrát řekli, 6502 i 6809 vycházejí ideově z téhož předchůdce, 6800.

Popis vývodů

Procesor má vyvedené obě hlavní sběrnice, jak datovou (D0 – D7), tak adresní (A0 – A15). Tady nás nečeká žádné překvapení. Signály nejsou multiplexované a jsou plně k dispozici.

Vstup /RESET slouží k inicializaci procesoru do výchozího stavu. Na vstupu je Schmittův klopný obvod, takže stačí jednoduché zapojení s kondenzátorem a rezistorem, podobně jako u předchozích počítačů. Po RESETu se načte adresa (2 bajty) z adres FFFEh a FFFFh a získaná hodnota se použije k nastavení programového čítače PC. Nezapomeňte, že 6809 používá ukládání ve stylu Big Endian, tedy nejprve vyšší část adresy, poté nižší. Vyšší část tedy bude na adrese FFFEh, nižší na FFFFh.

Výstup R/W informuje okolí o tom, jestli procesor hodlá číst (=1), nebo zapisovat (=0). Opět, podobně jako u 6502, se nerozlišují periferie a paměť, pro procesor je vše „paměť“.

Pro připojení krystalu se používají vývody XTAL a EXTAL. Pokud použijete externí generátor časovacích pulsů, přiveďte signál na vstup EXTAL a XTAL nechte nezapojený.

Uvnitř poběží procesor na frekvenci, která je rovna čtvrtině frekvence krystalu (popřípadě přivedené frekvenci). U OMEN Kilo jsem tedy použil frekvenci 7,3728 MHz, která po podělení čtyřmi dává naši oblíbenou pracovní frekvenci 1,8432 MHz.

Existují tři varianty tohoto procesoru, které seliší podle maximální pracovní frekvence: 6809, 68A09 a 68B09. Varianta bezpísmene pracuje na frekvenci 1 MHz, varianta A používá 1,5 MHz a varianta Bmůže pracovat až s frekvencí 2 MHz (to znamená, že externí krystal můžemít frekvenci 4, 6, resp. 8 MHz).

Pro řízení vnějších obvodů slouží hodinové signály E a Q. E má stejnou funkci, jakou má u 6502 výstup PHI2. Sestupnou hranou na výstupu E oznamuje procesor, že začíná operační cyklus. Poté přijde vzestupná hrana na výstupu Q a oznámí, že na adresní sběrnici je platná adresa. Následuje vzestupná hrana signálu E, sestupná signálu Q (bez speciálního významu) a celý cyklus ukončuje (a zároveň zahajuje nový) sestupná hrana signálu E, při níž přečte procesor data ze sběrnice.

Pro většinu jednoduchých případů můžeme signál Q (Quadrature time) ignorovat a pracovat pouze se signálem E, stejně jako u 6502.

Pozor na variantu 6809E! Tato varianta nemá interní oscilátor, vyžaduje externí generátor dvoufázových hodin a zapojení vývodů je lehce odlišné.

Výstupy BA a BS informují o tom, zda je procesor odpojený od sběrnice (ve stavu HALT / DMA) či zda reaguje na požadavek na přerušení apod. Za normálního chodu jsou oba v 0 a pokud nepotřebujete nějak speciálně reagovat na výjimečné stavy, můžete oba ignorovat.

Vstup MRDY slouží k témuž, k čemu sloužily vstupy READY, /WAIT či RDY – informuje o tom, že externí obvody nezpracovaly požadavek a že potřebují, aby procesor počkal. Pokud je tento vstup v log. 0, hodiny se zastaví ve stavu E=1, Q=0 a čeká se, až bude MRDY opět 1. Teprve pak procesor dokončí čtení dat, popřípadě přestane posílat data k zápisu, a pokračuje se dál.

Vstup /DMA/BREQ slouží k přerušení práce procesoru a jeho odpojení od sběrnice. Pokud je na tomto vstupu na konci aktuálního cyklu 0, procesor se uvede do stavu DMA a uvolní sběrnici. Uvolnění sběrnice signalizuje nastavením BS = BA = 1. Okolní zařízení teď má až 15 cyklů na to, aby si udělalo, co je potřeba. Po 15 cyklech si procesor vezme dva cykly pro vnitřní refresh a na tu dobu nastaví BS = BA = 0. Pokud stále trvá požadavek na DMA, celý postup se opakuje.

Vstup /HALT zastaví procesor podobně jako předchozí vstup. Do stavu HALT se procesor přepne poté, co dokončí aktuálně prováděnou instrukci. Opět se odpojí od datové i adresní sběrnice, odpojí i výstup R/W, a nastaví BS = BA = 1.

Přerušení

Poslední tři vstupy, o nichž jsem se ještě nezmínil, jsou vstupy /NMI, /FIRQ a /IRQ. Jejich stav je vyhodnocován ve chvíli sestupné hrany Q (E=1).

/NMI je dobře známé „nemaskovatelné přerušení“. Logická 0 na tomto vstupu vyvolá přerušení, které programátor nemůže programově zamaskovat. Jediná výjimka je těsně po RESETu, dokud není nastaven obsah v registru ukazatele zásobníku (S). Po detekování požadavku na NMI je na zásobník automaticky uložen obsah registrů PC, U, Y, X, DP, A, B a CC a procesor si z adres FFFCh a FFFDh načte adresu obsluhy nemaskovatelného přerušení. Toto přerušení má zároveň nejvyšší prioritu.

Téměř identicky se chová požadavek /IRQ. Dva rozdíly tu ale jsou. Zaprvé: adresa obsluhy přerušení se bere z adres FFF8h a FFF9h. A zadruhé: pokud je bit I v registru CC roven 1, přerušení se nevykoná.

Vstup /FIRQ (Fast IRQ) funguje obdobně jako IRQ. I tento vstup vyvolá přerušení (adresa obsluhy je v paměti na FFF6h a FFF7h), i toto přerušení lze zamaskovat bitem F v registru CC, ale hlavní rozdíl je, že neukládá na zásobník žádné jiné registry, jen programový čítač PC a registr příznaků CC.

OMEN Kilo CPU

Základní deska, která vychází z koncepce OMEN Bravo. Obsahuje jen procesor, 32 kB RAM, 8 kB EEPROM, dekodér signálů a nezbytné obvody okolo (RESET, krystal). Nakonec jsem k „nezbytným obvodům“ přidal i nám důvěrně známý 68B50 pro sériovou komunikaci. Díky tomu může být OMEN Kilo použit jako jednodeskový počítač, bez jakýchkoli dalších obvodů.

Pokračování příště…

Rubriky: Hardware | Štítky: , , , , | Napsat komentář

Jste unaveni z gigahertzů a terabytů?

Stýská se vám po starých zlatých časech, kdy jste přesně chápali, co se ve vašem počítači děje a proč? Říkáte si, že byste si zase s takovým počítačem rádi pohráli?

Máte šanci!

Sestavte si vlastní osmibitový počítač, se skutečným historickým procesorem a pár kilobyty paměti. Vyzkoušejte si jeho spájení a oživení, naprogramujte si vlastní obslužný software, navrhněte si vlastní periferie…

Jak na to?
Rubriky: Uncategorized | Štítky: , , , , | Napsat komentář

OMEN zdárně pokračuje

Konstrukce do druhé knihy úspěšně pokračují. Sledujte:

OMEN Alpha má už čtvrtou revizi (tentokrát mírně vylepšená systémová sběrnice, vyhozená LEDka a vyvedené vývody SID, SOD).

Na Tindie jsem Alphu vyprodal během dvou týdnů, teď čekám na nové součástky a novou várku desek. Máte-li zájem o desky, sady nebo hotové kity, napište se na waitlist.

Nahodil jsem jednoduchý manuál k Alfě, kde jsem si zavzpomínal na vizuální estetiku cyklostylovaných manuálů k PMD a podobným, s nimiž jsem kdysi trávil volné chvíle.

OMEN Bravo, tedy jednodeskáč s 65C02, po prvotním fiasku (ano, jsem debil a navrhnul jsem oscilátor blbě!) běžel na první zapojení.

OMEN Kilo, jednodeskáč s 68B09 aka nejlepším osmibitem své doby, dopadl stejným fiaskem. Ale tentokrát za to nemůžu já, ale moje skladové zásoby tohoto procesoru. Jsou mrtvé. Všechny. Takže čekám na nové…

Všechny tyhle OMENy mají stejné rozložení signálů na systémové sběrnici. Tedy, ona není úplně systémová, protože není kompletní adresová sběrnice, ale řekněme aplikační. Takže další přídavné moduly, co vznikají (displej, I2C/SPI rozhraní, zvukový generátor, SD karta, paměťové moduly, …), by měly být kompatibilní se všemi základními deskami. No a aby se připojovalo snáze, připravil jsem i malý backplane PCB, kam si je můžete popřipojovat.

Jeden z majitelů Alphy mě upozornil na problém: v PCB nejsou otvory na šroubky. Přiznám se, že mě to ani nenapadlo, protože mám v hlavě pořád vizi toho, že se budou tyhle desky montovat do krabiček, vytištěných na 3D tiskárně, a desky se uchytí jen takovými pacičkami, ale asi je pravda, že by se otvor či dva hodily…

Ve volných chvílích jsem napsal překladač pro BASIC. Vložíte BASIC, vypadne vám assemblerový zdroják. Zatím tedy jen pro 8080/8085. Na základní hraní, helejte, dobrý. Sice nemá moc optimalizací a je jen celočíselný, ale na druhou stranu má náznak procedur, lokálních proměnných, struktur datových i programových…

No a aktuální The Big Thing je online překladač céčka pro 6502, 8080 a Z80. Ne, nepíšu to celé sám a znovu, jen (a slovo „jen“ je v hodně velkých uvozovkách) jsem přeložil existující cc65 a z88dk pomocí Emscripten do JavaScriptu. Tři dny trvalo, než to začalo fungovat, bestie! Ale když se to rozběhlo, funguje to moc hezky.

A mimochodem, víte, proč cpu vývojové věci do JavaScriptu? Není to proto, že můžou běžet v prohlížeči, ale hlavně proto, že budou fungovat na Linuxu. Macu i na Windows. Cože? Že můžu napsat totéž v C a pak na každé platformě přeložit pomocí make? No, věřte mi, že za posledních dvacet let jsem potkal spoustu takového software, a pravda byla taková, že pokud někdo neudělal binárky pro jednotlivé platformy, tak pravděpodobnost toho, že to půjde bezproblémově přeložit a spustit, byla někde okolo 1:7…

Rubriky: Hardware | Štítky: , | Napsat komentář