PERANCANGAN PROGRAM VHDL PADA MESIN PEMOTONG KAYU OTOMATIS

Print
Category: Listrik & Elektronika
Last Updated on Friday, 08 May 2015 Published Date Written by Jaka Kiryanta 3

PERANCANGAN PROGRAM  VHDL PADA MESIN PEMOTONG KAYU OTOMATIS

Jaka Kiryanta
Widyaiswara PPPPTK BOE/VEDC Malang
Email: kiryanta@yahoo.de

 

ABSTRAK

        Untuk mengurangi biaya dan waktu perancangan serta fleksibilitas rangkaian yang dirancang perlu dikembangkan suatu rangkaian-rangkaian logika yang dapat diprogram (programmable logic).  PLD merupakan salah satu cara untuk membentuk fungsi-fungsi logika yang kompleks. Suatu PLD berisi array dari gerbang-gerbang logika AND dan OR yang mana masukan dari kedua gerbang tersebut mempunyai hubungan-hubungan atau koneksi yang dapat diprogram yang pada akhirnya akan menyebabkan fungsi yang dibuat akan lebih khusus. 

          Untuk membentuk logika yang  diperlukan dalam otomatisasi alat potong kayu sehingga proses pengerjaannya bisa lebih cepat dan hasilnya bisa lebih baik. Dalam hal ini teknologi yang digunakan untuk otomatisasi adalah VHDL. Teknologi VHDL digunakan sebagai pengolah data pada alat ini karena merupakan bahasa perangkat keras yang menyediakan format yang lengkap serta dapat digunakan untuk suatu simulasi, perencanaan, pemodelan test dan dokumentasi dari suatu sistem. Sehingga rangkaian dapat dibuat lebih sederhana dan ringkas.

Kata kunci : PLD, VHDL, ISE XILING

PENDAHULUAN

        Di Indonesia, kayu merupakan sumber daya hasil hutan yang banyak diminati dan dikelola oleh pengusaha besar maupun usaha kecil menengah dalam bentuk industri kayu lapis, industri penggergajian, industri moulding dan bahan bangunan serta industri mebel. Industri kayu olahan umumnya dikelola oleh usaha kecil menengah dengan proses produksi dan teknologi yang sederhana. Usaha kecil menengah perkayuan ini mempunyai prospek jangka panjang karena produk mereka selalu dibutuhkan oleh masyarakat luas dan bahan bakunya bisa diperbaharui. Sehingga pengembangan industri pengolahan kayu dapat diarahkan kepada industri yang memiliki nilai tambah yang tinggi serta tingkat teknologinya telah dikuasai dengan baik.

          Dengan dukungan teknologi selama proses pengolahan, diharapkan akan terjadi peningkatan kualitas produk sesuai dengan permintaan dan harapan pelanggan. Salah satu elemen penting dalam proses pengolahan kayu di industri perkayuan usaha kecil menengah adalah proses penggergajian kayu. Banyak industri penggergajian dan industri kerajinan perkayuan usaha kecil menengah yang masih menggunakan alat potong manual yang prosesnya membutuhkan waktu lama dan sering hasilnya tidak seragam.

           Untuk itu diperlukan otomatisasi alat potong kayu sehingga proses pengerjaannya bisa lebih cepat dan hasilnya bisa lebih baik. Dalam hal ini teknologi yang digunakan untuk otomatisasi adalah VHDL. Teknologi VHDL digunakan sebagai pengolah data pada alat ini karena merupakan bahasa perangkat keras yang menyediakan format yang lengkap serta dapat digunakan untuk suatu simulasi, perencanaan, pemodelan test dan dokumentasi dari suatu sistem. Sehingga rangkaian dapat dibuat lebih sederhana dan ringkas.

Kontribusi Penelitian

        Kontribusi penelitian pada pengembangan ilmu pengetahuan dan teknologi khususnya bidang elektronika digital terapan. Yaitu dengan mengembangkan aplikasi bahasa pemrograman VHDL pada CPLD tipe IC CE22V10 untuk digunakan pada prototype alat potong kayu otomatis. Sehingga pada akhirnya penelitian ini juga bermanfaat bagi industri perkayuan dan permebelan yaitu  untuk memudahkan proses pemotongan kayu dengan mendapatkan hasil yang lebih baik dengan waktu yang lebih cepat.

