Merakit komputer 8-bit: cara mengurangi jumlah chip menjadi enam


Kombinasi trik lama dengan kode warna NTSC dan perangkat keras modern memungkinkan Anda untuk membangun mesin yang dapat bekerja secara mengejutkan.Dalam

sistem 8-bit, ada sesuatu yang menarik secara permanen: Anda dapat membangun sistem otonom yang cukup kuat untuk mendukung interaksi pengguna yang memadai, tetapi cukup sederhana untuk merakit dan memprogramnya sendiri. Sebagian besar mesin 8-bit modern yang dibuat oleh amatir terikat dengan prosesor klasik yang hidup di zaman keemasan komputer di rumah pada 1980-an, ketika jutaan TV digunakan sebagai display. Awalnya, idenya adalah untuk membangun mobil saya berdasarkan prosesor Motorola 6809dari era yang sama. Saya mencoba menggunakan chip sesedikit mungkin, tetapi meskipun saya sudah berusaha, saya masih membutuhkan 13 chip tambahan untuk bekerja dengan RAM dan transfer data serial. Lalu saya berpikir: bagaimana jika saya menggunakan prosesor 8-bit yang lebih modern? Berapa saya bisa mengurangi jumlah chip yang saya butuhkan?


Akibatnya, saya memasang mobil di atasnya, yang disebut Amethyst . Seperti komputer di rumah, ia memiliki keyboard bawaan dan dapat menghasilkan audio dan video. Ini juga memiliki bahasa pemrograman tingkat tinggi built-in sehingga pengguna dapat menulis program mereka sendiri di atasnya. Saya berhasil mengurangi jumlah sirkuit mikro menjadi enam: CPU ATMEGA1284P , antarmuka USB dan empat sirkuit terpadu sederhana.

ATMEGA1284P 2008 (atau 1284P) 2008 memiliki memori flash 128 kilobyte dan RAM 16 kilobyte. Itu dapat beroperasi dengan frekuensi hingga 20 megahertz. Ini memiliki pengontrol serial terintegrasi terintegrasi dan 32 input / output digital.



Berkat memori terintegrasi dan antarmuka serial, kebutuhan akan banyak chip tambahan hilang. Saya dapat langsung menghasilkan audio, mengganggu dan menerapkan sinyal ke input / output dengan frekuensi yang berbeda. Jadi, saya belajar mengeluarkan nada yang, bagaimanapun, memiliki ketajaman karakteristik gelombang persegi. Tetapi bagaimana dengan menghasilkan sinyal video analog? Apakah ini benar-benar membutuhkan peralatan khusus?

Trik standar


Pada akhir 2018, saya melihat sebuah trik yang digunakan Steve Wozniak pada tahun 1970-an untuk mengimplementasikan dukungan grafis berwarna di Apple II. Di AS, trik ini digunakan untuk penyiaran warna di sistem NTSC pada 1950-an.

Awalnya, televisi Amerika hanya hitam dan putih dan menggunakan standar NTSC yang cukup sederhana (dikembangkan oleh Komite Nasional untuk Sistem Televisi). Untuk membentuk gambar di layar, berkas elektron melacak titik di permukaannya, baris demi baris. Amplitudo sinyal video yang diterima menentukan kecerahan sinar di lokasi tertentu di sepanjang baris. Kemudian pada tahun 1953, NTSC ditingkatkan untuk mendukung televisi berwarna, sambil mempertahankan kompatibilitas dengan TV hitam putih yang ada.

Insinyur memutuskan untuk menyajikan informasi warna dalam bentuk sinyal sinusoidal frekuensi tinggi. Untuk ini, subcarrier dibagi menjadi dua komponen dengan pergeseran fasa 90 ยฐ, yang masing-masing mengalami modulasi. Hasilnya adalah sinyal yang dimodulasi baik dalam amplitudo dan fase. Amplitudo sinyal menentukan seberapa jenuh warna seharusnya. Sinyal kroma frekuensi tinggi ini kemudian ditambahkan ke sinyal luminance frekuensi rendah untuk membuat sinyal video komposit. Metode ini masih digunakan untuk banyak televisi dan tampilan yang lebih murah.



ยซ ยป: , [ ], - , [ ]. . [ ] , : . [ ], .


TV hitam putih menganggap sinyal warna sebagai noise dan mengabaikannya. Tetapi TV berwarna dapat memisahkan sinyal warna dari sinyal luminance menggunakan loop filter.

