Miscellaneous

Interpreting Time Domain Derivative in Frequency Domain

One of the properties of Fourier Transform is that the derivative of a signal in time domain gets translated to multiplication of the signal spectrum by j2\pi f in frequency domain. This property is usually derived as follows.

For a signal s(t) with Fourier Transform S(f)

    \begin{equation*} s(t) = \frac{1}{2\pi}\int \limits _{-\infty}^{+\infty} S(f) e^{j2\pi ft}df, \end{equation*}

we have

    \begin{align*} \frac{d}{dt} s(t) &= \frac{1}{2\pi}\int \limits_{-\infty}^{+\infty}S(f) j2\pi f e^{j2\pi ft}df\\                   &= \frac{1}{2\pi}\int \limits_{-\infty}^{+\infty}\bigg\{j2\pi f S(f)\bigg\} e^{j2\pi ft}df \end{align*}

which is the inverse Fourier Transform of j2\pi f S(f).

Now we want to understand this relation one level deeper, i.e., the reason behind the factor j2\pi f? There are two parts of this expression: one is j and the other is 2\pi f. We start with 2\pi f.

Notice from the definition of Fourier Transform that this operation decomposes a signal into a sequence of complex sinusoids with frequencies ranging from -\infty to +\infty. This is shown in Figure 1 below.

Three complex sinusoids in time IQ plane
Complex sinusoids decomposed in IQ components

Figure 1: Three complex sinusoids and their decomposition into sines and cosines

By Euler’s formula,

    \begin{equation*} e^{j2\pi ft} = \cos 2\pi ft + j\sin 2\pi ft \end{equation*}

Naturally, the higher the frequency, the steeper the slope and hence larger the derivative. After all, a derivative is nothing but the slope of the line tangent to the curve at a point. This is where the factor 2\pi f comes from (simply put, the derivative of \cos 2\pi ft is -2\pi f\cdot \sin 2\pi ft).

The term j is more interesting. The derivative of \cos 2\pi ft is -2\pi f\cdot \sin 2\pi ft while that of \sin 2\pi ft is 2\pi f\cdot \cos 2\pi ft. So from Euler’s formula and using j^2=-1,

    \begin{align*} \frac{d}{dt} e^{j2\pi ft} &= 2\pi f\bigg\{-\sin 2\pi ft + j\cos 2\pi ft \bigg\}\\                           &= 2\pi f\cdot j\bigg\{j\sin 2\pi ft + \cos 2\pi ft \bigg\}\\                           &= j 2\pi f\bigg\{\cos 2\pi ft + j\sin 2\pi ft\bigg\}\\ \end{align*}

Remembering that j=e^{j\pi/2}, the factor j is therefore necessary to rotate \cos and -\sin by their corresponding angles such that we get our basis signals e^{j2\pi ft} back. This results in getting the same signal S(f) at the output with multiplication by 2\pi f.

Update on Volume II

I am in the process of writing Volume II of my book. As explained in Volume I, its contents are

  • Phase locked loop
  • Carrier phase synchronization
  • Carrier frequency synchronization
  • Timing synchronization
  • Wireless channel
  • Equalization
  • Receiver DSP design

I have finished the chapters on phase locked loop, carrier phase synchronization and carrier frequency synchronization. And currently, I am writing the chapter on symbol timing synchronization. My thought process is to explain the fundamental concepts from a unifying theory which I hope will enable the reader to understand the visualization behind each mathematical equation. Writing is easy, making these figures takes a long time.

There are two updates on the book.

  1. My previous book Synchronization in Wireless Sensor Networks was published through Cambridge University Press. Now I think that the future will converge more towards self-publishing just like democratising of the video. So my publishing of Volume I was to test the process of independent publication. Now instead of having Volume I and II, I am combining them in one book that makes far more sense.
  2. I am including examples from GNU Radio as the community really needs an understanding of software radio beyond the heavily mathematical approach in communications books. Please comment below if you have any comments regarding this suggestion, or something else.

Subscribe to my email list below to receive an update when it is published.


There and Back Again: Time of Flight Ranging between Two Wireless Nodes

The counter, register and Tx and Rx start events

With the growth in the Internet of Things (IoT) products, the number of applications requiring an estimate of range between two wireless nodes in indoor channels is growing very quickly as well. Therefore, localization is becoming a red hot market today and will remain so in the coming years.

