I’m currently developing an application with the Au and Br using Alchitry Labs v1.1.6 in
Lucid, however I need many more switching outputs, so serial I/O expansion is needed.
The switching speed requirement is very high so SPI is my prefered choice and the
MCP23S17 16-Bit SPI Expander with serial interface is ideal for the application for
extending multiple GPIOs.
I’m asking for SPI implementation tips for the Au and Br as the current tutorial is
written for the Mojo, and I’m not sure how to use the spi_master compontent in
Alchitry Labs, or to add the SPI I/O to a constraints file.
There isn’t a specific constraint file for the Br since you will want to define your own pinout. Just use the pin numbers in your .acf file that are on the board (ie A2 for bank A pin 2).
I’ve developed a really cool project and custom .acf loosely based on your wave project, however this one switches Fibonacci quantities of 21, 34, 55 and 89 PWM outputs using the Au and the Br.
Push buttons with 330 Ohm resistors on B27 and B28 changes the frequency and the waveform and offset respectively. Was interested in possibly going up to 144 using SPI, but still confused with Bank D 23, 24, 27 and 28 as SPI on the Au. Now working on a MOFSET H-bridge signal generator at 4.2kHz with the signal from the FPGA.
BTW those Adafruit 10 pin IDC breakout cables on the Br keep that many GPIO nice and tidy.
So the “SPI” pins on bank D are on the Cu only. These aren’t really for using SPI in your project and connect to the SPI flash memory that is used to hold the FPGA’s configuration. You can access them in your design to read the flash memory if you really want to. It’s possible to use the extra space for stuff.
On the Au, these pins are the JTAG pins.
If you want to use SPI in your project, just select any four IO pins that are convenient and use those. The magic with FPGAs is that there are almost no special IO pins except for access to special routing resources like global and bank routes for clocks and resets.