Monday, August 29, 2011

Simulating Jitter with an Arbitrary Waveform Generator Part 2

This is part 2 of a two part post on simulating jitter with an AWG, to check out part 1 click here. In part 1 we discussed what jitter on a digital signal is, namely mistimed edge crossings. With larger arbitrary waveform memory capacity and superb signal integrity, we discussed how modern AWGs make a great low cost solution for simulating complex jitter patterns on digital communication and clock signals for noise immunity and BER testing purposes. Finally we were introduced to the error function (ERF) which we can use to build digital pulses with edge events that we can easily and quantitatively vary to simulate jitter. In this post we will build on the ERF concept and put an algorithm together for adding complex jitter patterns to our digital pulses.

In the following examples we will use Matlab to build the arbitrary waveform, the Agilent 33522A dual channel AWG to output it, and the Agilent 54833D oscilloscope to view the waveform. Initially, we will build a 500 Kbps clock signal as an arbitrary waveform using Matlab and its built in ERF feature. We will be using a 250 MSa/s sample rate so the waveform points will be spaced 4ns apart. Let's first start out by building a waveform consisting of two pulses and adding a small value to the edge crossing time of the second pulse's falling edge to simulate jitter. The inner loop is where the pulse is created using a positive and negative ERF function. The first loop consists of two iterations to create two pulses. Notice the highlighted section in the negative ERF function. This term is what will cause the edge shift in the second pulse. Notice the term will be 0 for the first iteration and 150e-12 for the second, causing the edge to crossing to shift 150 ps.

   for  r=0:1:1;
    for i = 5.04E-7:4E-9:2.5E-6;    
        y = erf((i-1E-6)/10E-9)+erf(-(i-2E-6+r*150E-12)/10E-9)-1;
        pulse=[pulse y];

The waveform was saved to a CSV and then loaded onto the 33522A AWG. The output waveform from the 33522A was then captured using the scope. The image below is a zoomed in view from the scope showing the falling edge of the two pulses. Notice that the shift between the pulses is ~ 150 ps (click image to enlarge).

We can use this method to produce pulses with any variety of edge crossing times and add them to our arbitrary waveform. In this way we can generate a clock signal with a precise amount of jitter on each pulse. We can add as many of these precisely defined pulses up to the limit of the waveform memory. In this example, I am using the Agilent 33522A with a waveform memory of 1 MSa and each pulse is defined by 500 samples allowing up to 2000 pulses per waveform. With the 33522A’s optional waveform memory of 16 MSa we could get up to 32k pulses per waveform.

Let’s use this capability to simulate the jitter we might expect from a power supply coupling to the clock line. For this example I will inject 200 ps of periodic jitter at 5 kHz.

   for  r=2*3.1415/100:2*3.1415/100:2*3.1415;
    for i = 5.04E-7:4E-9:2.5E-6;    
        y = erf((i-1E-6)/10E-9)+erf(-(i-2E-6+sin(r)*100E-12)/10E-9)-1;
        pulse=[pulse y];

Here is the result.

Just by looking at the color graded display of the oscilloscope capture you can see the periodic nature of the jitter. The sine wave spends more time near its maximum amplitude than it does near its zero crossing, this is shown on the oscilloscope as pink being the greatest density of samples, followed by blue and with green being the lowest density near the center. In this example we used a simple sine wave at a given frequency to define our jitter pattern. We could make the jitter pattern more complex by using a random number generator with a normal distribution to represent random Gaussian jitter or we could have added together multiple sine waves at various frequencies to represent multiple spurious coupled jitter sources.

