CRC LÀ GÌ

Phương pháp soát sổ parity đơn giản nhưng lại độ tin tưởng kém nhẹm đề nghị được ứng dụng cho các giao thức bao gồm tốc độ truyền tài liệu chậm rì rì hoặc số lượng bit tài liệu nên đánh giá không nhiều ví như giao thức UART.CRC (Cyclic Redundancy Code) là một phương pháp phổ cập bao gồm độ tin cẩn cao hơn nữa những đối với áp dụng bi parity. CRC được vận dụng trong vô số giao thức có khối lượng tài liệu truyền to hoặc vận tốc truyền tài liệu cao nlỗi CAN, Ethernet, giao tiếp RF 15693, ...2. Lý tmáu về tính tân oán CRCGiá trị chuỗi bit kiểm tra giỏi chuỗi CRC là số dư của phxay phân chia của chuỗi bit dữ liệu cho một chuỗi bit đa thức sinch (Generator Polynomial). Đa thức sinh là số chia sẽ khác nhau tùy từng từng giao thức công cụ. Phép phâ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 ra là XOR nhị số hạng.Giả sử nhiều thức chuỗi tài liệu đề xuất truyền là M(x):

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

*

*

Trong đó:am với an bằng 1 hoặc 0Độ dài chuỗi CRC bởi độ nhiều năm đa thức sinh trừ 1 với thông qua số nón lớn số 1 của đa thức sinc với bằng n.Để chế tạo CRC, chuỗi dữ liệu yêu cầu truyền sẽ tiến hành không ngừng mở rộng thêm n bit về phía bên phải:
*

Vấn đề này, khớp ứng với vấn đề dịch trái n bit chuỗi tài liệu M(x).Cuối thuộc, phân tách T(x) đến G(x) và lấy số dư. Số dư chính là chuỗi CRC n bit.Quý Khách vẫn xem: Crc là gì
*

Kiểm tra CRC được tiến hành bởi 1 trong những 2 giải pháp sau:Lấy chuỗi tài liệu tất cả cả những bit khám nghiệm CRC phân chia đến nhiều thức sinc. 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 cùng chuỗi CRC riêng biệt. Chỉ đem chuỗi dữ liệu phân tách cho nhiều thức sinch rồi rước số dư phnghiền phân chia so sánh cùng với chuỗi CRC. Nếu nhị chuỗi không giống nhau thì tài liệu nhấn bị lỗi.Ví dụ về tính tân oán CRC-4, tương ứng cùng với số bit bình chọn là 4 bit, cùng với nhiều thức sinch như sau:x^4 + x + 1 (b10011)Chuỗi dữ liệu bắt buộc truyền có 8 bit như sau:x^7 + x^5 + x (b1010_0010)Chuỗi dữ liệu trước khi phân 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. Kiểm tra CRC bằng cách phân tách chuỗi dữ liệu tất cả CRC cùng với đa thức sinch - trường đúng theo sai 1 bit và ngôi trường phù hợp sai 2 bit, số dư không giống 0​Bộ nhận sẽ không phát hiện được lỗi dữ liệu Khi chuỗi dữ liệu bị sai với chuỗi CRC cũng sai trùng với mức giá trị CRC của chuỗi tài liệu bị không nên. Tuy nhiên, xác suất để xẩy ra đúng trường hòa hợp này là thấp. Xác suất này càng phải chăng lúc chuỗi CRC càng lâu năm.

Xem thêm: Caá Chẽm Là Cá Gì? Làm Món Gì Ngon? Giá Bao Nhiêu Tiền 1 Kg?

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