Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 15 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
15
Dung lượng
398,66 KB
Nội dung
Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC Phần I : Lý thuyết 1. Định nghĩa. CRC ( Cyclic Redundancy Check ) còn gọi là phương pháp mã đa thức hoặc mã vòng. Phương pháp này được sử dụng trong hầu hết các hệ thống truyền thông. Tuy cái tên của nó không biểu hiện nhiều, nhưng ý tưởng ở đây là thông tin kiểm lỗi ( ở đây được gọi là checksum ) phải được tính bằng một thuật toán thích hợp, trong đó giá trị mỗi bit của thông tin nguồn đều được tham ra nhiều lần vào quá trình tính toán. Để tính toán thông tin kiểm lỗi đó, người ta dùng một “ đa thức sinh ” G ( generator polynomial ) có một dạng đặc biệt. Chính vì thế phương pháp này còn được gọi là phương pháp dùng đa thức. G được quy ước dưới dạng nhị phân, tức các hệ số của nó chỉ có giá trị 1 hoặc 0 tương ứng với các chữ số trong một dãy bit. Ví dụ : Dạng đa thức : G = x 7 + x 6 + x 5 + x 2 + 1 Dạng nhị phân : G = 11100101 2. Phương pháp - Coi bản tin phát đi như một đa thức - Máy phát chia đa thức bản tin cho một đa thức sinh cho trước - Phần dư được gắn vào cuối bản tin - Dữ liệu(bản tin với phần dư) được phát đến máy thu - Máy thu chia dữ liệu đã nhận được cho cùng một đa thức sinh - Nếu số dư bằng 0 thì không có lỗi xảy ra trong đường truyền - Nếu số dư khác 0 thì đã có lỗi xảy ra trong đường truyền 3. Cách tạo phần dư CRC - Giả sử G là đa thức sinh có bậc n;I là dãy thong tin nguồn - Thêm n bit 0 vào cuối chuỗi bit I được đa thức nhị phân P - Chia đa thức P cho đa thức G theo quy tắc của phép trừ không nhớ Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 1 Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC - - Phần dư R của phép chia được thay thế cho n bit 0 bổ sung trong P để được đa thức D là dãy bit được gửi đi thay cho I (D=P+R) - Theo quy tắc của phép chia đa thức nhị phân nếu P-R chia hết cho G thì P+R cũng chia hết cho G - Dãy bit nhận được (D’) sẽ được đem chia cho G. Nếu phép chia không có dư máy thu sẽ xóa phần CRC đi và dữ liệu được chấp nhận. Nếu phép chia có dư dữ liệu bị từ chối và yêu cầu truyền lại Ví dụ : - Dãy bit truyền đi là: I=100100 - Đa thức sinh: G=x 3 +x 2 +1 (tương ứng với chuỗi 1101) - Đa thức nhị phân: P=100100000 - Phần dư CRC: Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 2 Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC 4. Cách chọn đa thức sinh Đa thức được chọn phải thỏa mãn hai tính chất sau: - Không chia hết cho x. Điều này đảm bảo tất cả các lỗi đa bit có độ tương đương bậc của đa thức được phát hiện. - Không chia hết cho x+1. Điều này đảm bảo tất cả các lỗi đa bit có số lẻ các bit bị lỗi được phát hiện 5. Đánh giá - CRC có thể phát hiện được tất cả các lỗi có một số lẻ bit bị lỗi - CRC có thể phát hiện được tất cả các lỗi đa bit có độ dài nhỏ hơn hoặc bằng bậc của đa thức - CRC có thể phát hiện được các lỗi đa bit có độ dài lớn hơn bậc của đa thức với xác xuất cao - Một điều đáng chú ý là tuy phương pháp CRC có vẻ như phức tạp, nhưng thực sự việc thể hiện nó lại rất đơn giản. Phép chia đa thức nhị phân được thực hiện thuần túy bởi các phép trừ không có nhớ - hay chính là các phép logic XOR. Bên cạnh đó chỉ cần các phép sao chép và so sánh bit thông thường. Loại lỗi Chất lượng phát hiện lỗi Các lỗi bit đơn 100% Các lỗi bit kép 100% khi đa thức sinh có ít nhất 3 bit 1 Một số lẻ các bit bị lỗi 100% khi đa thức sinh không chia hết cho x+1 Một cụm lỗi có chiều dài < n+1 100% Một cụm lỗi có chiều dài = n+1 Xác suất bằng 1-(1/2) n-1 Một cụm lỗi có chiều dài > n+1 Xác xuất bằng 1-(1/2) n-1 Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 3 Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC Phần II : Demo mô phỏng thuật toán CRC 1. Yêu cầu của chương trình. - Nhập đa thức sinh ( có thể kiểm tra điều kiện của đa thức sinh ), xâu bít dữ liệu, tính ra xâu bít truyền đi. - Mô phỏng được phép chia đa thức không nhớ giống như Silde của thầy. - Thực hiện kiểm tra dữ liệu nhận được. 2. Phân tích thuật toán CRC - Giả sử đa thức G có bậc n, dãy bit mang thông tin I được thêm n bit 0 và coi như một đa thức nhị phân P. - Đa thức P được chia cho đa thức G, dựa vào các quy tắc đơn giản của phép trù không nhớ như sau: 1 – 1 = 0 0 – 0 = 0 1 – 0 = 1 0 – 1 = 1 - Không cần quan tâm đến kết quả của phép chia, phần dư R ( lấy n chữ số ) của phép chia được thay thế vào chỗ của n chữ số 0 bổ sung trong P , tức là ta có D = P + R. Theo tính chất của phép chia đa thức nhị phân, nếu D – R chia hết cho G thì D = P + R cũng vậy. R được gọi là checksum và D chính là dãy bit được gửi đi thay cho I. Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 4 Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC - Giả sử dãy bit nhận được là D’ không chia hết cho G thì tức là D khác D’, ta có thể khẳng định rằng chắc chắn bức điện bị lỗi. Ngược lại, nếu D’chia hết cho G, thì bức điện đó không bị lỗi và ta tách bỏ đi n bit cuối lấy các bit còn lại là thông tin nhận được. Từ những vấn đề trên để thực hiện truyền thông tin hay kiểm tra dãy bit nhận được ta chỉ cần thực hiện được phép chia đa thức nhị phân không nhớ. 3. Phân công công việc cho các thành viên trong nhóm. Nhóm có 3 sinh viên cùng thực hiện và chương trình gồm có các phần công việc như sau : • Định nghĩa quy tắc của phép trừ không nhớ, chuyển dãy nhị phân của đa thức sinh về đa thức tương ứng (Sinh viên thực hiện Nguyễn Thị Huệ) • Xây dựng phép chia đa thức nhị phân không nhớ, thực hiện mô phỏng phép chia đa thức không nhớ và đưa ra kết quả yêu cầu kiểm tra hay tính ra dãy bit cần truyền (Sinh viên thực hiện Cao Thị Phương Anh) • Kiểm tra điều kiện đa thức sinh, thiết kế Form chương trình (Sinh viên thực hiện Nguyễn Quý Sơn) a. Phần thực hiện của Sinh viên Nguyễn Thị Huệ. - Thuật toán thực hiện trên phép chia không nhớ với quy tắc đơn giản 1 – 1 = 0 0 – 0 = 0 1 – 0 = 1 0 – 1 = 1 - Nên em đã viết một phương thức pheptinh(char a, char b) với giá trị trả về là 1 kí tự kiểu char là kết quả của phép trừ với các quy tắc đơn giản ở trên. - Tiếp theo là việc thực hiện chuyển dãy nhị phân của đa thức sinh về đa thức thức tương ứng. Em đã viết một phương thức đó là phương thức sinhbieuthuc(string s) phương thức này trả về một chuỗi biểu diễn đa thức tương ứng với dãy nhị phân của đa thức sinh. Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 5 Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC - Trong phương thức này thì ta nhậ thấy chuỗi nhị phân của đa thức sinh cứ vị trí nào là kí tự 1 thì khi chuyển sang đa thức tương ứng là 1*x t với t là số ngũ tại vị trí i thuộc dãy và t được tính bằng cách lấy chiều dài của chuỗi trừ đi ( vị trí i + 1), ta sẽ dùng 1 vòng lặp for cho i chạy từ đầu đến hết chuỗi. Nếu tại vị trí i nào đó có giá trị của kí tự là 1 thì ta thực hiện in ra “x^t”. Cuối cùng ta được đa thức tương ứng của dãy nhị phân của đa thức sinh. b. Phần thực hiện của Sinh viên Cao Thị Phương Anh. • Xây dựng phép chia nhị phân không nhớ. - Phương thức phepchia(string a, string b) với đầu vào string a là số chia và string b là số bị chia phương thức này thực hiện việc tính ra phần dư của dãy a chia b, phục vụ cho việc kiểm tra điều kiện của đa thức sinh. Ý tưởng : dựa trên ví dụ ta thấy - Nhận thấy số chia khi chia cho số bị chia nếu kí tự đầu của số chia là 1 thì số chia sẽ trừ cho đa thức sinh, nếu là kí tự 0 thì trừ cho chuỗi bit toàn kí tự 0 có độ dài bằng độ dài chuỗi đa thức sinh. Trong phương thức này ta sẽ sử dụng một mảng kí tự char[] bandau = new char[a.Length] để copy lại toàn bộ Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 6 Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC chuỗi kí tự của string a hay số chia. Ta sẽ thao tác phép chia trên mảng này, và xây dựng chuỗi string c2 toàn các bit 0 có độ dài bằng độ dài đa thức sinh. - Giờ ta tính các bước thực hiện: khởi tạo một biến đếm h = 0, nhận thấy bandau[h] = ‘1’ => ta có kết quả như dưới. - Lúc này, sang bước tiếp theo ta sẽ cho h tăng lên 1 lúc này h = 1, bandau[h] = ‘1’ => kết quả là - Cứ làm như trên đến khi h tăng và h = 5 = dộ dài của số chia trừ đi độ dài của số bị chia thì ta nhận được phần dư cần tìm Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 7 Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC Ta sẽ sử dụng một vòng lặp while vòng lặp kết thúc khi h > độ dài của chuỗi số chia trừ đi độ dài của số bị chia. Ở đây là không quan tâm đến thương mà chỉ quan tâm đến phần dư. • Thực hiện mô phỏng phép chia không nhớ phép chia đa thức không nhớ và đưa ra kết quả yêu cầu kiểm tra hay tính ra dãy bit cần truyền. - Để thực hiện mô phỏng phép chia không nhớ, mô phỏng từng bước của phép chia thì giống như phương thức phép chia nhưng vì phải mô tả từng bước phép chia nên em khởi tạo phần đầu của phương thức bằng một phương thức init(string dulieu, string dtsinh) với đầu vào là xâu bit cần kiểm tra hoặc cần tính là dulieu và dtsinh là đa thức sinh, để chương trình sẽ chạy theo từng bước của phép chia em xây dựng phương thức thuchienchia() đây chính là tách từ vòng lặp while của phương thức phepchia và dùng một time để thay thế vòng lặp, trong phương thức thực hiện cứ mỗi bước sẽ vẽ ra một kí tự kết quả của phép trừ, cuối cùng khi không thỏa mãn điều kiện biến đếm để tính phép trừ nhỏ hơn hoặc bằng độ dài của dulieu trừ dtsinh thì kết quả sẽ được in ra, các vị trí in ra đều được tính toán tùy theo đầu đề, nếu phép chia quá dài nó có thể mất chữ vì tràn ra khỏi pictureBox. Và khi người dùng nhấn nút Thuật toán Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 8 Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC CRC thì time này sẽ thực hiện, trong sự kiện click button thì sẽ thực hiện các yêu cầu bài toán và các điều kiện kiểm tra sẽ được thông báo kết quả. c. Phần thực hiện của Sinh viên Nguyễn Quý Sơn. • Kiểm tra điều kiện đa thức sinh. Đa thức sinh phải thỏa mãn điều kiện. - Không chia hết cho x - Không chia hết cho x+1 Dựa trên phương thức phepchia(string a, string b) ta sẽ viết phương thức kiemtradk(string a) với đầu vào là đa thức sinh nếu đa thức sinh chia hết cho “10” hoặc “11” thì đa thức sinh đó không thỏa mãn điều kiện ngược lại đã thỏa mãn điều kiện của đa thức sinh. • Thiết kế Form chương trình. - Với yêu câu nhập chuỗi thông tin hoặc chuỗi kết quả nhận được trong quá trình truyền tin, và nhập đa thức sinh ta sẽ có 1 Textbox để nhập thông tin cần xét và 1 comboBox để nhập đa thức sinh. - Một 2 groupBox, trong đó có 1 groupBox chưa nút điều khiển và 2 text nhập liệu, 2 nút chọn để cho người dùng chọn việc tính xâu cần truyền hay kiểm tra thông tin nhận được. groupBox còn lại gồm các label thể hiện thông tin của bài toán. - Một pictureBox để thể hiện mô phỏng phép chia không nhớ và hiển thị kết quả của yêu cầu. Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 9 Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 10 [...]... 11 Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC Bước 3: chọn yêu cầu • Nhấn ô chọn Xâu cần truyền là chọn yêu cầu tính ra xâu bit cần truyền đi Nhấn ô chọn Kiểm tra dữ liệu nhận được là thực hiện yêu cầu kiểm tra thông tin nhận được có lỗi hay không • Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 12 Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát. .. thông Mô phỏng phương pháp phát hiện lỗi CRC • Nếu bạn không nhấn chọn yêu câu thì chương trình sẽ hiện ra thông báo và lúc đó bạn phải chọn lại yêu cầu và nhấn nút Thuật toán CRC để thực hiện chương trình Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 13 Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC Sau khi chọn lại: Cao Thị Phương Anh – Nguyễn Thị Huệ -.. .Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC Phần III : Hướng dẫn sử dụng chương trình Bước 1 : nhập xâu bit cần thực hiện vào textbox Bước 2 : nhập hoặc chọn đa thức sinh từ comboBox • Nếu đa thức sinh không thỏa mãn yêu cầu thì chương trình sẽ đưa ra thông báo và bạn sẽ nhập lại đa thức sinh và nhấn nut Thuật toán CRC để thực hiện lại Cao Thị Phương Anh – Nguyễn... 13 Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC Sau khi chọn lại: Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 14 Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 15 . tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC Sau khi chọn lại: Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 14 Bài tập lớn Mạng truyền thông Mô phỏng. Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC Phần I : Lý thuyết 1. Định nghĩa. CRC ( Cyclic Redundancy Check ) còn gọi là phương pháp mã đa thức hoặc mã vòng. Phương. kiểm tra thông tin nhận được có lỗi hay không. Cao Thị Phương Anh – Nguyễn Thị Huệ - Nguyễn Quý Sơn – Lớp TH-7B Page 12 Bài tập lớn Mạng truyền thông Mô phỏng phương pháp phát hiện lỗi CRC • Nếu