The Algorithm

To calculate the small signal noise of a circuit, the AC noise analysis has to be applied [6]. This technique uses the principle of the AC analysis described in chapter 4 on page [*]. In addition to the MNA matrix $ A$ one needs the noise current correlation matrix $ \underline{C}_Y$ of the circuit, that contains the equivalent noise current sources for every node on its main diagonal and their correlation on the other positions.

The basic concept of the AC noise analysis is as follows: The noise voltage at node $ i$ should be calculated, so the voltage arising due to the noise source at node $ j$ is calculated first. This has to be done for every $ n$ nodes and after that adding all the noise voltages (by paying attention to their correlation) leads to the overall voltage. But that would mean to solve the MNA equation $ n$ times. Fortunately there is a more easy way. One can perform the above-mentioned $ n$ steps in one single step, if the reciprocal MNA matrix is used. This matrix equals the MNA matrix itself, if the network is reciprocal. A network that only contains resistors, capacitors, inductors, gyrators and transformers is reciprocal.

The question that needs to be answered now is: How to get the reciprocal MNA matrix for an arbitrary network? This is equivalent to the question: How to get the MNA matrix of the adjoint network. The answer is quite simple: Just transpose the MNA matrix!

For any network, calculating the noise voltage at node $ i$ is done by the following three steps:

  $\displaystyle \textrm{1. Solving MNA equation:}$ $\displaystyle \qquad$ $\displaystyle \left[A\right]^T \cdot \left[x\right] = \left[A\right]^T \cdot \b...
...ts \\ 0 \\ -1 \\ 0 \\ \vdots \\ 0 \\ \end{bmatrix} \leftarrow i\textrm{-th row}$ (5.3)
  $\displaystyle \textrm{2. Creating noise correlation matrix:}$ $\displaystyle \qquad$ $\displaystyle \left( \underline{C}_Y \right)$ (5.4)
  $\displaystyle \textrm{3. Calculating noise voltage:}$ $\displaystyle \qquad$ $\displaystyle v_{noise,i} = \sqrt{\left[v\right]^T \cdot \left( \underline{C}_Y \right) \cdot \left[v\right]^*}$ (5.5)

If the correlation between several noise voltages is also wanted, the procedure is straight forward: Perform step 1 for every desired node, put the results into a matrix and replace the vector $ [v]$ in step 3 by this matrix. This results in the complete correlation matrix. Indeed, the above-mentioned algorithm is only a specialisation of transforming the noise correlation matrices (see section 2.4.2).

If the normal AC analysis has already be done with LU decomposition, then the most time consuming work of step 1 has already be done.

$\displaystyle \textrm{instead of} \qquad Y = L\cdot U \qquad \textrm{we have} \qquad Y^T = U^T \cdot L^T$ (5.6)

I.e. $ U^T$ becomes the new $ L$ matrix and $ L^T$ becomes the new $ U$ matrix, and the matrix equation do not need to be solved again, because only the right-hand side was changed. So altogether this is a quickly done task. (Note that in step 3, only the subvector $ [v]$ of vector $ [x]$ is used. See section 3.1.3 for details on this.)

If the noise voltage at another node needs to be known, only the right-hand side of step 1 changes. That is, a new LU decomposition is not needed.

Reusing the LU decomposed MNA matrix of the usual AC analysis is possible if there has been no pivoting necessary during the decomposition.

When using either Crout's or Doolittle's definition of the LU decomposition during the AC analysis the decomposition representation changes during the AC noise analysis as the matrix $ A$ gets transposed. This means:

$\displaystyle A = L\cdot U \;$ with $\displaystyle \; L = \begin{bmatrix}l_{11} & 0 & \ldots & 0\\ l_{21} & l_{22} &...
...ts\\ \vdots & & \ddots & 0\\ l_{n1} & \ldots & \ldots & l_{nn} \end{bmatrix} \;$ and $\displaystyle \; U = \begin{bmatrix}1 & u_{12} & \ldots & u_{1n}\\ 0 & 1 & & \vdots\\ \vdots & \ddots & \ddots & \vdots\\ 0 & \ldots & 0 & 1 \end{bmatrix}$ (5.7)


