メディア

CRC(Cyclic Redundancy Check:巡回冗長検査)って何?Q&Aで学ぶマイコン講座(83)(1/3 ページ)

マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。今回は、初心者の方からよく質問される「CRC(巡回冗長検査)」についてです。

» 2023年08月08日 10時00分 公開

 マイコンユーザーのさまざまな疑問に対し、マイコンメーカーのエンジニアがお答えしていく本連載。

 今回は、初心者の方からよく質問される「CRC(巡回冗長検査)」についてです。

過去の質問一覧はこちら

 素朴な疑問から技術トラブルなどマイコンユーザーのあらゆる悩みに対し、マイコンメーカーのエンジニアが回答していく連載「Q&Aで学ぶマイコン講座」。

 今回は、初心者から多く寄せられる質問です。

 マイコンに「CRC計算ユニット」が搭載されていますが、そもそもCRCとは何ですか? 何の目的で、どのように使えばよいのでしょうか?

 CRCは、Cyclic Redundancy Check(巡回冗長検査)の頭文字を取った略語です。主にシリアル通信*1)で、送信データと受信データが同じかどうか確認する手法です。「CRC計算ユニット」は自動でCRC計算を行う機能です。

 最初に、通信の送信側と受信側で特定の値を決めます。この値を生成多項式と呼びます。送信側は、送信前に送信データを生成多項式で割り算します。すると、商と余りが求められます。この余りの値を送信データに付加して、送信します。

 受信側は、送られてきたデータから余りの部分を取り除き、生成多項式で割ります。この時に求められた余りと、データに付加された余りを比較して、一致していればデータを正常に受信できたと判断します。

 図1に、CRCの仕組みを示します。ここでは、二進数の値には添え字にbを付け、十進数の値にはdを付けて表します。この例では、送信データを8ビットデータで10110011b(179d)にします。生成多項式はCRC-4(x4+x1+x0)と呼ばれる値を使います。CRC-4は10011b(19d)です。

<strong>図1:CRCの仕組み</strong>[クリックで拡大] 図1:CRCの仕組み[クリックで拡大]

 10110011b(179d)を10011b(19d)で割ると、商が10001b(9d)で、余りが01000b(8d)です。送信側は、送信データに余りを付加して、送信します。受信側は送信データと余りを受信し、受信データを生成多項式で割ります。その計算の余りと、送られてきた余りが一致すれば、正常にデータが受信できたことになります。一致しない場合、送信側に再送要求するなどの何らかの処理を行います。

*1):Q&Aで学ぶマイコン講座(81) USARTって何?(非同期式/同期式のシリアルインタフェース)

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSフィード

公式SNS

EDN 海外ネットワーク

All material on this site Copyright © ITmedia, Inc. All Rights Reserved.
This site contains articles under license from AspenCore LLC.