4

I have drawn the following circuit, but how could the inputs of a Logic Gate be inverted? (As in the scanned picture, but it does not matter which gate exactly, just generally)

The circuit

The negated Inputs

\documentclass[a4paper,12pt]{article}

\usepackage{tikz} %vectorgraphics
\usetikzlibrary{shapes,arrows,shadows,
decorations.pathreplacing,backgrounds,calc} 
%graph/flowchart
\usepackage[siunitx]{circuitikz}

\begin{document}
\begin{circuitikz} \draw

(0,0) node[nand port] (nand1) {}
(3,0) node[nand port] (nand2) {}
(5,0) node[nand port] (nand3) {}

(3,2) node[nand port] (nand4) {}
(5,2) node[nand port] (nand5) {}

(3,4) node[nand port] (nand6) {}
(5,4) node[nand port] (nand7) {}

(0,4) node[nand port] (nand8) {}

(nand1.out) |- (nand2.in 2)
(nand2.out) -| node[circ,midway]{} (nand3.in 1)
(nand2.out) -| (nand3.in 2)

(nand8.out) |- (nand6.in 1)
(nand6.out) -| node[circ,midway]{} (nand7.in 2)
(nand6.out) -| (nand7.in 1)

(nand4.out) -| node[circ,midway]{} (nand5.in 2)
(nand4.out) -| (nand5.in 1)

(-2,1) node(B1)[anchor=east] {B}
(-2,1) -| node[circ,midway]{} (nand1.in 1) 
to[short,*-] (nand1.in 2)
(-2,1) -| (nand4.in 2)
(1,1) node[circ]{} |- (nand6.in 2)


(-2,3) node[anchor=east] {A}
(-2,3) -| node[circ,midway]{} (nand8.in 2) 
to[short,*-] (nand8.in 1)
(-2,3) -| (nand4.in 1)
(0.5,3) node[circ]{} |- (nand2.in 1)

(6,1.97) node[anchor=east] {O2}
(6,0.0) node[anchor=east] {O3}
(6,4) node[anchor=east] {O1}

;\end{circuitikz}

\end{document}
  • 2
    Nice question. I'll look over it tomorrow (it's nighttime here), but I don't think it could be easily done with the current implementation. But seems a valuable enhancement proposal, anyway. – Rmano Mar 13 at 22:41
  • I am considering it as a enhancement proposal; if you want you can open an issue at github.com/circuitikz/circuitikz/issues – Rmano Mar 14 at 7:24
  • 1
    With current circuitikz you cannot achieve this. However, you can use tikz's stock ciruit option to achieve it. Nevertheless, a very useful question though. – Raaja Mar 14 at 11:51
3

Using the fresh new circuitikzgit uploaded minutes ago, you can now do this:

\documentclass[border=10pt]{standalone}
\usepackage[siunitx, RPvoltages]{circuitikzgit}
\begin{document}
\begin{circuitikz}
    \draw (0,3) node[american and port] (A)  {P1};
    \node at (A.bin 1) [ocirc, left]{} ;
    \begin{scope}
        \ctikzset{tripoles/american or port/height=1.6}
        \draw (A.out) -- ++(0.5,0) node[american or port,
        number inputs=5, anchor=in 1] (B)  {P2};
        \node at (B.bin 3) [ocirc, left]{} ;
    \end{scope}
    \draw (0,1.5) node[american or port] (C)  {P3};
    \node at (C.bin 2) [ocirc, left]{} ;
    \draw (C.out) |- (B.in 2);
\end{circuitikz}
\end{document}

output from he above snippet

See: https://github.com/circuitikz/circuitikz/issues/166 and https://github.com/circuitikz/circuitikz/pull/168

  • when will it be available in CTAN? – Raaja Mar 18 at 7:28
  • @Raaja I am completing a couple of things more (basically, manual overhaul and fillable shapes) and then I'll do a release. Three to five weeks, if RL doesn't create problems... ;-) – Rmano Mar 18 at 8:23
  • Good to know! Because, it seems many are interested in creating big-logic circuits with ciruittikz (see: tex.stackexchange.com/questions/480034/…). And, I think this is a really nice contribution indeed :). – Raaja Mar 18 at 8:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.