Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 8

STATE MACHINES

State Machines

Finite state machines (FSM) merupakan teknik pemodelan khusus untuk logika rangkaian
sekuensial. Pemodelan ini sangat membantu dalam perancangan sistem terutama jenis tertentu
yang tugasnya membentuk urutan yang jelas (misalnya pengendali digital). Kita memulai bab ini
dengan meninjau konsep-konsep fundamental yang berkaitan dengan FSM. Pada materi ini
dijelaskan teknik pengkodean yang sesuai VHDL, diikuti oleh contoh desain lengkap.

8,1 Pendahuluan
Gambar 8.1 menunjukkan diagram blok state machine fase tunggal. Seperti yang
ditunjukkan dalam gambar, bagian bawah berisi logika sekuensial (flip-flops), sedangkan
bagian atas berisi logika kombinatorial.
Logika kombinatorial (atas) memiliki dua input, salah satu menjadi pr_state (present
state) dan lainnya input eksternal. Logika ini juga memiliki dua output, nx_state (next state) dan
output eksternal.
Logika sekuensial (bawah) memiliki tiga bagian input (clock, reset, and nx_state), dan
satu output (pr_state). Karena semua flip-flop adalah bagian dari sistem, clock dan reset harus
terhubung. Jika output dari mesin tidak hanya tergantung pada present state tetapi juga pada
input, maka disebut Mesin Mealy. Sebaliknya, jika hanya bergantung pada current state, maka
disebut Mesin Moore. Kedua contoh akan ditampilkan kemudian.

POLITEKNIK NEGERI MALANG Page 1


STATE MACHINES

Pemisahan rangkaian menjadi dua bagian (gambar 8.1) memungkinkan desain yang akan
dibagi menjadi dua bagian juga. Dari perspektif VHDL, jelas bahwa bagian bawah menjadi
sekuensial, akan memerlukan PROCESS, sementara bagian atas menjadi kombinatorial. Namun,
ingat bahwa kode sekuensial dapat diimplementasikan pada kedua jenis logika, kombinatorial
dan sekuensial. Oleh karena itu, jika diinginkan, bagian atas juga dapat diimplementasikan
menggunakan PROCESS.
Sinyal clock dan reset biasanya muncul dalam daftar sensitivitas PROCESS bagian
bawah (kecuali resetnya sinkron atau tidak digunakan, atau WAIT digunakan sebagai pengganti
dari IF). Ketika reset digunakan, pr_state akan ditetapkan ke keadaan awal sistem. Sementara itu,
di tepi clock flip-flop akan menyimpan nx_state, sehingga mentransfer ke output bagian bawah
(pr_state).
Salah satu aspek penting terkait dengan pendekatan FSM adalah meskipun setiap sirkuit
sekuensial secara prinsip dapat dimodelkan sebagai mesin state, hal ini tidak selalu
menguntungkan. Alasannya karena kode tersebut akan menjadi lebih panjang, lebih kompleks,
dan error yang lebih rawan daripada pendekatan konvensional. Hal ini sering terjadi pada
rangkaian sederhana, seperti counter.
Sebagai aturan yang sederhana, pendekatan FSM dianjurkan dalam sistem tugas yang
merupakan daftar yang tersusun dengan baik sehingga semua state dapat dengan mudah
disebutkan. Artinya, dalam penerapan mesin state yang khas, kita akan menjumpai,
ARCHITECTURE di awal, sebuah tipe data enumerated user-defined, mengandung daftar
kemungkinan semua sistem state. Pengendali digital adalah contoh yang bagus bagi beberapa
rangkaian.
Aspek penting lainnya, yang sudah ditekankan pada awal bab 5, adalah bahwa tidak
semua sirkuit yang memiliki memori perlu logika sekuensial. Sebagai contoh sebuah RAM
(Random Access Memory), didalamnya, operasi pembacaan memory hanya tergantung pada
alamat bit yang diterapkan saat ini pada RAM (input), dan nilai yang diambil tidak ada
hubungannya dengan akses memory sebelumnya (input sebelumnya). Dalam kasus tersebut,
pendekatan FSM tidak dianjurkan.

POLITEKNIK NEGERI MALANG Page 2


STATE MACHINES

8,2 Desain Style # 1


Beberapa pendekatan dapat dipahami untuk merancang sebuah FSM. Disini akan
dijelaskan secara detail salah satu gaya yang terstruktur baik dan mudah diaplikasi. Di dalamnya,
desain bagian bawah mesin state (gambar 8.1) benar-benar terpisah dari bagian atas. Semua state
bagian mesin selalu eksplisit dan dinyatakan menggunakan tipe data enumerated. Setelah
memperkenalkan beberapa bentuk desain, kami akan memeriksa data dari perspektif
penyimpanan untuk lebih memahami dan memperbaiki konstruksi yang akan mengarah pada
gaya desain # 2.

Design of the Lower (Sequential) Section