One question that is perplexing is that many companies now a days are offering cm level accurate solutions using RF signals. The conventional wireless nodes usually implement synchronization techniques which can provide around \mu s level accuracy and if they try to find the range through timestamps, the estimate would be off by

    \[1 \mu s \times 3 \times 10^8 m/s = 300 m\]

where 3\times 10^8 m/s is the approximate speed of an electromagnetic wave. So how are cm level accurate solutions being claimed and actually delivered? 

This is a classic example of the simplest of signals solving the most complex of problems.

In this article, my target is to explain the fundamentals behind this high resolution ranging in the easiest of manners possible. Needless to say, while each product would have its own unique signal processing algorithms, the fundamentals still remain the same.

The Big Picture

For the sake of providing the big picture, remember that there are other methods available, the best of which are based on optical interferometry. Then, there are ultrasound, optical and hybrid options available as well. RF is the cheapest solution though and there is nothing better than getting accurate measurements using the RF waves.

The following techniques are most widely used in RF domain.

  • Rx Signal Strength Indicator (RSS)
  • Time of arrival (ToA)
    • Phase of arrival (PoA) –  a special case of ToA
  • Time Difference of Arrival (TDoA)
  • Angle of Arrival (AoA)

While I do not explain each of the above in detail (Google is your friend), I summarize their pros and cons below (anchors are wireless nodes with known positions).

Technique Pros Cons
RSSI Simple hardware, no synchronization required, info provided by most PHY chips Highly inaccurate and environment specific
ToA Highly accurate Time synchronization required among anchors and target node
PoA Extremely accurate, low cost Sensitive to phase noise and impairments
TDoA Great accuracy, no target node synchronization Tight synchronization among all anchors
AoA Extra dimension relaxes timing and phase constraints Expensive hardware and less accurate

As a final comment, all range estimation methods need a reference point. Anchors provide this reference when an accurate measurement of position is needed. If it is just the range from another node that is of interest, any node can use its own reference. This is the situation we assume in this article.

What is a Timestamp?

A typical embedded device comes with a counter and a register. The value of the counter increments/decrements as driven by an oscillator. When an increment counter reaches the maximum value (0xF…FF), or a decrement counter reaches the minimum value (0x0…00), it overflows and starts counting again. If a desirable event occurs, say a message arrival event driven by a Rx start interrupt, the value of the counter can be captured and stored in a register that can be later accessed to find the time of that event – according to the node’s own reference clock.

As an example, consider the following Figure where

  • the timestamp value is captured in Register
  • the Counter is an incremental counter
  • Tx Start is an event that resets the counter, and
  • Rx Start is an event that captures the Counter value to Register.

The counter, register and Tx and Rx start events

Figure 1: The counter, register and Tx and Rx start events

If you don’t know much about electronics, it is enough to know that event times can be recorded at a node and accessed for processing later.

If you want to subscribe to my email list below to receive new articles.


Setup

The ranging setup in this discussion consists of two nodes that can exchange timestamps with each other through the wireless medium as shown in Figure below.

Two nodes exchanging timestamps with each other

Figure 2: Two nodes exchanging timestamps with each other

The distance between the two nodes is R while the time of flight from one node to another is \tau. Consequently,

    \[R = \tau \cdot c\]

We denote the real time by t, Node A’s time by T_A and Node B’s time by T_B. Since each node starts at a random time, there is a clock offset between its time as compared to the real time.

    \[T_A = t + \phi_A\]

    \[T_B = t + \phi_B\]

Refer to the next Figure to observe how the chain of events unfolds.

Local clocks of A and B along with their timestamping events

Figure 3: The chain of events with their corresponding timestamps exchanged between Node A and Node B

Any node can start its counter at any given time. So to set a reference point at an arbitrary real time 0, the time offset of Node A is \phi_A while that of of Node B is \phi_B.

1. Node A sends its local timestamp T_1 to Node B at real time t_1, where

    \[T_1 = t_1 + \phi_A\]

2. Node B receives this packet at real time t_2 and records its local time T_2, where

    \[T_2 =t_2 + \phi_B\]

Clearly,

    \[t_2 = t_1 + \tau,\qquad or \qquad \tau = t_2-t_1\]

Therefore, we can write

    \[T_2-T_1 = t_2 +\phi_B- t_1-\phi_A\]

