In my prior post, I discussed the use of “chopping” (or pre- and post-mixing) to improve the IM2 of RF/analog circuits. New readers should go back and read that post in order to understand the nomenclature and variable names in this post.

Lately, I’ve been considering whether any similar (but different) technique can be used to improve IM3. I went through a few thought experiments and eventually concluded that it couldn’t be done. Nonetheless, I was quite proud of the journey and thought it was worth sharing. I also hope that someone else will use the ideas presented here to come up with something better. (This hope is true of everything I publish here.)

In short, it’s good to celebrate your achievements and document your failures. This post is a case of the latter.

## IM3

Deviating from my prior post, I will not bother to break down the circuit into two sides of a fully-differential circuit. In the case of IM3, there is no difference between a single-ended and a fully-differential circuit (at least not mathematically). So, I’ll just assume that everything is fully differential (without loss of generality).

Let’s consider the IM3 component from our chopping system presented in the previous post:

`y = a*p*x + b*x^2 + c*x^3`

This represents the usual polynomial model (up to the 3rd order) of a circuit. Let’s now consider how our IM2 chopping system does with respect to IM3:

`y = a * p * x + b * p^2 * x^2 + c * p^3 * x^3`

`hat y = a * p^2 * x + b * p^3 * x^2 + c * p^4* x^3`

In our conventional IM2-chopping system, `p in +- 1`

. So, this means that the IM3 term `c*p^4*x^3 = c*x^3`

–that is, this symmetric chopping does absolutely nothing for IM3. In fact, any sequence `p`

which obeys `p in {-1,+1 }`

won’t work, because `p^4`

will equal 1.

## Symmetric vs Asymmetric

I’m coining the term *symmetric* chopping and *asymmetric* chopping by borrowing phrases from cryptogrophy. A symmetric cipher is one that uses the same key to both encrypt and decrypt. Similarly, I’m defining a symmetric chopper as one that uses the same chopping sequence to both chop and anti-chop. An asymmetric cipher uses one key to encrypt and another to decrypt. I similarly define an *asymmetric* chopper as one that uses one sequence `p`

to chop and another signal `q`

to anti-chop. The necessary conditions are `p*q = 1`

so that we can recover the desired linear component, and `p!=q`

because that’s the trivial case of the symmetric chopper.

We must remove constraint `p in {-1,+1 }`

, because otherwise when `p=-1`

, `q=-1`

and when `p=+1`

, `q=+1`

to meet the constraint that `p * q=1`

. We have to reject this trivial case because `p=q`

is not an asymmetric chopper–it is identical to the symmetrical chopper but we have introduced the redundant variable `q`

to describe it.

To recap, we’ve found that we can’t make a chopper with the property `p^4=1`

and have it improve IM3. The reason for this is that a `p^3`

term appears due to the IM3 of the circuit (which we are trying to linearize) and our symmetric anti-chopper multiplied again by `p`

to form `p^4`

.

## Asymmetric Chopping

However, what if we consider the asymmetric chopper. Then, our output `y`

will be:

`y = a*p*x + b*p^2*x^2 + c*p^3*x^3`

`hat y = a*p*q*x + b*p^2*q*x^2 + c*p^3*p*x^3`

which, using the relation `p * q=1`

:

`hat y = a*x + b*p * x^2 + c * p^2 * x^3`

So, we now want a system where `p^2`

is a broadband (or out-of-band) signal. How do we generate such a signal? Well, let’s consider the 3-level case. We can consider `p in {-1, 0, +1 }`

, but we have to reject it because then `p*q!=1`

when `p=0`

. In other words, we can’t have `p=0`

because then we can’t recover our signal. [In actuality, there may be a way to do exactly this, but I’ll leave that option for a future post. I still have to work out the details.]

So, let’s now consider the case where `p in {r, s}`

and `r < s`

. [This case has the property that the dc value of `p`

is non-zero, `(:p:)!=0`

. We’ll set that fact aside for now.] Let’s call the associated values of `q`

