Saturday, August 20, 2011

AC Signal RMS vs. Peak Value

    A lot of times, we need to relate the signal peak-to-peak amplitude to its root-mean-squared value, this is required to understand the system performance impact caused by different aspects of signal characteristics. For example, when you are trying to estimate the maximum current carrying capability of copper traces, wire bonds etc. or how much power the system consumes, how much heat the system generates and need to be dissipated, you could be more interested in signal RMS values while signal peak-to-peak value is of more importance when you are trying to figure out the dielectric break down voltage or device punch through limit and you probably like to consider both parameters when you are interested in not only instantaneous value but also long term averaged power such as complying with IC electromigration design rules.
  
If you are interested, please read the full article here ...




Absolutely legal and free ebooks for downloading from InTechOpen!

I chanced upon the following website which provides FREE ebook downloads.
It's absolutely free! and
Its collections keep increasing with up to date contents!
Take a look now!
http://www.intechopen.com/


Saturday, June 11, 2011

Gaussian PDF, CDF, Error Function and Q-Transformation

How time flies! My blog is six-months' old now and I've been trying to update it with one post per month on average. Contents here may not be fantastic, but all are originally created by myself so far. :)

Original also means the contents are my own understandings, thus may not be 100% correct. This is why I tried to give as more details as possible and attach the sample codes, if any, that used for preparing all the figures presented in the articles. Thus, your comments to correct wrong observations and conclusions, contributions to extend the scope of the articles are certainly warmly welcomed and greatly appreciated.

With that said, let me go back to the fields to continue today's topic: "PDF and CDF of Normal/Gaussian-distributions, Error Function and Q-transformation".


If you are an electrical engineer who want to brush up the very basic statistics that leads to a better understanding of random jitter modeling, dual-Dirac model based DJ, RJ decomposition and jitter extrapolation using bath-tube curve, you may like to read on here ....

You may also have interest in one of my previous articles talking about similar topics: "From Jitter Statistics to System BER"

Or simply look for it in May/2011 archives ...

Sunday, May 15, 2011

From Jitter Statistics to System Bit-Error-Ratio(BER)


A magic factor of 14 is most frequently cited in publications and literature when scale the unbounded system random jitter expressed in terms of its root mean square(RMS) value to the bounded peak-to-peak value at the specified system bit error ratio(BER) value of 1E-12. A good example is its use in the dual-Dirac model to calculate system total jitter from an estimated DJ and RJrms. This article tries to walk through the necessary mathematical equation derivations in detail and understand the physical meanings underlying the general statistical models involved.

The full article can be read here .... 

Saturday, April 16, 2011

Periodic Jitter and Phase Modulation


It's been a while since my last working on this blog. To keep going on, I combed my PC and found some articles written some time ago which may worth sharing here.

Posted here is a topic briefly talking about periodic jitter caused by phase modulation and its extraction from the measured time interval error. The derivation of the analytical form relating the timing error and the signal spectrum is also shown in detail.

If you are interested, please read on ...

Sunday, March 6, 2011

Spectrum analysis of clock-like signals


The purpose of this article is to briefly study the rise/fall time and DCD effects on clock-like signal spectrum. If you are interested, please read on....

Saturday, February 5, 2011

Real-time Oscilloscope Spectrum Analyzer and Matlab


This article is trying to understand a typical clock-like signal measured and interpreted in different domains(time domain and frequency domain) and try to correlate the different results produced from different sources such as measurements, analytical math equations or Matlab functions bridged by Discrete Fourier Transforms(DFT).
   
If you are interested, please read on....

Monday, January 10, 2011

Digital storage oscilloscope‎‎(DSO)‎‎ fundamentals



This article has some equations and I didn't find a proper way of editing them using the blog build-in editor. And after I finished the article in google documents to take advantage of its equation editor function, I failed to find a proper way of publishing it to this blogger. I end up setting up a google website and published the article there through importing....

If you are interested to read this article, please follow the link shown below:


Thursday, January 6, 2011

Perl "for-loop" floating number issue and its solution

Today, a logic error in piece of my newly created Perl code caught my attention. Since similar codes worked well before,  I isolated them for a closer examination. It turned out to be a floating variable comparison issue that may give you unexpected results when used in a for-loop. Below is the sample codes for the debug and illustration purpose.

    print "\n1st for-loop: start -> -0.05; stop -> 0.15; step -> 0.05 ...\n";
    my $loop_cn=0;
    my $tmp_start=-0.05;
    my $tmp_stop=0.15;
    my $tmp_step=0.05;
    for(my $tmp=$tmp_start; $tmp<=$tmp_stop; $tmp+=$tmp_step)
    {
      $loop_cn++;
      print "loop $loop_cn meets condition $tmp <= $tmp_stop with a step of $tmp_step\n";
    }

    print "\n2nd for-loop: start -> -0.5; stop -> 1.5; step -> 0.5 ...\n";
    my $loop_cn=0;
    my $tmp_start=-0.5;
    my $tmp_stop=1.5;
    my $tmp_step=0.5;
    for(my $tmp=$tmp_start; $tmp<=$tmp_stop; $tmp+=$tmp_step)
    {
      $loop_cn++;
      print "loop $loop_cn meets condition $tmp <= $tmp_stop with a step of $tmp_step\n";
    }

    print "\n3rd for-loop: start -> -0.06; stop -> 0.1; step -> 0.02 ...\n";
    my $loop_cn=0;
    my $tmp_start=-0.06;
    my $tmp_stop=0.1;
    my $tmp_step=0.02;
    for(my $tmp=$tmp_start; $tmp<=$tmp_stop; $tmp+=$tmp_step)
    {
      $loop_cn++;
      print "loop $loop_cn meets condition $tmp <= $tmp_stop with a step of $tmp_step\n";
     # print sprintf("%.${10}g\n", $tmp);
     # print "\n";
    }

