3.8. 레벨 시프팅¶
카메라의 GPIO 핀은 하이일 때 약 3.3V를 출력합니다. 반대편 장치는 5V(구형 마이크로컨트롤러, 다수의 센서 보드)나 1.8V(신형 센서, 일부 칩 간 버스)로 동작할 수 있습니다. 둘을 직접 연결하는 것은 때로는 안전하지만 때로는 파괴적입니다. 레벨 시프팅은 이 간극을 안정적으로 메워주는 회로입니다.
3.8.1. 교차 전압 직접 구동이 핀을 손상시킬 수 있는 이유¶
모든 칩의 I/O 패드에는 한 쌍의 내장 보호 다이오드(protection diode)가 있습니다. 하나는 핀에서 접지로, 다른 하나는 핀에서 칩의 전원 레일로 연결됩니다. 이들은 정전기 방전(electrostatic discharge, ESD)을 흡수하기 위해 존재합니다. ESD는 보드를 다룰 때 핀에 가해질 수 있는, 정전기로 인한 짧고 높은 전압 스파이크입니다. 카펫 위를 걸어 다닌 사람은 수 킬로볼트의 정전기를 지닐 수 있으며, 잘못된 핀을 만지면 그 전하가 나노초 단위로 칩에 전달됩니다. 상단 보호 다이오드는 순방향 바이어스되어, 펄스가 칩 내부의 트랜지스터에 도달하기 전에 전원 레일로 안전하게 흘려보냅니다.
5V 신호가 5V 내성이 없는 3.3V 핀에 지속적으로 인가되면 상단 보호 다이오드가 영원히 도통합니다. 이 다이오드는 짧은 ESD 펄스에 맞게 설계된 것이지 정상 상태 전류용이 아닙니다. 공급 레일이 3.3V 이상으로 상승하기 시작하고, 다이오드가 가열되며, 결국 핀이나 온칩 전압 레귤레이터가 고장 납니다.
5V 내성 핀은 다른 입력 단을 사용합니다. 상단 다이오드가 더 높은 레일로 연결되거나 아예 없으므로 5V를 인가해도 무해합니다. 보드의 핀이 5V 내성인지 여부는 보드마다 다르므로 OpenMV Cam 빠른 참조를 확인하세요.
반대 방향에는 그 나름의 문제가 있습니다. 3.3V GPIO가 하이를 구동하면 배선에 약 3.3V가 나타납니다. 하이를 인식하기 위해 0.7 × Vcc가 필요한 5V 수신기는 임계값이 3.5V에 위치하므로, 3.3V는 로우로 읽히거나 모호하게 읽힐 수 있습니다. 손상이 없더라도 신호가 안정적으로 동작하지 않습니다.
레벨 시프터는 양방향 문제를 모두 해결합니다.
3.8.2. 스위치로서의 N-MOSFET¶
아래 회로들은 단일 N채널 MOSFET을 사용합니다. 이 소자에는 게이트, 드레인, 소스의 세 핀이 있으며 전기적으로 제어되는 스위치처럼 동작합니다.
제어 입력은 게이트와 소스 사이의 전압으로, Vgs(게이트-소스 전압)라고 표기합니다:
Vgs = (gate voltage) - (source voltage)
MOSFET이 신경 쓰는 것은 어느 한 핀의 절대 전압이 아니라 이 차이입니다. 그 동작은 Vgs에서 비롯됩니다:
Vgs가 MOSFET의 임계 전압(소신호 로직 레벨 부품의 경우 일반적으로 약 1V)보다 높으면 트랜지스터가 켜지고 드레인에서 소스로 전류가 자유롭게 흐릅니다.Vgs가 0이거나 그 이하이면 트랜지스터가 꺼지고 드레인에서 소스로 전류가 거의 흐르지 않습니다.
드레인-소스 경로가 스위칭되는 전류 경로이며, Vgs가 그 스위치를 열거나 닫습니다.
N-MOSFET에는 드레인과 소스 사이에 바디 다이오드도 있는데, 드레인이 소스보다 약 0.6V 이상 낮게 당겨지면 도통합니다. 이 다이오드는 제조 과정의 부산물이지만, 아래의 양방향 시프터는 이를 의도적으로 활용합니다.
3.8.2.1. 배선 규칙¶
N-MOSFET은 대칭형 3단자 소자가 아닙니다. 바디 다이오드는 소스(애노드)에서 드레인(캐소드)을 향하고, 채널을 제어하는 것은 Vgs입니다. 다음 두 가지 규칙이 따라 나오며, 모든 N-MOSFET 스위치 회로에서 반드시 지켜져야 합니다:
소스는 더 낮은 전압으로, 드레인은 더 높은 전압으로 연결합니다. 드레인을 더 높은 레일에 두면 바디 다이오드가 역방향 바이어스되어 아무 작용도 하지 않습니다. 둘을 바꾸면 바디 다이오드가 항상 순방향 바이어스됩니다. 게이트가 무엇을 하든 상관없이 이제 더 높아진 소스에서 바디 다이오드를 통해 더 낮아진 드레인으로 전류가 흐릅니다. MOSFET은 더 이상 스위치 역할을 하지 못합니다. 지속적으로 누설되고, 신호를 끌 수 없으며, 소자가 종종 과열되어 고장 납니다.
게이트는 소스의 전압 레일에 묶습니다. 정지 상태에서 소스가 위치한 레일에 게이트를 유지하면 유휴 시
Vgs = 0이 되어 임계값보다 한참 아래에 있습니다. 무언가가 게이트를 소스보다 높게 구동하거나(아래의 단방향 회로) 소스를 게이트보다 낮게 당기기(양방향 회로) 전까지 MOSFET은 확실히 꺼진 상태를 유지합니다. 게이트를 다른 곳에 띄워두면 오프 상태가 더 이상 정의되지 않습니다. 노이즈, 누설, 또는 부유 정전용량이Vgs를 임계값 위로 표류시켜 MOSFET을 무작위로 켤 수 있습니다.
두 규칙 중 하나라도 어기면 레벨 시프터는 누설이 있는 불안정한 경로가 됩니다. 아래의 두 시프터 회로 모두 이 규칙을 따릅니다. 소스는 낮은 쪽에, 드레인은 높은 쪽에, 게이트는 소스의 레일에 묶거나 그 레일에서 구동합니다.
3.8.3. 단방향 3.3V → 5V¶
가장 단순한 레벨 시프터는 카메라의 GPIO에서 5V 입력으로 단방향 신호를 밀어 넣습니다. 단일 N-MOSFET과 저항 두 개면 충분합니다.
N-MOSFET이 3.3V 신호를 5V 출력으로 레벨 시프트(및 반전)합니다.¶
GPIO가 하이를 구동하면(게이트에 3.3V) Vgs가 임계값보다 높아져 MOSFET이 켜지고 드레인이 약 0V로 당겨집니다. GPIO가 로우를 구동하면(게이트에 0V) MOSFET이 꺼지고 10kΩ 풀업이 드레인을 5V로 끌어올립니다.
출력은 입력의 반전입니다. 소프트웨어로 신호를 다시 뒤집거나(“5V 출력 하이”를 위해 0을 씀), 두 단을 직렬로 연결하여 부품 수를 두 배로 들여 비반전 신호를 얻을 수 있습니다.
3.8.4. N-MOSFET 하나로 양방향 구현¶
양쪽 어디에서든 구동되어야 하는 라인, 즉 어느 쪽 끝에서든 라인을 로우로 당길 수 있는 공유 버스의 경우, 표준 회로는 라인당 단일 N-MOSFET 하나에 각 쪽 공급 전압으로 풀업을 하나씩 두는 것입니다.
단일 N-MOSFET이 3.3V 라인과 5V 라인을 연결하며, 각 쪽에는 자체 풀업이 있습니다.¶
게이트가 3.3V 공급에 묶여 있으므로 MOSFET의 동작은 어느 쪽이 구동하느냐에 따라 달라집니다:
양쪽 모두 유휴 상태. 소스는 왼쪽 풀업을 통해 3.3V에 있고, 게이트는 3.3V이며,
Vgs = 0이므로 MOSFET은 꺼져 있습니다. 5V 쪽은 오른쪽 풀업을 통해 5V로 떠 있습니다. 양쪽 모두 하이로 읽힙니다.3.3V 쪽이 로우로 당김. 소스가 0V로 떨어지고,
Vgs가 임계값 위로 상승하며, MOSFET이 켜져 소스에서 드레인으로 도통합니다. 5V 쪽이 트랜지스터를 통해 로우로 당겨집니다.5V 쪽이 로우로 당김. 드레인이 0V로 떨어지고, MOSFET의 바디 다이오드(드레인에서 소스로)가 순방향 바이어스되어 도통하며, 소스(3.3V 쪽)가 약 0.6V로 당겨집니다. 그러면
Vgs가 임계값을 초과하여 MOSFET이 완전히 켜지고 양쪽 모두 로우가 됩니다.
BSS138은 이 패턴에 표준으로 쓰이는 N-MOSFET입니다. 게이트 임계 전압이 비슷한 소신호 로직 레벨 N-MOSFET은 여기서 모두 같은 방식으로 동작합니다.