Skip to main content
. 2021 Dec 10;21(24):8271. doi: 10.3390/s21248271
Algorithm 3 Data/parity error correction
  •   1:

    procedureData_Err_Correction(addr,data)

  •   2:

        enable_error_flag()         ▹ Prevent Parity update

  •   3:

        WRITE(addr,data)      ▹ Corrected data from first READ

  •   4:

        disable_error_flag()         ▹ Allow Parity update

  •   5:

        diag_dataREAD(addr)

  •   6:

        type_flagread_error_flag()

  •   7:

        if diag_datadata then

  •   8:

            Alert_multiple_errors(addr)

  •   9:

        else

  • 10:

            switch type_flag do

  • 11:

               case 0×FFFF0×00FF      ▹ DUE ≥ 2 bit errors

  • 12:

                   Alert_2_errors(addr)

  • 13:

               case 0×0000

  • 14:

                   Send_faulty_pos(TRANSIENT,addr)

  • 15:

               case default

  • 16:

                   Send_faulty_pos(PERMANENT,addr)

  • 17:

    procedureParity_Err_Correction(addr,data)

  • 18:

        disable_error_flag()        ▹ Allow Parity update

  • 19:

        WRITE(addr,data)

  • 20:

        dataREAD(addr)

  • 21:

        type_flagread_error_flag()

  • 22:

        if type_flag=0×FFFF then     ▹ Permanent error

  • 23:

            Send_faulty_pos(PERMANENT,addr)

  • 24:

        else

  • 25:

            Send_faulty_pos(TRANSIENT,addr)