EringiTech’s blog

I am a mechanical engineer

【CRC】データ誤りチェックの簡易説明


はじめに

PC⇔マイコンで通信を行うときに,シリアル通信を行うことがあると思います.

シリアル通信の設定では,

などを設定すると思います.

では,パリティビットとは何でしょうか?

どうやらこれは,送りたいデータに対して1bit余分に付けるデータ?のことのようです.

では,なぜ付けるのでしょうか?

実は,データの送受信の際にデータが間違って伝達していないかを判断するために付けているようなのです.

こういうものを誤り検出というみたいです.

例えば,パリティビット(偶数)であれば,

データ:0b10010011

とすると,1が4つあるので偶数個あることとなります.なので,末尾に0を追加します.

送信データ:0b100100110

となります.では,受信データが何かしらの影響で,

受信データ:0b100110110

になったとします.このとき,1が5つあります.

偶数のパリティビットを選択しているので,受信データ内の1の個数は偶数個でないとおかしいです.

このように,データの誤りを検出することが出来ます.
(しかし,偶数個データ誤りがあると検出できないですが...また,誤り訂正もできない?)

そうなると,もっと高確率で誤りを検出したくなりますよね.

その手法がCRCというモノです.

今回はB4のはじめに作ったCRCに関しての資料を使って,CRCの概要を掴んでもらえたらと思います.


CRCの説明

CRC とは

CRC(Cyclic Redundancy Check)は、データ転送の際にデータの誤りを検出するためのエラーチェック手法の一つです.

主に通信プロトコルやデータストレージにおいて使用されます。

CRCは、特定のアルゴリズムを使用してデータに対してチェックサム(Checksum)値を生成し、この値を送信側と受信側で比較することによってデータの整合性を確認します。

説明資料

とういうことで,資料を示していきたいと思います.

CRCに関する資料です. (学部生.それも機械工ですので,内容に関してはご容赦ください.

今回の資料の目次です.

概要

理論

計算方法

参考文献

スライドでも示しますが,テキストベースのリンク等もご参照ください.

[1] 北大,情報理論第14回  https://prml.main.ist.hokudai.ac.jp/lecture/info-theory/info-theory14/

[2] 北大,情報理論pdf  https://prml.main.ist.hokudai.ac.jp/lecture/info-theory/info-theory14/

[3] 京大,情報理論https://www.ii.ist.i.kyoto-u.ac.jp/wordpress/wp-content/uploads/2015/03/pub-note-11-2015.pdf

[4] Embedded Technology Lab.,ハミング符号emb.macnica.co.jp

[5] ろぐれこーど,巡回冗長検査, dlrecord.hatenablog.com

[6] Qiita,CRCを理解する, qiita.com


おわりに

ご覧いただきありがとうございます.

もしよければ,X (Twitter)とnoteのフォローをお願いします.

twitter.com

  • note

はてなブログの内容をまとめております.

note.com