BAB 4 RANGKAIAN LOGIKA DIGITAL SEKUENSIAL Telah kita pelajari tentang unit logika kombinasional yang keluarannya hanya tergantung pada masukan saat itu atau dengan kata lain keluarannya merupakan fungsi dari masukan saja. Unit logika sekuensial atau sering disebut sebagai mesin keadaan berhingga (finite state machine, FSM), keluarannya bergantung pada masukan dan keluaran sebelumnya. FSM dibedakan dengan CLU karena selain menghasilkan keluaran juga menghasilkan keadaan (state). Hal ini penting untuk implementasi rangkaian memori dan juga unit kendali pada komputer. Model klasik dari FSM tampak pada Gambar 4.1. Bagian CLU memiliki masukan dari jalur i0 − ik yang berasal dari luara FSM dan juga masukan keadaan s0 − sn yang berasal dari dalam FSM sendiri. CLU menghasilkan bit keluaran f0 − fm dan bit keadaan terbaru. Dengan adanya elemen tunda maka keadaan sekarang bertahan terus sampai ada sinyal sinkronisasi yang menyebabkan nilai Di menggantikan nilai si sebagai bit keadaan baru, karena diambil dari Qi .
4.1
Flip-Flop S-R
Flip-flop adalah susunan gerbang logika yang menjaga keluaran tetap stabil walaupun masukan sudah tidak aktif. Keluaran flip-flop ditentukan oleh nilai masukan dan juga nilai keluaran sebelumnya, sehingga unit logika kombinasional tidak cukup untuk menangani hal ini. Flip-flop dapat digunakan untuk menyimpan informasi bit tunggal, dan berlaku sebagai pembangun memori komputer. Jika kedua masukan pada gerbang NOR dua masukan bernilai 1, maka 67
68
4. RANGKAIAN LOGIKA DIGITAL SEKUENSIAL i0 Input in
.. .
.. .
Unit logika kombinasional
.. .
Q
.. .
CK
Q
Q
f0 Output f1
D
CK
Q
Sinyal Sinkronisasi
D
Gambar 4.1: Model klasik dari FSM keluarannya akan 0, selain itu keluarannya akan 1. Seperti dibahas pada bab sebelumnya, waktu yang diperlukan untuk menghasilkan keluaran dari masukan gerbang logika tidaklah seketika tetapi sebesar ∆τ yang merupakan waktu perambatan melalui gerbang logika. Waktu tunda ini kadang-kadang dimunculkan sebagai rangkaian tunda untuk keperluan analisis seperti Gambar 4.2. Waktu tunda ini secara normal tidak dimunculkan tetapi tetap ada.
A B
∆τ
A+B
∆τ Gambar 4.2: Gerbang NOR dengan rangkaian tunda Waktu perambatan melalui gerbang NOR mempengaruhi operasi flipflop. Perhatikan flip-flop set-reset (S-R) pada Gambar 4.3, yang berisi gerbang NOR yang saling silang. Jika kita isikan 1 pad S, maka Q akan bernilai 0 setelah waktu tunda ∆τ , yang menyebabkan Q bernilai 1 (dianggap R bernilai 0) setelah waktu tunda 2∆τ . Akibatnya adalah selama penggalan waktu Yohanes Suyanto
4.2. Flip-flop S-R Berdetak
69
tertentu ada waktu singkat sebesar ∆τ yang Q dan Q bernilai 0, yang secara logis tidak dibenarkan, tetapi kondisi ini dapat diperbaiki dengan konfigurasi tuan-hamba (master-slave) yang akan kita bahas nanti. Jika kemudian S diisi dengan 0, maka Q tetap, sampai nilai R beranjak menjadi 1. Dengan demikian flip-flop S-R dapat menyimpan nilai bit tunggal dan dapat berlaku sebagai elemen memori paling dasar. Qi+1
Qi Si Ri
S
Q
Q
R
0 0 0 0 1 1 1 1
0 0 1 1 0 0 1 1
0 1 0 1 0 1 0 1
0 0 1 (dilarang)
1 0 1 (dilarang)
∆τ
Gambar 4.3: Flip-flop S-R dengan NOR Ada banyak cara untuk menyusun rangkaian sebuah flip-flop S-R. Penggunaan gerbang NOR yang saling silang untuk flip-flop S-R adalah hanya salah satu cara. Dua gerbang NAND yang dihubungkan saling silang juga dapat menghasilkan flip-flop S-R, dengan nilai S = R = 1 mengakibatkan keluaran tidak berubah. Dengan menggunakan teorema DeMorgan kita dapat mengubah gerbang NOR dalam flip-flop S-R menjadi gerbang AND seperti dalam Gambar 4.4. Dengan penggeseran gelembung, maka gerbang AND dapat diubah menjadi gerbang NAND. Penggeseran gelembung pada S dan R mengakibatkan pertukaran label S dan R. S R
S
Q Q
≡
R
S
Q Q
≡
R
Q Q
≡
R
Q
S
Q
Gambar 4.4: Flip-flop S-R dengan NAND
4.2
Flip-flop S-R Berdetak
Perlu diketahui bahwa masukan ke flip-flop S-R dapat berasal dari keluaran rangkaian lain, dalam bentuk rangkaian logika berjenjang. Hal ini biasa terYohanes Suyanto
70
4. RANGKAIAN LOGIKA DIGITAL SEKUENSIAL
jadi pada rangkaian logika konvensional. Masalahnya adalah transisi dapat terjadi pada waktu yang tidak diinginkan. Perhatikan rangkaian pada Gambar 4.5. Jika sinyal A, B, dan C semuanya berubah dari keadaan 0 menjadi 1, maka sinyal C akan mencapai gerbang XOR sebelum A dan B keluar dari gerbang AND. Akibatnya nilai S akan 1 walaupun sebentar sampai keluaran dari gerbang AND sudah mantap dan dioperasian XOR dengan C. Jika nilai 1 pada S bertahan cukup lama maka akan mengakibatkan nilai yang tersimpan dalam flip-flop bisa berubah. A B C S
C A B
Q
AB S
R
Q R Q Q
Diagram waktu Gambar 4.5: Rangkaian yang mengandung hazard Jika keadaan akhir dari flip-flop sensitif terhadap kedatangan sinyal maka dapat menimbulkan glitch, yang sebenarnya merupakan keadaan atau keluran yang tidak diinginkan. Rangkaian yang dapat menghasilkan glitch disebut rangkaian yang mengandung hazard. Untuk menyelaraskan pengendalian terhadap rangkaian yang tergantung pada keadaan (misalnya flip-flop) maka digunakanlah detak (clock ) yang akan mengaktifkan rangkaian dalam selang waktu tertentu secara serentak. Rangkaian detak menghasilkan sinyal 1 dan 0 bergantian terus menerus dengan periode waktu yang tetap sehingga membentuk gelombang kotak seperti Gambar 4.6. Waktu yang diperlukan detak untuk naik, turun dan kemudian mulai naik lagi disebut waktu siklus atau periode. Gelombang kotak yang ditampilkan pada gambar tersebut adalah bentuk gelombang detak ideal. Dalam kenyataannya, gelombang tersebut tidak berbentuk persegi Yohanes Suyanto
4.3. Flip-flop D dan konfigurasi tuan-hamba
71
tetapi membulat karena perlu waktu untuk menjadi tinggi dan rendah, tidak berlangsung seketika.
Amplitudo Waktu periode = 25ns Gambar 4.6: Detak yang berupa gelombang kotak Kecepatan detak berkebalikan dengan waktu siklus. Untuk waktu siklus sebesar 25 ns/siklus berarti kecepatannya adalah 1/25 siklus/ns, yang sama dengan 40.000.000 siklus per detik atau 40 MHz. Kita dapat menggunakan sinyal detak untuk menghilangkan hazard dengan membuat flip-flop S-R berdetak, yang dapat dilihat pada Gambar refgbrffsrdetak. Simbol CLK berarti clock atau detak. Sekarang S dan R tidak dapat mengubah keadaan hingga detak bernilai tinggi. Dengan demikian S dan R dibuat mantap dahulu pada posisi detak rendah, baru kemudian detak menjadi tinggi dan nilai yang stabil akan tersimpan dalam flip-flop. S S
R Q
CLK
CLK Q R
Q Q
2∆τ Diagram waktu Gambar 4.7: Flip-flop S-R berdetak
4.3
Flip-flop D dan konfigurasi tuan-hamba
Kelemahan dari flip-flop S-R adalah bahwa untuk menyimpan nilai 1 atau 0, kita harus mengisi 1 pada S atau R. Konfigurasi alternatif untuk menyimpan nilai 1 atau 0 adalah dengan menggunakan flip-flop D seperti pada Yohanes Suyanto
72
4. RANGKAIAN LOGIKA DIGITAL SEKUENSIAL
Gambar 4.8. Flip-flop D disusun dari flip-flop yang dipasangi pembalik antara masukan S dan R. Dengan demikian ketika detak bergerak naik, maka nilai pada jalur D akan disimpan. D
Q
CLK
D CLK
Q Rangkaian D
Q
CK Q
Q Q 2∆τ Diagram waktu
Simbol Gambar 4.8: Flip-flop D. Simbol C menunjukkan clock atau detak. Flip-flop biasa digunakan pada rangkaian yang mempunyai umpan balik dari keluaran kembali ke jalur masukan melalui rangkaian lain. Hal ini kadang-kadang menyebabkan keadaan flip-flop berubah lebih dari sekali dalam satu siklus detak. Untuk memastikan bahwa dalam satu siklus hanya terjadi 1 perubahan keadaan pada flip-flop, kita cegat kalang umpan balik dengan membentuk flip-flop tuan-hamba seperti Gambar 4.9. D CLK
D
Q
CK Q
D
Q
CK Q
D
Q
CK Q Gambar 4.9: Flip-flop tuan-hamba Flip-flop tuan-hamba berisi 2 flip-flop yang disusun berurutan dengan Yohanes Suyanto
4.4. Flip-flop JK dan T
73
detak untuk flip-flop kedua dipasang pembalik. Flip-flop tuan akan berubah saat detak tinggi, tetapi flip-flop hamba tidak berubah sampai detak rendah. Dengan demikian diperlukan detak naik kemudian turun untuk memindahkan isi jalur D pada flip-flop tuan ke keluaran Qs pada flip-flop hamba. Simbol segitiga pada flip-flop tuan-hamba menunjukkan bahwa perubahan keadaan hanya terjadi pada saat detak berubah naik ( dari 0 ke 1) atau turun (dari 1 ke 0). Untuk konfigurasi seperti Gambar 4.9 berlaku bahwa perubahan terjadi saat detak turun (dari 1 ke 0). Flip-flop picuan level keadaan berubah terus-menerus selama detka bernilai tinggi (atau rendah tergantung desain flip-flop). Flip-flop picuan tepi berubah hanya saat terjadi perubahan detak dari tinggi-ke-rendah atau dari rendah-ke-tinggi. Beberapa buku tidak memasang simbol segitiga pada masukan detak. Untuk membedakan antara flip-flop picuan level atau picuan tepi digunakan cara lain. Penggunaan simbol segitiga membuat tipe flip-flop menjadi jelas.
4.4
Flip-flop JK dan T
Selain flip-flop S-R dan D, flip-flop J-K juga termasuk flip-flop yang cukup terkenal. Flip-flop J-K mempunyai kelakuan yang mirip dengan flip-flop S-R kecuali bahwa flip-flop ini akan mempunyai keluaran Q=1 untuk J=1 dan K=0. Saat J=0 dan K=1 maka keluarannya Q=0. Jika J dan K bernilai 1, maka nilai keluaran akan berkebalika dengan nilai keluaran sebelumnya. Namun untuk J dan K sama-sama bernilai 0, keluaran akan tetap. Diagram logika dan simbol untuk flip-flop J-K dan T terlihat pada Gambar 4.10 dan 4.11 J
Q
J
Q
CK
CLK Q
K Rangkaian
K
Q
Simbol
Gambar 4.10: Flip-flop J-K dan simbolnya Permasalahan pada saat dioperasikan dalam mode bergantian maka jika J dan K keduanya bernilai tinggi dan detak juga tinggi, flip-flop dapat bergantian nilainya lebih dari satu kali sampau detak menjadi rendah. Situasi ini Yohanes Suyanto
74
4. RANGKAIAN LOGIKA DIGITAL SEKUENSIAL
1 T
J
Q
Q
T
CK K
Q
Q
Gambar 4.11: Flip-flop T dan simbolnya merupakan salah satu alasan penggunaan konfigurasi tuan-hamba. Diagram skematik untuk flip-flop J-K tuan-hamba, terlihat pada Gambar 4.12. J CLK K
Q Q
J Q CK KQ Simbol
Rangkaian Gambar 4.12: Flip-flop J-K tuan-hamba dan simbolnya
4.5
Desain Mesin Keadaan Berhingga
Kita lihat lagi model klasik mesin keadaan berhingga atau finite state machine (FSM) pada Gambar 4.1. Elemen penunda dapat diimplementasi dengan flip-flop tuan-hamba dan sinyal sinkronikasi dengan detak. Umumnya, untuk implementasi umpan balik digunakan flip-flop. Perlu diketahui bahwa kita dapat melabeli flip-flop menurut kemauan kita, asal artinya jelas. Pada Gambar 4.1 posisi masukan Di dan keluaran Qi saling dipertukarkan dari posisi normal yang kita bahas sebelumnya. Misalnya, FSM pencacah sinkron modulo 4 mencacah dari 00 hingga 11 dan berulang lagi. Diagram blok FSM pencacah sinkron ditunjukkan pada Gambar 4.13. Fungsi RESET (logika positif) mengakibatkan nilai keluaran q0 q1 adalah 00 jika diaktifkan. Keluaran akan berurutan sesuai nilai pada jalur q0 dan q1 pada waktu yang bersesuaian dengan detak. Setiap nilai baru keluaran muncul, maka nilai umpan balik s0 s1 juga berubah. Kita perhatikan bahwa desain pencacah dapat dilakukan dengan mendaftar semua kemungkinan masukan dan keluaran yang terjadi pada 4 jalur q1 q0 dan keadaan s1 s0 . Berdasarkan daftar tersebut kemudian dibuat rangkaian logika kombinasional yang merupakan implementasi pencacah. Dua flip-flop digunakan untuk mecatat bit keadaan. Yohanes Suyanto
4.5. Desain Mesin Keadaan Berhingga 0001
q0 q1 s0
Reset Pencacah Sinkron 3-bit
s1
CLK
75 0100 0101 D D
Q
Q
CK Q
CK Q
Gambar 4.13: Pencacah modulo 4 Bagaimana kita tahu bahwa dibutuhkan 2 bit sebagai pencacat keadaan untuk umpan balik? Kenyataannya adalah bahwa kita tidak tahu dari awal jumlah bit yang dibutuhkan untuk mencatat keadaan, sehingga untuk bahasan berikutnya kita akan melihat pendekatan yang lebih umum dalam perancangan mesin keadaan berhingga. Untuk pencacah kita dapat mulai dari penyusunan diagram transisi keadaan seperti Gambar 4.14 dengan keadaan A sampai dengan D dan garis berarah menunjukkan transisi. Dalam kasus ini keadaan A untuk nilai pencacah 00, B untuk 01, C untuk 10, dan D untuk 11. 0/01 1/00
A
B 1/00 0/10
1/00 0/00, 1/00 C
0/11
D
Gambar 4.14: Diagram transisi keadaan pencacah modulo 4 Misalnya, FSM diinisialisasi pada keadaan A. Ada 2 kemungkinan masukan yaitu: 0 dan 1. Jika masukan (RESET) bernilai 0, maka FSM akan berpindah ke keadaan B dan menghasilkan keluaran 01. Jika RESET bernilai 1, FSM tetap pada keadaan A dan menghasilkan keluaran 00. Mirip dengan ini, jika FSM di keadaan B, akan berpindah ke keadaan C dengan keluaran 10 jika RESET 0, jika tidak akan kembali ke keadaan A dengan keluaran 00. Demikian juga untuk keadaan yang lain, dapat diinterpretasikan dengan Yohanes Suyanto
76
4. RANGKAIAN LOGIKA DIGITAL SEKUENSIAL
cara yang sama. Sekali kita berhasil membuat diagram transisi keadaan, kita dapat menulisnya dalam bentuk tabel keadaan seperti Gambar 4.15. Keadaan sekarang terlihat di bagian kiri, dan kondisi masukan ada di bagian atas. Isi tabel adalah pasangan keadaan/keluaran berikutnya yang diambil langsung dari diagram transisi keadaan pada Gambar 4.14. Ambil salah satu bari misalnya keadaan sekarang B dan masukan kondisi adalah 0, maka keadaan berikutnya adalah C dan keluaran berikutnya adalah 10. Masukan Keadaan sekarang
A B C D
RESET 0 1 B/01 A/00 C/10 A/00 D/11 A/00 A/00 A/00
Gambar 4.15: Tabel keadaan untuk pencacah modulo-4 Setelah kita membuat tabel keadaan, kita tentukan nilai biner untuk setiap keadaan. Karena ada 4 keadaan, kita membutuhkan paling tidak 2 bit untuk mengkodekan keadaan menjadi biner secara unik. Kita tentukan saja pengkodeannya: A = 00, B = 01, C = 10, dan D = 11, dan mengganti setiap label A, B, C, dan D dengan kode keadaannya, seperti pada Gambar 4.16. Dalam praktiknya, penetapan kode keadaan ini akan berpengaruh terhadap bentuk rangkaian akhir, namun secara logika pengkodean ini mengakibatkan hasil akhir yang sama. Masukan Keadaan sekarang
A:00 B:01 C:10 D:11
RESET 0 1 01/01 00/00 10/10 00/00 11/11 00/00 00/00 00/00
Gambar 4.16: Tabel keadaan untuk pencacah modulo-4 dengan pengkodeannya Dari tabel keadaan, dapat dihasilkan tabel kebenaran untuk keadaan Yohanes Suyanto
4.6. Contoh: Detektor Urutan
77
berikutnya dan fungsi keluaran seperti pada Gambar 4.17. Subskrip untuk variabel keadaan menunjukkan waktu. Keadaan sekarang ditulis dengan st dan keadaan berikutnya ditulis dengan st+1 . Biasanya subskrip ini diabaikan dengan pengertian bahwa ruas kanan dari persamaan memuat keadaan sekarang dan ruas kiri memuat keadaan berikutnya. Perlu dicatat bahwa s0 (t + 1) = q0 (t + 1) dan s1 (t + 1) = q1 (t + 1), sehingga cukup diimplementasikan s0 (t + 1) dan s1 (t + 1) saja sedang q0 (t + 1) dan q1 (t + 1) dapat diambil langsung padanya. RESET
r(t) s1 (t) 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 1 s0 (t + 1) s1 (t + 1) q0 (t + 1) q1 (t + 1)
s0 (t)
s1 s0 (t + 1) q1 q0 (t + 1)
0 1 0 1 0 1 0 1 = = = =
r(t) r(t) r(t) r(t)
s1 (t) s1 (t) s1 (t) s1 (t)
01 10 11 00 00 00 00 00
01 10 11 00 00 00 00 00
s0 (t) + r(t) s0 (t) + r(t) s0 (t) + r(t) s0 (t) + r(t)
s1 s1 s1 s1
s0 (t) s0 (t) s0 (t) s0 (t)
Gambar 4.17: Tabel kebenaran untuk keadaan berikutnya dan fungsi keluaran pencacah modulo-4 Akhirnya, kita implementasikan keadaan berikutnya dan fungsi keluaran dengan menggunakan gerbang logika dan flip-flop D tuan-hamba untuk variabel keadaan seperti pada Gambar 4.18.
4.6
Contoh: Detektor Urutan
Contoh lain, kita akan merancang mesin yang mengeluarkan nilai 1 saat 2 dari 3 masukan terakhir bernilai 1. Contohnya, masukan dengan urutan 011011100 mengeluarkan hasil dengan urutan 001111010. Ada satu jalur masukan seri dan kita asumsikan bahwa pada awalnya tidak ada masukan. Untuk kasus ini, kita akan menggunakan flip-flop D dan MUX 8-ke-1. Yohanes Suyanto
78
4. RANGKAIAN LOGIKA DIGITAL SEKUENSIAL Reset D
Q q1
CLK
CK Q
D
Q
q0
CK Q Gambar 4.18: Desain logika untuk pencacah modulo-4
Kita mulai dengan menyusun diagram transisi keadaan, seperti pada Gambar 4.19. Ada 8 kemungkinan urutan 3 bit yang masuk ke dalam mesin: 000, 001, 010, 011, 100, 101, 110, dan 111. Keadaan A adalah keadaan awal, yang kita asumsikan belum ada data yang masuk. Pada keadaan B dan C baru masuk 1 bit data sehingga keluarannya 0. Keadaan D, E, F, dan G paling tidak menerima 2 bit masukan kalau keadaan sebelumnya adalah B atau C. Setelah masuk pada keadaan D, E, F, atau G maka sistem akan berkutat di keadaan ini saja. Keadaan D akan dikunjungi saat dua masukan terakhir bernilai 00. Keadaan E, F, dan G dikunjungi jika dua masukan terakhir adalah 01, 10, dan 11. Langkah berikutnya adalah membuat tabel keadaan seperti tertera pada Gambar 4.20, yang dituangkan dari diagram transisi keadaan. Selanjutnya, kita akan membuat penetapan kode keadaan seperti Gambar 4.21a. Berdasarkan penetapan kode keadaan kita dapat membuat tabel kebenaran untuk keadaan berikutnya dan fungsi keluaran. Lihat Gambar 4.21b. Dua baris terakhir pada tabel berisi keadaan 111, yang dalam praktiknya tidak akan pernah muncul, karena keadaan 111 untuk kasus ini tidak ada. Dengan demikian keadaan berikutnya dan keluaran pada 2 baris tersebut tidak perlu diperhatikan, dan ditulis sebagai ’d’ yang berarti don’t care, abaikan saja. Akhirnya, kita susun rangkaiannya seperti Gambar 4.22. Perlu 1 flip-flop untuk setiap variabel keadaan, sehingga seluruhnya perlu 3 flip-flop. Ada 3 fungsi keadaan berikutnyadan 1 fungsi keluaran, sehingga kita membutuhkan 4 MUX. Pemilihan s2 , s1 , dan s0 sebagai pengendali MUX merupakan pilihan begitu saja. Pilihan kombinasi lain juga dapat digunakan. Yohanes Suyanto
4.7. Contoh: Pengendali mesin penjualan
79 0/0
0/0
D
1/0
B
0/0
1/0
E
0/0
1/1 0/0
A
0/0
1/0
C
F
1/1
0/1
1/0
G
1/0
Gambar 4.19: Diagram transisi keadaan untuk detektor urutan x
Masukan Keadaan sekarang
A B C D E F G
0 B/0 D/0 F/0 D/0 F/0 D/0 F/1
1 C/0 E/0 G/0 E/0 G/1 E/1 G/0
Gambar 4.20: Tabel keadaan detektor urutan
4.7
Contoh: Pengendali mesin penjualan
Kita akan merancang pengendali mesin penjualan menggunakan flip-flop dan ’kotak hitam’ yang mewakili PLA seperti pada Gambar 4.23. Mesin penjualan menerima tiga macam koin Rp 100, Rp 200, dan Rp 500. Jika nilai yang dimasukkan sama atau lebih besar dari Rp 400, maka mesin akan mengeluarkan barang dagangan, dan mengembalikan uang kelebihan, kemudian menunggu transaksi berikutnya. Kita mulai menyusun diagram transisi keadaan seperti Gambar 4.23. Di keadaan A, belum ada koin yang dimasukkan, sehingga uang yang masuk adalah Rp 0. Jika koin seratusan atau duaratusan dimasukkan maka keadaan akan berubah ke B atau C. Jika koin limaratusan yang dimasukkan maka uang yang masuk sejumlah Rp 500. Mesin akan mengeluarkan barang dagangan dan mengeluarkan kembalian koin seratusan, dan keadaan tetap di A. Hal ini ditandai dengan ”L/110” dalam kalang memutar di keadaan A. Dari keadaan B atau C dapat berpindah ke keadaan D. Dari D kembali ke A atau B. Yohanes Suyanto
80
4. RANGKAIAN LOGIKA DIGITAL SEKUENSIAL
Keadaan sekarang
0 001/0 011/0 101/0 011/0 101/0 011/0 101/1
A:000 B:001 C:010 D:011 E:100 F:101 G:110
s2 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
X
Masukan
1 010/0 100/0 110/0 100/0 110/1 100/1 110/0
(a)
s1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
s0 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
x 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
s2 0 0 0 1 1 1 0 1 1 1 0 1 1 1 d d
s1 0 1 1 0 0 1 1 0 0 1 1 0 0 1 d d
s0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 d d
z 0 0 0 0 0 0 0 0 0 1 0 1 1 0 d d
(b)
Gambar 4.21: Penetapan kode keadaan dan tabel kebenaran detektor urutan 0 x 1 x 1 x 1 0
000 001 010 011 100 101 110 111
DQ CK
x x x x x x x 0
000 001 010 011 100 101 110 111
DQ CK
x x x x x x x 0
000 001 010 011 100 101 110 111
DQ CK
x x x x x x x 0
000 001 010 011 100 101 110 111
CLK
Gambar 4.22: Diagram logika detektor urutan Perhatikan saat koin limaratusan dimasukkan pada keadaan D. Mestinya mesin akan mengeluarkan barang dagangan, mengembalikan Rp 400, dan kembali ke A, tetapi menurut diagram tersebut mesin akan mengeluarkan barang, mengembalikan Rp 300, dan menuju ke keadaan B. Mesin tetap menahan uang sebesar Rp 100. Dari diagram transisi keadaan dapt disusun tabel keadaan seperti pada Gambar 4.24a. Kemudian dapat ditentukan kode keadaan untuk simbol S, D, dan L dalam bentuk biner, seperti pada Gambar 4.24b. Akhirnya, kita buat diagram rangkaiannya seperti Gambar 4.25a. Kode keadaan terdiri atas 2 bit sehingga diperlukan 2 flip-flop D. Empat masukan pada PLA digunakan 2 bit untuk keadaan sekarang dan 2 bit koin x1 x0 . PLA menghasilkan 5 keluaran untuk 2 bit keadaan berikutnya, bit pengeluaran barang, dan bit kembalian seratusan dan duaratusan. Kita asumsikan bahwa pemasukan koin dianggap masukan dan detak juga. Rancangan PLA pada Gambar 4.25a, dapat diikuti prosesnya dengan melihat Gambar 4.25b dan 4.25c, yang disusun secara manual. Namun untuk Yohanes Suyanto
4.8. Mesin Mealy dan Moore
81 D/110 S/100
L/110
S/000 A Rp 0
D/000 B Rp 100
L/101
D Rp 300 L/111
D/000
S/000
L/111, D/100 C Rp 200
S/000 S=seratusan (Rp 100) D=duaratusan (Rp 200) L=duaratusan (Rp 200)
Gambar 4.23: Diagram transisi keadaan pengendali mesin penjualan Masukan K.S.
A B C D
S D L 00 01 10 B/000 C/000 A/110 C/000 D/000 A/101 D/000 A/100 A/111 A/100 A/110 B/111
Masukan K.S.
A:00 B:01 C:10 D:11
S 00 01/000 10/000 11/000 00/100
D 01 10/000 11/000 00/100 00/110
L 10 00/110 00/101 00/111 01/111
Gambar 4.24: (a) Tabel keadaan pengendali mesin penjualan (b) penetapan kode keadaan pengendali mesin penjualan kasus yang kompleks biasanya menggunakan alat bantu komputer.
4.8
Mesin Mealy dan Moore
Keluaran dari rangkaian FSM yang kita bahas sebelumnya sejauh ini ditentukan oleh keadaan sekarang dan masukan. Keadaan dikelola oleh flip-flop picuan tepi surut, maka perubahan keadaan hanya terjadi saat tepi surut pada detak. Apapun perubahan yang terjadi pada masukan tidak mempunyai efek terhadap keadaan selama detak rendah. Masukan langsung menghasilkan keluaran tanpa melewati flip-flop. Dengan demikian perubahan masukan dapat mengakibatkan perubahan keluaran, tanpa memperhatikan detak dalam keadaan rendah atau tinggi. Pada Gambar 4.25, perubahan salah Yohanes Suyanto
82
4. RANGKAIAN LOGIKA DIGITAL SEKUENSIAL x1 x0
5 × 5s 1 PLA s0 Q CK Q
z2 z1 z0
s1
s0 x1 x0
CLK
D
Q CK Q
D
(a) desimal
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
s 1 s 0 x 1 x 0 s 1 s 0 z2 z1 z0 01000 0000 10000 0001 00110 0010 0011 ddddd 10000 0100 11000 0101 00101 0110 0111 ddddd 11000 1000 00100 1001 00111 1010 1011 ddddd 00100 1100 00110 1101 01111 1110 1111 ddddd
(c) s1
s0
z2
z1
z0
(b)
Gambar 4.25: Mesin penjualan (a) rangkaian, (b) tabel kebenaran (c) realisasi PLA satu masukan x1 atau x0 dapat mengakibatkan perubahan keluaran z2 z1 z0 tanpa tergantung pada detak. Model seperti ini dinamakan model FSM Mealy. Dalam model Mealy, keluaran berubah segera setelah masukan berubah, sehingga tidak ada tundaan yang diakibatkan oleh detak. Pada model FSM Moore, keluaran menyatu pada bit keadaan, sehingga perubahan keluaran terjadi pada pulsa detak setelah perubahan masukan. Kedua model ini digunakan oleh perancang rangkaian dan pada bagian ini akan kita bahas perbedaannya dengan mengemukakan contoh. Sebagai contoh model FSM Moore adalah pencacah biner 2 bit seperti pada Gambar 4.26. Mesin ini mencacah dari 0 sampai dengan 3 dan berulang dari 0 lagi, mirip dengan pencacah modulo-4. Mesin hanya mencacah jika x = 1, jika tidak mesin akan bertahan pada keadaan sekarang. Perlu diperhatikan bahwa keluaran menyatu pada variabel keadaan, sehingga tidak ada jalur langsung antara masukan dan keluaran yang tidak melewati flip-flop. Model Mealy dianggap lebih berdaya guna daripada model Moore sebab satu detak saja dapat mengakibatkan perubahan keluaran suatu mesin. PeYohanes Suyanto
4.9. Register
83 0 x
01 1
0
00
1
01
1 0
0 1
11
1
10
00 10
D
11
Q
CK Q
00 0
01 10
D
11
Q
CK Q
CLK Gambar 4.26: FSM Moore pencacah biner 2 bit rubahan keluaran ini dapat mengubah keluaran mesin lain, jika dihubungkan dengan masukan mesin lain tersebut, demikian seterusnya. Dalam model Moore, perubahan selalu sinkron dengan detak, sehingga perubahan beruntun antar mesin tidak dapat terjadi. Perubahan keluaran suatu mesin mempunyai efek yang kecil terhadap mesin berikutnya pada model Moore. Oleh karena itu, analisis dan pelacakan kesalahan dapat ditelusuri bagian per bagian dengan lebih mudah. Pada praktiknya kedua model ini digunakan.
4.9
z0
Register
Informasi yang terdiri atas bit tunggal tersimpan dalam flip-flop D. Sejumlah N bit informasi membentuk satu word dengan panjang N-bit dapat disimpan dalam N flip-flop D. Contoh word dengan panjang 4-bit dapat dilihat pada Gambar 4.27. Susunan flip-flop yang digunakan untuk menyimpan data disebut register. Dalam konfigurasi pada gambar tersebut data masukan Di dimasukkan ke register saat jalur Write dan Enable tinggi, sinkron dengan detak. Isi register dapat dibaca pada keluaran Qi hanya saat jalur Enable tinggi, karena buffer tiga keadaan terputus secara elektronis saat Enable rendah. Kita sederhanakan penggambaran register menjadi seperti Gambar 4.28. Register geser akan menggeser isi pada setiap flip-flop ke flip-flop sesudahnya, dan menerima masukan pada ujung masukan serta memuntahkan isinya pada ujung keluaran, sehingga memungkinkan untuk disusun secara bersamYohanes Suyanto
z1
84
4. RANGKAIAN LOGIKA DIGITAL SEKUENSIAL D3
D2 D
WR CLR EN
Q
D1 Q
D
CK
D
CK
Q3
D0 Q
D
CK
Q2
Q
CK
Q1
Q0
Gambar 4.27: Register 4-bit
WR
D3 D2 D1 D0
CK EN
Q3 Q2 Q1 Q0
Gambar 4.28: Register 4-bit disederhanakan bungan. Perhatikan register geser pada Gambar 4.29. Register dapat digeser ke kiri, digeser ke kanan, menerima masukan secara paralel, atau dibiarkan isinya tetap, semunya sinkron dengan detak. Fasilitas pemasukan paralel dan pembacaan paralel memungkinkan register geser berfungsi sebagai pengubah serial ke paralel atau pengubah paralel ke serial.
4.10
Pencacah
Pencacah adalah bentuk lain dari register yang keluarannya mempunyai pola dalam rentang bilangan biner tertentu. Gambar 4.30 menunjukkan konfigurasi pencacah modulo 8 dengan pola biner tiap langkah adalah: 000, 001, 010, 011, 100, 101, 110, 111 dan diulang lagi. Tiga flip-flop J-K ditempatkan dalam mode bergantian, dan setiap masukan detak dioperasikan AND dengan keluaran Q sebelumya, mengakibatkan frekuensi detak baru sebesar setengahnya. Detak ini akan memicu pada flip-flop berikutnya, demikian seterusnya. Hasilnya adalah setiap flip-flop Fi akan mengasilkan keluaran Qi dengan frekuensi f rac12i. Jika pola Qi dengan i = 2 sampai dengan 0 disusun hasilnya adalah 000, 001, ... ,111. Dalam rangkaian tersebut juga ditambahkan jalur RESET tak sinkron, yang akan melakukan pengisian 000 pada pencacah, dan tidak tergantung pada keadaan, jalur detak, maupun jalur EN. Selain flip-flop pada LSB, keadaannya berubah karena keadaan flip-flop tetangganya, tidak sekedar Yohanes Suyanto
4.10. Pencacah
85
c1
D3
D2
D1
Input geser kanan
D0
output geser kiri Input geser kanan
Q
D
D
Q
D
Q
D
Output geser kanan
Q
c0 c1
CK
CLK EN
CK
Q3 Kendali c1 c0 0 0 1 1
0 1 0 1
CK
Q2
CK
Q1
Q0
Fungsi Tetap Geser kiri Geser kanan Muat paralel
Input geser kanan Output geser kiri c0 c1
D3D2D1D0 Output geser kanan Input geser kiri
Q3Q2Q1Q0
Gambar 4.29: Register geser karena detak. Rangkaian ini mirip dengan Gambar 4.18 tetapi lebih mudah diperluas menjadi ukuran yang lebih besar karena tinggal menghubungkan keluaran dari MSB unit ini ke masukan LSB unit berikutnya.
Yohanes Suyanto
86
4. RANGKAIAN LOGIKA DIGITAL SEKUENSIAL
1 CLK EN
J
Q
1
CK K
J
Q
1
J
CK K
Q
Q
CK K
Q
Q
RESET
Q2
Q1
ENABLE PENCACAH MOD(8) RESET
Q2 Q1 Q0
Gambar 4.30: Pencacah modulo 8
Yohanes Suyanto
Q0