Skip to content

Repository files navigation

msc-nova

Mixed-Signal Converters Course Notebooks

-----------------------------------------------------

Overview

made-with-python

This repository contains Jupyter Notebooks for the Mixed-Signal Converters course at the Faculty of Sciences and Technology, NOVA University of Lisbon (FCT-NOVA).

The course covers the systems theory, design, and practical aspects of Nyquist data-rate Digital-to-Analog (DAC) and Analog-to-Digital Converters (ADC). Content on oversampled converters (sigma-delta modulators, noise shaping) is planned for future additions. The notebooks enable:

  • Representing and generating signals in the frequency and time domains
  • Modeling random noise (uniform, Gaussian distributions)
  • High-level and element-level modeling of DAC and ADC architectures
  • Spectral analysis of converter outputs (SNR, SFDR, SNDR, THD, ENOB)

Directory Organization

signal-converters-notebooks/
├── practical_classes/
│   ├── utils.py          # Shared converter modeling utilities
│   ├── fft.py            # FFT spectral analysis engine
│   ├── practical_class_1.ipynb  ... practical_class_10.ipynb
│   ├── project1_loopunrolled_pipeline_sar_adc.ipynb
│   └── project2_c2c_differential_sar_adc.ipynb
├── docs/
│   ├── index.md          # Documentation landing page
│   ├── imgs/             # Circuit diagrams and figures
│   └── reference/        # API reference pages
├── mkdocs.yml            # MkDocs configuration
├── justfile              # Task runner recipes
└── pyproject.toml

Getting Started

Prerequisites

  • Python 3.11+ managed with uv
  • just task runner — install via brew install just

Installation

git clone https://github.com/das-dias/signal-converters-notebooks.git
cd signal-converters-notebooks
uv sync

Running Notebooks

uv run jupyter notebook
# or
uv run jupyter lab

Documentation

The project uses MkDocs with Material theme and mknotebooks to render Jupyter notebooks directly into the documentation site.

just docs-serve     # Build and serve docs locally at http://localhost:8000
just docs-build     # Build static site into site/
just docs-deploy    # Deploy to GitHub Pages

Quality Checks

just format         # Ruff-format all notebooks and Python files
just lint           # Ruff lint (use `just lint-fix` for auto-fix)
just pylint         # Pylint notebooks (converts to .py via nbconvert)
just check          # Run all checks together

Dependencies

  • NumPy — Array processing and numerical computation
  • SciPy — FFT and signal processing algorithms
  • Matplotlib + SciencePlots — Publication-quality plots
  • Seaborn — Statistical visualizations

Contributing

Feel free to clone this repository and expand the existing notes. If you discover issues or bugs, please open an issue. Changes should be submitted via pull request.

Main Contributors

License

This project is licensed under the MIT License — see the LICENSE file for details.

About

Practical examples on Signal Converter Systems high level modelling and statistical yeild analysis using Jupyter Notebooks.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages