barnacle wrote:
There are a number of reasons I don't want to use a CPLD, not least of which is 75mA current but also because it's something I know little about and don't have the capability to program them. Using discrete logic has the advantage of transparency, so the logic isn't hidden away.
what exactly is wrong with the current draw? unless you're running from battery it shouldn't really be an issue regardless of what power source you use (even USB is enough).
learning about Programmable logic is the least issue as it requires the same knowledge as working with discrete logic. if you want to be lazy like me you can just use a logic simulator like Digital, which allows for your circuits to be exported as Verilog or be directly compiled for ATFxx compatible ICs. of course you'd still need a programmer though... the ATF/GAL22Vx series can be programmed using the always amazing to have TL866II plus.
plus with programmable chips the logic isn't "hidden", you still have to design it yourself so it's very much visible, just shifted from your breadboard/PCB to your PC. and that is a pretty big advanatge once you're out of the breadboard phase of a project, as it means any mistakes you made in the logic is easily fixed without having to physically modify the circuitry (cutting traces, running botch wires, or ordering new PCBs).
but as always, each to their own, ultimately it is your system so you decide how to run it.
barnacle wrote:
I'm not considering a segment/offset architecture (I had enough of that with the 8086!)
in that case how do you map the banks into physical RAM? one way would be to just take the whole 16-bit address bus and just slap the additional 4 address lines from the Register File ontop of that, giving you a 20-bit address bus which is easily covered with 2x 512k chips (like the AS6C4008, which comes in a DIP Package but is slightly more expensive as the IS61C5128AL). i think that would also mean that none of the banks can ever overlap.
on a side note, if you have some VIA pins to spare you could in theory use one of those instead of the 4x4 register file, though that would require 2x 74HC153 Multiplexers for the address selection. but it would save you the logic for interfacing the register file (ie writing to it)
barnacle wrote:
One of the VIAs will probably be talking to a 128Mb flash serial chip with some basic filesystem (not yet written) on it. As yet undecided: to use a 68B50 or an SPI uart (possibly both).
hmm, you could go for an SD Card as well. using FAT16 or similar as the file system would allow for interfacing with a modern system to make it easier to get programs and other files onto it. (unless you want your system to be a self contained thing with it's own assembler and such, in which case you could try to get GeckOS or similar running on it as a later project).
and speaking of VIAs, how do you plan to hook up the Interrupt lines from them? just AND them together and have your ISR check each VIA to find the one that caused it? seems like the easiest option to me.