*

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

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

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

Hình 3. Kiểm tra CRC - trường thích hợp dìm đúng, số dư bằng 0​
*

Hình 4. Kiểm tra CRC bằng cách phân chia chuỗi dữ liệu có CRC cùng với nhiều thức sinch - trường hòa hợp không đúng 1 bit với ngôi trường hợp không đúng 2 bit, số dư không giống 0​
Sở dìm sẽ không phân phát hiện được lỗi tài liệu Lúc chuỗi dữ liệu bị không nên cùng 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 đúng. Tuy nhiên, xác suất nhằm xẩy ra đúng trường vừa lòng này là thấp. Xác suất này càng thấp Khi chuỗi CRC càng dài.
*

Xét đa thức sinch g(x) = x + 1, đó là nhiều thức CRC-1, tính CRC đến chuỗi 8 bit b10100010 và chuỗi b10011111.

Xem thêm: Danh Hài Trường Giang Bao Nhiêu Tuổi, Tiểu Sử Trường Giang, Tiểu Sử Danh Hài Trường Giang

*

So sánh hiệu quả cùng với phương thức tính parity chẵn đã trình diễn phía trên chúng ta có thể nhận biết sự tương đương. CRC-1 chính là phương thức bình chọn parity.3. Mạch nguyên tắc tính CRC
Xem lại các ví dụ vẫn trình bày bên trên đây, CRC được xem theo nguyên tắc:Nếu bit MSB của lần tính hiện thời bởi 1 thì nó sẽ tiến hành XOR (modulo-2) cùng với nhiều thức sinhNếu bit MSB của lần tính hiện tại bằng 0 thì nó sẽ không đổi
*

Để tiến hành mạch CRC-1, kế bên phương pháp XOR tất cả các bit dữ liệu đầu vào nhỏng sẽ trình bày ở đoạn trên, chúng ta cũng có thể tiến hành dựa trên nguyên tắc của Việc phân tách nhiều thức như hình trên. Mạch đề nghị 2 FF nhằm lưu lại quý giá sau các lần XOR với mạch sẽ dịch 1 bit sau các lần XOR để lấy 1 bit dữ liệu bắt đầu nlỗi hình sau:
*
Hình 9. Mạch nguyên tắc của CRC-1Tại hình bên trên, bit MSB đang tinh chỉnh MUX lựa chọn gồm XOR với đa thức sinc x+1 xuất xắc không? Tuy nhiên, sau từng chu kỳ tính, bit MSB luôn luôn bị loại vứt bắt buộc mạch MUX và XOR của bit MSB là ko cần thiết. Mạch được rút gọn gàng như hình sau:
*

Xét mạch MUX, nếu như bit MSB bằng 1 thì bit 0 XOR với 1, nếu như bit MSB bằng 0 thì tương xứng với việc bit 0 XOR với 0 đề xuất mạch MUX được sa thải nhằm cầm bởi bit 1 XOR bit 0.
*

Hình 11. Mạch nguyên tắc CRC-1 (bỏ mạch MUX)​
Bit 0 chỉ dùng để giữ cực hiếm bit dịch vào bắt buộc cũng hoàn toàn có thể thải trừ.
*

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 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ì cực hiếm như thế nào XOR cùng với 0 cũng bằng thiết yếu nó.
*

Hình 12. Mạch nguyên lý CRC-1​
Biểu diễn thường bắt gặp đến mạch tính CRC như sau:
*

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

Hai biểu thị ctrl_en và chk_en vẫn tinh chỉnh và điều khiển công dụng sản xuất và chất vấn CRC nlỗi sau, lúc biểu đạt ctrl_en tích cực, dữ liệu dùng làm tạo ra CRC hoặc được khám nghiệm CRC đã bắt đầu dịch vào data_in. ctrl_en đã lành mạnh và tích cực thông qua số bit buộc phải dịch bên trên data_in.Nếu chk_en = 0 thì Khi ctrl_en = 0, crc_seq sẽ giữ giá trị chuỗi CRC trong một chu kỳ luân hồi xung clockNếu chk_en = 1 thì Lúc ctrl_en = 0, crc_error đã báo lỗi CRCcrc_error = 1 thì chuỗi soát sổ bị lỗi CRCcrc_error = 0 thì chuỗi chất vấn không xẩy ra lỗiMạch tổng quát của từng bit trong tkhô hanh ghi chứa cực hiếm CRC như sau:
*

Riêng bit 0 bao gồm nguồn vào là data_in gồm mạch như sau:
*

Khi bao gồm định nghĩa CRC_CHECKER, mạch đánh giá lỗi CRC sẽ được tạo thành như sau:
*

5.3 RTL code
Link tải về RTL code và 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 xứ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 để bình chọn CRC: 1010_0110_1110. Trong số đó, 4 bit LSB 1110 là chuỗi CRC => Kết quả đánh giá 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 *