%! TEX root = ../thesis.tex
\chapter{Theory}
This chapter will be discussing the fundamental principles used in the experiments.
These will contain simplified circuits and their respective equations as well as component behavior as specified in their respective datasheets by their manufacturer

\section{Hardware Component Behavior}

    Before discussing the experimental results it needs to be clear what circuitry is used in these experiments and what behavior we expect. 
    Keeping in mind, that these are theoretical values and will most likely not be exactly the same as those found in actual hardware, as all values given will always be within some error.

    Each of the three voltage regimes that will be observed on the PowerIt board, \SI{48}{\volt}, \SI{9.6}{\volt} and \SI{1.8}{\volt}, has a voltage- and in the cases of \SI{48}{\volt} and \SI{1.8}{\volt} also a current-measurement circuit.
    Additionally there is a temperature sensor built into the STM32 chip.

    \subsection{ADC Calibration}\label{sec:adc}
    The measurements will be done by the STM32-Chip, which uses 12bit ADCs.
    A single ADC will be switching between all connected pins. 
    This Behavior can be problematic in regards to measuring accurately.
    The timing used to measure a single pin can be programmatically set from 3 up to 480 clock ticks\footnote{this clock is the internal adc clock, with a frequency of \SI{159}{\hertz}}

    \subsection{48V Input Voltage}\label{sec:mon48v}

        The circuits for measuring input voltage and current are the most complex.
        For voltage measurement the circuit needs to

        \begin{itemize}
            \item divide our input voltage into a usable potential range
            \item decouple the input (\SI{48}{\volt}) from signal potential (\SI{3.3}{\volt})
            \item and amplify the voltage, to be in the STM32-Chips Voltage range of up to \SI{3.3}{\volt}.
        \end{itemize}

        The already implemented cicuit can be seen in \autoref{mon48v}.

        It consists of a 1:240 voltage divider, a full differential isolation amplifier taking in the roughly \SI{200}{\milli\volt} (nominal voltage range), and amplifying it by a factor of 8 (\(r_\text{diffOpAmp}\)~\cite{diffopamp}).
        It is also decoupling the input and output voltages, so our \SI{48}{\volt} and \SI{3.3}{\volt} circuit parts are electrically insulated.
        The remaining operational amplifier provides difference to single ended conversion with an amplification or 1.1 (\(r_\text{OpAmp}\))
        
        \begin{figure}[H]
            \centering
            \includegraphics[width=.9\textwidth]{./tikz/mon48v.pdf}
            \caption{Circuit for measuring the \SI{48}{\volt} input voltage, consisting of input potential (left), two resistors as voltage divider, one fully differential isolation amplifier (left), one operational Amplifier (right), output voltage as well as the connection to the STM32-Chips input pin (right)}%
            \label{mon48v}
        \end{figure}
        

        This circuit results in the following equation for calculating the input voltage from a pin voltage:

        \begin{align}
            V_\text{48V in}\cdot\frac{R_1}{R_1+R_2} \cdot r_\text{diffOpAmp} \cdot r_\text{OpAmp} =&~V_\text{MONITOR\_48V}\nonumber\\
            \Leftrightarrow \quad \frac{V_\text{MONITOR\_48V}}{r_\text{diffOpAmp}\cdot r_\text{OpAmp}}\cdot\frac{R_1+R_2}{R_1} =&~V_\text{48V in}
            \intertext{and the extremes, when assuming \SI{48+-4.8}{\volt} are}
            V_\text{MONITOR\_48V, min} = \SI{43.2}{\volt}\cdot\frac{1}{240+1}\cdot 8\cdot 1.1 =&~\SI{1.5774}{\volt}\\
            V_\text{MONITOR\_48V, max} = \SI{52.8}{\volt}\cdot\frac{1}{240+1}\cdot 8\cdot 1.1 =&~\SI{1.9280}{\volt}
        \end{align}

    \subsection{\SI{48}{\volt} Input Current}

        The circuit has to satisfy the following constraints:

        \begin{itemize}
            \item use a shunt resistor, with minimal heat dissipation 
            \item while still providing a good resolution within the STM32-Chips specifications
        \end{itemize}

        To accomplish that, the circuit is measuring the voltage over a \SI{500}{\micro\ohm} shunt Resistor, while a current is flowing.
        By Ohms Law that results in a linear proportionality between current an the obtained voltage.
        Which is then decoupled and amplified by a factor of 8, as well as converted from a difference to single ended voltage, with a amplification factor of 1.1.
        
        \begin{figure}[H]
            \centering
            \includegraphics[width=.9\textwidth]{./tikz/mon48i.pdf}
            \caption{Circuit for measuring the \SI{48}{\volt} input current, consisting of the powerit Input circuit, one shunt-resistor, one full diff isolating Amplifier, one operational amplifier, output potential, as well as the connection to the STM32-Chips input pin}%
            \label{mon48i}
        \end{figure}

        Here the same amplifiers as in \autoref{sec:mon48v} is used and so we can apply the following equation for our input current:

        \begin{align}
            I_\text{48V IN}\cdot R_\text{shunt} \cdot r_\text{diffOpAmp} \cdot r_\text{OpAmp} = V_\text{48I pin}\nonumber\\
            \Leftrightarrow\quad \frac{V_\text{48I pin}}{R_\text{shunt}} \cdot \frac{1}{r_\text{diffOpAmp}\cdot r_\text{OpAmp}} = I_\text{48V IN}
        \end{align}
        
        The current range is from \SI{0}{\ampere} up to \SI{41.7}{\ampere} (= \SI{2}{\kilo\watt} / \SI{48}{\volt})and gives a resulting observable voltage range from \SI{0}{\volt} to:

        \begin{align}
            \SI{41.7}{\ampere}\cdot \SI{500}{\micro\ohm} \cdot 8\cdot 1.1 =& \SI{0.1833}{\volt}
        \end{align} 

    \subsection{9.6V Output Voltage}
        The measurement of \SI{9.6}{\volt} is quite simpler. 
        This Circuit consists of a 1:3 Voltage Divider.

        \begin{figure}[H]
            \centering

            \resizebox{.55\columnwidth}{.12\paperheight}{%
                \begin{circuitikz}[scale=2]
                    \draw[color=black, thick]

                    (0,0) node[left]{GND}
                    to [short, o-] (1,0)
                    to [R, l_={R1 1k}] (1,1)

                    (0,2) node[left]{9.6V}
                    to [short, o-] (1,2)
                    to [R, l={R2 3k}] (1,1)
                    to [short, *-] (3, 1) node[right, draw=black] {MONITOR\_10V};
                \end{circuitikz}
            }
            \caption{Circuit for measuring 9.6V output voltage. Consisting of a voltage divider with 1:4 ratio, input voltage (left) and output voltage (right)}%
            \label{fig:mon10v}
        \end{figure}

        To describe that circuit the following equation can be used:
        \begin{align}
            \frac{V_\text{9.6V IN} \cdot R_1}{R_1 + R_2} =&~V_\text{MONITOR\_10V}\\
            \Leftrightarrow \frac{V_\text{MONITOR\_10V}}{R_1} \cdot \left( R_1+R_2\right) =&~V_\text{9.6V IN}
        \end{align}

        

    \subsection{1.8V Output Voltage}

        To measure this Voltage the output is directly connected to a pin on the STM32-Chip. 

        But until now the voltages and current could only be measured, now the mechanism for setting a resulting voltage at the \SI{1.8}{\volt} terminals is known.
        The circuit for generating \SI{1.8}{\volt} can be seen in\autoref{fig:gen18v}. 
        It consists of a power module and a resulting resistance between two pins, defined by R\(_\text{series}\), R\(_\text{parallel}\) and R\(_\text{pot}\).
        The resistances job is to set the output to a given voltage of around \SI{1.8}{\volt}.
        That voltage can be varied based on R\(_\text{pot}\), because this resistance is set via a digital potentiometer\footnote{MCP4152 digital Rheostat~\cite{mcp4152}}.

    \begin{figure}[H]
        \centering
        \includegraphics[width=.55\textwidth]{./tikz/gen18v.pdf}
        \caption{1.8V supply circuit, featuring a DC-DC Converter, a resistor chain, supply voltage (left) and resulting voltage (right)}%
        \label{fig:gen18v}
    \end{figure}

    The in \autoref{fig:gen18v} used \SI{1.8}{\volt} converter has a characteristic formula~\cite{pth08t}, and the in this circuit used potentiometer is a linear \SI{10}{\kilo\ohm} Reheostat.

    Therefore equations~\ref{eq:rpot},~\ref{eq:rset} and~\ref{eq:vout} can describe the circuit.
    \begin{align}
        R_\text{potentiometer} =& P_\text{val} \frac{\SI{10}{\kilo\ohm}}{256} \label{eq:rpot}\\
        R_\text{SET} =& \left(\frac{1}{R_\text{potentiometer}} + \frac{1}{R_\text{parallel}}\right)^{-1} + R_\text{series}\nonumber \\
        =& \frac{R_\text{potentiometer}\cdot R_\text{parallel}}{R_\text{potentiometer} + R_\text{parallel}} + R_\text{series}\label{eq:rset}\\
        V_\text{MONITOR\_1V8} =& \frac{\SI{30.1}{\kilo\ohm}}{R_\text{SET} + \SI{6.49}{\kilo\ohm}} \cdot \SI{0.7}{\volt} + \SI{0.7}{\volt} \label{eq:vout}
    \end{align}

    Visualizing the \autoref{eq:rset} results in \autoref{fig:gen18v}, in which the limits of this circuit are visible.

    \begin{align}
        V_\text{MONITOR\_1V8, min} =&~\SI{1.549}{\volt}\\
        V_\text{MONITOR\_1V8, max} =&~\SI{2.022}{\volt}
    \end{align}

    \begin{figure}[H]
        \centering
        \vspace{-1cm}
        \hspace*{-.165\textwidth}
        \includegraphics[width=1.3\textwidth]{./data/theory/v18.pdf}
        \caption{Expected behavior of 1.8V output voltage vs potentiometer setting}%
        \label{fig:beh1v8}
    \end{figure}
    \subsection{1.8V Output Current}
    The circuit for measuring the outgoing current over 1.8V, consists of a current sensing IC, which is Hall sensor based. Each connection (digital and analog) has this IC in series to its load.

    \begin{figure}[H]
        \centering
        \resizebox{.55\columnwidth}{.12\paperheight}{%
            \begin{circuitikz}[scale=2]
                \draw[color=black, thick]

                (0,0) node[left]{GND}
                to [short, o-] (1,0)
                to [] (1,.5)

                (0,2) node[left]{1.8V}
                to [short, o-] (1,2)
                to [] (1,1.5)

                (1.2,1) node[draw=black, regular polygon, regular polygon sides=4, minimum size=2.7cm]{acs758}

                (1.7,1)
                to [short, *-] (3, 1) node[right, draw=black] {VDD\_1V8\_*};
            \end{circuitikz}
        }
        \caption{1.8V current sensing circuit, featuring a acs758, hall sensor based current sensing IC, input voltage (left) and output voltage (right)}%
        \label{fig:mon18i}
    \end{figure}

    The IC is rated for a maximum constant current draw of 100A, and features the following behavior:
    \begin{align}
        I_\text{1.8V, in} \cdot \SI{0.004}{\volt\per\ampere} + \SI{0.12}{\volt} =&~V_\text{MONITOR\_1I8}\\
        \intertext{By applying the limits of \SI{0}{\ampere} and \SI{100}{\ampere}, the following voltage range can be observed:}
        \SI 0\ampere \cdot\SI{0.004}{\volt\per\ampere} + \SI{0.12}{\volt} =&~\SI{0.12}{\volt}\\
        \SI{100}{\ampere} \cdot\SI{0.004}{\volt\per\ampere} + \SI{0.12}{\volt} =&~\SI{0.52}{\volt}
    \end{align}


