컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (5)

나빌레라의 이미지

#5. 논리

전자석을 이용한 릴레이 회로는 구조적 특징도 중요하지만 동작 자체가 더 중요한 의미를 가진다. 소자 하나에 세 개의 접점이 있고 한 접점에 전기적 신호를 주어 다른 두 접점 사이에 전류가 흐르게 하는 동작 말이다. 이 동작이 가능해 짐으로 인해 전류나 전압의 증폭이 가능해 졌고, 전기 신호의 논리적 제어가 가능해 졌다. 이번 이야기는 전기 신호의 논리적 제어에 대한 이야기다.

이 글을 읽는 여러분들 대부분은 트랜지스터라는 말을 들어봤을 것이다. 그리고 이 이야기를 하고 있는 나보다 트랜지스터에 대해서 더 잘 알고 있는 사람도 있을 것이다. 나는 이 이야기에서 트랜지스터의 자세한 동작 원리나 반도체 공학적 설명은 최대한 하지 않고 동작 자체에 중심을 두고 이야기하려 한다.

트랜지스터는 pnp형과 npn형이 있다. 이 두 형태의 트랜지스터는 동작 특성이 반대라는 것 정도만 알아두면 된다. 내가 하려는 이 긴 이야기 전체에서 pnp형과 npn형 트랜지스터의 차이를 모른다고 이해 못할 내용은 없다. 중요한것은 그중 npn형 트랜지스터의 동작 특성이 앞서 이야기 했던 릴레이의 동작 특성과 완전히 똑같다.

위 그림을 보면 릴레이와 트랜지스터 모두 세 개의 접점을 가지고 한 접점에 전압을 가하면 다른 두 접점 사이에 전기가 통한다. 내가 하고 있는 이 이야기 전체에서 트랜지스터에 대한 이해는 딱 이정도만 해도 충분하다. 트랜지스터 위치에 그대로 릴레이를 가져다 놔도 이야기의 흐름엔 전혀 문제가 없다. 나는 단지 릴레이에서 트랜지스터로 이어지는 기술의 발전을 설명하기 위해 자연스럽게 트랜지스터를 이야기에서 사용하는 것이다.

트랜지스터는 릴레이의 동작을 그대로 수행하면서도 반도체 물질을 이용해 만들었기 때문에 전력 소모가 적고 속도가 빠르며 열도 적게 발생한다. 무엇보다도 아주 작게 만들어 낼 수 있다. 커다랗고 느린 릴레이를 여러개 붙여서 만든 회로보다 작고 빠른 트랜지스터를 붙여서 만든 회로가 더 효율적이라는 것은 더 말할 필요없는 사실이다. 트랜지스터의 등장으로 릴레이는 고 전압 회로에서 스위치 역할 정도로 활용 영역이 축소되었고 디지털 세상은 트랜지스터의 세상이 되었다.

이제부터는 릴레이 기호 대신 트랜지스터를 이용해서 설명할 것이다. 두 종류의 트랜지스터가 있지만 나는 npn형 트랜지스터만 사용할 것이다. 위 그림에도 나왔지만 정식으로 소개하겠다. npn형 트랜지스터의 기호는 아래 그림과 같다.

트랜지스터의 연결을 절묘하게 하면 입력 값과 출력 값 사이에 어떤 특정한 법칙을 이루게 된다. 입력 값과 출력 값을 우리가 잘 알고 있는 수학적 법칙에 일치하게끔 회로를 구현하면 우리는 전자 회로를 통해서 수학적 논리를 계산할 수 있게된다.

트랜지스터를 연결해 보기 전에 무엇을 목표로 연결 회로를 구성해야 하는지 알아보자. 우리가 트랜지스터를 이용해 구성할 회로는 AND, OR, NOT, NAND, NOR 연산을 동작시킬 것이다. 많이 본 글자들이다. 불 논리 연산자라고 하는 것들이다. 이진수에서 비트간의 계산을 하는 연산자다. NOT은 지난 이야기에서 오실레이터를 만들면서 먼저 이야기했었다. 이번 이야기에서는 AND, OR, NAND, NOR를 만들어 보자.

AND, OR, NAND, NOR 연산은 그 연산 동작을 간단하게 진리표로 표현할 수 있다.

AND 연산은 두 입력 값이 둘 다 1일 경우에만 결과 값이 1이다. 둘 중 하나가 0이거나 둘 다 0이면 결과 값은 0이다.

OR 연산은 두 입력 값 중 하나가 1이면 결과 값이 1이다. 둘 다 0일때만 결과 값이 0이다.

NAND 연산은 Not AND를 붙여 쓴 것이다. 말 그대로 AND 연산의 결과를 그대로 반전한 것이다. 입력 값이 둘 다 1일 때만 결과 값이 0이고 나머지 경우에는 결과 값이 모두 1이다.

