Tasked with developing automation diagnostic tools to test the DELL servers on a system level. The process consisted of writing the test in C# by converting some of the frameworks and libraries from Python. By developing the automation test in the C# environment, the test structure, re-usability, efficiency, and reliability was improved. I maintained, updated/modified, and reviewed the automation test scripts written in Python to test the functionalities of the DELL server systems that were in production. The automation test was API (Application Programming Interface) driven due to its stability and short release cycles and fast feedback loops. Converting the Python code to C# improved the overall test robustness. Furthermore, we ran the test scripts on a Cumulus network environment in order to test the UUT (Unit Under Test). Since the Cumulus network is based on a .Net framework, writing the automation test in C# improved the testing time by a large margin. During this process we used Mercurial as a source control in order to maintain, modify and update the scripts.
Phase-locked loop (PLL) is a control system that is designed to align the phase and frequency of the phase accumulator with the complex sampled data of the input signal. PLL has many applications within communication systems such as: demodulators, signal reconstruction, clock recovery, and frequency synthesizer.
The building blocks for a PLL consist of:
1. Phase detector
2. Loop filter
3. DDS (Direct Digital Synthesis)
The phase detector is used to estimate the error between the input signal and the reference signal. The loop filter is responsible for removing the noise and tracking the time-varying input phase. The DDS is designed to generate the reference frequency. In a PLL, the DDS is used as a local oscillator. Below is a block diagram of the DSP based phase-locked loop.
PLL Block Diagram
The Python program loop steps through the following operations:
1. The phase detector is used to estimate the phase error.
2. The loop filter is used to remove the errors and track the phase of the input signal.
3. The DDS is used as a local oscillator to generate the reference signal.
The closed loop transfer function of the aforementioned model is depicted below:
The parameters for the z-transform model are as follows:
is the bandwidth of the loop filter
is the digital undamped natural frequency
is the proportional loop filter gain
is the integral loop filter gain
is the loop filter damping factor (typically )
The first plot shows a comparison of the real and imaginary parts of the input signal versus the output signal. In Fig.1, the phase of the output signal is locked to the phase of the input signal after approximately 110 to 120 samples. The second plot demonstrates the phase difference between the input and the reference signal.
Click here to download the source code in Python
Tasked to find the root-cause of LFO signals which distorted the spectral purity of the desired signal. LFOs are generally undesired parasitic signals in electronic devices. It was determined that the LFOs were generated because of a mismatch of the system on the frequency multiplier board. The impedance mismatch was between the output of the limiting amplifier (with 50 ohm output impedance) and the input of the Balun (with 25 ohm input impedance). Accordingly, the impedance mismatch caused some of the incident power to be reflected back and created instability of the limiting amplifier. As a result, the LFOs were generated at approximately 2 to 5 KHz offset from the carrier. One option was to replace the Balun completely. Due to complexity of the aforementioned solution, an alternative route was explored. A PI-Pad was designed in Advanced Design Systems with a 0402 dimension size resistors and was placed between the output of the limiting amplifier and the input of the Balun. By terminating the active component with resistive loads resulted in reducing the effect of parasitic oscillation on the desire signal and in some frequency bands the LFOs were completely removed.
Maintained and supported the spectral station. The station tested the Agile Signal Generator (UXG) instruments for Harmonics, Subharmonics, and Spurious signals with a spectral analyzer. The algorithm for the test was written in C#. The test incorporated Standard Commands for Programmable Instruments (SCPI) in order to communicate with the instrument. A data-pack was utilized to define the frequency resolutions for the testing process.
The spectral purity of a Continuous Waveform (CW) source is largely affected by non-ideal components of the system. The effect of the non-ideal components on the actual signal results in degradation of the power quality of the signal. Below is a list of different types of spurious signals:
1. Harmonic Signals
2. Subharmonic Signals
3. Spurious Signals
Harmonic and Subharmonic Distortions:
Harmonics are undesired signals at integer multiples (sub-multiples) of the carrier frequency. The distorted signal is created by the nonlinearity characteristic of the microwave components in the RF chain (such as mixers, local oscillators, amplifiers, etc.).
The difference between harmonic/subharmonic versus spurious signals:
1. Harmonics (or subharmonics) signals are integer multiples (or submultiples) of the input frequency.
2. Spurious signals are presented at non-integer multiples of the input frequency.
Maintained and supported the pulse station. The station tested the UXG instruments for “Pulse Amplitude Accuracy/ Pulse power”, “Pulse Width”, “Pulse Delay”, “Overshoot”, “Compression”, and “Video Feedthrough” via a Digital Sampling Oscilloscope (DSO). The algorithm for the test was written in Rocky Mountain Basic (RMB). Furthermore, General Purpose Interface Bus (GPIB) controllers were used for data communication and SCPI commands were used to set the instrument states.
In general Pulsed-RF tests are executed with either a spectrum analyzer or Oscilloscope. For this test a Digital Sampling Oscilloscope (DSO) was used to accurately characterize the performance of the pulse waveforms. The characteristics of a pulsed signal are used to define the performance and capability of the instrument. Some of the terminology for the pulse measurement is defined as follows:
1. Rise time is defined as the 10% to 90% mark on the rising edge of the pulse signal.
2. Fall time is defined as the 10% to 90% mark on the falling edge of the pulse signal.
3. Pulse width is defined as the 50% mark on the rising edge to the 50% mark on the falling edge of the pulse signal
4. Pulse Period is defined as the time interval between the rising edges of the two consecutive pulse signals.
5. Overshoot is defined as the maximum voltage level of the pulse top amplitude.
6. Pulse delay is defined as the time interval between the 50% mark on the rising edge of the trigger output and the 50% mark on the rising edge of the pulse signal.
7. Video feedthrough is a specification term which is used to define the pulse performance for microwave synthesizers. Video feedthrough is defined as the amount of drive signal from the modulator leaks into the RF output. Basically, the spurious signals appeared at the RF ports of the switch when the port is switched without an RF signal present. Generally the frequency content of video feedthrough signal is concentrated below 250 MHz. The pulse test consisted of a lowpass filter (with passband of 250MHz) that extracted the video feedthrough signal from the RF signal.
Setting the Test Line Limits (TLL) for production instruments consisted of: characterizing the product performance, deciphering the performance drifts either due to aging of the RF components or the effect of temperature variation of the environment on the instrument, and determining the uncertainty of the measurement (AKA, measurement uncertainty). A Gaussian distribution was utilized to accurately characterize the measured sample data. This process involved collecting and analyzing the sample data by using descriptive statistics such as the mean (to define the center of the distribution) and the standard deviation (to determine the degree of deviation from the mean), etc. Moreover, a histogram and normal plots were used to delineate the outliers in the data set as well as define the upper and lower limits of the normal distribution (data that was 2.5 standard deviations from the mean was not included). Other terms that were used for this process are explained below:
1. The confidence level C is the probability that our TLL setting process will produce a passing rate (that is at least our desired passing rate). The more samples you have in your data set, the higher your confidence level is going to be.
2. The proportion P is our best estimate of the minimum future turn-on rate (passing rate). It is the proportion of devices that pass the production test at initial turn-on.
3. The test line limit (TLL) is the pass/fail threshold of the production test.
4. Repeatability and Reproducibility are the two components of precision in a measurement system.
5. Repeatability is the ability of an operator to consistently repeat the same measurement of the same part, using the same gage, under the same conditions.
6. Reproducibility is the ability of a gage, used by multiple operators, to consistently reproduce the same measurement of the same part, under the same conditions.
Designed a pool-playing robot that would detect red or blue balls with the use of programmable camera and then shoot the ball into a particular pocket based on information from the sensors. The parts for the robot consist of a ball-shooting solenoid, a ball-capturing clamp, ultrasonic sensors, and a color detetion camera system. The project was ranked first amongst all the other competitors. Some of the videos of the constructed robot are listed below:
I have begun to expand my knowledge in the area of programming by taking a C++ course. Some of the programs I wrote for the class are listed below:
1. Created a calculator using a "switch statement".
Source Code 2. Created a rocket shape based on the user input of three values height, width, and stages using the concept of "functional decomposition".
Source Code 3. Designed and implemented a C++ structure data type for monthly budget expenditures. The program has two monthly budget structure variables. One structure variable will hold budget figures and the second structure variable will prompt the user to enter the actual expenditures for the past month. the structure variables are passed to the functions as parameters to compare expenses and display budgets.
Source Code 4. Designed and implemented a fraction class data type. The program consisted of three parts: the class specification file (where the data and fucntion declaration occured), the class implementation file (where I declared the function definitions), and the client file. The program adds or subtracts fractions.
Source Code 5. Created a game of life computer simulation program utilizing a two-dimensional array operation. The simulation process consist of the life and death events of a population of organisms. This program will determine the life, death, and survival of bacteria from one generation to the next, assuming the starting grid of bacteria is generation zero.