*

Phương pháp bình chọn parity đơn giản và dễ dàng tuy thế độ tin cẩn kém cần được ứng dụng cho các giao thức có tốc độ truyền tài liệu đủng đỉnh hoặc số lượng bit dữ liệu phải kiểm tra ít ví dụ như giao thức UART.CRC (Cyclic Redundancy Code) là một trong những cách thức thông dụng gồm độ tin yêu cao hơn nhiều đối với thực hiện bi parity. CRC được ứng dụng trong không ít giao thức tất cả cân nặng tài liệu truyền lớn hoặc vận tốc truyền tài liệu cao như CAN, Ethernet, giao tiếp RF 15693, ...2. Lý tmáu về tính chất toán thù CRCGiá trị chuỗi bit kiểm soát xuất xắc chuỗi CRC là số dư của phxay phân chia của chuỗi bit tài liệu cho 1 chuỗi bit nhiều thức sinch (Generator Polynomial). Đa thức sinh là số phân tách sẽ khác nhau tùy từng từng giao thức pháp luật. Phép phân chia vào tính tân oá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ử nhiều thức chuỗi dữ liệu yêu cầu truyền là M(x):
*
Đa thức sinh là G(x):
*
Trong đó:am với an bằng 1 hoặc 0Độ nhiều năm chuỗi CRC bởi độ lâu năm đa thức sinh trừ 1 và bằng số mũ lớn số 1 của nhiều thức sinh cùng bởi n.Để sinh sản CRC, chuỗi dữ liệu buộc phải truyền sẽ tiến hành mở rộng thêm n bit về phía bên phải:
*
Như vậy, tương ứng cùng với bài toán dịch trái n bit chuỗi tài liệu M(x).Cuối thuộc, chia T(x) đế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 thực hiện bằng 1 trong các 2 biện pháp sau:Lấy chuỗi dữ liệu bao gồm cả các bit soát sổ CRC phân chia cho đa thức sinc. Nếu số dư khác "0" thì tài liệu dìm bị lỗi.Tách chuỗi dữ liệu và chuỗi CRC riêng. Chỉ mang chuỗi tài liệu phân tách mang lại nhiều thức sinc rồi đem số dư phxay 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ì tài liệu nhận bị lỗi.ví dụ như về tính chất toán thù CRC-4, khớp ứng cùng với số bit bình chọn là 4 bit, cùng với nhiều thức sinch nlỗi sau:x^4 + x + 1 (b10011)Chuỗi dữ liệu đề xuất truyền có 8 bit nhỏng sau:x^7 + x^5 + x (b1010_0010)Chuỗi dữ 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 2. Tính chuỗi CRC​
Việc đánh giá CRC được thực hiện trên chuỗi dữ liệu có đi kèm CRC nlỗi sau:
*

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

Hình 4. Kiểm tra CRC bằng phương pháp phân tách chuỗi tài liệu bao gồm CRC với đa thức sinh - trường phù hợp sai 1 bit và ngôi trường thích hợp sai 2 bit, số dư không giống 0​
Sở nhấn sẽ không còn vạc hiện được lỗi dữ liệu Lúc chuỗi dữ liệu bị không nên với 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ị không nên. Tuy nhiên, Phần Trăm nhằm 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 dài.
*

Xét đa thức sinh 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: Melody Là Gì ? Một Số Thuật Ngữ Trong Âm Nhạc Bạn Cần Biết Melody Là Gì

*

So sánh công dụng cùng với phương pháp tính parity chẵn đang trình bày phía trên bạn có thể nhận biết sự tương đương. CRC-1 đó là phương pháp kiểm soát parity.3. Mạch nguyên tắc tính CRC
Xem lại những ví dụ vẫn trình bày bên trên phía trên, CRC được xem theo nguyên tắc:Nếu bit MSB của lần tính hiện giờ bởi 1 thì nó sẽ được XOR (modulo-2) với nhiều thức sinhNếu bit MSB của lần tính ngày nay bởi 0 thì nó sẽ không còn đổi
*

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

Xét mạch MUX, nếu bit MSB bằng 1 thì bit 0 XOR với một, giả dụ bit MSB bằng 0 thì tương xứng với Việc bit 0 XOR với 0 yêu cầu mạch MUX được loại bỏ để cầm cố bởi bit 1 XOR bit 0.
*

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

Xem thêm: Phần Phụ Lục Là Gì - Nghĩa Của Từ Phụ Lục Trong Tiếng Việt

*

Hình 12. Mạch nguyên tắc CRC-1 (bỏ FF đầu vào)​
Tại đây, bit CRC chỉ có 1 bit nên việc thêm một bit 0 nghỉ ngơi chuỗi tài liệu nguồn vào để tính CRC cũng ko quan trọng vì chưng cực hiếm như thế nào XOR với 0 cũng bởi 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 cho mạch tính CRC như sau:
*

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

Hai biểu lộ ctrl_en và chk_en sẽ tinh chỉnh công dụng tạo cùng kiểm tra CRC nhỏng sau, lúc bộc lộ ctrl_en tích cực và lành mạnh, tài liệu dùng để tạo ra CRC hoặc được đánh giá CRC vẫn bắt đầu dịch vào data_in. ctrl_en đã tích cực và lành mạnh 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ữ cực hiếm chuỗi CRC trong một chu kỳ 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 đánh giá không bị lỗiMạch bao quát của từng bit vào tkhô hanh ghi chứa cực hiếm CRC như sau:
*

Riêng bit 0 tất cả nguồn vào là data_in bao gồm mạch nlỗi sau:
*

lúc bao gồm có mang CRC_CHECKER, mạch đánh giá lỗi CRC sẽ được tạo nên nhỏng sau:
*

5.3 RTL code
Link download RTL code và testbench: CRC RTL codepass (nếu có): nguyenquanicd5.4 Kết trái mô phỏng
*

Đa thức sinh: x^4 + x + 1 tương xứng với bài toán gán ctrl_poly_en = 4'b0011Dữ liệu dùng để chế tạo ra 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 để chất vấn CRC: 1010_0110_1110. Trong đó, 4 bit LSB 1110 là chuỗi CRC => Kết quả chất vấn CRC là crc_error = 0