So lets review and explicitly write out the algorithm we just went over for generating an arbitrary waveform that consists of a long series of digital pulses with an added jitter pattern to the edge crossings:
  1. Determine your signal rate, how many points per pulse, and how many pulses are in the waveform. These settings are highly dependent on the AWG you are working with and the jitter characteristics you want to simulate.
  2. Create a loop that builds your ideal pulse with a positive and negative ERF using the example above. Remember the rise / fall times of the pulse is limited by the AWG's sample rate.
  3. Add the jitter pattern function and jitter magnitude you want to simulate to the desired edge or edges of the signal. This is done by adding the jitter pattern and magnitude inside the ERF function.
  4. Create the outer loop which controls the number of digital pulses created and if necessary steps the jitter pattern variable through the appropriate values.
The examples and the algorithm discussed so far in this post apply mainly to clock signals. Of course the same concepts could be applied to simulate jitter on digital communication signals like SPI and CAN for BER and noise immunity testing. There is just the added complexity of plugging in 1s and 0s at the right spot in the waveform to simulate meaningful data.

I posted the code to a Matlab function that creates a user specified digital clock signal with jitter on it on Matlab central. Click here to download

To check out Agilent's AWGs click here


  1. شركة نقل اثاث بالدمام التفاؤل شركة نقل اثاث بالخبر كما انها افضل شركة نقل اثاث بالجبيل نقل عفش واثاث بالجبيل والخبر والقطيف والدمام
    شركة نقل اثاث بالدمام
    شركة نقل اثاث بالجبيل
    شركة نقل اثاث بالقطيف



  4. You need to visit this blog for some info on how to write essay of any type. This could be really helpful for your future home assignments.

  5. Thanks for sharing.I found a lot of interesting information here. A really good post, very thankful and hopeful that you will write many more posts like this one.

  6. افضل شركة تنظيف منازل بالرياض خدمة التنظيف بالرياض والتى تتخصص فى كافة خدمات التنظيف الشامل للبيوت والشقق والفلل من خلال افضل واقوى عمالة لها خبرة كبيرة كما تقدم خدمات شركة تنظيف بالرياض
    وكفاءة مبهره فى مجال التنظيف المختلف علما بان الشركة تستخدم افضل ادوات النظافة والمواد المعطره المستور ده التى تضفى المزيد من الانتعا ش والحيوي ة على المكان علما بان الشركة تقدم خدماتها المنزلي ة المختلف ة باسعار قليله ومبهره وبعروض مذهله وحصرية فلا تتأخرو فى اتصالكم بنا وسارعو واغتنمو فرصة التعاقد معنا كأفضل شركة تنظيف بالرياض
    افضل شركة نظافة بالرياض
    نقضي معظم وقتنا بالمنزل وأحيانا نبقي فيه كل الوقت ولا نخرج كثيرا منه ، فالمنزل يمثل للانسان الإستقرار والأمان والراحة فيجب علينا المحافظة عليه نظيفاً لكي نجلس في البيت ونحن مرتاحين وبمزاج هادئ ، فالمنزل الغير نظيف وغير مرتب يشعرك بالضوضاء ويجعلك عصبي المزاح ومتوتر دائما ، فالنظافة والترتيب تعطيك إحساس بالراحة والهدوء . ولكن هناك أشخاص يجهلون طريقة التنظيف الصحيحة للمنزل ولا يعرفون كيفية المحافظة عليه نظيف ومرتب .

    إليكم بعض النصائح من افضل شركة تنظيف منازل بالرياض لكي تحافظو علي منزلكم بأفضل حال من النظافة : - قومي بتعزيل منزلك جيدا كل أسبوع علي الأقل حتي لا تتراكم الأوساخ ويصبح منزلك موطن للحشرات والعناكب ، وعليك البدأ دائما بالمطبخ والحمام فهما أساس نظافة منزلك .

    - قومي بتنظيف الجلي أولا بأول ولا تتركيه يتراكم بالمطبخ حتي لا تخرج رائحة الطعام من المطبخ ، وأخرجي القمامة كل يوم من المطبخ حتي لا تخرج رائحة نتنة من سلة القمامة ولا تتجمع فيها الديدان .
    - قومي بتنظيف رفوف المطبخ كل شهر تقريبا حتي تحافظي عليها من الحشرات والصراصير .
    - قومي بتنظيف الغاز يوميا بالماء والصابون ، وكل يومين نظفيه بمزيل الدهون والكلور حتي تحافظي عليه نظيف وخالي من الزيوت وبقايا الطعام التي تتراكم عليه وقت الطبخ .
    - نظفي الحمام يوميا بالمنظفات وقومي بتقشيط المياه جيدا حتي يبقي نظيف وجاف .
    - أضيفي المنظفات والكلور بالحمام كل ثلاثة أيام تقريبا ، حتي يبقي الحمام معقم وخالي من الميكروبات التي تسبب الروائح الكريهة بالحمام .
    - قومي بإخراج القمامة من الحمام عند إمتلاء سلة القمامة .
    - نظفي غرف المنزل جيدا والصالون واشطفيها كل أسبوع تقريبا حتي تحافظي عليها نظيفه .
    - رتبي غرف المنزل والصالون كل يوم وقومي بتكنيس منزلك يوميا حتي تحفظيه من تراكم الرمل والغبار فيه .
    - قومي بمسح الطاولات و أطقم النوم والخزانات كل يومين تقريبا .
    - نظفي المرآيا الموجودة بالمنزل بمسحها أولا بفوطة بها ماء وصابون ، ثم بعد ذلك إمسحيها بورق جرائد حتي تصبح ذو نظافة ولمعان مميز .
    - اشطفي درج المنزل (السلالم) كل أسبوع وقومي بتكنيسه كل يوم حتي يبقي نظيفا ، لأنه هو واجهت منزلك وعنوان نظافتك .
    - نظفي حديقة منزلك إن كان لديك حديقة كل يومين واتركيها دائما نظيفة وجميلة .
    - قومي بتنظيف باب منزلك دائما ، ولا تضعي القمامة علي باب المنزل حتي لا يكون منظره غير لائق ، بل قومي بتخصيص حاوية للقمامة بعيدة عن واجهة منزلك وضعي فيها القمامة ، ويفضل أن ترمي القمامة في حاويات القمامة المخصصة من البلدية أولا بأول

    تعد شركتنا افضل شركة تنظيف بالرياض التي تقدم شركة نظافة بالرياض و على الاطلاق متخصصه فى كافة اعمال عزل الاسطح على اعلى مستوى لأننا شركة عزل اسطح بالرياض و شركة تنظيف منازل بالرياض و شركة تسليك مجارى بالرياض , حيث تمتلك فريق عمل متميز وخبير فى تنظيف كافة محتويات المنزل / الشقه ولديه خبرة كبيرة فى التعامل مع كافة الاوساخ والبقع اللاصقة سواء على الحوائط او البلاط او المفروش ات او الكنب والسجاد … اقرأ المزيد

    المصدر: شركة تنظيف منازل بالرياض

    افضل شركة تنظيف بيارات بالرياض لكننا نؤكد بأننا نستخدم مركبات وادوات تنظيف عالية الجودة تقوم بإزالة هذه الاثار علي وجه السرعة بدون اي مشاكل وبدون ان يتم إعاقة حركة اهل المنزل… اقرأ المزيد

    المصدر: شركة تنظيف بيارات بالرياض

  7. Babel account & manag contracting companies
    The program includes 12 specialized systems in contracting field and providing explanation library
    of 145 videos with total of 6 hours of explanation and providing more than 200 questions in the
    field of contracting and group of essays which serve contracting companies.
    برنامج محاسبة مقاولات
    برنامج محاسبة شركات المقاولات
    برنامج مقاولات
    برنامج ادارة شركات المقاولات
    برنامج الاستثمار العقارى
    برنامج استثمار عقارى
    برنامج لشركة استثمار عقارى
    برنامج ادارة محطات الخرسانة
    برنامج محطات خرسانة