오늘의 질문
  • IC의 종류 TTL, CMOS 의 의미와 설계시 주의 할점들(1)
  • 난이도 별3개

하드웨어 하시는 분들은 많이 들어본 용어입니다.
TTL, CMOS 이런 용어를 접해보지 않았다면 하드웨어 하시는 분은 아닐것입니다.

저는 8비트 MCU 나 고속의 32비트 MCU 를 다루는 엔지니어입다.
예전 8비트 MCU 들은 5V 전압을 사용하였죠.. 이때는 그냥 TTL 이건 CMOS 건 관계없이 그냥 사용하였습니다.
이때가 참 편했죠. 바꿔 말하면 저도 이런것들을 모르고 사용한 거구요.

IC 는 크게 3~4가지 형태로 구분합니다.

  • TTL
  • CMOS
  • LVCMOS
  • ELC

ELC 형태의 IC 는 아직까지 사용해보지 못해서 설명드리지 않겠습니다.
(혹시 모르고 사용했을수도 있지만 ㅜ.ㅜ )

  TTL CMOS LVCMOS
사용 전압 5V 2V ~ 6V 1.2V ~ 3.3V
소비 전력 많다 아주작다 아주작다
공급 가능 전류 20mA 10mA 10mA

IC 의 자세한 사항은 뒤로 미루고 이들을 어떻게 구분하는 방법부터 알아보도록 하겠습니다.

  파일 설명
TTL 74LS__, 74AS__, 74F__, 54LS__ 또는 영문접두어 없이 7406 이렇게도 표시됩니다.

CMOS

74HC__, 74HCT__, 74AC, 74ACT, 74FCT
LVCMOS 74LVC__, 74LVCH__, 74ALVC__

기존에 여러분들이 사용하시던 게이트 IC 한두 개 이상은 위의 접두어로 걸릴것으로 예상됩니다.
아울러 그냥 편하게 사용하시던 RS232 드라이버나 S3C2440 등의 MCU 들도 모두 CMOS 입니다.
쉽게 32bit MCU 주변의 IC 들은 90퍼센트 이상 모두 CMOS 입니다.

제가 대학다닐때 FAN-OUT 을 배운 기억이 납니다. FAN-OUT 이란 '출력하나에 입력이 몇개까지 연결
가능한가에 대한 능력'정도로 이해하시면 됩니다. 예전 TTL IC 에서는 이게 상당히 중요했습니다.
그래서 보통 출력하나에 입력 8개 정도만을 연결하였죠.
위의 공급전류에 대입하여 풀어보면 출력전류가 20mA 인데 거기에 연결된 디바이스가 8개면 각각의
디바이스가 소비하는 전류는 2.5mA 정도 입니다. 다시말하면 입력핀을 제어하는데 2mA 내외가 필요하단거죠

하지만 CMOS 로 설계하면 pan-out 을 크게 신경쓰지 않아도 됩니다. CMOS IC 의 입력전류는 수십 uA 입니다.
출력이 10mA 이면 입력을 100uA 로만 생각해도 100개 입니다. 또 입력을 받지안은(칩셀렉트가 High) IC가
High-Impedence 상태이므로 이때 이 IC 는 수uA 만을 소모하기 때문에 소비전류는 더 작습니다.
그러므로 CMOS IC를 써서 설계할 경우 pan-out은 잊어버려도 된다는 것이죠.
실제로 제가 설계한 보드중에 출력 IC 하나에 입력IC들을 36개를 연결한 경우도 있습니다.
32개 이상의 IC 를 테스트해볼 경우가 없었지만 64개정도는 문제 없으리라 생각됩니다.

참고이경우 주의 하실것은 버스의 속도를 너무 빠르게 하면 안된다는 것입니다.
PCB 패턴이 길어질수록 VIA 의 수가 많아질수록 파형의 지연이 커집니다.
타이밍이 안맞게 되는 것이죠. OE/WE 신호의 폭이 1usec 이상이
되도록 설계하셔야 합니다. 추가적으로 슬롯이나 커넥터로 버스를 연장하실때에도
버스의 시간을 되도록 느리게 설계하셔아 합니다.

가장 안전한 방법은 제어신호들 OE/WE/DIR/CS/Addr/Data 이런신호 모두를
MCU 가 직접 하나씩 제어하는것이 가장 좋습니다. 물론 버스 제어속도가
빠르지 않아도 된다는 조건이지요.
74HC574 등의 IC들로 이 제어선들을 래치하여 직접 사용하는 방법입니다.
!!이거 아주 중요하니 잊지마시기 바랍니다.

