NawfalMotii79/PLFM_RADARPublic

Open-source, low-cost 10.5 GHz PLFM phased array RADAR system

AI summary: An open-source, highly accessible 10.5 GHz phased array radar system utilizing Pulse Linear Frequency Modulation.

Stars
23.4K
+58 today
Forks
5.4K
Watchers
302
Open issues
6
Open PRs
4
Contributors
~8
Commits
348
Branches
20

PLSQLOtherCreated Mar 8, 2026Last push 1mo agoLatest release v2.0.2-p0-audit+299 stars this week+342 this month

Star history

since Mar 8, 2026
010K20KMar 2026Apr 2026Jun 2026Aug 2026
23.4K stars as of Aug 7, 2026, tracked back to Mar 8, 2026. Historical curve reconstructed from public GitHub event archives, calibrated to the current total.

Contribution activity

commits per day, last 52 weeks
AugSepOctNovDecJanFebMarAprMayJunJulAugMonWedFri2025-08-09: 0 commits2025-08-10: 0 commits2025-08-11: 0 commits2025-08-12: 0 commits2025-08-13: 0 commits2025-08-14: 0 commits2025-08-15: 0 commits2025-08-16: 0 commits2025-08-17: 0 commits2025-08-18: 0 commits2025-08-19: 0 commits2025-08-20: 0 commits2025-08-21: 0 commits2025-08-22: 0 commits2025-08-23: 0 commits2025-08-24: 0 commits2025-08-25: 0 commits2025-08-26: 0 commits2025-08-27: 0 commits2025-08-28: 0 commits2025-08-29: 0 commits2025-08-30: 0 commits2025-08-31: 0 commits2025-09-01: 0 commits2025-09-02: 0 commits2025-09-03: 0 commits2025-09-04: 0 commits2025-09-05: 0 commits2025-09-06: 0 commits2025-09-07: 0 commits2025-09-08: 0 commits2025-09-09: 0 commits2025-09-10: 0 commits2025-09-11: 0 commits2025-09-12: 0 commits2025-09-13: 0 commits2025-09-14: 0 commits2025-09-15: 0 commits2025-09-16: 0 commits2025-09-17: 0 commits2025-09-18: 0 commits2025-09-19: 0 commits2025-09-20: 0 commits2025-09-21: 0 commits2025-09-22: 0 commits2025-09-23: 0 commits2025-09-24: 0 commits2025-09-25: 0 commits2025-09-26: 0 commits2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 0 commits2026-02-26: 0 commits2026-02-27: 0 commits2026-02-28: 0 commits2026-03-01: 0 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 0 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 1 commit2026-03-09: 13 commits2026-03-10: 18 commits2026-03-11: 3 commits2026-03-12: 0 commits2026-03-13: 4 commits2026-03-14: 0 commits2026-03-15: 13 commits2026-03-16: 21 commits2026-03-17: 11 commits2026-03-18: 15 commits2026-03-19: 38 commits2026-03-20: 24 commits2026-03-21: 2 commits2026-03-22: 1 commit2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 0 commits2026-03-26: 0 commits2026-03-27: 3 commits2026-03-28: 0 commits2026-03-29: 2 commits2026-03-30: 0 commits2026-03-31: 2 commits2026-04-01: 2 commits2026-04-02: 15 commits2026-04-03: 0 commits2026-04-04: 1 commit2026-04-05: 3 commits2026-04-06: 3 commits2026-04-07: 24 commits2026-04-08: 3 commits2026-04-09: 4 commits2026-04-10: 2 commits2026-04-11: 0 commits2026-04-12: 3 commits2026-04-13: 5 commits2026-04-14: 12 commits2026-04-15: 5 commits2026-04-16: 21 commits2026-04-17: 2 commits2026-04-18: 5 commits2026-04-19: 2 commits2026-04-20: 1 commit2026-04-21: 0 commits2026-04-22: 1 commit2026-04-23: 1 commit2026-04-24: 0 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 0 commits2026-04-28: 0 commits2026-04-29: 1 commit2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 1 commit2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 2 commits2026-05-07: 0 commits2026-05-08: 1 commit2026-05-09: 0 commits2026-05-10: 1 commit2026-05-11: 0 commits2026-05-12: 1 commit2026-05-13: 0 commits2026-05-14: 0 commits2026-05-15: 0 commits2026-05-16: 1 commit2026-05-17: 0 commits2026-05-18: 0 commits2026-05-19: 1 commit2026-05-20: 0 commits2026-05-21: 0 commits2026-05-22: 0 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 0 commits2026-05-26: 0 commits2026-05-27: 0 commits2026-05-28: 0 commits2026-05-29: 3 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 0 commits2026-06-03: 0 commits2026-06-04: 0 commits2026-06-05: 0 commits2026-06-06: 0 commits2026-06-07: 0 commits2026-06-08: 0 commits2026-06-09: 0 commits2026-06-10: 0 commits2026-06-11: 0 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 1 commit2026-06-17: 4 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 0 commits2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 0 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 0 commits2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 0 commits2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 0 commits2026-08-03: 0 commits2026-08-04: 0 commits2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits
303 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    23,418 stars

  • Continuous integration

    Automated checks passing

  • Repeat trending

    9 trending appearances

What PLFM_RADAR does

AERIS-10 democratizes advanced radar technology by providing open-source hardware and software for a 10.5 GHz phased array system. It utilizes Pulse Linear Frequency Modulation (PLFM), a technique normally reserved for sophisticated military or commercial aviation hardware, to achieve high-resolution target tracking. The project details two distinct hardware versions capable of 3km and 20km ranges, catering to different research needs. It provides full schematics, PCB layouts, and DSP (Digital Signal Processing) code, allowing enthusiasts to construct complex radar systems from accessible RF components. The software stack emphasizes integration with Software Defined Radios (SDR) for real-time signal analysis.

RF engineers, SDR enthusiasts, academic researchers, and advanced hobbyists interested in radar technology. Requires solid understanding of microwave electronics, PCB assembly, and digital signal processing.

  • PLFM Modulation: Implements Pulse Linear Frequency Modulation to ensure high range resolution and target velocity detection.
  • Phased Array Architecture: Utilizes beam steering techniques to track targets without moving mechanical parts.
  • Dual Range Configurations: Provides distinct hardware blueprints for both short-range (3km) and long-range (20km) applications.
  • SDR Integration: Designed to interface seamlessly with common Software Defined Radios for baseband processing.
  • Open-Source Hardware: Includes complete KiCad schematics and Gerber files for fabricating the RF front-end.

Where teams use it

Drone Detection

Hobbyists and security researchers build the 3km variant to detect and track small UAVs in restricted airspace.

Academic Research

University engineering departments use the platform as a low-cost educational tool to teach advanced radar signal processing.

Meteorological Tracking

Enthusiasts configure the system to track localized weather phenomena and analyze atmospheric backscatter.

SDR Experimentation

Radio amateurs interface the radar with GNU Radio to develop custom filtering algorithms for noisy RF environments.

Getting started: Review the hardware schematics in the /hardware directory before attempting to source the required RF components.

README

main branch

GitHub stars GitHub forks GitHub watchers License: MIT Hardware: CERN-OHL-P

AERIS-10: Open Source Pulse Linear Frequency Modulated Phased Array Radar

Hardware: CERN-OHL-P Software: MIT Status: Alpha Features: Work in Progress Frequency: 10.5GHz PRs Welcome

AERIS-10 is an open-source, low-cost 10.5 GHz phased array radar system featuring Pulse Linear Frequency Modulated (LFM) modulation. Available in two versions (3km and 20km range), it's designed for researchers, drone developers, and serious SDR enthusiasts who want to explore and experiment with phased array radar technology.

AERIS-10 Antenna Array

📡 Overview

The AERIS-10 project aims to democratize radar technology by providing a fully open-source, modular, and hackable radar system. Whether you're a university researcher, a drone startup, or an advanced maker, AERIS-10 offers a platform for experimenting with beamforming, pulse compression, Doppler processing, and target tracking.

🔬 Key Features

  • Open Source Hardware & Software - Complete schematics, PCB layouts, firmware, and software available
  • Dual Version Availability:
    • AERIS-10N (Nexus): 3km range with 8x16 patch antenna array
    • AERIS-10E (Extended): 20km range with 32x16 dielectric-filled slotted waveguide array
  • Full Electronic Beam Steering - ±45° electronic steering in elevation and azimuth
  • Advanced Signal Processing - On-board FPGA handles pulse compression, Doppler FFT, MTI, and CFAR
  • Python GUI - User-friendly interface with map integration
  • GPS/IMU Integration - Real-time position and attitude correction
  • Modular Design - Separate power management, frequency synthesis, and RF boards

