Cyclic redundancy check là gì

  -  
Phương pháp bình chọn parity dễ dàng nhưng độ tin yêu kém đề xuất được ứng dụng cho những giao thức có vận tốc truyền dữ liệu chậm hoặc số lượng bit tài liệu cần khám nghiệm ít ví như giao thức UART.CRC (Cyclic Redundancy Code) là một phương thức phổ biến tất cả độ tin yêu cao hơn những so với áp dụng bi parity. CRC được ứng dụng trong không ít giao thức có cân nặng dữ liệu truyền bự hoặc vận tốc truyền tài liệu cao như CAN, Ethernet, tiếp xúc RF 15693, ...2. Kim chỉ nan về tính toán CRCGiá trị chuỗi bit soát sổ hay chuỗi CRC là số dư của phép phân chia của chuỗi bit tài liệu cho một chuỗi bit nhiều thức sinh (Generator Polynomial). Đa thức sinh là số chia sẽ khác biệt tùy vào mỗi giao thức quy định. Phép phân chia trong tính toán CRC sử dụng phương pháp tính modulo-2. Modulo-2 thực ra là XOR nhì số hạng.Giả sử nhiều thức chuỗi dữ liệu cần truyền là M(x):
*

*

Trong đó:am và an bởi 1 hoặc 0Độ dài chuỗi CRC bằng độ dài nhiều thức sinh trừ 1 và ngay số mũ lớn số 1 của đa thức sinh và bằng n.Để chế tác CRC, chuỗi dữ liệu cần truyền sẽ được mở rộng thêm n bit về phía bên phải:
*

Điều này, tương ứng với câu hỏi dịch trái n bit chuỗi tài liệu M(x).Cuối cùng, phân chia T(x) cho G(x) với lấy số dư. Số dư đó là chuỗi CRC n bit.

Bạn đang xem: Cyclic redundancy check là gì

Bạn đang xem: Crc là gì


*

Kiểm tra CRC được triển khai bằng 1 trong 2 phương pháp sau:Lấy chuỗi tài liệu có cả các bit đánh giá CRC phân chia cho nhiều thức sinh. Nếu như số dư khác "0" thì tài liệu nhận bị lỗi.Tách chuỗi dữ liệu và chuỗi CRC riêng. Chỉ mang chuỗi dữ liệu chia cho đa thức sinh rồi mang số dư phép chia so sánh với chuỗi CRC. Nếu hai chuỗi khác biệt thì tài liệu nhận bị lỗi.Ví dụ về đo lường và thống kê CRC-4, tương ứng với số bit bình chọn là 4 bit, với đa thức sinh như sau:x^4 + x + 1 (b10011)Chuỗi tài liệu cần truyền bao gồm 8 bit như sau:x^7 + x^5 + x (b1010_0010)Chuỗi dữ liệu trước lúc chia sẽ được không ngừng mở rộng thêm 4 bit "0":x^11 + x^9 + x^5 (b1010_0010_0000)
*

Hình 4. Soát sổ CRC bằng phương pháp chia chuỗi dữ liệu có CRC với nhiều thức sinh - trường hợp sai 1 bit cùng trường hợp sai 2 bit, số dư khác 0​Bộ nhận sẽ không phát hiện được lỗi tài liệu khi chuỗi dữ liệu bị sai với chuỗi CRC cũng không đúng trùng với giá trị CRC của chuỗi dữ liệu bị sai. Tuy nhiên, xác suất để xẩy ra đúng trường đúng theo này là thấp. Xác suất này càng thấp khi chuỗi CRC càng dài.
Xét nhiều thức sinh g(x) = x + 1, đó là đa thức CRC-1, tính CRC mang lại chuỗi 8 bit b10100010 với chuỗi b10011111.

Xem thêm: Cách Tạo Trò Chơi Lật Hình Trong Powerpoint 7/2021, Hướng Dẫn 2 Cách Làm Trò Chơi Trên Powerpoint


So sánh hiệu quả với phương pháp tính parity chẵn đã trình bày phía trên bạn có thể nhận thấy sự tương đồng. CRC-1 chính là phương thức kiểm tra parity.3. Mạch nguyên tắc tính CRC
Xem lại những ví dụ đã trình bày trên đây, CRC được tính theo nguyên tắc:Nếu bit MSB của lần tính bây giờ bằng 1 thì nó sẽ được XOR (modulo-2) với nhiều thức sinhNếu bit MSB của lần tính bây giờ bằng 0 thì nó sẽ không còn đổi
Để thực hiện mạch CRC-1, kế bên cách XOR toàn bộ các bit dữ liệu đầu vào như vẫn trình bày ở trong phần trên, bạn có thể thực hiện dựa trên nguyên tắc của câu hỏi chia đa thức như hình trên. Mạch phải 2 FF để lưu cực hiếm sau những lần XOR và mạch sẽ dịch 1 bit sau mỗi lần XOR để đưa 1 bit tài liệu mới như hình sau:
Hình 9. Mạch nguyên tắc của CRC-1Ở hình trên, bit MSB sẽ điều khiển và tinh chỉnh MUX chọn gồm XOR với đa thức sinh x+1 tốt không? tuy nhiên, sau mỗi chu kỳ tính, bit MSB luôn bị loại bỏ bỏ cần mạch MUX và XOR của bit MSB là không yêu cầu thiết. Mạch được rút gọn như hình sau:
Xét mạch MUX, ví như bit MSB bằng 1 thì bit 0 XOR với 1, ví như bit MSB bởi 0 thì tương ứng với việc bit 0 XOR với 0 buộc phải mạch MUX được loại bỏ để thay bằng bit 1 XOR bit 0.
Hình 11. Mạch nguyên lý CRC-1 (bỏ mạch MUX)​Bit 0 chỉ dùng để làm lưu quý hiếm bit dịch vào yêu cầu cũng có thể loại bỏ.

