Cyclic redundancy check là gì

Phương pháp kiểm soát parity đơn giản dẫu vậy độ tin cẩn kém buộc phải được áp dụng cho những giao thức bao gồm vận tốc truyền tài liệu chậm chạp hoặc con số bit dữ liệu cần chất vấn ít ví dụ như giao thức UART.CRC (Cyclic Redundancy Code) là một trong những phương thức phổ cập tất cả độ tin tưởng cao hơn các so với sử dụng bi parity. CRC được ứng dụng trong nhiều giao thức có cân nặng tài liệu truyền Khủng hoặc tốc độ truyền tài liệu cao nhỏng CAN, Ethernet, tiếp xúc RF 15693, ...2. Lý tmáu về tính toán CRCGiá trị chuỗi bit đánh giá tuyệt chuỗi CRC là số dư của phnghiền phân tách của chuỗi bit tài liệu cho 1 chuỗi bit nhiều thức sinh (Generator Polynomial). Đa thức sinc là số phân tách đang khác nhau tùy theo từng giao thức lý lẽ. Phnghiền chia vào tính toán CRC thực hiện phương pháp tính modulo-2. Modulo-2 thực chất là XOR nhì số hạng.Giả sử nhiều thức chuỗi tài liệu cần truyền là M(x):

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

*

*

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

Như vậy, tương xứng với câu hỏi dịch trái n bit chuỗi dữ liệu M(x).Cuối cùng, phân chia T(x) mang lại G(x) với rước số dư. Số dư đó là chuỗi CRC n bit.quý khách sẽ xem: Crc là gì
*

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

Hình 4. Kiểm tra CRC bằng phương pháp phân chia chuỗi dữ liệu gồm CRC với nhiều thức sinch - ngôi trường hòa hợp không nên 1 bit cùng ngôi trường vừa lòng không đúng 2 bit, số dư khác 0​Sở nhận sẽ không còn phân phát hiện được lỗi tài liệu Khi chuỗi tài liệu bị không đúng với chuỗi CRC cũng không nên trùng với cái giá trị CRC của chuỗi tài liệu bị không nên. Tuy nhiên, Phần Trăm để xẩy ra đúng ngôi trường thích hợp này là thấp. Xác suất này càng rẻ Khi chuỗi CRC càng lâu năm.

Xem thêm: Mặt Như Cái Thớt, Mình Như Cái Mai. Cái Răng Khấp Khiểng, Cái Tai Thẳng Đờ. Khi Bài Phú, Khi Ngâm Thơ. Khi Cúng Ông Nọ, Khi Thờ Bà Kia. Là Gì?

