Tijdens de pandemie van 2020 had ik wat tijd om handen en na het zien van verschillende Youtube filmpjes zag ik op marktplaats een partij Z80 chipjes staan. Toen dacht ik, dit ga ik ook doen! Een breadbord computer bouwen.
En ik dacht, het lijkt me leuk om dit met mensen te delen.
Mijn breadbord computer is opgebouwd rond een Z80 CPU en een regelbare klok dmv. een 555 timer. (eigenlijk 2 555 timers)
Als RAM heb ik een 32K SRAM chip van NEC(43256). Deze zal beginnen op adres 0x8000 tot 0xFFFF in het Z80 geheugen bereik.
De ROM is een AT28C256 EEPROM die leeft in adres ruimte 0x0000 tot 0x7FFF. De Z80 begint, na een reset, op adres 0x0000 en vind hier dan de EEPROM. Hierdoor heb je geen rare bank-switching nodig om eerst de EEPROM op 0x0000 te zetten of een redirect naar de EEPROM te moeten maken. Ook dit maakt dingen weer makkelijker.
Op adres 0x00, 0x01 en 0x02 in het IO-bereik is een HD44780 LCD aangesloten. 0x00 om data in de latch te zetten, 0x01 om de databus van de LCD terug te kunnen lezen en 0X02 voor de nodige instructie signalen(R/W, RS en E)
het begon hiermee:
En dat werd:
Onderstaand is een tekening van de CPU module. De data-, address- en controllbus worden hier gevisualiseerd dmv. LED's. Hierdoor kan je heel mooi volgen wat de CPU op dat moment aan het doen is.
Hieronder staan de RAM en ROM modules. Ze zijn niet heel bijzonder, maar wel noodzakelijk.
ROM. Deze zit op adres ruimte 0x0000 t/m 0x7FFF
RAM Deze zit op adres ruimte 0x8000 t/m 0xFFFF
De HD44780 LCD module heb ik van de grond af her-ontworpen. De LCD kan niet direct aan de bus, dus daarom deze redsign:
Ik heb ook een Z80-PIO chip aan het systeem hangen. Dit is een chip die aardig wat functionaliteit in zich heeft, maar ook gebruikt kan worden voor GPIO.
Op deze laatste manier gebruikt ik hem nu:
Als laatste komt het belangrijkste, het programmeren. Dit wil ik doen via SDCC in Code::Blocks. Maar door wat problemen hou ik het nu bij WinApe
Alhoewel dit wel een Amstrad emulator is, kan deze ook bin files exporteren vanuit zijn assembler. Welke weer op de EEPROM gezet kan worden. Dus voorlopig werk ik daarmee.
En ik dacht, het lijkt me leuk om dit met mensen te delen.
relevante info:
- eater.net Heel veel info te vinden over hoe een breadbord computer te bouwen, zelfs een breadbord CPU.
- Youtube.com Z80 onderwerpen op Youtube. Hier zitten ook wat breadbord projecten tussen.
- Z80.info Veel info over Z80 CPU's en de aanverwante chips, zoals PIO en Serial.(LET OP! GEEN HTTPS!)
- Youtube kanaal van ChibiAkumas over Z80 assembly
mijn project
Mijn breadbord computer is opgebouwd rond een Z80 CPU en een regelbare klok dmv. een 555 timer. (eigenlijk 2 555 timers)
Als RAM heb ik een 32K SRAM chip van NEC(43256). Deze zal beginnen op adres 0x8000 tot 0xFFFF in het Z80 geheugen bereik.
De ROM is een AT28C256 EEPROM die leeft in adres ruimte 0x0000 tot 0x7FFF. De Z80 begint, na een reset, op adres 0x0000 en vind hier dan de EEPROM. Hierdoor heb je geen rare bank-switching nodig om eerst de EEPROM op 0x0000 te zetten of een redirect naar de EEPROM te moeten maken. Ook dit maakt dingen weer makkelijker.
Op adres 0x00, 0x01 en 0x02 in het IO-bereik is een HD44780 LCD aangesloten. 0x00 om data in de latch te zetten, 0x01 om de databus van de LCD terug te kunnen lezen en 0X02 voor de nodige instructie signalen(R/W, RS en E)
het begon hiermee:
En dat werd:
Tekeningen van mijn modules
Onderstaand is een tekening van de CPU module. De data-, address- en controllbus worden hier gevisualiseerd dmv. LED's. Hierdoor kan je heel mooi volgen wat de CPU op dat moment aan het doen is.
Hieronder staan de RAM en ROM modules. Ze zijn niet heel bijzonder, maar wel noodzakelijk.
ROM. Deze zit op adres ruimte 0x0000 t/m 0x7FFF
RAM Deze zit op adres ruimte 0x8000 t/m 0xFFFF
De HD44780 LCD module heb ik van de grond af her-ontworpen. De LCD kan niet direct aan de bus, dus daarom deze redsign:
Ik heb ook een Z80-PIO chip aan het systeem hangen. Dit is een chip die aardig wat functionaliteit in zich heeft, maar ook gebruikt kan worden voor GPIO.
Op deze laatste manier gebruikt ik hem nu:
Programmeren
Als laatste komt het belangrijkste, het programmeren. Dit wil ik doen via SDCC in Code::Blocks. Maar door wat problemen hou ik het nu bij WinApe
Alhoewel dit wel een Amstrad emulator is, kan deze ook bin files exporteren vanuit zijn assembler. Welke weer op de EEPROM gezet kan worden. Dus voorlopig werk ik daarmee.

[ Voor 63% gewijzigd door Vuikie op 12-03-2021 10:38 ]