Defining T_2-T_1 as \Delta T_{A->B} and \Delta \phi as \phi_B - \phi_A (the clock offset between two nodes),

    \[\Delta T_{A->B} = \tau + \Delta \phi \quad ------ \quad \text{Eq (1)}\]

It is important to write the equation in the above form because all we know is the observation \Delta T_{A->B}. We do not know t_1, t_2, \tau, \phi_A and \phi_B.

3. After a processing delay, Node B sends its local timestamp T_3 at real time t_3 to Node A.

4. Node A records it at T_4 at actual time t_4. Since t_4 = t_3+\tau,

    \[T_4 -T_3 = t_4+\phi_A - t_3 - \phi_B\]

which can be written in terms of \Delta T_{B->A}=T_4-T_3 as

    \[\Delta T_{B->A} = \tau - \Delta \phi \quad ------ \quad \text{Eq (2)}\]

Adding Eq (1) and Eq (2) yields the estimate of delay.

    \[\hat \tau = \frac{1}{2}\Big(\Delta T_{A->B} + \Delta T_{B->A}\Big)\]

Now it is clear that the time base of Node A serves as the reference for estimating this delay. Research literature refers to this approach as a ‘two-way message exchange‘. To pay tribute to Tolkien, I call it ‘There and Back Again‘.

Performance

I performed some ranging experiments with a wireless device with a clock rate of 8 MHz. That implies that one such tick takes 1/(8 \times 10^6) = 125 ns. In terms of distance, this is 125 ns \times 3\times 10^8 = 37.5 m. Gradually increasing the distance, a divide by two operation and rounding off the results generated the following results.

Results for a ranging experiment with an 8 MHz clock

Figure 4: Results for a ranging experiment with an 8 MHz clock

Assume that a 100x accuracy, say 37.5 cm, is needed. Then, we need a clock generating timestamps at a rate of 800 MHz. That kind of expense and power, however, is more suited to computing applications and not to an embedded device.

In conclusion, we cannot afford a high rate clock but still desire a high resolution.

In the meantime, if you found this article useful, you might want to subscribe to my email list below to receive new articles.


The Arrival of the Phase of Arrival

In the spirit of time of arrival, this method is known as the phase of arrival. First, observe that we already have access to something similar to a high resolution clock – a continuous wave (CW). Consider a simple sinusoid at GHz frequency and just plot its sign. It looks very much like a very high rate clock.

A simple continuous wave and a high rate clock

Figure 5: Sign of a simple continuous wave is similar to a high rate clock

Now again consider two wireless nodes that are exchanging continuous waves instead of timestamps in the following manner.

1. Node A sends a continuous wave \cos (2\pi F_1 t) of frequency F_1 at its time T_1 (real time t_1) to Node B. Using T_1 = t_1 + \phi_A, its phase is given by

    \[2\pi F_1 T_1 = 2\pi F_1 t_1 + 2\pi F_1 \phi_A\]

where 2\pi F_1 \phi_A is just a constant and could easily be expressed as a single term \phi'_A. As opposed to timestamps case, it is not required, neither it is easy, to measure the phase 2\pi F_1 T_1 explicitly.

2. Node B receives this continuous wave at real time t_2 when the phase of its own local reference at frequency F_1 at its local time T_2, where T_2 =t_2 + \phi_B, is

    \[2\pi F_1 T_2 = 2\pi F_1 t_2 + 2\pi F_1 \phi_B\]

Using t_2 = t_1 + \tau, Node B employs some signal processing algorithm to measure the phase difference between the two continuous waves as

    \[\Delta \theta_{A->B} = 2\pi F_1(T_2-T_1) = 2\pi F_1 \tau + 2\pi F_1\Delta \phi\quad ------ \quad \text{Eq (3)}\]

It is important to write the equation in the above form because all
we know is the phase difference \Delta \theta _{A->B}. We do not know anything else.

3. After a processing delay, Node B sends a continuous wave in the reverse direction.

4. Node A measures the phase difference

    \[\Delta \theta_{B->A} = 2\pi F_1 \tau - 2\pi F_1 \Delta \phi \quad ------ \quad \text{Eq (4)}\]

Adding Eq (3) and Eq (4) yields the estimate of delay.

    \[\hat \tau = \frac{1}{2\cdot 2\pi F_1}\Big(\Delta \theta_{A->B} + \Delta \theta_{B->A}\Big)\quad ------ \quad \text{Eq (5)}\]

