Why does the SDRAM give warnings about bidirectional buffered ports
We need ports to be set to buffered in order to use:
- strobe signal
- built-in serdes functionality
Ad (1): Strobe signal (p_sdram_gate) allows you to align (for example) address, command and data to the same clock cycle. Timed outputs serve the same purpose, so you could for example say:
addr @ t <: 123
cmd @ t <: WRITE
data @ t <: data[0]
.
A port must be buffered in order to be strobed -> this is an artifact of current implementation. Because buffered ports don't have well defined behaviour for bidirectional operation, compiler gives a warning.
Note: I chose strobe signal rather than timestamps, because it is slightly more efficient in terms of execution time, which gives shorter setup time
Ad (2): Serdes allows you to output/input 32 bits of data at a time and the port will serialise or deserialise into/from 16 bits, 8 bits or 4 bits external data width.
Again, a port must be buffered in order to serialise and deserialise. In this case, that's how the architecture defines buffered ports and serdes.
Note: a good reference point for port operation and related topics is the "XC book", currently draft, available at:
.
. . . . . . www.xmos.com/system/files/xcxs1.pdf
- larry's blog
- Login or register to post comments



Comments
SDRAM
Larry,
I compiled the latest version of the Burst Software using the Latest Development Tools 9.9.0. When I run my software I get ET_ILLEGAL_RESOURCE. If I run the xe supplied it works. Can you enlighten me on what options I should use?