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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
| \begin{tikzpicture}
%--------start graphics code --------
%Grid for intial drawing.
%Comment next three lines once typesetting finished
\def\hgt{8.5};
\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};}
%%%%%%%%%% current mirror %%%%%%%%%%
\path (0,0) coordinate (ref_node1);
\path (ref_node1) ++(0,\hgt) coordinate (ref_node1A);
%Instantiation of components
\draw (ref_node1) node[nmos,anchor=source,xscale=-1] (MI0){};
\draw (ref_node1A) to [I] (MI0.drain);
%Inter-connections
\draw (MI0.drain) node[circ] -| (MI0.gate);
% Numbering the components
\draw (MI0.base) node[left]{\(M_{I0}\)};
%Ground and Vdd lines
\draw (MI0.source) node[ground]{}; % node[circ] -- (MI1.source);
%%%%%%%%%% telescopic stage %%%%%%%%%%
\path (4,0) coordinate (ref_node);
\path (ref_node) ++(0,\hgt) coordinate (ref_nodeA);
%Component instantiation
\draw (ref_node) node[nmos,anchor=source] (M0){}
(ref_node) ++(-1.5,2) node[nmos, anchor=source] (M1){}
(ref_node) ++(1.5,2) node[nmos, anchor=source, xscale=-1] (M2){}
(ref_node) ++(-1.5,3.5) node[nmos, anchor=source] (M7){}
(ref_node) ++(1.5,3.5) node[nmos, anchor=source] (M8){}
(ref_nodeA) ++(-1.5,-1.5)node[pmos, anchor=source] (M5){}
(ref_nodeA) ++(1.5,-1.5) node[pmos, anchor=source] (M6){}
(ref_nodeA) ++(-1.5,0)node[pmos,anchor=source,xscale=1] (M3){}
(ref_nodeA) ++(1.5,0) node[pmos, anchor=source] (M4){} ;
%Inter-connections
\draw (M1.drain) -- (M7.source)
(M2.drain) -- (M8.source)
(M3.drain) -- (M5.source)
(M4.drain) -- (M6.source)
(M5.drain) -- (M7.drain)
(M6.drain) -- (M8.drain)
(M3.gate) -- (M4.gate)
(M5.gate) -- (M6.gate)
(M7.gate) -- (M8.gate);
%node[circ] -| (M3.gate) node[circ] -- (M4.gate);
%\draw (M4.drain) -- (M2.drain);
\draw (M1.source) |- (M0.drain) node[circ] -| (M2.source);
% Numbering the components
\draw
(M0.base) node[right]{$M_0$}
(M1.base) node[right]{$M_1$}
(M2.base) node[left] {$M_2$}
(M3.base) node[left] {$M_3$}
(M4.base) node[right]{$M_4$};
\draw
(M1.gate) node[ocirc] node[left] {$v_{ip}$}
(M2.gate) node[ocirc] node[right]{$v_{im}$}
(M7.drain) node[circ] -- ++(0.5,0) node[ocirc] (vom){}
(M8.drain) node[circ] -- ++(-0.5,0) node[ocirc] (vop){};
\draw (vop) to [open,v=$v_{out}$] (vom);
%Ground and Vdd lines
\draw (M0.source) node[ground]{};
\draw (M3.source) -- ++(1.5,0) node[anchor=south] {$V_{DD}$}
-- (M4.source);
%%%%%%%%%%% INTER-CONNECTION BETWEEN BLOCKS %%%%%%%%%%%
\draw (M0.gate) -- (MI0.gate) node[circ];
\draw (ref_node1A) |- (M3.source) node[circ];
%--------end graphics code ----------
\end{tikzpicture} |
\begin{tikzpicture}
%--------start graphics code --------
%Grid for intial drawing.
%Comment next three lines once typesetting finished
\def\hgt{8.5};
\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};}
%%%%%%%%%% current mirror %%%%%%%%%%
\path (0,0) coordinate (ref_node1);
\path (ref_node1) ++(0,\hgt) coordinate (ref_node1A);
%Instantiation of components
\draw (ref_node1) node[nmos,anchor=source,xscale=-1] (MI0){};
\draw (ref_node1A) to [I] (MI0.drain);
%Inter-connections
\draw (MI0.drain) node[circ] -| (MI0.gate);
% Numbering the components
\draw (MI0.base) node[left]{\(M_{I0}\)};
%Ground and Vdd lines
\draw (MI0.source) node[ground]{}; % node[circ] -- (MI1.source);
%%%%%%%%%% telescopic stage %%%%%%%%%%
\path (4,0) coordinate (ref_node);
\path (ref_node) ++(0,\hgt) coordinate (ref_nodeA);
%Component instantiation
\draw (ref_node) node[nmos,anchor=source] (M0){}
(ref_node) ++(-1.5,2) node[nmos, anchor=source] (M1){}
(ref_node) ++(1.5,2) node[nmos, anchor=source, xscale=-1] (M2){}
(ref_node) ++(-1.5,3.5) node[nmos, anchor=source] (M7){}
(ref_node) ++(1.5,3.5) node[nmos, anchor=source] (M8){}
(ref_nodeA) ++(-1.5,-1.5)node[pmos, anchor=source] (M5){}
(ref_nodeA) ++(1.5,-1.5) node[pmos, anchor=source] (M6){}
(ref_nodeA) ++(-1.5,0)node[pmos,anchor=source,xscale=1] (M3){}
(ref_nodeA) ++(1.5,0) node[pmos, anchor=source] (M4){} ;
%Inter-connections
\draw (M1.drain) -- (M7.source)
(M2.drain) -- (M8.source)
(M3.drain) -- (M5.source)
(M4.drain) -- (M6.source)
(M5.drain) -- (M7.drain)
(M6.drain) -- (M8.drain)
(M3.gate) -- (M4.gate)
(M5.gate) -- (M6.gate)
(M7.gate) -- (M8.gate);
%node[circ] -| (M3.gate) node[circ] -- (M4.gate);
%\draw (M4.drain) -- (M2.drain);
\draw (M1.source) |- (M0.drain) node[circ] -| (M2.source);
% Numbering the components
\draw
(M0.base) node[right]{$M_0$}
(M1.base) node[right]{$M_1$}
(M2.base) node[left] {$M_2$}
(M3.base) node[left] {$M_3$}
(M4.base) node[right]{$M_4$};
\draw
(M1.gate) node[ocirc] node[left] {$v_{ip}$}
(M2.gate) node[ocirc] node[right]{$v_{im}$}
(M7.drain) node[circ] -- ++(0.5,0) node[ocirc] (vom){}
(M8.drain) node[circ] -- ++(-0.5,0) node[ocirc] (vop){};
\draw (vop) to [open,v=$v_{out}$] (vom);
%Ground and Vdd lines
\draw (M0.source) node[ground]{};
\draw (M3.source) -- ++(1.5,0) node[anchor=south] {$V_{DD}$}
-- (M4.source);
%%%%%%%%%%% INTER-CONNECTION BETWEEN BLOCKS %%%%%%%%%%%
\draw (M0.gate) -- (MI0.gate) node[circ];
\draw (ref_node1A) |- (M3.source) node[circ];
%--------end graphics code ----------
\end{tikzpicture}
|