Ask Hackaday: Computing Square Roots on FPGA?

Hackaday reader [nats.fr] wrote in with some code from a project that resizes a video stream on the fly using an FPGA. Doing this right means undoing whatever gamma correction has been applied to the original stream, resizing, and then re-applying the gamma. Making life simpler, [nats.fr] settled on a gamma of two, which means taking a bunch of square roots, which isn’t fast on an FPGA.

[nats]’s algorithm is pretty neat: it uses a first-stage lookup to figure out in which broad range the value lies, and then one step of Hero’s algorithm to refine from there. (We think this is equivalent to saying he does a piecewise linear interpolation, but we’re not 100% sure.) Anyway, it works decently.

Of course, when you start looking into the abyss that is special function calculation, you risk falling in. Wikipedia lists more methods of calculating square roots than we have fingers. One of them, CORDIC, avoids even using multiplication by resorting to clever bitshifts and a lookup table. Our go-to in these type of situations, Chebyshev polynomial approximation, didn’t even make the cut. (Although we suspect it would be a contender in the gamma=1.8 or gamma=2.2 cases, especially if combined with range-reduction in a first stage like [nats.fr] does.)

So what’s the best/fastest approximation for sqrt(x) for 16-bit integers on an FPGA? [nats.fr] is using a Spartan 6, so you can use a multiplier, but division is probably best avoided. What about arbitrary, possibly fractional, roots?

Hackaday Links: December 25th, 2016

You should be watching the Doctor Who Christmas special right now. Does anyone know when the Resturant at the End of the Universe spinoff is airing?

We have a contest going on right now. It’s the 1 kB Challenge, a contest that challenges you to do the most with a kilobyte of machine code. The deadline is January 5th, so get cracking.

A few years ago, [Kwabena] created the OpenMV, a Python-powered machine vision module that doesn’t require a separate computer. It’s awesome, and we’re going to have his talk from the Hackaday SuperConference up shortly. Now the OpenMV is getting an upgrade. The upgrades include an ARM Cortex M7, more RAM, more heap for less money. Here’s a link to preorder.

There ain’t no demoscene party like an Amtrak demoscene party because an Amtrak demoscene party lasts ten hours.

E-paper displays are fancy, cool, and low-power. Putting them in a project, however, is difficult. You need to acquire these display modules, and this has usually been a pain. Now Eink has a web shop where you can peruse and purchase epaper display modules and drivers.

[Kris] built a pair of STM32L4 dev boards that are easily programmed in the Arduino IDE. Now he’s putting these boards up on Kickstarter. The prices are reasonable – $15 for the smaller of the pair, and $25 for the bigger one. Remember, kids: ARM is the future, at least until RISC-V takes over.

This is how you do holiday greeting cards.

Didn’t get what you want for Christmas?  Don’t worry, Amazon still has A Million Random Digits with 100,000 Normal Deviates in stock. It’s also available on audible dot com. Sometimes we don’t have time to sit down and read a million random digits but with audible dot com, you can listen to a million random digits in audio book format. That’s audible dot com please give us money.

northkoreaThis is the last Hackaday Links post of the year, which means it’s time for one of our most cherished traditions: reviewing our readership in North Korea.

It’s been a banner year for Hackaday in the Democratic People’s Republic of North Korea. The readership has exploded in 2016, with a gain of nearly 300%. To put that in perspective, in 2015 we had thirty-six views from North Korea across every page on Hackaday. In 2016, that number increased to one hundred and forty.

That’s a phenomenal increase and a yearly growth that is unheard of in the publishing industry. We’d like to tip our hat to all our North Korean reader, and we’re looking forward to serving you in 2017.

Creating A PCB In Everything: KiCad, Part 3

This is the third and final installment of a series of posts on how to create a PCB in KiCad, and part of an overarching series where I make the same schematic and board in dozens of different software tools. A few weeks ago, we took a look at making a schematic in KiCad, and more recently turned that schematic into a board ready for fabrication.

For our KiCad tutorials, we’ve already done the basics. We know how to create a PCB, make a part from scratch, and turn that into a board. This is the bare minimum to be considered competent with KiCad, but there’s so much more this amazing tool has to offer.

In part three of this KiCad tutorial, we’re going to take a look at turning our board into Gerbers. This will allow us to send the board off to any fab house. We’re going to take a look at DRC, so we can make sure the board will work once we receive it from the fab. We’re also going to take a look at some of the cooler features KiCad has to offer, including push and shove routing (as best as we can with our very minimalist board) and 3D rendering.

