Membandingkan Pengodean Biner, Abu-abu, dan One-Hot
Artikel ini menunjukkan perbandingan implementasi yang dihasilkan dari penggunaan pengkodean biner, Gray, dan one-hot untuk mengimplementasikan mesin status dalam FPGA. Encoding ini sering dievaluasi dan diterapkan oleh alat sintesis dan implementasi, jadi penting untuk mengetahui mengapa perangkat lunak membuat keputusan ini.
Mesin negara hingga (FSM) adalah bagian yang sangat umum dari hampir setiap sistem digital. Itu sebabnya alat sintesis sering memeriksa kode Anda untuk mendeteksi FSM dan melakukan pengoptimalan yang dapat mengubah penyandian status. Tidak masalah jika Anda dengan hati-hati memilih dan menentukan nilai yang mengimplementasikan status Anda dalam kode sumber, alat sintesis dapat menggantikan nilai tersebut dengan nilai lain yang bahkan mungkin memiliki panjang bit yang berbeda dari penyandian asli Anda.
Jika Anda ingin memoles penerapan mesin status di Verilog, Anda harus membaca artikel saya yang berjudul Membuat Mesin Status Terbatas di Verilog.
Pengodean Status:Gray vs. Binary vs. One-Hot
Tiga pengkodean paling populer untuk status FSM adalah biner, Gray, dan one-hot.
Pengkodean Biner
Encoding biner adalah metode langsung yang dapat Anda gunakan secara intuitif saat Anda menetapkan nilai secara berurutan ke status Anda. Dengan cara ini, Anda menggunakan bit sesedikit mungkin untuk menyandikan status Anda.
Contoh enkode one-hot. Gambar oleh Steve Arar
Pengkodean Abu-abu
Kode abu-abu terdiri dari urutan di mana hanya satu bit yang berubah antara satu nilai dan nilai berikutnya. Selain juga menggunakan jumlah bit minimum, pengkodean ini meminimalkan konsumsi daya dinamis jika urutan status diikuti secara optimal.
Roda kode abu-abu. Gambar dari Marie Christiano
Encoding Satu-Panas
Akhirnya, pengkodean satu-panas terdiri dari penggunaan satu bit yang mewakili setiap keadaan, sehingga pada setiap titik waktu, keadaan akan dikodekan sebagai 1 dalam bit yang mewakili keadaan saat ini, dan 0 di semua bit lainnya. Ini mungkin tampak tidak terlalu efisien pada awalnya karena jumlah bit yang digunakan, dan jumlah status yang tidak valid yang berlebihan. Namun, pengkodean satu-panas sangat baik dalam menyederhanakan logika stimulus untuk sandal jepit karena tidak perlu mendekode status. Bit adalah Negara.
Contoh enkode one-hot. Gambar oleh Steve Arar
Untuk mengetahui lebih lanjut tentang penyandian status, Anda mungkin ingin membaca artikel Mengkodekan Status Mesin Status Hingga dalam VHDL oleh Steve Arar.
Pengkodean Mana yang Terbaik?
Ini adalah pertanyaan yang sulit, sebagian besar karena setiap pengkodean memiliki kelebihan dan kekurangannya sendiri, jadi ini mengarah pada masalah pengoptimalan yang bergantung pada banyak faktor.
- Jika sistem yang sangat sederhana menghasilkan hasil yang sangat mirip di seluruh penyandian, maka penyandian asli adalah pilihan terbaik.
- Jika FSM menggilir statusnya dalam satu jalur (seperti penghitung), maka kode Gray adalah pilihan yang sangat baik.
- Jika FSM memiliki serangkaian transisi status yang berubah-ubah atau diharapkan berjalan pada frekuensi tinggi, mungkin penyandian satu-panas adalah cara yang harus dilakukan.
Sekarang, semua klaim ini hanyalah tebakan terpelajar, dan menemukan penugasan negara yang optimal adalah masalah yang rumit. Karena itu, saran resmi saya adalah membiarkan kompiler memutuskan untuk Anda. Karena itu, saya memutuskan untuk menjalankan perbandingan hasil untuk ketiga penyandian ini dalam tiga alat pengembangan yang berbeda dan tiga mesin status yang berbeda.
Di artikel selanjutnya, kita akan membahas hasil eksperimen saya.