There’s an old joke about how can you find the height of a building using a barometer. One of the punchlines is to drop the barometer from the roof and time how long it takes to hit the ground. We wonder if [Alexlao512] had that in mind when he wrote a post about unconventional uses of FPGAs. Granted, he isn’t dropping any of them off a roof, but still. The list takes advantage of things we usually try to avoid such as temperature variation, metastability, and the effects of propagation delays.
For example, you probably know that hooking up an odd number of inverters into a loop forms an oscillator—the so-called ring oscillator. The post discusses how you can use an oscillator like that to measure propagation delay or even as a strain gauge. If you put pressure on the FPGA chip, the frequency of the ring oscillator will subtly vary.
While metastability isn’t usually our friend, apparently it is if you are trying to make a truly random number generator as a source of entropy. We also usually frown on depending on subtle process variations between devices. However, you can actually measure those variations to generate a physical fingerprint that can used as a unique ID for a particular device.
There’s more including using FPGA interconnects as onboard antennas. Very out of the box — or maybe we should say in the package — thinking!
We actually talked about the strain gauge thing nearly a decade ago. Need to learn FPGAs? Our boot camp can be your gateway.
Thanks [Patrick] for the tip.
@Alexlao512 said:
Frequency Synthesis
While there are PLLs for clock generation on an FPGA, it is possible to create a PLL on an FPGA usable for radio frequency frontends with some external components. In theory, this could replace an external frequency synthesizer in some RF frontends.
Examples
1. @8-76 MHz Fractional-N Synthesizer, http://www.aholme.co.uk/Frac3/Main.htm
A “Fractional-N Synthesizer” is a nice example of using some FPGA structures. But where FPGAs really shine is when they are used in stand-alone Direct Digital Synthesis (DDS).[1]
1. Direct Digital Synthesis
https://en.wikipedia.org/wiki/Direct_digital_synthesis
Actually I’ve come across the strain-gauge effect on an Nordic BLE IC when using the internal RC oscillator instead of an external RTC crystal. The PCB with IC sat in a luggage handle bar and when the suitcase was really heavy and lifted the BLE connection suddenly failed since the packet timing shifted. Using an external Xtal solved the problem.
Interesting how things are never what they look like in the surface, that holds true in any area of human life. Even for devices considered deterministic there is room for “weird” stuff like that
This is worth a look “Designing digital circuits for FPGAs using parallel genetic algorithms” https://www.osti.gov/biblio/1118155 as I recall, the programming produced was quite temperature-dependent.
Go to the engineer and say “If you tell me the height of the building I’ll give you a nice shiny barometer!”