FPGA CNC control

Hey all,

A very long time ago, I bought a smoothieboard and have always liked your project.
In fact, I even bought two of them as I burned the first one.
I know that in the next version you are thinking of using FPGA to control the motors.
I have succeeded in making a working setup, see my video here .
The video is not the greatest but it shows where I am at. Code for the FPGA core can be found here FPGAG.
I tried to made the code as readable as possible and separate it into logical units. You can also virtually test the core using test virtual.
The code is written in python and gets converted to verilog/vhdl using nmigen. Yosys/Nextpnr translate the code to the ICE FPGA chip.
My board can be found online, I also found someone, sensile; who developed a board with a newer FPGA chip and a microcontroller see ttps://i.imgur.com/nPuYwNb.jpg and his repo ttps://github.com/sensille/conan_fpga .

The software consists out of the following elements;

  • SPI command interface (receives command and words, copied from ttps://github.com/greatscottgadgets/luna
  • Transactionalized FIFO (buffers instruction in sram, copied from luna)
  • SPI parser (basically an extension of SPI command interface, with specifics for my
    project)
  • Dispatcher; picks up commands from the FIFO buffer and dispatches instructions to
    actual hardware
  • Polynomial integrator: creates pulse train for stepper motors; basically you send the
    coefficients for the polynomial and the number of ticks in a segment.

I am mainly interested in FPGAs as I am building a laser scanner. Which brings me to your project… you already had plans for using FPGAs.
I hope it is inspiring… as you are building your next iteration of boards.

Best,
Rik

3 Likes

Awesome! I have no knowledge about FPGA but this looks super promising. FPGA is becoming more and more popular than ever

This is absolutely awesome. Would you mind contacting me at wolf.arthur@gmail.com so we can discuss maybe integrating your work into the Smoothieboard v2-pro project? Is everything done in the FPGA, or could your system be used with Smoothieware running on a MCU doing the planning/other tasks, and then talking via SPI to the FPGA, with the FPGA being mainly tasked wtih step generation/curves and general I/O ? Really interrested in this, hope we can collaborate!