Telephone : +6285737349951
Pada perancangan kali ini, kami merancang sebuah ANN yang dapat mengenali gender manusia
melalui suaranya. Sistem yang kami rancang menerima masukan berupa suara dalam format WAV
yang dipartisi dalam dataset yang diconversi melalui aplikasi Matlab dan TensorFlow. Setiap
inputan memiliki 17 karakteristik yang menjadi bagian dari dataset sehingga input pada sistem
ANN kami sebanyak 17 input. Sistem kami hanya menggunakan satu hidden layer dengan jumlah
preseptron sebanyak 20 buah yang dapat dianalogikan sebagai perangkat yang menentukan
gender yang akan diseleksi. Output pada sistem kami sebanyak 2 buah yang mengidentifikasikan
1 dan 0. Gender ‘pria’ diberi nilai supervisor [1,0] sedangkan ‘wanita’ diberi nilai supervisor [0,1].
Sehingga jumlah layer pada sistem kami sebanyak 3 layer.
Gambar 1. Bentuk rancangan sistem ANN dengan 3 layer (input, 1 hidden layer, dan output)
Gambar 2. Model Neural Network yang kami rancang dengan menerima input dan output
disesuaikan dengan supervisor yang dirancang pada saat mode ‘learning’
Gambar 3. Model Neural Network yang kami rancang sesuai dengan LSI Contest 2018
Gambar 4. Perancangan Back Propagation yang memerhatikan nilai cost function
Gambar 5. Sistem ANN yang kami rancang dengan 17 input, 20 perseptron pada sebuah hidden
layer, dan 2 output
Kami merancang dua buah modul secara terpisah yakni modul Back Propagation dengan Forward untuk
mode ‘learning’ dan modul Forward untuk modul ‘testing’. Pada kedua modul tersebut, berikut kami
tampilkan RTL dari sistem yang kami rancang.
2. Explanation of Function
Modul: input_layer
Deskripsi: mengeluarkan hasil perkalian dari setiap input dengan weight –weight yang terhubung
dari input tersebut ke setiap perceptron di hidden layer
Modul: hidden_layer
Deskripsi: Menjumlahkan hasil perkalian nilai a hidden layer dengan cabang-cabangnya yang
terhubung ke perseptron di output layer, dan mengeluarkan nilai sigmoid functionnya melalui
fungsi sigmoid_function.v
Deskripsi: mengeluarkan nilai square error dengan input nilai a3 (nilai output forward) dan nilai
supervisor
Modul: dadz
Modul: delta_output
Modul: delta_hiddenlayer
Modul: dw
Deskripsi: mengeluarkan nilai dw, yaitu nilai yang akan menjadi nilai perubahan pada weight. Pada
modul ini, nilai perubahan telah dikalikan dengan learning rate yang diinginkan pada rancangan,
yaitu 0.1
Deskripsi: Mengeluarkan hasil perkalian delta setiap perceptron, dengan learning rate guna
menjadi nilai perubahan bias.
Pada modul toplevelnya, digunakan counter dan clock untuk menghitung menjadi tanda sinyal untuk
melakukan penambahan nilai perubahan weight pada weight yang lama, sehingga dihasilkan nilai weight
yang baru, yang akan digunakan pada proses forward berikutnya.
Modul PISO_w2
Deskripsi: Mengubah nilai weight 2 dan mengeluarkannya secara serial. Terdapat 17 modul
PISO_w2 , sesuai dengan jumlah input yang diterima.
Modul Sequence_multiply
Deskripsi: Modul ini berfungsi untuk mengalikan 2 input dan mengeluarkan hasil perkalian 1 clock
setelahnya.
Modul SIPO_w2
Deskripsi: Modul ini berfungsi membuat hasil perkalian dari modul Sequence Multiply menjadi
parallel dan menyimpannya pada sebuah memori
Modul PISO_hl1
Deskripsi: Modul ini berfungsi untuk mengeluarkan nilai-nilai hasil perkalian pada modul
sebelumnya yang telah diparalelkan menjadi seri. Modul ini mengeluarkan secara serial nilai yang
akan menjadi nilai z pada perceptron di hidden layer
Modul increment_adder_hiddenlayer
Deskripsi: Modul ini berfunsgi unutk menjumlahkan nilai yang masuk pada perseptron di hidden
layer secara serial menjadi nilai z yang akan masuk ke sigmoid function
Modul sigmoid_function
Deskripsi: Fungsi aktivasi yang mengubah z menjadi a. Dilakukan dengan metode pendekatan
sesuai dengan pada
Modul PIPO_a2
Modul PISO_a2_z3
Deskripsi: Mengeluarkan nilai a3 yang tersimpan pada register secara seri setiap siklus clock
Modul PISO_w3
Modul sequence_multiply_z3
Deskripsi: mengeluarkan hasil perkalian dari 2 input , yaitu nilai a3 dan nilai weight 3.
Modul incre_output_layer
Modul bias_adder_a3
Deskripsi: Menjumlahkan nilai z3 yang terjumlah dari modul sequence multiplier dengan nilai bias
3
Modul PIPO a3
Biasanya topik mengenai voice recognition menggunakan struktur RNN. Pada kali ini tim kami mencoba
membedakan gender suara manusia menggunakan ANN dengan struktur 3 buah layer dengan 1 hidden
layer. Pada perancangan ini tim kami mencoba sistem ANN untuk menyeleksi dataset voice yang sudah
digenerate dari Matlab dan TensorFlow untuk menentukan suara pria dan wanita. Pada dataset yang kami
dapatkan, terdapat 20 karakteristik pada setiap inputnya. Namun tim kami hanya menggunakan 17
karakteristik saja. Dalam perancangan weightnya, tim kami juga tidak membuatnya secara sembarang.
Perancangan weight yang kami rancang, memerhatikan cara menurunkan nilai cost function agar sekecil
mungkin. Teknik yang kami pilih adalah Gaussian Random Variable dengan memerhatikan standar deviasi
sesuai dengan jumlah input pada sistem. Pada perancangan ini juga tim kami mencoba mengabungkan
pre-processing melalui Matlab maupun Tensorflow dengan processing-nya dari Quartus untuk kembali
memutuskan apakah suara pria ataupun wanita yang terekam. Pada implementasi ini kami mencoba
memanfaatkan FPGA DE2-70 Cyclone II untuk implementasi processing sistem kami.
Pada bagian ini kami belum melihat TimeQuest Timing Analyzer pada Quartus 13.0 yang kami gunakan
karena kami tidak memiliki lisensi untuk menggunakan fitur tersebut. Kami sebenarnya bisa melihat
critical path pada Quartus 17.0 namun tidak ada device yang compatible dengan Quartus 17.0 yang kami
pakai yakni Cyclone II.
5. HDL Code
Kode Verilog yang kami rancang pada modul kami, kami letakkan pada Lampiran yang menyertai laporan
ini dalam folder.
6. The display of a simulation waveform which the design is operating
Gambar 8. Hasil Simulasi Modul Forward (terlihat pada output mengeluarkan nilai selebar 32 bit)
Gambar 9. Hasil Simulasi Modul Back Propagation ketika sistem sedang belajar dengan renewal 2500 kali
Gambar 10. Hasil Simulasi Modul Back Propagation dengan cos function = 0.013953
Gambar 10. Hasil Implementasi di FPGA DE2-70 Cyclone II dengan hasil sudah keluar namun belum
sesuai dengan harapan karena belum mengatur clock dengan benar
Gambar 11. Hasil Implementasi di FPGA DE2 berhasil
Gambar 12. Beberapa warning yang perlu diperhatikan saat implementasi yang menyebabkan hasil
belum sesuai dengan harapan
Gambar 15. Hasil Simulasi sesuai dengan Hasil Implementasi namun belum sesuai harapan, hasil pada
Quartus berbeda dengan hasil pada ModelSim
Gambar 16. Hasil Simulasi sesuai dengan Hasil Implementasi namun belum sesuai harapan, hasil pada
Quartus berbeda dengan hasil pada ModelSim (Diperbesar pada Hazard)
7. Others
Secara umum tim kami sudah berhasil mengimplementasikan desain pada FPGA namun bermasalah pada
clock yang digunakan dan pin I/O yang harus di netlist dengan baik dan tidak melebihi batas kemampuan
device. Tim kami sudah melakukan generate dataset menjadi biner dengan mudah melalui Matlab hingga
mudah disalin ke Verilog. Tim kami juga sudah berhasil mengimplementasikan penggunaan ROM 1 Port
namun tidak digunakan pada desain ini karena masih ingin menggunakan data yang sudah dibuat pada
testbench. Dalam hal pre-processing, tim kami belum memilih perangkat apa yang akan mengkonversi
WAV menjadi dataset yang kami gunakan pada processing kami. Pada tugas ini kami lampirkan modul
Matlab dan Verilog yang kami gunakan beserta datasetnya. Pada Implementasi FPGA, kami akan mencoba
menggunakan PLL untuk mengatur clock-nya dan melakukan debugging dari warning yang kami terima
melalui Quartus.