As noted in previous blog update, the rev 1 gpu had one little goof in the schematic; easily worked around with a single jumper on the breakout pins, still something annoying; more important however was adding in the full bus to the pcb so the GPU board could communicate at higher speeds to the other components of the zikzak; I rushed out GPU rev 1 just to make sure it was working and on the right track (I'm new to pcb layout!) and everything worked a treat. Adding the bus headers really brought up the pcb layout complexity (thats a lot of pins, and due to STM32 pin layout, quite a criss crossing mess.) The rev 2 GPU should arrive soon, and I'll be checking it out with a microscope to make sure that serious basket-weaving looks right .. and testing the sucker will keep me busy a couple of weeks while waiting for the rev 1 base pcb to arrive. (Testing the bus is hard without the rest of the system, but can at least rotate through various address sequences to check the o-scope, and wire up an avr and sram and try to simulate the bus to some level, get the gpu reading an external framebuffer.) Tricky stuff, but here's to hoping no need of a rev 3! One useful addition is the option to use one of these spare breakout pins as a gpu chip select, conceptually.. it may be possible to have the GPU pcb just listening on the bus, as if it were a discrete component; we'll have to see how fast that can work .. it would be pretty neat if the eZ80 can just write to GPU framebuffer as if it were local RAM.
The base pcb was going to have pluggable cpu's (and may still go that way), but for now .. with pcb real estate being very challenging to come by, I went for the eZ80 direct. With sound chip, some logic ICs, SRAM, cart slot, eZ80 and a pile of headers, that little 4“ square pcb is quite challenging to route. Adding pluggable cpu's just adds a little bit more complexity and would make it near impossible on such a sized pcb; adding another inch or two to one dimension, or another couple layers, quadruples the price more or less, so best avoided. The eZ80 simplifies a few things, and standardizing on a cpu (and the one I started this whole project aiming towards!) will make things easier for anyone who actually tries to build an application for this beast!
Base pcb includes then, the cpu, two joystick connectors, a ps/2 keyboard port, audio, and some expansion options such as bus to gpu, serial, i2c, etc.
With everything being on the bus, it should be possible for the cpu to flash the cart, or read it or the RAM, update the audio chip… or even do all this from the GPU too. Heck, could just run the GPU board without a cpu, and have an STM32 based game system. Its really a fairly flexible arrangement.
Time is tight right now but as I'm quite excited waiting for shipments, I had to do a quick post… I had trouble with eZ80 before, due to somethign entirely different, but it has me worried all the same! There is an ISP header for Zilog tools for flashing bootloaders etc, and that is something I've not really tested before. Again, hoping no need for rev 2, but we'll see. Squeezing it onto 4” pcb makes it cheap … if rev 2 is needed, its only about $15 away :)