Contoh Program FPGA Menggunakan Verilog dan Penjelasannya


Encoder

Ini merupakan program Encoder menggunakan if. Module-module yang digunakan ada binary_out (output biner 4 bit), encoder_in (input 16 bit), dan enable (untuk mengaktifkan encoder). Port yang digunakan ada binary_out dengan array 0-3, encoder_in dengan array 0-15, dan juga enable sebagai input. Si enable ini biasanya menggunakan switch. Kalau output biasanya LED. Output berupa binary_out disimpan di register.

Masuk ke program diawali dengan begin. Sebelum begin ada perintah always seperti fungsi looping. Karena tidak ada inputan maka output biner pertama kali adalah 0. Jika encoder di-enable / diaktifkan maka inputan berupa nilai h0002 akan di-encoding dan menghasilkan output biner = 1. Input h0004 di-encoding menghasilkan biner = 2. Begitu seterusnya sampai input terakhir yaitu h8000 yang menghasilkan output biner = 15. Jadi menurut saya encoder ini akan melakukan looping karena perintah always dari input pertama sampai input terakhir dan kemudian berhenti karena kondisi sudah terpenuhi.


Decoder



Ini merupakan program Decoder menggunakan if dan case. Module-module yang digunakan ada binary_in (input biner 4 bit), decoder_out (output 16 bit), dan enable (untuk mengaktifkan decoder). Port yang digunakan ada binary_in dengan array 0-3, decoder_out dengan array 0-15, dan enable sebagai input. Sama seperti yang di atas, enable biasanya menggunakan switch dan untuk output biasanya menggunakan LED. Output berupa decoder_out disimpan di register.

Masuk ke program diawali dengan begin. Sebelum begin ada perintah always seperti fungsi looping. Ini merupakan kebalikan dari encoder. Karena tidak ada inputan maka output decoding pertama kali adalah 0. Jika decoder di-enable / diaktifkan maka masuk ke case, inputan biner h0 didecoding menghasilkan output h0001. Jika inputnya h1 maka menghasilkan output h0002 dan seterusnya sampai input hF menghasilkan output h8000. Program ini akan looping dari input pertama sampai terakhir dan berhenti karena kondisi sudah terpenuhi.


Multiplekser (Mux)


Ini merupakan program Multiplekser (Mux) menggunakan if. Module-module yang digunakan ada din_0 sebagai input pertama, din_1 sebagai input kedua, sel sebagai selector, mux_out sebagai output. Port inputnya yaitu din_0, din_1, dan selector (biasanya selector itu switch), sedangkan port outputnya yaitu mux_out. Seperti biasa, untuk outputnya disimpan di register.

Jika selector-nya itu nilainya 0 bit (switchnya keadaan low) maka yang akan menjadi outputnya adalah input yang pertama (din_0). Kalau switchnya dinaikkan ke high maka outputnya adalah input yang kedua (din_1).


D Flip-flop


Ini merupakan program Synchronous D Flip-flop. Module-module yang digunakan ada data, clk (clock), reset, dan q (output). Port inputnya yaitu data, clk, dan reset. Sedangkan port outputnya adalah q (berupa LED). Output selalu disimpan di register.

Jika kita tidak menekan button reset maka LED akan mati (0 bit), ini dikarenakan ada tanda negasi pada reset. Sedangkan jika ditekan button resetnya maka LED akan nyala. Inputannya bernilai 1. Menurut saya cara kerjanya hanya ditekan dan dilepas saja button reset-nya untuk menghasilkan output.


Counter


Ini merupakan program Up Counter Simple 8 Bit. Module-module yang digunakan pada program ini ada out (output), enable, clk (clock), dan reset. Port outputnya yaitu variabel out dengan array 0-7 (8 bit) dan port inputnya yaitu enable, reset, dan clock. Untuk outputnya disimpan di register.

Jika kita me-reset seperti menekan pushbotton untuk reset maka output akan kembali ke 0 bit. Outputnya ini biasanya berupa LED. Jadi kalau di-reset, LED-nya akan kembali ke awal. Jika kita mengaktifkan counter dengan merubah switch-nya ke posisi high maka outputnya akan bertambah satu, yaitu LED akan hidup satu per satu karena ada perintah always terhadap clock.


Memori


Ini merupakan program ROM / EPROM Loading from File. Module-module yang digunakan ada address, data, read_en (read enable), dan ce (chip enable). Port input yaitu address dengan array 0-7, read_en, dan ce. Port output yaitu data dengan array 0-7. Data disimpan di dalam memori yang array-nya 0-255.

Data dihasilkan dari chip enable dan read enable yang alamatnya disimpan dalam memori dengan data output awal 0 bit. Data akan diakses dari memory file dengan perintah $readmemb dan data tersebut merupakan output dari program ini.


Parity


Ini merupakan program Parity menggunakan assign. Module-module yang digunakan ada data_in (8 bit) dan parity_out (1 bit). Port input yaitu data_in dengan array 0-7 (berupa switch) dan port output yaitu parity_out (berupa LED). Wire parity_out untuk menghubungkan 2 data input yang akan dijumlahkan.

Kita akan memasangkan tiap data input, yaitu data_in[0] dengan data_in[1] sampai data_in[6] dengan data_in[7]. Nilai inputnya hanya ada 0 dan 1. Data input yang dipasangkan akan dijumlahkan. Karena ini adalah Parity Ganjil (Gerbang Logika XOR) maka jika hasilnya ganjil, LED akan nyala. Sedangkan jika hasilnya genap maka LED tetap mati.






EmoticonEmoticon