Crc Là Gì

Phương thơm pháp đánh giá parity dễ dàng và đơn giản cơ mà độ tin cậy kém nhẹm đề nghị được ứng dụng cho các giao thức gồm vận tốc truyền dữ liệu chậm rãi hoặc số lượng 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 phương pháp thịnh hành tất cả độ tin cậy cao hơn các so với thực hiện bi parity. CRC được ứng dụng trong vô số nhiều giao thức có khối lượng tài liệu truyền phệ hoặc tốc độ truyền tài liệu cao như CAN, Ethernet, tiếp xúc RF 15693, ...2. Lý thuyết về tính chất toán thù CRCGiá trị chuỗi bit bình chọn giỏi chuỗi CRC là số dư của phép phân tách của chuỗi bit dữ liệu cho 1 chuỗi bit nhiều thức sinh (Generator Polynomial). Đa thức sinc là số chia đã không giống nhau tùy vào từng giao thức mức sử dụng. Phxay phân chia trong tính tân oán CRC sử dụng cách tính modulo-2. Modulo-2 thực chất là XOR nhì số hạng.Giả sử đa thức chuỗi tài liệu phải truyền là M(x):
*

*

Trong đó:am với an bằng 1 hoặc 0Độ lâu năm chuỗi CRC bởi độ lâu năm nhiều thức sinc trừ 1 và ngay số mũ lớn nhất của đa thức sinch với bởi n.Để sản xuất CRC, chuỗi tài liệu cần 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:
*

Như vậy, khớp ứng với Việc dịch trái n bit chuỗi tài liệu M(x).Cuối thuộc, phân chia T(x) cho G(x) cùng mang số dư. Số dư đó là chuỗi CRC n bit.

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

quý khách hàng sẽ xem: Crc là gì


*

Kiểm tra CRC được tiến hành bằng một trong những 2 bí quyết sau:Lấy chuỗi tài liệu bao gồm cả những bit khám nghiệm CRC phân chia cho nhiều thức sinc. Nếu số dư không giống "0" thì dữ liệu dìm bị lỗi.Tách chuỗi tài liệu với chuỗi CRC riêng. Chỉ rước chuỗi dữ liệu phân tách mang lại đa thức sinc rồi đem số dư phxay phân tách so sánh với chuỗi CRC. Nếu hai chuỗi khác biệt thì dữ liệu thừa nhận bị lỗi.lấy ví dụ về tính 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 sinch như sau:x^4 + x + 1 (b10011)Chuỗi dữ liệu nên truyền bao gồm 8 bit nhỏng sau:x^7 + x^5 + x (b1010_0010)Chuỗi tài liệu trước lúc phân tách 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 chia chuỗi tài liệu tất cả CRC cùng với nhiều thức sinch - trường hòa hợp không nên 1 bit cùng ngôi trường đúng theo không đúng 2 bit, số dư khác 0​Bộ dìm sẽ không phát hiện nay được lỗi tài liệu lúc chuỗi dữ liệu bị không nên với chuỗi CRC cũng không nên 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, Tỷ Lệ để xảy ra đúng ngôi trường hòa hợp này là thấp. Xác suất này càng phải chăng Khi chuỗi CRC càng nhiều năm.
Xét đa thức sinch g(x) = x + 1, đó là đa thức CRC-1, tính CRC mang lại chuỗi 8 bit b10100010 cùng chuỗi b10011111.

Xem thêm: Tính Từ Đứng Trước Hay Sau Danh Từ? Sau Tính Từ Là Gì


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