Pyripherals

Pyripherals: A Python Package for Communicating with Peripheral Electronic Devices - Published in JOSS (2022)

https://github.com/ajstros/pyripherals

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

Mathematics Computer Science - 84% confidence
Last synced: 6 months ago · JSON representation

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
Created over 3 years ago · Last pushed over 2 years ago
Metadata Files
Readme Contributing License

README.md

Documentation Status DOI

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

  1. Install with pip

Note that not all of pyripherals will work with Python 3.10

pip install pyripherals

To use an FPGA and peripherals:

  1. Download FrontPanel from OpalKelly

  2. Download Registers.xlsx from the GitHub

  3. 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

JOSS Publication

Pyripherals: A Python Package for Communicating with Peripheral Electronic Devices
Published
November 10, 2022
Volume 7, Issue 79, Page 4762
Authors
Abraham Stroschein ORCID
Department of Electrical and Computer Engineering, University of St. Thomas
Ian Delgadillo Bonequi
Department of Electrical and Computer Engineering, University of St. Thomas
Lucas J. Koerner ORCID
Department of Electrical and Computer Engineering, University of St. Thomas
Editor
Daniel S. Katz ORCID
Tags
instrument control data acquisition electrical engineering physics experiments

GitHub Events

Total
Last Year

Committers

Last synced: 7 months ago

All Time
  • Total Commits: 201
  • Total Committers: 5
  • Avg Commits per committer: 40.2
  • Development Distribution Score (DDS): 0.244
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Ajstros a****s@g****m 152
Koerner k****s@g****m 36
Koerner k****4@S****U 7
delg5279 d****9@s****u 5
Cienna 1****s 1
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
new peripheral (1)
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

  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 10 Last month
Rankings
Dependent packages count: 6.6%
Stargazers count: 28.2%
Forks count: 30.5%
Dependent repos count: 30.6%
Average: 33.2%
Downloads: 70.1%
Maintainers (1)
Last synced: 6 months ago

Dependencies

.github/workflows/draft-pdf.yml actions
  • actions/checkout v2 composite
  • actions/upload-artifact v1 composite
  • openjournals/openjournals-draft-action master composite
.github/workflows/python-app.yml actions
  • actions/checkout v3 composite
  • actions/setup-python v3 composite
requirements.txt pypi
  • h5py *
  • matplotlib *
  • numfi *
  • numpy *
  • openpyxl *
  • pandas *
  • pyyaml *
  • scipy *
setup.py pypi
  • 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
pyproject.toml pypi