I'll send you the code you can take a look at it all. Having problems uploading the file, keep getting HTTP errors, so need to go fix that nowBadwolf wrote: Tue Jun 20, 2023 1:23 pm I'm not sure that's right.
You'll be double-driving the DSACK[x] lines if that's all that's changed. There's no high-z option in there that I can see so the FPU would be trying to drive DSACK[x] low and this term would be trying to drive them high. There must be a high-z in there somewhere?
Can all registered uses please login, even just for a few minutes..
It helps build a picture where our "good traffic" is coming from..
Thanks :)
It helps build a picture where our "good traffic" is coming from..
Thanks :)
exxos's DFB1 trials
Re: exxos's DFB1 trials
Re: exxos's DFB1 trials
OK, I've had a look and if you've got both the FPU and CPU on the DSACK[x] lines to the CPLD then it does indeed look like you're double-driving it. That'll be putting a lot of strain on the FPU as it tries to sink all the CPLD's current and on the CPLD as it tries to overpower the FPU! Yikes!
The obvious thing to do would be to not drive DSACK[x] when the fpu line is active, but since you queue the fpu line on the DSACK[x] lines, that'd be a circular dependency.
You could try this:-
That should, AFAICT, drive DSACK[x] as open drain. Only driving when one or both of the lines are active.
It might fix a couple of problems.
BW
The obvious thing to do would be to not drive DSACK[x] when the fpu line is active, but since you queue the fpu line on the DSACK[x] lines, that'd be a circular dependency.
You could try this:-
Code: Select all
wire [1:0] DSACK_IN = ( RAM_DTACK & ROM_DTACK & DSP_DTACK & FPU_DSACK_INT & { FLASH_DTACK, 1'b1 } ); // change your FPU delay logic to use this wire
assign DSACK = ( DSACK_IN == 2'b11 ) ? 2'bzz : DSACK_IN;
It might fix a couple of problems.
BW
DFB1 Open source 50MHz 030 and TT-RAM accelerator for the Falcon
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Re: exxos's DFB1 trials
@Badwolf
I commented out this as well though..
Your adding it back in, .. there isn't a FPUDSACK anymore...
So maybe your code should be using fpu not FPU_DSACK_INT ?
I commented out this as well though..
Code: Select all
wire [1:0] FPU_DSACK_INT = fpu | FPUDSACK;So maybe your code should be using fpu not FPU_DSACK_INT ?
Re: exxos's DFB1 trials
Ah, sorry. No you're right that shouldn't be in there:-exxos wrote: Tue Jun 20, 2023 2:08 pm @Badwolf
I commented out this as well though..
Your adding it back in, .. there isn't a FPUDSACK anymore...Code: Select all
wire [1:0] FPU_DSACK_INT = fpu | FPUDSACK;
So maybe your code should be using fpu not FPU_DSACK_INT ?
Code: Select all
wire [1:0] DSACK_IN = ( RAM_DTACK & ROM_DTACK & DSP_DTACK & { FLASH_DTACK, 1'b1 } ); // change your FPU delay logic to use this wire
assign DSACK = ( DSACK_IN == 2'b11 ) ? 2'bzz : DSACK_IN;
BW
DFB1 Open source 50MHz 030 and TT-RAM accelerator for the Falcon
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Re: exxos's DFB1 trials
Added that in bought in order to use DSACK_IN I had to move the fpu code about a bit as it wouldn't compile as DSACK_IN is at the bottom of the code and FPU stuff at the top..Badwolf wrote: Tue Jun 20, 2023 2:10 pmCode: Select all
wire [1:0] DSACK_IN = ( RAM_DTACK & ROM_DTACK & DSP_DTACK & { FLASH_DTACK, 1'b1 } ); // change your FPU delay logic to use this wire assign DSACK = ( DSACK_IN == 2'b11 ) ? 2'bzz : DSACK_IN;
So now I have.
Code: Select all
wire [1:0] DSACK_IN = ( RAM_DTACK & ROM_DTACK & DSP_DTACK & { FLASH_DTACK, 1'b1 } ); // change your FPU delay logic to use this wire
assign DSACK = ( DSACK_IN == 2'b11 ) ? 2'bzz : DSACK_IN;
wire [5:0] DT_DELAY; //exxos bodge - DONT LET FPU_CS GO LOW UNTIL DSACK HAS BEEN LOW FOR A WHILE
FDCP ff_dtdly0( .D(DSACK_IN), .C( ~CPUCLK ), .CLR(1'b0), .PRE( AS ), .Q(DT_DELAY[0]) );
wire fpu = DT_DELAY[0] | fpux; Code: Select all
wire fpux = {FC,A[19:16]} != 7'b1110010; // co-processor decodeUnfortunately I just get a row of bombs when trying to test the FPU now
But shouldn't the DSACK_IN has the fpu in there somewhere to high-z them on fpu access ? Or does that just go high-z on everything other than what is listed ?
EDIT:
I put back fpu instead of DSACK_IN, and it still works. I guess if it prevents any DSACK shorts then thats a good update. It would seem it can't be relating to DSACK then , otherwise I assume having DSACK_IN in the delay for FPU_CS would have worked otherwise
So need a new theory now then I guess
Maybe something on the bus isn't quite stable yet like the address bus or something
Re: exxos's DFB1 trials
The high-Z is handled in the assign DSACK line. It's saying whenever both DSACK_IN lines are high, don't drive the pins. No FPU dependency in there.exxos wrote: Tue Jun 20, 2023 2:23 pm But shouldn't the DSACK_IN has the fpu in there somewhere to high-z them on fpu access ? Or does that just go high-z on everything other than what is listed ?
I'd start off by removing all your FPU hacks and seeing if it runs like that. If not, then start to re-introduce hold-offs.
If fpux has a dependcy on DTACK_IN, then I wouldnt' want DTACK_IN to have a (circular) dependency on fpux.
BW
DFB1 Open source 50MHz 030 and TT-RAM accelerator for the Falcon
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Re: exxos's DFB1 trials
@Badwolf ah no it was supposed to be ~DSACK_IN (inverted) for my code.
So now the FPU is working again...
So now the FPU is working again...
Re: exxos's DFB1 trials
Good news, then!
By the way, there's quite a lot of superflous chaff in that firmware. I'll have a go at hacking it down to the minimum necessary when I get a chance. I suspect it's been compiled out but it won't hurt to spruce it up.
There's a time-delay in there that I've since figured out why it's needed so I can hopefully alter that and free up a bit of CPLD-space too.
BW
By the way, there's quite a lot of superflous chaff in that firmware. I'll have a go at hacking it down to the minimum necessary when I get a chance. I suspect it's been compiled out but it won't hurt to spruce it up.
There's a time-delay in there that I've since figured out why it's needed so I can hopefully alter that and free up a bit of CPLD-space too.
BW
DFB1 Open source 50MHz 030 and TT-RAM accelerator for the Falcon
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Re: exxos's DFB1 trials
I need to get rid of all my crap firstBadwolf wrote: Tue Jun 20, 2023 2:52 pm By the way, there's quite a lot of superflous chaff in that firmware. I'll have a go at hacking it down to the minimum necessary when I get a chance. I suspect it's been compiled out but it won't hurt to spruce it up.
Still having problems at 50MHz. Might slap another 1K on the DSACK pins for the hell of it.
Re: exxos's DFB1 trials
I'd play with the inline termination resistor on the CPU clock line. 100R, perhaps?exxos wrote: Tue Jun 20, 2023 3:10 pm Still having problems at 50MHz. Might slap another 1K on the DSACK pins for the hell of it.
BW
DFB1 Open source 50MHz 030 and TT-RAM accelerator for the Falcon
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark
Smalliermouse ST-optimised USB mouse adapter based on SmallyMouse2
FrontBench The Frontier: Elite 2 intro as a benchmark

