Sine Wave Amplitude Stability
13 views (last 30 days)
Show older comments
I am working on a regenerative frequency divider in Simulink. It has a multiplier, one input is high frequency sine wave other input is feedback which would be half of input frequency. For which, I need time delay in the feedback, but the problem is the amplitude of sine wave is continuously decreasing, and I want the amplitude of the sine wave to be stabilized at a certain voltage. I have attached a picture for reference. Thanks in advance.

2 Comments
Accepted Answer
John BG
on 6 Jan 2017
Edited: John BG
on 6 Jan 2017
Haris
I am going to simplify the formulas, '~' instead of '=' to omit constants
1.
This is your circuit, i just flipped some components and removed all scopes but the one with 3 inputs.

don't worry about the amplifiers I have added and about the different filter, I have been trying different options.
2.
With the circuit you have supplied one can only double the frequency.
sin(w0*t)*sin(w0*t-delay) ~ -cos(d)-cos(2*w0*t-delay)
3.
To double frequency, it's far easier to just input same tone to both inputs of the multiplier

4.
The damping or attenuation comes from:
- the filter impulse response
- the applied delay, the constant at the input at the Variable Time Delay block
I guess you are familiar with the following basics of signal processing
(reference: Communication Systems by A. Bruce Carlson, ed. McGrawHill)
sin(w0*t) ~ exp(j*w0*t)- exp(-j*w0*t)
TF(sin(w0*t)) ~ delta(f+f0) + delta(f-f0)
if
TF(x(t))=X(f)
then
TF(x(t-delay))=X(f)*exp(-j*2*pi*f*delay)
so
TF(sin(w0*t)*sin(w0*t-delay)) ~
TF( exp(j*w0*t)- exp(-j*w0*t)
*
(exp(j*w0*t)- exp(-j*w0*t))*exp(w*delay)) ~
conv( delta(f+f0) + delta(f-f0)
,
(delta(f+f0) + delta(f-f0))*exp(-j*w*delay))
convolution is:
commutative
conv(a,b)=conv(b,a)
associative
conv(a,conv(b,c))=conv(conv(a,b),c)
distributive
conv(a,b+c)=conv(a,b)+conv(a,c)
then
conv( delta(f+f0) + delta(f-f0)
,
(delta(f+f0) + delta(f-f0))*exp(-j*w*delay)) ~
conv( delta(f+f0) ,delta(f+f0) *exp(-j*w*delay))+
conv( delta(f+f0) ,delta(f-f0)*exp(-j*w*delay))+
conv( delta(f-f0) ,delta(f+f0) *exp(-j*w*delay))+
conv( delta(f-f0) ,delta(f-f0)*exp(-j*w*delay))
as you can see the term
exp(-j*w*delay)
hits all terms of the convolution, that when back to time domain, because
ITF(X(f)*exp(-j*delay*f)) =
conv(x(t),ITF(exp(-j*delay*f))) ~
conv(x(t),1/(delay+k*t))
or
conv(x(t),1/(delay^2+t^2))
depending upon whether positive frequencies used only, or positive and negative frequencies used.
in any case, as t increases, this term is going to bring down everything, no matter how seamless is the filter in the pass band.
If one reduces the allowed ripple attenuation to let's say 0.01dB, then there is less damping, but increase the simulation time in Simulink > Simulation > Model Configuration Parameters > Stop time and one sees the attenuation.
With the default 2dB attenuation in the pass band the damping is quite high so we get the signal down to 0 quickly.
5.
I recommend you consider starting with a circuit like this:

6.
In general, to frequency shift narrowband signals you need non-linear components that produce components on frequencies different than the band of the input signal.
if you find these lines useful would you please mark my answer as Accepted Answer?
To any other reader, if you find this answer of any help please click on the thumbs-up vote link,
thanks in advance for time and attention
John BG
0 Comments
More Answers (0)
See Also
Categories
Find more on Circuit Envelope Simulation in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!