The execution results are shown as below:

1st for-loop: start -> -0.05; stop -> 0.15; step -> 0.05 ...
loop 1 meets condition -0.05 <= 0.15 with a step of 0.05
loop 2 meets condition 0 <= 0.15 with a step of 0.05
loop 3 meets condition 0.05 <= 0.15 with a step of 0.05
loop 4 meets condition 0.1 <= 0.15 with a step of 0.05

2nd for-loop: start -> -0.5; stop -> 1.5; step -> 0.5 ...
loop 1 meets condition -0.5 <= 1.5 with a step of 0.5
loop 2 meets condition 0 <= 1.5 with a step of 0.5
loop 3 meets condition 0.5 <= 1.5 with a step of 0.5
loop 4 meets condition 1 <= 1.5 with a step of 0.5
loop 5 meets condition 1.5 <= 1.5 with a step of 0.5

3rd for-loop: start -> -0.06; stop -> 0.1; step -> 0.02 ...
loop 1 meets condition -0.06 <= 0.1 with a step of 0.02
loop 2 meets condition -0.04 <= 0.1 with a step of 0.02
loop 3 meets condition -0.02 <= 0.1 with a step of 0.02
loop 4 meets condition 6.93889390390723e-018 <= 0.1 with a step of 0.02
loop 5 meets condition 0.02 <= 0.1 with a step of 0.02
loop 6 meets condition 0.04 <= 0.1 with a step of 0.02
loop 7 meets condition 0.06 <= 0.1 with a step of 0.02
loop 8 meets condition 0.08 <= 0.1 with a step of 0.02

It is very clear that the 1st and the 3rd loop is not working as expected while the 2nd loop works fine. Judged by the output of the 3rd for-loop “loop 4....” where the expected “0” is represented by a small number at the order of 1E-18, we know that the problem is caused by the inexact representation of the floating numbers due to limited machine precision. Thus, the attempt of using string comparison “le” in place of “<=” will not work either in this case.

Inspired by the solutions from:  http://docstore.mik.ua/orelly/perl4/cook/ch02_04.htm , this issue can be addressed following:
1. Create a sub-routine for numerical comparison named as less_eq
sub less_eq
{
    my ($A, $B, $dp) = @_;
    return sprintf("%.${dp}g", $A) <= sprintf("%.${dp}g", $B);
}
2. Replace the line $tmp<=$tmp_stop in the original code with less_eq($tmp,$tmp_stop,2)

The revised codes will give you the expected results for all cases as shown below:
 
1st for-loop: start -> -0.05; stop -> 0.15; step -> 0.05 ...
loop 1 meets condition -0.05 <= 0.15 with a step of 0.05
loop 2 meets condition 0 <= 0.15 with a step of 0.05
loop 3 meets condition 0.05 <= 0.15 with a step of 0.05
loop 4 meets condition 0.1 <= 0.15 with a step of 0.05
loop 5 meets condition 0.15 <= 0.15 with a step of 0.05
2nd for-loop: start -> -0.5; stop -> 1.5; step -> 0.5 ...
loop 1 meets condition -0.5 <= 1.5 with a step of 0.5
loop 2 meets condition 0 <= 1.5 with a step of 0.5
loop 3 meets condition 0.5 <= 1.5 with a step of 0.5
loop 4 meets condition 1 <= 1.5 with a step of 0.5
loop 5 meets condition 1.5 <= 1.5 with a step of 0.5
3rd for-loop: start -> -0.06; stop -> 0.1; step -> 0.02 ...
loop 1 meets condition -0.06 <= 0.1 with a step of 0.02
loop 2 meets condition -0.04 <= 0.1 with a step of 0.02
loop 3 meets condition -0.02 <= 0.1 with a step of 0.02
loop 4 meets condition 6.93889390390723e-018 <= 0.1 with a step of 0.02
loop 5 meets condition 0.02 <= 0.1 with a step of 0.02
loop 6 meets condition 0.04 <= 0.1 with a step of 0.02
loop 7 meets condition 0.06 <= 0.1 with a step of 0.02
loop 8 meets condition 0.08 <= 0.1 with a step of 0.02
loop 9 meets condition 0.1 <= 0.1 with a step of 0.02


Monday, January 3, 2011

I've got my Avatar today!

I've been thinking about jumping online by setting up my own website or blog for the past years but never achieve that goal until today. Every time when I tried to start my first step, I stopped it soon partly because of the concern that I may not be able to keep my Avatar alive due to the unwillingness of committing enough spare time.

At the beginning of 2011, I decided to put it on action as my New Year's Resolution with the first step been made to set up an online profile in LinkedIn so that people can get to know my professional background and the second step to set up this blog to share and exchange ideas with people on pieces of our work and life.

The main topics of this blog will be anything relevant to the basic theory and  fundamentals of IC, IC characterization and high-frequency/high-speed power/signal integrity analysis including test and measurement theories, methodologies, instrument knowledge/tips and test automation/programming, modeling and simulation tools and their applications etc.

I hope you like this blog and can come back to visit it occasionally. It is even better if you can share your knowledge and experience in the similar areas by leaving your comments under the relevant topics to be posted.

Thank you in advance for your support and wish you all a happy and prosperous year of 2011!

Shujun