Để phát hiện lỗi dữ liệu số, CRC được dùng, đây là kỹ thuật tốt phát hiện lỗi truyền. Kỹ thuật này chủ yếu áp dụng phép chia nhị phân.
Trong kỹ thuật này, bit kiểm tra CRC là dãy bit dư thừa, các bit này được nối vào cuối đơn vị dữ liệu để đơn vị dữ liệu kết quả chia hết cho một số nhị phân thứ hai xác định trước.
Ở phía đích, dữ liệu đến được chia cho cùng số đó, nếu không có dư thì coi dữ liệu đúng và chấp nhận.
Dư khác 0 cho thấy có sự cố trong truyền, đơn vị dữ liệu bị hỏng. Do đó đơn vị dữ liệu không được chấp nhận.
Ví dụ mã
from pycrc.crclib import *
def main():
# Sender Side
div = str(input("Input divisor in binary type: "))
userdataword = '1001'
print("\nSender:")
sen = Sender(bin2dec(userdataword), div)
sen.send()
print("arg_dataword:", sen.arg_dataword2)
print("remainder:", sen.remainder2)
print("codeword:", sen.codeword2)
# Channel
print("\nChannel:")
ch = Channel(sen.codeword)
print("Through to the channel get channel codeword:", dec2bin(ch.ch_codeword))
# Receiver Side
print("\nReceiver:")
rcv = Receiver(ch.ch_codeword, div)
rcv.receive()
print("syndrome:", rcv.syndrome2)
print("Discard or not?", rcv.discard)
print("rx_dataword:", rcv.rx_dataword2)
if __name__ == '__main__':
main()
Kết quả
Sender Input dataword in binary type 1010000 arg_dataword:1010000000 remainder: 011 codeword:1010000011 Receiver syndrome:1010000011 Discard or not? N rx_dataword:1010000011