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 1
dan 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?
Jawaban:
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.
sumber
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.
sumber
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:
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.
sumber
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. .
sumber
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/
sumber
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:
sumber