Blackaddr
Well-known member
I want a high throughput interface to an FPGA that will act as a co-processor for doing FFTs. I could use multiple SPI busses but I'd rather try to get something going with Flexbus.
I've done some searching on Flexbus and I think Paul already said it's a no-go because certain pins are not broken out.
I checked the K66 datasheet as well as the Teensy 3.6 and it looks like the 'deal breakers' missing pins are
FB_TA (transfer acknowledge)
FB_TBST (burst transfer)
FB_TSIZ;1:0]
FB_BWEn
FB_CSn (for n != 0)
The following are present though:
FB_AD[19;0]
FB_CLK (via CLKOUT)
FB_CS0
FB_RWb
FB_TSb
FB_OEb
I'm speculating that you can still get a partial Flexbus working (up to 1 Mbyte addressable memory space with 20 address bits), but you will be restricted in how you use it. A driver would need to enforce these restrictions.
Mitigating the unavailable pins:
FB_TA/FB_ALE - with auto-acknowledge mode, I think this pin is not required.
FB_TBST - if we restrict ourselves to only burst mode, or non-burst mode, we can control this with a GPIO (or even tie it off on the slave). We would lose the ability to assign burst-mode on a transaction-by-transaction basis since the signal will be psuedo-staticly controlled.
FB_TSIZ - This would be controlled psuedo-statiicaly by GPIO as well, meaning all transactions must be exactly the same burst size as configured by these GPIO pins.
FB_BWEn - We would tie these off to indicate no byte-masking. For an 8-bit interface this is no problem, it's not needed anyway. For a 16-bit interface the driver would need to allow only transactions that are a multiple of 2 bytes in size to ensure no masking is required.
So, with some tight constraints on burst-mode and transaction size, I'm thinking there is enough critical signals broken out to get some use out of the Flexbus.
What am I missing?
I've done some searching on Flexbus and I think Paul already said it's a no-go because certain pins are not broken out.
I checked the K66 datasheet as well as the Teensy 3.6 and it looks like the 'deal breakers' missing pins are
FB_TA (transfer acknowledge)
FB_TBST (burst transfer)
FB_TSIZ;1:0]
FB_BWEn
FB_CSn (for n != 0)
The following are present though:
FB_AD[19;0]
FB_CLK (via CLKOUT)
FB_CS0
FB_RWb
FB_TSb
FB_OEb
I'm speculating that you can still get a partial Flexbus working (up to 1 Mbyte addressable memory space with 20 address bits), but you will be restricted in how you use it. A driver would need to enforce these restrictions.
Mitigating the unavailable pins:
FB_TA/FB_ALE - with auto-acknowledge mode, I think this pin is not required.
FB_TBST - if we restrict ourselves to only burst mode, or non-burst mode, we can control this with a GPIO (or even tie it off on the slave). We would lose the ability to assign burst-mode on a transaction-by-transaction basis since the signal will be psuedo-staticly controlled.
FB_TSIZ - This would be controlled psuedo-statiicaly by GPIO as well, meaning all transactions must be exactly the same burst size as configured by these GPIO pins.
FB_BWEn - We would tie these off to indicate no byte-masking. For an 8-bit interface this is no problem, it's not needed anyway. For a 16-bit interface the driver would need to allow only transactions that are a multiple of 2 bytes in size to ensure no masking is required.
So, with some tight constraints on burst-mode and transaction size, I'm thinking there is enough critical signals broken out to get some use out of the Flexbus.
What am I missing?
Last edited: