Quote:
I am not sure but I think there is a general problem with this approach.
What happens if you have two directly consecutive accesses to memory first from the left then from the right CPU?
Hmm... this depends... but this sure would be a problem for RMW operations like INC,DEC etc.
W65C02 has a /ML output signal that indicates a RMW operation and that maybe could be used for "stopping" the other CPU.
Quote:
I haven't investigated the schematics too closely, but the lack of a second clock strikes me.
I _think_ the /CE lines would be continuously active - so the chip would probably notice the change in address lines
and reads would probably work, but writes?
In my 74157 schematic above, the 74157 select was tied to a "main clock".
Two of the 74157 outputs then generate two (nearly) non_overlapping clock signals for both CPUs...
if one would be aiming for speed, having partially overlapping clock signals due to propagation delays
in the clock generation circuitry for both CPUs means trouble.
My schematics above only were intended to be a help for getting the concept for the timing a bit better,
so didn't take much care about address decoding, consecutive memory accesses and such.
Also, maybe some "tweaking" would have to be done for the propagation delays of the read/wite signals.
BTW: It is possible to tie /CS of a RAM permanently to GND, then to use only /OE and /WE for RAM read/write.
This might slightly improve speed of the RAM... by increasing standby power consumption of the RAM of course.
Did this when building my 68020 computer.
Quote:
I have done a coprocessor board that uses shared memory between two phase-shifted 6502, and it's using a "2phi2" clock,
basically a phase-locked twice-the-frequency Phi2 signal control the signals. It might be a bit complicated,
but there is a textual description with timing diagrams (in the desc text file accompanying the board)
Looks complicated indeed, reading all this will take some time...
Having some circuitry in the design from the start that generates clock and timing signals for two CPUs
sure is less fuss than adding a second CPU to an already existing system as "an afterthought".
To me, it's only a theoretical discussion because I never had more than one CPU in my homebuilt stuff.
Quote:
On the other hand - the old Commodore disk drive that used a similar shared memory system between their both 6502
(resp. 6502 + 6504) uses a simple 74LS157 A/B switch for the select and R/W lines controlled by one Phi2 for the 2114 RAM chips...
Using 74157 for switching the RAM address lines too is a nice idea.
Hmm... starting to wonder, if one could have two 6502s at each side of a dual port RAM... that's four 6502s in total.