Jednodeskový mikropočítač Easy Z80

      19.3.2021 Poprvé jsem se dostal k mikropočítačům někdy v roce 1997 na SPŠE. Tam jsme se učili o legendárním 8-bitovém procesoru Zilog Z80. Na hardware jsme si ale bohužel ani nesáhli a veškerá praxe se odbývala jen v simulátoru EASYASZ80 1.30 pro DOS. A tak jsem si na univerzálním plošňáku postavil vlastní vývojový kit s eNDeRáckým klonem UA880D, paticí na RAM/EPROM a LEDkama na sběrnicích. Cyklus programování/mazání EPROM, při kterém jsem jednou málem vyhořel, když jsem zapomněl dlouho zapnuté horské slunce, byl příliš zdlouhavý a ubíjející a tak jsem na tom nikdy nic kloudnýho nenaprogramoval.
      Po mnoha letech, co mi Z80tka ležela v šuplíku (a přibyly další), tak jsem náhodou objevil na GitHubu jeden OpenHW/SW projekt jednoduchého jednodeskáče Easy Z80 od Sergeje Kiseleva, který se mi docela zalíbil a také už ho v ČR jeden bastlíř postavil. Deska je dvouvrstvá, v retro stylu - všechny součástky klasické THT o velikosti 10 x 10 cm, takže je levně vyrobitelná (2$ + pošta) např. v JLCPCB. K dispozici jsou jak výrobní GERBER data, tak zdrojové soubory schématu a PCB designu v KiCADu, které jsem si zkonvertoval do Altia, když jsem uvažoval o vlastních úpravách desky, ale nakonec jsem nad tím neměl moc čas přemýšlet a poslal to do výroby s várkou dalších desek tak, jak to bylo. Nyní zásilka z JLCPCB dorazila a mám k dispozici 5 kousků PCB, které jsem nabídl i dalším bastlířům.

JLCPCB received PCBs částečně osazený PCB Easy Z80

      Pustil jsem se s chutí do osazování a tak nějak předpokládal, že všechny potřebné součástky najdu v šuplíkách. CPU jsem použil Z8400AB1 s max. taktem 4 MHz od ST-Micro a časovač Z80 CTC mám přímo od Zilogu. Potíž nastala trochu se Z80 SIO, ale nakonec jsem vyhrabal jeho eNDeRácký klon UB8560D, který se dá i koupit v Hadexu za 39 Kč. Co mě kapánek překvapilo, že jeden čip UB8560D měl rozteč pinů 2,50 mm (což se prý dříve používalo v SSSR a i Tesla některé obvody s takovou roztečí vyráběla) a pak jsem našel další, s úplně stejným označením, ale s roztečí pinů 2,54 mm. Dekodér adres realizovaný v SPLD Atmel ATF16V8B jsem si naprogramoval z JEDEC fajlu pomocí programátoru LabProg-48. 512kB SRAM AS6C4008 mám pouze v SMD, měla by se dát koupit v GME (SMD verze R1LP0408CSP je výrazně levnější, jen 38 Kč) a TME. 512kB FlashROM SST39F040 jsem nahradil fleškou Sym EN29F040A-70P. Dále mi v šuplíku chybí poměrně neobvyklé logické obvody 74HC670, které mají v TME v LS verzi a čtvercové krystalové oscilátory v DIL pouzdru (mám jen ty větší obdélníkové). Na 1,843 MHz lze použít tento plasťák z GME (má navíc vstup OE, který se připojí na VCC) a na 4 MHz toto SMDčko z TME na nějaké redukční destičce/precizní patici.

      10.4.2021 Tak mi dorazily chybějící součástky z TME (kromě drahého watchdogu MAX693, který není nutně třeba) a mohl jsem se pustit do oživování. UPDATE: watchdog od Maximu lze nahradit levnější variantou ADM693ANZ od Analog Devices za 76 Kč (v TME zrovna není skladem, tak třeba na Mouseru). SMD krystalový oscilátor jsem nadrátoval shora na precizní patici DIL8 a otestoval, že dle datasheetu funguje i bez připojeného pinu enable. FW/SW podpora pro Easy Z80 je zahrnutá v rámci projektu RomWBW od verze 2.9.1 (stáhl jsem si aktuální verzi 3.0.1). Obsahuje BIOS/Monitor, operační systém CP/M-80 2.2, ZSDOS 1.1, BASIC, Forth a další různé utility. Součástí release balíku je i zkompilovaný ROM image EZZ80_std.rom, který jsem flashnul programátorem LabProg-48LV do flešky. Propojkový konfigurační soubor pro SPLD ATF16V8B je na GitHubu ve dvou verzích, s použitím watchdogu a bez něj. Já jsem tedy napálil soubor easy_z80_no_wdog.jed.

