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

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

*

*

Trong đó:am với an bằng 1 hoặc 0Độ lâu năm chuỗi CRC bởi độ dài đa thức sinc trừ 1 và thông qua số mũ lớn nhất của nhiều thức sinch với bởi n.Để sản xuất CRC, chuỗi tài liệu bắt buộc 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 cùng với bài toán dịch trái n bit chuỗi tài liệu M(x).Cuối cùng, phân tách T(x) mang lại G(x) cùng rước số dư. Số dư đó là chuỗi CRC n bit.Bạn đang xem: Crc là gì
*

Kiểm tra CRC được thực hiện bởi 1 trong những 2 phương pháp sau:Lấy chuỗi dữ liệu gồm cả các bit kiểm soát CRC chia mang lại đa thức sinch. Nếu số dư không giống "0" thì dữ liệu dấn bị lỗi.Tách chuỗi tài liệu và chuỗi CRC riêng. Chỉ lấy chuỗi dữ liệu phân tách đến đa thức sinh rồi rước số dư phxay phân chia so sánh cùng với chuỗi CRC. Nếu nhì chuỗi khác nhau thì dữ liệu dấn bị lỗi.lấy một ví dụ về tính chất tân oán CRC-4, khớp ứng cùng với số bit soát sổ là 4 bit, với đa thức sinch nhỏng sau:x^4 + x + 1 (b10011)Chuỗi dữ liệu nên truyền tất cả 8 bit nhỏng sau:x^7 + x^5 + x (b1010_0010)Chuỗi tài liệu trước lúc phân chia sẽ tiến hành 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 tài liệu gồm CRC với đa thức sinh - trường đúng theo không đúng 1 bit và trường hòa hợp không nên 2 bit, số dư khác 0​Bộ nhấn sẽ không còn vạc hiện nay được lỗi dữ liệu lúc chuỗi tài liệu bị sai và chuỗi CRC cũng không nên trùng với cái giá trị CRC của chuỗi dữ 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 tốt khi chuỗi CRC càng nhiều năm.

Xem thêm: Thúc Lĩnh Lincoln Là Ai - Hot Boy Thúc Lĩnh Lincoln

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

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *