Skip to content

A 6 MHz Direct Digital Synthesis (DDS) function generator, fully configurable via SCPI (Standard Commands for Programmable Instruments) protocol. Designed for precision waveform generation with flexible control through standardized commands.

License

Notifications You must be signed in to change notification settings

RobertGawron/DDSFunctionGenerator

Repository files navigation

6MHz DDS Function Generator

This project is unfinished.

Component Tests Static Code Analysis

Summary

A function generator is a laboratory instrument used to generate various electrical waveforms. This project utilizes DDS DDS (direct digital synthesis), a technique that allows the creation of arbitrary waveforms from a single base frequency.

Current Version

The current version of the PCB uses components with 0402 (or similar) footprints. Use of these components wasn’t the best choice - they're too difficult to solder, and there was no need to minimize the board size. The next version of the PCB will switch to 0805 components for easier assembly.

Photo of the assembled PCB

System Architecture

System Architecture

Tools: PlantUML

Hardware

Tools: KiCad (for PCB design).

Software

Tools:

  • Business Logic: Written in Forth, a stack-based programming language designed for embedded systems and control applications.
  • Drivers: Developed in C++17.
  • Hardware Abstraction Layer (HAL): Auto-generated using CubeMX, a tool from STMicroelectronics.

Simulation

This project includes an LCD for user interaction. To simplify the creation of the layout, a simulation environment has been developed.

This simulation combines the following:

  • UI: Built using PyQt for rendering the LCD layout and facilitating user interaction.
  • Business Logic: Reuses the core firmware logic directly from the hardware codebase.
  • HAL and Driver Mocks: Created in C++.

More Info

Enclosure

The device's enclosure is designed using OpenSCAD, a script-based 3D CAD modeler that allows precise and parametric design.

More Info

Devops

Repetitive setup tasks are best left to automation, which is why the development environment is managed with Docker. This approach eliminates the need to deal with outdated installation lists or READMEs—just run the container, and everything is ready to go.

About

A 6 MHz Direct Digital Synthesis (DDS) function generator, fully configurable via SCPI (Standard Commands for Programmable Instruments) protocol. Designed for precision waveform generation with flexible control through standardized commands.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published