This project demonstrates the use of LiteX & migen to create a Neopixel driving FPGA based h/w unit,
called NPE ('neopixel engine'). The project requires a colorlight-5a-75b board (sells at ~18€ currently). A RISC-V CPU (RV32I) is incorporated as well as network RAM loading (2 banks!) & separate application flashing capability (MUCH faster, bringing flashboot
called NPE ('neopixel engine'). The project requires a colorlight-5a-75b board (sells at ~18€ as of 10/2020). A RISC-V CPU (RV32I) is incorporated as well as network RAM loading (2 banks!) & separate application flashing capability (MUCH faster, bringing flashboot
to life!).
To use this project effectively, you will have to install LiteX, see https://github.com/enjoy-digital/litex for details.
Also, it is recommended to install the board support, see https://github.com/litex-hub/litex-boards.
To communicate with your board via network, install the wishbone tools, see https://github.com/litex-hub/wishbone-utils.
For board specific details see https://github.com/enjoy-digital/colorlite/blob/master.
(Hint: project has been tested on Linux Mint 20 only, but should run on other Linux versions as well ...)
Also, a JTAG programmer will be required for successful device programming. Thanx to Wolfgang, I'm using the Versaloon (s/w for blue-pill STM32), see https://github.com/zoobab/versaloon. To use this device, you also will have to install openocd:
To use this project effectively, you will have to install LiteX, see https://github.com/enjoy-digital/litex for details. Project Trellis, NextPNR & YoSys shall also be installed.
Also, it is recommended to install the board support, see https://github.com/litex-hub/litex-boards.
To communicate with your board via network, install the wishbone tools, see https://github.com/litex-hub/wishbone-utils.
To use the automatic documentation feature, you will have to install sphinx, see https://www.sphinx-doc.org/en/master.
To use the automatic documentation feature, you will have to install sphinx, see https://www.sphinx-doc.org/en/master. Also its wavedrom extension has to be installed, see https://pypi.org/project/wavedrom.
A JTAG programmer will be required for successful device programming. Thanx to Wolfgang, I'm using the Versaloon (s/w for blue-pill STM32), see https://github.com/zoobab/versaloon. To use this device, you also will have to install openocd via 'apt install openocd'. See https://git.hacknology.de/wolfgang/colorlight#user-content-class-hub75sender for details, on how to connect the JTAG adapter.
*Neopixelar.py - this is the main FPGA building source
*neopixelengine.py - this is the actual NeoPixel driving engine
*helpers dir - contains python helpers for load & flash etc.
*firmware dir - contains some modified BIOS files (relative to the original version)
*software dir - contains a separate build, load & flash logic for separate (RV32i) application code
the rest is of minor importance ...
1. Neopixelar.py - this is the main FPGA building source
2. neopixelengine.py - this is the actual NeoPixel driving engine
3. helpers subdir - contains python helpers for load & flash etc.
4. firmware subdir - contains some modified BIOS files (relative to the original version)
5. software subdir - contains a separate build, load & flash logic for separate (RV32i) application code
(the rest is of minor importance ...)
## QUICKSTART ##
## Quickstart ##
After installation of the relevant toolchains:
1. Open the project in VSC (or use your favourite IDE & maybe adjust some settings ;), adjust local paths if nec. ...
@ -48,27 +55,31 @@ After installation of the relevant toolchains:
8. This time it will take even longer ...
9. And hopefully complete without errors. If successful, the basic ROM s/w is now in place & operating. In case of errors try again - rule out EMI disturbances if nec.
10. Create the actual documentation for html via: 'sphinx-build -b html build/documentation build/documentation/html'
11. Use your favourite browser to access the 'npe' units documentation via 'file://<projectpath>/build/documentation build/documentation/html/index.html'
11. Use your favourite browser to access the 'npe' units documentation via 'file://your_projectpath/build/documentation build/documentation/html/index.html'
## Individual (separate) applications ##
1. This time, open up a terminal & cd to the project local software subdirectory
2. You can load an application to RAM bank 1:
1. This time, open up a terminal & cd to the project local 'software' subdirectory
2. You can load an application to RAM bank 1:
./ramcreate.sh main illumination 1
3. To run the (now) RAM based application, type 'cd ..' within terminal
4. Connect the Litex-Terminal to the board via: wishbone-tool --ethernet-host 192.168.1.20 --server terminal --csr-csv build/csr.csv