Armed with a new DSP host port testing program from @dml, the knowledge there's an intentional slight delay to address strobe assertion when accessing the DSP and measurably longer chip select assertion on the DSP itself when using DFB1, I've hitched up the logic analyser and started probing about.
The first thing that I've stumbled upon is that I don't understand how the DSP_DS signal is generated by U68.
From the GAL listings on dev-docs we have the line:-
Code: Select all
DSPDS = AS * DSP * DL1AS * /A5 * /A4 * /A3;Code: Select all
/AS = 3,
/DSP = 6,
A5 = 7,
A4 = 8,
A3 = 9,
DL1AS.r = 15,
/DSPDS.t = 14,
Interestingly AS, DSP, and DSPDS are declared as negative assertion, but DL1AS isn't. I don't know quite what effect that has, but presumably not what I was expecting as when we look at the stock Falcon's trace:
We can see that DL1AS goes low (I wanted to say asserts, but I don't know if that's right with the declaration above?) at the first positive clock edge after AS asserts. As expected.
We can then see that DSPDS asserts 20ns or less afterwards. This makes sense as DSP is low throughout and we can assume the address lines are behaving if the DSP is being triggered at all.
So far so good -- although I'm still a little confused by the DL1AS seemingly being treated as negative assertion in that equation when it's not declared as such, but I'm not exactly au fait with CUPL.
However where I'm really confused and asking for help is when we turn our attention to what the trace looks like with DFB1 enabled:-
Firstly it's obvious that the whole DSP host access cycle is much slower. About half the speed, in fact. This, I suspect, is the root of the problem we're seeing with Acetracker et al, but that's not the nub of my question. Yet.
We can see that, sure enough, DL1AS goes low at the next positive edge after AS goes low, but the next step, DSPDS going low, doesn't occur immediately. It's delayed about 80ns for no reason I can see.
It's a combinational output, always enabled with the key terms met (OK, technically I've not shown the address lines to keep the sample rate up, but they're all measured low).
WTF? Anyone with a better understanding of GALS, CUPL or the system in general give me any idea as to what's afoot here?
Is the U68 dump accurate, do we know? Could there be any other reason I'm missing?
This probably won't be the final smoking gun, but I'd say it may be up to 50% of the problem.
Cheers,
BW

