From: Vladimir Vassilevsky on


Muzaffer Kal wrote:

> On Mon, 5 Apr 2010 23:46:10 -0700 (PDT), HardySpicer
> <gyansorova(a)gmail.com> wrote:
>
>
>>On Apr 6, 11:15 am, "csilva1975" <cesard(a)n_o_s_p_a_m.hotmail.com>
>>wrote:
>>
>>>Hi all!
>>>
>>>As the subject states, i want to generate a FM modulated signal in DSP, or
>>>better yet a NBFM signal.
>>>
>>>Reading thru this newsgroup I have found a very usefull paper at
>>>
>>>h**p://www.claysturner.com/dsp/2nd_OSC_paper.pdf
>>>
>>>that describes how to generate sine and cosine waves. Many thanks to the
>>>author !
>>>However, since the input signal is 12 bits, I whould need 1024 diferent
>>>matrixes to modulate the output.
>>>I have found another sine wave generator
>>>(h**p://www.b-nm.at/sine-generation-tutorial/) that is simpler and I don't
>>>need to store matrixes, unfortunatly it becomes very instable bellow the
>>>2*pi/10 frequency.
>>>
>>>Is there another/simpler way of digitaly generate a FM signal on a
>>>microcontroller ?
>>>
>>>Something about the system I'm designing:
>>>
>>>The modulating input should be arround 3 Khz (voice) sampled at 12 bits.
>>>The desired center frequency 6540 hz with a deviation of +/- 2500 hz. If my
>>>math and knowlage doesn't fail me, the BW of the output signal should be
>>>arround 11 Khz.
>>>The sampling rate is 28847 hz (yes, I know this is a very odd number).
>>>
>>>Some pointer are greatly apreciated.
>>>
>>>Thanks.
>>>Cesar
>>>
>>>PS - I'm sorry for my spelling, but english is not my primary language.
>>
>>You know, one of these days a DSP engineer is gonna discover analogue
>>electronics.
>>There will be such a Eureka...I can solve a problem with a few
>>transistors...wow!!
>
>
> And find out that at 32nm you can't make the kind of transistor you
> need? ;-)

This shouldn't be a problem; an FM modulator could be build from few
logic gates.

VLV


