I²C에 풀업 저항 만있는 이유는 무엇입니까 (면접 질문)?


15

면담 자는 반대 논리를 구현할 수있을 때 풀업 저항SDA 및 SCL 에 사용되는 이유를 알고 싶어했습니다 . 풀업 저항 사용이 선택된 설계 인 이유에 대한 설명이 있습니까?



그냥 초고속 모드 I2C 버스 프로토콜은 푸시 풀 구성으로 운영 않는 주석을 참조로 nxp.com/documents/user_manual/UM10204.pdf , 3.2 절 초고속 모드 I2C 버스 프로토콜
Kvegaoro

NXP가 양방향 SDA와 단방향 SCK를 사용하는 초고속 I2C 프로토콜을 지정하지 않은 이유, 출력을 높이고 싶을 때 마스터 드라이브 SDA가 힘들었고 라인이 길게 당겨질 때까지 마스터를 오래 기다린 이유가 궁금합니다. 노예가 무엇을 말해야할지 걱정이되는 경우
supercat

면접관이 답변을 해주었습니까?
copper.hat

답변:


14

Jon의 답변을 조금 확장하려면 다음을 수행하십시오.

예, 사용하려는 MOSFET과 관련이 있습니다.

N 채널 MOSFET은 다음과 같은 이유로 P 채널보다 스위칭 로직에 훨씬 좋습니다.

  • 일반적으로 저항이 훨씬 낮습니다 ( )RDSON
  • 그들은 더 빠르게 켜고 끕니다.

따라서 오픈 드레인 구성 (I2C)의 경우 P 채널 MOSFET의 "유휴 낮음"보다는 N 채널 MOSFET의 "유휴 높음"배열을 사용하여 훨씬 저렴하고 쉽게 구성 할 수 있습니다.

세 번째 옵션은 N 채널 MOSFET을 사용하는 "유휴 낮음"이지만 MOSFET을 켜려면 소스 전압보다 게이트 전압을 충분히 높이려면 고전압 게이트 드라이버가 필요합니다. 소규모 통신 버스에는 실용적이지 않지만이 배열은 실제로 H- 브리지의 하이 측과 로우 측에서 동일한 (또는 유사한) 응답을 원하는 모터 구동을위한 H- 브리지에서 매우 일반적으로 사용됩니다. H- 브리지에서 P- 채널과 N- 채널 쌍을 사용하면 일반적으로 P- 채널을 끄고 N- 채널을 켜는 데 데드 존 (dead zone)을 통합해야합니다. .

그러나 고속, 저비용 및 사용의 간편성이 필요한 I2C와 같은 소규모 통신 버스의 경우 N 채널 MOSFET 및 풀업 저항을 갖춘 "유휴"가 가장 비용 효율적입니다.


나는 "고속"이 I2C (적어도 초기 디자인에서는)에서 고려되는 것에 동의하지 않는다. 저항 풀업은 그것이 목표라면 고속을 달성하는 방법이 아닙니다.
광자

1
고속 스위칭과 높은 대역폭을 혼동하지 마십시오. 고속 스위칭은보다 선명한 에지를 제공하여보다 안정적인 통신을 의미합니다.
Majenko

1
저항 풀업도 더 높은 스위칭 속도를 달성하는 방법이 아닙니다.
광자

hi2는 I2C에 적합한 저항 값을 선택하는 것이 중요한 이유이며 'Arduino가 기본적으로 내부 풀업을 사용하기에 악의적 인 이유입니다.
Majenko

그렇습니다. 더 나은 상승 시간을 얻기 위해 저항을 선택할 수 있습니다. 그러나 전체 시스템은 여전히 ​​토템 폴 드라이버보다 더 느리거나 더 많은 전력을 사용합니다 (물론 다른 비용이 추가됩니다).
광자

12

