exxos wrote: 10 Nov 2022 21:01
Badwolf wrote: 10 Nov 2022 20:51
Hmm, just a thought, is the CPU seeing dsack when the FPU is ssserting, I wonder? Perhaps the CPLD has a failure and can’t read from one of the FPU dsack pins. It would therefore not assert to the CPU correctly.
Well I would assume it is working because without the FPU it crashes right away, with the FPU, it does actually complete the first test.. it crashes on the second.
DSACK[x] indicates the size of the transfer, both or either can terminate the cycle. It's possible that only one of those is firing. You'd get detection, but failure in (some!) calculations.
This could be what we're seeing.
Badwolf wrote: 10 Nov 2022 20:51
Perhaps solder a wire to the bottom of the board for the dsack0 and 1 pins at the cpu and have cpu dsack0 on one channel with FPu dsack0 on the other? Same for dsack1?
Lost me now :lol: This is why I like the 68000, it has 1 DTACK, thats it. :lol:
But shouldn't DSACKx on the CPU have a pullup on it ? Or are you actively driving it from the PLD ?
Here's the AS/DS/DSACK[x] diagram:-
IMG_5994.jpg
So, yes, DSACK[x] to the CPU is driven at all times -- no pull-ups. The CPLD multiplexes DTACK from the motherboard, DSACK[0] from the DSP, and FPU_DSACK[1:0] from the FPU.
The points I've marked with 'OK' have been scoped as good, but it's just occurred to me that if the CLPD for some reason isn't reading one of those lines back properly, it might not be mirroring that assertion on the CPU's DSACK[x] lines.
Unfortunately probing the CPU DSACK lines means soldering a wire on the bottom of the CPU, or tapping the VIAs to the SW of the CPLD (as attached).
Anyway, I was thinking monitor FPU DSACK[0] on channel 1, CPU DSACK[0] on channel 2 and trigger on the former. There should be a 20~30ns delay between them. Repeat for DSACK[1]. If there's a mismatch, we've found our bug!
BW
Screenshot 2022-11-10 at 22.15.36.png
You do not have the required permissions to view the files attached to this post.