Để phát hiện lỗi trong dữ liệu kỹ thuật số, CRC được sử dụng, đây là một kỹ thuật tốt để phát hiện lỗi truyền. Trong kỹ thuật này, chủ yếu áp dụng phép chia nhị phân.
Trong kỹ thuật này, các bit kiểm tra dự phòng theo chu kỳ có mặt, là một chuỗi các 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ả trở nên chính xác chia hết cho một giây là số nhị phân xác định trước.
Ở phía đích, dữ liệu đến được chia cho cùng một số, nếu không có phần dư thì giả định rằng dữ liệu đó là chính xác và dữ liệu đó đã sẵn sàng để chấp nhận.
Phần còn lại chỉ ra rằng có điều gì đó xảy ra trong quá trình chuyển đổi, đơn vị dữ liệu đã bị hỏng. Vì vậy, đơn vị dữ liệu này không được chấp nhận.
Mã mẫu
frompycrc.crclib import * def main(): #----------------------------------------------------------------------------- #Sender Side div = str(input("Input divisor in binary type: ")) #user_dataword = str(raw_input("Input dataword 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()
Đầu ra
Sender Input dataword in binary type 1010000 arg_dataword:1010000000 remainder: 011 codeword:1010000011 Receiver syndrome:1010000011 Discard or not? N rx_dataword:1010000011