Wilson Current Mirror


Wilson Current Mirror

Rendered by QuickLaTeX.com

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
\begin{tikzpicture}
%--------start graphics code --------
%Grid for intial drawing. 
%Comment next three lines once typesetting finished 
\def\hgt{6};
\draw[step=0.5,very thin, black!20] (-0.5,-0.5) grid (7,\hgt);
\foreach \x in {0,...,7} {\node [anchor=north] at (\x,-0.5) {\x};}
\foreach \y in {0,...,\hgt} {\node [anchor=east] at (-0.5,\y) {\y};}
 
%%%%%%%%%% Wilson current mirror %%%%%%%%%%
\path (0,0) coordinate (ref_node);
\path (ref_node) ++(0,\hgt) coordinate (ref_nodeA);
%Instantiation of components
\draw (ref_node) node[nmos,anchor=source,xscale=-1](M0){} 
      ++(3,0) node[nmos,anchor=source,xscale=1](M1){}  
      ++(0,2) node[nmos,anchor=source,xscale=1](M3){}  
      ++(-3,0) node[nmos,anchor=source,xscale=-1](M2){} ; 
\draw (ref_nodeA) to [I,l=$I_{ref}$] (M2.drain);
%Inter-connections
\draw (M0.gate) -- (M1.gate) node[circ]{} |- (M1.drain) node[circ] 
      -- (M3.source);
\draw (M3.gate) -- (M2.gate) node[circ]{} |- (M2.drain) node[circ]{};
\draw (M2.source) -- (M0.drain);
\draw (M3.drain)++(0,1) 
       --  (M3.drain)node[currarrow,rotate=270] node[right]{$I_o$};
 
% Numbering the components
\draw (M0.base) node[left] {$M_0$}
      (M1.base) node[right]{$M_1$}
      (M2.base) node[left] {$M_2$}
      (M3.base) node[right]{$M_3$};
%Ground and Vdd lines
\draw (ref_node) node[ground]{};
\draw (M1.source) node[ground]{};
%--------end graphics code ----------
\end{tikzpicture}