\section{1.8V Output Regulation}
The method for regulating the \SI{1.8}{\volt} output voltage consists of two parts.

First the voltage, wanted at the output terminal and second the corresponding potentiometer setting to use for that voltage
On the other hand, to calculate the voltage to output, it is necessary to classify the connections between the PowerIts output terminals and reticles.

\subsection{Potentiometer Mapping}
    Combining Equations~\ref{eq:rpot},~\ref{eq:rset}, and~\ref{eq:vout}, we gather \autoref{eq:fullreg}. This equation maps a given output voltage to a corresponding Potentiometer Setting (reverse to \autoref{fig:beh1v8}).

    \begin{align} \label{eq:fullreg}
        P_\text{val} = \frac{%
            R_\text{par} \left[ \left( \frac{0.7V \cdot 30.1k\Omega}{V_{O}-0.7V} - 6.49k\Omega \right) - R_\text{ser}\right]
        }{%
            R_\text{par} + \left( \frac{0.7V \cdot 30.1k\Omega}{V_{O}-0.7V} - 6.49k\Omega \right) - R_\text{ser}
        }\cdot
        \frac{256}{10k\Omega}
    \end{align}

    This mapping will be converted into a lookup table before the PowerIt firmware is initiated.

\subsection{Power Wafer}
    To test the \SI{1.8}{\volt} regulation the so called PowerWafer is going to be used.
    It can be controlled similar to a in BrainScaleS used, functional, Wafer module.
    But it is fundamentally different, as it cannot be used for any neuromorphic computations, but only to test for voltages and currents.
    Its internals are ohmic resistors, which provide a maximum power draw per reticle of what is possible inside a usable wafer module.

    \begin{figure}[H]
        \centering
        \includegraphics[width=.7\columnwidth]{./data/theory/wafer.pdf}
        \caption{Reticle diagram of a wafer in BrainScaleS. All 48 Reticles are shown}%
        \label{fig:wafer}
    \end{figure}

    \begin{figure}[H]
        \centering
        \includegraphics[width=.7\columnwidth]{./pics/waferpcb.png}
        \caption{Part of the main pcb on which a wafer is placed, visible are the 48 Reticles and two terminals each for 1.8V Digital (blue) and Analog (red), which correspond to the output terminals on a PowerIt, a reticles dimensions are \SI{2.0077}{\centi\meter} by \SI{2.0077}{\centi\meter}}%
        \label{fig:mainpcb}
    \end{figure}

    It has the same layout as its system counterparts and each of the 48 reticles can be accessed, digitally as well as electrically.
    Each reticle is connected to its corresponding CURE board.
    Those can read voltages of each reticle, but not at the same position as an AnaB.
    They read right before \(R_1\) in \autoref{fig:retmodel}.

    Another specialization of the PowerWafer is, that all reticles analog and digital \SI{1.8}{\volt} lines are connected directly to pins on the analog readout boards~\cite{anabpower}. There it is possible to measure a voltage, which is the one after the load resistors in \autoref{fig:retmodel}