NOR 연산은 Not OR를 붙여 쓴 것이다. 역시 OR 연산의 결과를 그대로 반전한 것이다. 입력 값이 둘 다 0일 때만 값이 1일고 나머지 경우에는 모두 결과 값이 0이다.

이상 간단하게 논리 연산자에 대한 이야기를 마치고 본격적으로 트랜지스터 회로를 보자. 앞으로 나오는 회로의 트랜지스터는 모두 npn 형 트랜지스터로 1이 입력되면 전류가 통한다고 생각하면 된다. 복잡하지는 않으니 크게 걱정할 것 없다.

위 그림은 AND 연산을 수행하는 트랜지스터 조합 회로다. 두 입력 A와 B에 0과 1을 조합해서 넣어보면 위에서 본 AND 연산의 진리표와 일치한다. A와 B에 둘 다 1이 입력되었을 때만 두 개의 트랜지스터에 전류가 흐르게 되면서 out으로 1이 출력된다. 하지만 두 입력 중 하나라도 0이 입력되면 위쪽 트랜지스터에서 전류가 끊기거나 아래쪽 트랜지스터에서 전류가 끊겨서 out에는 0이 출력된다.

다음은 OR 연산을 수행하는 트랜지스터 회로다. A와 B 입력에 1이 들어갔을 때 트랜지스터에 전류가 흐른다는 사실을 잊지 말고 입력에 0과 1을 조합해 보면 역시 OR 연산의 진리표와 결과가 일치한다. 두 트랜지스터의 출력이 둘 다 out과 연결되어 있기 때문에 두 트랜지스터 중 한 개라도 입력에 1이 들어오면 전류가 통해 out에 1이 출력된다. 그래서 A, B 두 입력이 모두 0일 때만 두 트랜지스터가 모두 꺼져서 out에 0이 출력된다.

NAND 연산을 수행하는 트랜지스터 회로를 보면 AND 회로와 거의 같고 out의 위치가 두 트랜지스터의 아래에 있다가 지금은 위로 바뀌었다. 이렇게 out의 위치를 바꾼것 만으로 출력에 반전(NOT)을 한 효과가 나타난다. A, B 두 입력에 1이 들어가서 트랜지스터에 전류가 통하게 되면 전원에서 접지로 풀업 연결이 되어 out에는 0이 출력되게 된다.

NOR 연산의 회로도 역시 NAND를 구현했을 때와 마찬가지로 out의 위치가 트랜지스터 아래에서 위로 바뀌었다. 트랜지스터 두 개 중 한 개라도 켜질 경우 전원에서 접지로 풀업 연결이 되어 out에는 0이 출력된다. 그래서 A, B 두 입력에 모두 0이 들어와 두 트랜지스터가 모두 꺼질 때만 out에 1이 출력된다. 이 회로를 잘 보면 out 아래에 위치한 두 트랜지스터는 두 개가 모두 꺼질때만 의미있다. 즉 입력이 둘 다 0일 때만 의미 있으므로 두 입력 A, B를 하나로 묶고 트랜지스터를 한 개만 두어도 NOR 연산과 동일한 진리표를 만들게 된다.

위에서 이야기 한 AND, OR, NAND, NOR 연산을 트랜지스터로 구현한 회로를 묶어서 게이트라고 한다. 그래서 회로도에 표기할 때는 위의 그림 처럼 트랜지스터로 복잡하게 표현하지 않고 별도의 AND 게이트, OR 게이트, NAND 게이트, NOR 게이트라고 부르는 기호를 사용한다.

전자 회로의 논리 게이트까지 이야기를 했다. 논리 게이트가 나오기 전까지는 그저 0과 1의 신호만 전송할 수 있었을 뿐인 전자 회로는 드디어 연산이라는 것을 할 수 있게 되고 입력 값에 대해 전자 회로는 가공과 계산이라는 것을 통해 사용자가 원하는 출력을 만들어 낼 수 있게 되었다.

조금 더 컴퓨터에 가까워 졌다.

댓글

sungeuns의 이미지

전자회로 배울때 TR때문에 골치꽤나 썩혔는데 ㅎㅎㅎ

근데 제컴에선 왜 그림이 안나올까요 ㅠㅠ

아무튼 재미있게 잘보고있습니다~ 감사합니다~^^

Fe.head의 이미지

헐.. 트랜지스터가 저거였군요.

좋은걸 배우네요^^

-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐? 그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
-----------------------
내가 쓰는 글은 틀릴 수 있습니다.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

나빌레라의 이미지

저게 트랜지스터는 아니고,
릴레이를 계속 그리기 귀찮아서요...^^

그래서
트랜지스터의 동작이 릴레이 스위치와 같다는 걸 먼저 설명하고 걍 TR로 설명한거죠.

