{"id":27814462,"url":"https://github.com/diamondlightsource/dls-mbf","last_synced_at":"2026-01-21T09:02:39.029Z","repository":{"id":281830508,"uuid":"124875636","full_name":"DiamondLightSource/DLS-MBF","owner":"DiamondLightSource","description":"Diamond Multi-Bunch Feedback Processor Firmware and Software","archived":false,"fork":false,"pushed_at":"2025-03-11T10:40:09.000Z","size":8064,"stargazers_count":3,"open_issues_count":3,"forks_count":0,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-05-01T12:44:06.522Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"VHDL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DiamondLightSource.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-12T10:58:58.000Z","updated_at":"2025-03-11T10:40:14.000Z","dependencies_parsed_at":"2025-03-11T11:46:36.053Z","dependency_job_id":null,"html_url":"https://github.com/DiamondLightSource/DLS-MBF","commit_stats":null,"previous_names":["diamondlightsource/dls-mbf"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/DiamondLightSource/DLS-MBF","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiamondLightSource%2FDLS-MBF","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiamondLightSource%2FDLS-MBF/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiamondLightSource%2FDLS-MBF/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiamondLightSource%2FDLS-MBF/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DiamondLightSource","download_url":"https://codeload.github.com/DiamondLightSource/DLS-MBF/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiamondLightSource%2FDLS-MBF/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28630938,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T04:47:28.174Z","status":"ssl_error","status_checked_at":"2026-01-21T04:47:22.943Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-05-01T12:43:31.045Z","updated_at":"2026-01-21T09:02:39.019Z","avatar_url":"https://github.com/DiamondLightSource.png","language":"VHDL","readme":"Diamond Light Source Multi-Bunch Feedback Processor (MBF)\n=========================================================\n\nThis repository contains the firmware and software sources for running bunch by\nbunch feedback on a synchrotron.  The firmware and software was developed at\nDiamond Light Source and is designed to run on specific hardware documented\nbelow.\n\nFull documentation for using the system can be found at the `MBF Documentation`_\npages.  See the `Bringing up MBF`_ page for instructions on setting up MBF for\nfirst operation.\n\n..  _MBF Documentation: https://diamondlightsource.atlassian.net/wiki/x/GAAN\n..  _Bringing up MBF: https://diamondlightsource.atlassian.net/wiki/x/FgAN\n\n\nLICENSING\n---------\n\nThe firmware in this repository (all files under the ``AMC525`` directory) has\nbeen developed using commercial tools made available through the Europractice_\nservice.  As a consequence, this firmware is only available subject to an\nagreement with Diamond Light Source that the firmware and its source may not be\nredistributed and may not be commercially exploited.\n\nThis restriction does not apply to any of the other files in this repository.\n\n..  _Europractice: http://www.europractice.stfc.ac.uk/welcome.html\n\n\nMBF Components\n--------------\n\nThis repository contains the following components.\n\nFirmware\n    The firmware is in the ``AMC525`` directory.  The targeted hardware is an\n    AMC525 MicroTCA carrier card with an FMC500 ADC/DAC digitiser, and the\n    firmware is built with Vivado 2019.2.\n\nKernel Driver\n    The control system is designed to be run on a separate processor card on the\n    same backplane as the AMC525 carrier card.  The register interface to the\n    firmware is managed by a kernel driver in the ``driver`` directory.\n\nEPICS Driver\n    The control system is implemented as an EPICS IOC, all sources in the\n    ``epics`` directory.  Note that currently only EPICS 3.14 is supported.  To\n    build the EPICS driver and run the helper GUI scripts the following\n    dependencies are required:\n\n    =============== ======= ====================================================\n    Component       Version Download from\n    =============== ======= ====================================================\n    EPICS           3.14    https://epics.anl.gov/base/index.php\n    epics_device    2.0     https://github.com/Araneidae/epics_device\n    epicsdbbuilder  1.2     https://github.com/Araneidae/epicsdbbuilder\n    cothread        2.14    https://github.com/dls-controls/cothread\n    =============== ======= ====================================================\n\n    Note that epics_device must be at least the version shown.\n\nTune Fitter\n    A separate EPICS IOC is provided for computing machine tune and sidebands\n    from the result of tune sweeps.  This IOC is written in Python and uses the\n    following tool:\n\n    =============== ======= ====================================================\n    Component       Version Download from\n    =============== ======= ====================================================\n    pythonIoc       2.15    https://github.com/Araneidae/pythonIoc\n    =============== ======= ====================================================\n\n\nRelease Notes\n-------------\n\n1.0.0 May 2018\n..............\n\nThis was the first working release deployed at DLS.\n\n1.0.1 June 2018\n...............\n\nMinor bug fixes and refinements.\n\n1.1.0 August 2018\n.................\n\nBug fixes, some structural renaming: at this point LMBF was renamed to MBF\nthroughout the project.\n\n1.1.2 January 2019\n..................\n\nMinor changes:\n\n* Some improvements to the tune fitting algorithm to improve robustness.\n* Add selector to tune fitter to just take maximum value as proxy for peak.\n* Bunch-by-bunch control waveform editing has been improved.\n\n1.2.0 March 2019\n................\n\nThe firmware for this release is strictly incompatible with the 1.0 and 1.1\nreleases, and this is now checked during startup.  The following features have\nbeen added:\n\n* Tune PLL tracking is now available.  This is the major change in this release.\n* NCO frequencies are now 48 bits wide (rather than 32 bits).  This means that\n  frequency resolution will no longer be an issue anywhere.\n* Bunch by bunch gain control now has option for up to +30dB of extra gain.\n* New bunch rejection filter added for detector data.\n* Two changes to sequencer: now have optional holdoff at start of dwell, and can\n  optionally apply tune PLL offset as extra offset to sweep frequency.\n\n1.2.1 June 2019\n...............\n\nMinor tweaks, no change to firmware.  ``mbf_memory`` Python library merged.\n``mbf_read_tune_pll.m`` script rewritten and API changed.  Minor PV changes:\n\n* Remove ``BUN:n:ALL:SET_S`` PV: too easy to press by mistake and really\n  somewhat redundant.\n* Change semantics of ``ADC:THRESHOLD_S`` (LMBF only).\n\n1.3.0 September 2019\n....................\n\nMostly small changes to tune fitting, however the graphs have changed to show\nmagnitude and phase rather than power, and data weighting during fit is\nconfigurable.\n\nOne incompatible change is to correct the calculation of detector phase, which\nnow correctly advances in the negative direction with increasing frequency.\nThis affects the detector IQ and phase waveforms as well as the tune fitting.\n\nThis software is compatible with version 1.2.0 of the firmware which has not\nchanged.\n\n1.3.1 January 2020\n..................\n\nMove help pages to public confluence server.  No other change.\n\n1.4.0 February 2020\n...................\n\nThis is a place-holder release, and is essentially untested.  This release will\neither be followed with bug fixes or with further significant firmware changes.\n\nMajor firmware and control system changes, implementing the following:\n\n* New DAC MMS trigger source available.\n* Generated FIR data now available as input to DAC MMS, and for trigger\n  generation.\n* DRAM FIR source now comes from output scaled FIR data, so the memory FIR gain\n  control and overflow events have been removed.\n* Add second NCO, rename original NCO so now have NCO1 and NCO2.\n* Add option for fine gain control over all four NCOs (NCO1, NCO2, SEQ, PLL).\n* Add option for tune PLL offset tracking to NCO1 and NCO2.\n* Increase available FIR gain by 3dB and recalibrate gain settings so that 0dB\n  corresponds to true unity gain with a trivial unity FIR.  This means that\n  gain settings on 1.3 will need to be reduced by 12dB for 1.4.\n* Controls are provided to make it easy to copy bunch banks.\n* Super sequencer frequency offsets are now 48 bits.\n\nNote that the firmware is now built with Vivado 2019.2.\n\n\n1.4.1 March 2020\n................\n\nThis release will be deployed at Diamond for the run starting at the end of\nMarch 2020.  This release incorporates a major change to the bunch by bunch\ncontrol of output data.\n\nThe firmware for this version is incompatible with earlier releases.  The\nfollowing changes have been implemented:\n\n* Separate bunch by bunch gain controls for FIR and all four NCOs.\n* Tango support has been moved into a separate repository, MBF-Tango_.\n* The required version of epics_device has been bumped to 2.0.\n* The lowest FIR gain control setting now sets FIR output to zero.\n* The screens now refer to the ADC and DAC FIRs as the Compensation (COMP) and\n  Pre-Emphasis (PEMPH) filters respectively to reduce confusion with the bunch\n  by bunch FIR.\n\n\n1.4.2 May 2020\n..............\n\nThis release contains a bug fix to the string displayed in the ``:SEQ:MODE`` PV.\nOther changes include making the core Python scripts work with Python 3 and\nmoving the ``mbf_memory`` module to a separate repository PyMBF_read_.  There\nare no firmware changes in this release.\n\n\n..  _MBF-Tango: https://github.com/DLS-Controls-Private-org/MBF-Tango\n..  _PyMBF_read: https://github.com/DLS-Controls-Private-org/PyMBF_read\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiamondlightsource%2Fdls-mbf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiamondlightsource%2Fdls-mbf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiamondlightsource%2Fdls-mbf/lists"}