수동 풀업 / 액티브 풀다운의 또 다른 장점은 다양한 전원 전압에서 작동 할 수 있다는 것입니다. 디지털 하이 레벨과 로우 레벨은 IIC로 명시 적으로 지정됩니다. 이러한 레벨은 3.3V 풀업과 함께 작동하기에 충분히 낮습니다. 따라서 5V 및 3.3V 전원으로 작동하는 장치를 구축 할 수 있습니다. 실제로, IIC 버스 라인은 최대 3.3V로 풀링 될 수 있으며, 이는 서로 다른 전압으로 별도로 전원이 공급되는 버스의 여러 장치와 함께 작동합니다.


나는 거의 100 % 이것이 그들이 찾고있는 대답이며, 큰 CPU 제조 회사 (그중 하나)를 인터뷰 할 때 그 사람이 찾고있는 대답이라고 친구에게 물었습니다.
user34920

6

NMOS는 속도 / 면적 측면에서 PMOS에 비해 이점이 있지만,이 차이는 한두 개의 핀에서 드라이버에 대해 이야기 할 때 실제로는 미미합니다. 결국 대부분의 출력 드라이버는 실제로 NMOS와 PMOS를 모두 요구하는 토템 폴 유형이므로 풀다운 또는 풀업 구성 중 어느 것을 선택하든 토템보다 작은 출력 드라이버로 끝났을 것입니다 극 운전사.

그러나 I2C에 직접 적용되지 않는 PMOS 오픈 드레인에 비해 NMOS 오픈 드레인 출력의 이점이 있습니다. VCC가 양수이면 NMOS 오픈 드레인을 통해 VCC 레벨이 다른 칩을 서로 연결할 수 있습니다. 이것이 수많은 NMOS 오픈 드레인 디스크리트 로직 IC를 사용할 수있는 이유입니다.

다른 한편으로, 나는 시장에서 사용 가능한 모든 PMOS 오픈 드레인 칩을 알지 못합니다. 실제로 나는 어떤 칩에서도 PMOS 오픈 드레인 출력을 경험했다고 생각하지 않습니다. (ECL을 여러 번 사용했는데 PMOS 오픈 드레인과 비슷한 동작을 갖는 NPN 오픈 이미 터 출력이 있습니다)

NMOS 오픈 드레인 디스크리트 로직 칩의 가용성으로 인해 NMOS 오픈 드레인은 PMOS 오픈 드레인보다 전자 설계자에게 훨씬 친숙합니다.

이산 칩의 친숙성과 가용성 (예 : 프로토 타이핑 등)은 I2C 설계자에게 NMOS 오픈 드레인 구성을 선택하는 데 영향을 미쳤습니다.


6

나는 우리가 왜 부정적 접지 규칙을 사용하는지에 대한 답으로 되돌아 간다고 생각한다. (그리고 이것은 반도체 시대 이전에는 유비쿼터스가 아니었다.) 그 이유는 N- 채널 장치가 사용되는 다수의 반송파 유형의 물리학으로 인해 P- 채널 장치보다 성능이 우수하기 때문입니다.

집적 회로의 초기에는 이것이 심각한 한계 였으므로 가능한 최고의 성능을 달성하기 위해 N- 채널 (또는 NPN) 트랜지스터를 사용하는 것이 선호되었습니다. 이로부터 부정적인 접지 시스템과 개방형 컬렉터 출력을 얻었으며 풀다운보다는 풀업 저항을 사용해야했습니다.

물론 I2C 버스는 고속이 아니기 때문에 풀다운 저항을 사용하여 구현할 수 없었을뿐만 아니라 이점도 없습니다. 따라서 우리는 관습을 고수하고 풀업을 사용합니다.


2

다음은 (역사적으로 접지 된) 추측입니다.

풀업이 아닌 풀업을 사용하면 과도한 전류가 흐르지 않고 버스에 대해 여러 장치를 경합 할 수 있습니다 (좋은 일이지만 풀다운으로 동일한 결과를 얻을 수 있음).

바이폴라 트랜지스터의 "구시대"에서 가장 간단한 TTL 로직은 NPN 트랜지스터와 함께 오픈 컬렉터를 사용했습니다. 모든 것이 접지를 기준으로하므로 버스 전압에 관계없이 트리거 레벨을 간단하게 정의 할 수 있습니다. 또한 NPN은 PNP보다 빠릅니다.

