Without getting into programmable logic (GAL/CPLD/etc.), I'm faced with a choice of using an extra IC or having repeatable I/O addresses.
Currently, my design is using a 2:4 and 3:8 mux to get my I/O. I'm debating exactly where but for the sake of argument, let's say it will be like so:
Code:
2:4 MUX provides /IO for ($8000 - $BFFF).
A 3:8 MUX then provides:
EEE AAA
321 210
10 100xxxx NNN xxxx
A15 --------------> A0
x = Immaterial
N = I/O number (0-7)
The lowest 4 bits (A3:A0) are my 16 registers but the four bits A10:A7 would mean my I/O repeats 16 times. Correct?
I don't think that is the end of the world. But, it kinda bothers me a little. Not sure why.
Pros of leaving it this way:
1) Only two chips of glue logic. 74AC139 that feeds into the '138.
2) Only two chips means much less propagation delay.
Cons of leaving it this way:
1) *Only* 8 I/O devices. Which is a lot, really. But, I do plan on having a couple VIA's and a couple video/audio components. So I might actually eat up 8 pretty quick.
2) Repeatable I/O addresses. (This may not be a con, really).
An alternative is to leave out the 3:8 which would give me 10 I/O devices. But, tons of repeatable I/O. Meaning you could easily read/write from all 10 at once!
What are your thoughts?
BTW, this is my first SBC but I plan on keeping the speed around 1-2 MHz tops. And, expansion is important to me because I want to play around with making expansion cards like sound cards, etc.
Thanks!