CRCλ?
CRCλ?
CRC(Cyclic Redundancy Checking) μν μ€λ³΅κ²μ¬λ μλ¬κ²μΆ λ₯λ ₯μ΄ μ°μν ‘μνλΆνΈ’μ μΌμ’ μ΄λ€. μνλΆνΈλ μ ν λΈλ‘ λΆνΈ(λΆνΈμ΄ μ§ν©μ΄ μ ν 벑ν°κ³΅κ°μ νμ±νλ λΆνΈ)μ μΌμ’ μΌλ‘μ μ£ΌμνΉμ§μΌλ‘ μ μ μλ μνμ ꡬ쑰λ₯Ό κ°μ§κ³ μκ³ λΆνΈνμ μ©μ΄νλ©° λ§€μ° ν¨μ¨μ μΈ λ³΅νΈν κΈ°λ₯μ κ°μ§κ³ μλ€.
CRCμ νΉμ§
1. μ°λ° μλ¬(Random Error) λΏλ§ μλλΌ, μ°μ§ μλ¬(Burst Error)μμλ κ²μΆ λ₯λ ₯μ΄ μ°μνλ€. μ°μ§μλ¬λ λ°μ΄ν° μ μ‘ μ ν 무리μ λ°μ΄ν°μ μ§λ¨μ μΌλ‘ μ€λ₯κ° λ°μνλ κ²μ΄κ³ , μ΄μ λ°λλ‘ μ¬κΈ°μ κΈ° μ°λ°μ μΌλ‘ λλ€νκ² λνλλ μ€λ₯λ₯Ό μ°λ° μλ¬ λΌκ³ λΆλ₯Έλ€.
2. μνλΆνΈμ κΈ°λ°ν μ€λ₯κ²μΆλΆνΈμ΄λ€. μ‘μ μΈ‘μμ λ°μ΄ν°μ λν΄ νΉμ λ€νμμΌλ‘ λλ κ²°κ³Όλ₯Ό μ¬λΆμ FCSμ λ§λΆμ¬ 보λ΄λ©΄, μμ μΈ‘μμ λμΌν λ°©λ²μΌλ‘ κ³μ°ν κ²°κ³Όμμ μΌμΉμ±μΌλ‘ μ€λ₯κ²μ¬λ₯Ό νλ κΈ°μ μ΄λ€.
μ¬κΈ°μ FCSλ(Frame Check Sequence) νλ μ λ λΆλΆμ μμ μΈ‘μ μλ¬κ²μΆμ λκΈ°μν΄ μ½μ νλ νλμ΄λ€. μμμΈ‘μ μμ μ΄ κ°κ³ μλ FCSμ μ μ‘λμ΄μ¨ νλ μμ FCSμ λΉκ΅νμ¬ μλ¬ μ¬λΆλ₯Ό νμΈ κ°λ₯νκ³ μλ¬ νμΈμμλ ν΄λΉ νλ μμ νκΈ°νκ³ μ‘μ μΈ‘μ μ¬μ μ‘μ μꡬνλ€.
CRC μμ± λ° κ²μ¬ λ°©λ²
1. μ‘μ λ¨
μ μ‘ν μλ λ°μ΄ν° νλ μ(k bit)μ λν΄ λ―Έλ¦¬ μ μλ CRCλ€νμμΌλ‘ λλκ³ κ·Έ λλ¨Έμ§ κ°μ μλμ λ°μ΄ν° νλ μ λ€μ FCS(n-k bits)λ‘ λΆμΈλ€. μ΄λ, κ·Έ κ²°κ³Ό νλ μ(μλμ λ°μ΄ν° + FCS)μ΄ λ―Έλ¦¬ μ μλ CRC λ€νμμ μνμ¬ μ νν λλμ΄ λ¨μ΄μ§ μ μκ² λλ€.
κ·Έ κ²°κ³Ό νλ μ(μλμ λ°μ΄ν° + FCS)(n bits)μ μ‘μ νλ€.
2. μμ λ¨
μμ λ νλ μ (n bits)μ λ°μ νμ CRC κ²μ¬λ₯Ό νκ² λλλ°, μμ λ μ 체 λ°μ΄ν°λ₯Ό μ‘μ μμ κ°μ 미리 μ μλ CRC λ€νμμΌλ‘ λλμ΄μ λλ¨Έμ§λ₯Ό κ²μ¬νλ€.
μ€λ₯ κ²μΆ λ°©λ²μ μμ λ¨μμ μμ¬λΆ(FCS)μ ν¬ν¨ν μ 체 λ°μ΄ν°λ₯Ό 미리 μ μλ CRC λ€νμμΌλ‘ λλ λ λλ¨Έμ§κ° 0μ΄λ©΄ μ€λ₯κ° μλ κ²μ΄κ³ λλ¨Έμ§κ° 0μ΄ μλ μκ° λλ©΄, μ μ‘ μ μ€λ₯κ° λ°μν κ²μ΄λ€.
λ€νμμ νν
μλ‘ x4+x+1 μ΄λ λ€νμμ λ€μκ³Ό κ°μ΄ μΈκ°μ§ λ°©λ²μ μ«μλ‘ ννν μ μλ€.
- 0x3 = 0b0011 : x4+ 0x3+0x2+1x1+1x0 (MSB – μ°μ μ½λ)
- 0xC = 0b1100 : 1x0+1x1+0x2+0x3+x4 (LSB – μ°μ μ½λ)
- 0x9 = 0b1001 : 1x4+0x3+0x2+1x1+x0 (Koopman νμ)
-
λ€νμ(representations) |
||
μ μ (normal) |
μλ°©ν₯ (reversed) |
μλ°©ν₯μ μμ (reversed reciprocla) |
0x3 |
0xC |
0x9 |
CRC κ³μ° λ°©λ²
- λμ νλͺ©λ€
μλ λ°μ΄ν° : D(x) (k bits)
μμ¬ λ°μ΄ν° : F(x) (n-k bits)
μ μ‘ λ°μ΄ν° : T(x) (n bits)
미리 μ μλ CRC λ€νμ (Divisor) : P(x) (n-k+1 bits)
(n–k+1 bits)μ λΉνΈ ν¨ν΄ (μμ± λ€νμ)
λλμ λͺ« (Quotient) : Q(x) (k bits) (λ²λ €μ§)
λλ¨Έμ§ (Reminder) : R(x) (n-k bits) (λ§λΆμ¬μ§)
- λ€νμ νν
(μ λ°μ΄ν°μ prescale) D'(x) = xn-kD(x)
μλ λ°μ΄ν°μ μμ± λ€νμμ κ°μ₯ ν° μ°¨μλ₯Ό κ³±νλ€.
(μ¦, κ·Έλ§νΌ 0 κ°μ λ§λΆμ΄λ κ²)
(μ΄κ²μ μμ±λ€νμμΌλ‘ λλ) D'(x)/P(x) = xn-kD(x)/P(x)
xn-kD(x)/P(x) = Q(x) + R(x)/P(x)
xn-kD(x) = Q(x)P(x) + R(x)
(μμμ xn-kD(x)μ μ μ‘) T(x) = xn-kD(x) + R(x)
T(x) = xn-kD(x) + R(x) = Q(x)P(x)
μ¦, μ μ‘ λΉνΈ ν¨ν΄ T(x)κ° μμ±λ€νμ P(x)μ μν΄ μ νν λλμ΄ λ¨μ΄μ§λ€.
-CRC κ³μ° λ° λΉνΈ μ²λ¦¬ λ°©λ²
λλμ μ°μ°μ, μΊλ¦¬(overflow λ° borrow)λ₯Ό 무μνκ³ , XOR (mod-2) μννλ€.
λλλ μμΈ μ μ(Divisor)λ 미리 μ μλ μ΄μ§ μμ(Divisor)μ μν΄ λλλ€.
μ΄λμ μ μμ κΈΈμ΄λ `(λ§λΆμ΄λ λΉνΈμ n-k) + 1
λλ¨Έμ§(Reminder)λ λλμ μ λλ¨Έμ§(Reminder)λ₯Ό νλ μμ λ§λΆμ¬ μ‘μ νλ€.
μ΄λμ λλ¨Έμ§ κΈΈμ΄λ `n-k`μ΄λ€.
κ³μ°μμ