Perkembangan Divais Mikroelektronik

     Beberapa kerakteristik yang pada umumnya menandai perkembangan divais mikroelektronika yaitu kepadatan komponen makin meningkat (berat dan dimensi makin rendah), kebutuhan daya rnakin rendah, kecepatan operasi makin tinggi, keandalan (reliability) makin meningkat dan kemampuan untuk meiaksanakan berbagai fungsi dengan tingkat kompleksitas dan derajat kecanggihan yang tinggi. Sebagai contoh pada tabel 1 dapat kita lihat perkembangan rangkaian terintegrasi (IC) yang ditunjukkan oleh peningkatan kepadatan komponen.

Tabel 2.1 Perkembangan Rangkaian Terintegrasi

Jenis rangkaian terintegrasi (IC)

Kepadatan komponen Jumlah elemen per chip

SSI {Small Scale Integration}

  10-100

MSI (Medium Scale Integration)

  100-1000

LSI (Large Scalr Integration)

  1000- 100.000

VLSI {Very Large Scale Integration}

  100.000 - 10 juta

ULSI (Ultra Large Scale Integration)

  Di atas 10 juta

 Programmable Logic Device  (PLD)

    Untuk mengurangi biaya dan waktu perancangan serta fleksibilitas rangkaian yang dirancang perlu dikembangkan suatu rangkaian-rangkaian logika yang dapat diprogram (programmable logic).  PLD merupakan salah satu cara untuk membentuk fungsi-fungsi logika yang kompleks. Suatu PLD berisi array dari gerbang-gerbang logika AND dan OR yang mana masukan dari kedua gerbang tersebut mempunyai hubungan-hubungan atau koneksi yang dapat diprogram yang pada akhirnya akan menyebabkan fungsi yang dibuat akan lebih khusus.  Selain itu , beberapa PLD memiliki feedback, keluaran yang three state, dan flip-flop.  Gerbang-gerbang logika AND dan OR pada PLD dinyatakan dengan cukup sederhana.  PLD terdiri dari beberapa jenis tergantung dari array mana (AND atau OR) yang dapat diprogram dan array mana yang tidak,  PLD dapat dibagi menjadi tiga bagian jenis yaitu:

Latar Belakang VHDL

  Pada pertengahan tahun 1990-an, industri elektronik mengalami ledakan dalam kebutuhan akan komputer pribadi, telepon seluler, dan piranti komunikasi data kecepatan tinggi.. Para vendor (pengusaha) berlomba-lomba memperebutkan pangsa pasar dengan membuat produk yang semakin tingi fungsionalitasnya, kinerja yang lebih bagus, harga rendah, konsumsi listrik rendah, dan ukuran yang semakin kecil.    Situasi ini mengangkat kebutuhan akan adopsi yang meluas dari metodologi modern dalam desain dan pengujian.  Baik High Density Programmable Logic Devices (PLDs) dan  VHDL menjadi elemen kunci dalam metodologi-metodologi ini.

Kelebihan dan Fleksibilitas VHDL

        Dengan perancangan VHDL yang terdiri dari sejumlah gate-gate (gerbang) ini bisa membuat ribuan gerbang yang mana apabila didesain dengan menggunakan skema atau persamaan boole akan memakan waktu yang lebih lama.  Selain itu kelebihan dari VHDL adalah :

  1. Efisien dan fleksibel   :  VHDL adalah bahasa yang dapat digunakan untuk menuliskan kode diskripsi yang lebih efisien untuk mengontrol logika sehingga bisa lebih kompleks. 
  2. Desain alat sendiri  :  VHDL dapat mendesain alat tanpa harus memilih terlebih dahulu alat apa yang akan didesain tersebut dapat diimplementasikan, dan waktu yang ada bisa dikonsentrasikan pada desainnya.
  3. Portabilitas  : Karena VHDL merupakan standar dari setiap deskripsi desain sehingga dapat dipakai untuk berbagai macam simulai sintesa.
  4. Kemampuan berchmarking  :  VHDL bisa mendesain alat dengan arsitektur alat maupun sintesa yag berbeda-beda dan tidak perlu memilih terlebih dahulu apakah menggunakan CPLD atau FPGA.  Desain dan sintesa terlebih dahulu dilakukan baru memilih IC yang akan digunakan.  Sehingga IC-IC yang ada bisa dibandingkan untuk memperoleh IC yang tepat untuk desain.
  5. Perpindahan ke ASIC  :  Dengan tingkat efisiensi yang dihasilkan oleh VHDL, maka setiap produk yang dibuat bisa memiliki fungsi seperti yang diharapkan, sehingga IC yang dibuat menjadi spesifik.
  6. Kecepatan proses dan biaya rendah  :  Dengan menggunakan VHDL maka kecepatan proses dapat ditingkatkan dan biaya dapat ditekan.  Sebuah IC PLD dapat menggantikan banyak IC logika biasa. (Kevin Skahil, 1996:4-7)

