generovanie FM

Naprstek Jiri-R54332 Jiri.Naprstek
Středa Březen 17 12:03:23 CET 2004


No, mate pravdu, je to blbe <tezka ostuda> ....

Nastoupim-li na problem zcela matematicky, vyjde mi neco takovehoto:

y(t)=A*sin(2*Pi*integral[0,t](1+M*mod(t))dt)

(integral[a,b] - tim minim meze - od a do b)
mod(t) - modulacni funkce

Mozna by to slo nejak upravit, ale asi bych se na to vybod a implementoval ten integral "numericky", tedy (vicemene, jak pise pan Cesko) cyklus jet podle t, ale mit treba promennou Phi a v ni mit aktualni uhel a ten menit, pricitat k nemu v kazdem cyklu delta(Phi)+modulace. mod(t) pak muze byt zcela "nematematicky" signal.

V Ccku by to mozna slo takhle:

for(t=Phi=0; t+=step;) Vystup(A*Sin(Phi+=2*Pi*bfreq*step*(1+M*mod(t))));

Kde:
step	delka jednoho kroku ve vterinach (1Msample-> step=1e-6)
A	amplituda vystupniho signalu
bfreq	frekvence nosne
M	modulacni zdvih (0;1)
mod(t)	modulacni funkce (0;1)
t	prubezny cas ve vterinach

Pro konkretni aplikaci to samozrejme pujde zjednodusit - cas nepojede ve vterinach ale primo v samplech, 2*Pi*bfreq*step pak bude predpocitana konstanta a tak...

Tak ted uz je to snad dobre :-)

Jirka N.



> -----Original Message-----
> From: Igor Cesko [mailto:cesko@internet.sk]
> Sent: Tuesday, April 17, 2001 3:27 PM
> To: Multiple recipients of list
> Subject: RE: generovanie FM
> 
> 
>   Zdravim!
>   Omyl! Ten vzorecek je blbe :-( . Musime brat do uvahy okamzitu 
> frekvenciu a nie hned pocitat od casu t=0. 
>   Vysvetlenie: pre velmi velky cas (t=vela) sa stane, ze zmena 
> frekvencie v jednom kroku (napr. z i=x do i=x+1) bude dostatocne 
> velka na to aby okamzita hodnota signalov frekvencie z kroku x a z 
> kroku x+1 bola uplne rozdielna. To je ako keby ste si nakreslili 
> frekvenciu f1=K a frekvenciu f2=K+0.005Hz (tych 0.005Hz 
> predstavuje zmenu frekvencie v jednom kroku z i=x na i=x+1)a po 
> dostatocne dlhom case zistite, ze tie dva signaly su rozidene. 
> Potom zalezi aj na malickom frekvencnom zdvihu - priebehy sa 
> mozu navzajom predbehnut o velmi vela period: vysledkom je 
> potom totalna nahoda - sum, ktory ste dostali.
> 
>   Spravny vzorec asi nebude jednoduchy, lebo sa musi menit 
> "okamzita" frekvencia. Tusim, ze som to naposledy cital v knihe 
> "Moderni Radioelektronika" od BEN.
> 
>   Algoritmicky by to islo asi tak, ze by sa k signalu so zmenenou 
> frekvenciou v kazdom kroku pripocital fazovy posun z 
> predchadzajuceho kroku starej frekvencie : ale to je len teraz tak 
> narychlo co ma napadlo - mozno je to blbost ;-).
> 
>   S pozdravom
>                             Igor
> 
> P.S.: Vcelku zaujimavy dotaz - musim to nastudovat z tej knihy 
> (ved z priebehu toho signalu sa odvadza frekvencne zlozenie FM-
> signalu)
> 
> > Ten vzorecek je dobre, nevidim v nem chybu, nicmene 
> vzpominam si, ze jsem mel jedou problem s tim, ze mi BorladC 
> (tusim 3.neco) kompiloval tu matematiku podle dosti divokych 
> klicu, jestli se pojede celociselne neco floatove. Nevim jak 
> je to v pascalu, ale bud bych pretypoval vsude na float, 
> nebo predem definoval vsechny promenne tak, aby byly schopny 
> chapat desetinna cisla. Taky bych zkusil prepsat ten vzorecek 
> do tvaru A*sin((2*Pi*t*(fc+delta*mod(t)))/samples) - aby se 
> nejdriv nasobilo a pak delilo, presneji, aby dilci vypocty 
> vychazely ve vetsich cislech a nebyl problem se 
> zaokrouhlovanim...
> > 
> > Jirka N.
> > 
> > > -----Original Message-----
> > > From: Puskajler Robert [mailto:robert.puskajler@telecom.sk]
> > > Sent: Tuesday, April 17, 2001 9:34 AM
> > > To: Multiple recipients of list
> > > Subject: generovanie FM
> > > 
> > > 
> > > Zdravim HW,
> > > 
> > > v jednej aplikacii potrebujem generovat FM signal
> > > (AM a PM generovanie mi funguje bez problemov),
> > > pouzivam priblizne nasledovny algortimus:
> > > 
> > > A ... amplituda vysledneho signalu
> > > samples ... pocet vzoriek (1/vzorkovacia_frekvencia)
> > > fc ... nosna frekvencia
> > > delta ... frekvencny zdvih
> > > mod(t) ... modulacny signal , vysledok <-1..0..+1>
> > > 
> > > t:= 0;
> > > repeat
> > >     F:= A * sin (2*pi*t/samples*(fc+delta*mod(t)));
> > >     inc(t);
> > > until koniec
> > > 
> > > aj pri modulacii s malym zdvihom (delta = 1 Hz) po
> > > relativne kratkom case dostanem len sirokopasmovy sum ;-)
> > > 
> > > budem vdacny za spravne nasmerovanie pripadne linky ...
> > > (vyhladavace som uz skusil ...)
> > > 
> > > vdaka,
> > > robert
> > > 
> > > 
> > > 
> > 
> 
> 
> 
> -------------------------
> Ing. Igor Cesko
> Hardware & Software
> http://www.cesko.host.sk
> E-mail: cesko@internet.sk
> 
> Applied Precision Ltd.
> Technicka 5
> 821 04 Bratislava
> SLOVAKIA
> Tel,Fax: +421-7-4342 6628
> Tel:     +421-7-4363 3151
> Tel:     +421-7-4333 7340
> E-mail:  info@appliedp.sk
> Web:     http://www.appliedp.sk
> -------------------------
> 





Další informace o konferenci Hw-list