Як бінарний перетворюється на електричні сигнали?


16

Я тільки починаю з електроніки і вже захоплююсь. Погравши з Arduino за останні кілька днів, я знаю, що бінарне - це представлення різної напруги - наприклад, + 5V, яка представляє 1і GND 0.

Я намагався виявити, як на фізичному рівні мікроконтролер перетворює двійковий на ці напруги. Я не можу, здається, знайти опис де завгодно. Чи може хтось поділитися своїми знаннями або вказати мені на місце / хорошу книгу, яка описує, як це працює?


1
Я не пам’ятаю, який це був, але подивіться це відео. Хороший зміст.
абдулла кахраман

2
Насправді мікроконтролер не перетворює двійковий файл у різну напругу. Бінарна - це напруга. A + 5V позначається як "ВИСОК" або "1". І 0V позначається як "НИЗЬКИЙ" або "0". Перейдіть і подивіться на електронні комутатори, або більш детально; МОЗФЕТ.
abdullah kahraman

Ви НЕ запитуєте про перетворення "аналогове в цифрове" або "цифрове в аналогове", правда?
abdullah kahraman

3
Це може допомогти подумати про це навпаки. "Бінарне" - це своєрідна символічна математична сутність, яку ми любимо міркувати. Логічні схеми можуть представляти двійкові з різною напругою. Ми розробляємо логічні схеми так, що те, що схеми роблять з рівнями напруги, матиме послідовний логічний сенс, коли ми люди інтерпретуємо ці напруги як двійкові числа.
JustJeff

1
@abdullahkahraman Ви маєте рацію, я не думаю, що я кажу про DAC, як ви говорите. Дякуємо за посилання на відео, це дуже інформативно. І завдяки цьому ви також познайомили мене з сайтом MIT OCW, який, схоже, буде чудовим ресурсом для навчання. Спасибі!
Метт

Відповіді:


18

Я хочу повторити частину відповіді KellenJB дещо по-іншому:

Не відбувається перетворення від двійкових 1 і 0 до напруг, таких як 5 В і 0 В. Мікроконтролер або будь-яка фізична схема просто працює на напруги.

Ці напруги в нашому голові "перетворюються" на двійкові 1 та 0, коли ми формуємо спрощену модель у своєму розумі про те, як працює схема.


2
Так. Так, так, так, і (о так), так.
JustJeff

1
І я додам, що щоб бути 0, напруга просто має бути близьким до 0 або нижче порогового значення (скажімо, <0,8 В) і бути на 1 більше, ніж поріг (скажімо> 2,0 В). Пороги відрізняються технологією, що використовується для побудови пристрою, та робочою напругою живлення 5 В у його випадку.
kenny

1
Дякую всім. Отже, як тільки комп'ютер працює, взагалі немає фактичного проходження двійкового машинного коду? Бінарний код при завантаженні як мікропрограмне забезпечення, імовірно, потім зберігається в пам'яті, яка при "доступі" процесором відповідає циклом напруг, що відповідають двійковій? (Сподіваюсь, що це має сенс)
Метт

Для "завантаження" код вже повинен бути у певній фізичній формі: напруги на дроті, положення деяких важелів (або клавіш на клавіатурі), будь-яке. У пам'яті біти зберігаються як накопичення заряду на конденсаторі ... який також генерує напругу на конденсаторі.
The Photon

1
Моя точка зору полягає в тому, що фігури на екрані або надруковані на аркуші паперу - це просто вогні або краплі чорнила, поки наш розум не інтерпретує їх як значення один або нуль. Уявіть букву, надруковану в алфавіті, який ви не знаєте (скажімо, кирилицею або тайською мовою). Це просто пляма чорнила, поки російська чи тайська особа не приходить, щоб інтерпретувати її і знати, який звук він представляє. Але ця філософська відмінність, ймовірно, відштовхує нас від теми.
The Photon

11

Дійсно не відбувається "конверсія". Двійкові 1 і 0 - це лише віртуальне зображення базових напруг. Насправді, у багатьох системах висока напруга може означати 0, тоді як низька напруга означає 1. Є кілька причин, чому це робиться, але, мабуть, більше, ніж ви хочете зануритися в це рано.