🏗️ System Architecture

AERIS-10 System Diagram

Hardware Components

The AERIS-10 main sub-systems are:

  • Power Management Board - Supplies all necessary voltage levels to the electronics components with proper filtering and sequencing (sequencing ensured by the microcontroller)

  • Frequency Synthesizer Board - Uses a high-performance Low Jitter Clock Generator (AD9523-1) that supplies phase-aligned clock references for:

    • RX and TX Frequency Synthesizers (ADF4382)
    • DAC
    • ADC
    • FPGA
  • Main Board containing:

    • DAC - Generates the RADAR Chirps
    • 2x Microwave Mixers (LTC5552) - For up-conversion and IF-down-conversion
    • 4x 4-Channel Phase Shifters (ADAR1000) - For RX and TX chain beamforming
    • 16x Front End Chips (ADTR1107) - Used for both Low Noise Amplifying (RX) and Power Amplifying (TX) stages
    • XC7A50T FPGA - Handles RADAR Signal Processing on the upstream FTG256 board:
      • PLFM Chirps generation via the DAC
      • Raw ADC data read
      • Hybrid Automatic Gain Control (AGC) — cross-layer FPGA/STM32/GUI loop
      • I/Q Baseband Down-Conversion
      • Decimation
      • Filtering
      • Forward FFT
      • Pulse Compression
      • Doppler, MTI and CFAR processing
      • USB Interface
    • STM32F746xx Microcontroller - Used for:
      • Power-up and power-down sequencing (see Power Management Excel File)
      • FPGA communication
      • Setup and Interface with:
        • Clock Generator (AD9523-1)
        • 2x Frequency Synthesizers (ADF4382)
        • 4x 4-Channel Phase Shifters (ADAR1000) for RADAR pulse sequencing
        • 2x ADS7830 8-channel I²C ADCs (Main Board, U88 @ 0x48 / U89 @ 0x4A) for 16x Idq measurement, one per PA channel, each sensed through a 5 mΩ shunt on the PA board and an INA241A3 current-sense amplifier (x50) on the Main Board
        • 2x DAC5578 8-channel I²C DACs (Main Board, U7 @ 0x48 / U69 @ 0x49) for 16x Vg control, one per PA channel; closed-loop calibrated at boot to the target Idq
        • GPS module (UM982) for GUI map centering and per-detection position tagging
        • GY-85 IMU for pitch/roll correction of target coordinates
        • BMP180 Barometer
        • Stepper Motor
        • 1x ADS7830 8-channel I²C ADC (Main Board, U10) reading 8 thermistors for thermal monitoring; a single GPIO (EN_DIS_COOLING) switches the cooling fans on when any channel exceeds the threshold
        • RF switches
  • 16x Power Amplifier Boards - Used only for AERIS-10E version, featuring 10Watt QPA2962 GaN amplifier for extended range

  • Antenna Arrays:

    • AERIS-10N (Nexus) - 8x16 patch antenna array
    • AERIS-10X (Extended) - 32x16 dielectric-filled slotted waveguide antenna array
  • Miscellaneous Components:

    • Slip-Ring
    • Stepper Motor and drivers
    • Cooling Fans
    • Enclosure

Processing Pipeline

  1. Waveform Generation - DAC creates LFM chirps
  2. Up/Down Conversion - LTC5552 mixers handle frequency translation
  3. Beam Steering - ADAR1000 phase shifters control 16 elements
  4. Signal Processing (FPGA):
    • Raw ADC data capture
    • I/Q baseband down-conversion
    • Decimation & filtering (CIC/FIR)
    • Pulse compression
    • Doppler FFT processing
    • MTI & CFAR detection
  5. System Management (STM32):
    • Power sequencing
    • Peripheral configuration
    • GPS/IMU integration
    • Stepper motor control
  6. Visualization (Python GUI):
    • Real-time target plotting
    • Map integration
    • Radar control interface

AERIS-10 Dashboard

📊 Technical Specifications

Parameter AERIS-10N (Nexus) AERIS-10X (Extended)
Frequency 10.5 GHz 10.5 GHz
Max Range 3 km 20 km
Antenna 8x16 Patch Array 32x16 Slotted Waveguide
Beam Steering Electronic (±45°) Electronic (±45°)
Mechanical Scan 360° (stepper motor) 360° (stepper motor)
Output Power ~1W×16 10W×16 (GaN amplifier)
Processing FPGA + STM32 FPGA + STM32

