Zaczynam od elektroniki i już jestem zafascynowany. Grając z Arduino w ciągu ostatnich kilku dni jestem świadomy, że binarne jest reprezentacją różnych napięć - takich jak reprezentowanie + 5V 1
i reprezentowanie GND 0
.
Próbowałem odkryć, w jaki sposób na poziomie fizycznym mikrokontroler przekształca układ binarny na te napięcia. Nie mogę znaleźć opisu w dowolnym miejscu. Czy ktoś może podzielić się swoją wiedzą lub wskazać mi miejsce / dobrą książkę, która opisuje, jak to działa?
Odpowiedzi:
Chcę przekształcić część odpowiedzi KellenJB w nieco inny sposób:
Nie ma konwersji z binarnych 1 i 0 na napięcia takie jak 5 V i 0 V. Mikrokontroler lub jakikolwiek obwód fizyczny po prostu działa na napięcia.
Napięcia te są „zamieniane” na binarne 1 i 0 w naszych głowach, gdy tworzymy w naszym umyśle uproszczony model działania obwodu.
źródło
Tak naprawdę nie ma miejsca „konwersja”. Binarne 1 i 0 to po prostu wirtualna reprezentacja podstawowych napięć. W rzeczywistości w wielu systemach wysokie napięcie może oznaczać 0, podczas gdy niskie napięcie oznacza 1. Istnieje kilka powodów, dla których tak się dzieje, ale prawdopodobnie bardziej niż o to chodzi.
Aby zrozumieć, co dzieje się w logice, prawdopodobnie najlepiej zajrzeć do tranzystora. Tranzystor może być używany do wielu rzeczy, ale na prostym poziomie można go traktować jak przełącznik. Koncepcyjnie możesz myśleć o tym jak o włączniku światła na ścianie, ale zamiast być kontrolowanym przez fizyczne przesunięcie przełącznika, jest on kontrolowany przez zmianę prądu. Możesz traktować światło włączone jako 1, a światło wyłączone jako 0. Teraz możesz zacząć łączyć te przełączniki w różnych zestawach, aby tworzyć różne elementy logiczne (takie jak AND, OR, NOR itp.).
Wiem, że moja odpowiedź nie jest strasznie szczegółowa, ale mam nadzieję, że odpowie na twoje pytanie. Jeśli potrzebujesz więcej wyjaśnień, chętnie dodam więcej szczegółów, po prostu nie chcę cię przytłaczać.
źródło
Krótka odpowiedź brzmi: „nie przelicza się”, napięcia są binarne (lub ich reprezentacja). Podobnie jak w przypadku pisania liczby na jakimś papierze, znaki są reprezentacją liczby lub liczą na liczydło, kamienne pozycje są reprezentacją liczby.
Binarny to system liczbowy, podobnie jak dziesiętny (lub ósemkowy, szesnastkowy itp.)
Podczas gdy dziesiętny (podstawa-10) ma 10 symboli (0123456789) binarny (podstawa-2) ma tylko dwa (01)
Sekwencja 10 w dowolnej zasadzie oznacza podstawę do pierwszej potęgi, więc w systemie dziesiętnym 10 oznacza 10 ^ 1 = 10, a w systemie binarnym oznacza 2 ^ 1 = 2. Następnie 100 w systemie dziesiętnym oznacza 10 ^ 2 = 100, a binarnie oznacza 2 ^ 2 = 4. I tak dalej.
Reprezentacja dziesiętna przy użyciu elektroniki byłaby możliwa, ale skomplikowana, dlatego wybrali układ binarny, który może być reprezentowany przez proste 0 i 1 (lub włączone / wyłączone).
Były odmiany na przykład, systemy trójskładnikowe (3 stany) i oczywiście obliczenia analogowe . Przed tranzystorami istniały mechaniczne maszyny do dziurkowania kart (Google wie dużo, niektóre bardzo interesujące lektury, jeśli masz czas)
. Najwcześniejsze binarne komputery cyfrowe były wykonane z prawdziwych przełączników (przekaźników elektronicznych). Zuse Z3 (1941) to na przykład:
Następnie zastosowano przekaźniki zamiast przekaźników (mogły przełączać się szybciej bez ruchomych części mechanicznych), które przełączały zamiast przekaźników. ENIAC jest przykładem wczesnego komputera wykonane z rurek próżniowych.
Potem w latach 60. przybyły tranzystory i wkrótce po układach scalonych. Tranzystory pełnią tę samą funkcję, co przekaźniki / zawory we wcześniejszych maszynach, ale były znacznie mniejsze, szybsze i zużywały mniej energii.
Rzeczywista teoria stojąca za podstawowym sposobem działania binarnych obwodów komputerowych wcale się nie zmieniła, podobnie jak nie zmieniliśmy sposobu, w jaki manipulujemy liczbami w matematyce - algorytmy ulegają poprawie, ale podstawowe zasady pozostają takie same.
Jeśli więc wiesz, jak działa układ binarny, i masz prosty obwód, który może przechowywać 1 lub 0 jako dwa różne poziomy napięcia (np. 5 V i 0 V) oraz inne proste obwody, które mogą wykonywać proste funkcje logiczne, takie jak AND i OR, to możesz połączyć je wszystkie, aby robić bardziej złożone rzeczy.
Ponieważ wszyscy te obwody binarne są po prostu najbardziej podstawowymi przełącznikami, możesz osiągnąć to samo za pomocą wszystkiego, co może przełączać się między dwoma stanami, takimi jak mechaniczny / przekaźnik / zawór / tranzystor / ?.
Aby podać przykład przechowywania liczby w systemie binarnym, powiedzmy, że mamy 8 przełączników (jakiego rodzaju nie są ważne)
1 jest reprezentowany przez 5 V, a 0 jest reprezentowany przez 0 V.
Chcemy przechowywać numer 123.
W systemie dziesiętnym jest 123 = (1 X 10 ^ 2) + (2 * 10 ^ 1) + (3 x 10 ^ 0)
W systemie dwójkowym jest 01111011 = (0 x 2 ^ 7) + (1 x 2 ^ 6) + (1 x 2 ^ 5) + (1 x 2 ^ 4) + (1 x 2 ^ 3) + (0 x 2 ^ 2) + (1 x 2 ^ 1) + (1 x 2 ^ 0)
Więc wszystko robimy ustawiamy przełączniki 0,1,3,4,5,6 na 5 V oraz przełączniki 7 i 2 na 0 V. To „przechowuje” liczbę 123 w postaci binarnej. Ta konfiguracja byłaby znana jako „rejestr”.
Jeśli chcesz dowiedzieć się więcej o tym, jak łączą się przełączniki, tworząc bardziej złożone obwody, zdobądź dobrą książkę na temat logiki cyfrowej lub zapytaj google.
Ta strona nie wydaje się taka zła na początek.
źródło
Uruchomiony program używa napięć reprezentujących jedynki i zera. Wszystko w tej części cyfrowej to napięcie albo blisko ziemi, albo blisko napięcia zasilania (5 V w twoim przykładzie). Po załadowaniu rejestru procesora z 0xFF powiedzmy, że tworzysz 8 oddzielnych sygnałów 5Volt gdzieś w układzie. Gdy następnie zapiszesz tę wartość rejestru w rejestrze sterującym, który jest powiązany z portami wyjściowymi, piny wyjściowe urządzenia rejestrują sygnały 5 V w rejestrze procesorów, a następnie powodują tworzenie innych sygnałów 5 V, które są podłączone do zewnętrznych pinów urządzenia .
źródło
Napięcia są tylko sposobem reprezentacji układu binarnego. Jest to dość wydajna i praktyczna konwersja, która pozwala na implementację logiki binarnej przy użyciu różnych konfiguracji tranzystorów.
Logika binarna jest zwykle implementowana elektronicznie za pomocą technologii CMOS ( http://en.wikipedia.org/wiki/CMOS ), w której dwa tranzystory MOS są ustawione w komplementarnej parze w celu utworzenia bramki CMOS. Istnieją jednak inne elektroniczne implementacje logiki binarnej, na przykład wykorzystujące TTL ( http://en.wikipedia.org/wiki/Transistor –transistor_logic) lub przekaźniki. Ale przydałoby się naprawdę wszystko, papierowe, papierowe kozy robotów: http://www.robives.com/category/product_tags/logic_goats . Elektroniczna implementacja CMOS okazuje się być wydajna i praktyczna.
Z tych prostych bram CMOS można budować bardziej skomplikowane bramki logiczne: NAND i NOR, standardowe bramy NIE, to te podstawowe. Z nich możesz zbudować wszystko, co jest logiką binarną, sumatorem, plikiem rejestru, pamięcią. Z nich możesz zbudować ALU, aż do kompletnego mikroprocesora.
Jeśli chcesz więcej informacji, możesz przeczytać książkę o logice cyfrowej, tak się składa, że lubię tę:
http://www.amazon.com/Digital-Systems-Principles-Applications-11th/dp/0135103827/ref=sr_1_1?s=books&ie=UTF8&qid=1326877355&sr=1-1
Dobrym praktycznym sposobem na zrozumienie budowy procesora jest zbudowanie go samemu, przy użyciu VHDL i FPGA. Możesz dostać tanie płyty programistyczne FPGA, a oprogramowanie jest zwykle bezpłatne (dla ograniczonej licencji). Mam kilka digilent, które są dość przystępne:
http://www.digilentinc.com/
źródło
Krótko mówiąc, w danym zakresie (zwykle od 5 do 12 woltów) najbardziej znaczącym bitem jest 0 w pierwszej połowie tego zakresu i 1 w drugiej. Następny najbardziej znaczący bit jest obliczany przez dalsze dzielenie tej połowy na dwie części i tak dalej, aż wszystkie bity zostaną obliczone.
Dlatego binarne polega na zwiększaniu i zmniejszaniu napięć mierzonych okresowo.
Oto uproszczony przykład. W zakresie od 1 V do 256 V przetłumaczmy (analogowy) 137 na binarny (numeryczny) za pomocą pseudokodu:
źródło