Cyclic Redundancy Check Là Gì

     
Phương pháp soát sổ parity đơn giản và dễ dàng nhưng độ tin yêu kém bắt buộc được ứng dụng cho các giao thức có tốc độ truyền dữ liệu chậm 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 phương pháp phổ biến tất cả độ tin tưởng cao hơn nhiều so với áp dụng bi parity. CRC được ứng dụng trong vô số nhiều giao thức có trọng lượng dữ liệu truyền phệ hoặc tốc độ truyền dữ liệu cao như CAN, Ethernet, tiếp xúc RF 15693, ...2. Lý thuyết về đo lường và tính toán CRCGiá trị chuỗi bit khám nghiệm 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 đa thức sinh (Generator Polynomial). Đa thức sinh là số phân tách sẽ khác nhau tùy vào từng giao thức quy định. Phép chia trong đo lường và 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ử đa thức chuỗi dữ liệu cần truyền là M(x):
*

*

Trong đó:am cùng an bằng 1 hoặc 0Độ nhiều năm chuỗi CRC bằng độ dài nhiều thức sinh trừ 1 và thông qua số mũ lớn nhất của nhiều thức sinh và bằng n.Để tạo thành CRC, chuỗi tài 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, khớp ứ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 chia T(x) đến G(x) và 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 những 2 phương pháp sau:Lấy chuỗi tài liệu có cả những bit kiểm tra CRC phân chia cho đa thức sinh. Ví như số dư không giống "0" thì dữ liệu nhận bị lỗi.Tách chuỗi dữ liệu và chuỗi CRC riêng. Chỉ rước chuỗi dữ liệu chia cho đa thức sinh rồi rước số dư phép chia đối chiếu với chuỗi CRC. Trường hợp hai chuỗi khác nhau thì dữ liệu nhận bị lỗi.Ví dụ về tính toán CRC-4, tương xứng với số bit đánh giá là 4 bit, với nhiều thức sinh như sau:x^4 + x + 1 (b10011)Chuỗi tài liệu cần truyền có 8 bit như sau:x^7 + x^5 + x (b1010_0010)Chuỗi dữ liệu trước khi chia đang được 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 chia chuỗi tài liệu có CRC với đa thức sinh - trường hòa hợp sai 1 bit cùng trường đúng theo sai 2 bit, số dư khác 0​Bộ nhận sẽ không còn phát hiện tại được lỗi dữ liệu khi chuỗi dữ 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ị sai. Mặc dù nhiên, tỷ lệ để xẩy ra đúng trường hòa hợp này là thấp. Phần trăm này càng thấp khi chuỗi CRC càng dài.
Xét đa thức sinh g(x) = x + 1, đấy là đa thức CRC-1, tính CRC mang lại chuỗi 8 bit b10100010 và chuỗi b10011111.

Xem thêm: Top #10 Biển Số Xe Trung Quốc Màu Gì, Màu Biển Số Xe Của Các Nước Có Tác Dụng Gì


So sánh hiệu quả với phương thức tính parity chẵn đã trình diễn phía trên chúng ta cũng có thể nhận thấy sự tương đồng. CRC-1 chủ yếu 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 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 đa thức sinhNếu bit MSB của lần tính lúc này bằng 0 thì nó sẽ không đổi
Để tiến hành mạch CRC-1, ko kể cách XOR tất cả các bit dữ liệu đầu vào như sẽ trình bày ở trong phần trên, bạn có thể thực hiện tại dựa trên nguyên tắc của vấn đề chia đa thức như hình trên. Mạch yêu cầu 2 FF để lưu quý hiếm sau các lần XOR và mạch vẫn dịch 1 bit sau các lần XOR để lấy 1 bit dữ liệu mới như 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 tất cả XOR với đa thức sinh x+1 hay không? mặc dù nhiên, sau mỗi chu kỳ tính, bit MSB luôn bị loại bỏ đề xuất mạch MUX và XOR của bit MSB là không nên 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 cùng với 1, ví như bit MSB bằng 0 thì khớp ứng với việc bit 0 XOR với 0 bắt buộc mạch MUX được đào thải để 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 nên cũng có thể loại bỏ.

