Daftar Isi:

Membangun Komputer Dengan Pemahaman Dasar Elektronika: 9 Langkah (dengan Gambar)
Membangun Komputer Dengan Pemahaman Dasar Elektronika: 9 Langkah (dengan Gambar)

Video: Membangun Komputer Dengan Pemahaman Dasar Elektronika: 9 Langkah (dengan Gambar)

Video: Membangun Komputer Dengan Pemahaman Dasar Elektronika: 9 Langkah (dengan Gambar)
Video: Belajar Elektronika, Rumus Dasar Wajib Bagi Pemula © Elektronika Dasar 2024, Juli
Anonim
Membangun Komputer Dengan Pemahaman Dasar Elektronika
Membangun Komputer Dengan Pemahaman Dasar Elektronika

Pernahkah Anda ingin berpura-pura bahwa Anda benar-benar pintar dan membuat komputer Anda sendiri dari awal? Apakah Anda tidak tahu apa-apa tentang apa yang diperlukan untuk membuat komputer minimal? Nah, mudah jika Anda cukup tahu tentang elektronik untuk menggabungkan beberapa IC dengan benar. Instruksi ini akan menganggap Anda pandai di bagian itu, ditambah beberapa hal lainnya. Dan jika tidak, masih tidak terlalu sulit untuk mengikuti jika Anda tahu bagaimana breadboarding/prototyping dilakukan. Tujuan dari instruksi ini adalah untuk memberi Anda "komputer" yang berfungsi tanpa mengetahui banyak tentang cara kerjanya. Saya akan membahas pengkabelan dan dasar-dasar pemrograman, serta menyediakan program yang sangat singkat untuk Anda. Jadi mari kita mulai.

Langkah 1: Bagian dan Barang

Bagian dan Barang
Bagian dan Barang
Bagian dan Barang
Bagian dan Barang

Sebuah "komputer" membutuhkan: daya, input, pemrosesan, memori, dan output. Secara teknis kita akan memiliki semua hal ini. Saya akan membahas hal-hal ini dalam urutan itu.

Untuk daya, Anda memerlukan sumber 5 volt (di sini diberi label sebagai 5V). Direkomendasikan untuk menjadi sumber yang diatur sehingga Anda tidak secara tidak sengaja menggoreng bagian di sirkuit Anda. Masukan kami akan menjadi tombol. Pemrosesan sudah cukup jelas; kami menggunakan prosesor. Memori hanya akan terdiri dari ROM. Register tujuan umum internal prosesor akan cukup untuk digunakan sebagai RAM. Output akan menjadi LED.

1 LM7805C - 5V Regulator

1 ZYLOG Z80 - Prosesor

1 AT28C64B - EEPROM

1 74LS273 - Flip-Flop Oktal D

1 74HC374E - Flip-Flop Oktal D

3 CD4001BE - Gerbang Quad NOR

1 NE555 - Generator Jam

2 1K Ohm Resistor

1 10K Ohm Resistor

1 Jaringan Resistor 10K Ohm; 8 Bussed ATAU 8 resistor 10K tambahan

1 1uF Kapasitor

1 100uF Kapasitor

1 Tombol Tekan

1 Matriks Tombol 3x4 ATAU 8 Tombol Tekan Tambahan

8 LED - Pilihan Warna Tidak Masalah

8 330 Ohm Resistor atau Jaringan Resistor

1 Breadboard Sangat Besar atau Beberapa Yang Kecil

Banyak dan Banyak Kawat

Dalam skema saya, saya memiliki tongkat SRAM yang diinstal. Anda bahkan tidak perlu khawatir tentang itu. Saya hanya menambahkannya ke skema untuk secara akurat mencerminkan sirkuit saya yang sebenarnya dan saya menambahkannya ke sirkuit untuk penggunaan di masa mendatang. Juga ditambahkan ke skema adalah gerbang quad OR (74LS36). Dua input gerbang yang tidak digunakan diikat ke VCC dan outputnya dibiarkan mengambang (tidak ditarik). Juga tidak digambar atau tercantum di atas adalah dua kapasitor pada rangkaian daya.

Saya memberi makan 12V yang diatur ke regulator 5V untuk memberi makan seluruh papan tempat memotong roti. Itu menjadi agak hangat, jadi saya memasang pendingin untuk mendinginkannya. Jika Anda menggunakan kurang dari 12V untuk memberi makan regulator (gunakan setidaknya 7V), itu harus berjalan lebih dingin.

Z80 adalah tempat keajaiban terjadi. Dibutuhkan instruksi yang disimpan dalam ROM dan mengeksekusinya. EEPROM menyimpan program kita untuk dieksekusi oleh prosesor.

Flip-flop oktal yang merupakan perangkat keluaran kami yang mengunci data pada bus data ke keluarannya sendiri. Ini memungkinkan kita untuk mengubah apa yang ada di bus, yang merupakan langkah sangat penting yang dilakukan beberapa kali per instruksi, tanpa mengubah apa yang dilihat pengguna/pemirsa. Flip-flop tidak dapat menggerakkan arus yang diperlukan untuk menyalakan LED keluaran, sehingga mereka memasukkan dua chip gerbang NOR quad yang bertindak untuk menyangga 8 jalur data untuk menggerakkan LED. Karena keluaran gerbangnya terbalik, kita juga harus memasang kabel LED untuk dibalik, tetapi kita akan sampai pada hal itu ketika kita sampai pada hal itu. Chip NOR lainnya digunakan untuk decoding logika tetapi hanya tiga gerbang yang digunakan.

Flip-flop oktal yang digunakan untuk input pada dasarnya adalah hal yang sama. Flip-flop keluaran menahan keluarannya baik tinggi atau rendah sehingga tidak dapat digunakan untuk menggerakkan bus; itu akan menyimpan data di bus. Flip-flop yang digunakan untuk input menggantikan pin /RESET dengan /EN, yang kurang lebih memutuskan output dari (dan dari) chip sehingga tidak akan menampung data (output tri-state).

Langkah 2: Menghubungkan Daya, Jam, dan Setel Ulang Sirkuit

Menghubungkan Daya, Jam, dan Setel Ulang Sirkuit
Menghubungkan Daya, Jam, dan Setel Ulang Sirkuit
Menghubungkan Daya, Jam, dan Setel Ulang Sirkuit
Menghubungkan Daya, Jam, dan Setel Ulang Sirkuit
Menghubungkan Daya, Jam, dan Setel Ulang Sirkuit
Menghubungkan Daya, Jam, dan Setel Ulang Sirkuit

CATATAN: Untuk semua bagian, hubungkan rel daya terlebih dahulu. Dari semua hal yang harus dilupakan untuk kabel, chip akan jauh lebih kecil kemungkinannya untuk bertahan dari koneksi daya yang terlupakan.

Rangkaian daya adalah rangkaian yang paling sederhana untuk dihubungkan, diikuti oleh rangkaian reset dan jam. Dalam gambar, input 12V ada di soket ekstensi di paling kanan. Kabel coklat, menyembunyikan yang kuning di bawahnya, memberi makan 12V ke regulator. Output dari regulator memberi makan setiap strip daya lainnya di papan tempat memotong roti dan setiap strip daya memiliki kesamaan karena begitulah cara kerja elektronik.

Prosesor membutuhkan sirkuit jam untuk beroperasi. Tanpa itu, itu hanya akan duduk di sana dalam keadaan yang diinisialisasi dan tidak melakukan apa-apa. Jam mengoperasikan register geser internal prosesor sehingga dapat menghasilkan sinyal untuk melakukan sesuatu. Input jam apa pun akan berfungsi, bahkan resistor sederhana dan tombol tekan. Tetapi dibutuhkan banyak siklus clock untuk mengeksekusi instruksi. Instruksi untuk menulis ke output membutuhkan 12 siklus itu sendiri. Anda mungkin tidak ingin duduk di sana dan menekan tombol 100+ kali untuk mendapatkan hanya satu putaran kode (angka sebenarnya ada di akhir instruksi). Itulah gunanya NE555. Itu melakukan peralihan untuk Anda dan melakukannya dengan kecepatan (relatif) cepat.

Sebelum Anda mulai memasang kabel apa pun, Anda mungkin ingin melanjutkan dan mencari tahu bagaimana Anda ingin komponen Anda diletakkan di papan tulis. Sirkuit jam saya agak diletakkan di bagian bawah papan sehingga tidak menghalangi komponen lain. Kami akan menganggap Anda tahu cara membuat jam dasar dengan timer. Jika tidak, Anda perlu mencari "555 Astabil" dan mengikuti tutorial. Gunakan resistor 1K untuk pergi antara rel 5V dan pin 7 dari timer (R1) dan 10K antara pin 7 dan pin 2 (R2). Pastikan untuk mengikat pin reset, pin 4, ke rel 5V agar timer dapat berfungsi. Saya memasang LED pada output saya sehingga saya dapat memverifikasi bahwa jam itu memang berfungsi, tetapi tidak diperlukan.

Pilihan lain dengan NE555 adalah mengaturnya sebagai gerbang NOT dan menggunakan resistor 1K untuk mengikat output kembali ke input. Biasanya disarankan untuk menggunakan 3 timer untuk melakukan ini, tetapi saya menemukan bahwa hanya 1 yang berfungsi dengan baik. Ketahuilah bahwa jika Anda melakukan ini, itu akan berosilasi dengan kecepatan yang sangat tinggi dan akan sangat sulit, bahkan tidak mungkin, untuk mengatakan bahwa LED output berkedip. Pengaturan ini disebut "osilator cincin."

Perhatikan bahwa kami belum menghubungkan jam ke prosesor. Kami hanya menyiapkannya. Perhatikan juga chip logika tepat di atas jam pada gambar. Itu ditambahkan jauh kemudian dan itu adalah satu-satunya tempat semi-masuk akal yang tersisa untuk menempatkannya. Digunakan untuk pemilihan RAM/ROM. Instruksi ini mengabaikan RAM sehingga Anda tidak akan memiliki chip ini di papan Anda.

Sekarang kita memasang sirkuit reset. Pertama, Anda perlu menemukan tempat di papan Anda untuk itu. Saya memilih tepat di samping jam. Tambahkan tombol Anda ke papan. Gunakan resistor 1K untuk mengikat satu sisi tombol ke rel 5V. Pin RESET kami aktif rendah, artinya kami harus menahannya tinggi. Itulah gunanya resistor. Persimpangan ini juga merupakan tempat pin reset terhubung. Sisi lain tombol langsung ke ground. Jika Anda ingin menghidupkan ulang, tambahkan juga kapasitor 10uF ke sambungan ini. Ini akan menjaga voltase pada pin reset cukup lama untuk mengaktifkan sirkuit reset di dalam prosesor dan flip-flop.

Langkah 3: Menghubungkan Z80

Sekarang kita masuk ke seluk beluknya. Kami akan menghubungkan binatang itu yaitu Z80. Di papan saya, saya meletakkan Z80 di bagian atas di bagian papan yang sama dengan sirkuit reset. Seperti yang dinyatakan sebelumnya, sambungkan rel daya terlebih dahulu. 5V masuk ke pin 11 di sebelah kiri dan ground adalah satu pin ke bawah tetapi di sebelah kanan. Anda mungkin juga memperhatikan lebar chip yang aneh. Ini akan menyebabkan Anda memiliki 3 konektor terbuka di satu sisi di papan tempat memotong roti dan 2 di sisi lain. Itu hanya membuatnya kurang nyaman untuk mengirim barang-barang tambahan jika Anda memilih untuk melakukannya.

Nomor pin berikut - saya berasumsi Anda tahu cara menghitung pin pada IC - adalah input yang tidak digunakan dan harus diikat ke rel 5V: 16, 17, 24, 25.

Ingat jam kita? Outputnya masuk ke pin 6 pada z80. Sirkuit reset terhubung ke pin 26. Tanpa komponen lain di papan, sejauh ini saya bisa mendapatkan Anda dengan kabel z80 itu sendiri. Lebih banyak kabel yang dilakukan untuk itu akan dilakukan pada langkah selanjutnya.

Karena saya sudah memiliki sirkuit yang dibangun bahkan sebelum saya mempertimbangkan untuk menulis instruksi ini, saya akan menunda gambar sampai langkah berikutnya.

Langkah 4: Menghubungkan ROM

Menghubungkan ROM
Menghubungkan ROM

