An SNR analysis of aLIGO circuit
LIGO, Gravitational-waves, Electronics
Introduction
This post builds on a few earlier posts of mine, An analysis of aLIGO PD circuit, LIGO modulation and RLC filters. In this post we will look into a mock up of the Advanced Laser Interferometer Gravitational-Wave Observatory (aLIGO) photodiode circuit and construct a model to study the noise and SNR. Once we figure the model out in the simplified scenario, we can extend it out to the full circuit, and see if we can design a new circuit with better noise characteristics than the existing circuit in aLIGO now. [Update: The follow up post is now live at this link. ]
The actual circuit in use at the moment is shown in Figure 1, it is a bit too complicated to model for a beginner.
A mock up
This will be just a warm up exercise where we will reduce the problem to a toy model. We start with modeling the photodiode as a current source with a shunt capacitor and series inductance and capacitance. Its representation can be converted to the Thevenin equivalent as shown in Figure 2.
The spectrum of the input signal from the photodiode is given in Table 1, and the spectrum shows very narrow spikes at multiple frequencies [1].
Before we look at the circuit and the full spectrum with its all glory, let’s test the waters a bit to define what is the signal and what is the noise for a simplified input spectrum. We will assume, for now, that we want to isolate the \(9.1\)MHz signal at REFL port. We will also assume to only harmonic remaining is at \(18.2\)MHz.
Now, consider connecting this photodiode to a single frequency selector to pick up \(9.1\)MHz and a notch filter to dump the \(18.2\)MHz, as in Figure 3. We need to keep in mind that the output will be tied to the input of an OPAMP, which will have its noise current flowing through the circuit.
SNR analysis
Let’s define a set of impedances to simplify the notation: \[\begin{eqnarray} \text{ Diode impedance: } Z_\text{D}&=&Z_{C_D} +Z_{L_D}+R_D, \nonumber\\ \text{ Notch impedance: } Z_N&=&Z_{C_N}+Z_{L_N}, \nonumber\\ \text{ Filter impedance: } Z_F&=&Z_{C_F}+Z_{L_F} \label{eq:defs}. \end{eqnarray}\] The total impedance observed by the diode as it is converted to a voltage source in the Thevenin equivalent circuit as shown in Figure 2 reads: \[\begin{equation} Z_T=Z_\text{D}+Z_N//Z_F\label{eq:ztotal0}. \end{equation}\] where for given \(C\) or \(L\), we will have \(Z_{C} =\frac{1}{i \omega C}\) and \(Z_{L} =i \omega L\) for ideal capacitors and inductors.
The voltage at the output is given by the simple voltage division: \[\begin{equation} V_\text{out}=I Z_{C_D} \frac{Z_N//Z_F}{Z_T} \frac{Z_{L_F}}{Z_F} =I \frac{Z_{C_D} Z_N Z_{L_F}}{Z_T(Z_N+Z_F)} \label{eq:ztotal}. \end{equation}\]
We can define a trans-impedance which converts the input current \(I\) to \(V_\text{out}\): \[\begin{equation} Z_\text{tr}\equiv\frac{V_\text{out}}{I}=\frac{Z_{C_D} Z_N Z_{L_F}}{Z_T(Z_N+Z_F)} \label{eq:trnsImp}. \end{equation}\]
An input current of amplitude \(I_{1,2}\) and angular frequency of \(\Omega_{1,2}\) will create a voltage at filter output (also the OPAMP input) as \[\begin{equation} V_{1,2}^\text{out}=I_{1,2} Z_\text{tr}(\Omega_{1,2}) \label{eq:vout12}. \end{equation}\]
We can calculate the current amplitudes \(I_{1,2}\) using the power values at \(9.1\)MHz and \(18.2\)MHz in Table 1 and using a conversion efficiency of \(0.86\), which gives \(I_1= 0.07\)mA and \(I_2= 17.4\)mA.
A photodiode also has the shot noise, and it is transferred to the output just like the signal in Eq. \(\ref{eq:vout12}\), i.e., \[\begin{equation} V_\text{shot}^\text{out}=I_\text{shot} Z_\text{tr} \label{eq:vshot}, \end{equation}\] where \(I_\text{shot}=\sqrt{2 e I_\text{dc}}\).
In addition to the signal appearing at the OPAMP port, there will be the thermal noise. That noise is created by the real part of the equivalent impedance, which we will refer to as backwards impedance:
\[\begin{eqnarray} Z_\text{BO}&\equiv& Z_{L_F} // \left( Z_D// Z_N+ Z_{C_F}\right)\label{eq:bwdImp}. \end{eqnarray}\]
The thermal voltage reads: \[\begin{eqnarray} \mathcal{V}_\text{th}=\sqrt{4k_B T \Re\{Z_\text{BO}\}} \label{eq:vth} \end{eqnarray}\]
The voltage induced by the OPAMP current noise is given by
\[\begin{eqnarray} V^o_\text{i}= i_\text{op} Z_\text{BO}\label{eq:vopnxx}. \end{eqnarray}\] The noise parameters for the OPAMP TI, LMH6624 is given in Table 2.
| Parameter | Description | Value | Unit |
|---|---|---|---|
| $i_\text{op}$ | Opamp current noise | $2.0$ | $\frac{\text{pA}}{\sqrt{\text{Hz}}}$ |
| $V^o_\text{v}$ | Opamp voltage noise | $0.9$ | $\frac{\text{nV}}{\sqrt{\text{Hz}}}$ |
The total noise is: \[\begin{eqnarray} \mathcal{N}^\text{out} =\left|V_\text{shot}^\text{out}\right|^2+ \mathcal{V}^2_\text{th} +\left|V^o_\text{i}\right|^2+\left(V^o_\text{v}\right)^2 =\left|I_\text{shot} Z_\text{tr} \right|^2+ 4k_B T \Re\{Z_\text{BO}\} +\left|i_\text{op} Z_\text{BO}\right|^2+\left(V^o_\text{v}\right)^2 \label{eq:vopnt}, \end{eqnarray}\]
where we included the voltage noise term from OPAMP, \(V^o_\text{v}\). Let us define the noise to signal ratio at frequency \(\Omega_1\): \[\begin{eqnarray} \text{NSR}=\frac{\mathcal{N}^\text{out}}{|V_{1}^\text{out}|^2}= \left|\frac{I_\text{shot} }{I_1}\right|^2+\frac{4k_B T \Re\{Z_\text{BO}\} +\left|i_\text{op} Z_\text{BO}\right|^2+\left(V^o_\text{v}\right)^2}{\left|I_{1} Z_\text{tr}\right|^2} \label{eq:nsr}. \end{eqnarray}\] There are a couple of options to treat the first term in Eq. \(\ref{eq:nsr}\). We can keep the whole expression and use the exact values of \(I\)’s to get the value of NSR. Or we can follow another convention, where we take the input signal current \(I_1\) as \(I_\text{shot}\). In this case \(I_\text{shot}\) will the noise in the input current, and it will be negligibly small, and we will have the following expression for the flipped NSR, i.e.: \[\begin{eqnarray} \text{pSNR}=\left.\frac{\left|I_\text{shot} Z_\text{tr}\right|^2}{4k_B T \Re\{Z_\text{BO}\} +\left|i_\text{op} Z_\text{BO}\right|^2+\left(V^o_\text{v}\right)^2} \right\rvert_{\Omega_1} \label{eq:snr}, \end{eqnarray}\] which is not the SNR in the conventional definition, and that is why we defined it as a pseuodo SNR as a measure of goodness. What do we do with the \(\Omega_2=2\,\Omega_1\) term? Should it be a part of the SNR calculations? After all, we are after \(\Omega_1\) content and anything else should be considered as noise. However, we should remember that the output of the OPAMP will be fed to a mixer to isolate the \(\Omega_1\) content. In fact, we have shown in an earlier post, LIGO modulation, that, with square-wave demodulation, even multiples of the fundamental frequency will be eliminated from the output. Therefore, we don’t need to do much about the \(\Omega_2\) term. But, if it doesn’t hurt the SNR, why bother notching it? It is because there is a significant amount of current in that frequency, as we calculated earlier \(I_2= 17.4\)mA, which gets multiplied by the transimpedance \(Z_\text{tr}(\Omega_2)\). If we completely ignore that signal, it will create a large voltage in the OPAMP input saturating it. The OPAMP is typically set to provide a gain of 10 and its \(V_{CC}\) is \(\pm 5\)V. To make sure we stay in the nice, linear region, we need to make sure that the OPAMP input voltage doesn’t exceed about \(0.1\)V peak. And that is the reason why we need to sufficiently notch out unwanted signals even though they might be eliminated later by the mixer. We will now turn to some numerical analysis and search for the best parameters that will optimize the SNR while keeping the unwanted signal below a critical voltage value.
Let’s do a numerical analysis where we ignore the resistance component of coils- we will turn on the resistance in the next subsection to see how much of a difference they make. Since there are 4 parameters, we can do a complete sweep of parameters. We won’t worry about the efficiency of the code for now. Find the full code here or copy it below.
We first show the spectrum in Figure 4. We will take the photodiode conversion sensitivity as \(0.86\) mA/mW [1] to convert the laser power to current.
We will do a sweep for all four parameters:
- \(C_F:\) [501, 562, 631, 708, 794, 891, 1000] nF
- \(L_F:\) [1.4, 1.5, 1.7, 1.9, 2.2, 2.4, 2.7, 3.1, 3.4, 3.8, 4.3, 4.8, 5.4] \(\mu\) H
- \(C_N:\) [1.5, 1.6, 1.8, 2.1, 2.3, 2.6, 2.9, 3.3, 3.7, 4.1, 4.6, 5.2, 5.8, 6.5, 7.3, 8.2, 9.2, 10.3, 11.6, 13, 14.6, 16.3, 18.3, 20.6, 23.1, 25.9, 29.1, 32.6, 36.6] pF
- \(L_N:\) [2.1, 2.3, 2.6, 3, 3.3, 3.7, 4.2, 4.7, 5.3, 5.9, 6.6, 7.4, 8.3, 9.3, 10.5, 11.8, 13.2, 14.8, 16.6, 18.6, 20.9, 23.5, 26.3, 29.5, 33.1, 37.2, 41.7, 46.8, 52.5] \(\mu\) H
After the sweep, we pick the best SNR point while maintaining \(V_{p}<0.1V\). Figure 5 shows the contour plot for the SNR after the notch filter parametes are locked to their values as shown in the plot title.
We can now fix the filter parameters to the values that maximize the SNR and look at the change in SNR, as in Figure 6.
Figure 6 shows that SNR has very little sensitivity around the point we selected. This is expected since the main purpose of the notch is to get rid of the \(18.2\)MHz. Let’s take a look at the voltage in Figure 7.
It is hard to zoom into the diagonal line in that figure. We can rotate it by defining \(f_N=\frac{1}{2\pi \sqrt{L_N C_N}}\), and replot as in Figure 8.
We plot Figure 9 to show the transimpedance of the circuit and the expected voltages[rigth axis] at the opamp input at the two frequencies of interest.
We will treat the LTspice simulation as the golden standard, and it is crucial that the results from this analysis are in agreement with the ones from LTspice. As we will have to do this many times, it is worth automating the process. We will do the optimization in R (or possibly in Python later), find the parameters; pass them to LTspice. We can collect the results of the simulation by parsing the .raw data and compare and visualize it using R/Javascript.
Figure 10 shows the total noise computed here and in LTspice and the break out into the components.
We see in Figure 10 that the analysis here matches the results from LT spice simulation, which can be treated as the golden standard, and matching it with our mathematical model is very promising.
What is next?
Now that we have the model for the simplified circuit, we can apply the same formalism to the full circuit. Before we do that, we need to take care of one more thing: coils have resistances. We first need to build a realistic model of coils and then use that for the complete circuit. [Update: The follow up post is now live at this link. ]