非常に限られた組み込みプラットフォームで QR コードを生成しようとしています。エラー訂正コードワードの生成を除いて、仕様のすべてがかなり単純に見えます。私は多くの既存の実装を見てきましたが、それらはすべて、特にガロア体に関して、私の頭を真っ直ぐに進む多項式数学の束を実装しようとしています。数学的複雑さとメモリ要件の両方で、私が見ることができる最も簡単な方法は、仕様自体にレイアウトされている回路の概念です。
それらの説明により、GF(256) 加算と GF(256) 乗算とラベル付けされた部分を除いて、これを実装できると確信しています。
彼らはこの助けを提供します:
QR コードの多項式演算は、ビット単位のモジュロ 2 演算とバイト単位のモジュロ 100011101 演算を使用して計算されます。これは 2^8 のガロア体で、100011101 は体の素数モジュラス多項式 x^8+x^4+x^3+x^2+1 を表します。
これは私にとってほとんどギリシャ語です。
だから私の質問はこれです:この種のガロア体演算で加算と乗算を実行する最も簡単な方法は何ですか? 両方の入力数値が 8 ビット幅で、出力も 8 ビット幅である必要があるとします。いくつかの実装では、これを支援するために 2 つのルックアップ テーブルで事前計算またはハードコーディングされていますが、それらがどのように計算されるか、またはこの状況でどのように使用されるかはわかりません。2 つのテーブルで 512 バイトのメモリ ヒットは避けたいと思いますが、実際には代替手段が何であるかによって異なります。この回路で単一の乗算と加算演算を行う方法を理解するのに本当に助けが必要です。