![使用 Tikz 绘制复杂的逻辑电路 - 双输入缓冲门?](https://linux22.com/image/259143/%E4%BD%BF%E7%94%A8%20Tikz%20%E7%BB%98%E5%88%B6%E5%A4%8D%E6%9D%82%E7%9A%84%E9%80%BB%E8%BE%91%E7%94%B5%E8%B7%AF%20-%20%E5%8F%8C%E8%BE%93%E5%85%A5%E7%BC%93%E5%86%B2%E9%97%A8%EF%BC%9F.png)
我正在尝试使用 Tikz 和 Circuit Library 绘制类似的图像,到目前为止我只能用两个标记输入(IBUFGDS 和 IBUFDS)绘制缓冲门,标准库只有一个输入的门......
有人知道我该如何开始吗?
不需要完整的绘图,我只是需要一只手:D
到目前为止我想出了类似的东西,但这只是一个开始:P
\documentclass{article}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz} \draw
(0,0) node[op amp] (opamp) {IBUFDS}
(opamp.+) node[left] {$data\ ser\ p$}
(opamp.-) node[left] {$data\ ser\ n$}
(opamp.out) node[right] {$data\ ser$}
(0,-5) node[op amp] (opamp) {IBUFGDS}
(opamp.+) node[left] {$clk\ in\ p$}
(opamp.-) node[left] {$clk\ in\ n$}
(opamp.out) node[right] {$clk\ in$}
;\end{circuitikz}
\end{document}
答案1
操作中的标签存在一个问题,即标签中心点不在正确位置。如果使用\bullet
as 标签,很容易发现这一点。它也不是节点的“中心”,如在 (0,0) 处绘制一个红点所示:
\begin{circuitikz}
\fill[red] (0,0) circle(2pt);
\draw (0,0) node[op amp] (opamp) {$\bullet$}
(opamp.+) node[left] {$data\ ser\ p$}
(opamp.-) node[left] {$data\ ser\ n$}
(opamp.out) node[right] {$data\ ser$}
;\end{circuitikz}
因此,最佳选择是放置一个包含标签的新节点,相对于操作的中心(上图中的红点)定位。操作的左侧距离红点 10 毫米,因此您可以将标签放在 处(-9mm,0)
。在所有操作中使用相同的量可确保所有内部标签都左对齐。以下代码实现了这个想法:
\documentclass{article}
\usepackage{circuitikz}
\begin{document}
\tikzset{opamp label/.style={xshift=-9mm, font=\footnotesize,right}}
\begin{circuitikz}
\draw
(0,0) node[op amp] (opamp) {}
(opamp.+) node[left] {$data\ ser\ p$}
(opamp.-) node[left] {$data\ ser\ n$}
(opamp.out) node[right] {$data\ ser$}
(opamp) node[opamp label] {IBUFDS}
(0,-3) node[op amp] (opamp) {}
(opamp.+) node[left] {$clk\ in\ p$}
(opamp.-) node[left] {$clk\ in\ n$}
(opamp.out) node[right] {$clk\ in$}
(opamp) node[opamp label] {IBUFGDS}
;
\end{circuitikz}
\end{document}
导致: