bradleystach wrote:
Hi everyone.
Welcome aboard!
Quote:
Here are my initial component choices:
CPU: WDC 65C816
ROM: SST39SF040 512k x 8 Flash used as ROM
RAM: AS6C4008 512k x 8 Static RAM (x4)
IO: WDC 65C22 VIA (x2) and others TBD. Probably 65C51 for serial.
The vast majority of the glue logic I plan on implementing on an FPGA (hence the 3.3v limitation). I have had an FPGA development board for about 4 years that I have played around with and feel confident I can implement what I need.
Since this is a first-time effort, I recommend you scale back a bit and implement the glue logic in a CPLD, rather than an FPGA. Unlike the latter, the former doesn't require a configuration ROM. In my current project (POC V2), I use a Microchip ATF1504AS CPLD, programming it in-circuit via JTAG. My recommendation is based upon the fact that it's possible to design in more complexity than your troubleshooting skills can accommodate, possibly resulting in something that refuses to run.
512k × 8 SRAM is
available in 5 volts. The linked device is SOJ36, which despite the 50 mil pin centers, can be manually soldered. If you use a CPLD, you can build a 5 volt system and substantially broaden your I/O choices.
WDC's version of the 65C51 has hardware errata, which will complicate your driver code. There are much better, non-WDC, UARTs available, such as those produced by Exar and NXP (I use the latter).
Quote:
I plan on using it to provide the system reset circuit, system clock with a selectable run/single step mode, 65C816 data/address bus demuxing, address decoding providing up to 16 chip/slot selects, address remapping, and if I have enough room on the FPGA, video out to VGA, and stereo audio out.
As I said above, I think this is too much complexity for a first-time design.
Quote:
At startup the FPGA would hold the system in a suspended state while copying the ROM into RAM at a speed appropriate for the limits of the ROM. After copying the ROM, the ROM will be taken off the bus and then the FPGA will then start the system and enforce write protection on the RAM. I have an external programmer to get data into the ROM so the board should never require a 5v input into it except for Vcc.
At 8 MHz, I doubt that shadowing ROM into RAM will realize any performance improvement, unless you use an exceptionally slow ROM.
Quote:
The first question is what is your general sense for what I have planned? Does what I have planned sound workable? Does anyone have any suggestions?
See above.
Quote:
The 65C816 has the multiplexed address and data bus. Does anyone know if the upper 8 bits of the address are driven on the data lines during PHI2 low when the processor is in emulation mode? I saw a couple of 65C816 to 6502 adapter boards and they did not seem to be doing anything to isolate the data bus during PHI2 low. I haven't found anything indicating it is not driven when in emulation mode in the datasheet. Just wondering if I need to handle demuxing for a free run.
The '816 drives the bank bits onto D0-D7 in both modes. Your hardware has to be able to account for this characteristic regardless of operating mode.
Quote:
I also have a question about decoupling caps. Are the cap values that are generally used in 5v designs applicable for 3.3v or do I need to figure out different values specific to 3.3v? I have a general understanding of the digital side of things but analog might as well be black magic to me at this point.
I use 0.1 µF X7R MLCCs, rated at 50 volts. The usual item I order is AVX's part number SR215C104KARTR1. Be liberal in your use of bypass capacitors. Each active device should have one attached to each Vcc pin on the device, with minimum possible lead length. I also recommend placing one right at the power input jack to keep switching noise from wandering into the power source.
We have a sticky topic on
construction methods, which I highly recommend you read.