> You may say "But nyquist says you can't transmit or receive frequencies at more than 1/2 the sample rate (40 MHz in this case). To a degree that is true. Some people thought it may be overtones, but what happens in reality something stranger happens. Everything you transmit is actually mirrored around 1/2 the sample rate (40 MHz).
For anyone interested this is called aliasing.
If you've ever noticed wheels going backwards in racing or train footage, this is exactly what's happening: the wheel's angular velocity is above half the sampling rate (i.e. the camera's FPS), producing a mirrored version which in turn appears to rotate backwards.
Neat. Note that this technique will work on any system that has a high-speed I2S bus that can be operated by DMA, which these days is quite a lot of microcontrollers.
It's a kind of reverse "TEMPEST": rather than detecting a computer's accidentally radiated emissions, deliberately radiate emissions in a particular pattern to produce a radio signal.
Would be cool to see an spectrum plot of the output signal.. the explanation of why the signal is picked up seems a bit too vague for me.. Since the transmitted signal will be a square wave I imagine, I would expect to see some side-bands that are pretty significant above and below the 80MHz.. And then the 61MHz signal that the TV would normally receive should be actually received using some local oscillator that I would guess is down around like 10MHz or something.. so would love to get a more detailed explanation on this stuff if anybody knows what actually is happening beyond "some people think its blah, but really its blah!! huzzah!" type of explanation..
First, a 80MHz square wave does not have side bands that are significant below 80MHz, only above! And if it's configured for alternating 0/1 bits, a serial port at 80MBaud creates a square wave of exactly 40 MHz.
Furthermore cnlohr doesn't use a fixed square-wave but a variable sequence of pulses. And a single pulse of (1/80Mhz)=12.5ns will have a sinc spectrum. sinc f=(sin f)/f. For an infinitely sharp-edged pulse, this sinc-spectrum basically extends to infinity, for real-world pulses you can expect to see a few harmonics.
cnlohr basically uses the synchronous serial i2s interface, running at 80Mbits/s as a 1bit DAC with a zero-order hold (stretching out a constant voltage over the bit time), so this DAC will recreate anything between 0..40MHz correctly (within the capabilities of its pretty poor quantisation noise and within the first lobe of the sinc-spectrum).
But, any signal you recreate will, because it's made up of the single pulses with the sinc spectrum, not only have energy between 0...+Fs/2 but also between N-1/2 and N+1/2 times the sampling frequency. There's a obvious trick involving the fact that convolution in the time domain corresponds to multiplication in the frequency domain, but unfortunately I can't really recall it correctly now... so you have to just take my word for it ;)
And that's why, if this "DAC" outputs 1MHz, you also get 79 and 81.
Conversely, when you try to output a sharp pulse on your soundcard, e.g. an audiofile consisting of {zeroes, one sample of 32000, zeroes...}, the output to your headphones will be something like a sinc pulse. The Fourier transform of this since pulse in the time domain will be a box function from 0..half the sample rate in the frequency domain, and hence no higher harmonics will be output.
[+] [-] kaoD|10 years ago|reply
For anyone interested this is called aliasing.
If you've ever noticed wheels going backwards in racing or train footage, this is exactly what's happening: the wheel's angular velocity is above half the sampling rate (i.e. the camera's FPS), producing a mirrored version which in turn appears to rotate backwards.
[+] [-] mkesper|10 years ago|reply
[+] [-] pjc50|10 years ago|reply
See also Fabrice Bellard's DVB-T broadcast using XWindows: http://www.bellard.org/dvbt/
It's a kind of reverse "TEMPEST": rather than detecting a computer's accidentally radiated emissions, deliberately radiate emissions in a particular pattern to produce a radio signal.
[+] [-] SEJeff|10 years ago|reply
https://www.kickstarter.com/projects/214379695/micropython-o...
This is really impressive.
[+] [-] okso|10 years ago|reply
Should we suggest an extra milestone for the Kickstarter for `import 3Dtv` ?
[+] [-] nivla|10 years ago|reply
However I thought there was already a micropython firmware for it [1]. What extra does this kickstarter bring in?
[1] https://learn.adafruit.com/building-and-running-micropython-...
[+] [-] xt00|10 years ago|reply
[+] [-] cnvogel|10 years ago|reply
Furthermore cnlohr doesn't use a fixed square-wave but a variable sequence of pulses. And a single pulse of (1/80Mhz)=12.5ns will have a sinc spectrum. sinc f=(sin f)/f. For an infinitely sharp-edged pulse, this sinc-spectrum basically extends to infinity, for real-world pulses you can expect to see a few harmonics.
https://www.wolframalpha.com/input/?i=fourier+transform+box+...
cnlohr basically uses the synchronous serial i2s interface, running at 80Mbits/s as a 1bit DAC with a zero-order hold (stretching out a constant voltage over the bit time), so this DAC will recreate anything between 0..40MHz correctly (within the capabilities of its pretty poor quantisation noise and within the first lobe of the sinc-spectrum).
https://en.wikipedia.org/wiki/Zero-order_hold
http://www.ee.ic.ac.uk/pcheung/teaching/ee2_signals/Lecture%... (last slide)
But, any signal you recreate will, because it's made up of the single pulses with the sinc spectrum, not only have energy between 0...+Fs/2 but also between N-1/2 and N+1/2 times the sampling frequency. There's a obvious trick involving the fact that convolution in the time domain corresponds to multiplication in the frequency domain, but unfortunately I can't really recall it correctly now... so you have to just take my word for it ;)
And that's why, if this "DAC" outputs 1MHz, you also get 79 and 81.
http://www.analog.com/media/en/training-seminars/tutorials/M... (here's a nice graph)
Conversely, when you try to output a sharp pulse on your soundcard, e.g. an audiofile consisting of {zeroes, one sample of 32000, zeroes...}, the output to your headphones will be something like a sinc pulse. The Fourier transform of this since pulse in the time domain will be a box function from 0..half the sample rate in the frequency domain, and hence no higher harmonics will be output.
[+] [-] mkj|10 years ago|reply