FM Transmitter


hamster

Recommended Posts

So I've just finished my latest project - an FPGA based FM transmitter that beeps out SOS in Morse code. All you need is a wire and 60 lines of VHDL!

http://hamsterworks....ndex.php/FM_SOS

Fm_xmit.png

I was musing over it all day and decided to give it a try.

There I was feeling extra clever at how well it works, and upload the a video of it in operation to Youtube. As soon as it finished it recommends that I might want to watch another video - it is somebody transmitting music on FM using only an FPGA. I don't feel so clever now!

This post has been promoted to an article

Link to comment
Share on other sites

  • 9 months later...

So I've just finished my latest project - an FPGA based FM transmitter that beeps out SOS in Morse code. All you need is a wire and 60 lines of VHDL!

http://hamsterworks....ndex.php/FM_SOS

Fm_xmit.png

I was musing over it all day and decided to give it a try.

There I was feeling extra clever at how well it works, and upload the a video of it in operation to Youtube. As soon as it finished it recommends that I might want to watch another video - it is somebody transmitting music on FM using only an FPGA. I don't feel so clever now!

This post has been promoted to an article

Hello Hamster ! After seeing this device i am really confused, and i cant's give you any advice or solution related to FPGA based FM transmitter.

But I have an question,why i used pulse width modulator (RFPWM) for transmitting the signal ?

Link to comment
Share on other sites

  • 2 weeks later...

The simple answer is it isn't using PWM - it is generating a signal that looks to be a 1 bit approximation of the FM signal. (i.e. if this was the desired signal would it be >0 at this point in time?)

 

 If you were to FFT the resulting signal you would have about 50% of the power at the desired frequency (which is what the FM radio can pick up), plus the rest of it is RF junk somehow related to the desired frequency and the FPGA clock frequencies.

Link to comment
Share on other sites

Good evening Mr Hamster :)
The project is very interesting. I am a student and if u Could you help me?. I want to send audio. You said, audio with 16-bit resolution high quality mono. 1221381325 + / - 1.000.000

but I don´t understood very well that I add audio input in the process.,and what signal I use.

This would be:

if beep_counter(19) = '1' then
phase_accumulator <= phase_accumulator + 1222381325;
else
phase_accumulator <= phase_accumulator + 1220381325;
end if;
else
phase_accumulator <= phase_accumulator + 1221381325; -- +/-1000000
end if;

This is my email: rafael_u_r@hotmail.es

my fpga is DE2-115 Cyclone IV and the audio codec is WM8731:

Audio Codec, Signal name:

 

AUD_ADCLRCK --Audio CODEC ADC LR Clock

AUD_ADCDAT    --Audio CODEC ADC Data

AUD_DACLRCK  --Audio CODEC DAC LR Clock

AUD_DACDAT  --Audio CODEC DAC Data

AUD_XCK  --Audio CODEC Chip Clock

AUD_BCLK --Audio CODEC Bit-Stream Clock

 

I2C_SCLK  --I2CClock

I2C_SDAT  --I2CData

 

My apologies if I ask too much, but it's a project, I'm doing at my university.

I look forward to hearing from you soon.

Yours sincerely

 

Rafael Urquizo from Peru.

Link to comment
Share on other sites

Hi Rafael,

 

For a frequency I chose the modulation values used was something like 1221381325 +/-1000000, so when transmitting the positive side of the square wave I used 1222381325, and for the negative side I use 1220381325. This gives the required depth of frequency modulation (a frequency change of approximately 75kHz).

 

If you have an audio stream of signed 16-bit samples A(n), You could use 1221381325 + 32 * A(n) for your modulation. Actually getting the values from A(n) from the CODEC is a different project!

Link to comment
Share on other sites

  • 3 weeks later...

Archived

This topic is now archived and is closed to further replies.