I read through most of this topic:
viewtopic.php?f=4&t=5229Which got me to thinking...(keep in mind I didn't fully understand all of it)...
I'm working on building a simple VGA controller using a Parallax Propeller. Now, the Propeller (Prop) is no slouch...having 8 cores of 20MIPS each.
However, in the real world, that doesn't mean I have gobs of free time between the two devices. The Prop takes 4 cycles to do just about anything (which is why you get ~20MIPS for an 80MHz core). And, of course, you need several instructions to do anything useful. Jac (and his L-Star SBC) has shown that using a Prop to directly drive a 65C02 (as RAM/ROM/IO) is pretty much limited to around 1 - 1.25 MHz. Which is respectable.
My SBC is running at 4 MHz at the moment. I'd be happy to slow it down to 1 MHz if I can't find another way.
So, here is what I'm after...I want to program the Prop to generate VGA but have the 65C02 write instructions to it and pass it data. Sort of like how the TMS9918 works.
I just don't think the Prop could handle a 4MHz CPU using it as RAM and then generate VGA during the half-cycle of 125ns.
Having good VGA (which the Prop excels at) is more important than super fast access. Besides, the Prop could receive a handful of instructions and the Prop could go off on its own and do them. Which could actually be faster than direct drive anyway.
I think what I will experiment with doing is having the Prop drive the clock directly. The Prop can easily generate a nice, 4 MHz square wave in the background and it doesn't even have to use one of the cores!
The 65C02 would read/write to a specific address...the Prop would pick on up that and then, halt the clock that it's generating. It could wait until the clock is high before it halts if that would be better.
It then could buffer that command into memory and restart the CPU. Meanwhile, another core (called COGs) could detect that buffered command and go to work.
What do you guys think?
The other option is to do it the "clean way". By driving RDY low when it detects a certain address AND the O2 is high. The advantage of doing it this way means I don't have to run a bodge wire from my VGA card into the oscillator pin. The other way means removing my oscillator completely and running a small wire from slot 3 over to the oscillator. Not the end of the world...but not as clean.
Opinions welcomed....