Gambar. 1  Portabilitas Antar Kompiler dan Desain

 

METODE PENELITIAN

Variabel Penelitian

Dalam penelitian ini, langkah pertama yang dilakukan adalah menentukan variabel yang diteliti yang meliputi :

Studi Literatur.

Yaitu dengan mengkaji buku-buku dan pustaka yang berhubungan dengan penelitian ini antara lain :

Perancangan mekanik.

Dalam  perencanaan alat ini yang diutamakan terlebih dahulu adalah perencanaan mekanik. Penempatan motor, sensor dan gergaji sangat berpengaruh terhadap prinsip kerja sistem dan pembuatan perangkat lunak. Adapun perancangan mekanik alat yang dibuat meliputi bentuk dan ukuran prototipe alat potong kayu, peletakan sensor-sensor yang digunakan dan peletakan gergaji seperti ditunjukkan dalam Gambar 2

Gambar 2. Rancangan Mekanik Tampak Samping Kanan dan Atas

Perancangan Spesifikasi Alat Potong Kayu Otomatis

Alat potong kayu otomatis yang dibuat dirancang untuk memiliki  spesifikasi sebagai berikut :

Perancangan Prinsip Kerja Sistem

Prinsip kerja dari sistem alat potong kayu ini adalah sebagai berikut :

  1.  Nyalakan tombol start untuk memulai kerja system
  2. Pilih ukuran panjang potongan kayu
  3.  Letakkan kayu yang akan dipotong pada konveyor
  4.  Setelah kayu melewati sensor ukuran kayu sesuai dengan panjang yang telah dipilih maka konveyor akan berhenti.
  5.  Penjepit akan bergerak untuk menjepit kayu.
  6. Gergaji potong berjalan untuk memotong kayu hingga menyentuh sensor selesainya gerak gergaji yang akan menyebabkan gergaji kembali ke posisi awal.
  7. Penjepit akan kembali ke posisi semula
  8. Konveyor kembali berjalan dan potongan kayu akan terbawa ke penampungan.
  9. Proses pemotongan berlanjut dan berulang kembali.

Perancangan Blok Diagram Alat

 Perancangan blok diagram sistem yang akan dibuat ditunjukkan dalam gambar

 

 Gambar 3.  Blok Diagram Sistem

 Penentuan Masukan dan Keluaran Sistem

          Hal penting yang harus diketahui sebelum melakukan pemrograman adalah masukan sistem, keluaran sistem dan cara kerja dari sitem yang akan dibuatkan program kendalinya.  Untuk masukan sistem dan keluaran sistem berturut-turut diperlihatkan dalam tabel 1 dan 2 berikut :

     Tabel 1 Tabel Masukan Sistem

No

Simbol

Diskripsi

Keterangan

1

Start Kontinyu

Siklus Kontinyu

Starting proses kontinyu

2

Stop

Stop Kontinyu

Stop Proses kontinyu

3

Single Start

Tombol Start

Start satu kali proses pemotongan

4

Pilih

Saklar Pilih

Memilih ukuran 1 (S5) atau ukuran 2 (S6)

5

S1

Sensor Press

Aktif saat tidak mengepres

6

S2

Sensor Press

Aktif saat mengepress

7

S3

Sensor pendorong Gergaji

Aktif saat tidak menggergaji

8

S4

Sensor pendorong Gergaji

Aktif saat selesai menggergaji

9

S7

Sensor Penampung

Aktif saat kayu telah diproses (sampai pada penampung)

10

S8

Sensor Kayu