Pada 1970-an, para insinyur menyadari bahwa skema penyaringan ini bisa sangat berguna untuk komputer rumahan karena memungkinkan sinyal digital persegi panjang untuk mensimulasikan sebagian besar sinyal analog komposit. Aliran nol yang dikirim oleh komputer ke TV akan dianggap sebagai tegangan analog frekuensi rendah yang konstan, yaitu hitam. Aliran unit akan dianggap sebagai tegangan frekuensi tinggi yang konstan, yaitu putih. Tetapi dengan bit rate yang cukup tinggi, struktur biner yang lebih kompleks akan muncul sehingga skema penyaringan high-pass dikenali sebagai sinyal warna. Trik ini memungkinkan Apple II untuk menampilkan hingga 16 warna.

Pada awalnya, saya berpikir bahwa saya perlu mengganti pin input / output dengan sangat cepat agar dapat secara langsung menghasilkan sinyal video. Namun, saya segera menyadari bahwa dengan 1284P saya berjalan pada 14,318 MHz, saya tidak bisa beralih dengan cepat untuk menampilkan lebih dari empat warna. Faktanya adalah bahwa interface serial built-in akan membutuhkan dua siklus clock untuk mengirim satu bit, yang akan membatasi frekuensi clock saya ke 7.159 MHz. Apple II menggunakan akses memori langsung cepat untuk menghubungkan chip eksternal ke output video, sementara CPU-nya sibuk dengan pemrosesan internal. Tapi, karena RAM komputer saya terintegrasi ke dalam chip, saya tidak bisa menggunakan pendekatan ini.

Jadi saya melihat ke laci saya dan mengeluarkan empat rangkaian mikroskuit seri 7.400 - dua multiplexer dan dua register geser paralel-serial. Saya dapat menginstal delapan pin 1284P secara paralel dan mengirim data dari mereka secara bersamaan ke multiplexer dan register geser, yang mengubahnya menjadi aliran bit serial berkecepatan tinggi. Jadi, saya belajar cara menghasilkan bit dengan cukup cepat untuk menampilkan sekitar 215 warna berbeda di layar. Namun, saya harus membayarnya dengan daya komputasi saya: pemrosesan video terus memakan 75% sumber daya prosesor.



Komputer kompak


Amethyst adalah komputer papan tunggal. Ini dirakit dari hanya enam sirkuit terintegrasi - prosesor, antarmuka USB dan empat rangkaian mikro seri 7400, yang digunakan untuk membuat gambar 215-warna. Sakelar keyboard disolder langsung ke board, yang juga mendukung audio dan empat seri koneksi I / O untuk periferal seperti pengontrol game dan perangkat penyimpanan. Anda dapat menulis program dan menjalankannya berkat mesin virtual bawaan Forth.

Saya membutuhkan lingkungan pemrograman yang ringan untuk pengguna, yang membuat saya memilih Forth daripada Basic tradisional. Forth adalah bahasa pemrograman lama untuk embedded system, mendukung interaktivitas dan mampu mengkompilasi kode secara efisien. Dengan itu, Anda dapat melakukan cukup banyak menggunakan jumlah minimum sumber daya. Karena 1284P tidak memungkinkan kode mesin yang dikompilasi dijalankan langsung dari RAM-nya, kode pengguna malah dikompilasi menjadi bytecode perantara. Bytecode ini kemudian dimasukkan sebagai input ke mesin virtual yang berjalan dari memori flash 1284P. Kode mesin virtual ditulis dalam assembler dan dioptimalkan secara manual untuk membuatnya secepat mungkin.

Sebagai seorang insinyur yang bekerja untuk perusahaan yang memproduksi printer laser 3D, saya memiliki akses ke mesin pemotong laser canggih. Jadi saya dengan mudah mendesain dan membuat case kayu (saya melihat-lihat finishing kayu pada Atari 2600 ). Sakelar keyboard mekanis disolder langsung ke papan sirkuit Amethyst tunggal. Keyboard ini memiliki satu fitur yang aneh - tidak adanya celah besar yang biasa. Sebaliknya, hanya sebuah tombol, terletak di atas tombol Enter.

Skema lengkap, file PCB untuk papan sirkuit, dan kode sumber tersedia di repositori GitHub saya . Jadi, Anda dapat membuat Amethyst Anda sendiri atau bahkan meningkatkan proyek saya. Bagaimana jika Anda bisa mengetahui cara menghemat lebih banyak chip?


All Articles