Dalam gambar 8.1, Bagian flip-flop berada di bagian bawah, sehingga clock dan reset
terhubung. Masukan lain bagian bawah adalah nx_state (next state), sementara pr_state (present
state) adalah satu-satunya output. Sebagai rangkaian dari sekuensial bagian bawah, sebuah
PROCESS diperlukan, di mana setiap pernyataan sekuensial (IF, WAIT, CASE, atau LOOP, bab
6) dapat digunakan.
Sebuah desain khas template untuk bagian bawah adalah sebagai berikut:

Kode yang ditunjukkan di atas sangat sederhana. Ini terdiri dari sebuah reset asinkron,
yang menentukan keadaan awal sistem (state0), diikuti dengan menyimpan sinkron nx_state
(pada transisi positif dari clock), yang akan menghasilkan pr_state di output bagian bawah
(gambar 8.1). kabar baik tentang pendekatan ini adalah desain bagian bawah pada dasarnya
adalah standar.
Keuntungan lain dari gaya desain ini adalah bahwa jumlah registernya minimal. Dari
bagian 7.5, kita tahu bahwa jumlah flip-flop yang disimpulkan dari kode di atas sama dengan

POLITEKNIK NEGERI MALANG Page 3


STATE MACHINES

jumlah bit yang diperlukan untuk mengkodekan seluruh state FSM (karena sinyal hanya untuk
nilai yang diberikan pada transisi sinyal pr_state lain). Oleh karena itu, jika default (biner) gaya
pengkodean (bagian8.4) digunakan, hanya (log2n) flip flop yang akan dibutuhkan, dimana n
adalah jumlah state.
Dalam gambar 8.1, bagian atas sepenuhnya kombinatorial, sehingga kodenya tidak perlu
menjadi sekuensial, secara bersamaan kode dapat juga digunakan. Namun, dalam desain
template yang ditampilkan di bawah ini, kode sekuensial bekerja, Dalam hal ini, ingat bahwa
aturan-aturan 1 dan 2 dari bagian 6.10 harus diperhatikan.

Seperti dapat dilihat, kode ini sangat sederhana dan dua hal yang dilakukan: (a)
menetapkan nilai output dan (b) membentuk state berikutnya. Perhatikan juga bahwa itu sesuai
dengan aturan 1 dan 2 bagian 6.10, relatif terhadap desain sirkuit kombinatorial menggunakan

POLITEKNIK NEGERI MALANG Page 4


STATE MACHINES

pernyataan sekuensial, untuk semua sinyal input yang ada dalam daftar sensitivitas dan semua
kombinasi input / output tertentu. Terakhir, amati bahwa tidak ada sinyal yang dibuat pada
transisi sinyal lain, sehingga tidak ada flip-flop yang akan disimpulkan (Bagian 7.5).

State Machine Template for Design Style #1


Sebuah template lengkap ditampilkan di bawah ini. Memperhatikan selain dua proses
yang ditampilkan di atas, ini juga berisi tipe data enumerated sebuah user-defined (di sini disebut
state), yang berisi semua kemungkinan state dari sebuah mesin.

POLITEKNIK NEGERI MALANG Page 5


STATE MACHINES

A. Listing Program

LIBRARY ieee;
USE ieee.std_logic_1164.all;
----------------------------------------
ENTITY signal_gen IS
PORT ( clk: IN BIT;
outp: OUT BIT);
END signal_gen;
-----------------------------------------
ARCHITECTURE fsm OF signal_gen IS
TYPE state IS (one, two, three);
SIGNAL pr_state1, nx_state1: state;
SIGNAL pr_state2, nx_state2: state;
SIGNAL out1, out2: BIT;
BEGIN
----- Lower section of machine #1: ---
PROCESS(clk)
BEGIN
IF (clk'EVENT AND clk='1') THEN

POLITEKNIK NEGERI MALANG Page 6


STATE MACHINES

pr_state1 <= nx_state1;


END IF;
END PROCESS;
----- Lower section of machine #2: ---
PROCESS(clk)
BEGIN
IF (clk'EVENT AND clk='0') THEN
pr_state2 <= nx_state2;
END IF;
END PROCESS;
---- Upper section of machine #1: -----
PROCESS (pr_state1)
BEGIN

CASE pr_state1 IS
WHEN one =>
out1 <= '0';
nx_state1 <= two;
WHEN two =>
out1 <= '1';
nx_state1 <= three;
WHEN three =>
out1 <= '1';
nx_state1 <= one;
END CASE;
END PROCESS;
---- Upper section of machine #2: -----
PROCESS (pr_state2)
BEGIN
CASE pr_state2 IS
WHEN one =>

POLITEKNIK NEGERI MALANG Page 7


STATE MACHINES

out2 <= '1';


nx_state2 <= two;
WHEN two =>
out2 <= '0';
nx_state2 <= three;
WHEN three =>
out2 <= '1';
nx_state2 <= one;
END CASE;
END PROCESS;
outp <= out1 AND out2;
END fsm;
------------------------------------------
B. Gambar Sinyal

POLITEKNIK NEGERI MALANG Page 8

You might also like