Bagaimana biner diubah menjadi sinyal listrik?

16

Saya baru memulai dalam elektronik dan saya sudah terpesona. Setelah bermain dengan Arduino beberapa hari terakhir ini, saya sadar bahwa biner adalah representasi dari voltase yang berbeda - seperti + 5V yang mewakili 1dan GND yang mewakili 0.

Saya telah mencoba untuk menemukan bagaimana, pada tingkat fisik, mikrokontroler mengubah biner menjadi tegangan ini. Saya tidak bisa menemukan deskripsi di mana pun. Adakah yang bisa berbagi pengetahuan atau mengarahkan saya ke tempat / buku bagus yang menjelaskan cara kerjanya?

Mat
sumber
1
Saya tidak ingat yang mana, tapi lihat video ini . Konten yang bagus.
abdullah kahraman
2
Sebenarnya, micro-controller tidak mengubah biner ke tegangan yang bervariasi. Biner adalah tegangan. A + 5V dilambangkan sebagai "TINGGI" atau "1". Dan 0V dilambangkan sebagai "RENDAH" atau "0". Pergi dan lihat sakelar elektronik, atau lebih detail; MOSFET.
abdullah kahraman
Anda TIDAK bertanya tentang konversi "analog ke digital" atau "digital ke analog", bukan?
abdullah kahraman
3
Mungkin membantu untuk memikirkannya sebaliknya. 'Binary' adalah semacam entitas matematis simbolis yang kita sukai dengan alasan manusia. Sirkuit logika dapat mewakili biner dengan voltase yang berbeda. Kami merancang sirkuit logika sehingga apa yang dilakukan sirkuit dengan level tegangan akan masuk akal secara logis ketika kita manusia menafsirkan voltase tersebut sebagai angka biner.
JustJeff
1
@abdullahkahraman Anda benar, saya tidak berpikir saya berbicara tentang DAC, seperti yang Anda katakan. Terima kasih atas tautannya ke video, ini sangat informatif. Dan dengan cara itu, Anda juga memperkenalkan saya ke situs MIT OCW, yang sepertinya akan menjadi sumber yang bagus untuk belajar. Terima kasih!
Matt

Jawaban:

18

Saya ingin menyatakan kembali bagian dari jawaban KellenJB dengan cara yang sedikit berbeda:

Tidak ada konversi dari biner 1 dan 0 ke tegangan seperti 5 V dan 0 V. Mikrokontroler, atau sirkuit fisik apa pun, hanya beroperasi pada tegangan.

Tegangan itu "dikonversi" menjadi biner 1 dan 0 di kepala kita ketika kita membentuk model yang disederhanakan dalam pikiran kita tentang bagaimana rangkaian itu bekerja.

Foton
sumber
2
Iya. Ya, ya, ya, dan (oh ya), ya.
JustJeff
1
Dan saya akan menambahkan bahwa untuk menjadi 0 tegangan hanya perlu mendekati 0 atau di bawah ambang (katakanlah <0.8v) dan menjadi 1 lebih besar dari ambang (katakanlah> 2.0v). Ambang berbeda dengan teknologi yang digunakan untuk membangun perangkat dan tegangan pasokan operasi 5v dalam kasusnya.
kenny
1
Terima kasih semuanya. Jadi, begitu komputer berjalan, tidak ada kode biner yang benar-benar lewat? Kode biner, ketika diunggah sebagai firmware mungkin kemudian disimpan dalam memori yang ketika 'diakses' oleh prosesor merespons dengan siklus tegangan yang sesuai dengan biner? (Semoga ini masuk akal)
Matt
Agar dapat "diunggah", kodenya harus dalam bentuk fisik: voltase pada kabel, posisi beberapa tuas (atau tombol pada keyboard), apa pun. Dalam memori, bit disimpan sebagai akumulasi muatan pada kapasitor ... yang juga menghasilkan tegangan pada kapasitor.
The Photon
1
Pandangan saya adalah, bentuk pada layar atau dicetak pada selembar kertas hanyalah lampu atau gumpalan tinta, sampai pikiran kita mengartikannya sebagai satu atau nol. Bayangkan sebuah surat yang dicetak dalam alfabet yang tidak Anda ketahui (misalnya, Sirilik atau Thailand). Itu hanya gumpalan tinta sampai orang Rusia atau Thailand datang untuk menafsirkannya dan tahu suara apa yang diwakilinya. Tetapi perbedaan filosofis ini mungkin membuat kita keluar dari topik.
The Photon
11

Sebenarnya tidak ada "konversi" yang terjadi. Biner 1s dan 0s hanyalah representasi virtual dari tegangan yang mendasarinya. Faktanya, dalam banyak sistem tegangan tinggi mungkin berarti 0 sementara tegangan rendah berarti 1. Ada beberapa alasan mengapa hal ini dilakukan, tetapi mungkin lebih dari itu Anda ingin menyelami ini sejak dini.