osazený PCB Easy Z80 test krystalového oscilátoru 4MHz

      Po zapnutí a připojení terminálu na Serial A (115200 baud) se však nic nedělo. Vytáhl jsem osciloskop a začal čmuchat po sběrnici. Hodiny dobrý, adresy se vrtí, CPU dává povely ke čtení z paměti, ale na datové sběrnici je nějaký bordel, jakoby se pralo více výstupů do sebe. Na řídicích signálech SRAMky jsem našel, že pin CS# má nějakou podivnou úroveň, ani L ani H. Pohledem do schématu bylo hned vše jasné - signál RAM_CSI# generovaný SPLDčkem jde skrz MAX693 na signál RAM_CS# do SRAMky. Takže jsem do patice zasunul drátovou propojku mezi piny 12, 13 a už to běželo. Tak pozor na to, v dokumentaci o tom není žádná zmínka. BTW všechny čipy na desce běží bez znatelného oteplení až na eNDeRácké SIO, které je docela teplé. Odběr celé desky je cca 300 mA @5,0 V, bez SIO 215 mA. Zde je výpis bootu z terminálu, bootloader nabízí ke spuštění několik možností. Frekvence CPU je zřejmě zakompilovaná natvrdo a pokud se z ní odvozuje nějaké časování, tak to asi budu muset překompilovat pro 4 MHz.


RomWBW HBIOS v3.0.1, 2020-04-04

EASYZ80 Z80 @ 10.000MHz
0 MEM W/S, 1 I/O W/S, INT MODE 2
512KB ROM, 512KB RAM

CTC: MODE=EZ IO=0x88
SIO0: IO=0x81 SIO MODE=115200,8,N,1
SIO1: IO=0x83 SIO MODE=115200,8,N,1
DSRTC: MODE=STD IO=0xC0 NOT PRESENT
MD: UNITS=2 ROMDISK=384KB RAMDISK=384KB
IDE: IO=0x10 MODE=RC
IDE0: NO MEDIA
IDE1: NO MEDIA
PPIDE: IO=0x20 PPI NOT PRESENT

Unit        Device      Type              Capacity/Mode
----------  ----------  ----------------  --------------------
Char 0      SIO0:       RS-232            115200,8,N,1
Char 1      SIO1:       RS-232            115200,8,N,1
Disk 0      MD1:        RAM Disk          384KB,LBA
Disk 1      MD0:        ROM Disk          384KB,LBA
Disk 2      IDE0:       Hard Disk         --
Disk 3      IDE1:       Hard Disk         --


EASYZ80 Boot Loader

ROM: (M)onitor (C)P/M (Z)-System (F)orth (B)ASIC (T)-BASIC (P)LAY (U)SER ROM  
Disk: (0)MD1 (1)MD0 (2)IDE0 (3)IDE1 

Boot Selection? Z

Loading ZSDOS v1.1...



CBIOS v3.0.1 [WBW]

Configuring Drives...

   A:=MD1:0
   B:=MD0:0

   4140 Disk Buffer Bytes Free

ZSDOS v1.1, 54.0K TPA

B>

      1.11.2024 Sehnal jsem chybějící obvod power on reset monitoru ADM693A. Po jeho osazení už CPU při zapnutí napájení spolehlivě naběhne a není třeba ho resetovat tlačítkem.



Zpět

Aktualizováno 20.11.2021 v 2:06