If you remember I had odd things happen with the scope on one of those DSACK pins from the FPU when it was going via the PLD. I think it would start working on X10. I do remember documenting those something incredibly sensitive about one of those signals. Which was why I wanted to decouple it from going via the PLD for starters.Badwolf wrote: 20 Jun 2023 11:02 That's interesting, it could mean that the FPU itself is stomping on its own accesses? That said you've changed the whole DSACK[x] logic, as I understand it, so I may be way off-base.
On my boards DSACK[x] was fully derived and there was a dedicated FPU_DSACK input to the CPLD. If you've now gone for an open-collector shared DSACK[x] bus between the CPU and FPU, I don't know what's reliable to sample any more.
Looking at the FPU datasheet it seems that DSACKx both go high basically within a few ns of AS going high.
FPU_CS itself seems to go low even before /AS does on the datasheet :shrug:
I don't see how CS goes low before AS.. that does not make any sense. In your code you did not have AS in there, I added yesterday but it did not make any difference IIRC.
I'm really starting to wonder about CS now. Is a datasheet wrong somehow ? because at the moment CS will be delayed (I assume) by a longer amount than waiting for AS to go low.
Or could just be some DSACK conflict from the previous bus cycle. But as you say XDACK should work also, but it doesn't.
Currently I just assume that delaying CS shifts DSACK timing by like 10ns and it causes it to work. I guess its possible DSACK internally in the FPU isn't timed correctly and its pushing DSACK low before the data is actually valid.