Untuk memahami apa yang terjadi dalam logika, mungkin yang terbaik adalah melihat ke dalam transistor. Transistor dapat digunakan untuk banyak hal, tetapi pada tingkat yang sederhana Anda dapat memperlakukannya sebagai saklar. Secara konseptual, Anda dapat menganggapnya seperti sakelar lampu di dinding, tetapi alih-alih dikontrol dengan menggerakkan sakelar secara fisik, ia dikendalikan oleh perubahan arus. Anda bisa memperlakukan lampu menyala sebagai 1 dan lampu mati menjadi 0. Sekarang Anda dapat mulai menggabungkan switch ini dalam berbagai set untuk membuat elemen logika yang berbeda (seperti AND, OR, NOR, dll).

Saya tahu jawaban saya tidak terlalu mendetail, tapi saya harap itu akan menjawab pertanyaan Anda. Jika Anda perlu penjelasan lebih lanjut, saya akan bersedia untuk menambahkan lebih detail, hanya saja tidak ingin membuat Anda kewalahan.

Kellenjb
sumber
Terima kasih semua atas balasan yang bagus !! Apakah saya benar untuk berpikir kemudian, pada tingkat yang sederhana, mikroprosesor berjalan pada kecepatan jam tertentu dan pada setiap siklus mengirimkan set instruksi (tegangan yang berkaitan dengan nilai-nilai biner?) Melalui transistor ini, yang bertindak sebagai gerbang logika. Dan transistor kemudian menghasilkan output yang relevan berdasarkan pada logika gabungan (dan, atau, NAND dll)?
Matt
1
Secara sederhana ... ya. Ada banyak lapisan abstraksi di sini. Sulit untuk menjelaskan semuanya yang terjadi di sini dalam satu jawaban karena dibutuhkan banyak lapisan abstraksi sebelum Anda dapat memahami semuanya. Dapat dengan mudah mengambil beberapa kelas tingkat perguruan tinggi untuk mengajarkan semuanya. Anda bisa hanya mengambil sesuatu karena mereka berada di permukaan atau mempersiapkan banyak pembelajaran.
Kellenjb
Terima kasih @kellenjb, Anda sangat membantu. Saya didorong untuk belajar lebih banyak!
Matt
10

Jawaban singkatnya adalah ia tidak "mengubah", tegangannya adalah biner (atau representasi dari itu). Sama seperti jika Anda menulis angka di atas kertas, tanda adalah representasi dari angka, atau mengandalkan sempoa posisi batu adalah representasi dari angka.

Binary adalah sistem bilangan, seperti halnya desimal (atau oktal, heksadesimal, dll)

Sedangkan desimal (basis-10) memiliki 10 simbol (0123456789) biner (basis-2) hanya memiliki dua (01)

Urutan 10 dalam basis apa pun berarti basis ke kekuatan pertama, jadi dalam desimal 10 berarti 10 ^ 1 = 10, dan dalam biner artinya 2 ^ 1 = 2. Mengikuti, 100 dalam desimal berarti 10 ^ 2 = 100, dan dalam biner artinya 2 ^ 2 = 4. Dan seterusnya.

Untuk merepresentasikan desimal menggunakan elektronika adalah mungkin tetapi rumit, sehingga mereka memilih biner yang dapat diwakili oleh 0 dan 1 (atau on / off) sederhana.
Ada variasi dalam hal ini, seperti sistem ternary (3 state) dan tentu saja komputasi analog . Sebelum transistor, ada mesin kartu punch mekanis (google tahu banyak, beberapa bacaan yang sangat menarik jika Anda punya waktu)
Komputer digital biner paling awal dibuat dengan sakelar nyata (relay elektronik). The Zuse Z3 (1941) adalah contoh:

Zuse Z3

Setelah ini tabung vakum digunakan sebagai pengganti relay (bisa beralih lebih cepat tanpa ada bagian mekanik yang bergerak), yang melakukan switching bukannya relay. The ENIAC adalah contoh dari sebuah komputer awal dibuat dengan tabung vakum.

Kemudian di tahun 60-an transistor tiba dan segera setelah IC. Transistor melakukan fungsi yang sama dengan relay / katup pada mesin sebelumnya, tetapi jauh lebih kecil, lebih cepat dan lebih sedikit mengkonsumsi daya.

Teori aktual di balik cara dasar sirkuit komputer biner bekerja tidak berubah sama sekali, sama seperti kita belum mengubah cara kita memanipulasi angka dalam matematika - algoritma meningkat tetapi aturan dasar tetap sama.