as `q in {t, u }`

. What does this look like in the frequency domain? Well, we can express `r`

and `s`

as:

`r = (r+s)/2 + (r-s)/2`

`s = (r+s)/2 - (r-s)/2`

in other words:

`p = frac{r+s}{2} +- frac{r-s}{2}`

which means that `p`

has a dc value of `frac{r+s}{2}`

plus a broadband/out-of-band component `frac{r-s}{2}`

:

In addition, the average power of `p`

is `frac{r^2+s^2}{2}`

. Since it’s pointless to ascribe any gain or loss to the chopping function (since this can be mathematically ascribed to the gain coefficients `a, b, c`

of y), we can without loss of generality constrain the average power of `p`

to be 1:

`frac{r^2+s^2}{2} = 1`

So, for example, if `r = 0.1`

, then `s = sqrt{1.99}`

.

Recall our result of asymmetric chopping:

`hat y = a*x + b*p*x^2 + c*p^2*x^3`

So, the fundamental question is what does `p^2`

look like? Well, if `p in {r,s }`

, then `p^2 in {r^2, s^2 }`

. This can be represented as:

`p^2 = frac{r^2 + s^2}{2} +- frac{r^2 - s^2}{2} = 1 +- frac{r^2 - s^2}{2}`

So, unfortunately, `p^2`

has a dc value of 1 and a broadband/modulated component:

As a result, asymmetric chopping cannot really suppress the IM3 term.

## Even more anti-reasons

From the derivation above, I don’t believe that allowing `p`

to have more than two possible values will help. For exammple:

`p in { frac{3}{ sqrt{50}}, frac{4}{ sqrt{50}}, frac{5}{ sqrt{50}} }`

Since p^2 < 0[/amath], the average value of `p^2`

will always be non-zero, and therefore there will always be some IM3 term blowing through.

Even if asymmetric chopping did fix the IM3 problem, there are practical difficulties with the system: for one, the chopper is no longer a switch-mode mixer (it is no longer selectively negating its input). As a result, one would have to worry about the linearity of the *chopper itself*. The same applies to the anti-chopper. (Although in an ADC or in a DAC, one would be able to implement one of the chopper/anti-chopper digitally and avoid one of them.)

If time avails, I will pursue the case of allowing `p=0`

some more and share my ideas on the subject in a separate post. In the meantime, your ideas and concerns are welcome. Consider the comment bubble to the lower right. Also, consider a subscription by email or RSS.

## 6 Comments

Fatal error: Uncaught Error: Call to undefined function ereg() in /home/wagh/webapps/circuitdesign/wp-content/themes/thematic/library/extensions/comments-extensions.php:262 Stack trace: #0 /home/wagh/webapps/circuitdesign/wp-content/themes/thematic/library/extensions/discussion.php(30): thematic_commenter_link() #1 /home/wagh/webapps/circuitdesign/wp-includes/class-walker-comment.php(179): thematic_comments(Object(WP_Comment), Array, 1) #2 /home/wagh/webapps/circuitdesign/wp-includes/class-wp-walker.php(145): Walker_Comment->start_el('', Object(WP_Comment), 1, Array) #3 /home/wagh/webapps/circuitdesign/wp-includes/class-walker-comment.php(139): Walker->display_element(Object(WP_Comment), Array, '5', 0, Array, '') #4 /home/wagh/webapps/circuitdesign/wp-includes/class-wp-walker.php(387): Walker_Comment->display_element(Object(WP_Comment), Array, '5', 0, Array, '') #5 /home/wagh/webapps/circuitdesign/wp-includes/comment-template.php(2174): Walker->paged_walk(Array, '5', 0, 0, Array) #6 /home/wagh/webapps/circuitdesign/wp-con in/home/wagh/webapps/circuitdesign/wp-content/themes/thematic/library/extensions/comments-extensions.phpon line262