Xem thêm: Có Mấy Yêu Cầu Kỹ Thuật Của Dây Đốt Nóng ? A Yêu Cầu Kĩ Thuật Của Dây Đốt Nóng Gồm Có


Hình 12. Mạch nguyên tắc CRC-1 (bỏ FF đầu vào)​Ở đây, bit CRC chỉ có một bit cần việc thêm một bit 0 sinh hoạt chuỗi tài liệu đầu vào nhằm tính CRC cũng không cần thiết vì cực hiếm nào XOR với 0 cũng bằng chính nó.
Hình 13. Mạch nguyên tắc CRC-1 với màn trình diễn thông thường​Tương tự, xét lại mạch CRC-4 có đa thức sinh x^4 + x + 1, mạch nguyên tắc tính CRC-4 như sau (lưu ý, vị trí XOR cùng với "0" thì loại bỏ cả MUX và 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 bình thường như sau:Tại vị trí mà bit đa thức sinh bằng "0" thì chỉ nên phép dịch bitTại vị trí cơ mà bit nhiều thức sinh bởi "1" thì được chèn cổng XORDữ liệu thông liền để tính CRC dịch từ bỏ MSB đến LSB với chu kỳ dịch bằng độ dài dữ liệu cộng độ dài cực hiếm CRC. Ví dụ, dữ liệu 8 bit dùng CRC-4 thì chu kỳ 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 sinh sản và bình chọn CRCCăn cứ vào rất nhiều nhận xét trên, một xây dựng thực hiện nay tính CRC bao quát được tiến hành như sau:Sử dụng một define CRC_CTRL_POLY để cho phép tạo biểu hiện input điều khiển giá trị của nhiều thức sinh ví như muốn. Chú ý, phạm vi tín hiệu điều khiển bằng số bit CRC vằ thông qua 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 bộc lộ là 4 bit và quý giá gán đến tín hiệu đ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 để được cho phép tạo tính năng kiểm tra CRCSử dụng một parameter CRC_GPW_MAX mang đến phép thông số kỹ thuật độ rộng đa thức sinh. Độ rộng nhiều thức sinh thông qua số mũ lớn số 1 của đa thức sinh. Ví dụ, nếu nhiều thức sinh 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 vẫn sử dụng còn nếu như không sử dụng tín hiệu điều khiển được tạo nên bởi tư tưởng 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à quý giá CRC_POLY_VALUE = 4'b0011Sơ tín đồ hiệu tiếp xúc của module CRC như sau:
Hai bộc lộ ctrl_en và chk_en đang điều khiển chức năng tạo và đánh giá CRC như sau, khi dấu hiệu ctrl_en tích cực, dữ liệu dùng làm tạo CRC hoặc được khám nghiệm CRC sẽ bắt đầu dịch vào data_in. Ctrl_en sẽ lành mạnh và tích cực bằng 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ẽ giữ lại được giá trị 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 khám nghiệm bị lỗi CRCcrc_error = 0 thì chuỗi kiểm tra không trở nên 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 tương xứng với việc gán ctrl_poly_en = 4'b0011Dữ liệu dùng để tạo CRC: 1010_0110 sau khoản thời gian thêm 4 bit "0" là 1010_0110_0000 => tác dụng 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 => kết quả kiểm tra CRC là crc_error = 0
Trang nhà . Tương tác Nhà cái uy tín THABET|Đá gà AE3888 | manclub - Cổng game bài xích đổi thưởng | ****| W88 | ku | F8bet | game thay đổi thưởng online bắt đầu nhất| xo so ket qua| FCB8 công ty cái đá bóng uy tín | kufun | shbet | new88| dwin68