PERANCANGAN DAN IMPLEMENTASI ENCODER DAN DECODER CRC-16 BERBASIS TABEL LOOKUP PADA ARDUINO
DOI:
https://doi.org/10.24246/itexplore.v3i1.2024.pp49-62Keywords:
CRC-16, Error Detection Code, Error Detection System, Lookup Table, ArduinoAbstract
Deteksi kesalahan pada data yang dikirimkan melalui saluran komunikasi sangat penting untuk mendapatkan data yang akurat dan sistem komunikasi yang handal. Salah satu kode yang populer dan banyak digunakan sebagai kode pendeteksi kesalahan adalah Cyclic Redundancy Check (CRC). Penelitian ini bertujuan untuk merancang dan mengimplementasikan encoder dan decoder CRC-16 dengan polinomial 0x8005 pada platform Arduino IoT. Penghitungan nilai CRC-16 dilakukan menggunakan algoritma yang memanfaatkan tabel pencarian. Algoritma berbasis tabel pencarian dipilih karena kecepatannya dalam menghitung nilai CRC dari data masukan. Hasil implementasi encoder dan decoder kemudian diuji menggunakan dua board Arduino yang mengirimkan data secara serial. Hasil penelitian menunjukkan bahwa decoder pada sisi penerima dapat mendeteksi kesalahan pada data yang dikirimkan, dan encoder pada sisi pengirim dapat menghitung nilai CRC dari data masukan dengan benar sesuai spesifikasi kode CRC-16. Waktu yang dibutuhkan encoder untuk menghitung nilai CRC-16 dari data input dengan panjang yang bervariasi menunjukkan bahwa data input dengan panjang 2 karakter (16 bit) dan 128 karakter (1024 bit) masing-masing membutuhkan waktu 0,016 milidetik dan 0,72 milidetik.
Downloads
References
W. Stallings, Data and Computer Communications, 10th ed. Pearson, 2014.
S. Lin and J. Li, Fundamentals of Classical and Modern Error-Correcting Codes, 1st ed. Cambridge University Press, 2021.
B. Forouzan, Data Communications and Networking, 5th ed. McGraw-Hill, 2013.
Z. Chen, D. Luo, Y. Luo, and J. Wu, “A Research on Internet of Things with CRC Method,” Proc. - 2021 Int. Conf. Wirel. Commun. Smart Grid, ICWCSG 2021, pp. 138–142, 2021, doi: 10.1109/ICWCSG53609.2021.00035.
R. Novaldi, S. Akbar, and P. Rakhmadhany, “Implementasi Error Detection System Pada Komunikasi Serial Arduino Menggunakan Metode Cyclic Redundancy Check (CRC),” J. Pengemb. Teknol. Inf. dan Ilmu Komput., vol. 3, no. 2, pp. 1480–1485, 2018, [Online]. Available: https://j-ptiik.ub.ac.id/index.php/j-ptiik/article/view/4412
A. R. Saleh and S. A. Sudiro, “CRC 8-bit Encoder-Decoder Component in FPGA using VHDL,” ELKOMIKA J. Tek. Energi Elektr. Tek. Telekomun. Tek. Elektron., vol. 8, no. 1, p. 58, Jan. 2020, doi: 10.26760/elkomika.v8i1.58.
N. Sridevi, K. Jamal, and K. Mannem, “Implementation of Cyclic Redundancy Check in Data Recovery,” Proc. 2nd Int. Conf. Electron. Sustain. Commun. Syst. ICESC 2021, pp. 17–24, Aug. 2021, doi: 10.1109/ICESC51422.2021.9532802.
N. G. Augoestien and R. Aditya, “Implementasi Rangkaian CRC (Cyclic Redundancy Check) Generator pada FPGA (Field Programmable Gate Array),” IJEIS (Indonesian J. Electron. Instrum. Syst., vol. 9, no. 1, pp. 65–74, Apr. 2019, doi: 10.22146/IJEIS.43906.
D. Priyadi and T. Wellem, “Perancangan dan Implementasi Encoder dan Decoder CRC-8 untuk Pendeteksian Error pada Transmisi Data antar Perangkat IoT,” J. MEDIA Inform. BUDIDARMA, vol. 6, no. 3, pp. 1677–1685, Jul. 2022, doi: 10.30865/MIB.V6I3.4366.
J. Cabal, L. Kekely, and J. Korenek, “High-Speed Computation of CRC Codes for FPGAs,” Proc. - 2018 Int. Conf. Field-Programmable Technol. FPT 2018, pp. 237–240, Dec. 2018, doi: 10.1109/FPT.2018.00042.
N. N. Qaqos, “Optimized FPGA Implementation of the CRC Using Parallel Pipelining Architecture,” 2019 Int. Conf. Adv. Sci. Eng. ICOASE 2019, pp. 46–51, Apr. 2019, doi: 10.1109/ICOASE.2019.8723800.
A. Bruen, M. Forcinito, and J. McQuillan, “Cyclic Linear Codes, Shift Registers, and CRC,” Cryptogr. Inf. Theory, Error‐Correction, pp. 453–472, Jul. 2021, doi: 10.1002/9781119582397.CH21.
I. Sommerville, Software Engineering, 10th ed. Pearson, 2016.
“Arduino UNO R3.” https://docs.arduino.cc/hardware/uno-rev3 (accessed Aug. 25, 2022).
“Online CRC-8 CRC-16 CRC-32 Calculator.” https://crccalc.com/ (accessed Aug. 30, 2022).