The CLB tile resources are allocated
as follows:
- COUNTER0 is used to receive the
input data. It is operated in serializer mode. DATA_IN is shifted in on BCLK_IN
falling edges.
- COUNTER1 is used to output the
transmit data. It is operated in serializer mode. COUNTER1 is shifted on BCLK_IN
rising edges.
- COUNTER2 is used to count falling
edges on BCLK_IN. It is operated in normal counter mode. It resets when an FSYNC
+ BCLK (low edge) condition is detected OR when the bit count reaches 32.
- LUT1 is used to reset COUNTER2 on
FSYNC_IN and word boundaries. FSYNC_IN is logically ANDed with BCLK_IN falling
edges to ensure FSYNC_IN is sampled only when it is guaranteed to be valid. LUT1
also triggers the HLC to pull new data from the PULL FIFO.
- FSM1 is used to generate an event
to the HLC once 4 32-bit words have been received/transmitted. It resets its
count when FSYNC_IN is detected.
- LUT0 and FSM0 are used to
generate the FSYNC_OUT signal when FSYNC_IN is detected. The FSYNC_OUT signal is
aligned to the BCLK_IN rising edge. Note that FSYNC_OUT is not a pass-through
signal of FSYNC_IN as this was not a design requirement.
- FSM2 is used to align the output
the DATA1_OUT signal to the BCLK_IN rising edge.
- The HLC is used to move data
between the CLB push/pull FIFOs and the two serializer counters (COUNTER0 and
COUNTER1). It also generates an interrupt to the CPU when 4 32-bit words are
received/transmitted.