Pyripherals
Pyripherals: A Python Package for Communicating with Peripheral Electronic Devices - Published in JOSS (2022)
Science Score: 95.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 4 DOI reference(s) in README and JOSS metadata -
✓Academic publication links
Links to: joss.theoj.org -
✓Committers with academic emails
2 of 5 committers (40.0%) from academic institutions -
○Institutional organization owner
-
✓JOSS paper metadata
Published in Journal of Open Source Software
Scientific Fields
Repository
Python solution for communicating with peripheral ICs
Basic Info
- Host: GitHub
- Owner: Ajstros
- License: gpl-3.0
- Language: Python
- Default Branch: main
- Size: 2.16 MB
Statistics
- Stars: 2
- Watchers: 2
- Forks: 4
- Open Issues: 6
- Releases: 3
Metadata Files
README.md
pyripherals is a Python package for communicating with peripheral electronic devices. It has a Register class to keep track of internal registers, but is most useful when used with a FrontPanel compatible Opal Kelly FPGA. With that, pyripherals makes use of the FrontPanel API for Python and Verilog to communicate more easily on common interfaces such as I2C and SPI.
Quick Start
- Install with pip
Note that not all of pyripherals will work with Python 3.10
pip install pyripherals
To use an FPGA and peripherals:
Download FrontPanel from OpalKelly
Download Registers.xlsx from the GitHub
Create config.yaml with create_yaml and edit fields as needed
```python
from pyripherals.utils import createyaml createyaml() YAML created at C:/Users/username/.pyripherals ```
See Installation Guide for more information.
Documentation
Documentation is hosted on Read the Docs.
Acknowledgements
The FPGA code is dervied from many open-source contributions.
The Verilog I2C controller is from OpalKelly OpalKelly I2CController (MIT License).
The Verilog AD7961 controller is from Analog Devices and is free to use / redistribute as long as its used with Analog Devices parts (which must be the case since it does not work if connected to other parts). The Verilog is available within the EVAL-AD7960 evaluation kit software
The Verilog SPI Controller is from OpenCores.org and is authored by Simon Srot (GPL 2.1 or later license).
The Verilog wishbone master is written by Dan Gisselquist, Gisselquist Technology LLC. (LGPL, v3)
The DDR user interface (ddr_test.v) started with the OpalKelly DDR example provided in the FrontPanel example RAMTester and was significantly modified to support two ports.
The Python code relies on wonderful open source packages such as:
- numpy
- numfi
- matplotlib
- pandas
- openpyxl
- h5py
- pyyaml
- scipy
OpalKelly Module Compatibility.
We have targeted and tested with the XEM7310-A75 module (Xilinx Artix-7). We have not tested but anticipate reasonable portability to other USB 3 OpalKelly modules:
- XEM7310MT
- XEM7320
- XEM7305
- XEM7360
(Approximate) FPGA Block Diagram
This is the block diagram of the toplevelmodule.bit bitfile

Owner
- Name: Abe Stroschein
- Login: Ajstros
- Kind: user
- Repositories: 3
- Profile: https://github.com/Ajstros
JOSS Publication
Pyripherals: A Python Package for Communicating with Peripheral Electronic Devices
Authors
Department of Electrical and Computer Engineering, University of St. Thomas
Tags
instrument control data acquisition electrical engineering physics experimentsGitHub Events
Total
Last Year
Committers
Last synced: 7 months ago
Top Committers
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 15
- Total pull requests: 19
- Average time to close issues: 15 days
- Average time to close pull requests: 4 days
- Total issue authors: 4
- Total pull request authors: 3
- Average comments per issue: 0.47
- Average comments per pull request: 1.47
- Merged pull requests: 19
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 0
- Pull requests: 0
- Average time to close issues: N/A
- Average time to close pull requests: N/A
- Issue authors: 0
- Pull request authors: 0
- Average comments per issue: 0
- Average comments per pull request: 0
- Merged pull requests: 0
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- Ajstros (7)
- lucask07 (5)
- untzag (2)
- askuric (1)
Pull Request Authors
- Ajstros (12)
- lucask07 (6)
- cnbecks (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 1
-
Total downloads:
- pypi 10 last-month
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 3
- Total maintainers: 1
pypi.org: pyripherals
Python solution for communicating with peripheral ICs
- Homepage: https://github.com/Ajstros/pyripherals
- Documentation: https://pyripherals.readthedocs.io/
- License: GNU General Public License (GPL)
-
Latest release: 0.0.3
published over 3 years ago
Rankings
Maintainers (1)
Dependencies
- actions/checkout v2 composite
- actions/upload-artifact v1 composite
- openjournals/openjournals-draft-action master composite
- actions/checkout v3 composite
- actions/setup-python v3 composite
- h5py *
- matplotlib *
- numfi *
- numpy *
- openpyxl *
- pandas *
- pyyaml *
- scipy *
- PyYAML >=5.4.1
- h5py >=3.7.0
- matplotlib >=3.5.2
- numfi >=0.2.4
- numpy >=1.21.1
- openpyxl >=3.0.7
- pandas >=1.3.1
- scipy >=1.6.3
