1. Trang chủ
  2. » Luận Văn - Báo Cáo

Mã kiểm tra lỗi CRC

21 2,9K 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 21
Dung lượng 145,38 KB

Nội dung

Mã kiểm tra lỗi CRC

Trang 1

LỜI MỞ ĐẦU

Trong thời đại hiện nay thông tin liên lạc đóng vai trò hết sức quan trọng trong cuộc sống, hầu hết chúng ta luôn gắn liền với một vài ứng dụng trao đổi thông tin nào đó Thông tin trao đổi bao gồm việc trao đổi tin tức, các tài nguyên học tập nghiên cứu như các phần mềm (dữ liệu, chương trình ứng dụng, )…Trong môn học truyền dữ liệu chúng ta đã được nghiên cứu rất nhiều cách truyền tin và các vấn đề liên quan đến nó Và đề tài mà chúng em tìm hiểu

đó là : " Mã kiểm tra lỗi CRC " CRC chính là một phương pháp nhằm kiểm tra xem nội dung một tập tin có bị thay đổi trong quá trình truyền tin hay không Ý tưởng về CRC cũng không quá phức tạp

Trong bài viết này, chúng ta sẽ tìm hiểu kĩ mã CRC qua các phần sau:

Phần 1: Giới thiệu mã CRC

Phần 2: Nội dung

Phần 3: Chương trình mô phỏng

Dù đã tìm hiểu rất kỹ nhưng trong bài báo cáo không tránh khỏi thiếu sót

Chúng em xin trân trọng tiếp thu tất cả những ý kiến đóng góp của cô và các bạn để hoàn thiện bản báo cáo này hơn nữa

Xin trân thành cảm ơn!

Trang 2

MỤC LỤC

Trang 3

PHẦN I: GIỚI THIỆU

Có nhiều cách để kiểm tra các bit kiểm tra lỗi khi truyền dữ liệu Kĩ thuật phổ biến và chi phí ít nhất cho dò tìm lỗi là kỹ thuật VRC, thường được gọi là kiểm tra chẵn lẻ VRC có thể dò tìm tất cả các lỗi bit đơn Nó cũng có thể do tìm các lỗi bit chùm bit miễn là tổng số các bit thay đổi luôn là số lẻ (1, 3, 5…).Tuy nhiên, bộ kiểm tra VRC không thể dò tìm khi tổng số các bit 1 của đơn vị dữ liệu bị thay đổi là chẵn Hoặc kiểm tra lỗi bằng phương pháp LRC, nó là

kỹ thuật tăng cường khả năng dò tìm các lỗi bit hàng loạt Tuy nhiên, khi ở đó có một mẫu các bit vẫn chưa khắc phục được Nếu 2 bit trong một đơn vị dữ liệu bị thay đổi và hai bit ở cùng đúng vị trí trong đơn vị dữ liệu khác cũng bị hư hại, Bộ kiểm tra LRC sẽ không dò tìm thấy lỗi Kỹ thuật thứ 3 và là kỹ thuật mạnh nhất trong các kỹ thuật kiểm tra dư thừa đó là kỹ thuật kiểm tra vòng – CRC

CRC (Cyclic Redundancy Check)

Là việc kiểm tra dư thừa theo chu kỳ viết tắt là CRC, là một kỹ thuật để phát hiện lỗi trong kỹ thuật truyền dữ liệu, nhưng không có khả năng sửa lỗi Nó được sử dụng chủ yếu để truyền dữ liệu Trong phương pháp CRC, một tập tin bit kiểm tra được tính toán cho mỗi khung tin dựa vào nội dung khung, sau đó được gắn vào đuôi khung các bít truyền đi Bên thu thực hiện tính toán tương tự như bên phát Nếu một lỗi xảy

ra, người nhận sẽ gửi một thông báo”NAK” cho bên phát yêu cầu được truyền lại

Kỹ thuật này cũng đôi khi được áp dụng cho các thiết bị lưu trữ dữ liệu chẳng hạn như một ổ đĩa Tại đó, mỗi khối trên đĩa sẽ có bit kiểm tra, và nó có thể tự động bắt đầu đọc lại khi lỗi phát hiện, hoặc nó có thể báo cáo lỗi cho phần mềm

