Makalah State Machine

12
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 t eknik 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 ( ip- ops), 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 POLITEKNIK NEGERI MALANG Page 1

Transcript of Makalah State Machine

Page 1: Makalah State Machine

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

Page 2: Makalah State Machine

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

Page 3: Makalah State Machine

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

jumlah bit yang diperlukan untuk mengkodekan seluruh state FSM (karena sinyal hanya untuk

POLITEKNIK NEGERI MALANG Page 3

Page 4: Makalah State Machine

STATE MACHINES

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

pernyataan sekuensial, untuk semua sinyal input yang ada dalam daftar sensitivitas dan semua

POLITEKNIK NEGERI MALANG Page 4

Page 5: Makalah State Machine

STATE MACHINES

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

Page 6: Makalah State Machine

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

pr_state1 <= nx_state1;

POLITEKNIK NEGERI MALANG Page 6

Page 7: Makalah State Machine

STATE MACHINES

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 =>

out2 <= '1';

POLITEKNIK NEGERI MALANG Page 7

Page 8: Makalah State Machine

STATE MACHINES

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