That was so easy, so fast and so accurate. But the world is not that simple.

The Rollover Problem

The solution to the accuracy problem creates a problem of its own. Remember we said that when an increment counter reaches the maximum value (0xF…FF), or a decrement counter reaches the minimum value (0x0…00), it overflows and starts counting again. So if a clock is very fast, it overflows more quickly and resets again. It might even do so when the signal on the reverse path might not have returned! The same is the case with the sinusoids.

For example, a continuous wave at 2.4 GHz would roll over every 1/(2.4 \times 10^9) \times 3 \times 10^8 = 12.5 cm. Any distance greater than 12.5 cm would be impossible to measure.

Introducing More Carriers

To solve this rollover problem, assume \Delta \theta = \Delta \theta_{A->B} + \Delta \theta_{B->A} and start with plugging Eq (5) in the range expression.

    \[R = c\cdot \hat \tau = c \cdot \frac{1}{2\cdot 2\pi F_1} \Delta \theta\]

This can be simplified using c=F_1 \lambda_1 as

    \[R = \frac{\lambda_1}{2} \frac{\Delta \theta}{2\pi}\]

Now we can break the phase \Delta \theta into an integer part and a fractional part because \Delta \theta = 2\pi n + (\Delta \theta)_{\text{frac},F_1}, where n is the number of integer wavelengths spanning the distance R while (\Delta \theta)_{\text{frac},F_1} is the phase corresponding to the remaining fractional distance. Thus, the above equation can be written as

    \[R = \frac{\lambda_1}{2}\left(n + \frac{(\Delta \theta)_{\text{frac},F_1}}{2\pi}\right)\]

Writing the fractional phase as a function of range

    \[\Delta \theta_{\text{frac},F_1} = 2\pi\left(2R\frac{F_1}{c} - n\right)\quad ------ \quad \text{Eq (6)}\]

The rollover unwrapping problem is now reduced to cancelling n from the above equation. This can be easily accomplished by sending another tone at frequency F_2 that would generate the result

    \[\Delta \theta_{\text{frac},F_2} = 2\pi\left(2R\frac{F_2}{c} - n\right)\]

The above two equations can now be solved to cancel n and create an effect equivalent to sending a single tone with a very large wavelength or very low frequency F_2-F_1.

    \[\Delta \theta_{\text{frac},F_2} - \Delta \theta_{\text{frac},F_1} = 2\pi\left(2R\frac{F_2-F_1}{c} \right)\]

The range is now found to be

    \[R = \frac{c}{4\pi}\cdot \frac{\Delta \theta_{\text{frac},F_2} - \Delta \theta_{\text{frac},F_1}}{F_2-F_1}\]

Having eliminated the phase rollover, we are interested in maximum range that can be unambiguously estimated through the above equation. Clearly, this depends on the frequency difference between the two continuous waves. Also, remember that \Delta \theta_{\text{frac},F_2} - \Delta \theta_{\text{frac},F_1} can attain a maximum value of 2\pi. Then, for example, for a 2 MHz difference, i.e., F_2-F_1=2\times 10^6, the unambiguous range is

    \[R = \frac{3\times 10^8}{4\pi}\cdot \frac{2\pi}{2\times 10^6}=75 m\]

The Phase Slope Method

To cover all possible ranges, a number of difference continuous waves can be used and their results can be stitched together to form a precise range estimate. This is plotted in Figure below.

Phase vs frequency plot

Figure 6: Phase vs frequency plot

After taking a number of measurements, a plot of phases versus frequencies is drawn. Similar to Eq (6), we can write

    \[\Delta \theta_{\text{frac},F_k} = 2\pi\left(2R\frac{F_k}{c} + \text{constant}\right)\]

where the constant term arises instead of n as it might not be the same for all frequencies. However, the slope of the curve is still given by

    \[\text{slope} = \frac{4\pi}{c}\cdot R\]

from which the range can be found as

    \[R = \frac{c}{4\pi} \cdot \text{slope}\]

This is why it is known as the Phase Slope method. It is relatively costly to implement due to a number of back and forth transmissions (equal to the number of CWs employed) but it is very accurate because indoor channels are frequently susceptible to interference. A wider range of frequencies ensures resilience against interference through the added redundancy.

How to Design Nyquist and Square-Root Nyquist Pulse Shaping Filters

