|
| 1 | +python-adc-eval |Lint| |PyPi Version| |Codestyle| |
| 2 | +=================================================== |
| 3 | + |
| 4 | +A python-based ADC evaluation tool, suitable for standalone or library-based usage |
| 5 | + |
| 6 | +Details |
| 7 | +-------- |
| 8 | + |
| 9 | +Package based on |
| 10 | +`esynr3z/adc-eval <https://github.com/esynr3z/adc-eval>`__ |
| 11 | + |
| 12 | +Tiny tools collection (Python |
| 13 | +`NumPy <https://numpy.org/>`__\ +\ `Matplotlib <https://matplotlib.org/>`__ |
| 14 | +based) to do spectral analysis and calculate the key performance |
| 15 | +parameters of an ADC. Just collect some data from the ADC, specify basic |
| 16 | +ADC parameters and run analysis. See `example.ipynb <example.ipynb>`__ |
| 17 | +(you will need `Jupyter Notebook <https://jupyter.org/>`__ to be |
| 18 | +installed). |
| 19 | + |
| 20 | +.. figure:: analyser.png |
| 21 | + :alt: analyser |
| 22 | + |
| 23 | + analyser |
| 24 | + |
| 25 | +References: - `Analog Devices MT-003 TUTORIAL “Understand SINAD, ENOB, |
| 26 | +SNR, THD, THD + N, and SFDR so You Don’t Get Lost in the Noise |
| 27 | +Floor” <https://www.analog.com/media/en/training-seminars/tutorials/MT-003.pdf>`__ |
| 28 | +- `National Instruments Application Note 041 “The Fundamentals of |
| 29 | +FFT-Based Signal Analysis and |
| 30 | +Measurement” <http://www.sjsu.edu/people/burford.furman/docs/me120/FFT_tutorial_NI.pdf>`__ |
| 31 | + |
| 32 | +Inspired by Linear Technology (now Analog Devices) |
| 33 | +`PScope <https://www.analog.com/en/technical-articles/pscope-basics.html>`__ |
| 34 | +tool. |
| 35 | + |
| 36 | + |
| 37 | +USAGE |
| 38 | +======= |
| 39 | + |
| 40 | +To load the library in a module: |
| 41 | + |
| 42 | +.. code-block:: python |
| 43 | +
|
| 44 | + import adc_eval |
| 45 | +
|
| 46 | +
|
| 47 | +Given an array of values representing the output of an ADC, the spectrum can be analyzed with the following: |
| 48 | + |
| 49 | +.. code-block:: python |
| 50 | +
|
| 51 | + import adc_eval |
| 52 | +
|
| 53 | + adc_eval.spectrum.analyze(<adc list>, <adc_bits>, <adc vref>, <adc fsamp>, window='hanning', no_plot=<True/False>) |
| 54 | +
|
| 55 | +
|
| 56 | +|pscope| Image source: `Creating an ADC Using FPGA Resources WP - |
| 57 | +Lattice <https://www.latticesemi.com/-/media/LatticeSemi/Documents/WhitePapers/AG/CreatingAnADCUsingFPGAResources.ashx?document_id=36525>`__ |
| 58 | + |
| 59 | +.. |pscope| image:: pscope.png |
| 60 | +.. |Lint| image:: https://github.com/fronzbot/python-adc-eval/workflows/Lint/badge.svg |
| 61 | + :target: https://github.com/fronzbot/python-adc-eval/actions?query=workflow%3ALint |
| 62 | +.. |PyPi Version| image:: https://img.shields.io/pypi/v/spithon.svg |
| 63 | + :target: https://pypi.org/project/python-adc-eval |
| 64 | +.. |Codestyle| image:: https://img.shields.io/badge/code%20style-black-000000.svg |
| 65 | + :target: https://github.com/psf/black |
0 commit comments