Created
September 16, 2015 10:48
-
-
Save Wesitos/fe49e1a94fdfdcd2789c to your computer and use it in GitHub Desktop.
Multiplexor de 3 a 8 con circuitikz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
\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