자체 공급 전압으로 작동하는 여러 장치가 있고 해당 공급 전압이 일정하지 않은 경우 풀다운이 아닌 풀업이 필수적 입니다. 여러 장치가 버스를 각 공급 레일로 가져 오려고하면 전류 흐름이 제한되지 않고 무언가가 튀길 수 있습니다. 적어도 그들은 모두 지상의 가치에 동의 하므로이 문제는 발생하지 않습니다.

CMOS를 사용하면 스토리가 변경됩니다. 이제 트리거 레벨이 미드 레일입니다. 그러나 EE는 전통적인 무리 일 수 있습니다. 확실히, 트랜지스터 초기 시절부터 나는 위의 이유로 풀업 선택에 의문을 제기 하지 않았습니다 .

내가 말했듯이, 이것은 단지 추측입니다.


1

이것은 역사적인 것일 수 있습니다.

구형 트랜지스터와 집적 회로는 실제로 0V보다 5V 일 때 더 적은 전력을 소비합니다. 두 레벨간에 큰 차이가 있기 때문에 설계자들은 '유휴'상태를 5V로 설정했습니다. 그런 다음 시간이 지남에 따라 트랜지스터와 IC가 개선되어 두 상태가 거의 같은 양의 전력을 소비하지만 표준을 변경할 실제 이유는 없었습니다.

이제 유휴 상태가 5V 인 표준은 결코 바뀌지 않았기 때문에 이와 같은 많은 것들을 볼 수 있습니다.


대부분의 IC가 소스보다 더 많은 전력을 싱크 할 수 있다는 것은 여전히 ​​사실이므로 여전히 적용 가능합니다.
Joel B

1

I2C 스펙을 읽은 지 몇 년이 지났지 만, 처음 사용 된 사람들이 종종 2- 와이어-오픈-콜렉터 버스라고 불렀던 때를 기억합니다. 비트 뱅킹에도 연결 및 충돌 감지가 매우 쉬워졌습니다. 20 년 전만해도이 버스는 고성능 버스로 간주되지 않았으며 싸고 쉬웠습니다.


1

I2C가 연결된 모든 장치가 오픈 드레인 또는 오픈 컬렉터 여야하는 버스로 정의되어 있기 때문입니다. 이는 버스가 높지 않고 낮게 만 주행 할 수 있음을 의미합니다. (출력 구동 트랜지스터가 꺼지면 핀은 높은 임피던스 상태입니다.)

이 체계는 예를 들어 신호 전압이 다른 장치를 연결할 수 있고 버스가 통신 오류로부터자가 치유된다는 좋은 이점을 제공합니다.

분명히 표준은 다른 방법으로 유휴-낮음 / 활성-높은 구성으로 정의 될 수 있으며 여기의 다른 답변은 해당 요소에 잘 맞습니다.

출처 : LabWorX 1, I2C 버스 마스터 링, Vincent Himpe I2C에 대한 정말 좋은 책, 역사적 배경, 하드웨어에서 구현하는 방법 및 소프트웨어 및 디버그 구현에서 사용하는 방법.


1

아직 제대로 다루지 않은 사람의 진정한 대답은 (I / O 핀이 허용되는 한) 다른 전압으로 전원이 공급되는 장치를 연결할 수 있다는 것입니다. 예를 들어 3.3V 장치는 1.8V 장치의 IO가 최대 3.3의 전압을 견딜 수있는 한 1.8V의 전원이 꺼진 장치와 통신 할 수 있습니다. 물론 모든 장치는 0V를 구동 할 수 있지만 모든 장치가 풀업 저항에서 전압까지 구동 할 수있는 것은 아닙니다.

또한 대부분의 IC는 소스보다 더 많은 전류를 싱크 할 수 있습니다. 이것은 열 분산 때문입니다. 따라서 풀업에서 싱킹 전류 (구동 접지)가 풀다운으로 전류를 공급 (고전압 구동)하는 것보다 더 쉽습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.