Щоб зрозуміти, що відбувається за логікою, напевно, краще заглянути в транзистор. Транзистор можна використовувати для багатьох речей, але на простому рівні можна ставитися до нього як до комутатора. Концептуально ви можете думати про це так само, як ваш перемикач світла на стіні, але замість того, щоб керувати фізичним переміщенням вимикача, він управляється зміною струму. Ви можете ставитися до включеного світла як до 1, а до вимкнення - до 0. Тепер ви можете почати комбінувати ці перемикачі в різних наборах, щоб створити різні логічні елементи (наприклад, AND, OR, NOR тощо).

Я знаю, що моя відповідь не жахливо детальна, але я сподіваюся, що вона відповість на ваше запитання. Якщо вам потрібно більше пояснень, я буду готовий додати більше деталей, просто не хочу вас перевантажувати.


Дякую всім за чудові відповіді !! Чи було б я правильно вважати, що на спрощеному рівні мікропроцесор працює з певною тактовою частотою і на кожному циклі надсилає набір інструкцій (напруга, що стосується двійкових значень?) Через ці транзистори, які виступають логічними воротами. А транзистори потім дають відповідний вихід на основі комбінованої логіки (і, або, NAND тощо)?
Метт

1
Спрощено ... так. Тут дуже багато шарів абстракції. Важко пояснити все, що відбувається тут, однією відповіддю, оскільки потрібно багато шарів абстракції, перш ніж ти зможеш зрозуміти все. Він може легко взяти кілька класів на рівні коледжу, щоб навчити цього всього. Можна або просто сприймати речі, як вони знаходяться на поверхні, або підготуватися до багато навчання.
Kellenjb

Спасибі @kellenjb, ти був дуже корисний. Мені рекомендується дізнатися більше!
Метт

10

Коротка відповідь - це не "перетворення", напруги є двійковими (або поданням цього). Так само, як якщо ви записуєте число на якомусь папері, знаки є поданням числа, або розраховуєте на абаку, каменні позиції - це зображення числа.

Двійкові - це система числення, подібно до десяткових (або восьмеричних, шістнадцяткових тощо)

У той час як десятковий (base-10) має 10 символів (0123456789), двійковий (base-2) має лише два (01)

Послідовність 10 у будь-якій базі означає базу до першої потужності, тому в десятковій 10 означає 10 ^ 1 = 10, а у двійковій це означає 2 ^ 1 = 2. Після цього 100 у десятковій означає 10 ^ 2 = 100, і у двійковій це означає 2 ^ 2 = 4. І так далі.

Зображення десятків за допомогою електроніки було б можливим, але складним, тому вони вибрали двійкові, які можуть бути представлені простими 0 і 1 (або увімкнено / вимкнено)
На цьому були різні варіанти, як потрійні (3 стани) системи, і звичайно аналогові обчислення . Перед транзисторами були механічні машини перфокарт (Google знає багато, дуже цікаве читання, якщо у вас є час)
Найбільш ранні двійкові цифрові комп'ютери виготовлялися з реальними комутаторами (електронними реле). Цузе Z3 (1941) є прикладом:

Zuse Z3

Після цього використовувались вакуумні трубки замість реле (могли перемикатися швидше без рухомих механічних деталей), які виконували комутацію замість реле. Еніак є прикладом раннього комп'ютера зроблений з вакуумними трубками.

Потім в 60-х роках прибули транзистори і незабаром за ІС. Транзистори виконують ту саму функцію, яку мали реле / ​​клапани в попередніх машинах, але були набагато меншими, швидшими і споживали менше енергії.

Фактична теорія, що стоїть за основним способом роботи бінарних комп'ютерних схем, зовсім не змінилася, як і ми не змінили спосіб маніпулювання числами в математиці - алгоритми вдосконалюються, але основні правила залишаються тими ж.

Отже, якщо ви знаєте, як працює бінарний, і у вас є проста схема, здатна зберігати або 1, або 0 як два різних рівня напруги (наприклад, 5 В і 0 В), і інші прості схеми, які можуть виконувати прості логічні функції, такі як І і АБО, тоді ви можете їх об'єднати, щоб зробити більш складні речі.
Оскільки всі ці двійкові схеми є лише перемикачами, які є найбільш фундаментальними, ви можете домогтися того ж, що завгодно, що може чергувати два стани, такі як механічний / реле / ​​клапан / транзистор /?

Для прикладу зберігання числа у двійковій формі скажемо, що у нас є 8 комутаторів (який тип вони не важливі)
A 1 представлений 5V, а 0 - 0V.
Ми хочемо зберегти число 123.

У десятковій частині це 123 = (1 X 10 ^ 2) + (2 * 10 ^ 1) + (3 x 10 ^ 0)
У двійковій формі це 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)
Отже, всі ми робимо встановлення вимикачів 0,1,3,4,5,6 до 5V і вимикачі 7 і 2 до 0V. Це "зберігає" число 123 у двійковій формі. Ця установка була б відома як "реєстр".

Якщо ви хочете дізнатися більше про те, як коммутатори поєднуються для формування складніших схем, отримайте собі хорошу книгу з цифрової логіки або запитайте google.

Цей сайт , здається, не надто поганий для початку.


0

Програма, яку ви запускаєте, використовує напруги, що представляють собою нулі та нулі. Все, що стосується цієї цифрової частини, - це напруги, близькі до заземлення або близькі до напруги живлення (у вашому прикладі 5В). Коли ви завантажуєте регістр процесора з 0xFF, ви можете сказати, що ви створюєте 8 окремих сигналів 5Volt десь у чіпі. Коли ви зберігаєте це значення регістру в регістрі управління, який пов'язаний з вихідними портами, вихідні штифти на пристрої 5В-сигнали в регістрі процесорів, а потім викликають створення інших 5В-сигналів, підключених до зовнішніх штифтів пристрою. .


0

Напруги - це лише спосіб представлення двійкового. Це досить ефективне та практичне перетворення, що дозволяє реалізувати бінарну логіку за допомогою різних конфігурацій транзисторів.

Спосіб, яким бінарна логіка зазвичай реалізується в електронному вигляді, є за допомогою технології CMOS ( http://en.wikipedia.org/wiki/CMOS ), в якій два МОП-транзистори встановлюються в додаткову пару для формування заходу CMOS. Є й інші електронні реалізації бінарної логіки, використовуючи, наприклад, TTL ( http://en.wikipedia.org/wiki/Transistor –transistor_logic) або реле. Але ви можете використовувати що-небудь справді, паперу, паперових козлів-роботів: http://www.robives.com/category/product_tags/logic_goats . Електронна реалізація CMOS просто виявляється ефективною та практичною.

З цих простих воріт CMOS ви можете побудувати більш складні логічні ворота: NAND і NOR, стандартні ворота НЕ, є основними. З них ви можете побудувати все, що є двійковою логікою, суматор, файл реєстру, пам'ять. З них можна створити АЛУ, аж до повного мікропроцесора.

Якщо ви хочете отримати більше інформації, ви можете прочитати книгу про цифрову логіку, я, мабуть, є такою:

http://www.amazon.com/Digital-Systems-Principles-Applications-11th/dp/0135103827/ref=sr_1_1?s=books&ie=UTF8&qid=1326877355&sr=1-1

Хороший практичний спосіб зрозуміти, як побудований процесор - це просто створити його самостійно, використовуючи VHDL та FPGA. Ви можете придбати дешеві плати для розробки FPGA, і програмне забезпечення, як правило, безкоштовне (для обмеженої ліцензії). У мене є кілька від digilent, які є цілком доступними:

http://www.digilentinc.com/


-3

Простіше кажучи, у заданому діапазоні (як правило, від 5 до 12 вольт) найзначніший біт - 0 в першій половині цього діапазону і 1 в іншому. Наступний найзначніший біт обчислюється шляхом подальшого ділення половини на два і так далі, поки не будуть обчислені всі біти.

Тому двійкові - це лише збільшення і зменшення напруг, які вимірюються періодично.

Ось спрощений приклад. У діапазоні від 1В до 256В переведемо (аналоговий) 137 у двійковий (числовий) за допомогою псевдокоду:

// used this way: analogToNumeric(137, 256);
function convert(var number, var length) {
    if (number > length) { return(ERROR); }
    function convert(var half, var binary) {
        if (half < 2) { return(binary); }
        elseif (number < half) {
            return(convert((half / 2), append(binary, 0)));
        } else {
            return(convert((half / 2), append(binary, 1)));
        }
    } return(convert((length / 2), list()));
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.