$\displaystyle A^T = U^T\cdot L^T \;$ with $\displaystyle \; L = \begin{bmatrix}1 & 0 & \ldots & 0\\ l_{21} & 1 & \ddots & \vdots\\ \vdots & & \ddots & 0\\ l_{n1} & \ldots & \ldots & 1 \end{bmatrix} \;$ and $\displaystyle \; U = \begin{bmatrix}u_{11} & u_{12} & \ldots & u_{1n}\\ 0 & u_{...
...ots\\ \vdots & \ddots & \ddots & \vdots\\ 0 & \ldots & 0 & u_{nn} \end{bmatrix}$ (5.8)

Thus the forward substitution (as described in section 15.2.4) and the backward substitution (as described in section 15.2.4) must be slightly modified.

$\displaystyle y_{i}$ $\displaystyle = z_{i} - \sum_{k=1}^{i-1} y_{k}\cdot l_{ik}$ $\displaystyle i = 1,\ldots,n$ (5.9)

$\displaystyle x_{i}$ $\displaystyle = \frac{y_{i}}{u_{ii}} - \sum_{k=i+1}^{n} x_{k}\cdot \frac{u_{ik}}{u_{ii}}$ $\displaystyle i = n,\ldots,1$ (5.10)

Now the diagonal elements $ l_{ii}$ can be neglected in the forward substitution but the $ u_{ii}$ elements must be considered in the backward substitution.

A Simple Example

The network that is depicted in figure 5.1 is given. The MNA equation is (see chapter 3.1):

$\displaystyle [A]\cdot [x] = \begin{bmatrix}1/R_1 & 0\\ G & 1/R_2 \end{bmatrix} \cdot \begin{bmatrix}V_1\\ V_2 \end{bmatrix} = \begin{bmatrix}0\\ 0 \end{bmatrix}$ (5.11)

Figure 5.1: simple non-reciprocal network

Because of the controlled current source, the circuit is not reciprocal. The noise voltage at node 2 is the one to search for. Yes, this is very easy to calculate, because it is a simple example, but the algorithm described above should be used. This can be achived by solving the equations

$\displaystyle \begin{bmatrix}1/R_1 & 0\\ G & 1/R_2 \end{bmatrix} \cdot \begin{bmatrix}Z_{11}\\ Z_{21} \end{bmatrix} = \begin{bmatrix}-1\\ 0 \end{bmatrix}$ (5.12)


$\displaystyle \begin{bmatrix}1/R_1 & 0\\ G & 1/R_2 \end{bmatrix} \cdot \begin{bmatrix}Z_{12}\\ Z_{22} \end{bmatrix} = \begin{bmatrix}0\\ -1 \end{bmatrix}$ (5.13)

So, the MNA matrix must be solved two times: First to get the transimpedance from node 1 to node 2 (i.e. $ Z_{21}$) and second to get the transimpedance from node 2 to node 2 (i.e. $ Z_{22}$). But why solving it two times, if only one voltage should be calculated? With every step transimpedances are calculated that are not need. Is there no more effective way?

Fortunately, there is Tellegen's Theorem: A network and its adjoint network are reciprocal to each other. That is, transposing the MNA matrix leads to the one of the reciprocal network. To check it out:

$\displaystyle [A]^T\cdot [x] = \begin{bmatrix}1/R_1 & G\\ 0 & 1/R_2 \end{bmatri... \begin{bmatrix}V_1\\ V_2 \end{bmatrix} = \begin{bmatrix}0\\ 0 \end{bmatrix}$ (5.14)

Figure 5.2: simple network to compare with adjoint network

Compare the transposed matrix with the reciprocal network in figure 5.2. It is true! But now it is:

$\displaystyle \begin{bmatrix}1/R_1 & G\\ 0 & 1/R_2 \end{bmatrix} \cdot \begin{b...
...gin{bmatrix}Z_{21}\\ Z_{22} \end{bmatrix} = \begin{bmatrix}0\\ -1 \end{bmatrix}$ (5.15)

Because $ Z_{21}$ of the original network equals $ Z_{12}$ of the reciprocal network, the one step delivers exactly what is needed. So the next step is:

$\displaystyle ([A]^T)^{-1}\cdot \begin{bmatrix}0\\ -1 \end{bmatrix} = \begin{bm...
..._1\cdot R_2\\ -R_2 \end{bmatrix} = \begin{bmatrix}Z_{21}\\ Z_{22} \end{bmatrix}$ (5.16)

Now, as the transimpedances are known, the noise voltage at node 2 can be computed. As there is no correlation, it writes as follows:

$\displaystyle <v_{node2}^2>$ $\displaystyle =$ $\displaystyle <v_{R1,node2}^2> + <v_{R2,node2}^2>$ (5.17)
  $\displaystyle =$ $\displaystyle <i_{R1}^2>\cdot Z_{21}\cdot Z_{21}^* + <i_{R2}^2>\cdot Z_{22}\cdot Z_{22}^*$ (5.18)
  $\displaystyle =$ $\displaystyle \frac{4\cdot k\cdot T\cdot \Delta f}{R_1} \cdot (G\cdot R_1\cdot R_2)^2 +
\frac{4\cdot k\cdot T\cdot \Delta f}{R_2} \cdot (-R_2)^2$ (5.19)
  $\displaystyle =$ $\displaystyle 4\cdot k\cdot T\cdot \Delta f\cdot \left( R_1\cdot (G\cdot R_2)^2 + R_2 \right)$ (5.20)

That's it. Yes, this could have be computed more easily, but now the universal algorithm is also clear.

This document was generated by Stefan Jahn on 2007-12-30 using latex2html.