An FM Receiver With One FPGA Input Pin
April 24, 2026
Brian Greenforest built an FM receiver whose RF signal enters one FPGA input. The pin’s digital threshold converts radio frequency into a transition stream, and the reconfigurable fabric carries that stream all the way to recovered audio.
The architecture removes the strong external local oscillator, conventional analog mixer, amplitude-preserving RF or IF ADC, sine and cosine tables, and atan2 phase extraction.
Turn Threshold Crossings Into Quadrature
Four-phase sampling uses DDR timing to observe the transition stream at staggered phases and form in-phase and quadrature lanes. XOR operations supply the mixing relationships without multiplier-heavy trigonometric synthesis.
A CIC path integrates and decimates the high-rate decisions. Cross-product demodulation extracts FM phase change, and sigma-delta output converts the recovered stream into audio.
Strip Radio to Its Necessary Structure
The receiver preserves the timing of threshold crossings rather than the full RF amplitude. That choice collapses the familiar analog and numeric stack while retaining the information FM needs.
FPGA designers, radio builders, and educators can study the full writeup and Verilog, reproduce the chain, and explore how much more radio can move into one digital threshold.
Measure the One-Pin Receiver as a Complete Radio
The companion article connects the one-pin receiver to host-side I/Q processing, SDR measurement, and the complete working radio path.
LinkedIn status when archived: Visible to anyone on or off LinkedIn.
I built an FM receiver with one FPGA input pin.
Not “one-chip radio.”
Not “a tiny SDR module.”
One input pin receives the RF.
The FPGA threshold turns it into a transition stream.
Four-phase sampling recovers quadrature structure.
XOR logic handles mixing.
A CIC filter downsamples.
A cross-product demodulator recovers FM.
Sigma-delta output produces audio.
What disappears?
No strong external local oscillator spraying around the board.
No conventional analog mixer front end.
No RF/IF amplitude-preserving ADC.
No sine/cosine lookup tables.
No atan2 phase extractor.
The question was not “can I make a toy FM receiver?”
The question was:
How much of radio is actually necessary?
Turns out: less than the inherited stack tells you.
Full writeup in the comments
A tiny bit more detail. Verilog & schematics will follow soon. Apologize my laziness, GPT 5.5 is a wild new beast, publishing isn't my strong asset: https://greenforest.io/how-much-radio-do-you-actually-need2.html
Live demo: https://www.linkedin.com/posts/briangreenforest_how-much-radio-do-you-actually-need-share-7453308052302102528-Lf1n?utm_source=share&utm_medium=member_desktop&rcm=ACoAABKUCNUBsJCgKID4KDilYEHgUGp0SWVDy78
Alexander Trushkin the magical stuff about this approach and the way Fourier theory works with amplitude and with some crazy far-fetching consequences of Heizenberg uncertainty of sorts needs a very careful consideration of a proper measurement. The fact that this thing has a surprisingly high dynamic range I simply don't want to understate. Give me some time to actually measure and prepare a follow-up post: people can build wildly capable systems with less. And all the Verilog to reproduce without any errors in controlled environment!
Steve Rencontre Weaver image rejection is slightly cooler than just counting nanoseconds. But in a nutshell you're close to the truth. I wish we had more tiny < 8,000 LUTs FPGAs that clock and SERDES at GHz!
Wilson Bilkovich I'd love to give more soon! Packaged with Verilog and bandwidth and amplitude dynamic range and adjacent interferer rejection dB measurement numbers, reproducible on cheap Lattice Semiconductor FPGAs.
Douglas Datwyler, P.E. Thanks for the requesf! I am sorry, I really want to incorporate the serial multiplier to save resources and improve timing closure, but it needs to re-validate on the target platform. Stay tuned because this project is not on the top of my current work plate, but certainly the top publicity item.
https://greenforest.io/ will have a direct link to the GitHub, I promise!
Comments added by Brian Greenforest on LinkedIn
These 8 comments were also preserved verbatim from Brian Greenforest’s LinkedIn data export or the public post page.
Comment 1 · (2026-04-24 01:23:53 UTC)
View the LinkedIn post
Comment 2 · (2026-04-24 04:38:51 UTC)
View the LinkedIn post
Comment 3 · (2026-04-24 05:05:56 UTC)
View the LinkedIn post
Comment 4 · (2026-04-26 17:04:38 UTC)
View the LinkedIn post
Comment 5 · (2026-04-26 17:08:03 UTC)
View the LinkedIn post
Comment 6 · (2026-04-26 17:12:23 UTC)
View the LinkedIn post
Comment 7 · (2026-04-28 02:11:07 UTC)
View the LinkedIn post
Comment 8 · (2026-05-06 05:57:05 UTC)
View the LinkedIn post