第13回LSIデザインコンテスト・イン沖縄 設計仕様書 - 5
5. 解読機(DECODER)の設計例
前セクションで説明したように、15ビットの符号をG1(x),G2(x)で割ったあまり、すなわちシンドロームを求め、そのシンドロームから表5を参照すれば、エラー訂正が可能となります。
以下図4にシンドローム計算回路の例を示します。2種類のシンドロームを計算するために、2つのリニアフィードバックシフトレジスタを並列に配置した構成にしました。リニアフィードバックレジスタのフリップフロップはt**と記載されており、最終的な計算結果はs**レジスタに現れます。図5はこの回路の動作波形図を示したもので、最初の11サイクルはスイッチ=Aであり、フィードバック動作をしています。これは最初の11サイクルは14次から4次までの次数であり、シンドロームの次数より大きいので、フィードバック処理を行っているからです。その後の4サイクルはスイッチ=Bであり、3次以下に対応しており、単なるexorによる加算を実施し、結果をS**シフトレジスタに転送しています。
先頭を示すためにSTART=1がアサートされ、STARTはt**のフリップフロップの出力をANDゲートにより’0’にすることで、初期状態からの計算開始を実現しています。図5からもわかるように、14サイクル目にs**レジスタにシンドロームが計算されます。
この値を用いて、表5に示すテーブルを検索すれば、訂正すべきエラー発生ビットが判明し、エラー訂正を行うことができます。
図4 シンドローム計算機
図5 シンドローム計算回路動作波形図
以下では、シンドローム計算の途中をEXCELを用いて示して説明をします。図6は黄色のセルに示される(1,0,0,0,0,0,0,1,1,1,0,1,0,0,0)の入力から、シンドローム計算を実行している例です。この入力にはエラーがなく、計算されたシンドローム(赤色のセル)の値はともに0となっています。
図7は黄色のセルに示される(1,0,0,1,0,0,0,1,1,1,0,1,1,0) の入力からシンドローム計算を実行している例です。この入力はr2(ビット位置2)とu3(ビット位置11)に2ビットのエラーがあります。シンドローム計算の結果(s10, s11,s12,s13)=(0101), (s20, s21,s22,s23)=(0110)が計算されています。この2つのシンドローム値より、表5を参照すると2,11となり2箇所を訂正することで、エラー訂正をすることができます。
上記で説明した、シンドローム計算回路の他に、表5に対応するテーブル回路(ROMや組み合わせ回路)や、入力データを記憶しておいて、エラー訂正としてビット反転を行う回路が必要です。
図6 シンドローム計算例(エラーなしの場合)
図7 シンドローム計算例(2ビットエラーの場合)
以下のこの計算を実行したEXCELファイルをリンクしておきます。自由にご活用ください。