Fabric configuration¶
FABulous fabrics offer a 32-bit wide configuration port which can either be driven directly by e.g. a CPU or bus or by the two currently implemented configuration adapters, allowing the transmission over UART and a custom bitbang protocol.
Parallel Port¶
Configuration data is written directly into the fabric through a 32-bit parallel port, rather than shifted in bit-serially. This is the main configuration interface which is also used by the UART and bitbang configuration adapters.
Signals:
SelfWriteData(32-bit data bus),SelfWriteStrobe(write strobe)Bus width: 32 bits - each transfer loads 4 bytes of the bitstream
Timing: Data must be valid on the bus for at least one clock cycle before
SelfWriteStrobeis asserted, and held stable while the strobe is high.
Configuration Adapters¶
To allow configuration from outside of a chip, currently two configuration adapters are implemented, allowing to upload a bitstream using a UART or a custom bitstream protocol.
UART¶
The configuration is sent to the fabric bit-by-bit over a UART link on Rx (since the adapter does not transmit anything, it’s technically just a “UAR”),
decoded, and assembled into 32-bit words that feed the configuration port.
Signals:
Rx(UART input),WriteData(32-bit, output to the parallel config port),WriteStrobe,Command(decoded command byte),ComActive,ReceiveLEDFrame format: standard UART frame — 1 start bit, 8 data bits, 1 stop bit
Baud rate: set by
ComRate = f_CLK / Baudrate(default217, e.g. 25 MHz / 115200 baud)Encoding modes:
auto,hex(2 ASCII hex chars per byte), orbin(raw byte), selected by theModeparameter or auto-detected from the command byteFraming: each transfer begins with a fixed ID header and a command byte before data bytes are accepted
Word assembly: 4 received bytes are packed into one
WriteDataword, thenWriteStrobepulses once per word, as the configuration interface expectsIntegrity check: a running checksum is accumulated over the data and validated against an expected checksum value
Timeout: an inactivity timeout resets the receiver to idle if no data arrives mid-transfer
Bitbang¶
The bitbang adapter offers a quick asynchronous serial configuration port interface that is ideal for configuring the fabric via a microcontroller. The idea of the protocol is as follows:
Bitbang¶
Signals:
s_clkands_data, as well as a one-cycle strobe output (active 1).Protocol: Data is sampled on each rising edge of
s_clk, and control is sampled on the falling edge.Word assembly: Both values get shifted in a separate register; if the control register sees the bit-pattern x”FAB0”, it samples the data shift register into a hold register and issues a one-cycle strobe output (active 1).
The next figure shows the enable generation (and input sampling) for generating the enable signals for
the control shift register and
the data shift register.