Zrozumienie prędkości transmisji danych przez drut miedziany


11

Badałem różne sposoby podłączania czujników do Arduino, a i2c wydaje się być popularną metodą. Czytałem, że jest niezawodny tylko na krótkich odległościach (najwyżej kilka metrów), z szybkością transmisji danych 400 lub 100 kb / s. Trudno mi zrozumieć, dlaczego limity tego protokołu są tak niskie w porównaniu z innymi transmisjami danych za pośrednictwem miedzi, takimi jak gigabit Ethernet. Widziałem powody, takie jak pojemność, spadek napięcia i rezystancja, ale czy Ethernet w sieci Cat5 / 6 nie podlega tym samym problemom? Zasadniczo chcę wiedzieć, dlaczego pulsowanie pewnego napięcia w dół jakiegoś drutu miedzianego nie daje bardziej spójnych wyników (szerokość pasma, odległość) przy porównywaniu tych różnych metod.


Istnieje wiele głównych protokołów z określonymi ograniczeniami, które często są ignorowane. Ethernet jest niezawodny tylko do 30 stóp bez repeatera. USB ma mniej niż 10 stóp. To nie znaczy, że ludzie nie przekraczają granic. Są to decyzje wdrożeniowe oparte na tym, jak szybko / rzetelnie potrzebujesz danych i czy możesz sobie pozwolić na narzut danych związany z sprawdzaniem CRC.
mreff555,

Chciałbym tylko zaznaczyć, że chociaż I2C nie jest przeznaczony do tego celu, to zdecydowanie powinno być możliwe korzystanie z niego na ponad 100 metrach. (Ma taką samą teoretyczną maksymalną odległość jak sieć Ethernet). Jednak albo będziesz miał bardzo niską prędkość transmisji, LUB twoje prądy podciągające będą absurdalne.
Opifex

@Opifex Ludicrous speed!
DKNguyen,

1
To nie jest odpowiedź i być może stwierdzam oczywiste, ale ograniczenia w I2C (lub innym protokole) są zasadniczo spowodowane materiałem drutu i protokołem. Sedno twojego pytania wydaje się brzmieć: „jeśli metoda X daje mi A nad miedzią, to czy Y i Z nie powinny też dać mi A?”. co nie jest z natury prawdą.
dwizum

6
Czy pod pojęciem 30 stóp masz na myśli 328 stóp / 100 m @ mreff555? Taka jest specyfikacja dla skrętki Ethernet, starszy koncentryczny ethernet był jeszcze dłuższy (200 m dla 10base2, 500 m dla 10base5).
Mark Booth

Odpowiedzi:


14

Twierdzenie Shannona określa ostateczny limit przepustowości informacji na kablu. Oto więcej informacji na ten temat: https://www.gaussianwaves.com/2008/04/channel-capacity/

tl; wersja dr: równanie Shannona-Hartleya:

  • C=Blog2(1+SN)(1)

BSN

I2C oczywiście nie jest w pobliżu granicy Shannona dla kabla. Zamiast tego jest to lekki protokół z celowo wolnym czasem (100/400 kbit / s), wykorzystujący magistralę z otwartym kolektorem, aby ułatwić wdrożenie w sieci małych urządzeń o skromnych wymaganiach we / wy i kontroli. Wolna praca określona przez I2C pozwala uniknąć większości problemów z integralnością sygnału.

Istnieją szybsze warianty I2C, które używają prędkości 1 Mbit i 3,2 Mbit / s. Wymagają one większej uwagi do układu i zakończenia niż normalny I2C i oczywiście mają bardziej rygorystyczne, bardziej wymagające czasy.

Podążając w górę łańcucha pokarmowego pod względem Shannon, Gbit Ethernet wykorzystuje wiele technik w celu osiągnięcia swojej przepustowości:

  • Sygnalizacja różnicowa
  • Wiele par (4)
  • Sygnalizacja wielopoziomowa, zwana PAM-5
  • Preemphasis / Deemphasis
  • Adaptacyjne wyrównanie

Techniki te wymagają dużej ilości krzemu, w tym szybkiego, dużego bloku ADC / DAC z mieszanym sygnałem, aby rozmawiać z kablem i dość ciężkiego przetwarzania sygnału do zarządzania nim. Dodaj do tego znacznie bardziej złożony stos oprogramowania, aby go napędzać. To sprawia, że ​​Ethernet jako blok na chipie jest trochę większy dla mikrokontrolera z niższej półki (niektóre z nich decydują się na użycie zewnętrznego PHY). Jego dojrzałość sprawia jednak, że znajduje się w zasięgu większych systemów na chipie.