🚀 Getting Started

🧹 Repository File Placement Policy

To keep the repository root clean and make artifacts easy to find, place generated files in the following locations:

  • Published reports (tracked, GitHub Pages): docs/
    • Example: docs/AERIS_Simulation_Report_v2.pdf
  • Simulation-generated outputs (local, gitignored): 5_Simulations/generated/
    • Plots, scenario outputs, temporary analysis directories
  • FPGA/Vivado generated artifacts (local, gitignored): 9_Firmware/9_2_FPGA/reports/
    • VCD/VVP dumps, temporary CSVs, local report snapshots
  • Reusable FPGA automation scripts (tracked): 9_Firmware/9_2_FPGA/scripts/
    • TCL flows, helper scripts used by build/bring-up

Do not leave generated artifacts in the repository root.

Prerequisites

  • Basic understanding of radar principles
  • Experience with PCB assembly (for hardware build)
  • Python 3.8+ for the GUI software
  • FPGA development tools (Vivado) for signal processing modifications

Hardware Assembly

  1. Order PCBs: Production outputs are under /4_Schematics and Boards Layout/4_7_Production Files
  2. Source Components: BOM/CPL files are co-located under /4_Schematics and Boards Layout/4_7_Production Files
  3. Assembly: Use the schematics in /4_Schematics and Boards Layout/4_6_Schematics together with the production outputs above; a standalone assembly guide is not currently tracked
  4. Antenna: Choose appropriate array files for your target variant
  5. Enclosure: Mechanical drawings currently live in /8_Utils/Mechanical_Drawings

📜 License

This project is open-source but uses different licenses for hardware and software to ensure proper legal coverage.

Hardware Documentation

The hardware design files—including:

  • Schematics and PCB layouts (in /4_Schematics and Boards Layout)
  • Bill of Materials (BOM) files
  • Gerber files and manufacturing outputs
  • Mechanical drawings and enclosure designs

are licensed under the CERN Open Hardware Licence Version 2 – Permissive (CERN-OHL-P) .

This is a hardware-specific license that:

  • ✅ Clearly defines "Hardware," "Documentation," and "Products"
  • ✅ Includes explicit patent protection for contributors and users
  • ✅ Provides stronger liability limitations (important for high-power RF)
  • ✅ Aligns with professional open-hardware standards (CERN, OSHWA)

You may use, modify, and sell products based on these designs, provided you:

  • Maintain the original copyright notices
  • Distribute any modified designs under the same license
  • Make your modifications available in Source format

Software and Firmware

The software components—including:

  • FPGA code (VHDL/Verilog in /9_Firmware)
  • Microcontroller firmware (STM32)
  • Python GUI and utilities

remain under the MIT License for maximum flexibility.

Full License Texts

  • The complete CERN-OHL-P license text is in the LICENSE file
  • MIT license terms apply to software where not otherwise specified

Why This Change?

Originally, the entire project used the MIT license. The community (special thanks to gmaynez!) pointed out that MIT lacks legal protections needed for physical hardware. The switch to CERN-OHL-P ensures the project is properly protected while maintaining the same permissive spirit.

📚 Documentation

Comprehensive documentation is available in the /docs folder and served via GitHub Pages at https://NawfalMotii79.github.io/PLFM_RADAR/docs/:

🤝 Contributing

We welcome contributions! Please see our Contributing Guidelines for details on repo layout, branch workflow, and basic PR checks.

Areas where help is especially appreciated:

  • RF Engineers: Review designs, optimize antenna performance
  • FPGA Developers: Optimize signal processing pipeline
  • Software Developers: Enhance Python GUI and SDK
  • Beta Testers: University researchers, drone startups, advanced makers

📞 Contact & Collaboration

I welcome serious inquiries from researchers, engineers, and potential collaborators. However, due to the high volume of interest in this project, please understand that I cannot guarantee a response to every message.

  • Technical questions or bug reports: Please open a GitHub issue so the whole community can benefit from the discussion.
  • Collaboration, licensing, or business inquiries: 📧 nawfal.motii.33 [at] gmail [dot] com

💰 Sponsors

PCBWay Sponsor Logo


Star ⭐ this repository if you're interested in open-source radar technology!

Note: This is an active development project. Some features are still in progress. Check the issues page for known limitations and upcoming features.

