구리선을 통한 데이터 전송 속도 이해


11

센서를 Arduino에 연결하는 다양한 방법을 연구하고 있으며 i2c는 널리 사용되는 방법 인 것 같습니다. 400 또는 100kbps의 데이터 속도로 단거리 (최대 몇 미터)에서만 안정적이라는 것을 읽었습니다. 기가비트 이더넷과 같은 구리를 통한 다른 데이터 전송과 비교하여이 프로토콜의 한계가 왜 그렇게 낮은 지 이해하는 데 어려움을 겪고 있습니다. 커패시턴스, 전압 강하 및 저항과 같은 이유를 보았지만 cat5 / 6 이상의 이더넷이 동일한 문제에 모두 영향을받지 않습니까? 기본적으로, 나는 다른 방법론을 비교할 때 일부 구리 와이어에서 일부 전압을 펄싱해도 더 일관된 결과 (대역폭, 거리)를 산출하지 못하는 이유를 알고 싶습니다.


명시된 제한을 가진 많은 주요 프로토콜이 있으며 종종 무시됩니다. 이더넷은 리피터없이 30ft까지만 안정적입니다. USB가 10 피트 미만입니다. 그렇다고 사람들이 한계를 뛰어 넘지 않는다는 의미는 아닙니다. 이는 데이터의 속도 / 신뢰성 및 crc 검사의 데이터 오버 헤드를 감당할 수 있는지에 따라 구현 결정입니다.
mreff555

I2C가 이런 식으로 사용되지는 않지만 100m 이상 사용할 수 있어야합니다. (이더넷과 이론상 최대 거리가 동일합니다). 그러나 전송 속도가 매우 낮거나 풀업 전류가 터무니 없습니다.
Opifex

@Opifex Ludicrous 속도!
DKNguyen

1
이것은 답이 아니며 아마도 명백한 내용이지만 I2C (또는 다른 프로토콜)의 한계는 본질적으로 와이어 재질 프로토콜 때문입니다. 질문의 요점은 "방법 X가 구리보다 A를 얻는다면 Y와 Z도 A를 가져 오지 않아야합니까?" 본질적으로 사실이 아닙니다.
dwizum

6
30ft, 당신은 328ft / 100m @ mreff555를 의미합니까? 트위스트 페어 이더넷에 대한 사양입니다. 구형 동축 이더넷은 훨씬 길었습니다 (10base2의 경우 200m, 10base5의 경우 500m).
Mark Booth

답변:


14

Shannon 's Theorem은 케이블에서 정보 대역폭의 최대 한계를 설정합니다. 이에 대한 자세한 정보는 다음과 같습니다. https://www.gaussianwaves.com/2008/04/channel-capacity/

tl; dr 버전 : Shannon-Hartley 방정식 :

  • =영형2(1+에스)(1)

어디 Hz로, 대역폭이다 에스 은 신호 대 잡음비입니다.

I2C는 명백하게 케이블의 Shannon 제한 근처에 있지 않습니다. 대신 오픈 컬렉터 버스를 사용하여 의도적으로 느린 타이밍 (100/400 kbit / s)의 가벼운 프로토콜로 적당한 I / O 및 제어 요구가있는 소형 장치의 네트워크에 쉽게 구현할 수 있습니다. I2C에 의해 지정된 느린 작동은 대부분의 신호 무결성 문제를 피합니다.

1Mbit 및 3.2Mbit / s 속도를 사용하는 더 빠른 I2C 변형이 있습니다. 이것들은 일반적인 I2C보다 레이아웃과 터미네이션에 더 많은주의를 기울여야하며 물론 더 타이트하고 더 까다로운 타이밍을 가지고 있습니다.

Gbit Ethernet은 먹이 사슬을 섀넌 (Shannon) 방식으로 확장하여 여러 기술을 사용하여 처리량을 달성합니다.

  • 차동 신호
  • 여러 쌍 (4)
  • PAM-5라는 다단계 신호
  • 프리 엠 퍼시스 / 디엠 퍼시스
  • 적응 형 이퀄라이제이션

이러한 기술은 케이블과 통신하기 위해 빠르고 큰 혼합 신호 ADC / DAC 블록과이를 처리하기 위해 상당히 무거운 신호 처리를 포함하여 많은 실리콘을 필요로합니다. 이것에 더 복잡한 소프트웨어 스택을 추가하십시오. 이로 인해 저사양 마이크로 컨트롤러에서 이더넷을 온칩 블록으로 사용하게됩니다 (일부는 외부 PHY를 사용하도록 선택). 그러나 성숙도는 더 큰 시스템 온칩의 범위 내에서 잘 배치됩니다.

