例:Reed-Solomon Code Encoder/Decoder の C++ コード
弊社では、開発のために C++離散数学ライブラリを完備しております。 社内で使われている C++離散数学ライブラリには、ガロア体のクラスライブラリ Galois も含まれています。 このライブラリを使うと、リード・ソロモン符号の符号化と復号化は、次のように簡単に記述できます。
|
///////////////////////////////////////////////////////////////////// #include "Galois.h" void main() //
符号シンボル長、情報シンボル長、チェックシンボル数 //
単位元 //
RS符号の生成多項式 GaloisFieldPolynomial
i(GF256), c(GF256), e(GF256), r(GF256), s(GF256); for ( int t = 0; t <=
(GENERATOR_DEGREE/2); t++ ) {
///////////////////////////////////////////////////////////////////// i.Rand(INFO_BLOCK_LEN-1);
/////////////////////////////////////////////////////////////////////
s = 0;
/////////////////////////////////////////////////////////////////////
int el; // r = c + e;
/////////////////////////////////////////////////////////////////////
// 受信シンボル系列 r から、シンドローム多項式 s を求める
// エラー位置多項式 Lambda (およびその形式的微分dLambda)と
// エラー位置とエラー値を求める |
リード・ソロモン符号の符号器/復号器のような抽象的なディジタル回路を開発する際には、 VHDL記述とVHDLテストベンチをいきなり開発するのではなく、一般に、それらの作業と並行して、C++ の検査ソフトも開発して、 VHDL記述の中間テストをしたり、テストベンチで使用するテストパターンを生成したりしますが、その検査ソフトも、 上に示した例のように、簡単に開発できます。しかも、 C++離散数学ライブラリは C++ で記述されておりますので、 高速ですし、他のライブラリと組み合わせて使用することも容易です。
弊社では、並列・パイプライン処理にもとづくリード・ソロモン符号の符号器/復号器を、 極めて安価にご提供しておりますが、それは、C++離散数学ライブラリを始めとする開発ツールを充実させることによって、 開発期間を短縮しているからです。
わざわざIPコアを自社開発されたり、海外のIPコアベンダーから高価なIPコアを購入されているお客様には、 「どうしてこんな価格にできるのか?」とか「こんな価格で売られると困る!」とおっしゃる方もありますが、 弊社のC++離散数学ライブラリをお使いになれば、弊社のIPコアの価格に納得されることでしょう。
|
|