Trang 4

PHẦN II: NỘI DUNG

- Bước 3: CRC của n bit dẫn ra từ bước 2 thay thế các bit 0 được ghép vào cuối đơn vị

dữ liệu Chú ý là CRC có thể bao gồm tất cả các bit 0

Đầu tiên, dữ liệu được nhận, theo đó là CRC Bên nhận coi toàn bộ chuỗi dữ liệu đó là một đơn vị và chia nó cho cùng số chia mà đã được sử dụng trước đó để tìm ra số dư CRC

Nếu chuỗi đến mà không có lỗi, bộ kiểm tra CRC sẽ cho kết quả đầu ra là số dư bằng 0 và đơn vị dữ liệu được qua Nếu chuỗi đó bị thay đổi trong quá trình truyền, kết quả phép chia là một số khác 0, do đó đơn vị dữ liệu không được qua

Trang 5

1010+ 1101

0111

1011 × 11 1011101111101

- Phép cộng Mod-2 được thực hiện bởi cổng EX-OR

- Phép trừ Mod-2 giống như phép cộng

- Nhân Mod-2 một số với 2n tương ứng với dời số đó n bit về bên trái và thêm n bit 0 vào bên phải số đó, thí dụ 11001* 23 = 11001000

- Phép chia Mod-2 được thực hiện giống như phép chia thường nhưng nhớ là phép trừ trong khi chia được thực hiện như phép cộng

* Thuật toán

Gọi T = (k+n) bit là khung thông tin được phát, với n < k, M = k bit dữ liệu, k bit đầu tiên của T

F = n bit của khung FCS, n bit cuối của T

P = (n+1) bit, số chia trong phép toán

Số T được tạo ra bằng cách dời số M sang trái n bit rồi cộng với số F:

T = 2nM + F

Chia số

n

2 M cho P ta được:

Q là số thương bà R là số dư

Vì phép chia thực hiện với số nhị phân nên số dư luôn luôn ít hơn số chia 1 bit Ta dùng số

dư này làm số F, nghĩa là:

T = 2nM + R

Ở máy thu khi nhận được khối dữ liệu, mang chia cho P, kết quả số dư sẽ = 0:

Trang 6

Số phải tìm R (3 bít) cho khung FSC được xác định như sau:

- Nhân M với 23 cho kết quả: 101101000

- Thực hiện phép chia cho P:

Trang 7

Ta có R=010, cộng R với 23M sẽ cho số T phát đi là:

T= 101101000 + 010 =101101010

Nếu bản tin không có lỗi T phải chia đúng cho P

Thực hiện phép chia T/P ta thấy số dư =0

Tóm lại, để có một khung FCS n bit, người ta phải dùng một số P có n+1 bit để tạo số R có

n bit dùng cho khung FCS P được gọi là đa thức sinh (generator polynomial), dạng của nó do các giao thức qui định, tổng quát P phải có bit đầu và bit cuối là bit 1

2. Dùng phép biểu diễn đa thức

Để thấy quá trình hình thành mã CRC, ta có thể dùng phép biểu diễn một số nhị phân dưới dạng một đa thức của biến x với hệ số là các số nhị phân và bậc của x là giá trị chỉ vị trí của số nhị phân đó

Ví dụ số nhị phân 110110 có thể biểu diển bởi:

1.x5 + 1.x4 + 0.x3 + 1 x2 + 1.x1 + 0.x0 = x5 + x4 + x2 + x

Quá trình hình thành mã CRC được thực hiện như sau:

- Gọi M là đa thức biểu diễn thông tin cần truyền

- P là đa thức sinh, bậc n (chứa n+1 bit)

Trang 9

R(x) =x+1 tương ứng với giá trị 011

=> T = 111101011 là khung tin mà ta cần truyền đi