어쨌든 우리는 섀넌 한계에 얼마나 가깝습니까? 자세한 내용은 https://pdfs.semanticscholar.org/482f/5afbf88a06d192f7cb052f543625c4b66290.pdf


하, 부두가 있습니다 : Pre-emphasis와 de-emphasis. 따라서 이더넷은 단순히 사각 펄스 나 사인파를 전송하지 않고 목적지에 도달 할 때 너무 많이 왜곡되지 않도록기도하지 않습니다. 아날로그 파형을 형성하여 회선으로 전송합니다.
DKNguyen

3
@DKNguyen 100 메가 비트 이상의 이더넷을위한 실제 부두가 수신기에 있습니다. 적응 이퀄라이제이션 알고리즘이 사용되는데, 요즘에는 종종 디지털 방식으로 구현됩니다. 수신 된 신호는 ADC 다음에 일부 DSP 하드웨어 (0.50 달러 PHY 장치 내부)를 공급합니다. 최신 고속 프로토콜의 기술은 다시 한 번 더 정교합니다.
scary_jeff

적응 방정식에 대한 Thx @scary_jeff. 조언. 내 대답에 추가했습니다.
hacktastical

6

구리 케이블보다 전송이 더 많습니다. 이더넷 뒤의 하드웨어를 보셨습니까? 아마도 내장이 IC에 숨겨져 있기 때문에 실제로 진행되고있는 것에 대한 기본 레벨 회로를 찾기가 매우 어렵 기 때문일 것입니다. 내가 찾은 가장 가까운 것은 이더넷에 필요한 자성인데, 이것은 선택 사항이 아닙니다. 이것은 이더넷 하드웨어에서 실제로 일어나는 일에 대한 힌트 일뿐입니다.

이런 식으로 생각하십시오 : 공기는 매체입니다. 개가 서로 대화 할 때 전달할 수있는 정보 유형이 인간이 서로 대화 할 때보 다 훨씬 적은 이유는 무엇입니까? 공기를 통해 일부 압력 파를 보내는 것이 왜이 두 종류의 동물 사이의 의사 소통에서보다 일관된 결과를 얻지 못합니까?

I2C (및 다른 많은 프로토콜)의 제한 요소 중 일부는 다음과 같습니다.

  1. 오픈 컬렉터 드라이브
  2. 임피던스 매칭 없음
  3. 밸런스 전송 없음
  4. 오류 검사 없음
  5. 간단한 인코딩 체계
  6. 상대적으로 높은 전압 레벨 (전압 단계가 클 필요가없는 경우 dV / dT가 더 높은 속도로 높아질 필요가 없기 때문에 더 빨리 전송할 수 있음)
  7. 고립 없음
  8. 단극 전압 (이더넷은 +/- 2.5V로 전송되어 어쩌면 도움이 될 것입니다)
  9. 슬레이브의 전송은 마스터에 의해 클럭킹되므로 기본적으로 클럭은 데이터 신호보다 빠르게 왕복해야합니다.

이것들은 모두 일을 단순하게 만드는 데 좋습니다. 높은 데이터 전송률 또는 장거리 전송에는 적합하지 않습니다.

내가 모르는 하드웨어에 다른 부두가있을 수도 있습니다.


6

몇 가지 간단한 경험 법칙 : 근거와 같은 것은 없습니다. 모든 전선은 안테나입니다. 모든 전선은 전송선입니다. 항상 소음이 있습니다.

신호 상승 시간에 비해 와이어가 짧으면 전송 라인 임피던스 불일치 및 반사를 무시하게됩니다 (이더넷과 달리 복잡한 종료 및 펄스 형성이 필요함). 와이어가 길면 와이어 및 접지 차동의 유도 전압으로 인해 디지털 신호 레벨이 결정되지 않거나 부정확해질 수 있습니다. 그러나 이더넷은 트위스트 페어 차동 신호를 사용하여 유도 된 노이즈 및 접지 참조 문제를 크게 줄입니다. 또한 이더넷 수신기는 일반적인 디지털 입력보다 더 민감한 아날로그 입력을 사용하므로 더 많은 라인 손실을 허용합니다. 이더넷의 코딩 및 오류 수정 기능을 추가하여 노이즈 통계를 극복하면 더 빠르고 더 멀리 갈 수 있습니다.


