Как нарисовать большую логическую схему со множеством входов в латексе

Как нарисовать большую логическую схему со множеством входов в латексе

как мы можем нарисовать логические схемы со 128 входами, не показывая все входы? Это значит, что мы можем нарисовать логическую схему, показывая 3 или 4 бита в качестве входов, но как мы можем нарисовать 128 входов с маркировкой 1 или 2 входов и так далее до 127 (без маркировки), и 128-й бит должен быть помечен.

решение1

Прежде всего, добро пожаловать в TeX.SE, в следующий раз, пожалуйста, покажите нам, что вы уже пробовали. Мы, как правило, не предпочитаем do-it-for-meкласс вопросов.

Начнем свой ответ с того, что вы можете легко достичь этого с помощью circuitsи positioningв рамках tikzlibrary.

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{circuits.logic.US,circuits.logic.IEC, positioning}
\begin{document}
\begin{tikzpicture}[minimum height=0.75cm] 
\node[and gate US, draw,logic gate inputs=nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] (A) {}; 
\foreach \a in {1,...,128}
\draw (A.input \a) -- ([xshift=-2cm]A.input \a); 
\draw (A.output) -- ([xshift=2cm]A.output);
% naming the nodes
\node [left = 2.1cm of A.input 1] (n1) {1};
\node [left = 2.1cm of A.input 2] (n2) {2};
\node [left = 2.1cm of A.input 126] (n3) {126};
\end{tikzpicture}   

\end{document}

получить:

введите описание изображения здесь

Однако, ciruittikzстоит обратить внимание на:

Можно ли реализовать несколько входных логических портов с помощью Circuitikz?

Как инвертировать вход логического вентиля в Circuitikz

решение2

Я думаю, что с точки зрения читаемости, 128-портовый что угодно — это слишком. Если вы используете новую (не выпущенную) версиюcircuitikz (вы можете найтиснимок на странице github) вы ограничены (все еще нечитаемыми, на мой взгляд) 16 пинами.

Я бы сделал что-то вроде следующего и текстово обозначил провода, идущие к большому или какому-то символу... вот так

\documentclass[border=10pt]{standalone}
\usepackage[siunitx, RPvoltages]{circuitikzgit}
\begin{document}
\begin{circuitikz}[
    ]
    \ctikzset{logic ports origin=center}
    \draw(0,0) node[dipchip, num pins=14, no topmark, 
    external pins width=0, hide numbers](A){};
    \foreach \i/\l in {1/1, 2/2, 7/128} 
    \draw (A.bpin \i) node[right, font=\tiny]{\l} -- ++(-0.5,0) coordinate(my pin \i);
    \path (A.bpin 4) node[left]{$\vdots$};
    \draw (A.bpin 11) node[above right, font=\tiny]{out} -- ++(0.5,0);
    \path (A.center) node [american and port]{IC1};
    \draw (my pin 1) -- ++(-0.5,0) node[american xnor port, anchor=out]{}; 
    \draw (-4,-1) node[american xnor port](B){};
    \draw [->] (B.out) -- ++(0.5,0) node[right, align=left]{to IC1\\ pin 36};
\end{circuitikz}
\end{document}

пример

Связанный контент