*

Phương thơm pháp đánh giá parity đơn giản tuy vậy độ tin yêu kỉm yêu cầu đượ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 kiểm tra ít ví như giao thức UART.CRC (Cyclic Redundancy Code) là 1 trong những phương thức phổ cập tất cả độ tin cẩn cao hơn các đối với thực hiện bi parity. CRC được vận dụng trong nhiều giao thức gồm trọng lượng tài liệu truyền mập hoặc tốc độ truyền tài liệu cao như CAN, Ethernet, tiếp xúc RF 15693, ...2. Lý ttiết về tính chất toán thù CRCGiá trị chuỗi bit chất vấn hay chuỗi CRC là số dư của phép phân tách của chuỗi bit tài liệu cho một chuỗi bit nhiều thức sinc (Generator Polynomial). Đa thức sinh là số phân tách vẫn khác biệt tùy vào từng giao thức phương pháp. Phép phân tách trong tính tân oán CRC áp 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 đề nghị truyền là M(x):
*
Đa thức sinch là G(x):
*
Trong đó:am với an bởi 1 hoặc 0Độ dài chuỗi CRC bằng độ dài nhiều thức sinch trừ 1 cùng bằng số nón lớn nhất của đa thức sinc với bởi n.Để chế tạo CRC, chuỗi tài liệu cần truyền sẽ được không ngừng mở rộng thêm n bit về phía mặt phải:
*
Như vậy, khớp ứng với việc dịch trái n bit chuỗi dữ liệu M(x).Cuối thuộc, phân chia T(x) mang đến G(x) cùng mang số dư. Số dư chính là chuỗi CRC n bit.

Bạn đang xem: Cyclic redundancy check (crc) là gì? định nghĩa và giải thích ý nghĩa

*
Kiểm tra CRC được tiến hành bằng 1 trong những 2 cách sau:Lấy chuỗi dữ liệu bao gồm cả những bit đánh giá CRC chia mang lại nhiều thức sinch. 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à chuỗi CRC riêng biệt. Chỉ lấy chuỗi tài liệu phân chia đến đa thức sinch rồi rước số dư phxay phân chia đối chiếu với chuỗi CRC. Nếu hai chuỗi không giống nhau thì dữ liệu dìm bị lỗi.lấy ví dụ như về tính chất toán CRC-4, khớp ứng cùng với số bit soát sổ là 4 bit, với nhiều thức sinc nlỗi sau:x^4 + x + 1 (b10011)Chuỗi tài liệu bắt buộc truyền có 8 bit như sau:x^7 + x^5 + x (b1010_0010)Chuỗi tài liệu trước lúc 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 2. Tính chuỗi CRC​
Việc kiểm soát CRC được triển khai trên chuỗi dữ liệu tất cả kèm theo CRC nhỏng sau:
*

Hình 3. Kiểm tra CRC - trường đúng theo dìm đúng, số dư bởi 0​
*

Hình 4. Kiểm tra CRC bằng cách phân chia chuỗi dữ liệu gồm CRC cùng với nhiều thức sinc - trường phù hợp sai 1 bit với trường phù hợp không nên 2 bit, số dư khác 0​
Bộ nhận sẽ không phân phát hiện tại được lỗi tài liệu Khi chuỗi dữ liệu bị không đúng cùng chuỗi CRC cũng không nên trùng với cái giá trị CRC của chuỗi tài liệu bị không nên. Tuy nhiên, Phần Trăm để xẩy ra đúng ngôi trường phù hợp này là tốt. Xác suất này càng rẻ khi chuỗi CRC càng dài.
*

Xét nhiều thức sinc g(x) = x + 1, đây là nhiều thức CRC-1, tính CRC mang lại chuỗi 8 bit b10100010 với chuỗi b10011111.

Xem thêm: Tích Tụ Và Tập Trung Tư Bản Là Gì ? Ý Nào Sau Đây Là Sai

*

So sánh kết quả cùng với phương thức tính parity chẵn sẽ trình bày phía trên chúng ta cũng có thể nhận biết sự tương đương. CRC-1 chính là cách thức đánh giá parity.3. Mạch nguyên lý tính CRC
Xem lại những ví dụ vẫn trình diễn bên trên phía trên, CRC được tính theo ngulặng tắc:Nếu bit MSB của lần tính hiện giờ bằng 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 hiện tại bằng 0 thì nó sẽ không còn đổi
*

Để thực hiện mạch CRC-1, ngoại trừ giải pháp XOR toàn bộ những bit tài liệu nguồn vào như sẽ trình diễn ở chỗ bên trên, bạn có thể triển khai dựa vào nguyên lý của bài toán phân tách nhiều thức nlỗi hình trên. Mạch nên 2 FF để lưu giữ quý giá sau những lần XOR cùng mạch sẽ dịch 1 bit sau các lần XOR để mang 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 sẽ điều khiển MUX lựa chọn tất cả XOR với đa thức sinc x+1 xuất xắc không? Tuy nhiên, sau mỗi chu kỳ luân hồi tính, bit MSB luôn luôn bị loại quăng quật bắt buộc mạch MUX và XOR của bit MSB là không quan trọng. Mạch được rút gọn như hình sau:
*

Xét mạch MUX, nếu bit MSB bằng 1 thì bit 0 XOR với 1, giả dụ bit MSB bằng 0 thì khớp ứng với Việc bit 0 XOR với 0 đề nghị mạch MUX được thải trừ nhằm cố kỉnh bằng bit 1 XOR bit 0.
*

Hình 11. Mạch nguyên tắc CRC-1 (quăng quật mạch MUX)​
Bit 0 chỉ dùng làm lưu lại quý giá bit dịch vào yêu cầu cũng hoàn toàn có thể sa thải.
*

Hình 12. Mạch nguyên lý CRC-1 (vứt FF đầu vào)​
Tại đây, bit CRC chỉ có 1 bit cho nên việc thêm một bit 0 làm việc chuỗi tài liệu đầu vào để tính CRC cũng ko cần thiết bởi vì quý giá như thế nào XOR với 0 cũng bởi bao gồm nó.
*

Hình 12. Mạch nguyên lý CRC-1​
Biểu diễn thường nhìn thấy đến mạch tính CRC nlỗi sau:
*

Hình 13. Mạch nguyên tắc CRC-1 cùng với biểu diễn thông thường​
Tương từ, xét lại mạch CRC-4 bao gồm đa thức sinh x^4 + x + 1, mạch nguyên tắc tính CRC-4 nlỗi sau (lưu ý, vị trí 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 bình thường nlỗi sau:Tại địa chỉ mà bit đa thức sinc bởi "0" thì chỉ cần phép dịch bitTại địa chỉ nhưng mà bit nhiều thức sinc bởi "1" thì được chèn cổng XORDữ liệu tiếp liền để tính CRC dịch từ MSB mang lại LSB cùng với chu kỳ dịch bằng độ nhiều năm tài liệu cùng độ dài quý hiếm CRC. ví dụ như, tài liệu 8 bit cần sử dụng CRC-4 thì chu kỳ dịch là 1gấp đôi cùng với 4 bit cuối là 4 bit 0 được chế tạo chuỗi dữ liệu.5.2 Phân tích module tạo thành với kiểm soát CRCCăn uống cđọng vào phần đa nhận xét trên, một xây đắp tiến hành tính CRC tổng quát được tiến hành nhỏng sau:Sử dụng một define CRC_CTRL_POLY để chất nhận được tạo thành bộc lộ input đầu vào điều khiển quý giá của nhiều thức sinc nếu như muốn. Chụ ý, độ rộng biểu đạt tinh chỉnh và điều khiển bằng số bit CRC vằ bằng số nón lớn nhất của đa thức sinch. lấy một ví dụ, trường hợp nhiều thức sinc là x^4 + x + 1 thì phạm vi biểu lộ là 4 bit cùng cực hiếm gán mang đến biểu thị điều khiển 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 sinh sản chức năng soát sổ CRCSử dụng một parameter CRC_GPW_MAX cho phép thông số kỹ thuật phạm vi đa thức sinc. Độ rộng đa thức sinc bằng số nón lớn nhất của nhiều thức sinch. lấy ví dụ như, giả dụ 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 nhiều thức sinh đang thực hiện nếu không sử dụng biểu đạt điều khiển và tinh chỉnh được tạo thành vị tư tưởng CRC_CTRL_POLY. lấy ví dụ như, còn nếu không khái niệm CRC_CTRL_POLY, nhiều thức sinch là x^4 + x + 1 thì CRC_GPW_MAX = 4 cùng giá trị CRC_POLY_VALUE = 4'b0011Sơ trang bị bộc lộ tiếp xúc của module CRC như sau:
*

Hai biểu lộ ctrl_en và chk_en đã tinh chỉnh chức năng tạo thành cùng bình chọn CRC nlỗi sau, Lúc biểu thị ctrl_en tích cực và lành mạnh, tài liệu dùng để làm tạo CRC hoặc được bình chọn CRC đang bước đầu dịch vào data_in. ctrl_en vẫn tích cực 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ẽ lưu lại quý giá 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 đang báo lỗi CRCcrc_error = 1 thì chuỗi soát sổ bị lỗi CRCcrc_error = 0 thì chuỗi khám nghiệm không trở nên lỗiMạch bao quát của từng bit vào tkhô giòn ghi đựng quý giá CRC nhỏng sau:
*

Riêng bit 0 có đầu vào là data_in gồm mạch nlỗi sau:
*

lúc có quan niệm CRC_CHECKER, mạch kiểm soát lỗi CRC sẽ được tạo ra nhỏng sau:
*

5.3 RTL code
Link download RTL code cùng 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 tương ứng cùng với việc gán ctrl_poly_en = 4'b0011Dữ liệu dùng để làm sinh sả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 để khám nghiệm 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
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 *