5

I2C는 개방 드레인 버스 이며 능동적으로 낮게 당겨 지지만 풀업 (최소 100kHz, 400kHz 변형의 경우)은 수동 저항입니다.

이 때문에 풀업 저항이 버스 커패시턴스를 얼마나 빨리 충전 할 수 있는지에 따라 얼마나 빨리 작동 할 수 있는지에 대한 제한이 있습니다. 풀업 값을 낮추면 속도가 더 빨라지지만 노드는 싱크해야합니다. 더 낮은 전류를 얻기 위해 더 많은 전류 .... 또는 다른 방법으로 더 낮은 전력 소비를 위해 더 높은 값의 풀업 저항을 사용할 수 있도록 버스 속도를 늦출 수 있습니다 (예 : PM 버스 참조).

스코프를 시작하고 I2C의 하강 에지가 상승하는 것보다 훨씬 더 선명하다는 점에 유의하십시오.

의도 된 용도로, 기본적으로 온도 센서와 단일 보드 (또는 최대 하나의 섀시) 내의 소형 구성 장치는 구현 복잡성, 적은 핀 수 및 간단한 하드웨어 사이의 스폿에 거의 도달합니다. 디자인 의도는 "빠르고 장거리 데이터 링크"가 아니 었으며, SPI가 일반적으로 다루기 쉽다는 것을 알기 때문에 I2C는 의도 된 사용 사례에 매우 잘 맞습니다.

일단 거리가 증가하면 다른 것이 더 적합 해지지 만 적당한 eeprom / 온도 / 장치 구성 인터페이스가있는 보드에서는 합리적으로 잘 작동합니다 (PHY 관리 인터페이스가 I2C와 같은 LOT으로 보인다는 점에 주목).


2

기술마다 드라이버 회로가 다르기 때문에 결과가 다릅니다.

100kHz I2C는 일반적으로 풀업 저항을 사용하여 신호를 높은 레벨에 놓고 오픈 드레인 드라이버를 사용하여 신호를 낮은 레벨에 놓습니다.

풀업 저항은 일반적으로 몇 킬로 옴입니다. 케이블이 길수록 용량이 커집니다. 라인을 0에서 1로 전환하는 데 걸리는 시간은 라인의 총 커패시턴스와 풀업 저항 값에 비례합니다. 약 T = 2 * R * C 범위의 어딘가에있을 것입니다.

예를 들어, 커패시턴스 피트 당 20pF 인 10 피트 케이블이 있고 10K 풀업 저항을 사용한 경우 T = 2 * 20pF / ft * 10ft * 10K = 3.6us가 로우에서 하이로 전환됩니다.

이 경우 폭이 3.6us보다 작은 제로 비트 다음에 하나의 비트를 가질 수 없으므로 전송 속도는 277kHz로 제한됩니다.

실제 I2C 시스템에서 I2C 사양은 데이터 및 클럭 전환에 대한 설정 및 유지 시간을 추가로 요구합니다. 이 시간은 수백 나노초 또는 마이크로 초입니다. 타이밍을 의도적으로 매우 느리게하여 장치를 저렴하게 구현 (페니)하고 전력 (밀리 와트)을 거의 소비 할 수 없었습니다.

반면 이더넷은 풀업 저항을 사용하지 않기 때문에 케이블 커패시턴스에도 불구하고 더 빠르게 실행할 수 있습니다. 케이블로 적극적으로 높거나 낮게 운전합니다. 드라이버는 임피던스가 낮아 모든 라인 커패시턴스를 매우 빠르게 충전 할 수 있습니다. 물론 모든 것이 가격이옵니다. 이더넷은 일반적으로 수백 mW의 전력을 소비하며 구현하는 데 포트 당 최소 몇 달러가 소요됩니다.

I2C와 유사한 설정이 더 빨리 실행될 수 있다면, 10K 풀업을 100 옴으로 변경하면 10ft의 케이블 낙하로 상승 시간이 3.6us에서 36ns로 증가합니다. 그런 다음 너무 많은 문제없이 약 10MHz에서 실행할 수 있습니다 (일반 I2C 칩이 그렇게 빨리 말할 수 없다는 사실 제외).

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