Skip to content

Instantly share code, notes, and snippets.

@Wesitos
Created September 16, 2015 10:48
Show Gist options
  • Save Wesitos/fe49e1a94fdfdcd2789c to your computer and use it in GitHub Desktop.
Save Wesitos/fe49e1a94fdfdcd2789c to your computer and use it in GitHub Desktop.
Multiplexor de 3 a 8 con circuitikz
\centering \ctikzset{bipoles/not port/height=.6}%
\ctikzset{bipoles/not port/width=.8}%
\begin{circuitikz}
\draw
% Entradas
(0,17) node[ocirc] (E0) {}%
(0,15) node[ocirc] (E1) {}%
(0,13) node[ocirc] (E2) {}%
(0,11) node[ocirc] (E3) {}%
(0,9) node[ocirc] (E4) {}%
(0,7) node[ocirc] (E5) {}%
(0,5) node[ocirc] (E6) {}%
(0,3) node[ocirc] (E7) {}%
% Selectores
(0.5,0) node[ocirc] (S0) {}%
(3.5,0) node[ocirc] (S1) {}%
(6.5,0) node[ocirc] (S2) {}%
% Nots
($(S0) + (0.6,1)$) node[not port] (notS0) {}%
($(S1) + (0.6,1)$) node[not port] (notS1) {}%
($(S2) + (0.6,1)$) node[not port] (notS2) {}%
% Etiquetas de nodos
(E0) node[anchor=east] () {E0}%
(E1) node[anchor=east] () {E1}%
(E2) node[anchor=east] () {E2}%
(E3) node[anchor=east] () {E3}%
(E4) node[anchor=east] () {E4}%
(E5) node[anchor=east] () {E5}%
(E6) node[anchor=east] () {E6}%
(E7) node[anchor=east] () {E7}%
(S0) node[anchor=north] () {S0}%
(S1) node[anchor=north] () {S1}%
(S2) node[anchor=north] () {S2}%
% ANDs infinitos (primera columna)
($(E0)+(3.3,-0.28)$) node[and port] (andS0E0) {}%
($(E1)+(3.3,-0.28)$) node[and port] (andS0E1) {}%
($(E2)+(3.3,-0.28)$) node[and port] (andS0E2) {}%
($(E3)+(3.3,-0.28)$) node[and port] (andS0E3) {}%
($(E4)+(3.3,-0.28)$) node[and port] (andS0E4) {}%
($(E5)+(3.3,-0.28)$) node[and port] (andS0E5) {}%
($(E6)+(3.3,-0.28)$) node[and port] (andS0E6) {}%
($(E7)+(3.3,-0.28)$) node[and port] (andS0E7) {}%
% Linea del primer selector
% S0
(S0) -- (S0 |- andS0E1.in 2) (S0|-andS0E1.in 2) to[short,*-]
(andS0E1.in 2)%
(S0|-andS0E3.in 2) to[short,*-] (andS0E3.in 2)%
(S0|-andS0E5.in 2) to[short,*-] (andS0E5.in 2)%
(S0|-andS0E7.in 2) to[short,*-] (andS0E7.in 2)%
% -S0
(S0 |- notS0.in) to[short, *-] (notS0.in)%
(notS0.out) |- (notS0.out |- andS0E0.in 2)%
(notS0.out |- andS0E0.in 2) to[short, *-] (andS0E0.in 2)%
(notS0.out |- andS0E2.in 2) to[short, *-] (andS0E2.in 2)%
(notS0.out |- andS0E4.in 2) to[short, *-] (andS0E4.in 2)%
(notS0.out |- andS0E6.in 2) to[short, *-] (andS0E6.in 2)%
% Conexiones de las entradas a la primera columna de ands
(E0) -- (andS0E0.in 1)%
(E1) -- (andS0E1.in 1)%
(E2) -- (andS0E2.in 1)%
(E3) -- (andS0E3.in 1)%
(E4) -- (andS0E4.in 1)%
(E5) -- (andS0E5.in 1)%
(E6) -- (andS0E6.in 1)%
(E7) -- (andS0E7.in 1)%
% ANDs infinitos, segunda columna
($(andS0E0)+(3,-0.28)$) node[and port] (andS1E0) {}%
($(andS0E1)+(3,-0.28)$) node[and port] (andS1E1) {}%
($(andS0E2)+(3,-0.28)$) node[and port] (andS1E2) {}%
($(andS0E3)+(3,-0.28)$) node[and port] (andS1E3) {}%
($(andS0E4)+(3,-0.28)$) node[and port] (andS1E4) {}%
($(andS0E5)+(3,-0.28)$) node[and port] (andS1E5) {}%
($(andS0E6)+(3,-0.28)$) node[and port] (andS1E6) {}%
($(andS0E7)+(3,-0.28)$) node[and port] (andS1E7) {}%
% Conexiones con las compuertas de la primera columna
(andS0E0.out) -- (andS1E0.in 1)%
(andS0E1.out) -- (andS1E1.in 1)%
(andS0E2.out) -- (andS1E2.in 1)%
(andS0E3.out) -- (andS1E3.in 1)%
(andS0E4.out) -- (andS1E4.in 1)%
(andS0E5.out) -- (andS1E5.in 1)%
(andS0E6.out) -- (andS1E6.in 1)%
(andS0E7.out) -- (andS1E7.in 1)%
% Linea del segundo selector
% S1
(S1) -- (S1 |- andS1E2.in 2) (S1|-andS1E2.in 2) to[short,*-]
(andS1E2.in 2)%
(S1|-andS1E3.in 2) to[short,*-] (andS1E3.in 2)%
(S1|-andS1E6.in 2) to[short,*-] (andS1E6.in 2)%
(S1|-andS1E7.in 2) to[short,*-] (andS1E7.in 2)%
% -S1
(S1 |- notS1.in) to[short, *-] (notS1.in)%
(notS1.out) |- (notS1.out |- andS1E0.in 2)%
(notS1.out |- andS1E0.in 2) to[short, *-] (andS1E0.in 2)%
(notS1.out |- andS1E1.in 2) to[short, *-] (andS1E1.in 2)%
(notS1.out |- andS1E4.in 2) to[short, *-] (andS1E4.in 2)%
(notS1.out |- andS1E5.in 2) to[short, *-] (andS1E5.in 2)%
% ANDs infinitos, tercera columna
($(andS1E0)+(3,-0.28)$) node[and port] (andS2E0) {}%
($(andS1E1)+(3,-0.28)$) node[and port] (andS2E1) {}%
($(andS1E2)+(3,-0.28)$) node[and port] (andS2E2) {}%
($(andS1E3)+(3,-0.28)$) node[and port] (andS2E3) {}%
($(andS1E4)+(3,-0.28)$) node[and port] (andS2E4) {}%
($(andS1E5)+(3,-0.28)$) node[and port] (andS2E5) {}%
($(andS1E6)+(3,-0.28)$) node[and port] (andS2E6) {}%
($(andS1E7)+(3,-0.28)$) node[and port] (andS2E7) {}%
% Linea del tercer selector
% S2
(S2) -- (S2 |- andS2E4.in 2) (S2|-andS2E4.in 2) to[short,*-]
(andS2E4.in 2)%
(S2|-andS2E5.in 2) to[short,*-] (andS2E5.in 2)%
(S2|-andS2E6.in 2) to[short,*-] (andS2E6.in 2)%
(S2|-andS2E7.in 2) to[short,*-] (andS2E7.in 2)%
% -S2
(S2 |- notS2.in) to[short, *-] (notS2.in)%
(notS2.out) |- (notS2.out |- andS2E0.in 2)%
(notS2.out |- andS2E0.in 2) to[short, *-] (andS2E0.in 2)%
(notS2.out |- andS2E1.in 2) to[short, *-] (andS2E1.in 2)%
(notS2.out |- andS2E2.in 2) to[short, *-] (andS2E2.in 2)%
(notS2.out |- andS2E3.in 2) to[short, *-] (andS2E3.in 2)%
% Conexiones con las compuertas de la segunda columna
(andS1E0.out) -- (andS2E0.in 1)%
(andS1E1.out) -- (andS2E1.in 1)%
(andS1E2.out) -- (andS2E2.in 1)%
(andS1E3.out) -- (andS2E3.in 1)%
(andS1E4.out) -- (andS2E4.in 1)%
(andS1E5.out) -- (andS2E5.in 1)%
(andS1E6.out) -- (andS2E6.in 1)%
(andS1E7.out) -- (andS2E7.in 1)%
% ORs infinitos
% Primera columna
($.5*(andS2E0)+.5*(andS2E1)+(1.5,0)$) node[or port] (orC0F0) {}%
($.5*(andS2E2)+.5*(andS2E3)+(1.5,0)$) node[or port] (orC0F1) {}%
($.5*(andS2E4)+.5*(andS2E5)+(1.5,0)$) node[or port] (orC0F2) {}%
($.5*(andS2E6)+.5*(andS2E7)+(1.5,0)$) node[or port] (orC0F3) {}%
(andS2E0.out) |- (orC0F0.in 1)%
(andS2E1.out) |- (orC0F0.in 2)%
(andS2E2.out) |- (orC0F1.in 1)%
(andS2E3.out) |- (orC0F1.in 2)%
(andS2E4.out) |- (orC0F2.in 1)%
(andS2E5.out) |- (orC0F2.in 2)%
(andS2E6.out) |- (orC0F3.in 1)%
(andS2E7.out) |- (orC0F3.in 2)%
% Segunda Columna
($.5*(orC0F0)+.5*(orC0F1)+(1.5,0)$) node[or port] (orC1F0) {}%
($.5*(orC0F2)+.5*(orC0F3)+(1.5,0)$) node[or port] (orC1F1) {}%
(orC0F0.out) |- (orC1F0.in 1)%
(orC0F1.out) |- (orC1F0.in 2)%
(orC0F2.out) |- (orC1F1.in 1)%
(orC0F3.out) |- (orC1F1.in 2)%
% tercera columna
($.5*(orC1F0)+.5*(orC1F1)+(1.5,0)$) node[or port] (orC2F0) {}%
(orC1F0.out) |- (orC2F0.in 1)%
(orC1F1.out) |- (orC2F0.in 2)%
% La salida (por fin)
(orC2F0.out) ++(.5,0) node[ocirc] (Z) {}%
(orC2F0.out) -- (Z)%
(Z) node[anchor=west] () {Z}%
;
\end{circuitikz}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment