Anyone who’s ever had the pleasure of programming FPGAs knows that it’s a land of proprietary tools that almost require marriage level commitment to a specific platform to be effective. Symbiflow hopes to solve this by becoming the GCC of FPGAs.
Rather than a tool built around a specific chip or architecture, Symbiflow will provide a more universal interface. Users can program in Verilog; architecture definitions define how the code will be compiled for the right chip. They are currently targeting the popular Xilinx 7-series, the very affordable iCE40 series from lattice, and the ECP5 FPGAs also from Lattice.
If you’re headed to Hackaday Supercon this year, [Timothy Ansell] will be giving a talk on how Symbiflow is making this process much more approachable and much less proprietary. Overall we’re very excited about a common interface, especially as the price of FPGAs keep dropping into micro controller territory while also increasing in capability.
(Speaking of Supercon, and maybe this is a spoiler, the badge would not have been possible without Symbiflow, Project Trellis, Yosys, and NextPNR.)
Most of the time if you were to want to develop for an FPGA, you might turn to Verilog or VHDL. Both of these are quite capable, but they are also firmly rooted in languages that are old-fashioned by today’s standards. There have been quite a few attempts to treat those languages as an output to some other tool — either a higher-level language or a graphical tool. One recent effort is a toolchain that starts with Chisel.
The idea behind Chisel is to provide Scala with Verilog-like constructs. If you want, you can use it as a “super Verilog” taking advantage of classes and other features. However, Chisel also allows you to create generators that produce different output Verilog depending on how you call them. True, you can do some of this with Verilog modules, but it is much easier with Chisel. Chisel uses Firrtl to convert what you ask it to do into Verilog for different FPGA and ASIC targets.
The Thing is an unassuming name for an ambitious project to build an FPGA board from easy to find components.
The project stems from an earlier build submitted to the 2018 Hackaday Prize by [Just4Fun] where two dev boards – an STM32-based Arduino and an Altera MAX II CPLD board – were combined with the Arduino used as a stimulus generator for the CPLD. This way, the Arduino IDE, interfaced through USB, can be used for programming the CPLD.
The Thing similarly uses the STM32 Arduino as a companion processor for the FPGA, with a 512KB SRAM and common I/O for GPIOs and a PS/2 keyboard for running HDL SOCs. It can also run Multicomp VHDL SOCs, a modular design that was made to run some older 8-bit CPUs made by [Grant Searle].
The FPGA (EP2C5T144C8N) uses the Quartus II IDE for configuration with a USB Blaster dongle through the JTAG or AS connector. The FPGA side controls a 4 digit seven segment LED display, four push buttons, 3 LEDs, a push button to clear all internal FFs (sampling rates), a push button to force a reboot (configuration reload), and a switch to force all pins to Hi-Z mode. Both an onboard 50MHz oscillator and connector for an external oscillator are also present on the FPGA side.
In one demo of the MP/M system capability of the board, The Thing was made to handle four concurrent users with one serial port connector to a PC and terminal emulator and the other serial ports connected to terminal emulators on VT100 boards routed through a dual-channel RS232 adapter board.
Both the Arduino and FPGA sides can also be used as standalone boards, but why use one when you can harness both boards together?
While the “M” in MIDI stands for “musical”, it’s possible to use this standard for other things as well. [s-ol] has been working on a VJ setup (mixing video instead of music) using various potentiometer-based hardware and MIDI to interface everything together. After becoming frustrated with drift in the potentiometers, he set out to outfit the entire rig with custom-built encoders.
[s-ol] designed the rotary-encoder based boards around an FPGA. It monitors the encoder for changes, controls eight RGB LEDs per knob, and even does capacitive touch sensing on the aluminum knob itself. The FPGA communicates via SPI with an Arduino master controller which communicates to a PC using a serial interface. This is [s-ol]’s first time diving into an FPGA project and it looks like he hit it out of the park!.
Even if you’re not mixing video or music, these encoders might be useful to any project where a standard analog potentiometer isn’t accurate or precise enough, or if you just need something that can dial into a specific value quickly. Potentiometers fall short in many different ways, but if you don’t want to replace them you might modify potentiometers to suit your purposes.
Xilinx recently announced the Virtex UltraScale+ VU19P FPGA. Of course, FPGA companies announce new chips every day. The reason this one caught our attention is the size of it: nearly 9 million logic cells and 35 billion transistors on a chip! If that’s not enough there is also over 2,000 user I/Os including transceivers that can move around 4.5 Tb/s back and forth.
To put things in perspective, the previous record holder — the Virtex Ultrascale 440 — has 5.5 million logic cells and an old-fashioned Spartan 3 topped out at about 50,000 cells — the new chip has about 180 times that capacity. For the record, I’ve built entire 32-bit CPUs on smaller Spartans.
That led us to wonder? Who’s buying these things? When I first heard about it I guessed that the price would be astronomical, partly due to expense but also partly because the market for these has to be pretty small. The previous biggest Xilinx part is listed on DigKey who pegs the Ultrascale 440 (an XCVU440-2FLGA2892E) at a cost of $55,000 as a non-stocked item. Remember, that chip has just over half the logic cells of the VU19P.
If you’ve been reading Hackaday for awhile, there’s an excellent chance you’ve seen a project or two powered by the Smoothieboard. The open source controller took Kickstarter by storm in 2013, promising to be the last word in CNC thanks to its powerful 32-bit ARM processor. Since then we’ve seen it put to use in not only the obvious applications like 3D printers and laser cutters, but also for robotic arms and pick-and-place machines. If it moves, there’s a good chance you can control it with the Smoothieboard.
But after six years on the market, the team behind this motion control powerhouse has decided it’s time to freshen things up. The Kickstarter for the Smoothieboard v2 has recently gone live and, perhaps unsurprisingly, already blown past its funding goal. Rather than simply delivering an upgraded Smoothieboard, the team has also put together a couple “spin-offs” targeting different use cases. If Smoothie v1 was King of CNC boards, then v2 is aiming to be the Royal Family.
Smoothieboard v2-Prime with breakouts
The direct successor to the original board is called v2-Prime, and it’s everything you’d expect in an update like this. Faster processor, more RAM, more flash, and improved stepper drivers. There’s also available GPIO expansion ports to connect various breakout boards, and even a header for you to plug in a Raspberry Pi. If you’re looking to upgrade your existing Smoothieboard machines to the latest and greatest, the Prime is probably what you’re after.
Then there’s the v2-Mini, designed to be as inexpensive as possible while still delivering on the Smoothieboard experience. The Mini has the same basic hardware specs as the Prime, but uses lower-end stepper drivers and deletes some of the protection features found on the more expensive model. For a basic 3D printer or laser cutter, the Mini and its projected $80 price point will be a very compelling option.
In the other extreme we have the v2-Pro, which is intended to be an experimenter’s dream come true. It features more stepper drivers, expansion ports, and even an integrated FPGA. Realistically, this board probably won’t be nearly as popular as the other two versions, but the fact that they’ve even produced it shows how committed the team is to pushing the envelope of open source motion control.
Our coverage of the original Smoothieboard campaign back in 2013 saw some very strong community response, with comments ranging from excited to dismissive. Six years later, we think the team behind the Smoothieboard has earned a position of respect among hackers, and we’re very excited to see where this next generation of hardware leads.
We see all kinds of projects come across the news desk at Hackaday. Sometimes it’s a bodge, neatly executed, that makes us laugh out loud at its simple ingenuity. Other times, it’s a case of great skill and attention to detail, brought to bear to craft something of great beauty. [Greg Davill]’s LED cube is firmly the latter.
The matte black finish makes the artwork really pop. Note the matrix of tiny pads for the LEDs on the backside.
The build starts with custom four layer PCBs, in matte black with gold-plated pads. It’s a classic color scheme, and sets the bar for the rest of the project. Rather than proceeding to hook up some commodity microcontrollers to off-the-shelf panels, [Greg] goes his own way. Each PCB gets a 24×24 raw LED matrix, directly soldered on the back side. By producing a “dumb” matrix, there are large savings in current draw to be had over the now-popular smart strings.
The panels are then loaded into a tidy 3D printed cube, with space inside for the FPGA running the show and a power supply. Five panels are held in with double sided-tape and screws, with the last being installed with magnets to allow access to the inside. Neatly folded flat-flex cables are pressed into service to connect everything up.
It’s a build that shows there is value in doing things your own way, and that the new methods don’t always beat out the old. With careful consideration of aesthetics from the start to the end of the project, [Greg] has built an LED cube both astounding in its simplicity, and beautiful in its execution. We’ve seen [Greg]’s work before, too – it’s not too often hand soldered BGAs cross these pages. Video after the break.