Crc Là Gì

Pmùi hương pháp soát sổ parity đơn giản nhưng độ tin cẩn kém buộc phải được áp dụng cho các giao thức có tốc độ truyền dữ liệu chậm rãi hoặc con số bit dữ liệu cần khám nghiệm ít ví như giao thức UART.CRC (Cyclic Redundancy Code) là 1 trong những phương pháp phổ biến tất cả độ tin yêu cao hơn nữa các đối với sử dụng bi parity. CRC được ứng dụng trong vô số giao thức tất cả cân nặng tài liệu truyền lớn hoặc tốc độ truyền tài liệu cao như CAN, Ethernet, tiếp xúc RF 15693, ...2. Lý tngày tiết về tính chất toán thù CRCGiá trị chuỗi bit bình chọn giỏi chuỗi CRC là số dư của phxay phân tách của chuỗi bit dữ liệu cho một chuỗi bit đa thức sinc (Generator Polynomial). Đa thức sinh là số phân tách đang không giống nhau tùy thuộc vào mỗi giao thức công cụ. Phnghiền phân chia vào tính tân oán CRC áp dụng cách tính modulo-2. Modulo-2 thực ra là XOR nhị số hạng.Giả sử đa thức chuỗi tài liệu buộc phải truyền là M(x):

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

*

*

Trong đó:am cùng an bởi 1 hoặc 0Độ nhiều năm chuỗi CRC bởi độ lâu năm đa thức sinh trừ 1 với ngay số nón lớn số 1 của nhiều thức sinc cùng bởi n.Để chế tạo ra CRC, chuỗi dữ liệu bắt buộc truyền sẽ được mở rộng thêm n bit về phía bên phải:
*

Như vậy, tương xứng với việc dịch trái n bit chuỗi tài liệu M(x).Cuối thuộc, phân tách T(x) cho G(x) và mang 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ởi một trong 2 cách sau:Lấy chuỗi tài liệu gồm cả những bit soát sổ CRC phân tách mang lại đa thức sinch. Nếu số dư không giống "0" thì tài liệu nhận 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 cho nhiều thức sinch rồi lấy số dư phnghiền chia đối chiếu với chuỗi CRC. Nếu nhì chuỗi khác nhau thì dữ liệu dìm bị lỗi.lấy ví dụ như về tính toán CRC-4, tương ứng với số bit soát sổ là 4 bit, cùng với nhiều thức sinc nlỗi sau:x^4 + x + 1 (b10011)Chuỗi dữ liệu đề xuất truyền gồm 8 bit như sau:x^7 + x^5 + x (b1010_0010)Chuỗi tài liệu trước khi phân chia sẽ được 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 có CRC với nhiều thức sinch - ngôi trường thích hợp không đúng 1 bit cùng ngôi trường vừa lòng sai 2 bit, số dư khác 0​Bộ thừa nhận sẽ không còn phân phát hiện tại được lỗi tài liệu Khi chuỗi dữ liệu bị không nên với chuỗi CRC cũng sai trùng với mức giá trị CRC của chuỗi tài liệu bị không đúng. Tuy nhiên, xác suất nhằm xảy ra đúng ngôi trường hợp này là thấp. Xác suất này càng thấp khi chuỗi CRC càng lâu năm.

Xem thêm: Meo Meo "Dằn Mặt" Helen Thanh Thảo Là Ai, Chân Dung Hotgirl Helen Thanh Thảo

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