회로도 보는 방법
자 이제 회로도를 읽어보자!
임베디드 소프트웨어 엔지니어는 기본적으로 회로도를 볼 줄 알아야 한다. 물론 회로도를 그릴줄 알아야 한다거나, 하드웨어 엔지니어처럼 자세한 부분까지 알 필요는 없다. 그렇지만 소프트웨어, 더 엄밀하게는 디바이스 드라이버를 구현하기 위해 필요한 기본 지식은 갖추어야 한다.
전산계통을 전공한 후 현업에 일하는 많은 신입사원들은 대개는 회로도와 친숙하지 않다.
전자과를 졸업하고 심지어 대학교에서 회로도를 그려보기까지 했던 필자도 현업에서는 회로도가 너무나 낯설었다. 계속 일을 하다보니 몸으로 깨우친 바 임베디드 소프트웨어 개발자로서 회로도 관련해서 필수적으로 알아야 할 것들은 사실 몇 가지 없다.
먼저 기본적인 용어부터 정리하도록 하자. 회로도는 Schematic이라고 부른다. 사람들이 '쓰기메띡' 이러면 회로도를 이야기하는구나 하면 된다. 칩셋이나 IC에 대한 명세서는 Datasheet라고 부른다. 데이터시트라고 부르는 곳은 좀 고급진 곳이고, 보통 그냥 스펙(Spec)이라고 부르니 참고하기 바란다. 임베디드 개발자라면 회로도뿐만 아니라 데이터시트도 볼 줄 알아야 한다. 걱정할 필요는 없다. 전문적인 지식이 필요한 것도 아니고, 계속 보다보면 익숙해질수밖에 없다.
위 그림은 간단한 회로도다. 이전에 배웠던 것들이 마구마구 나온다. 전원(V), 저항(R), 커패시터(C), 다이오드(D), 접지(Ground) - 위 그림에서 처음보는 것은 배터리와 두 개의 스위치(GUITAR IN, POWER) 뿐 나머지는 이미 다 알고 있는 것들이다.
회로도에서 소자들을 실제 표기하는 방식은 이미 배운바와 같다. R은 저항, L은 인덕터, C는 캐패시터, D는 다이오드를 의미한다. R이나 C옆에 붙는 숫자들은 일련번호(Index)라고 보면 되고, 통상 실제 회로가 구현되어 있는 PCB를 보면 해당 표기들을 찾을 수 있다(눈이 침침하신 분들은 돋보기 사용해야 한다). PCB는 나중에 따로 또 보겠지만, 그 위에다 회로를 만들수 있는 판떼기라고 생각하면 된다.
IC와 같은 소자들은 부품명 그대로 표기하는 경우도 있고 간단히 U라는 접두어를 붙여서 표기하기도 한다.
어디까지나 이는 통상적인 경우이고, 실제 현장에서 쓰는 방식에 빨리 익숙해지는 것이 중요하다. 회사나 연구기관별로 많이 다를 수도 있고, 회로도를 설계하는 하드웨어 개발자들이 선호하는 방식도 각기 다를 수 있다. .
근본적으로 회로도는 소자(저항이나 IC를 통칭)와 선(NET)으로 이루어져 있다고 보면 되고, 꼭 알아두어야 할 점은 선(NET)은 시작점과 끝점이 있다는 것이다. 이는 임베디드 소프트웨어 개발자가 꼭 알아야 할 부분이다. 소자의 어떤 핀과 다른 소자의 어떤 부분이 연결되어 있는지를 파악하는 것은 임베디드 소프트웨어 개발자가 하드웨어를 다루는 데 있어 기본적으로 파악해야 하는 사항이다. 간혹 NC라고 표기된 것을 볼 수 있는데, 이는 No Connect의 줄임말로 핀이 연결되어 있지 않다는 것이다.
위 회로에서 USB_PWR1이라는 NET은 왼쪽 IC의 13번 핀과 연결되어 있다. 회로도의 다른 부분에서 USB_PWR1을 검색해보면 분명 이 NET는 다른 소자의 특정핀과 연결되어 있다. 소자와 연결부분에 동그라미표시가 되어 있으면 반전입력/출력을 의미한다. 즉, 논리값 0이면 1로 입력 내지는 출력이 된다는 얘기다.
이 반전입력이 많이 쓰이는 것이, IC의 입력핀들이다. 아래 그림을 보자.
위 회로도는 S25FL064라는 NOR Flash 메모리 IC 가 적용된 회로도를 발췌한 것으로 연결부들을 살펴보자. 맨 위의 X로 표시된 것들은 이미 설명한 NC(Not connected)와 같은 것들이다. 왼쪽 부분에 CS위에 작대기가 그려져 있는 것은 반전(NOT)입력(또는 출력)이라는 것이다. WP, HOLD 핀들도 마찬가지다. CS, WP, HOLD핀들로 들어오는 입력부에 동그라미 되어 있는 것 역시 반전(NOT)이다. 따라서 반전의 반전이 되므로 위 회로도의 왼쪽 부분은 결국 아래 회로도와 동일하게 된댜.
각 IC핀이 정상입력인지 반전입력인지 여부와 NET으로 전송하는 처리 신호가 High인지 Low인지 여부에 따라 회로가 설계되어야 한다. 참고로 CE는 Chip Enable로, 통상 이 핀으로 High 입력이 들어와야 칩이 구동된다. CE대신 CS(Chip Select)로 표기하는 IC도 있다.
회로도의 각 핀들은 논리적으로는 1 또는 0, 즉 High Level 또는 Low Level 둘 중 하나의 값을 가지게 된다.
어떤 전원(Vcc)이 사용되는지에 따라 실제 입출력되는 전압값은 달라진다.
입력이나 출력값이 0이나 1이 아닌 어정쩡한 값을 가질수도 있다. 0이나 1이냐를 결정하는 임계전압값이 존재하는데 이도 저도 아닌 중간에 걸친 상태라고 할 수 있다. 이것이 바로 바로 Ch1-4에서 설명한 하이임피던스 상태이다. 하드웨어에 전원이 들어온 상태에서 이런 핀들은 High나 Low상태가 아니기 때문에, 소프트웨어에나 연결된 다른 하드웨어에서 High나 Low상태로 만들어주기 전까지는 사용할 수 없다.
다시 말해, 그 상태가 논리적으로 뭔지 알 수 없으니, 써먹을수도 없다는 얘기다.
이런 핀들을 소프트웨어에서 구성해주기전에 하드웨어 자체적으로 하이나 로우상태로 만들기 위해서 사용하는 것이 풀다운(Pull Down)과 풀업(Pull Up) 저항이다. 저항소자를 달아서 강제로 하이나 로우 상태로 만들어주는 것이다. 풀업, 풀다운은 임베디드세계에서 김치와도 같이 자주 등장하는 용어다. 숙지하자.
Vcc쪽에 저항을 달면 풀업이 되고, 접지(Ground)쪽에 저항을 달면 풀다운이 된다. 풀업은 하이레벨(논리값 1)이고 풀다운은 로우레벨(논리값 0)이다.
임베디드 소프트웨어 개발자가 프로젝트를 시작할 때 가장 먼저 챙겨야 하는 것은 회로도와 메인 칩셋(SoC)의 데이터시트다. 기본적인 것들은 미리 확실히 알아놓는 것이 좋다.