📜 ⬆️ ⬇️

Various experiments with the reception and transmission of radio signals in the FPGA


Since today, May 7th, we are celebrating Radio Day, let me bring to your attention a series of projects for FPGA boards, which I performed at different times, but somehow connected with the radio. In this video above there is a demonstration of a small miracle - a radio session on the table. Two identical FPGA boards serve as one transmitter, and the other as a radio receiver.
Further I will tell how I made it.


The radio transmitter with amplitude modulation is very simple: this is just a multiplier of two frequencies.

The carrier frequency, as a sinusoidal oscillation, is set as a table in the FPGA, the sound file is transmitted to the board from the laptop via the serial port at a speed of 230400 baud, which roughly corresponds to the usual audio track 22050 samples / sec, 8 bits, mono. Two signals: the carrier frequency and the audio signal are multiplied and the spectrum is transferred to the high-frequency region, plus the carrier. Then this digital signal is sent to an analog-to-digital converter, in our case it is the simplest R2R DAC - and then to the antenna. Antenna - a few turns of wire and a capacitor. They are chosen approximately so that the resonant frequency of this oscillating circuit is in the region of the carrier frequency. An ordinary household receiver can receive such a radio signal at a distance of several meters. The carrier frequency of the original project is 1.5 MHz, but it is better to take a little higher - 7 MHz.
')
A complete description of the project and the source text of all programs and the project for the Altera Cyclone III FPGA for the Mars Rover 2 board can be found here: marsohod.org/projects/marsohod2/298-am-radio-transmitter

The radio is a much more complicated thing.
I made it also on the basis of the Mars Rover 2 board, but I took as a basis the other project " Simple SDR receiver for FPGA " by iliasam . Many thanks to him for this wonderful article.

The project was executed according to the following structural scheme:



My FPGA project has several differences from the original:


Read more about the project here .
Sources can be taken at github github.com/marsohod4you/FPGA_SDR .

There is one more my project: FM radio transmitter from the same board Rover2.
This is generally one of my favorite projects!

The FM band is located at frequencies above 80 MHz, so even for the FPGA it is not very easy to manipulate data at such frequencies.

To simulate the FM modulated signal in the FPGA, the following modulator was implemented:



These are 5 triggers connected in series, but having feedback back to 5 or 4 steps. After resetting the circuit in triggers, a single impulse moves along a large circle. The output of the circuit is 5 times less frequency than the clock. If the clock is about 450 MHz, then the output of the circuit will be 90 MHz.
Sometimes, the circuit can be supplied with control pulses short - and then the unit will move in triggers in a small circle, and the frequency at the output of the circuit will increase significantly and will be 450/4 ~ 112 MHz. Thus, it is possible to achieve a certain deviation of the average frequency, if we insert short periods among several long ones. For example, 4 long periods and one short - the division ratio will be 4.8, that is, at a clock 450MHz, the output will be 93.73MHz.

Then the FM transmitter turns out like this:



The received byte stream of the WAV file (8 bits, mono) is passed through a pre-compiled table that tells you how many long periods to make a short insert. So you can achieve an average frequency deviation, for example, in the 50KHz band.

The whole project is described right here in our blog: marsohod.org/projects/marsohod2/246-fmradio

Well, it turns out, one board Mars Rover2 allows you to touch such different topics related to radio communication: AM transmission, SDR reception, FM transmission.

Well, and again: Happy Radio!

Source: https://habr.com/ru/post/283104/


All Articles