Merancang Mesin Keadaan Terbatas: Dari Konsep hingga Implementasi
Hingga saat ini kita telah fokus pada logika kombinatorial, di mana output hanya bergantung pada input saat ini. Dalam banyak aplikasi dunia nyata, rangkaian harus mempertahankan memori input sebelumnya dan menyesuaikan outputnya sesuai dengan itu. Rangkaian seperti itu dikenal sebagai rangkaian sekensial.
Artikel ini membahas proses akhir ke akhir merancang rangkaian sekensial, diilustrasikan dengan contoh praktis: permainan kuis digital yang harus menghasilkan satu pulsa TINGGI satu siklus jam setiap kali pengguna menekan tombol.
Langkah 1 – Definisikan Kebutuhan
Mulai dengan menguraikan perilaku yang diinginkan dalam bahasa yang sederhana:
"Kami perlu rangkaian sekunder yang menghasilkan satu pulsa TINGGI untuk satu siklus jam ketika tombol ditekan, dan mengabaikan tekanan lebih lanjut sampai tombol dilepas dan ditekan lagi."
Langkah 2 – Gambar Diagram Keadaan
Diagram keadaan memvisualisasikan operasi mesin. Setiap lingkaran mewakili keadaan, sementara panah menunjukkan transisi yang dipicu oleh input setiap siklus jam. Diagram di bawah adalah mesin keadaan terbatas Moore, di mana output hanya bergantung pada keadaan saat ini.

Deskripsi keadaan:
- Stand-by – keadaan tunggu awal.
- Aktifkan Pulsa – menghasilkan output TINGGI.
- Loop Tunggu – memegang output RENDAH sampai tombol dilepas.
Panah diberi label dengan nilai input yang memicu transisi. Misalnya, dari keadaan Stand-by input ‘1’ memindahkan mesin ke Aktifkan Pulsa; input ‘0’ mempertahankannya di Stand-by.
Langkah 3 – Enkode Keadaan dalam Biner
Berikan kode biner ke setiap keadaan, dimulai dengan 0 untuk keadaan awal. Enkode di bawah ini menggunakan dua bit, cukup untuk tiga keadaan.

Langkah 4 – Buat Tabel Keadaan
Tabel keadaan mencantumkan semua kombinasi keadaan saat ini dan input, beserta keadaan berikutnya dan output. Kolom sesuai dengan bit keadaan saat ini, bit input, bit keadaan berikutnya, dan bit output. Untuk contoh ini tabel ditunjukkan di bawah ini.

Poin-poin kunci:
- Setiap baris mencakup setiap kombinasi biner yang mungkin dari keadaan dan input.
- Baris yang sesuai dengan keadaan yang tidak ada ditandai dengan don’t-care (X).
- Kolom output mencerminkan output Moore, independen dari input.
Langkah 5a – Siapkan untuk Implementasi Flip-Flop D
Untuk mengimplementasikan mesin kita biasanya menggunakan flip-flop. Untuk flip-flop D, input yang diperlukan untuk mencapai keadaan berikutnya hanyalah nilai keadaan berikutnya itu sendiri. Perpanjang tabel keadaan dengan kolom untuk setiap input D.

Langkah 5b – Siapkan untuk Implementasi Flip-Flop JK
Jika flip-flop JK dipilih, dua kolom (J dan K) ditambahkan per flip-flop. Nilai-nilainya diturunkan dari tabel eksitasi JK:

Contoh pemetaan: untuk bertransisi dari 0 ke 1, atur J=1 dan K=X (don’t-care).

Langkah 6 – Turunkan Fungsi Boolean melalui Peta Karnaugh
Gunakan peta Karnaugh untuk menyederhanakan ekspresi untuk setiap input flip-flop dan untuk output. Peta di bawah ini mengilustrasikan proses untuk implementasi D dan JK.
Input flip-flop D:

Input flip-flop JK:


Fungsi output:


Langkah 7 – Bangun Rangkaian Fisik
Dengan persamaan Boolean dalam tangan, rangkailah rangkaian menggunakan flip-flop dan gerbang logika. Ingat untuk menghubungkan jam ke semua flip-flop. Desain flip-flop D yang selesai ditunjukkan di bawah ini.

Versi flip-flop JK terlihat seperti ini:

Setelah dirangkaikan, rangkaian akan menghasilkan satu pulsa TINGGI satu siklus jam yang bersih untuk setiap penekanan tombol, terlepas dari berapa lama tombol ditekan.
Kesimpulan Utama
- Logika sekensial mempertahankan memori input sebelumnya, memungkinkan perilaku dinamis.
- Mesin Keadaan Terbatas memberikan kerangka yang ketat untuk memodelkan perilaku semacam itu.
- Flip-flop mengimplementasikan FSM dalam hardware, menerjemahkan transisi keadaan menjadi output fisik.
- Alur desain sistematis—kebutuhan, diagram, enkode, tabel, sintesis logika, dan rangkaian—memastikan rangkaian yang andal.