Circuitikz 패키지를 사용하여 논리 게이트 다이어그램 그리기

Circuitikz 패키지를 사용하여 논리 게이트 다이어그램 그리기

내 목표는 다음과 같은 다이어그램을 만드는 것입니다. 결과

나는 Circuitikz-package를 사용하여 이 작업을 수행하고 싶습니다. 지금까지 나는 이미 다음과 같은 코드를 작성했습니다.

\begin{circuitikz} \draw
    (0,2) node[and port] (and) {}
    (0,0) node[xor port] (xor) {}
    (and.in 1) node[above left=.5cm](a) {$a_0$}
    (and.in 2) node[below left = .5cm](b) {$b_0$}
    (and.out) node[below](s) {$s_1$}
    (xor.out) node[below](s) {$s_0$}    
    (a) -| (and.in 1)
    (b) -| (and.in 2)
    (a) -| (xor.in 1)
    (b) -| (xor.in 2);  
\end{circuitikz}

이는 다음과 같은 결과로 이어집니다. result_so_far

두 번째 이미지가 첫 번째 이미지와 더 비슷해 보이도록 도와주시면 정말 기쁠 것 같습니다. 정말 감사합니다!

편집: 세 번째 줄의 위치를 ​​(0,0)에서 (2,2)로 변경하여 좀 더 나은 이미지를 얻을 수 있었습니다.

이것은 더 복잡한 다이어그램으로 확장할 수 없는 더러운 해킹일 뿐이므로 더 일반적인 솔루션에 대한 도움을 주시면 감사하겠습니다!

답변1

주요 변경 사항은 수직선에 대해 별도의 x 좌표를 갖는 것입니다.

(a) -| (and.in 1)
(a) -| (xor.in 1)

에게

(a) -- +(0.5,0) |- (and.in 1)
(a) -- +(0.5,0) |- (xor.in 1)

회로를 샘플 회로와 더욱 유사하게 만들려면 아래로 이동하는 것이 좋습니다 a_0.

여기에 이미지 설명을 입력하세요

\documentclass{article}
\usepackage{circuitikz}
\begin{document}
\begin{circuitikz} \draw
    (0,2) node[and port] (and) {}
    (0,0) node[xor port] (xor) {}
    (and.in 1) node[below left=.5cm](a) {$a_0$}
    (and.in 2) node[below left = .5cm](b) {$b_0$}
    (and.out) node[below](s) {$s_1$}
    (xor.out) node[below](s) {$s_0$}    
    (a) -- +(0.5,0) |- (and.in 1)
    (b) -| (and.in 2)
    (a) -- +(0.5,0) |- (xor.in 1)
    (b) -| (xor.in 2);  
\end{circuitikz}
\end{document}

관련 정보