기술의 발전 순서대로 가려면 중간에 진공관 얘기가 나와야하지만, 뭐 동작이 중요한거니깐요.

그리고 정말 TR의 원리를 제대로 설명하려면 반도체 공학적인 이야기도 해야하거든요. 그러면 글의 견적이...@.@

위 글에서 TR을 그대로 계속 릴레이 스위치로 대체해도 이야기의 진행엔 문제가 없습니다.^^

----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라

----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라

Fe.head의 이미지

비슷한 기능이다라는것을 안것만으로도 충분합니다.

그리고 OR게이트 회로도를 위, 아래로 그리지 말구 좌우로 그리는것은 어떨지..

-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐? 그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.
-----------------------
내가 쓰는 글은 틀릴 수 있습니다.

댓글 첨부 파일: 
첨부파일 크기
Image icon or.png8.99 KB

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

flymc83의 이미지

^^ OR 게이트의 그림으로는 초보인 제가 봐서 더 이해가 좀 더 잘되는듯 싶네요. 감사합니다.

Okidoki의 이미지

NAND와 NOR가 잘 이해가지 않네요. OUT의 위치를 위의 그림처럼 위쪽으로 옮기게 되면 OUT은 항상 1일 것 같은데 아닌가요 ㅎ; 본문에서 말씀하신 '풀업연결'이라는 게 정확히 뭘 말씀하신 건지 잘 모르겠습니다.

덧. NAND와 NOR는 보통 AND와 OR 게이트에 인버터를 붙여서 만들지 않나요? 아니면 NAND, NOR를 먼저 만들고 거기에 인버터를 붙여서 AND와 OR를 만들든가요. ㅋ

octaphial의 이미지

여기에 나온 NMOS (npn 트랜지스터) 회로의 경우, 모두 저항 차이를 이용해서 전압을 설정하는 거지요. 전압을 당겨 올린다고 해서 pull-up 이라는 용어를 쓰는 것 같구요.

NAND 회로의 경우 A나 B 중에 1이 아닌 것이 오면 OUT에 1이 나오는 것은 이해하시는 듯하니 넘어가구요,
둘 다 1이 오면 이 회로가

SOURCE
|
|
R_1
|
+-- OUT
|
R_n (닫힌 트랜지스터)
|
R_n (닫힌 트랜지스터)
|
|
GROUND

이런 형태가 되어서 R_n << R_1 인 경우 OUT은 0에 아주 가까운 전압이 되지요.

단점은 전력 소모가 많이 생긴다는 것. (Source에서 Ground로 전류가 흐르게 되지요.) 그래서 위의 R_1을 적절한 형태*의 pnp 트랜지스터로 바꾼 것이 현재 가장 많이 쓰이는 CMOS 회로입니다. 그리고 그런 연유로 사실은 AND/OR 회로를 NAND/NOR 회로에 인버터를 붙여서 만들게 됩니다.

* 적절한 형태 = A=B=1 => 열림, 그렇지 않으면 닫힘

ubtaptt의 이미지

목차
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (0) : http://kldp.org/node/109764
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (1) : http://kldp.org/node/109814
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (2) : http://kldp.org/node/109901
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (3) : http://kldp.org/node/110005
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (4) : http://kldp.org/node/110137
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (5) : http://kldp.org/node/110214
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (6) : http://kldp.org/node/110311
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (7) : http://kldp.org/node/110440
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (8) : http://kldp.org/node/110515
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (9) : http://kldp.org/node/110602
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (10) : http://kldp.org/node/110670
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (11) : http://kldp.org/node/110850
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (12) : http://kldp.org/node/111015
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (13) : http://kldp.org/node/111192
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (14) : http://kldp.org/node/111678
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (15) : http://kldp.org/node/112152
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (16) : http://kldp.org/node/112552
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (17) : http://kldp.org/node/112832
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (18) : http://kldp.org/node/113385
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (19) : http://kldp.org/node/113754
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (20) : http://kldp.org/node/113854
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (21) : http://kldp.org/node/113950
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (22) : http://kldp.org/node/114146
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (23) : http://kldp.org/node/114407
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (24) : http://kldp.org/node/114537
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (25) : http://kldp.org/node/114666
컴퓨터를 만듭시다. 어때요~ 참 쉽죠? (26) : http://kldp.org/node/114667

익명 사용자의 이미지

감사해요~

축구사랑의 이미지

and gate만 보면 상단 하단 트랜지스터가 모두 턴온되면 그림에서 표시한 out 포인트의 전위는 0이 됩니다.
그라운드로 전류가 흐르기 때문이죠. GND 표시가 없다면 설명이 맞겠지만 아니면 틀린것 같네요. 확인해주세요~

축구사랑의 이미지

저항이 달려있어서 설명하신바와 같이 out의 전위는 1이 되겠네요.
혼선을 드려 죄송합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.