Panjang kayu masih cukup untuk dipotong

  Tabel 2 Tabel Keluaran Sistem

No

Simbul

Diskripsi

Keterangan

1

M1R

Motor Press  Putar kanan

Mengepress / Menjepit

2

M1L

Motor Press Putar kiri

Membuka Press / jepitan

3

M2R

Motor Pendorong gergaji putar kanan

Mendorong gergaji maju

4

M2L

Motor Pendorong gergaji putar kiri

Mendorang gergaji mundur

5

M3

Motor Konveyor 1

Aktif membawa benda kerja

6

M4

Motor Konveyor 2

Aktif membawa benda kerja

7

M5

Motor Gergaji

Aktif saat menggergaji

          Berdasarkan masukan dan keluaran yang diinginkan, selanjutnya dapat ditentukan cara kerja proses pemotongan kayu otomatis ini sebagai berikut:

  1. Jika tombol start ditekan, tombol pemilih telah aktif dan press sedang tidak mengepres (ditandai aktifnya S1) maka konveyor 1 (M3) dan konveyor 2 (M4) akan bekerja.
  2. Jika kayu telah sampai pada sensor yang dipilih ( ditandai aktifnya S5 atau S6) dan panjang kayu masih cukup panjang (S8 Aktif) maka motor konveyor 1 dan motor konveyor 2 berhenti, Sedang motor penjepit berputar ke kanan (M1R) untuk menjepit kayu. Dan jika panjang kayu tidak cukup maka kayu akan terus dibawa ke penampungan melalui konveyor 2 hingga S7 aktif, dan mesin siap mulai tugas baru.
  3. Aktifnya S2 pada saat menjepit akan mengaktifkan motor gergaji (M5) dan motor pendorong gergaji bergerak maju (M2R)
  4. Setelah proses penggergajian selesai (ditandai aktifnya S4) maka motor pendorong gergaji akan mundur (M2L) sampai gergaji pada kondisi semula dan motor konveyor 2 (M4) selanjutnya bekerja membawa hasil potongan ke tempat penampungan.
  5. Setelah potongan sampai pada tempat penampungan (aktifnya S7) Motor penjepit akan berputar ke kiri (M1L) hingga S1 aktif, yang berarti seluruh rangkaian proses pemotongan telah selesai dan mesin siap untuk memulai tugas baru.
  6. Jika tombol Start kontinyu ditekan maka proses di atas berulang terus menerus hingga tombol stop ditekan.

Langkah  Pembuatan Program

        Berdasarkan cara kerja di atas dapat dibuatkan diagram kondisi dan State diagram dari sistem pemotongan kayu seperti ditunjukkan dalam Gambar 3 dan 4.

 

Gambar 3. Diagram Kondisi Sistem


 

  Gambar 4 State diagram sistem

Pembentukan Program

        Dari state diagram yang sudah dibuat, selanjutnya dapat diperoleh program VHDL dengan menggunakan fasilitas yang ada pada ISE-XILINX seperti ditunjukkan dalam Gambar 5.   