Square-root Nyquist filters for three different excess bandwidths

The radio spectrum is a very precious resource like real estate and must be utilized judiciously. Pulse shaping filters control the spectral leakage of the transmitted signal in a wireless channel due to the strict restrictions to comply with a spectral mask. This is even more important for the upcoming 5G wireless systems which are based on a variety of wireless transmission protocols (such as mobile networks, Internet of Things (IoT) and machine to machine communications) combined in one comprehensive standard. Even for wired channels, there is always a natural bandwidth of the medium (copper wire, coaxial cable, optical fiber) that imposes upper limits on its utilization.

The design of a good pulse shaping filter starts with the smallest possible bandwidth exhibited by a rectangular spectrum. However, that abrupt transition in the frequency domain gives rise to long tails in the time domain. To avoid this problem, a smoother rolloff of the spectrum is desired for which we can extend the bandwidth in any shape as long as it has odd symmetry around half the symbol rate \pm 0.5R_M to satisfy Nyquist no-ISI (Inter-Symbol Interference) criterion. This extension can be logically conceived as a convolution between the rectangular mass of width R_M and an even symmetric taper of width \alpha R_M where 0 < \alpha \le 1. This even symmetry preserves the odd symmetry around \pm 0.5R_M in the resultant filter.

The smoothest spectral shape one can imagine is a sine or cosine. A half-cosine of width \alpha R_M — an even symmetric shape — is convolved in frequency domain with a rectangular spectrum to generate the most commonly used pulse known as a Raised Cosine (RC) filter. The parameter \alpha is the excess bandwidth or rolloff factor in the resultant desired spectrum.

Since the convolution in time domain is multiplication in frequency domain, an RC filter is divided into two parts in frequency domain: one at the Tx and one at the Rx, both of which are square-root of the original RC filter and are known as Square-Root Raised Cosine (SRRC) filters. The Tx SRRC filter implements the shaping filter that determines the spectral mask while the Rx SRRC filter implements the matched filter that maximizes the SNR at the Rx.

The Raised Cosine concept is a good starting point for pulse shape design and its closed-form mathematical expression is good for analytical purpose. Nevertheless, there are two major drawbacks in using an SRRC pulse for shaping the spectrum.

  1. Since the transition band of an RC pulse is half cycle of a cosine, the transition band of an SRRC pulse is a quarter cycle of a cosine. Its abrupt termination at the stopband results in a discontinuity causing a limit to the sidelobe (SL) suppression that an SRRC pulse can achieve.
  2. As a consequence of truncation in time domain, the pulse is no more absolutely band-limited within 0.5(1+\alpha)R_M and assumes infinite support in frequency in the form of sidelobes. This is because the truncation in time domain (i.e., multiplication by a rectangular window) causes subsequent convolution in frequency domain between the SRRC spectrum and a sinc signal. This operation moves the half amplitude values away from the odd symmetry points of F = \pm 0.5R_M violating the Nyquist no-ISI criterion and inducing increased ISI.

This leads us to other pulse shape design procedures that produce a Nyquist filter with improved stopband attenuation preferably without any degradation in peak ISI. We discuss two main design techniques for finding a superior pulse shaping filter: transformation of a lowpass filter based on Parks-McClellan algorithm to a Nyquist filter, and convolution of a frequency domain window with a rectangular spectrum.

Transformed lowpass filter


The standard method is by starting with an initial lowpass filter that is designed according to the Parks-McClellan algorithm whose passband and stopband edges are matched to the rolloff boundaries of the Nyquist spectrum. The Parks-McClellan algorithm is an iterative algorithm for finding the optimal FIR filter based on Remez exchange algorithm and Chebyshev approximation theory such that the maximum error between the desired and the actual frequency response is minimized. Filters designed this way exhibit an equiripple behavior in their frequency responses and thus are also known as equiripple filters, where equiripple implies equal ripple within the passband and the stopband that are not necessarily the same (in fact, mostly they are not).

Naturally, this lowpass filter crosses the band edge F = 0.5R_M with more attenuation than -3 dB level required for a Nyquist spectrum. Since the transition band belongs to the filter designer, the passband edge frequency can be pushed forward towards -3 dB level. This can be implemented in a software routine through a few iterations of increasing the passband edge frequency based on a gradient descent method, just like an offline adaptive filter.

