회로계산소

회로 실험과 설계에 자주 쓰는 계산을 한곳에서. 설치 없이 바로 쓰는 전자공학 계산기 모음입니다.

English

값은 단위 접두어와 함께 입력할 수 있습니다. 예: 4.7k 4k7 100n 10u 20mA 1M

ALU

4비트 ALU 시뮬레이터 (산술·논리 연산)

디지털회로실험의 산술논리연산회로처럼 s1, s0, Cin으로 기능을 고르면 4비트 출력 F와 캐리 Cout을 계산합니다. 실험 결과표를 확인할 때 쓰세요.

회로가 하는 일

산술 연산은 가산기 앞에서 B를 Y = s0·B + s1·B̅로 바꾼 뒤 F = A + Y + Cin을 계산합니다. s1 s0 = 00이면 Y = 0000, 01이면 B, 10이면 B̅, 11이면 1111이 되어서 증가, 덧셈, 뺄셈(A + B̅ + 1), 감소를 모두 가산기 하나로 할 수 있습니다. 논리 연산은 s1 s0로 OR, XOR, AND, NOT 중 하나를 고르는 멀티플렉서입니다.

풀이 예제: 뺄셈 2 − 1

  1. s1 s0 = 1 0이면 Y = B̅ = 1110
  2. F = A + Y + Cin = 0010 + 1110 + 1 = 1 0001 (17)
  3. 4비트를 넘은 자리는 Cout으로 → F = 0001, Cout = 1. 즉 2 − 1 = 1 (뺄셈에서 Cout = 1은 빌림이 없다는 뜻)

산술 연산 기능표

s1 s0 Cin동작FCout
s1 s0 Cin0 0 0동작전달 (F = A)F0010Cout0
s1 s0 Cin0 0 1동작증가 (F = A + 1)F0011Cout0
s1 s0 Cin0 1 0동작덧셈 (F = A + B)F0011Cout0
s1 s0 Cin0 1 1동작덧셈 + 1 (F = A + B + 1)F0100Cout0
s1 s0 Cin1 0 0동작A + B̅ (F = A + B̅)F0000Cout1
s1 s0 Cin1 0 1동작뺄셈 (F = A − B)F0001Cout1
s1 s0 Cin1 1 0동작감소 (F = A − 1)F0001Cout1
s1 s0 Cin1 1 1동작전달 (F = A)F0010Cout1

A = 0010 (2), B = 0001 (1)일 때의 결과입니다. 실험용 4비트 ALU 회로에서 측정한 값과 같습니다.

논리 연산 기능표

s1 s0동작F (A = 1100, B = 1010)
0 0OR (F = A ∨ B)1110
0 1XOR (F = A ⊕ B)0110
1 0AND (F = A ∧ B)1000
1 1NOT (F = A̅)0011

실전에서 쓰는 법

순서대로 쓰기

  1. 4비트 피연산자 A와 B를 2진수나 10진수로 입력합니다.
  2. 선택선 s1, s0와 캐리 입력으로 연산을 고릅니다. 어떤 조합이 어떤 연산인지는 표에 있습니다.
  3. 4비트 결과와 캐리 출력을 읽고, 비트별 계산 과정을 따라가 봅니다.

자주 하는 실수

  • 뺄셈에서 캐리 입력을 잊기. A − B는 A에 B를 반전한 값과 1을 더해 계산합니다. 이 "1"은 보통 캐리 입력을 1로 두어 넣습니다.
  • 캐리를 오버플로로 읽기. 캐리 출력은 부호 없는 결과가 4비트를 넘었다는 표시입니다. 부호 있는 수(−8~7)의 오버플로는 따로 판단합니다. 최상위 비트로 들어가는 캐리와 나오는 캐리가 다를 때입니다.
  • 빌림을 거꾸로 읽기. 이 방식의 뺄셈에서 캐리 출력 1은 빌림이 없음(A가 B 이상), 0은 빌림이 있었다는 뜻입니다.

실험에서 만들 때

실험용 ALU는 보통 7483 4비트 가산기, 뺄셈 때 B를 반전하는 B 입력의 XOR 게이트, 산술과 논리 결과를 고르는 74153 같은 멀티플렉서로 만듭니다. 출력에 LED를 달고 연산을 하나씩 시험하면서, 칩을 의심하기 전에 진리표의 각 줄을 이 시뮬레이터와 비교하세요. 멀티플렉서로 전가산기를 만드는 가이드에서 같은 부품을 다룹니다.

계산 예: 5 + 6과 오버플로 플래그

A = 0101(5), B = 0110(6), s1 s0 = 01, Cin = 0으로 두면 F = A + B입니다. 오른쪽부터 한 비트씩 더하면 1 + 0 = 1, 0 + 1 = 1, 1 + 1 = 0 자리올림 1, 0 + 0 + 1 = 1입니다. F = 1011, Cout = 0입니다.

부호 없는 수로 1011은 11이므로 맞고, Cout = 0도 이와 맞습니다. 부호 있는 수로는 −5라서 틀립니다. 11은 −8에서 7 범위에 들어가지 않기 때문입니다. 오버플로 판정도 같습니다. 맨 위 비트로 자리올림이 들어갔지만 나오지는 않았습니다. F의 LED만으로는 이것이 보이지 않으므로, 실험에서 오버플로 플래그를 요구한다면 두 자리올림의 XOR을 다섯 번째 LED에 연결하세요.

계산 예: 빌림이 생기는 뺄셈

이번에는 2 − 5입니다. A = 0010, B = 0101, s1 s0 = 10, Cin = 1. 가산기는 A + B̅ + 1 = 0010 + 1010 + 1 = 1101, Cout = 0을 계산합니다. Cout = 0은 빌림이 생겼다는 뜻, 즉 A가 B보다 작았다는 뜻이고, 1101을 2의 보수로 읽으면 −3으로 정답입니다. 브레드보드 ALU가 이 줄은 틀리는데 2 − 1은 맞는다면 B 반전 게이트와 캐리 입력 배선부터 보세요. 덧셈과 다른 부분은 그 둘뿐입니다. 4비트 결과를 부호 있는 값으로 바꿀 때는 2의 보수 계산기를 쓰면 됩니다.

자주 묻는 질문

ALU는 가산기로 어떻게 뺄셈을 하나요?

2의 보수를 더합니다. A − B = A + B̅ + 1이라서, B를 뒤집고(s1 s0 = 10) Cin을 1로 주면 같은 가산기로 뺄셈이 됩니다.

뺄셈 결과에서 Cout이 1인 이유는?

A ≥ B이면 A + B̅ + 1이 4비트를 넘쳐서 Cout이 1이 됩니다. 즉 뺄셈에서 Cout = 1은 빌림이 없었다는 뜻이고, Cout = 0이면 결과가 음수가 된 것입니다.