TxD Tín hiệu điều khiển phản hồi (từ 1 thành 0 sau 8 N TxC

Trang 10

TxC Thanh ghi PISO Thanh ghi FSC

Trang 11

Số bít trong FSC là 4 bít nên cần 1 thanh ghi dịch 4 bít gọi là thanh ghi dịch FSC để biểu diễn x3, x2, x1, x0 trong đa thức sinh Với đa thức sinh này thì các số x3, x0 là 1, còn x2, x1 là 0 Trạng thái mới của x2, x1 được thay bằng trạng thái trước đó của x0, x1 Trạng thái mới của x0,

x3 được thay bằng trạng thái của đường phản hồi đã XOR với số trước đó

Mạch hoạt động như sau: Trước tiên xóa thanh ghi dịch FSC và nạp song song 8 bít đầu tiên trong khung tin vào thanh ghi vào song song, ra nối tiếp – PISO Tín hiệu phản hồi là 1 Theo tốc độ của đồng hồ phát TxC, các bít này được dịch ra đường truyền lần lượt từ MSB đến LSB Cùng lúc này dòng bít này được XOR với x3 qua đầu phản hồi trở lại các đầu vào chọn lọc của FCS Sau khi 8 bit đầu đi qua hết thanh ghi PISO, thủ tục này lặp lại Sau khi xuất ra byte cuối cùng trong khung tin thanh ghi PISO được nạp toàn là số 0, tín hiệu phản hồi

từ 1 trở thành 0, do đó nội dung của thanh ghi FSC là các bit kiểm tra đi theo sau khung tin phát ra đường truyền

2. Mạch tạo mã CRC bên thu

SIPO FCS

Trang 12

x 0 x 1 x 2

Đọc song song byte (xN)

x 3

RxC lsb msb

RxD

Trang 13

IV Khả năng dò sai của mã CRC

Một lỗi xảy ra ở một vị trí nào đó trong khung dữ liệu làm đảo bit ở vị trí đó của

Trang 14

khung, điều này tương đương với phép tính EX-OR bit đó và bit 1 (vì 0+1=1 và 1+1=0)

Nếu gọi E là một khung có số lượng bit bằng với khung dữ liệu, trong đó chỉ các vị trí của bit lỗi = 1 và các bit khác = 0 thì khung thông tin Tr nhận được có thể viết:

1. Mã CRC luôn luôn cho phép máy thu dò ra một bit sai.

Giả sử bản tin chỉ sai một bit khi đó đa thức E(x) có dạng xi, i là một số nguyên, E(x) chia

Trang 15

Giả sử bản tin sai một chuỗi, nhưng có tổng số bit sai là số lẻ: đa thức E(x) chứa số lẻ bit 1 nên E(1) =1 Mặt khác, giả sử (x+1) là thừa số của P(x), ta có thể viết P(x) = (x+1)*H(x),với H(x) là một đa thức Ta cũng giả sử lỗi này không được dò ra, nghĩa là E(x) chia đúng cho P(x), hay E(x) = P(x)*K(x) Thay P(x) = (x+1)*H(x) vào E(x) được E(x) = (x+1)*H(x)*K(x), biểu thức này cho E(1) = 0 Điều này trái với giả thiết ở trên, hay nói cách khác, máy thu sẽ dò ra lỗi nếu ta chọn P(x) sao cho chia đúng cho (x+1) Vậy máy thu luôn dò ra lỗi gồm nhiều bit và có tổng số bit lỗi là số lẻ nếu P(x) chia hết cho (x+1).

3. Máy thu luôn luôn dò ra lỗi nếu chuỗi dữ liệu sai có chiều dài ≤ bậc của P(x).

Giả sử nhiễu làm sai một đoạn dữ liệu có chiều dài m ≤ bậc n của P(x)

Giả sử chuỗi bit sai có vị trí từ thứ i đến thứ i+m-1, E(x) có dạng:

do vậy máy thu luôn dò ra lôi nếu chuỗi dữ liệu sai có chiều dài nhỏ hơn bậc của P(x)

4. Với đoạn dữ liệu sai có chiều dài > bậc của P(x)

- Trường hợp m-1 = n hay (m=n+1) Vì bậc của P(x) là n nên để có phép chia đúng P(x) phải có dạng xn+ +1 với các số hạng giữa xn và 1 phải hoàn toàn giống với các số hạng của

xm-1+ +1 thì máy thu không dò được lỗi Có n-1 số hạng giữa xn và 1 nên có 2n-1 tổ hợp và nếu các tổ hợp này có xác suất xảy ra như nhau thì xác suất máy thu không nhận được lỗi sẽ là 1/2n-1

- Trường hợp m>n+1, ta chấp nhận kết quả xác suất này là 1/2n

Lấy thí dụ mã CRC-32 (n=32), xác suất không dò ra một lỗi có chiều dài >33 bit là 1/2.1032 (tương đương với khả năng dò ra lỗi là 99,99999998%)

Tóm lại với n càng lớn việc máy thu không dò ra lỗi càng rất khó xảy ra

Trang 16

V Các đa thức sinh thường dùng

Một đa thức sẽ được lựa chọn sao cho thỏa mãn:

- Nó sẽ không được chia hết bởi x

- Nó có thể được chia hết bởi (x+1)

Có 4 đa thức P(x) được dùng để tạo mã CRC thông dụng:

CRC_12 = x12 +x11 + x3 + x2 + x + 1

CRC_16 = x16+x15 + x2 + 1

CRC_CCITT = x16+x12 + x5 + 1

CRC_32 = x32+ x26+ x23+ x22 + x16+ x12 + x11+ x10+ x8+ x7 + x5 + x4 + x2+x+1 CRC_12 dùng truyền với ký tự 6 bit và khung FCS dài 12 bit

CRC_16 & CRC_CCITT dùng truyền ký tự 8 bit và khung FCS dài 16 bit (ở Mỹ và Âu châu)

CRC_32 Dùng trong mạng cục bộ (LAN) và một số ứng dụng của DOD (Department Of Defense)

Trang 17

PHẦN III: CHƯƠNG TRÌNH MÔ PHỎNG

1. Giao diện chương trình

Private Sub Command1_Click()

Dim tem3 As String, tem4 As String

Dim y, x, z, tem1 As Long

Dim tem2, i As Integer

Trang 18

If i = 0 Then

tem3 = Left(tem4, tem2)

Else tem3 = tem3 + Mid(tem4, tem2 + i, 1)

Do While (Len(tem3) < (tem2 - 1))

tem3 = 0 & tem3

LoopText2.Text = Text1.Text & tem3End Sub

Function Bin2Dec(Num As String) As Long Dim n As Integer

n = Len(Num) - 1

a = n

Trang 19

LoopEnd Function

Function Dec2Bin(ByVal n As Long) As String

Do Until n = 0

If (n Mod 2) Then Dec2Bin = "1" & Dec2Bin Else Dec2Bin = "0" & Dec2Bin

n = n \ 2LoopEnd Function

Private Sub Command2_Click()End

Trang 20

Combo1.AddItem "11000110011"

Combo1.AddItem "11000000000000101"

End SubPrivate Sub Timer1_Timer()Dim a As String

Dim b As String

a = Left(Label2.Caption, 1)

b = Right(Label2.Caption, Len(Label2.Caption) - 1)Label2.Caption = b + a

End Sub

Trang 21

TỔNG KẾT

1. Tự đánh giá kết quả báo cáo đề tài.

Đề tài của nhóm em được hoàn thành ở mức cơ bản và cũng phát triển rộng thêm ở một

số chi tiết trong bài Các định nghĩa cũng như những nội dung trong bài, chúng e đã cố gắng làm ngắn gọn xúc tích và dễ hiểu nhất có thể

Còn một số ít các chi tiết chưa kịp hoàn thành xong như dự tính ban đầu Có thể còn một

số mặt hạn chế chưa được bổ sung Mong thấy khi đọc xong đề tài báo cáo của chúng em thì góp ý kiến cho nhóm em để lần sau nhóm em làm đề tài báo cáo được tốt hơn nữa

Ngày đăng: 25/03/2016, 17:03

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w