pyprofibus FPGA PHY documentation
Instead of using the serial port of the host computer to connect to the Profibus network an FPGA can be used. That improves the realtime capabilities and the speed of the pyprofibus system.
FPGA boards
Currently only the TinyFPGA BX is supported as FPGA.
However it's possible to add support for other FPGAs. The TinyFPGA BX has been chosen, because it has a fully Open Source toolchain. So the pyprofibus FPGA Verilog sources can be translated to the binary FPGA bitstream using only freely available tools.
The pyprofibus releases come with pre-built bitstream images. So there's no need for the user to install the toolchain and build the FPGA bitstream. The only tool that is needed is the "flashing/programming tool" that is used to transfer the binary bitstream to the FPGA board.
Flashing / Programming tool
For the purpose of writing/downloading/flashing the binary FPGA bitstream to the TinyFPGA BX board the tinyprog tool can be used.
The helper script tinyfpga_bx_program.sh shipped with pyprofibus in the subdirectory phy_fpga/bin/tinyfpga_bx can be used to conveniently call tinyprog with the correct parameters. Just connect the TinyFPGA BX board via USB to the computer and run the tinyfpga_bx_program.sh script. It does everything to program the pyprofibus PHY to your TinyFPGA BX.
Build toolchain
If you want to modify the FPGA sources and build your own version of the FPGA bitstream, the following tools are required:
Project IceStorm
The Project IceStorm is needed to build the bitstream for the TinyFPGA BX board.
Yosys
The Yosys Open SYnthesis Suite is required to synthesize the Verilog sources.
nextpnr
The nextpnr FPGA place and route tool is required for FPGA routing.
Python
Python 3.7 or later is required to auto-generate some parts of the sources.
GNU make an other standard GNU/Linux shell utilities
GNU make and various other standard GNU/Linux shell utilities, that are already installed on any Desktop Linux distribution. Building on Windows is not supported.
Downloading and installing all toolchain tools
The script build_fpga_toolchain.sh that is included in the pyprofibus archive can be used to download, build and install all FPGA toolchain tools to the $HOME directory.
Just run the script as follows. It will download all required packages, build and install everything to $HOME/fpga-toolchain by default.
cd phy_fpga/fpgamakelib ./build_fpga_toolchain.sh
After successful execution of build_fpga_toolchain.sh please read the information about $PATH that the script prints to the console. The line printed by the script shall be added to your $HOME/.bashrc
No changes to the operating system are necessary. Do not run build_fpga_toolchain.sh as root.
The toolchain can be uninstalled by simply deleting the directory $HOME/fpga-toolchain
Building pyprofibus PHY-FPGA
To build the PHY-FPGA sources run the following commands:
cd phy_fpga make clean make