From: Tauno Voipio on
On 6.4.10 2:15 , csilva1975 wrote:
> Hi all!
>
> As the subject states, i want to generate a FM modulated signal in DSP, or
> better yet a NBFM signal.
>
> Reading thru this newsgroup I have found a very usefull paper at
>
> h**p://www.claysturner.com/dsp/2nd_OSC_paper.pdf
>
> that describes how to generate sine and cosine waves. Many thanks to the
> author !
> However, since the input signal is 12 bits, I whould need 1024 diferent
> matrixes to modulate the output.
> I have found another sine wave generator
> (h**p://www.b-nm.at/sine-generation-tutorial/) that is simpler and I don't
> need to store matrixes, unfortunatly it becomes very instable bellow the
> 2*pi/10 frequency.
>
> Is there another/simpler way of digitaly generate a FM signal on a
> microcontroller ?
>
> Something about the system I'm designing:
>
> The modulating input should be arround 3 Khz (voice) sampled at 12 bits.
> The desired center frequency 6540 hz with a deviation of +/- 2500 hz. If my
> math and knowlage doesn't fail me, the BW of the output signal should be
> arround 11 Khz.
> The sampling rate is 28847 hz (yes, I know this is a very odd number).
>
> Some pointer are greatly apreciated.
>
> Thanks.
> Cesar
>
> PS - I'm sorry for my spelling, but english is not my primary language.

Your deviation is 38% of carrier frequency and modulation index
from 1 to 10. This is hardly NBFM.

The carrier frequency is too small for good FM of an audio signal.

--

Tauno Voipio, OH2UG
tauno voipio (at) iki fi

From: Clay on
On Apr 5, 7:15 pm, "csilva1975" <cesard(a)n_o_s_p_a_m.hotmail.com>
wrote:
> Hi all!
>
> As the subject states, i want to generate a FM modulated signal in DSP, or
> better yet a NBFM signal.
>
> Reading thru this newsgroup I have found a very usefull paper at
>
> h**p://www.claysturner.com/dsp/2nd_OSC_paper.pdf
>
> that describes how to generate sine and cosine waves. Many thanks to the
> author !
> However, since the input signal is 12 bits, I whould need 1024 diferent
> matrixes to modulate the output.
> I have found another sine wave generator
> (h**p://www.b-nm.at/sine-generation-tutorial/) that is simpler and I don't
> need to store matrixes, unfortunatly it becomes very instable bellow the
> 2*pi/10 frequency.
>
> Is there another/simpler way of digitaly generate a FM signal on a
> microcontroller ?
>
> Something about the system I'm designing:
>
> The modulating input should be arround 3 Khz (voice) sampled at 12 bits.
> The desired center frequency 6540 hz with a deviation of +/- 2500 hz. If my
> math and knowlage doesn't fail me, the BW of the output signal should be
> arround 11 Khz.
> The sampling rate is 28847 hz (yes, I know this is a very odd number).
>
> Some pointer are greatly apreciated.
>
> Thanks.
> Cesar
>
> PS - I'm sorry for my spelling, but english is not my primary language.

Hello Cesar,

Both my 1st and 2nd oscillator papers describe a method for easily
modulating the oscillator's frequency to generate FM. You set up a
quadrature osc at you center frequency (carrier) and then after you do
each iteration on the carrier frequency, you then use a 2nd matrix
(described) in the 1st paper to advance the same state variables that
the carrier's matrix works on. Then finally do a simple amplitude
correction. Also described in the papers.

Happy coding.
Clay



From: csilva1975 on
>Hello Cesar,
>
>Both my 1st and 2nd oscillator papers describe a method for easily
>modulating the oscillator's frequency to generate FM. You set up a
>quadrature osc at you center frequency (carrier) and then after you do
>each iteration on the carrier frequency, you then use a 2nd matrix
>(described) in the 1st paper to advance the same state variables that
>the carrier's matrix works on. Then finally do a simple amplitude
>correction. Also described in the papers.
>
>Happy coding.
>Clay
>

Hello everybody!

First let me thank everyone that posted a reply. It really helped!
I was starting to feel that I was out of options, but after reading your
posts and links, I will try new things.

Replying in order:

John and Andrea:
The LUT should be an option to consider. I didn't know the techique to use
a table to store the values of sine and another to store the diferences.
Will definitly give it a go. Will also try the Ollie Niemitalo algorithm
since the microcontroller I'm working has 16 bit fixed point and a single
clock MAC (Multiply And Accumulate).

HardySpicer:
I had a really good laugh with your transistor post. Don't feel bad. A
single DSP chip has millions of transistors in it.
Also, after the signal is generated it will be upmixed with a 461,538 Khz
signal to give an output at 455 khz to be filtered by a ceramic filter
(hello analog world).

Tauno:
Your post really confused me.
Since beta=deltaF/Fm, and deltaF=2500 and Fm=3000, beta =0.833(3) hence a
NBFM.
Please correct me if I'm wrong. This is just an hobby of mine.

Clay:
Thank you for your post. I have learn much with your papers.
I'm using a Coupled-standard quadrature oscillator, as decribed in them, to
generate the SSB signals.
If I understand your papers correcly, and since I have a modulating signal
of 12 bits (or even 8 bits) I would need 1024 (or 256) diferent
pre-calculated matrixes to advance the state variables, or calculate it in
real time. I only have 4K of code space so this solution is not viable.
Is this correct ?

Cheers.
Cesar

From: Tauno Voipio on
On 7.4.10 2:05 , csilva1975 wrote:
>> Hello Cesar,

> Tauno:
> Your post really confused me.
> Since beta=deltaF/Fm, and deltaF=2500 and Fm=3000, beta =0.833(3) hence a
> NBFM.
> Please correct me if I'm wrong. This is just an hobby of mine.

The range of voice signals can be taken as 250 to 3000 Hz.
For the minimum modulation frequency, the modulation index
will be 10 - remember the deviation comes from the amplitude
f the modulating signal and not its frequency.

As you intend to upconvert the signal, have you considered
creating two orthogonal components (I and Q, or Hilbert)
of the audio and using them to create phase modulated signal
at the conversion process?

--

Tauno Voipio
tauno voipio (at) iki fi