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 (À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 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 Àip-Àop 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 aka n 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 stat e 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); t hree); SIG NAL pr_state1, nx_state1: state; SIG NAL pr_state2, nx_state2: state; SIG NAL 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