-- D:\PROYEK VHDL\FINALSAW\SAW_TB.VHD
-- VHDL testbench created by
-- Xilinx's StateBench 1.01
-- Sat Jan 07 10:17:58 2006
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY ieee;
USE IEEE.STD_LOGIC_TEXTIO.ALL;
USE STD.TEXTIO.ALL;
ENTITY testbench IS
END testbench;
ARCHITECTURE testbench_arch OF testbench IS
FILE RESULTS: TEXT IS OUT "results.txt";
COMPONENT SAW
PORT (CLK,Pilih,RESET,S1,S2,S3,S4,S7,S8,StartKontinyu,StartSingle,Stop: IN std_logic;
M1L,M1R,M2L,M2R,M3,M4,M5 : OUT std_logic);
END COMPONENT;
SIGNAL CLK,Pilih,RESET,S1,S2,S3,S4,S7,S8,StartKontinyu,StartSingle,Stop: std_logic := '0';
SIGNAL M1L,M1R,M2L,M2R,M3,M4,M5 : std_logic := '0';
BEGIN
UUT : SAW PORT MAP (
CLK=>CLK,
Pilih=>Pilih,
RESET=>RESET,
S1=>S1,
S2=>S2,
S3=>S3,
S4=>S4,
S7=>S7,
S8=>S8,
StartKontinyu=>StartKontinyu,
StartSingle=>StartSingle,
Stop=>Stop,
M1L=>M1L,
M1R=>M1R,
M2L=>M2L,
M2R=>M2R,
M3=>M3,
M4=>M4,
M5=>M5);
PROCESS
VARIABLE TX_OUT : LINE;
VARIABLE TX_ERROR : INTEGER := 0;
PROCEDURE CHECK_M1L(
next_M1L : std_logic
) IS BEGIN
IF (M1L /= next_M1L) THEN
write(TX_OUT,string'(
"* Error, M1L="));
write(TX_OUT, M1L);
write(TX_OUT, string'(" Expected = "));
write(TX_OUT, next_M1L);
write(TX_OUT, string'(" *"));
writeline(results, TX_OUT);
TX_ERROR := TX_ERROR + 1;
END IF;
ASSERT (M1L=next_M1L) REPORT
"Error, M1L has incorrect value"
SEVERITY ERROR;
END;
PROCEDURE CHECK_M1R(
next_M1R : std_logic
) IS BEGIN
IF (M1R /= next_M1R) THEN
write(TX_OUT,string'(
"* Error, M1R="));
write(TX_OUT, M1R);
write(TX_OUT, string'(" Expected = "));
write(TX_OUT, next_M1R);
write(TX_OUT, string'(" *"));
writeline(results, TX_OUT);
TX_ERROR := TX_ERROR + 1;
END IF;
ASSERT (M1R=next_M1R) REPORT
"Error, M1R has incorrect value"
SEVERITY ERROR;
END;
PROCEDURE CHECK_M2L(
next_M2L : std_logic
) IS BEGIN
IF (M2L /= next_M2L) THEN
write(TX_OUT,string'(
"* Error, M2L="));
write(TX_OUT, M2L);
write(TX_OUT, string'(" Expected = "));
write(TX_OUT, next_M2L);
write(TX_OUT, string'(" *"));
writeline(results, TX_OUT);
TX_ERROR := TX_ERROR + 1;
END IF;
ASSERT (M2L=next_M2L) REPORT
"Error, M2L has incorrect value"
SEVERITY ERROR;
END;
PROCEDURE CHECK_M2R(
next_M2R : std_logic
) IS BEGIN
IF (M2R /= next_M2R) THEN
write(TX_OUT,string'(
"* Error, M2R="));
write(TX_OUT, M2R);
write(TX_OUT, string'(" Expected = "));
write(TX_OUT, next_M2R);
write(TX_OUT, string'(" *"));
writeline(results, TX_OUT);
TX_ERROR := TX_ERROR + 1;
END IF;
ASSERT (M2R=next_M2R) REPORT
"Error, M2R has incorrect value"
SEVERITY ERROR;
END;
PROCEDURE CHECK_M3(
next_M3 : std_logic
) IS BEGIN
IF (M3 /= next_M3) THEN
write(TX_OUT,string'(
"* Error, M3="));
write(TX_OUT, M3);
write(TX_OUT, string'(" Expected = "));
write(TX_OUT, next_M3);
write(TX_OUT, string'(" *"));
writeline(results, TX_OUT);
TX_ERROR := TX_ERROR + 1;
END IF;
ASSERT (M3=next_M3) REPORT
"Error, M3 has incorrect value"
SEVERITY ERROR;
END;
PROCEDURE CHECK_M4(
next_M4 : std_logic
) IS BEGIN
IF (M4 /= next_M4) THEN
write(TX_OUT,string'(
"* Error, M4="));
write(TX_OUT, M4);
write(TX_OUT, string'(" Expected = "));
write(TX_OUT, next_M4);
write(TX_OUT, string'(" *"));
writeline(results, TX_OUT);
TX_ERROR := TX_ERROR + 1;
END IF;
ASSERT (M4=next_M4) REPORT
"Error, M4 has incorrect value"
SEVERITY ERROR;
END;
PROCEDURE CHECK_M5(
next_M5 : std_logic
) IS BEGIN
IF (M5 /= next_M5) THEN
write(TX_OUT,string'(
"* Error, M5="));
write(TX_OUT, M5);
write(TX_OUT, string'(" Expected = "));
write(TX_OUT, next_M5);
write(TX_OUT, string'(" *"));
writeline(results, TX_OUT);
TX_ERROR := TX_ERROR + 1;
END IF;
ASSERT (M5=next_M5) REPORT
"Error, M5 has incorrect value"
SEVERITY ERROR;
END;
BEGIN
-- --------------------
CLK <= '0'; -- Initialize clock inactive
Pilih <= '0';
RESET <= '1';
S1 <= '0';
S2 <= '0';
S3 <= '0';
S4 <= '0';
S7 <= '0';
S8 <= '0';
StartKontinyu <= '0';
StartSingle <= '0';
Stop <= '0';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 0 Time 1 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('0');
CHECK_M2L('0');
CHECK_M2R('0');
CHECK_M3('0');
CHECK_M4('0');
CHECK_M5('0');
WAIT FOR 9 ns;
RESET <= '0';
S1 <= '1';
S3 <= '1';
S4 <= '1';
StartSingle <= '1';
Stop <= '1';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 1 Time 12 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('0');
CHECK_M2L('0');
CHECK_M2R('0');
CHECK_M3('1');
CHECK_M4('1');
CHECK_M5('0');
WAIT FOR 9 ns;
StartKontinyu <= '1';
Stop <= '0';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 2 Time 23 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('0');
CHECK_M2L('0');
CHECK_M2R('0');
CHECK_M3('1');
CHECK_M4('1');
CHECK_M5('0');
WAIT FOR 9 ns;
Pilih <= '1';
S1 <= '0';
S2 <= '1';
S3 <= '0';
S7 <= '1';
S8 <= '1';
StartSingle <= '0';
Stop <= '1';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 3 Time 34 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('1');
CHECK_M2L('0');
CHECK_M2R('0');
CHECK_M3('0');
CHECK_M4('0');
CHECK_M5('0');
WAIT FOR 9 ns;
StartKontinyu <= '0';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 4 Time 45 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('0');
CHECK_M2L('0');
CHECK_M2R('1');
CHECK_M3('0');
CHECK_M4('0');
CHECK_M5('1');
WAIT FOR 9 ns;
Pilih <= '0';
S2 <= '0';
S4 <= '0';
S8 <= '0';
StartSingle <= '1';
Stop <= '0';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 5 Time 56 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('0');
CHECK_M2L('0');
CHECK_M2R('1');
CHECK_M3('0');
CHECK_M4('0');
CHECK_M5('1');
WAIT FOR 9 ns;
S4 <= '1';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 6 Time 67 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('0');
CHECK_M2L('1');
CHECK_M2R('0');
CHECK_M3('0');
CHECK_M4('1');
CHECK_M5('0');
WAIT FOR 9 ns;
Pilih <= '1';
S1 <= '1';
S3 <= '1';
S4 <= '0';
S7 <= '0';
S8 <= '1';
StartSingle <= '0';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 7 Time 78 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('0');
CHECK_M2L('1');
CHECK_M2R('0');
CHECK_M3('0');
CHECK_M4('1');
CHECK_M5('0');
WAIT FOR 9 ns;
S7 <= '1';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 8 Time 89 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('1');
CHECK_M1R('0');
CHECK_M2L('0');
CHECK_M2R('0');
CHECK_M3('0');
CHECK_M4('0');
CHECK_M5('0');
WAIT FOR 9 ns;
Pilih <= '0';
S1 <= '0';
S4 <= '1';
S7 <= '0';
S8 <= '0';
Stop <= '1';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 9 Time 100 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('1');
CHECK_M1R('0');
CHECK_M2L('0');
CHECK_M2R('0');
CHECK_M3('0');
CHECK_M4('0');
CHECK_M5('0');
WAIT FOR 9 ns;
S1 <= '1';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 10 Time 111 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('0');
CHECK_M2L('0');
CHECK_M2R('0');
CHECK_M3('0');
CHECK_M4('0');
CHECK_M5('0');
WAIT FOR 9 ns;
S1 <= '0';
S2 <= '1';
S3 <= '0';
S7 <= '1';
StartKontinyu <= '1';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 11 Time 122 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('0');
CHECK_M2L('0');
CHECK_M2R('0');
CHECK_M3('0');
CHECK_M4('0');
CHECK_M5('0');
WAIT FOR 9 ns;
Pilih <= '1';
S1 <= '1';
S2 <= '0';
S4 <= '0';
S8 <= '1';
StartKontinyu <= '0';
StartSingle <= '1';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 12 Time 133 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('0');
CHECK_M2L('0');
CHECK_M2R('0');
CHECK_M3('1');
CHECK_M4('1');
CHECK_M5('0');
WAIT FOR 9 ns;
S8 <= '0';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 13 Time 144 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('0');
CHECK_M2L('0');
CHECK_M2R('0');
CHECK_M3('0');
CHECK_M4('1');
CHECK_M5('0');
WAIT FOR 9 ns;
Pilih <= '0';
S2 <= '1';
S4 <= '1';
S7 <= '0';
S8 <= '1';
StartKontinyu <= '1';
StartSingle <= '0';
Stop <= '0';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 14 Time 155 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('0');
CHECK_M2L('0');
CHECK_M2R('0');
CHECK_M3('0');
CHECK_M4('1');
CHECK_M5('0');
WAIT FOR 9 ns;
S7 <= '1';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 15 Time 166 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('0');
CHECK_M2L('0');
CHECK_M2R('0');
CHECK_M3('0');
CHECK_M4('0');
CHECK_M5('0');
WAIT FOR 9 ns;
S4 <= '0';
S8 <= '0';
StartSingle <= '1';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 16 Time 177 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('0');
CHECK_M2L('0');
CHECK_M2R('0');
CHECK_M3('1');
CHECK_M4('1');
CHECK_M5('0');
WAIT FOR 9 ns;
Pilih <= '1';
S2 <= '0';
S3 <= '1';
S4 <= '1';
S7 <= '0';
S8 <= '1';
StartKontinyu <= '0';
Stop <= '1';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 17 Time 188 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('1');
CHECK_M2L('0');
CHECK_M2R('0');
CHECK_M3('0');
CHECK_M4('0');
CHECK_M5('0');
WAIT FOR 9 ns;
S1 <= '0';
S4 <= '0';
S8 <= '0';
Stop <= '0';
WAIT FOR 1 ns;
-- ----------------------
CLK <= '1'; -- Clock 18 Time 199 ns
WAIT FOR 1 ns;
CLK <= '0'; -- inactive clock edge
CHECK_M1L('0');
CHECK_M1R('1');
CHECK_M2L('0');
CHECK_M2R('0');
CHECK_M3('0');
CHECK_M4('0');
CHECK_M5('0');
WAIT FOR 9 ns;
IF (TX_ERROR = 0) THEN
write(TX_OUT,string'("No errors or warnings"));
writeline(results, TX_OUT);
ASSERT (FALSE) REPORT
"Simulation successful. No problems detected."
SEVERITY FAILURE;
ELSE
write(TX_OUT, TX_ERROR);
write(TX_OUT, string'(
" errors found in simulation"));
writeline(results, TX_OUT);
ASSERT (FALSE) REPORT
"Errors found during simulation"
SEVERITY FAILURE;
END IF;
END PROCESS;
END testbench_arch;
CONFIGURATION SAW_cfg OF testbench IS
FOR testbench_arch
END FOR;
END SAW_cfg;

Gambar 5. Program VHDL

HASIL DAN PEMBAHASAN

Hasil Pengujian Perancangan program

          Analisa hasil pengujian dari perancangan dilakukan dengan menggunakan fasilitas simulasi ISE XILINX dengan hasil simulasi ditunjukkan dalam Gambar 6 :

 Gambar 6. Hasil simulasi dengan ISE XILINX

Pengujian keseluruhan sistem melalui simulasi seperti diatas dilakukan untuk menguji apakah sistem telah bekerja sesuai dengan yang direncanakan atau belum. Dari gambar di atas menunjukkan bahwa sistem telah bekerja sesuai dengan yang direncanakan.

Kesimpulan:

 Saran

 DAFTAR PUSTAKA:

 1.      Watherman Steve , 2003.Digital Logic Simulations and CPLD Programming With VHDL, Prentice-Hall.

 2.      Wisnu Jatmiko dkk, 2011. Implementasi Berbagai Algoritma Neural Network dan Wavelet Pada Field Programmable Gate Arry (FPGA). Fakultas UI