CATATAN: Anda mungkin ingin menunda untuk benar-benar meletakkannya di papan jika masih perlu diprogram (lebih lanjut nanti).

Untuk ROM, saya meletakkannya di samping Z80 di sebelah kanan dan juga memindahkannya satu pin ke papan tempat memotong roti. Ini memungkinkan saya untuk mengirim bus alamat secara langsung, tetapi lebih lanjut tentang itu nanti. AT28C64B adalah EEPROM, artinya dapat diprogram beberapa kali dengan mematikan dan menghidupkan beberapa pin. Kami tidak ingin EEPROM kami secara tidak sengaja memprogram ulang dirinya sendiri saat berada di sirkuit. Jadi, setelah rel daya Anda terhubung, pin kabel 27 (/ WE) ke rel 5V untuk menonaktifkan fitur tulis sama sekali.

Program saya sangat kecil, saya hanya membutuhkan 5 baris alamat yang lebih rendah (A0-A4) terhubung, tetapi saya tetap menghubungkan A5, A6 dan A7 sehingga saya dapat menulis program yang lebih besar tanpa pekerjaan tambahan. Baris alamat tambahan (A8-A12) diikat langsung ke ground untuk mencegah akses yang tidak diinginkan ke alamat yang lebih tinggi dari input mengambang. Dengan input alamat yang tidak digunakan diikat ke ground dan kontrol tulis diikat ke 5V, pengkabelan sisanya agak mudah. Temukan A0 pada prosesor dan sambungkan ke A0 pada ROM. Kemudian temukan A1 pada prosesor dan sambungkan ke A1 pada ROM. Lakukan ini sampai Anda menghubungkan semua alamat bersama-sama. Pada gambar, bus alamat saya ke ROM dilakukan dengan kabel biru. Bus alamat menuju RAM dilakukan dengan kabel merah. Semua kabel ini dipotong dan dilucuti sebelumnya karena mereka datang dalam kit kabel papan tempat memotong roti dan sempurna untuk kabel ini.

Setelah Anda mendapatkan kabel alamat (ini disebut bus alamat), lakukan hal yang sama persis untuk pin berlabel D0, lalu D1, D2, dll. Lakukan ini untuk semua pin data (D0 - D7) dan Anda memiliki kabel bus data. Kami hampir selesai memasang kabel ROM. Temukan pin /CE (chip enable) ROM dan sambungkan ke pin prosesor 19, /MREQ (permintaan memori) dan kemudian temukan /OE ROM (output enable) dan sambungkan ke pin prosesor 21, /RD (baca). Kita sekarang sudah selesai. Semua ini dilakukan dengan kabel jumper karena mereka harus pergi ke sisi lain dari prosesor dan papan tempat memotong roti tidak menawarkan cukup ruang untuk menggunakan kabel rapi seperti itu.

Langkah 5: Menghubungkan Output

Menghubungkan Output
Menghubungkan Output
Menghubungkan Outputnya
Menghubungkan Outputnya

Karena tidak berpenghuni, saya memilih bagian papan di sebelah kiri Z80 untuk output. Tempatkan flip-flop di sana dan sambungkan ke rel listrik. Pin 1, /MR (reset) dapat terhubung langsung ke pin reset prosesor, tetapi Anda dapat membiarkannya terikat pada rel 5V. Melakukan ini hanya akan menyebabkannya menampilkan data sampah hingga penulisan pertama. Perhatikan bagaimana chip memiliki input clock pada pin 11. Input ini aneh karena diaktifkan ketika pin menjadi tinggi. Perhatikan juga bahwa pin ini BUKAN jam yang sama yang menggerakkan prosesor. Jam ini mengunci data yang ditegaskan pada bus data.

Ingat bagaimana kita menghubungkan D0 - D7 pada ROM ke pin yang sama pada prosesor? Lakukan hal yang sama untuk chip ini. D0-nya menuju ke D0 pada bus data dan seterusnya. Pin yang dimulai dengan "Q" adalah output. Sebelum kita memasangnya, kita perlu menambahkan lebih banyak chip. Saya menggunakan gerbang quad NOR karena saya memiliki tabungnya dan saya sudah membutuhkannya, tetapi tentang chip apa pun akan berfungsi jika Anda memasangnya dengan benar. Saya bisa saja mengikat satu input di semua gerbang ke ground dan menggunakan input lain sebagai, yah, input, tapi saya memilih untuk menyambungkan kedua input bersama-sama untuk kesederhanaan.

