\documentclass[border=5pt]{standalone} \usepackage{circuitikz} \begin{document} \newcommand{\wedgedown}{+(-0.15,0) -- +(0,-0.15) -- +(0.15,0)} \begin{circuitikz} \draw (0, 0) node[above]{$V_{+}$} to[short, *-]++ (1, 0) coordinate (sh1_left); \draw (0, -4) node[above]{$V_{-}$} to[short, *-]++ (1, 0) coordinate (sh2_left); % Sample & Hold \node [muxdemux, muxdemux def={Lh=4, NL=2, Rh=4, NR=2, NT=1, NB=0, w=6}, draw only top pins={}, draw only left pins={1}, draw only right pins={1}, anchor=lpin 1 ](sh1) at (sh1_left) {}; \node [above] at ($(sh1.btpin 1) + (-1, 0)$) {S\&H}; \draw (sh1.blpin 1) to[switch]++ (2, 0) coordinate (sh1_c) to (sh1.brpin 1); \draw (sh1_c) to[C]++ (0, -1) node[ground]{}; \node [muxdemux, muxdemux def={Lh=4, NL=2, Rh=4, NR=2, NT=1, NB=0, w=6}, draw only top pins={}, draw only left pins={1}, draw only right pins={1}, anchor=lpin 1 ](sh2) at (sh2_left) {}; \node [above] at ($(sh2.btpin 1) + (-1, 0)$) {S\&H}; \draw (sh2.blpin 1) to[switch]++ (2, 0) coordinate (sh2_c) to (sh2.brpin 1); \draw (sh2_c) to[C]++ (0, -1) node[ground]{}; % DAC - \node [muxdemux, muxdemux def={Lh=8, NL=2, Rh=8, NR=2, NT=1, NB=1, w=10, inset w=0.5, inset Lh=3.0, inset Rh=2.0}, draw only top pins={}, anchor=lpin 1 ] (dac2) at ($(sh2.rpin 1) + (1, 0)$) {}; \node [above] at ($(dac2.btpin 1) + (-2, 0)$) {DAC}; \coordinate (dac2_cap_j) at ($(dac2.btpin 1) + (0, -0.5)$); \coordinate (dac2_tj) at ($(dac2_cap_j)!0.5!(dac2.btpin 1)$); \coordinate (dac2_outset_left) at ($(dac2.brpin 1) + (-0.5, 0)$); \draw (dac2.blpin 1) to (dac2.blpin 1 -| dac2.inset right) |- (dac2_tj) -| (dac2.brpin 1 -| dac2_outset_left) to (dac2.brpin 1); \draw (dac2_tj) to (dac2_cap_j); \draw (dac2_cap_j) to++ (-2, 0) to[C]++ (0, -2) node[spdt, rotate=-90, anchor=in](d1){} node[right]{$D_1$}; \coordinate (dac2_left_cap) at (d1.out 1); \draw (dac2_cap_j) ++ (-1, 0) to[C]++ (0, -2) node[spdt, rotate=-90, anchor=in](d2){} node[right]{$D_2$}; \draw (dac2_cap_j) ++ (0, 0) to[C]++ (0, -2) node[spdt, rotate=-90, anchor=in](d3){} node[right]{$D_3$}; \draw (dac2_cap_j) ++ (1, 0) ++ (0, -1) node{\ldots}; \draw (dac2_cap_j) to++ (2, 0) to[C]++ (0, -2) node[spdt, rotate=-90, anchor=in](d12){} node[right]{$D_{12}$}; \coordinate (dac2_right_cap) at (d12.out 1); \coordinate (dac2_bj) at ($(d1.out 1 -| dac2.bbpin 1)!0.5!(dac2.bbpin 1)$); \draw (d1.out 1 |- dac2_bj) to (dac2_bj) to (d12.out 1 |- dac2_bj); \draw (d1.out 1) to (d1.out 1 |- dac2_bj); \draw (d2.out 1) to (d2.out 1 |- dac2_bj); \draw (d3.out 1) to (d3.out 1 |- dac2_bj); \draw (d12.out 1) to (d12.out 1 |- dac2_bj); \draw (d1.out 2) to (d12.out 2) |- (dac2.brpin 2); \node [ground] at (dac2.rpin 2){}; \coordinate (dac2_sw_j) at ($(dac2_left_cap)!0.5!(dac2_right_cap)$); \draw (dac2_bj) to (dac2.bbpin 1); \node [below] at (dac2.bpin 1){$V_{ref}$}; % DAC + \node [muxdemux, muxdemux def={Lh=8, NL=2, Rh=8, NR=2, NT=1, NB=1, w=10, inset w=0.5, inset Lh=3.0, inset Rh=2.0}, draw only bottom pins={}, anchor=lpin 2 ] (dac1) at ($(sh1.rpin 1) + (1, 0)$) {}; \node [above] at ($(dac1.btpin 1) + (-2, 0)$) {DAC}; \coordinate (dac1_cap_j) at ($(dac1.bbpin 1) + (0, 0.5)$); \coordinate (dac1_bj) at ($(dac1_cap_j)!0.5!(dac1.bbpin 1)$); \coordinate (dac1_outset_left) at ($(dac1.brpin 2) + (-0.5, 0)$); \draw (dac1.blpin 2) to (dac1.blpin 2 -| dac1.inset right) |- (dac1_bj) -| (dac1.brpin 2 -| dac1_outset_left) to (dac1.brpin 2); \draw (dac1_bj) to (dac1_cap_j); \draw (dac1_cap_j) to++ (-2, 0) to[C]++ (0, 2) node[spdt, rotate=90, anchor=in](d1){} node[right]{$D_1$}; \coordinate (dac_left_cap) at (d1.out 1); \draw (dac1_cap_j) ++ (-1, 0) to[C]++ (0, 2) node[spdt, rotate=90, anchor=in](d2){} node[right]{$D_2$}; \draw (dac1_cap_j) ++ (0, 0) to[C]++ (0, 2) node[spdt, rotate=90, anchor=in](d3){} node[right]{$D_3$}; \draw (dac1_cap_j) ++ (1, 0) ++ (0, 1) node{\ldots}; \draw (dac1_cap_j) to++ (2, 0) to[C]++ (0, 2) node[spdt, rotate=90, anchor=in](d12){} node[right]{$D_{12}$}; \coordinate (dac1_right_cap) at (d12.out 1); \coordinate (dac1_tj) at ($(d1.out 1 -| dac1.btpin 1)!0.5!(dac1.btpin 1)$); \draw (d1.out 1 |- dac1_tj) to (dac1_tj) to (d12.out 1 |- dac1_tj); \draw (dac1_tj) to (dac1.btpin 1); \node [above] at (dac1.tpin 1) {$V_{ref}$}; \draw (d1.out 1) to (d1.out 1 |- dac1_tj); \draw (d2.out 1) to (d2.out 1 |- dac1_tj); \draw (d3.out 1) to (d3.out 1 |- dac1_tj); \draw (d12.out 1) to (d12.out 1 |- dac1_tj); \draw (d1.out 2) to (d12.out 2) |- (dac1.brpin 1); \node [ground] at (dac1.rpin 1){}; % Comparator \node [op amp, yscale=-1, scale=1.5](comp) at ($(dac1.rpin 2)!0.5!(dac2.rpin 1) + (2, 0)$) {}; \draw (dac1.rpin 2) |- (comp.+); \draw (dac2.rpin 1) |- (comp.-); % SAR \node [muxdemux, muxdemux def={Lh=8, NL=1, Rh=8, NR=1, NT=2, NB=0}, anchor=lpin 1 ] (sar) at ($(comp.out) + (0.5, 0)$) {SAR}; \draw (sar.btpin 1) \wedgedown; \node [above] at (sar.tpin 1) {CLK}; \node [above] at (sar.tpin 2) {RST}; \coordinate (sar_j) at ($(sar.rpin 1) + (0.5, 0)$); \draw (sar.rpin 1) to (sar_j); \draw (sh1.rpin 1) to (dac1.lpin 2); \draw (sh2.rpin 1) to (dac2.lpin 1); \draw (dac2.lpin 2) to++ (0, -2) coordinate (temp) to (temp -| sar_j) |- (sar_j); \draw (dac1.lpin 1) to++ (0, 2) coordinate (temp) to (temp -| sar_j) |- (sar_j); \draw (comp.out) to (sar.lpin 1); \draw (sar_j) to[multiwire=12, -*]++ (2, 0) node[above]{$V_{out}$}; \end{circuitikz} \end{document}