Plugins ======= The functional behaviour of an FPGA board changes depending on the programmed firmware. Also, the hardware components of the board may change with different iterations. A dynamic system is required to support different firmware, firmware upgrades and hardware upgrades and configurations. A plugin based approach was adopted to allow compartmentilzation and encapsulation. Plugins can be associated with a specific hardware component such as ADC, PLL, FPGA, ETH etc. or firmware feature such as channeliser, beamformer etc. Plugins inherit an abstract plugin class which gives access to the board memory map and has abstract functions for initialization, status checking and cleanup. The TPM memory map is composed of a CPLD memory map, two FPGA memory maps and the memory-mapped SPI devices on the TPM, such as PLL and ADCs. In each case the memory map is stored as a compressed XML file in a block RAM. These XML memory maps are read from the TPM on connection and provide translation between register names and physical addresses. This makes the software flexible as no modifications are required to add new registers or to change the address of registers as they are referenced by name rather than address. In each plugin class, additional attributes can also be defined through decorators, these include * Friendly name, used to refer to a plugin instance * Compatible boards, this will be checked during plugin loading to be compatible with the board in use * Maximum number of instances, this will be checked during plugin loading, instantiating a number of plugins of that type larger than the defined maximum will generate an error * Firmware design association with major and minor version numbers, this will be checked during plugin loading, making sure that the current FPGA firmware is compatible with the plugin Available TPM Plugins ------------------------------------ .. toctree:: :maxdepth: 1 plugins/adc_ad9695 plugins/adc_power_meter plugins/antenna_buffer plugins/beamf_fd plugins/clock_monitor plugins/cpld plugins/eep plugins/f2f_aurora plugins/firmware_information plugins/firmwareblock plugins/forty_g_xg_core plugins/fpga plugins/integrator plugins/jesd plugins/mcu plugins/multiple_channel_tx plugins/pattern_generator plugins/pll plugins/preadu plugins/progflash plugins/qsfp_adapter plugins/spead_tx_gen plugins/station_beamf plugins/sysmon plugins/test_generator plugins/tpm_fpga_firmware