Xem thêm: Meaning Of Log On Là Gì Và Cấu Trúc Cụm Từ Log On Trong Câu Tiếng Anh


Hình 12. Mạch nguyên lý CRC-1 (bỏ FF đầu vào)​Ở đây, bit CRC chỉ có một bit nên việc thêm một bit 0 nghỉ ngơi chuỗi tài liệu đầu vào nhằm tính CRC cũng không quan trọng vì quý giá nào XOR cùng với 0 cũng bởi chính nó.
Hình 13. Mạch nguyên tắc CRC-1 với trình diễn thông thường​Tương tự, xét lại mạch CRC-4 gồm đa thức sinh x^4 + x + 1, mạch nguyên lý tính CRC-4 như sau (lưu ý, địa điểm XOR với "0" thì sa thải cả MUX với cổng XOR):
5. RTL code tính CRC nối tiếp5.1 nhấn xét
Qua nhì ví dụ bên trên đây, dìm xét phổ biến như sau:Tại vị trí cơ mà bit đa thức sinh bởi "0" thì chỉ với phép dịch bitTại vị trí mà bit đa thức sinh bằng "1" thì được chèn cổng XORDữ liệu tiếp nối để tính CRC dịch tự MSB mang lại LSB với số lần dịch bằng độ dài tài liệu cộng độ dài quý hiếm CRC. Ví dụ, dữ liệu 8 bit dùng CRC-4 thì mốc giới hạn dịch là 12 lần với 4 bit cuối là 4 bit 0 được cung cấp chuỗi dữ liệu.5.2 phân tích module tạo thành và kiểm soát CRCCăn cứ vào hầu như nhận xét trên, một thiết kế thực hiện nay tính CRC tổng quát được tiến hành như sau:Sử dụng một define CRC_CTRL_POLY để chất nhận được tạo tín hiệu input điều khiển và tinh chỉnh giá trị của nhiều thức sinh nếu như muốn. Chú ý, phạm vi tín hiệu tinh chỉnh bằng số bit CRC vằ ngay số mũ lớn nhất của nhiều thức sinh. Ví dụ, nếu nhiều thức sinh là x^4 + x + 1 thì độ rộng dấu hiệu là 4 bit và quý hiếm gán đến tín hiệu tinh chỉnh là 4'b0011 (bỏ bit 1 của x^4)Sử dụng một define CRC_CHECKER để chất nhận được tạo tính năng kiểm tra CRCSử dụng một parameter CRC_GPW_MAX đến phép cấu hình độ rộng nhiều thức sinh. Độ rộng đa thức sinh ngay số mũ lớn nhất của nhiều thức sinh. Ví dụ, nếu đa thức sinh là x^4 + x + 1 thì CRC_GPW_MAX = 4Sử dụng một parameter CRC_POLY_VALUE cho phép gán giá trị đa thức sinh đã sử dụng nếu không sử dụng tín hiệu tinh chỉnh và điều khiển được tạo thành bởi có mang CRC_CTRL_POLY. Ví dụ, nếu không định nghĩa CRC_CTRL_POLY, đa thức sinh là x^4 + x + 1 thì CRC_GPW_MAX = 4 và giá trị CRC_POLY_VALUE = 4'b0011Sơ đồ tín hiệu tiếp xúc của module CRC như sau:
Hai biểu lộ ctrl_en với chk_en đang điều khiển công dụng tạo và soát sổ CRC như sau, khi bộc lộ ctrl_en tích cực, dữ liệu dùng làm tạo CRC hoặc được kiểm tra CRC sẽ bước đầu dịch vào data_in. Ctrl_en sẽ lành mạnh và tích cực bằng số bit yêu cầu dịch trên data_in.Nếu chk_en = 0 thì khi ctrl_en = 0, crc_seq sẽ lưu lại giá trị chuỗi CRC trong 1 chu kỳ xung clockNếu chk_en = 1 thì khi ctrl_en = 0, crc_error đang báo lỗi CRCcrc_error = 1 thì chuỗi soát sổ bị lỗi CRCcrc_error = 0 thì chuỗi kiểm tra không xẩy ra lỗiMạch tổng quát của từng bit vào thanh ghi chứa giá trị CRC như sau:
5.3 RTL code
Link download RTL code và testbench: CRC RTL codepass (nếu có): nguyenquanicd5.4 kết quả mô phỏng
Đa thức sinh: x^4 + x + 1 khớp ứng với việc gán ctrl_poly_en = 4'b0011Dữ liệu dùng để làm tạo CRC: 1010_0110 sau khi thêm 4 bit "0" là 1010_0110_0000 => kết quả tính CRC là 1110Dữ liệu dùng để kiểm tra CRC: 1010_0110_1110. Trong đó, 4 bit LSB 1110 là chuỗi CRC => công dụng kiểm tra CRC là crc_error = 0
Trang nhà . Liên hệ Nhà chiếc uy tín THABET|Đá gà AE3888 | manclub - Cổng game bài xích đổi thưởng | phần trăm kèo | W88 | game đổi thưởng online tiên tiến nhất | B52 CLUB | Kèo nhà loại | AE888 | SV88 | C54 mobi |

ibet888