For a sampling rate F_S, passband frequency F_{\textmd{pass}}, stopband frequency F_{\textmd{stop}} and a positive constant \mu that controls the rate of convergence and the approximation error, the procedure in the n-th iteration is listed below:

  • design a lowpass filter using Parks-McClellan algorithm with frequency set \big\{0~~ F_{\textmd{pass}}[n] ~~F_{\textmd{stop}}~~ F_S/2\big\},
  • find the error between -3 dB and the filter attenuation in dB at 0.5R_M as

        \begin{equation*}       e[n] = -3 - P_{\textmd{dB}}(0.5R_M),     \end{equation*}

  • update the passband frequency as

        \begin{equation*}         F_{\textmd{pass}}[n+1] = (1+\mu e[n])F_{\textmd{pass}}[n]     \end{equation*}

For most cases, a few iterations are enough for transforming it into a Nyquist filter. There is a weighting option available as well that can place more emphasis on a desired frequency band at the expense of the remaining bands. For example, more stopband attenuation can be achieved by weighting it at a cost of increased in-band ripple.

For a better visual understanding, we create a length 49 square-root Nyquist filter using a transformed lowpass filter with three different excess bandwidths, namely \alpha = [0.15,~0.2,~0.25] and a group delay equal to 6. Next, their frequency response is plotted along with the measure of sidelobe attenuation. Finally, two square-root Nyquist filters are convolved and downsampled at 1 sample/symbol to observe the respect peak ISI levels. The results are drawn in Figure below.

Square-root Nyquist filters for three different excess bandwidths. Top -- frequency domain window, bottom -- lowpass filter

In the meantime, if you found this article useful, you might want to subscribe to my email list below to receive new articles.


Window based filter


The other procedure, devised by fred harris, is based on the convolution of a smooth taper of width \alpha R_M with a rectangular spectrum of width R_M. To affect maximum smoothness, this taper should simply be a good spectral window with a narrow mainlobe width and low sidelobe levels. One such candidate is a Kaiser window which is an approximation to the prolate-spheroidal window for which the ratio of the mainlobe energy to the sidelobe energy is maximized. Given a fixed length, a parameter \beta controls the sidelobe height which decreases with \beta at a cost of increase in the mainlobe width. The coefficients for Kaiser window w(n) are given by

    \begin{equation*}         w(n) = \begin{cases}             \frac{I_0 \left(\pi \beta \sqrt{1-\left(\frac{n}{N/2}\right)^2} \right)}{I_0(\pi\beta)} & -N \le n \le +N \\             0 & ~~\textmd{otherwise}         \end{cases}     \end{equation*}

where I_0(\cdot) is the zero-order modified Bessel function of the first kind. Again, we create a length 49 square-root Nyquist filter using a frequency domain window based filter with similar excess bandwidths \alpha = [0.15,~0.2,~0.25], \beta=12 and a group delay of 6. Next, their frequency response is plotted along with the measure of sidelobe attenuation. Finally, two square-root Nyquist filters are convolved and downsampled at 1 sample/symbol to observe the respect peak ISI levels. The results are drawn in Figure above and compared with the lowpass based design.

Since Parks-McClellan algorithm minimizes the error in the pass and stop bands, it generates optimal filter coefficients and has consequently become the standard method in FIR filter design. Moreover, the iterative lowpass process is more flexible because any sidelobe level can be exchanged with the in-band ripple by utilizing the penalty weights. On the other hand, the Kaiser window technique is not as flexible. Due to the convolution of the spectra, the stopband ripple and the in-band ripple are always the same amplitude.

Figure above also demonstrated in each case that the sidelobe attenuations exhibited by the lowpass filter are significantly better than the window based filter, along with its peak ISI being either comparable or even better. In reality, however, the lowpass filter design is overall superior with respect to sidelobe levels and window based technique is superior in terms of peak ISI. There is room for choosing one over another depending on the system requirements.

Wireless Pi Featured

Sixty Second Tech recently featured Wireless Pi on their website, the basic purpose of which is to promote partners and followers of Electronics Magazine (EDN).

EDN is a leading source for reliable electronics design ideas, articles, how to articles and teardowns. Read EDN.com for the latest information on analog design, automotive design, communications and networking design, consumer electronics design, integrated circuit design, LED design, medical electronics design, electronics power management design, sensor design, electronic systems design, and electronics test and measurement.