W każdym razie, jak blisko jesteśmy granicy Shannona? Więcej tutaj: https://pdfs.semanticscholar.org/482f/5afbf88a06d192f7cb052f543625c4b66290.pdf


Hah, istnieje voodoo: wstępne podkreślenie i odwrócenie uwagi. Zatem sieć Ethernet nie tylko wysyła kwadratowe impulsy, a nawet fale sinusoidalne wzdłuż linii i modli się, aby nie uległa nadmiernemu zniekształceniu, zanim dotrze do celu. Kształtuje analogowy przebieg i przesyła go wzdłuż linii.
DKNguyen,

3
@DKNguyen Prawdziwy voodoo dla sieci Ethernet o przepustowości 100 megabitów lub większej znajduje się w odbiorniku. Wykorzystywane są adaptacyjne algorytmy wyrównywania, obecnie często wdrażane cyfrowo; odebrany sygnał zasila ADC, a następnie sprzęt DSP (wszystko w twoim urządzeniu PHY za 0,50 USD). Technologia w nowszym szybkim protokole jest znowu znacznie bardziej zaawansowana.
scary_jeff

Dziękuję @scary_jeff o eq adaptacyjnym. przypomnienie. Dodałem to do mojej odpowiedzi.
hacktastical

6

Transmisja to coś więcej niż tylko kabel miedziany. Czy widziałeś sprzęt za Ethernetem? Prawdopodobnie nie, ponieważ niezwykle trudno jest znaleźć obwody na poziomie podstawowym do tego, co faktycznie się dzieje, ponieważ wnętrzności są zawsze ukryte w układzie scalonym. Najbliższe, jakie kiedykolwiek znalazłem, to magnetyka wymagana dla sieci Ethernet, które najwyraźniej nie są opcjonalne. To tylko wskazówka tego, co dzieje się fizycznie ze sprzętem Ethernet.

Pomyśl o tym w ten sposób: powietrze jest medium. Dlaczego rodzaj informacji, które mogą być przekazywane, gdy psy rozmawiają ze sobą, jest o wiele mniejszy niż gdy ludzie rozmawiają ze sobą? Dlaczego wysyłanie niektórych fal ciśnienia przez powietrze nie daje bardziej spójnych wyników w komunikacji między tymi dwoma typami zwierząt?

Tylko niektóre czynniki ograniczające I2C (i wiele innych protokołów) to:

  1. napęd z otwartym kolektorem
  2. brak dopasowania impedancji
  3. brak zrównoważonej transmisji
  4. brak sprawdzania błędów
  5. prosty schemat kodowania
  6. stosunkowo wysokie poziomy napięcia (jeśli stopień napięcia nie musi być tak duży, możesz przesyłać szybciej, ponieważ twój dV / dT nie musi być tak wysoki dla wyższych prędkości)
  7. bez izolacji
  8. napięcia jednobiegunowe (sieć Ethernet przesyła przy +/- 2,5 V, co prawdopodobnie jakoś pomaga)
  9. Transmisja urządzenia podrzędnego jest taktowana przez urządzenie nadrzędne, więc w zasadzie zegar musi odbyć podróż w obie strony szybciej niż sygnał danych

Wszystko to jest dobre do uproszczenia. Nie tak dobre dla wysokich prędkości transmisji danych lub transmisji na duże odległości.

Prawdopodobnie w sprzęcie działa też inne voodoo, o którym nie wiem.


6

Kilka prostych zasad: Nie ma czegoś takiego jak ziemia. Wszystkie przewody są antenami. Wszystkie przewody są liniami przesyłowymi. Zawsze jest hałas.

Jeśli drut jest krótki w porównaniu do czasu narastania sygnału, możesz zignorować niedopasowania i odbicia impedancji linii transmisyjnej (w przeciwieństwie do Ethernetu, który wymaga skomplikowanych zakończeń i kształtowania impulsu). Jeśli drut jest długi, wówczas indukowane napięcia na przewodzie i różnice w uziemieniu mogą sprawić, że poziomy sygnału cyfrowego na drugim końcu będą nieokreślone lub nieprawidłowe. Ale Ethernet wykorzystuje różnicową sygnalizację skrętkową, co znacznie zmniejsza indukowany szum i problemy z odniesieniem do ziemi. Odbiornik Ethernet wykorzystuje również bardziej czułe wejścia analogowe niż typowe wejścia cyfrowe, co pozwala na większą utratę linii. Dodaj do tego kodowanie Ethernet i korekcję błędów, aby przezwyciężyć statystyki szumów, a możesz bardziej niezawodnie jechać szybciej i dalej.