So sánh công dụng với cách thức tính parity chẵn sẽ trình diễn phía bên trên bạn có thể nhận ra sự tương đương. CRC-1 đó là phương pháp chất vấn parity.3. Mạch nguyên tắc tính CRC
Xem lại những ví dụ vẫn trình bày bên trên trên đây, CRC được xem theo nguyên tắc:Nếu bit MSB của lần tính hiện tại 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 hiện tại bởi 0 thì nó sẽ không còn đổi
Để thực hiện mạch CRC-1, ngoại trừ bí quyết XOR tất cả những bit dữ liệu nguồn vào như sẽ trình bày tại vị trí trên, chúng ta có thể tiến hành dựa vào nguyên lý của bài toán phân tách nhiều thức như hình bên trên. Mạch phải 2 FF nhằm giữ giá trị sau những lần XOR cùng mạch đã dịch 1 bit sau mỗi lần XOR để lấy 1 bit tài liệu new như hình sau:
Hình 9. Mạch nguyên lý của CRC-1Tại hình trên, bit MSB vẫn tinh chỉnh MUX chọn gồm XOR cùng với nhiều thức sinh x+1 giỏi không? Tuy nhiên, sau mỗi chu kỳ luân hồi tính, bit MSB luôn luôn bị nockout bỏ cần mạch MUX cùng XOR của bit MSB là ko cần thiết. Mạch được rút ít gọn như hình sau:
Xét mạch MUX, giả dụ bit MSB bởi 1 thì bit 0 XOR với cùng 1, ví như bit MSB bởi 0 thì tương ứng cùng với việc bit 0 XOR với 0 cần mạch MUX được sa thải để cố kỉnh bởi bit 1 XOR bit 0.
Hình 12. Mạch nguyên tắc CRC-1 (bỏ FF đầu vào)​Tại đây, bit CRC chỉ có 1 bit nên việc thêm một bit 0 làm việc chuỗi dữ liệu nguồn vào để tính CRC cũng không cần thiết vì quý hiếm nào XOR với 0 cũng bằng chủ yếu nó.
Hình 13. Mạch nguyên tắc CRC-1 cùng với màn trình diễn thông thường​Tương từ bỏ, xét lại mạch CRC-4 bao gồm đa thức sinc x^4 + x + 1, mạch nguyên tắc tính CRC-4 nlỗi sau (để ý, vị trí XOR với "0" thì sa thải cả MUX cùng 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 phía trên, thừa nhận xét tầm thường nhỏng sau:Tại vị trí nhưng bit đa thức sinc bởi "0" thì chỉ với phnghiền dịch bitTại địa chỉ nhưng bit đa thức sinh bằng "1" thì được cnhát cổng XORDữ liệu tiếp nối nhằm tính CRC dịch từ bỏ MSB mang lại LSB với tần số dịch bằng độ dài dữ liệu cùng độ lâu năm quý giá CRC. ví dụ như, dữ liệu 8 bit cần sử dụng CRC-4 thì số lần dịch là 12 lần với 4 bit cuối là 4 bit 0 được cung ứng chuỗi dữ liệu.5.2 Phân tích module chế tạo ra với bình chọn CRCCăn uống cứ đọng vào hồ hết dìm xét trên, một thiết kế tiến hành tính CRC tổng thể được triển khai nlỗi sau:Sử dụng một define CRC_CTRL_POLY để được cho phép tạo tín hiệu input điều khiển và tinh chỉnh cực hiếm của nhiều thức sinch nếu muốn. Chụ ý, phạm vi biểu hiện tinh chỉnh bằng số bit CRC vằ bằng số nón lớn nhất của nhiều thức sinh. ví dụ như, nếu nhiều thức sinch là x^4 + x + 1 thì phạm vi biểu thị là 4 bit cùng quý giá gán đến bộc lộ điều khiển và tinh chỉnh là 4'b0011 (vứt bit 1 của x^4)Sử dụng một define CRC_CHECKER để cho phép chế tạo tác dụng kiểm soát CRCSử dụng một parameter CRC_GPW_MAX cho phép thông số kỹ thuật độ rộng đa thức sinch. Độ rộng lớn đa thức sinch bằng số nón lớn nhất của nhiều thức sinc. ví dụ như, ví như nhiều thức sinc là x^4 + x + 1 thì CRC_GPW_MAX = 4Sử dụng một parameter CRC_POLY_VALUE cho phép gán quý hiếm nhiều thức sinch đã thực hiện nếu như không thực hiện bộc lộ tinh chỉnh và điều khiển được tạo thành vày có mang CRC_CTRL_POLY. Ví dụ, nếu không định nghĩa CRC_CTRL_POLY, nhiều thức sinh là x^4 + x + 1 thì CRC_GPW_MAX = 4 và cực hiếm CRC_POLY_VALUE = 4'b0011Sơ đồ dùng biểu hiện tiếp xúc của module CRC nhỏng sau:
Hai biểu đạt ctrl_en cùng chk_en đã tinh chỉnh chức năng chế tạo ra với khám nghiệm CRC như sau, Lúc biểu hiện ctrl_en lành mạnh và tích cực, dữ liệu dùng để chế tạo CRC hoặc được kiểm soát CRC đang bước đầu dịch vào data_in. ctrl_en đã tích cực ngay số bit nên dịch bên trên data_in.Nếu chk_en = 0 thì lúc ctrl_en = 0, crc_seq sẽ lưu lại quý hiếm chuỗi CRC trong một chu kỳ luân hồi xung clockNếu chk_en = 1 thì Lúc ctrl_en = 0, crc_error sẽ báo lỗi CRCcrc_error = 1 thì chuỗi chất vấn bị lỗi CRCcrc_error = 0 thì chuỗi kiểm soát không biến thành lỗiMạch tổng quát của từng bit trong thanh khô ghi chứa quý hiếm CRC nhỏng sau:
5.3 RTL code
Link tải về RTL code cùng testbench: CRC RTL codepass (trường hợp có): nguyenquanicd5.4 Kết quả tế bào phỏng
Đa thức sinh: x^4 + x + 1 tương xứng với câu hỏi gán ctrl_poly_en = 4'b0011Dữ liệu dùng làm tạo thành CRC: 1010_0110 sau khoản thời gian thêm 4 bit "0" là 1010_0110_0000 => Kết trái tính CRC là 1110Dữ liệu dùng để làm kiểm soát CRC: 1010_0110_1110. Trong số đó, 4 bit LSB 1110 là chuỗi CRC => Kết quả soát sổ CRC là crc_error = 0 Chulặng mục: Công Nghệ