Phương pháp kiểm soát parity đơn giản mà lại độ tin tưởng kém nhẹm nên được ứng dụng cho các giao thức gồm vận tốc truyền tài liệu chậm chạp hoặc số lượng bit tài liệu phải khám nghiệm không nhiều ví như giao thức UART.CRC (Cyclic Redundancy Code) là một phương pháp phổ cập gồm độ tin cậy cao hơn các đối với áp dụng bi parity. CRC được vận dụng trong vô số nhiều giao thức gồm cân nặng tài liệu truyền to hoặc tốc độ truyền tài liệu cao như CAN, Ethernet, giao tiếp RF 15693, ...2. Lý tmáu về tính tân oán CRCGiá trị chuỗi bit kiểm tra tuyệt chuỗi CRC là số dư của phxay phân chia của chuỗi bit dữ liệu cho một chuỗi bit nhiều thức sinch (Generator Polynomial). Đa thức sinc là số chia sẽ khác biệt tùy theo từng giao thức chế độ. Phép phân chia vào tính toán thù CRC áp dụng cách tính modulo-2. Modulo-2 thực ra là XOR nhị số hạng.Giả sử nhiều thức chuỗi tài liệu yêu cầu truyền là M(x):

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

*

*

Trong đó:am và an bằng 1 hoặc 0Độ nhiều năm chuỗi CRC bởi độ dài nhiều thức sinch trừ 1 và ngay số mũ lớn nhất của nhiều thức sinc với bằng n.Để tạo CRC, chuỗi tài liệu yêu cầu truyền sẽ được không ngừng mở rộng thêm n bit về phía bên phải:
*

Như vậy, khớp ứng cùng với câu hỏi dịch trái n bit chuỗi tài liệu M(x).Cuối thuộc, chia T(x) đến G(x) cùng rước số dư. Số dư chính là chuỗi CRC n bit.quý khách hàng vẫn xem: Crc là gì
*

Kiểm tra CRC được tiến hành bằng 1 trong 2 biện pháp sau:Lấy chuỗi dữ liệu bao gồm cả những bit đánh giá CRC phân chia đến nhiều thức sinh. Nếu 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 tài liệu chia mang lại nhiều thức sinh rồi rước số dư phnghiền phân tách đối chiếu với chuỗi CRC. Nếu hai chuỗi không giống nhau thì dữ liệu nhấn bị lỗi.lấy một ví dụ về tính tân oán CRC-4, khớp ứng với số bit kiểm tra là 4 bit, cùng với nhiều thức sinc như sau:x^4 + x + 1 (b10011)Chuỗi tài liệu phải truyền 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 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 chia chuỗi tài liệu gồm CRC cùng với nhiều thức sinc - ngôi trường hòa hợp không đúng 1 bit cùng ngôi trường phù hợp sai 2 bit, số dư khác 0​Bộ nhận sẽ không phạt hiện được lỗi tài liệu lúc chuỗi tài liệu bị không nên và chuỗi CRC cũng không đúng trùng với mức giá trị CRC của chuỗi dữ liệu bị sai. Tuy nhiên, Xác Suất để xảy ra đúng ngôi trường hợp này là phải chăng. Xác suất này càng rẻ lúc chuỗi CRC càng nhiều năm.

Xem thêm: Kỹ Năng Tin Học Văn Phòng Tiếng Anh Là Gì, Tin Học Văn Phòng Tiếng Anh Là Gì

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