Помогите в этой схеме транзисторного уровня

Помогите в этой схеме транзисторного уровня

Я работаю по этой схеме:

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

Вот что я сделал:

\documentclass[11pt]{article}

\usepackage[english]{babel}
\usepackage{circuitikz}
\usepackage{tikz}
\begin{document}

\begin{center}
\begin{circuitikz}[american voltages, european resistors]
\ctikzset { label/align = straight }
\draw (0,0) 
node[nmos](nmosA){}node[left=10mm] {$\overline{A}$} (2,0)
node[nmos](nmosB){}node[left=10mm] {B}
(nmosA.D) to (nmosB.D)
to [short,*-o] ++(1,0) {} node[right=2mm] {Y}
(1,-1.54) node[nmos](nmosC){}node[left=10mm] {C}
(nmosA.S) to (nmosC.D) to (nmosB.S);
%(nmosC.S) to node[ground]{};
\end{circuitikz}
\end{center}
\end{document}

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

Я хотел бы узнать, как подключить землю (способ, который я пробовал, неправильный), как поместить круги в открытые клеммы транзисторов и, может быть, как улучшить рисунок, поскольку я поместил какие-то странные координаты (1,-1.54) node[nmos](nmosC){}node[left=10mm]. Если у кого-то есть похожий пример, было бы очень полезно. С уважением.

решение1

Вот как я бы это сделал. Вместо того, чтобы вручную настраивать положение меток, используйте якоря транзисторов и расположите узлы меток слева или справа от них. toПути, ведущие в никуда ( ++(0,0)), можно использовать для добавления заполненных или открытых меток на якорях транзисторов.

Я также избежал ручного позиционирования транзистора «C», используя calcбиблиотеку для вычисления средней точки и привязки конечного транзистора к его стоку.

\documentclass[tikz]{standalone}
\usepackage{circuitikz}
\usetikzlibrary{calc}
\ctikzset { label/align = straight }

\begin{document}
\begin{circuitikz}[american voltages, european resistors]
\draw (0,0) 
  node[nmos] (nmosA) {}
  (nmosA.G) to[short,-o] ++(0,0) node[left] {$\overline{A}$} (2,0)
  node[nmos] (nmosB) {}
  (nmosB.G) to[short,-o] ++(0,0) node[left] {B}
  (nmosA.D) to (nmosB.D)
  to [short,*-o] ++(1,0) {} node[right] {Y}
  (nmosA.S) to[short] (nmosB.S)
  ($(nmosA.S)!0.5!(nmosB.S)$) to[short,-*] ++(0,0) node[nmos,anchor=D] (nmosC) {}
  (nmosC.G) to[short,-o] ++(0,0) node[left] {C}
  (nmosC.S) node[ground] {};
\end{circuitikz}
\end{document}

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

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