Saya menempatkan chip di bawah flip-flop untuk membuatnya lebih mudah untuk menghubungkan secara langsung tanpa jumper tetapi saya kehabisan kabel pada saat ini sehingga pada akhirnya tidak terlalu penting. Q0, Q1….. Q7 pada flip-flop menuju ke input pada masing-masing gerbang. Dengan 4 gerbang di setiap paket/chip, saya membutuhkan 2 paket dan menggunakan semua gerbang. Jika Anda menemukan versi flip-flop yang dapat menggerakkan LED tanpa perlu buffer seperti ini, kedua chip ini tidak diperlukan. Jika Anda menggunakan gerbang sebagai penyangga yang tidak memiliki keluaran terbalik (DAN/ATAU/XOR), maka Anda dapat menyambungkan LED seperti yang Anda harapkan. Jika Anda menggunakan bagian yang sama dengan saya dan/atau outputnya terbalik, LED harus disambungkan seperti yang dijelaskan di bawah ini. Gambar pertama menunjukkan bagian IC dari output.

Gunakan resistor 330 Ohm untuk mengikat LED positif (Anoda) ke rel 5V dan hubungkan negatif (katoda) ke output gerbang. Anda dapat melihat pada gambar kedua bahwa saya menggunakan dua bus resistor, masing-masing dengan hanya lima resistor internal. Menghubungkan LED seperti ini akan membuatnya menyala saat output mati. Kami melakukan ini karena output mati ketika input aktif. Pastikan Anda benar-benar melacak gerbang mana yang Anda keluarkan dari kontrol flip-flop. Kecuali jika LED Anda tersebar atau urutannya tidak berarti, kehilangan jejaknya dapat menyebabkan kebingungan di kemudian hari ketika Anda bertanya pada diri sendiri mengapa outputnya salah.

Langkah 6: Menghubungkan Input

Menghubungkan Input
Menghubungkan Input

Ambil flip-flop 74HC374 itu dan letakkan di suatu tempat. Milik saya berada di suatu tempat di bawah Z80 menuju bagian bawah papan. Ingat terakhir kali kita menghubungkan D0 ke D0 dan D1 ke D1 dan seterusnya? Kali ini kita hubungkan Q0 ke D0 dan Q1 ke D1 dan seterusnya. Syukurlah kali ini kita tidak perlu menambahkan chip buffer apapun, haha. Sebagai gantinya kita akan menghubungkan 10K Ohm ke setiap pin "D" (D0-D7) dan ground dan kemudian tombol ke pin yang sama dan rel 5V. Atau Anda dapat menggunakan bus resistor dan mengurangi jumlah bagian Anda banyak. Matriks tombol 3x4 (tanpa keluaran matriks!!) akan membantu juga. Gambar menunjukkan keseluruhan rangkaian input bersama dengan logika lem (bagian itu berikutnya).

Langkah 7: Logika Lem

Kami memiliki satu hal terakhir untuk kawat. Ini disebut "logika lem" karena digunakan untuk memecahkan kode sinyal kontrol agar semuanya berfungsi; itu yang menyatukan sirkuit. Ketika prosesor ingin menulis data ke output, baik /IORQ dan /WR (masing-masing 20 dan 22) menjadi rendah dan data yang dikirim ditegaskan pada bus data. Pin clock pada kedua flip-flop aktif high, artinya data di-latch saat pin menerima sinyal high. Kami menggunakan gerbang NOR dan kabel /IORQ ke satu input gerbang dan /WR ke input lainnya. Ketika salah satu tinggi, berarti sirkuit IO tidak dipilih atau operasi tulis tidak dilakukan, output yang memberi makan jam flip-flop tetap rendah. Ketika kedua input rendah, dan hanya ketika, output menjadi tinggi dan flip-flop mengunci data.