Jadi, jika Anda tahu cara kerja biner, dan Anda memiliki sirkuit sederhana yang mampu menyimpan 1 atau 0 sebagai dua level tegangan yang berbeda (mis. 5V dan 0v), dan sirkuit sederhana lainnya yang dapat melakukan fungsi logis sederhana seperti DAN dan OR, maka Anda dapat menggabungkan semuanya untuk melakukan hal-hal yang lebih kompleks.
Karena semua rangkaian biner ini hanyalah sakelar paling mendasar, Anda dapat mencapai hal yang sama dengan apa pun yang dapat berganti-ganti antara dua keadaan seperti mekanik / relay / katup / transistor / ?.

Untuk memberikan contoh menyimpan angka dalam biner, katakanlah kita memiliki 8 switch (tipe apa yang tidak penting)
A 1 diwakili oleh 5V dan 0 diwakili oleh 0V.
Kami ingin menyimpan nomor 123.

Dalam desimal, 123 = (1 X 10 ^ 2) + (2 * 10 ^ 1) + + (3 x 10 ^ 0)
Dalam biner adalah 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)
Jadi semua yang kita lakukan adalah mengatur sakelar 0,1,3,4,5,6 ke 5V dan sakelar 7 dan 2 ke 0V. Ini "menyimpan" angka 123 dalam biner. Pengaturan ini akan dikenal sebagai "daftar".

Jika Anda ingin tahu lebih banyak tentang bagaimana sakelar digabungkan untuk membentuk sirkuit yang lebih kompleks, dapatkan buku bagus tentang logika digital atau tanyakan kepada google.

Ini situs tampaknya tidak terlalu buruk untuk memulai dengan.

Oli Glaser
sumber
0

Program yang Anda jalankan menggunakan voltase yang mewakili satu dan nol. Segala sesuatu tentang bagian digital itu adalah voltase yang dekat dengan arde atau dekat dengan tegangan suplai (5V dalam contoh Anda). Ketika Anda memuat register prosesor dengan 0xFF katakanlah Anda membuat 8 sinyal 5Volt terpisah di suatu tempat dalam chip. Ketika Anda kemudian menyimpan nilai register itu dalam register kontrol yang terkait dengan port output, pin output pada perangkat sinyal 5V dalam register prosesor kemudian menyebabkan sinyal 5V lainnya dibuat yang terhubung ke pin eksternal perangkat. .

old_timer
sumber
0

Tegangan hanyalah cara untuk mewakili biner. Ini adalah konversi yang cukup efisien dan praktis yang memungkinkan logika biner diimplementasikan menggunakan konfigurasi transistor yang berbeda.

Cara logika biner biasanya diimplementasikan secara elektronik adalah dengan menggunakan teknologi CMOS ( http://en.wikipedia.org/wiki/CMOS ), di mana dua transistor MOS diatur dalam pasangan pelengkap untuk membentuk gerbang CMOS. Ada implementasi elektronik lain dari logika biner, menggunakan TTL ( http://en.wikipedia.org/wiki/Transistor –transistor_logic) misalnya, atau relay. Tapi Anda bisa menggunakan apa saja, kertas, robot kertas kambing: http://www.robives.com/category/product_tags/logic_goats . Implementasi CMOS elektronik kebetulan menjadi yang efisien dan praktis.

Dari gerbang CMOS sederhana ini, Anda dapat membangun gerbang logika yang lebih rumit: NAND dan NOR, gerbang standar BUKAN, adalah gerbang dasar. Dari semua ini, Anda dapat membangun semua yang merupakan logika biner, penambah, file register, memori. Dari ini Anda dapat membangun ALU, sampai mikroprosesor lengkap.

Jika Anda ingin informasi lebih lanjut, Anda dapat membaca buku tentang logika digital, kebetulan saya memiliki dan menyukai ini:

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

Cara praktis yang bagus untuk memahami bagaimana CPU dibangun hanya dengan membangunnya sendiri, menggunakan VHDL dan FPGA. Anda bisa mendapatkan papan pengembangan FPGA murah dan perangkat lunak biasanya gratis (untuk lisensi terbatas). Saya punya beberapa dengan digilent yang cukup terjangkau:

http://www.digilentinc.com/

wesen
sumber
-3

Sederhananya, dalam kisaran yang diberikan (biasanya dari 5 hingga 12 volt) bit yang paling signifikan adalah 0 di paruh pertama rentang itu dan 1 di yang lain. Bit paling signifikan berikutnya dihitung dengan membagi lebih lanjut setengahnya menjadi dua dan seterusnya sampai semua bit dihitung.

Oleh karena itu, biner hanyalah tentang peningkatan dan penurunan voltase yang diukur secara berkala.

Ini contoh sederhana. Dalam rentang dari 1V ke 256V, mari kita terjemahkan (analog) 137 ke biner (numerik) menggunakan pseudocode:

// 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()));
}
Samuel Duclos
sumber