19,000 stars – Thank you

This project started in a small workshop in Morocco. Today, 19,000 engineers on GitHub have starred it.

I am genuinely humbled.

What this tells me:

  • Open source radar matters
  • Affordable sensing is needed
  • Engineers want to build, not just buy

Thank you to everyone who starred, forked, opened issues, submitted PRs, and shared this project.

The work continues.

Nawfal Motii ABAC INDUSTRY (http://www.abacindustry.com)

View on GitHub

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 21

Releases and announcements

6 total
  1. ## AERIS-10 Pre-Bringup P0 Audit Closure + FT2232H Timing Relax Production bitstream for xc7a50t-ftg256-2 closing the 2026-04-20 pre-bringup P0 audit. Key items: a datasheet-accurate FT2232H `output_delay` (was synthetically over-constrained by ~8 ns in v2.0.1), 400 MHz CIC/MMCM margin fixes, an ADC overrange hold waiver matching the existing source-synchronous pattern, and an MCU refactor removing the redundant SPI T/R path now that the FPGA chirp controller owns per-chirp switching. ### Timing (2026-04-20, commit ca8c586) | Clock | Period | WNS | WHS | Failing | |---|---|---|---|---| | clk_mmcm_out0 (400 MHz) | 2.5 ns | +0.029 | +0.080 | 0 | | adc_dco_p (400 MHz) | 2.5 ns | +0.906 | — | 0 | | clk_100m | 10 ns | +0.263 | +0.057 | 0 | | clk_120m_dac | 8.333 ns | +1.635 | +0.130 | 0 | | ft_clkout (60 MHz) | 16.667 ns | +1.053 | +0.121 | 0 | | Pulse width (WPWS) | — | +0.361 | — | 0 | All user-specified timing constraints are met. 0 failing endpoints (setup / hold / pulse width). ### Utilization (xc7a50tftg256-2) | Resource | Used | Available | Util% | |---|---|---|---| | LUTs | 10,358 | 32,600 | 31.77% | | Flip-Flops | 12,905 | 65,200 | 19.79% | | BRAM tiles | 17.5 | 75 | 23.33%

  2. ## AERIS-10 400 MHz Reset Fan-Out Fix + ADAR1000 Channel Indexing Hotfix rebuild of the xc7a50t-ftg256-2 production bitstream resolving a **400 MHz clk_dco setup violation** (WNS = −0.626 ns) introduced by the reset topology change in v2.0.0-fft2048. Also carries a **1-based channel indexing correction in the ADAR1000 MCU driver** (issue #90) that silently wrote the wrong SPI register for channel 1. ### Timing (2026-04-18, commit d0b3a4c) | Clock | Period | WNS | Failing Endpoints | Previous (v2.0.0) | |-------|--------|-----|-------------------|--------------------| | clk_mmcm_out0 (400 MHz) | 2.5 ns | **+0.020 ns** | **0** | +0.068 ns | | clk_100m (100 MHz) | 10.0 ns | **+0.156 ns** | **0** | +0.156 ns | | clk_120m_dac (120 MHz) | 8.333 ns | **+0.627 ns** | **0** | +0.627 ns | | ft_clkout (60 MHz) | 16.667 ns | **+9.887 ns** | **0** | +9.887 ns | | adc_dco_p (400 MHz) | 2.5 ns | **+0.020 ns** | **0** | +0.920 ns | | Hold (WHS) | — | **+0.035 ns** | **0** | +0.046 ns | | Pulse width (WPWS) | — | **+0.361 ns** | **0** | +0.361 ns | | All constraints met | | **Yes** | | Yes | ### Utilization (xc7a50tftg256-2) | Resource | Used | Available | Util% | Previous (v2.0.0) | |----------

  3. ## AERIS-10 2048-pt FFT Upgrade + Full Timing Closure Complete cross-layer upgrade from 1024-pt to **2048-pt FFT** with decimation=4, producing **512 output range bins at 6m spacing** (was 64 bins at 24m). All 5 FPGA clock domains timing-closed on xc7a50tftg256-2 after 3 build iterations. ### Timing (Build 19) | Clock | Period | WNS | Failing Endpoints | Previous (v1.1.0) | |-------|--------|-----|-------------------|--------------------| | clk_mmcm_out0 (400 MHz) | 2.5 ns | **+0.068 ns** | **0** | +0.339 ns | | clk_100m (100 MHz) | 10.0 ns | **+0.156 ns** | **0** | +0.080 ns | | clk_120m_dac (120 MHz) | 8.333 ns | **+0.627 ns** | **0** | — | | ft_clkout (60 MHz) | 16.667 ns | **+9.887 ns** | **0** | — | | adc_dco_p (400 MHz) | 2.5 ns | **+0.920 ns** | **0** | — | | Hold (WHS) | — | **+0.046 ns** | **0** | +0.056 ns | | Pulse width (WPWS) | — | **+0.361 ns** | **0** | +0.361 ns | | All constraints met | | **Yes** | | Yes | ### Utilization (xc7a50tftg256-2) | Resource | Used | Available | Util% | Previous (v1.1.0) | |----------|------|-----------|-------|--------------------| | LUTs | 21,735 | 32,600 | 66.67% | 10,252 (31.4%) | | Flip-Flops | 14,579 | 65,200 | 22.36% | 12,820 (19

  4. ## AERIS-10 Hybrid AGC System + FPGA Timing Hardening Full hybrid AGC implementation spanning **FPGA, STM32, and GUI** layers with FPGA timing margin improvements and two rounds of multi-agent code review fixes (20 bugs total). ### Timing | Metric | Value | Previous (v1.0.0) | |--------|-------|--------------------| | WNS | **+0.080 ns** | +0.088 ns | | WNS (400MHz) | **+0.339 ns** | +0.002 ns | | WHS | +0.056 ns | +0.059 ns | | WPWS | +0.361 ns | +0.361 ns | | Failing Endpoints | **0** | 0 | | All constraints met | **Yes** | Yes | ### Utilization (xc7a50tftg256-2) | Resource | Used | Available | Util% | |----------|------|-----------|-------| | LUTs | 10,252 | 32,600 | 31.4% | | Flip-Flops | 12,820 | 65,200 | 19.7% | | BRAM | 17.5 | 75 | 23.3% | | DSP48E1 | 112 | 120 | 93.3% | | IOB | 82 | 170 | 48.2% | ### What Changed (from v1.0.0-ft2232h) **Hybrid AGC System (Phases 1–7)** - **FPGA inner loop**: `rx_gain_control.v` — per-sample gain adjustment with saturation tracking, signed gain range -7 to +7 - **FPGA registers**: 0x28–0x2C (enable, target, attack, decay, holdoff) with status readback via `status_words[4]` - **STM32 outer loop**: `AgcOuterLoop` class — per-frame ADAR100

  5. Bitstream: AGC-enabled 50T (xc7a50tftg256-2)bitstream-agc-50t-v1Apr 13, 2026pre-release523 downloads

    ## AERIS-10 50T AGC Bitstream — Hybrid AGC + Timing Fix Vivado Build 16 bitstream for the **XC7A50T-FTG256** production board. Adds **hybrid AGC (FPGA inner loop)** with 5 new host registers (0x28–0x2C) and a **45x timing margin improvement** over the previous build. ### Timing | Metric | Value | |--------|-------| | WNS | **+0.045 ns** | | WHS | +0.058 ns | | WPWS | +0.361 ns | | Failing Endpoints | **0** | | All constraints met | **Yes** | ### Utilization (xc7a50tftg256-2) | Resource | Used | Available | Util% | |----------|------|-----------|-------| | LUTs | 10,235 | 32,600 | 31.4% | | Flip-Flops | 12,729 | 65,200 | 19.5% | | BRAM | 17.5 | 75 | 23.3% | | DSP48E1 | 112 | 120 | 93.3% | | IOB | 82 | 170 | 48.2% | ### What Changed (from v1.0.0-ft2232h) - **AGC Phase 1**: `rx_gain_control.v` rewritten — per-frame peak/saturation tracking, auto-shift with attack/decay/holdoff, signed gain ±7 (±42 dB) - **AGC Phase 2**: New registers 0x28–0x2C (`agc_enable`, `agc_target`, `agc_attack`, `agc_decay`, `agc_holdoff`) in `radar_system_top.v` - **AGC Phase 3**: `status_words[4]` carries AGC metrics (gain, peak magnitude, saturation count, enable). DIG_5 GPIO (H11) outputs saturation fla

Code frequency

additions and deletions
+1.8M-1.8MWeek of 2026-03-08: +711,708 linesWeek of 2026-03-08: -1,954 linesWeek of 2026-03-15: +1,264,897 linesWeek of 2026-03-15: -57,722 linesWeek of 2026-03-22: +10,917 linesWeek of 2026-03-22: -724,969 linesWeek of 2026-03-29: +29,633 linesWeek of 2026-03-29: -28,299 linesWeek of 2026-04-05: +1,826,025 linesWeek of 2026-04-05: -128,114 linesWeek of 2026-04-12: +28,034 linesWeek of 2026-04-12: -20,313 linesWeek of 2026-04-19: +1,285,102 linesWeek of 2026-04-19: -1,172,072 linesWeek of 2026-04-26: +0 linesWeek of 2026-04-26: -0 linesWeek of 2026-05-03: +25 linesWeek of 2026-05-03: -0 linesWeek of 2026-05-10: +100,228 linesWeek of 2026-05-10: -1 linesWeek of 2026-05-17: +8,556 linesWeek of 2026-05-17: -8,557 linesWeek of 2026-05-24: +34,150 linesWeek of 2026-05-24: -19,406 linesWeek of 2026-05-31: +0 linesWeek of 2026-05-31: -0 linesWeek of 2026-06-07: +0 linesWeek of 2026-06-07: -0 linesWeek of 2026-06-14: +1,591,845 linesWeek of 2026-06-14: -1,602,996 linesWeek of 2026-06-21: +0 linesWeek of 2026-06-21: -0 linesWeek of 2026-06-28: +0 linesWeek of 2026-06-28: -0 linesWeek of 2026-07-05: +0 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +0 linesWeek of 2026-07-12: -0 linesWeek of 2026-07-19: +0 linesWeek of 2026-07-19: -0 linesWeek of 2026-07-26: +0 linesWeek of 2026-07-26: -0 linesWeek of 2026-08-02: +0 linesWeek of 2026-08-02: -0 linesMar 8, 2026Aug 2, 2026
+6.9M lines added, -3.8M removed over the last year.

Commits per week

last 52 weeks
1240Week of 2025-08-09: 0 commitsWeek of 2025-08-16: 0 commitsWeek of 2025-08-23: 0 commitsWeek of 2025-08-30: 0 commitsWeek of 2025-09-06: 0 commitsWeek of 2025-09-13: 0 commitsWeek of 2025-09-20: 0 commitsWeek of 2025-09-27: 0 commitsWeek of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 0 commitsWeek of 2026-03-01: 0 commitsWeek of 2026-03-08: 39 commitsWeek of 2026-03-15: 124 commitsWeek of 2026-03-22: 4 commitsWeek of 2026-03-29: 22 commitsWeek of 2026-04-05: 39 commitsWeek of 2026-04-12: 53 commitsWeek of 2026-04-19: 5 commitsWeek of 2026-04-26: 1 commitsWeek of 2026-05-03: 4 commitsWeek of 2026-05-10: 3 commitsWeek of 2026-05-17: 1 commitsWeek of 2026-05-24: 3 commitsWeek of 2026-05-31: 0 commitsWeek of 2026-06-07: 0 commitsWeek of 2026-06-14: 5 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 0 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 0 commitsWeek of 2026-07-26: 0 commitsWeek of 2026-08-02: 0 commitsAug 9, 2025Aug 2, 2026
303 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 2 commitsSun 1:00 — 1 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 2 commitsSun 6:00 — 3 commitsSun 7:00 — 0 commitsSun 8:00 — 1 commitsSun 9:00 — 0 commitsSun 10:00 — 1 commitsSun 11:00 — 2 commitsSun 12:00 — 0 commitsSun 13:00 — 1 commitsSun 14:00 — 2 commitsSun 15:00 — 0 commitsSun 16:00 — 1 commitsSun 17:00 — 2 commitsSun 18:00 — 1 commitsSun 19:00 — 2 commitsSun 20:00 — 0 commitsSun 21:00 — 2 commitsSun 22:00 — 3 commitsSun 23:00 — 1 commitsMon 0:00 — 10 commitsMon 1:00 — 4 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 0 commitsMon 10:00 — 1 commitsMon 11:00 — 0 commitsMon 12:00 — 0 commitsMon 13:00 — 0 commitsMon 14:00 — 0 commitsMon 15:00 — 1 commitsMon 16:00 — 2 commitsMon 17:00 — 0 commitsMon 18:00 — 3 commitsMon 19:00 — 6 commitsMon 20:00 — 3 commitsMon 21:00 — 1 commitsMon 22:00 — 6 commitsMon 23:00 — 6 commitsTue 0:00 — 2 commitsTue 1:00 — 19 commitsTue 2:00 — 5 commitsTue 3:00 — 4 commitsTue 4:00 — 1 commitsTue 5:00 — 5 commitsTue 6:00 — 5 commitsTue 7:00 — 0 commitsTue 8:00 — 0 commitsTue 9:00 — 1 commitsTue 10:00 — 0 commitsTue 11:00 — 1 commitsTue 12:00 — 1 commitsTue 13:00 — 1 commitsTue 14:00 — 2 commitsTue 15:00 — 2 commitsTue 16:00 — 0 commitsTue 17:00 — 0 commitsTue 18:00 — 1 commitsTue 19:00 — 4 commitsTue 20:00 — 3 commitsTue 21:00 — 7 commitsTue 22:00 — 2 commitsTue 23:00 — 5 commitsWed 0:00 — 0 commitsWed 1:00 — 3 commitsWed 2:00 — 6 commitsWed 3:00 — 5 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 0 commitsWed 8:00 — 0 commitsWed 9:00 — 1 commitsWed 10:00 — 0 commitsWed 11:00 — 1 commitsWed 12:00 — 0 commitsWed 13:00 — 1 commitsWed 14:00 — 0 commitsWed 15:00 — 1 commitsWed 16:00 — 2 commitsWed 17:00 — 1 commitsWed 18:00 — 1 commitsWed 19:00 — 1 commitsWed 20:00 — 1 commitsWed 21:00 — 6 commitsWed 22:00 — 4 commitsWed 23:00 — 2 commitsThu 0:00 — 10 commitsThu 1:00 — 15 commitsThu 2:00 — 5 commitsThu 3:00 — 0 commitsThu 4:00 — 0 commitsThu 5:00 — 0 commitsThu 6:00 — 0 commitsThu 7:00 — 0 commitsThu 8:00 — 2 commitsThu 9:00 — 3 commitsThu 10:00 — 3 commitsThu 11:00 — 3 commitsThu 12:00 — 5 commitsThu 13:00 — 1 commitsThu 14:00 — 3 commitsThu 15:00 — 1 commitsThu 16:00 — 7 commitsThu 17:00 — 4 commitsThu 18:00 — 0 commitsThu 19:00 — 0 commitsThu 20:00 — 3 commitsThu 21:00 — 5 commitsThu 22:00 — 2 commitsThu 23:00 — 7 commitsFri 0:00 — 9 commitsFri 1:00 — 4 commitsFri 2:00 — 2 commitsFri 3:00 — 3 commitsFri 4:00 — 2 commitsFri 5:00 — 4 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 0 commitsFri 9:00 — 0 commitsFri 10:00 — 0 commitsFri 11:00 — 0 commitsFri 12:00 — 0 commitsFri 13:00 — 0 commitsFri 14:00 — 0 commitsFri 15:00 — 0 commitsFri 16:00 — 2 commitsFri 17:00 — 1 commitsFri 18:00 — 0 commitsFri 19:00 — 6 commitsFri 20:00 — 6 commitsFri 21:00 — 0 commitsFri 22:00 — 0 commitsFri 23:00 — 1 commitsSat 0:00 — 1 commitsSat 1:00 — 0 commitsSat 2:00 — 1 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 3 commitsSat 10:00 — 1 commitsSat 11:00 — 0 commitsSat 12:00 — 0 commitsSat 13:00 — 0 commitsSat 14:00 — 0 commitsSat 15:00 — 0 commitsSat 16:00 — 0 commitsSat 17:00 — 0 commitsSat 18:00 — 0 commitsSat 19:00 — 0 commitsSat 20:00 — 2 commitsSat 21:00 — 1 commitsSat 22:00 — 0 commitsSat 23:00 — 0 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits134 (39%)
Community commits214 (61%)

348 commits in total over the last year.

DateListRankStars gained
Apr 20, 2026daily#13+156
Apr 19, 2026daily#6+388
Apr 18, 2026daily#19+198
Apr 17, 2026daily#3+330
Apr 16, 2026daily#7+209
Apr 15, 2026daily#7+235
Apr 14, 2026daily#7+238
Mar 15, 2026daily#22+214
Mar 14, 2026daily#16+234