[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-gnucap] Settling time measurement for underdamped systems
From: |
Seshadri V |
Subject: |
Re: [Help-gnucap] Settling time measurement for underdamped systems |
Date: |
Wed, 15 Jul 2009 22:34:37 -0700 (PDT) |
Hello Al,
Thanks for the insight. I tried the exact same logic for the measurement.
The reason I am asking is because of the rise = last and fall = last
statement. When you have an output ringing multiple times before settling to
the final desired value( say 10 significant but gradually decreasing swings
before reaching 5 volts), when you use rise = last and fall = last, it would
work fine if the last refers to the 10th swing. But I think the simulator
has some kind of internal tolerance that detects the rising edge based on
slopes or something and I came to that conclusion since the rise = last and
fall = last specifies only the first swing and not the swings after that.
Please correct me if I am wrong here and it would be nice if you can tell me
how the rising and falling edges are detected when you specify rise = last
and fall = last, I mean what conditions decide them?
That is why I am looking for alternate logic to measure the settling time.
This is a measurement syntax I would like to use in my test bench and I want
it to be generic since I wont know if the output waveform has a damped
response or an underdamped response.
Let me know if my explanation is not clear enough, I will try to come up
with a detailed explanation.
Thanks
Seshadri
al davis-13 wrote:
>
> On Wednesday 15 July 2009, Seshadri V wrote:
>> I would like to know if there is some way to measure settling
>> time of an underdamped system( ringing output) in gnucap.
>> AFAIK, there is no direct way measuring the number of ringing
>> before the output reaches a steady state output. Because the
>> simulator identifies only the first rising edge of the output
>> and the oscillations following the first overshoot are not
>> identified by the simulator.
>
> First you need to define "settling time".
> Then use a combination of measures.
>
> How about: "10% to 90%" ...
> the time from the 10% crossing to the last 90% crossing.
>
> Let's assume you know the amplitude before.
> For now, let's assume it is a 5 volt pulse.
> The voltage starts at 0, and ends up at 5.
> The simulation run has a single step.
>
> Do some setup ..
>>param startvalue = 0
>>param endvalue = 5
>
> Finding the 10% point is easy:
>>measure starttime=cross("v(out)"
cross={startvalue+(endvalue-startvalue)*0.1} rise first)
>
> For the 90% point, you don't know whether the last one is high or low, so
> try both:
>>measure highendtime = cross("v(out)"
cross={startvalue+(endvalue-startvalue)*1.1} fall last)
>>measure lowendtime = cross("v(out)"
cross={startvalue+(endvalue-startvalue)*0.9} rise last)
> Note the use of the keys "rise" and "fall".
>
> Then take the later of these:
>>param endtime={max(highendtime, lowendtime)}
>
> The settling time is the difference:
>>param settlingtime = {endtime-starttime}
>>eval settlingtime
>
> You may also want to measure the frequency of the ringing:
>>measure t2 = cross("v(out)" cross=endvalue before=endtime rise last)
>>measure t1 = cross("v(out)" cross=endvalue before=t2 rise last)
>>param frequency = {1/(t2-t1)}
>>eval frequency
>
> I didn't test this .. there might be mistakes here.
> This makes certain assumptions about the waveform.
> You could get bogus results if the assumptions are wrong.
>
> Now, a reminder ...
> params are evaluated like in a functional language with dynamic scope.
> If you think imperitive language, static scope, you may be surprised.
>
>
>
>
> _______________________________________________
> Help-gnucap mailing list
> address@hidden
> http://lists.gnu.org/mailman/listinfo/help-gnucap
>
>
--
View this message in context:
http://www.nabble.com/Settling-time-measurement-for-underdamped-systems-tp24506699p24510409.html
Sent from the Gnucap - Help mailing list archive at Nabble.com.