I've been trying to design a 65C816 computer for a while now and I'm running into some issues that I think go beyond a mistaken connection. I've sent two versions of this computer in for fabrication. The first board didn't work at all. The second board does work, but is unstable under certain conditions. Anyways, I'm starting to think my ideas on the glue logic and address decoding is flawed. For example, if I upload a program to RAM that will never use the EEPROM, it will still activate the EEPROM (briefly). So, running programs within the RAM tends to be unstable.
Here's the link to the full KiCAD project: https://github.com/halfburnttoast/TPC65_V3
For the most part, I'm taking it right from the 65C816's datasheet, using a HC573 and HC245 to latch the bank address. One mistake I did make was to use two 74ALS00's instead of 74HC00's. I don't remember why I went with ALS chips, but I know now that the ALS->HC interface is incompatible and could be a source of the instability.
I've also been cross-referencing my computer with the schematic of WDC's 65C816 SBC and I noticed that they qualified the RAM and ROM's #OE as:
Code: Select all
#OE = !(PHI2 & RWB)My proposed memory map looks like:
Code: Select all
0x000000 - 0x007FFF - BANK0 RAM
0x008000 - 0x00BFFF - IO
0x00C000 - 0x00FFFF - EEPROM
0x010000 + N - remaining banked RAM
So, rather than continue burning money on non-working boards, I'd like to see if there are glaring problems with my glue logic. From what I can tell, a lot of people who use the 65C816 use CPLDs as glue logic, but there aren't as many examples of jellybean logic gates, so I've mostly been taking notes from WDC's board. The clock source and serial interface is an Arduino Nano, which I've optimized to put out about a 2.28MHz clock signal. Any help would be appreciated! I can provide more details if needed.