Perancangan dan Implementasi Encoder dan Decoder CRC-8 untuk Pendeteksian Error pada Transmisi Data antar Perangkat IoT

Authors

  • Donny Priyadi Universitas Kristen Satya Wacana, Salatiga
  • Theophilus Wellem Universitas Kristen Satya Wacana, Salatiga

DOI:

https://doi.org/10.30865/mib.v6i3.4366

Keywords:

Cyclic Redundancy Check, Error Detection, Error Detection Code, Internet-Of-Things, Arduino

Abstract

Cyclic Redundancy Check (CRC) is a widely used error detection code in digital communication systems to detect errors in data transmitted between transmitter and receiver. With the development of Internet-of-Things (IoT) technology, where many devices communicate wirelessly, the application of error detection codes such as CRC is essential to obtain reliable communication. The computation of CRC can be implemented in hardware using a linear feedback shift register (LFSR) or in software with shift and bitwise exclusive OR (XOR) operations for polynomial division. Due to the frequent use of CRC in wireless communication for IoT, research for the design and implementation of CRC continues to this day. This study aims to design and implement the encoder and decoder of CRC-8 with generator polynomial 0x07 on IoT devices. Two algorithms for computing the CRC, namely bitwise computation using LFSR and another one using lookup tables, are implemented on the Arduino Uno R3 board. Two Arduino boards connected in serial were used to verify the encoder and decoder implementation in the data transmission and error detection process. The experiment results showed that the encoder could correctly calculate the CRC value from the input data. Furthermore, the computation using lookup tables takes about four times faster than the bitwise method but requires more memory. In contrast, the bitwise computation method requires less memory but slower computation time. When testing using input data of 128 characters, the bitwise-based encoder requires a computation time of 2.37 milliseconds, while the lookup table-based encoder utilizing a lookup table requires a computation time of 0.5 milliseconds. In the error detection test, the results demonstrated that the receiver could detect errors in the transmitted data with a percentage of 100%.

References

W. Stallings, Data and Computer Communications, 10th ed. Pearson, 2014.

T. Moon, Error Correction Coding: Mathematical Methods and Algorithms, 2nd ed. Wiley, 2020.

Y. Cai, S. Ghose, E. F. Haratsch, Y. Luo, and O. Mutlu, “Error Characterization, Mitigation, and Recovery in Flash-Memory-Based Solid-State Drives,†Proc. IEEE, vol. 105, no. 9, pp. 1666–1704, Sep. 2017, doi: 10.1109/JPROC.2017.2713127.

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.

W. W. Peterson and D. T. Brown, “Cyclic Codes for Error Detection,†Proc. IRE, vol. 49, no. 1, pp. 228–235, 1961, doi: 10.1109/JRPROC.1961.287814.

B. Forouzan, Data Communications and Networking, 5th ed. McGraw-Hill, 2013.

L. A. Zhou and Z. L. Nie, “An Enhanced Decision-Making Fault Detection Model in Medical IoT Embedded Systems,†Wirel. Pers. Commun., 2021, doi: 10.1007/S11277-021-08759-8.

H. Liu, Z. Qiu, W. Pan, J. Li, L. Zheng, and Y. Gao, “Low-Cost and Programmable CRC Implementation Based on FPGA,†IEEE Trans. Circuits Syst. II Express Briefs, vol. 68, no. 1, pp. 211–215, Jan. 2021, doi: 10.1109/TCSII.2020.3008932.

M. M. Arifin, M. T. Hasan, M. T. Islam, M. A. Hasan, and H. S. Mondal, “Design and Implementation of High Performance Parallel CRC Architecture for Advanced Data Communication,†2019 4th Int. Conf. Electr. Inf. Commun. Technol. EICT 2019, Dec. 2019, doi: 10.1109/EICT48899.2019.9068750.

X. Zhang and Y. J. Tang, “Low-complexity parallel cyclic redundancy check,†Proc. - IEEE Int. Symp. Circuits Syst., vol. 2021-May, 2021, doi: 10.1109/ISCAS51556.2021.9401679.

“Arduino.†https://www.arduino.cc/ (accessed Jun. 17, 2022).

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.

G. Natalia, S. Suwadi, and T. Suryani, “Implementasi Encoder dan Decoder Cyclic Redundancy Check Pada TMS320C6416T,†J. Tek. ITS, vol. 3, no. 1, pp. A92–A97, Mar. 2014, doi: 10.12962/j23373539.v3i1.5504.

“Simulink - Simulation and Model-Based Design - MATLAB & Simulink.†https://www.mathworks.com/products/simulink.html (accessed Jun. 05, 2022).

A. S. Panda and G. L. Kumar, “Comparison of serial data-input CRC and parallel data-input CRC design for CRC-8 ATM HEC employing MLFSR,†2014 Int. Conf. Electron. Commun. Syst. ICECS 2014, 2014, doi: 10.1109/ECS.2014.6892739.

A. H. Saleh, K. M. Saleh, and S. Al-Azawi, “Design and simulation of CRC encoder and decoder using VHDL,†1st Int. Sci. Conf. Eng. Sci. - 3rd Sci. Conf. Eng. Sci. ISCES 2018 - Proc., vol. 2018-January, pp. 221–225, Apr. 2018, doi: 10.1109/ISCES.2018.8340557.

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.

J. Kurose and K. Ross, Computer Networking A Top-Down Approach, 8th ed. Pearson, 2020.

“Arduino UNO R3.†https://docs.arduino.cc/hardware/uno-rev3 (accessed Jun. 11, 2022).

“Online CRC-8 CRC-16 CRC-32 Calculator.†https://crccalc.com/ (accessed Jun. 22, 2022).

Downloads

Published

2022-07-25

Issue

Section

Articles