
Homemade GPS Receiver (2013) - brian-armstrong
http://www.aholme.co.uk/GPS/Main.htm
======
brian-armstrong
DSSS [1] is really interesting and worth reading up on if you’re already
familiar with LFSRs. To summarize, you start by generating a deterministic,
pseudorandom, periodic sequence. You then take your message and modulate
(bitwise XOR) each bit of the message by the entire sequence e.g. if my
sequence is 31 bits long, then my message modulated is now 31x long.

The receiver just correlates the received message by the pseudorandom
sequence. The correlation gives me what each bit is and a belief/probability
for that bit.

This works really well because the sequence is orthogonal to just about every
other sequence (it’s white noise!). It’s even orthogonal to time shifted
versions of itself, meaning that it does well at rejecting multipath
distortion.

1: [https://en.m.wikipedia.org/wiki/Direct-
sequence_spread_spect...](https://en.m.wikipedia.org/wiki/Direct-
sequence_spread_spectrum)

~~~
closeparen
This seems like a common sort of trick in electrical engineering. XLR cables
used in professional audio have three conductors to carry a single signal.
Why? One of them exists purely to collect interference - the _same_
interference that affects the primary transmission. The equipment on the other
side subtracts it from the primary signal to get a clean result. This is why
hundreds of feet of unshielded cable can still sound fine.

~~~
friendzis
This is called balanced input/output. TRS connectors are also quite common,
especially for interconnects. I find TRS/XLR combi sockets [0] used for this
purpose fascinating :)

Third wire does not collect interference in a balanced line. Instead, voltage
signalling balanced line uses one ground and two signal lines of opposite
polarity and input is difference between these two signal lines. Induced
interference is more or less the same on both signal lines, therefore cancels
out. At a quick glance this article [1] seems to explain this without delving
into electronics. Some differential lines (e.g. RS-485, popular in industrial
automation) use current signalling thus requiring two wires per signal.

[0]:
[http://www.cliffuk.co.uk/products/combijacks/combijacks.jpg](http://www.cliffuk.co.uk/products/combijacks/combijacks.jpg)
[1]: [http://www.aviom.com/blog/balanced-vs-
unbalanced/](http://www.aviom.com/blog/balanced-vs-unbalanced/)

~~~
blattimwind
> Some differential lines (e.g. RS-485, popular in industrial automation) use
> current signalling thus requiring two wires per signal.

Virtually all high-speed digital communication uses differential signalling.

~~~
friendzis
Agree on that, but all high speed interconnects I know use voltage signalling.

~~~
blattimwind
That's orthogonal to differential or single ended, but typically the transmit
side uses some form of current steering; it just goes well with it.

E.g. PCIe transmitters are HSCL, which is a form of current steering that
gives the receiver exactly the voltages it needs to see at nominal currents
and termination values.

------
ohazi
This is impressive enough, but his other projects are also awesome and totally
worth a look:

[http://www.aholme.co.uk/Projects.htm](http://www.aholme.co.uk/Projects.htm)

~~~
amaterasu
Thanks for linking this - I didn't even think to look and his work is amazing!

------
Maxious
Further work in this space: [https://gnss-sdr.org/](https://gnss-sdr.org/)

------
okket
See also previous discussion from 3 years ago:
[https://news.ycombinator.com/item?id=9470376](https://news.ycombinator.com/item?id=9470376)
(55 comments)

------
wanderingjew
should have [2012] tag.

~~~
grzm
Or perhaps 2014, as it contains an update from September 2014.