Continue reading “Creating A PCB In Everything: KiCad, Part 3”

Solving IoT Problems with Node.js for Hardware

Tod Kurt knows a thing or two about IoT devices. As the creator of blink(1), he’s shipped over 30,000 units that are now out in the wild and in use for custom signaling on everything from compile status to those emotionally important social media indicators. His talk at the 2016 Hackaday SuperConference covers the last mile that bridges your Internet of Things devices with its intended use. This is where IoT actually happens, and of course where it usually goes astray.

Continue reading “Solving IoT Problems with Node.js for Hardware”

New Part Day: Better Pins

If you’re making a circuit that is designed to plug into a breadboard, you have a problem. Those 0.1″ header pins are square, and the metal leaf contacts inside a solderless breadboard will eventually get bent out of shape. You only need to look at the breadboards in a university electronics lab for evidence of this.

The solution to this problem is to make pins that are as similar as possible to the leads on DIP chips. They should be flat, of course, and it would be nice if they didn’t have those plastic spacers and didn’t present a blob of solder on the top side of the chip.

Flip-Pins are the answer. Think of them as standard pin headers, but meant for breadboard applications, and having a great aesthetic for your projects. They’re designed to look as much like standard IC pins as possible, and have the same thickness (0.020″) as standard DIP leads.

The application of Flip-Pins is a lot like soldering standard 0.1″ pin headers. The pins ship in neat little plastic retainers and can be tacked onto a PCB with just a little bit of solder. There’s a datasheet, and models for Altium, KiCad, and Eagle.

Flip-Pins grew out of another project, the OSHChip, to create an all-in-wonder chip containing an ARM microcontroller, radio, and a crossbar so any pin can be mapped to any peripheral. The OSChip itself is very cool, but one question constantly asked of the creator of this neat chip was, ‘where did you get those pins?’ From a factory. Now you can buy these pins from Evil Mad Scientist and Tindie. They’re a bit pricey, but they do look great.

Alan Yates: Why Valve’s Lighthouse Can’t Work

[Alan Yates] is a hacker’s engineer. His job at Valve has been to help them figure out the hardware that makes virtual reality (VR) a real reality. And he invented a device that’s clever enough that it really should work, but difficult enough that it wasn’t straightforward how to make it work.

In his presentation at the Hackaday Supercon 2016, he walked us through all of the design and engineering challenges that were eventually conquered in getting the Lighthouse to market. We’re still a bit overwhelmed by the conceptual elegance of the device, so it’s nice to have the behind-the-scenes details as well.

Continue reading “Alan Yates: Why Valve’s Lighthouse Can’t Work”

So Where’s My Low Voltage DC Wall Socket?

What are the evocative sounds and smells of your childhood? The sensations that you didn’t notice at the time but which take you back immediately? For me one of them is the slight smell of phenolic resin from an older piece of consumer electronics that has warmed up; it immediately has me sitting cross-legged on our living room carpet, circa 1975.

"Get ready for a life that smells of hot plastic, son!" John Atherton [CC BY-SA 2.0], via Wikimedia Commons.
“Get ready for a life that smells of hot plastic, son!” John Atherton [CC BY-SA 2.0], via Wikimedia Commons.
That phenolic smell has gone from our modern electronics, not only because modern enclosures are made from ABS and other more modern plastics, but because the electronics they contain no longer get so hot. Our LCD TV for instance nowadays uses only 50 watts, while its 1970s CRT predecessor would have used several hundred. Before the 1970s you would not find many household appliances that used less than 100 watts, but if you take stock of modern electrical appliances, few use more than that. Outside the white goods in your kitchen and any electric heaters or hair dryers you may own, your appliances today are low-powered. Even your lighting is rapidly being taken over by LEDs, which are at their heart low-voltage devices.

There are many small technological advancements that have contributed to this change over the decades. Switch-mode power supplies, LCD displays, large-scale integration, class D audio and of course the demise of the thermionic tube, to name but a few. The result is often that the appliance itself runs from a low voltage. Where once you would have had a pile of mains plugs competing for your sockets, now you will have an equivalent pile of wall-wart power supplies. Even those appliances with a mains cord will probably still contain a switch-mode power supply inside.

Continue reading “So Where’s My Low Voltage DC Wall Socket?”