5

I2C jest szyną otwartego odpływu , jest aktywnie obniżany, ale podciąganie (przynajmniej dla normalnych wariantów 100 kHz, 400 kHz) to rezystory pasywne.

Z tego powodu istnieje ograniczenie, jak szybko rzecz może działać w zależności od tego, jak szybko rezystory podciągające mogą ładować pojemność magistrali, czasami można uzyskać większą prędkość, obniżając wartości podciągania, ale to oznacza, że ​​węzły muszą się zatonąć więcej prądu, aby uzyskać niską logikę ... Lub możesz iść w drugą stronę, spowolnij magistralę, aby umożliwić użycie rezystorów podwyższających o wyższej wartości w celu zmniejszenia rozproszenia mocy (patrz na przykład magistrala PM).

Warto strzelić z lunety i zauważyć, że zbocze opadające na I2C jest DUŻO ostrzejsze niż wznoszące.

W przypadku zamierzonego zastosowania, w zasadzie czujników temperatury i małych urządzeń konfiguracyjnych w obrębie jednej płyty (lub co najwyżej pojedynczej obudowy), okazuje się, że trafia w dobre miejsce między złożonością wdrożenia, niską liczbą pinów i prostym sprzętem. Zamiarem projektu nie było „szybkie łącza danych na duże odległości”, a dla mnie, ogólnie rzecz biorąc, SPI jest łatwiejsze w obsłudze, I2C bardzo dobrze pasuje do zamierzonego zastosowania.

Gdy odległości się zwiększą, wtedy coś innego staje się lepiej dopasowane, ale na płytce ze skromnymi interfejsami konfiguracji eeprom / temperatura / urządzenie robi to całkiem dobrze (Warto zauważyć, że interfejs zarządzania PHY wygląda DUŻO jak I2C).


2

Różne wyniki są takie, ponieważ obwód sterownika jest inny dla każdej technologii.

I2C 100 kHz zwykle wykorzystuje rezystor podciągający, aby ustawić sygnał na wysokim poziomie, a sterowniki otwartego drenu, aby ustawić sygnał na niskim poziomie.

Rezystory podciągające mają zwykle kilka kilo omów. Im dłuższy kabel, tym większa będzie jego pojemność. Czas przejścia linii od 0 do 1 będzie proporcjonalny do całkowitej pojemności linii i wartości rezystora podciągającego. Gdzieś w przedziale około T = 2 * R * C byłoby w porządku.

Na przykład, jeśli masz 10-metrowy kabel, który miał 20pF na stopę pojemności i użyłeś rezystora podciągającego 10K, to przejście z niskiej na wysoką zajęłoby T = 2 * 20pF / ft * 10 stóp * 10K = 3,6us.

W tym przypadku oczywiście nie możesz mieć żadnych bitów po bicie zerowym o szerokości mniejszej niż 3,6us, więc Twoja szybkość transmisji byłaby ograniczona do 277 kHz.

W prawdziwym systemie I2C specyfikacja I2C dodatkowo nakazuje konfigurowanie i utrzymywanie czasów wokół przejść danych i zegara. Czasy te wynoszą setki nanosekund lub mikrosekund. Czas został specjalnie spowolniony celowo, aby można było tanio wdrożyć urządzenia (grosze) i zużywać bardzo mało energii (miliwaty).

Z drugiej strony Ethernet może działać szybciej pomimo pojemności kabla, ponieważ nie wykorzystuje rezystora podciągającego. Aktywnie wjeżdża albo wysoko, albo nisko do kabla. Sterownik ma niską impedancję i może bardzo szybko naładować dowolną pojemność linii. Oczywiście, że wszystko ma swoją cenę. Ethernet zwykle zużywa setki mW energii i kosztuje co najmniej kilka dolarów za port do wdrożenia.

Czy konfiguracja podobna do I2C działa szybciej, po prostu zmień podciągnięcie 10K na 100 omów, a teraz czas narastania do 10 stóp spadku kabla z 3,6us do 36ns. Prawdopodobnie mógłbyś wtedy pracować z częstotliwością około 10 MHz bez zbyt wielu problemów (poza tym, że zwykłe układy I2C nie potrafią mówić tak szybko).

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.