Sekarang kita perlu menghubungkan input flip-flop. Kita dapat menghubungkan pin jam dengan cara yang sama seperti sebelumnya, tetapi menggunakan /IORQ dan /RD. Tetapi tidak seperti flip-flop lainnya, kami juga memiliki pin /OE yang perlu diambil rendah hanya ketika /IORQ dan /RD rendah. Kita bisa menggunakan gerbang OR. Atau kita bisa mengambil sinyal yang sudah kita miliki untuk jam dan membalikkannya dengan salah satu dari dua gerbang pembalik yang sudah kita miliki. Pada saat menyatakan instruksi ini, saya tidak memiliki gerbang OR yang tersedia, jadi saya menggunakan salah satu opsi terakhir. Menggunakan opsi terakhir berarti saya tidak perlu menambahkan bagian tambahan apa pun.

Langkah 8: Pemrograman

Jika kabel Anda benar dan penjelasan saya jelas, yang tersisa hanyalah memprogram ROM. Ada beberapa cara untuk melakukannya. Anda dapat mengambil cara mudah dan memesan chip baru dari Digikey. Saat Anda memesan suku cadang, Anda akan memiliki opsi untuk mengunggah file HEX dan mereka akan memprogramnya sebelum mengirimkannya. Gunakan file HEX atau OBJ yang dilampirkan pada instruksi ini dan tunggu saja sampai tiba melalui pos. Opsi 2 adalah membangun programmer dengan Arduino atau semacamnya. Saya mencoba cara itu dan gagal menyalin data tertentu dengan benar dan saya butuh berminggu-minggu untuk mengetahuinya. Saya akhirnya melakukan opsi 3, yaitu memprogramnya dengan tangan dan membalik sakelar untuk mengontrol alamat dan jalur data.

Setelah dikonversi langsung ke Kode OP prosesor, seluruh program ini hanya berada di ruang alamat 17 byte, jadi pemrograman dengan tangan tidak terlalu buruk. Program memuat ke general purpose register B nilai 00. Register B digunakan untuk menyimpan hasil penjumlahan sebelumnya. Karena register A adalah tempat matematika terjadi, kami tidak akan menggunakannya untuk menyimpan data.

Berbicara tentang register A, kita melakukan perintah IN, yang membaca input, dan menyimpan data yang dibaca di A. Kemudian kita menambahkan isi register B dan mengeluarkan hasilnya.

Setelah itu, register A disalin ke register B. Dan kemudian kita melakukan serangkaian perintah lompat. Karena semua lompatan menunjuk ke byte bawah dari baris alamat, dan karena byte atas dari instruksi lompatan diberikan dalam argumen kedua dan adalah "00," kita dapat memaksa setiap lompatan diikuti oleh NOP. Kami melakukan ini untuk memberikan waktu antara menampilkan output dan membaca input untuk mencegah input yang tidak disengaja. Setiap lompatan menggunakan sepuluh siklus clock dan setiap NOP menggunakan empat. Jika loop memakan waktu terlalu lama sesuai keinginan Anda, Anda dapat meningkatkan kecepatan clock atau Anda dapat memprogram ulang untuk menggunakan satu lompatan yang lebih sedikit.

Langkah 9: Pengujian

Jika Anda menghubungkan semuanya dengan benar dan ROM Anda diprogram dengan benar, ada satu langkah terakhir yang harus diambil: pasang dan lihat apakah itu berfungsi. Tekan tombol dan tunggu beberapa detik. Dibutuhkan 81 siklus clock untuk program mencapai loop pertama dan setiap loop membutuhkan 74 siklus clock.

Jika tidak berhasil, periksa hubungan pendek dan pin yang tidak terhubung (terbuka) dan masalah kabel lainnya. Jika Anda memilih untuk tidak mengaktifkan reset daya, Anda harus melakukan reset manual sebelum prosesor melakukan apa pun. Anda juga dapat memasang LED ke bus alamat untuk melihat apakah mereka berfungsi. Saya sendiri mengalami masalah dengan itu, jadi saya memasukkannya langsung ke bus data. Ini memungkinkan saya untuk melihat apa yang sedang dikomunikasikan antara prosesor dan ROM tanpa perlu khawatir tentang apakah ROM sedang dibaca dengan benar, yang akan membutuhkan diagram waktu dan saya hanya tidak ingin terlibat. Ternyata menjadi pilihan yang baik karena saya akhirnya menangkap Kode OP bermasalah yang salah disimpan.

Direkomendasikan: