Crc là gì

Pmùi hương pháp đánh giá parity đơn giản và dễ dàng nhưng mà độ tin yêu kém phải được ứng dụng cho các giao thức bao gồm tốc độ truyền tài liệu chậm rãi hoặc con số bit dữ liệu đề nghị chất vấn ít ví dụ như giao thức UART.CRC (Cyclic Redundancy Code) là 1 trong những phương pháp phổ cập tất cả độ tin tưởng cao hơn nữa các đối với thực hiện bi parity. CRC được áp dụng trong không ít giao thức bao gồm cân nặ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, tiếp xúc RF 15693, ...2. Lý thuyết về tính tân oán CRCGiá trị chuỗi bit đánh giá tuyệt chuỗi CRC là số dư của phxay chia của chuỗi bit dữ liệu cho một chuỗi bit đa thức sinch (Generator Polynomial). Đa thức sinh là số phân chia sẽ không giống nhau tùy từng từng giao thức qui định. Phép chia vào tính toán thù CRC sử dụng phương pháp tính modulo-2. Modulo-2 thực ra là XOR hai số hạng.Giả sử nhiều thức chuỗi dữ liệu yêu cầu truyền là M(x):

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

*

*

Trong đó:am với an bởi 1 hoặc 0Độ dài chuỗi CRC bởi độ dài đa thức sinh trừ 1 cùng thông qua số nón lớn nhất của nhiều thức sinch và bằng n.Để chế tác 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:
*

Như vậy, tương ứng với vấn đề dịch trái n bit chuỗi dữ liệu M(x).Cuối thuộc, chia T(x) mang lại G(x) và rước số dư. Số dư chính là chuỗi CRC n bit.Quý Khách đã xem: Crc là gì
*

Kiểm tra CRC được tiến hành bởi 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 chia mang lại nhiều thức sinch. Nếu số dư không giống "0" thì tài liệu dấn bị lỗi.Tách chuỗi tài liệu và chuỗi CRC riêng biệt. Chỉ rước chuỗi dữ liệu chia mang lại đa thức sinh rồi rước số dư phép phân chia so sánh 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 toán thù CRC-4, khớp ứng với số bit khám nghiệm là 4 bit, cùng với đa thức sinch như sau:x^4 + x + 1 (b10011)Chuỗi tài liệu nên truyền có 8 bit nhỏng sau:x^7 + x^5 + x (b1010_0010)Chuỗi dữ 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 chia chuỗi dữ liệu có CRC với đa thức sinch - trường phù hợp không đúng 1 bit cùng ngôi trường thích hợp không đúng 2 bit, số dư không giống 0​Bộ dấn sẽ không còn vạc hiện nay đượ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 đúng trùng với giá trị CRC của chuỗi dữ liệu bị không đúng. Tuy nhiên, Phần Trăm để xảy ra đúng trường thích hợp này là rẻ. Xác suất này càng rẻ khi chuỗi CRC càng dài.

Xem thêm: Pvp : Công Ty Cổ Phần Dầu Khí Thái Bình Dương, Pacific Petro

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