CMOS 와 TTL 을 비교하면 CMOS가 월등히 좋다는것을 알수 있습니다. 그런데 왜 TTL IC 계속 사용될까요?
우선 TTL IC는 출력 전류가 CMOS에 비해 2배의 전류가 나오죠. 이건 장점이 될수도 있습니다.
전류가 많이 필요한 곳에서는 쓸모가 있죠.
74HC245 는 양방향 버퍼 입니다. 하지만 이런 파트명은 구하기 힘들죠 74HC245A 이걸 많이 사용합니다.
'A' 가 뒤에 추가된것을 눈여겨 보시기 바랍니다. 출력전류를 20mA 로 높였다는 의미입니다.
74HC245A의 경우 출력전류가 10mA 가 아닌 20mA 란것이죠.
하지만 다른 CMOS 게이트들중에는 이렇게 출력전류를 높인것이 없습니다. 그리고 TTL 이 필요한 회로가
많이 있습니다. TTL의 장점이 있기 때문이죠. 가장 주요한 장점은 잡음구간에 강하다는 것입니다.
잡음구간이란 무엇일까요?

<그림 - 1>

위의 그림에서 위쪽의 HIGH 영역은 디지털적으로 '1'이라고 인식되는 구간이며 아래쪽의 LOW 영역은 '0' 이라고
인식되는 구간입니다. 그럼 나머지 'A' 영역은 디지탈적으로 어떻게 표현되어야 할까요?
이구간은 필요에 따라 '0' 도 '1' 도 될수 있습니다. 하드웨어 맘이 라는것이죠.
이구간이 잡음 구간이라고 표현되는 영역입니다.

상위 HIGH 구간을 입력측에서 보면 VIH 라고 말하며 아래쪽은 VIL 이라고 말합니다.
반대로 출력측에서 보면 VOH, VOL 이라고 합니다. 이런 전압의 값은 게이트류의 IC 라면 데이타쉬트에 모두 명시
되어 있습니다. 전압이 다른 신호선을 연결할 경우는 이 값들을 유심히 살펴보시기 바랍니다.

바로 전에 CMOS 는 구동전류가 작다라는 말을 했습니다. 이말을 다시 곱씹어보면 작은 힘으로도 입력을 '1' 또는 '0'으로
변경가능하다는 말이죠. CMOS 입력이 OPEN 되어 있다면 어떻게 될까요?

<그림 - 2>

출력인 TP1 을 스코프로 찍어보면 마구 흔들리는 파형이 나옵니다.

참고저는 이런 CMOS 의 특성을 이용하여 크리스탈이 죽었는지 손으로 확인할 경우도 있습니다.
이때 필요한것은 전류의 상태를 눈으로 보아야 한다는 것입니다.
저의 경우 32비트 MCU 를 많이 다룹니다. 우선 동작하지 않을 때의 전류를 눈으로 확인한 후
죽었다고 생각하는 크리스탈에 손가락으로 꾹 눌러봅니다.

이때 전류가 크게 올라갔다면 크리스탈이 죽은 것입니다. .
전류 소모가 있다는것은 MCU 가 동작하지 않았다가 동작했다는 의미인 것이지요.
전류를 이용한 디버깅 방법에는 리셋 버튼을 이용하는 방법도 있습니다.
리셋을 눌렀을 경우의 전류와 평상시의 전류가 10mA 이상 차이가 있습니다.
물론 32bit MCU 의 경우입니다. 리셋시의 전류가 더 적게 먹습니다.
리셋시와 평상시의 전류가 동일하다면 MCU 가 100퍼센트 동작하지 않는것입니다.
리셋버튼이 불량이 아닐경우말이죠.
정상시 하드웨어 전류를 기억하는것도 중요합니다. 전류가 더 먹는다는 것은 어딘가 쇼트가 있거나
정상이 아니라는 표시니까요. 전류의 허용오차는 가만해야 합니다만 5mA 이상의 전류는
우선 의심해야 합니다.

이외에도 전류는 하드웨어 디버깅시 아주 유효합니다.
!! 하드웨어 개발자라면 전압과 전류가 숫자로 나오는 DC 서플라이는 꼭 장만하시가 바랍니다.
참고로 저는 Topward 6303D 추천합니다. 2채널이며 가격도 50만원 안쪽으로 쓸만합니다.
지금은 좀더 비싼 xantrex 제품을 사용하지만 위 제품도 아주 좋습니다.

CMOS IC 의 경우 사용되지 않는 입력핀들은 전원이나 그라운드에 반드시 연결하셔야 합니다.
이건 무조건입니다. 이에 반해 TTL 은 구동전류가 많이 필요하기 때문에 open 시에 이런 현상이 없습니다.
상당히 큰 장점입니다. 하지만 될수있다면 풀업이나 풀다운 걸어놓으시는게 좋겠죠
TTL 나 CMOS 이나 이런 잡음구간은 존재합니다. 그래서 이런 구간을 완전히 없앤 IC 류들이 있습니다.
74HC14 가 대표적인 IC 입니다. 74HC04 와 논리적으로는 동일하지만 74HC14 는 슈미트트리거(Schmidt trigger)
라고 말합니다.

<그림 - 3>

위에 그림을 유심히 보시면 74HC14 의 가운데에 표식이 있는 것을 보실수 있습니다.
슈미트트리거는 '0' 에서 '1' 이 되려면 <그림1> 에서 보여준 HIGH 구간이 되기전에는 '0'의 값을 유지하며
또 '1' 에서 '0'이 되려면 LOW 구간이 되기전에는 계속 '1'의 값을 갖습니다.
74HC14 는 이런 이유로 MCU 리셋 회로로 많이 이용되고 있습니다.
그리고 MCU 들 중에는 리셋입력핀을 아예 슈미트트리거로 설계하는 것들도 많이 있습니다. 이런 MCU 들은 그냥
풀업저항만 하나 걸어주면 되어 아주 편리합니다. 지연을 위해 콘덴서 하나 추가할 정도입니다.

CMOS 로 제조된 MCU 들의 입력들은 내부에 weak pull-up 또는 pull-down 이 연결되어 있는 것들이 있습니다.
여기서 weak 란 큰 저항을 말합니다. 약 100K 저항을 말합니다.
그리고 게이트류가 아닌 IC 들의 핀 사양은 데이타쉬트 앞부분에 핀의 형태가 나열되어 있습니다.
아래는 요즘 설계하고 있는 삼섬 SC32242B MCU 의 핀 사양중 일부입니다.
아주 설명이 잘되있는 데이타쉬트입니다. (삼성이 예전보다 데이타쉬트에 신경을 많이 쓰고 있다는 생각이 듭니다.)

<그림 - 4>

좀더 자세한 핀들의 사양은 추후에 쓸 강좌에서 다시 설명드리도록 하겠습니다.

TTL 과 CMOS 의 속도를 비교할 경우도 있습니다.

74LS138 과 74HC138 의 속도를 비교하면 TTL 이 2nsec 정도 빠릅니다. 하지만 요즘 나오는 CMOS들은 TTL 보다 월등히
속도가 빠릅니다. 74LS138 의 지연은 13nsec, 74HC138 은 15nsec, 이에 반해 74AC138 은 4.5nsec 입니다.
TTL 은 구형의 CMOS 보다는 약간빠르지만 요즘나오는 신형 CMOS 에 비하면 아주 느립니다. 속도문제로 TTL 을 사용하는것은
다시 한번 생각해볼 문제입니다. 속도가 필요하다면 AC 류나 FC, LVC 이런류들을 찾아보시기 바랍니다.

앞부분에서 TTL 이 잡음구간에 강하다는 말을 드렸습니다. 그래서 CMOS 진영에서는 HCT 라는 것들을 만들어 냈습니다.
CMOS 이지만 TTL 과 동일하게 동작하는 형태입니다. 구동전압도 5V 고정이며 잡음구간에 강한 CMOS 인것이죠

자, 이제 LVCMOS 에대해 알아보도록 하겠습니다.

근래에 나오는 MCU 들은 저전력을 구현하기 위해 코아 전압을 낮추고 있습니다. 전통적인 3.3V 가 아니 1.8V, 1.2V 이런 전압을
사용합니다. 코아 전압뿐아니라 IO전압도 2.5V 나 1.8V 를 이용하고 있습니다. MCU 속도가 빨라져 전압이 낮아지기도 합니다.
그러나 보니 낮은 전압의 IO들이 필요하게 되었으며 여기에 맞추어 나온것이 LVCMOS 입니다. 이들은 낮은 전압에서 동작하고
저전력을 지원하며 높은 전압의 IO를 구동할 힘들 갖추고 있습니다.

MCU 들이 고속의 메모리인 DDR 램을 지원하면서 연결되는 버스의 전압레벨은 2.5V 나 1.8V입니다.
고속의 버스이기 때문에 3.3V 레벨로 위아래로 흔드는 것보다는 낮은 전압으로 움직이는게 속도적인 면에서 더 이득입니다.
전압이 낮기 때문에 잡음구간의 영역이 작아도 문제가 됩니다. 그래서 이런 고속의 디바이스들은 비교기 회로를 이용하여
이런문제를 해결합니다. 비교기는 대게 OP-AMP 를 사용하여 구현합니다.

다음회에 계속 설명해 드리도록 하겠습니다.

제 이름을 딴 강좌가 시간이 오래되었지만 강의 내용이 많지 않아 심히 부담을 느끼고 있습니다.
강좌가 빠른시일에 올라오지 않는다고 미워하지 말아 주세요. 먹고살기 힘들어서 ^^