\subsection{Simple Wafer Resistance Model (SWRM)}\label{sec:swrm}

    To describe the reistances on such a wafer module, a model is needed.
    For that the circuit in \autoref{fig:retmodel} can be used.
    This naive model will be referenced as SWRM (Simple Wafer Resistance Model) from here.

    \begin{figure}[H]
        \centering
        \includegraphics[width=.4\columnwidth]{./tikz/reticlepower.pdf}
        \caption{model of the to measure resistances and their currents, \(R_0\) describes the resistance of a connection between the PowerIt Output and up to the FET (depicted as switch), while \(R_1\) is a Resistance between FET and Reticles. The measurement is done between Output Terminals on the PowerIt and pins on a Analog readout board}%
        \label{fig:retmodel}
    \end{figure}

    The SWRM circuit consists of two fixed resistance values and their respective currents as approximations of a real world system.
    It assumes that the connection to the nearest voltage connector is equal (electrically) for all reticles.

    inside the code used for Regulation, \autoref{eq:fullreg} will be used to create a lookup table, while \autoref{eq:vout2} will be used at runtime, for which \autoref{eq:vdip} and~\ref{eq:voff} are needed.
    In the SWRM, the current flowing through \(R_1\) will be either 0 or a constant current \(I_\text{ret}\).
    And the current through \(R_0\) will change depending on the number of reticles that are powered \(n_\text{ret}\)

    \begin{align}
        I_{ges} = n_{ret} \cdot I_{ret}
    \end{align}

    Therefore the voltage drop \(V_\text{dip}\) as measured by a voltmeter (see \autoref{fig:retmodel}) can be described with \autoref{eq:vdip}

    \begin{align} \label{eq:vdip}
        V_\text{dip} =&\ V_{R_1} + V_{R_0} \nonumber\\
                =&\ R_1 \cdot I_\text{ret} + R_0 \cdot I_\text{ges} \nonumber\\
                =&\ I_\text{ret} \cdot \left( R_1 + R_0 \cdot n_\text{ret} \right)
    \end{align}


    \begin{align} \label{eq:voff}
        V_\text{dip} =& V_O - V_\text{off}\\
        \Rightarrow V_O =& I_\text{ret} \cdot \left( R_1 + R_0 \cdot n_\text{ret} \right) + V_\text{off}\label{eq:vout2}
    \end{align}
