nuclei_fpga_eval.rst 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. .. _design_board_nuclei_fpga_eval:
  2. Nuclei FPGA Evaluation Kit
  3. ==========================
  4. .. _design_board_nuclei_fpga_eval_overview:
  5. Overview
  6. --------
  7. Nuclei have customized different FPGA evaluation boards (called Nuclei FPGA Evaluation Kit),
  8. which can be programmed with Nuclei Demo/Eval SoC FPGA bitstream.
  9. * **Nuclei FPGA Evaluation Kit, 100T version**
  10. This **100T** version is a very early version which widely used since 2019, it has a
  11. Xilinx XC7A100T FPGA chip on the board.
  12. .. _figure_design_board_nuclei_fpga_eval_1:
  13. .. figure:: /asserts/images/nuclei_eval_board.jpg
  14. :width: 70 %
  15. :align: center
  16. :alt: Nuclei FPGA Evaluation Kit, 100T Version
  17. Nuclei FPGA Evaluation Kit, 100T Version
  18. * **Nuclei FPGA Evaluation Kit, DDR 200T version**
  19. This **DDR 200T** version is a latest version which provided since 2020.09, it has a
  20. Xilinx XC7A200T FPGA chip on the board, and the onboard DDR could be connected to
  21. Nuclei RISC-V Core.
  22. This board is a choice to replace the *100T version*, and it could be use to evaluate
  23. any Nuclei RISC-V core.
  24. We also use this version of board to evaluate Nuclei UX class core which can
  25. run Linux on it, it you want to run Linux on this board, please refer to `Nuclei Linux SDK`_.
  26. .. _figure_design_board_nuclei_fpga_eval_2:
  27. .. figure:: /asserts/images/nuclei_ddr200t.png
  28. :width: 70 %
  29. :align: center
  30. :alt: Nuclei FPGA Evaluation Kit, DDR 200T Version
  31. Nuclei FPGA Evaluation Kit, DDR 200T Version
  32. * **Nuclei FPGA Evaluation Kit, MCU 200T version**
  33. This **MCU 200T** version is a latest version which provided since 2020.09, it has a
  34. Xilinx XC7A200T FPGA chip on the board, but there is no DDR chip on the board.
  35. This board is a choice to replace the *100T version*, and it could be use to evaluate
  36. any Nuclei RISC-V core with don't use DDR.
  37. .. _figure_design_board_nuclei_fpga_eval_3:
  38. .. figure:: /asserts/images/nuclei_mcu200t.jpg
  39. :width: 70 %
  40. :align: center
  41. :alt: Nuclei FPGA Evaluation Kit, MCU 200T Version
  42. Nuclei FPGA Evaluation Kit, MCU 200T Version
  43. There are also other fpga board we supported, such as KU060 and VCU118 board, please contact
  44. with our sales for details.
  45. Click `Nuclei FPGA Evaluation Kit Board Documents`_ to access the documents of these boards.
  46. .. _design_board_nuclei_fpga_eval_setup:
  47. Setup
  48. -----
  49. Follow the guide in `Nuclei FPGA Evaluation Kit Board Documents`_ to setup the board,
  50. make sure the following items are set correctly:
  51. * Use **Nuclei FPGA debugger** to connect the **MCU-JTAG** on board to your PC
  52. in order to download and debug programs and monitor the UART message.
  53. * Power on the board using USB doggle(for 100T) or DC 12V Power(for MCU 200T or DDR 200T).
  54. * The Nuclei FPGA SoC FPGA bitstream with Nuclei RISC-V evaluation core inside
  55. is programmed to FPGA on this board.
  56. * Following steps in `debugger kit manual`_ to setup JTAG drivers for your development environment
  57. .. _design_board_nuclei_fpga_eval_use:
  58. How to use
  59. ----------
  60. For **Nuclei FPGA Evaluation board**:
  61. * ``evalsoc`` can run on this fpga board, please choose the correct SoC, ``demosoc`` support is removed in 0.5.0 release.
  62. * **DOWNLOAD** support all the modes list in :ref:`develop_buildsystem_var_download`
  63. - You can find default used linker scripts for different download modes in ``SoC/evalsoc/Board/nuclei_fpga_eval/Source/GCC/``.
  64. - ``gcc_evalsoc_ilm.ld``: Linker script file for ``DOWNLOAD=ilm``
  65. - ``gcc_evalsoc_flash.ld``: Linker script file for ``DOWNLOAD=flash``
  66. - ``gcc_evalsoc_flashxip.ld``: Linker script file for ``DOWNLOAD=flashxip``
  67. - ``gcc_evalsoc_sram.ld``: Linker script file for ``DOWNLOAD=sram``
  68. - ``gcc_evalsoc_ddr.ld``: Linker script file for ``DOWNLOAD=ddr``. **Caution**:
  69. This download mode can be only used when DDR is connect to Nuclei RISC-V Core
  70. - If you want to specify your own modified linker script, you can follow steps described in :ref:`develop_appdev_linkscript`
  71. - If you want to change the base address or size of ILM, DLM, RAM, ROM or Flash of linker script file,
  72. you can adapt the `Memory Section`_ in the linker script file it according to your SoC memory information.
  73. * **CORE** support all the cores list in :ref:`develop_buildsystem_var_core`
  74. * Its openocd configuration file can be found in ``SoC/evalsoc/Board/nuclei_fpga_eval/openocd_evalsoc.cfg``
  75. To run this application in Nuclei FPGA Evaluation board in Nuclei SDK,
  76. you just need to use this **SOC** and **BOARD** variables.
  77. .. code-block:: shell
  78. ### For evalsoc
  79. # Clean the application with DOWNLOAD=ilm CORE=n300f
  80. make SOC=evalsoc BOARD=nuclei_fpga_eval DOWNLOAD=ilm CORE=n300f clean
  81. # Build the application with DOWNLOAD=ilm CORE=n300f
  82. make SOC=evalsoc BOARD=nuclei_fpga_eval DOWNLOAD=ilm CORE=n300f all
  83. # Upload the application using openocd and gdb with DOWNLOAD=ilm CORE=n300f
  84. make SOC=evalsoc BOARD=nuclei_fpga_eval DOWNLOAD=ilm CORE=n300f upload
  85. # Debug the application using openocd and gdb with DOWNLOAD=ilm CORE=n300f
  86. make SOC=evalsoc BOARD=nuclei_fpga_eval DOWNLOAD=ilm CORE=n300f debug
  87. ### For evalsoc
  88. # Clean the application with DOWNLOAD=ilm CORE=n300f
  89. make SOC=evalsoc BOARD=nuclei_fpga_eval DOWNLOAD=ilm CORE=n300f clean
  90. # Upload the application using openocd and gdb with DOWNLOAD=ilm CORE=n300f
  91. make SOC=evalsoc BOARD=nuclei_fpga_eval DOWNLOAD=ilm CORE=n300f upload
  92. If you want to try other toolchain, such as nuclei llvm or terapines zcc, you can pass an extra :ref:`develop_buildsystem_var_toolchain` make variable.
  93. .. note::
  94. * ``demosoc`` support is removed, please use ``evalsoc`` now.
  95. * You can change the value passed to **CORE** according to
  96. the Nuclei Demo SoC Evaluation Core the Nuclei FPGA SoC you have.
  97. * You can also change the value passed to **DOWNLOAD** to run
  98. program in different modes.
  99. * The FreeRTOS and UCOSII demos maybe not working in ``flashxip``
  100. download mode in Nuclei FPGA board due to program running in Flash is really too slow.
  101. If you want to try these demos, please use ``ilm`` or ``flash`` download mode.
  102. .. _Nuclei FPGA Evaluation Kit Board Documents: https://nucleisys.com/developboard.php
  103. .. _Memory Section: https://sourceware.org/binutils/docs/ld/MEMORY.html
  104. .. _Nuclei Linux SDK: https://github.com/Nuclei-Software/nuclei-linux-sdk
  105. .. _debugger kit manual: https://www.nucleisys.com/theme/package/Nuclei_FPGA_DebugKit_Intro.pdf