2020-11-17 12:44:57 -06:00
.. _fpga_arch:
FPGA Overview
-------------
2020-11-17 18:35:07 -06:00
.. _fpga_arch_overview:
2020-11-17 12:44:57 -06:00
2020-11-17 18:35:07 -06:00
Architecture Overview
~~~~~~~~~~~~~~~~~~~~~
2020-11-17 12:44:57 -06:00
:numref: `fig_fpga_arch` shows an overview on the architecture of the embedded FPGA fabric.
The FPGA follows a homogeneous architecture which only contains single type of tiles in the center fabric.
I/O tiles are placed at the boundary of the FPGA to interface with GPIOs and RISC-V processors (see details in :ref: `io_resource` ).
.. _fig_fpga_arch:
2020-11-19 17:13:27 -06:00
.. figure :: ./figures/fpga_arch.svg
2020-11-17 12:44:57 -06:00
:scale: 25%
:alt: Tile-based FPGA architecture
Tile-based FPGA architecture
.. _fpga_arch_tiles:
Tiles
~~~~~
The FPGA architecture follows a tile-based organization, to exploit the fine-grainularity in physical design, where three types of tiles are built:
.. table :: FPGA tile type and functionalities
2020-11-17 18:35:07 -06:00
+------+----------+----------------------------------------------+
| Type | Capacity | Description |
+======+==========+==============================================+
| CLB | 144 || Each CLB tile consists of |
| | || - a Configurable Logic Block (CLB) |
| | || - a X-direction Connection Block (CBx) |
| | || - a Y-direction Connection Block (CBy) |
| | || - a Switch Block (SB). |
| | | |
| | || This is the majority tile across the fabric |
| | | to implement logics and registers. |
+------+----------+----------------------------------------------+
| IO-A | 36 || The type-A I/O is a low-density I/O tile |
| | | which is designed to mainly interface |
| | || the GPIOs of the SoC. |
| | | |
| | || Each I/O-A tile consists of 1 digitial I/O |
| | | cell. |
+------+----------+----------------------------------------------+
| IO-B | 12 || The type-B I/O is a high-density I/O tile |
| | | which is designed to mainly interface |
| | || the wishbone interface and logic analyzer |
| | | of the SoC. |
| | | |
| | || Each I/O-B tile consists of 9 digitial I/O |
| | | cells. |
+------+----------+----------------------------------------------+
2020-11-17 12:44:57 -06:00
.. _fpga_arch_scan_chain:
Scan-chain
~~~~~~~~~~
There is a built-in scan-chain in the FPGA which connects the the `sc_in` and `sc_out` ports of CLBs in a chain (see details in :ref: `clb_arch_scan_chain` ), as illustrated in :numref: `fig_fabric_scan_chain` .
When `Test_en` signal is active, users can
- overwrite the contents of all the D-type flip-flops in the FPGA by feeding signals to the `SC_HEAD` port
- readback the contents of all the D-type flip-flops in the FPGA through the `SC_TAIL` port.
.. _fig_fabric_scan_chain:
2020-11-19 17:13:27 -06:00
.. figure :: ./figures/fabric_scan_chain.svg
2020-11-17 12:44:57 -06:00
:scale: 25%
:alt: Built-in scan-chain across FPGA
Built-in scan-chain across FPGA