NanoBoard SPI Communications - Interface Wiring
Related articles: NB2DSK01 SPI System Overview, NanoBoard 3000 SPI System Overview
Accessing an SPI-compatible resource from within an FPGA design is most easily accomplished by placing and wiring a Serial Peripheral Interface Controller component and an SPI-based port component, which represents the pins of the physical FPGA device. Of course, you may be using your own HDL-based controller or, if feeling brave, attempt bit-banging direct from the processor in your design. Use of an available SPI Controller component however, provides a simple and efficient interface solution.
Depending on the hardware used in your system (NanoBoard NB2, 3000-series NanoBoard, peripheral board(s)), a range of SPI slave resources will be available to you. Most of these resources will be accessible over a common, multiplexed SPI bus. If using a 3000-series NanoBoard, an additional number of SPI resources on the motherboard will be accessible through direct communications links – an independent SPI link to each resource in question.
The following sections take a closer look at the available port components for use in a design when interfacing to SPI resources.
Interfacing to Common-Bus SPI Resources
Related article: Accessing the Common SPI Bus from an FPGA Design
Several SPI-based (and resource-specific) port components exist for use in a design. Each port component interfaces to the same set of physical device pins, the only difference is in the associated graphic of the component – used to better reflect the target slave SPI resource being communicated with. Table 1 summarizes the available SPI-based port components, including the library in which they can be found.
Note that only one such SPI-based port component may be used in a design. If you wish to communicate with multiple common-bus SPI resources from your design (though not concurrently), a generic port component is available (see Using Multiple SPI and I2C Devices in a Design).
Interfacing to Common-bus SPI Resources on the NanoBoard NB2 | |||
Component Symbol | Component Name | Used to Interface to... | Placed from... |
---|---|---|---|
SERIALFMEMORY | one of the user M25P80 8-Mbit SPI Flash memory devices | FPGA NB2DSK01 Port-Plugin integrated library (FPGA NB2DSK01 Port-Plugin.IntLib). | |
TOUCH_SCREEN_DIGITIZER | the AD7843 touch screen digitizer device | ||
Interfacing to Common-bus SPI Resources on the NanoBoard 3000 | |||
Component Symbol | Component Name | Used to Interface to... | Placed from... |
SERIALFMEMORY | one of the user M25P80 8-Mbit SPI Flash memory devices | FPGA NB3000 Port-Plugin integrated library (FPGA NB3000 Port-Plugin.IntLib). | |
Interfacing to common-bus SPI Resources on Peripheral Boards | |||
Component Symbol | Component Name | Used to Interface to... | Placed from... |
AUDIO_CODEC_CTRL | the CS4270 24-bit, 192kHz stereo audio CODEC device on the PB01 | FPGA PB01 Port-Plugin integrated library (FPGA PB01 Port-Plugin.IntLib). |
Interfacing to Independent SPI Resources on the NanoBoard 3000
When using a 3000-series NanoBoard, several port components are available for use in a design when you want to access any of the independent SPI resources – those resources to which the User FPGA has dedicated (and independent) SPI communications links. Each port component interfaces to a unique set of physical device pins. Again, the associated graphic of the component reflects the slave SPI resource being communicated with.
Table 2 summarizes the available SPI-based port components, all of which can be found in the FPGA NB3000 Port-Plugin integrated library (FPGA NB3000 Port-Plugin.IntLib
).
As each of these resources has a dedicated SPI bus, you may use any or all of these port components in the same design. A separate SPI Controller peripheral component would be placed in the design for each resource being used. In addition, you can interface to one or more common-bus SPI resources in the same design also (see previous section).
Component Symbol | Component Name | Used to Interface to... |
---|---|---|
ADC | the ADC084S021 4-channel, 8-bit ADC device | |
AUDIO_CODEC_CTRL | the CS4270 24-bit, 192kHz stereo audio CODEC device | |
DAC | the DAC084S085 4-channel, 8-bit DAC device | |
TFT_PEN | the XPT2046 touch screen controller device |
Port-plugin libraries can all be found in the \Library\Fpga
folder of the installation. These libraries are automatically added, by default, to the Installed Libraries list – part of the Available Libraries for a design project.