Crc là gì

  -  
Phương pháp kiểm soát parity đơn giản nhưng mà độ tin yêu kém buộc phải được vận dụng cho những giao thức có vận tốc truyền dữ liệu chậm trễ hoặc số lượng bit dữ liệu phải kiểm tra không nhiều ví dụ như giao thức UART.CRC (Cyclic Redundancy Code) là một trong phương pháp thịnh hành gồm độ tin cẩn cao hơn nữa nhiều đối với thực hiện bi parity. CRC được vận dụng trong 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ỏng CAN, Ethernet, tiếp xúc RF 15693, ...2. Lý tngày tiết về tính toán CRCGiá trị chuỗi bit khám nghiệm hay chuỗi CRC là số dư của phnghiền 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 sinc là số phân tách sẽ không giống nhau tùy vào mỗi giao thức điều khoản. Phxay phân chia vào tính toán thù CRC thực hiện phương pháp tính modulo-2. Modulo-2 thực chất là XOR hai số hạng.Giả sử đa thức chuỗi dữ liệu nên truyền là M(x):


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

*

*

Trong đó:am cùng an bởi 1 hoặc 0Độ dài chuỗi CRC bởi độ lâu năm đa thức sinh trừ 1 với thông qua số mũ lớn nhất của nhiều thức sinch cùng bằng n.Để tạo CRC, chuỗi tài liệu đề xuất 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, tương xứng cùng với vấ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) và mang số dư. Số dư đó là chuỗi CRC n bit.Bạn sẽ 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 đánh giá CRC phân chia cho đa thức sinh. Nếu số dư khác "0" thì dữ liệu dìm bị lỗi.Tách chuỗi tài liệu và chuỗi CRC riêng biệt. Chỉ đem chuỗi tài liệu chia đến đa thức sinc rồi rước số dư phnghiền phân tách đối chiếu cùng với chuỗi CRC. Nếu nhì chuỗi không giống nhau thì dữ liệu dấn bị lỗi.lấy một ví dụ về tính chất toán CRC-4, tương xứng với số bit kiểm soát là 4 bit, cùng với đa thức sinc nhỏng sau:x^4 + x + 1 (b10011)Chuỗi dữ liệu yêu cầu truyền tất cả 8 bit nlỗi sau:x^7 + x^5 + x (b1010_0010)Chuỗi tài liệu trước lúc phân tách 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 cách phân chia chuỗi dữ liệu bao gồm CRC cùng với đa thức sinh - ngôi trường hòa hợp không đúng 1 bit và trường phù hợp không nên 2 bit, số dư không giống 0​Sở dìm sẽ không còn phân phát hiện nay được lỗi tài liệu Lúc chuỗi dữ liệu bị không đúng với chuỗi CRC cũng sai trùng với cái giá trị CRC của chuỗi dữ liệu bị không nên. Tuy nhiên, tỷ lệ để xẩy ra đúng trường hợp này là thấp. Xác suất này càng rẻ Khi chuỗi CRC càng nhiều năm.


Xem thêm: Hướng Dẫn Tạo Tài Khoản Bitcoin Cực Đơn Giản Cho Người Mới Bắt Đầu

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


Xem thêm: Like New Và Brand New Là Gì, Cách Phân Biệt Máy Likenew Và Máy Brandnew

Đa thức sinh: x^4 + x + 1 tương ứng với vấn đề gán ctrl_poly_en = 4'b0011Dữ liệu dùng làm chế tác 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 quả bình chọn CRC là crc_error = 0 Chuyên ổn mục: Hỏi Đáp