Little status update ..
I sent an order some weeks ago for the rev2 GPU pcb that includes the full bus (address, data, control lines, +some extras like vblank); rev2 ratcheted up the pcb design complexity quite a bit .. I'm getting better at handling that density, but I suspect I either need more practice or the density just needs more layers or pcb surface size to work with (theres only so much you can do per square inch, though I'm not entirely sure of best practices there); adding header pins really causes a lot of extra trace crossing and travel distance. Anyway, that pcb design is nearly here at my place I think (taking its sweet time in transit!), so will be very interesting to see. ie: Smaller trace widths, much higher via and trace 'basketweaving' going on. Its all within Elecrow's specs for minimum distance/etc, but we'll see. Also fixed the one connection that needed me add a jumper for the jtag to work. When that arrives, I'll have a fun week hooking it up to an avr and some RAM to see if the bus control and framebuffer-in-ram is working well.
I've also added to the bus a chip-select for the gpu board, so in a a way we could send data to the gpu right over the bus (in addition to sertial, i2c, or via RAM/ROM.) And yes, the cart rom is available on the bus, so the gpu should be able to read it directly as well, and should be able to flash the cart; so the cart should be updatable from the eZ80 or the STM32
(with old school bus you've got some logic ICs in place to map addresses to chips and such, and I originally thought to ensure only RAM visible to the GPU.. but with eZ80 it can operate the chip selects through software address mapping, which greatly simplifies a few things (I had no space on the pcb
.. so with all that, cpu + gpu can both talk to the sound chip, ram, cart, and each other. Woowoo! (We'll see if it actually works in a few weeks.. it may just catch fire. But the design is sound, even if I have some mechanical issue.)
(There is some small question about specifics.. when interfacing a newer chip to an older chip, you've got to watch the chip expectations and outputs carefully; some of the datasheets are not quite as specific as I'd like, but it should all work out. Like an inverter chip.. you can use HC, LS, HCT, etc variations.. one of them will match, damnit, but IT hink I got it all sorted out.)
I had intended to wait to test this guy before sending in the base pcb, which is even more complicated again.. but with the long shipping times (too cheap to pay extra shipping
, I think I'm just going to send in the base pcb as well. If it all works, I'll have a working full machine here, so.. can't wait any more!
Annnnyway, I'm going to send in the base pcb design now; rather than wait; a little simplified from my goal the last few months, just due to lack of space for routing and parts, without increasing cost. Skipping including pluggable cpu's (for now), I've currently gone with eZ80 flat out since that was always the goal and it cuts down complexity. (and if thats the baseline, and if more than 1 person gets a zikzak going, it'll be nice if we can swap applications or carts a little
Of course, I had no luck with eZ80 before but that was squarely in the power supply arena so here's to having better luck this time. And also, I'm really really sick of routing 100pin SMT components, so hope it works so I don't have to do it again for awhile
Given the eZ80 wants to use a Zilog product (based on Visual Studio) to do flashing etc, its a bit annoying; I may have to build my own interface to that, but I'm not too worried.. the eZ80 itself should have a very minimal flash setup .. a basic bootloader code to check the cart, and do somethign if present or not. Maybe include some basic BIOS functions so the carts don't have to all duplicate the entire firmware, but not well defined yet. ie: It might be cool to put a little game or BASIC or something in the eZ80 flash, for when no cart is inserted. But thats all optional. Whats not optional is flashing the eZ80 memory map, so it knows what goes where, to handle the chip selects; it being configurable id awesome (originally was going to do it purely old school and use AND gates etc, to put screen at $xxxx address, and audio at $yyyy etc. Z80 reset vector is $0000. Anyway, now we can map things wherever we like, which is neat.. but it should be well defined and standard, so we can all depend on things working, and because its not like they need to change. So could always flash eZ80s and send them out with kits, or build a flasher or something.
Assuming a few people want in on this insanity, they may not be comfortable with soldering 100pin smt, so I get the impression I'll be doing those for peeps anyway. (ugh
.. at least I'm pretty good at it now
So, the base pcb, is also 4" square (ugh.. 4x6 would be awesome!)
- features the cart slot! totally sexy.
- features the AY-3-8912 audio chip (same as in Vectrex, Atari ST, many arcade games, you name it)
- has RAM on board; currently just supporting 128KB of RAM, though the eZ80 can actually handle quite a bit more
.. I had envisioned the RAM being primarily a single framebuffer, plus space for other stuff; the framebuffer RAM size depends on the resolution and mode... mind you, a full 640x480 is 300K (doh); 320x240 is about 76KB, 320*200 is 64KB, and 256x256 is 64KB. So we have a fairly good resolution to work with.
.. the ROM space iws quite large (couple of MB) so is plenty to play with
.. the GPU itself has the live framebuffer on it, which depends on the chip itself; 64KB or 128KB or a little more is workable; likely put some sprites in there..
- two joysticks
- ps/2 keyboard
...
- theres some spare GPIOs on the GPU and CPU, so could put an SD card interface on one side or the other fairly easily; all those sorts of mods are unofficial fun things to try
Right now due to board space, its all headers (there slike what, 17 headers on the base pcb!), so when I say joystick port or keyboard port, you solder on or jumper on some wires to a port; no big deal.
Once its all tested and happy, maybe I'll design a big one-piece pcb with actual connectors on it; not a big priority for me, but later, baby.
A heck of a lot of testing to do for me .. testing all the peripherals any numebr of ways (flashing the cart from z80, from gpu; communciation to gpu over serial, i2c, framebuffer, or gpu-as-bus device; joysticks, ps/2 keyboard driver in z80; various text and video modes; etc.) Its all worked in isolation, but all working together is another thing.
Probably anothe rev or two of the base pcb to fix bugs etc.. who know2s, maybe it won't work at all when it arrives
All part of the game..
--> but I'm quite stoked; all the zikzak pcb components are waiting to arrive. The gorramned design is 'done'. Not debugged yet, but done.
Woowoo
jeff