Quote:
It seems there are a lot of ideas in flight...
Looking back on it, this certainly is true! My last post was incredibly scatterbrained, which I apologize for. This often happens to me with my various projects, so I thank you for bringing it up so I can refocus on what I've got going here.
Honestly I should have not mentioned my slightly hair-brained DMA idea, currently it's only a concept and the development of that will have to wait for another time. I certainly need to improve my understanding of both hardware and software before I can work on that.
So, going back to my first post and refocusing on the goals of this project:
Quote:
- 65c02 running at 14mhz minimum, ideally 20mhz or higher
- At least 512k of RAM (yes, this means banking)
- 2 VIA's for general purpose I/O
- UART for serial interface
- Additional I/O space available for expansion
The latter 4 items on the list have been implemented, so most of my remaining uncertainty and where design efforts need to be focused is on the speed goal, which we've been discussing here. I did some work last night and it looks like we came up with similar designs conceptually, but I implemented it with discrete logic. The fastest implementation I could come up with requires 8 gates and selects the CS and /Clock-Strech lines in 7ns. I was aware of the 74FCT521, but a bit intimidated by the TTL output levels and the issues that may cause. I don't need to decode all of the top 8 address bits anyways, I'm giving each I/O device an entire page.
I hadn't thought about using the RAM /OE as a pseudo chip select though! I suppose that has the advantage that usually the IO and device is selected before the clock signal goes high so there is only still a single gate delay to the /OE signal.
Quote:
Decoding opcodes $24 and $44 is pretty easy (and I'll share some suggested logic some other time).
I am quite curious, but I'm pretty sure at this point that I'll just use the VIA to bank the RAM.
Quote:
But you lost me when you mentioned comparators. Do they relate to the cycle-steal DMA you mentioned?
My reference to compar
ators (Oops, I spelled it wrong the first time) was about using them to detect the desired opcodes by hard-wiring one input to either $24 or $44. Sorry, that was worded poorly the first time.
The 65C22 datasheet is very confusing, which I understand is typical for WDC. If you take the timing diagrams at face value, the VIA wants /CS and CS set up 10ns before Phi2 high, but the 65C02 at 14mhz only guarantees the address will be valid on the bus 5ns before Phi2 high! I figured something must be wrong there, so good to hear that they should work without a wait-state at 14mhz.
Attached are the updated schematics as of last night. Notable changes include the implementation of the "Fast I/O" select lines, a slight optimization of the normal I/O select, and removal of 1 of the ROM bank select lines. I also rearranged some things to clean them up and present the information better. Note that I have not annotated it yet, I ran out of time when working on it last.
Updated propagation delay times:
7ns for IO Clock Stretch Select
7ns for Fast IO select (both High and Low select lines)
11.3ns for 'normal' IO select
Pretty good, but perhaps there are still nanoseconds (or fractions of) to be squeezed out somewhere...
Thanks everyone!
-Z3d