Python

Pythonでbchlibを使ってECCを計算

2022年6月11日

ここでは、python-bchlib モジュールを使って BCH 符号の計算を行う方法を紹介します。

紹介する内容は、以下の環境で実行しています。

python v3.10.4
bchlib v0.14.0

 

python の bchlib とは

概要

python の bchlib は、BCH符号データの計算やデータのビット化け(bitflips)を修復する機能を提供する
python のモジュールです。GitHub で公開されています。

BCH 符号とは、データ化けが発生しやすい NAND メモリに書き込む ECC(Error Check and Correct)等、
誤り検出・訂正を行うことが可能なデータの符号技術です。

参考

NAND Flash メモリについては、「今さら聞けないNANDフラッシュ入門」をご覧ください。

 

環境構築

pip

 command
$ pip install bchlib

ソースコード

GitHub から任意のソースコード一式をダウンロードして、以下を実行します。

 command
$ pip install .

 

ライセンス

現在は、GPLv2(GNU General Public License v2.0)が適用されています。

 

bchlib を使って ECC を計算

ECC を計算するために、以下のメソッド・プロパティを使用します。

コンストラクタ:BCH(polynomial, t [, reverse])

bchlib を扱うオブジェクトを生成します。

polynomial 原子BCH符号の値
t 誤り訂正可能なビット数
reverse 扱うデータのビット反転(True or False)

メソッド:encode(data [, ecc])

入力した data の BCH 符号を行います。計算された ecc の値を返します。

data バイナリデータ
ecc 指定された ECC の値から計算

プロパティ:ecc_bytes

計算された ecc のバイト数を示します。

 

サンプルプログラム

 原子BCH符号
Polynomial には、0x25、0x43、0x83、0x11d、0x211、0x409、0x805、
0x1053、0x201b、0x402b、0x8003 などを使用することが多いようです。

 実行結果
(PY310_BCH) D:\bchlib\sample>python test.py
ecc size = 14
ecc = bytearray(b'h\x8bgd:_\xe9B\xfb\xdd\x08\x1e\xb4?')

 

こちらの記事もよく読まれています

  • この記事を書いた人
  • 最新記事
SANACHAN

SANACHAN

「生涯一エンジニア」を掲げ、大手グローバル企業でSE/PGとして8年勤め、キャリアアップ転職した現役のエンジニアです。世にあるメジャーな全プログラム言語(コボル除く)を自由に扱えます。一児の父。自分のため、家族のため、日々勉強してます。システムエンジニア、プログラミングに関する情報を蓄積している雑記帳です。

-Python
-, , ,