(57)【要約】      （修正有）【課題】回路規模縮小が要求されるメモリ用途に適したエラー検出訂正システムを提供する。【解決手段】情報ビットと共に記憶すべきチェックビットを生成するエンコード部と、メモリセルアレイからの読み出しデータに基づいてシンドロームを計算するシンドローム計算部と、エラー探索方程式の係数をガロア体要素で表現するための計算を行うシンドローム要素計算部と、その計算結果に基づいてエラー探索方程式を解いてエラービット位置を求めるエラー探索部と、エラー訂正部とを備え、メモリセルアレイの読み出し及び書込みがｍビット並列で行なわれ、エラー検出訂正がＭビット（Ｍはｍの整数倍）のデータ単位で行なわれるものとして、エンコード部とシンドローム計算部とは、チェックビット生成及びシンドローム生成のデータビット選択を行うために、ｍビット並列のデータ入力を複数サイクル繰り返す時分割デコーダを共有する。【選択図】図２
2011165026.tif 000002
【特許請求の範囲】
【請求項１】
メモリセルアレイに記憶すべき情報ビットに基づいて、これと共に記憶すべきチェックビットを生成するエンコード部と、
前記メモリセルアレイからの読み出しデータに基づいてシンドロームを計算するシンドローム計算部と、
前記読み出しデータ対応のエラー探索方程式の係数をガロア体要素で表現するための計算を行うシンドローム要素計算部と、
前記シンドローム要素計算部の計算結果に基づいて、前記エラー探索方程式を解いてエラービット位置を求めるエラー探索部と、
前記読み出しデータのエラービット訂正を行なうエラー訂正部とを備え、
前記メモリセルアレイの読み出し及び書込みがｍビット並列で行なわれ、エラー検出訂正がＭビット（Ｍはｍの整数倍）のデータ単位で行なわれるものとして、前記エンコード部と前記シンドローム計算部とは、それぞれチェックビット生成及びシンドローム生成の表に従ってデータビット選択を行うために、ｍビット並列のデータ入力を複数サイクル繰り返す時分割デコーダを共有する
ことを特徴とするエラー検出訂正システム。
【請求項２】
前記エラー検出訂正システムは、ガロア体ＧＦ（２１３）を利用して４ビットまでのエラー訂正を行なうＢＣＨ−ＥＣＣシステムであって、
前記エンコード部は、５１２バイトの情報ビットｄ０〜ｄ４０９５を係数に持つ情報多項式ｆ（ｘ）をコード生成多項式ｇ１（ｘ）＝（ｘ＋１）ｍ１（ｘ）ｍ３（ｘ）ｍ５（ｘ）ｍ７（ｘ）ｍ９（ｘ）（但し、ｍ１（ｘ），ｍ３（ｘ），ｍ５（ｘ），ｍ７（ｘ），ｍ９（ｘ）は原始既約多項式）で割った剰余ｒ（ｘ）の係数で表されるチェックビットｂ０〜ｂ６５を生成するものであり、
前記シンドローム計算部は、前記メモリセルアレイからの読み出しデータに基づいてシンドロームＳ（＝Ｓ１），Ｓ３，Ｓ５及びＳ７を計算するものであり、
前記シンドローム要素計算部は、前記読み出しデータ対応の４次エラー探索方程式を、（ｘ−Ｘ１）（ｘ−Ｘ２）（ｘ−Ｘ３）（ｘ−Ｘ４）＝ｘ４＋Ｓｘ３＋Ｄｘ２＋Ｔｘ＋Ｑ＝０（但し、Ｘ１，Ｘ２，Ｘ３及びＸ４は未知数、Ｄ，Ｔ及びＱは解を求めるために導入したパラメータ）として、その係数をシンドロームで表現する計算を行うものであり、
前記エラー探索部は、前記シンドローム要素計算部の計算結果に基づいて、前記４次エラー探索方程式を因子方程式に分けて解いて、エラービット位置を求めるものである
ことを特徴とする請求項１記載のエラー検出訂正システム。
【請求項３】
前記エンコード部、前記シンドローム計算部、前記シンドローム要素計算部及び前記エラー探索部の演算のタイミング制御を行なう制御クロックを発生するクロック発生回路を更に備えた
ことを特徴とする請求項１記載のエラー検出訂正システム。
【請求項４】
前記シンドローム要素計算部及び前記エラー探索部は、
ガロア体ＧＦ（２１３）の要素に対してインデックスのバイナリ表現を用いて積計算を行なうための、１３ビットアダーにより構成されて時分割駆動される積計算回路を共有する
ことを特徴とする請求項２記載のエラー検出訂正システム。
【請求項５】
前記シンドローム要素計算部及び前記エラー探索部は、
ガロア体ＧＦ（２１３）の要素に対してインデックスのバイナリ表現を係数表現に変換する第１のコード変換デコーダと、このデコーダで変換された係数要素のパリティチェックを行う１３並列２入力パリティチェッカと、そのパリティチェック結果を再度インデックスに変換する第２のコード変換デコーダとを備えて構成される、時分割駆動される和計算回路を共有する
ことを特徴とする請求項２記載のエラー検出訂正システム。
【請求項６】
メモリ装置の読み出しデータから求められるシンドロームに基づいて、前記読み出しデータのエラー検出及び訂正を行なうために、時分割で繰り返し利用されてガロア体要素の和計算、積計算及びコード変換を行なう各種演算素子を含む演算回路部と、
前記演算回路部の演算素子配列方向の端部に配置された、その入出力データを保持するために時分割で繰り返し利用される複数のラッチを有するラッチ回路部と、
前記演算回路部とラッチ回路部を挟んで互いに並行するように配置された入力側データバス及び出力側データバスと、
前記演算回路部及び前記ラッチ回路部と、前記入力側データバス及び前記出力側データバスとの間にそれぞれ配置された転送ゲート回路部と、
前記入力側データバス及び出力側データバスの一端側に配置されて、前記演算回路部、ラッチ回路部及びデータ転送ゲート回路部のタイミング制御を行なうクロックを含むタイミング信号を発生するタイミング信号発生回路と、
を備えたことを特徴とするエラー検出訂正システム。
【請求項７】
前記演算回路部は、エラー数の判定の処理時間より少ない処理時間で、エラー探索の処理を行う請求項６記載のエラー検出訂正システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、メモリ装置に搭載されるエラー検出訂正システムに関する。
【背景技術】
【０００２】
メモリの微細化、大容量化が進むにつれて、個々のメモリセルのデータ保持特性は低下する。特に、メモリを多値化した場合には、データ保持特性は大きな問題になる。一方、ＮＡＮＤ型フラッシュメモリの次世代メモリとして期待される、相変化メモリや抵抗変化メモリではデータ状態の安定性に問題があり、これがデータ保持の信頼性確保を難しくする。
【０００３】
従って、メモリの読み出しデータについて実際に使用する前にエラーを検出して訂正するＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）システムを搭載することは重要な技術となる。フラッシュメモリチップ内に、或いはこれを制御するメモリコントローラ内にＥＣＣ回路を搭載することは、従来より提案されている（例えば、特許文献１参照）。
【０００４】
有限体ＧＦ（２ｎ）を利用するＢＣＨ−ＥＣＣシステムで２ビット以上のエラー訂正を行なう場合、エラー位置探索方程式の解を求めるのに有限体要素を逐次代入して方程式を満足させる要素を解として選択する方式では、演算時間が膨大になり、オンチップ化した場合にもメモリの読み出しや書き込み性能を大幅に低下させる。
【０００５】
これに対して本発明者は、先に、そのような逐次検索を行なうことなく、高速で４ビットエラーまで検出訂正することを可能としたオンチップＥＣＣ回路を提案している（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−１７３２８９号公報
【特許文献２】特開２００９−４３３８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
この発明は、回路規模縮小が要求されるメモリ用途に適したエラー検出訂正システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
この発明の一態様によるエラー検出訂正システムは、
メモリセルアレイに記憶すべき情報ビットに基づいて、これと共に記憶すべきチェックビットを生成するエンコード部と、
前記メモリセルアレイからの読み出しデータに基づいてシンドロームを計算するシンドローム計算部と、
前記読み出しデータ対応のエラー探索方程式の係数をガロア体要素で表現するための計算を行うシンドローム要素計算部と、
前記シンドローム要素計算部の計算結果に基づいて、前記エラー探索方程式を解いてエラービット位置を求めるエラー探索部と、
前記読み出しデータのエラービット訂正を行なうエラー訂正部とを備え、
前記メモリセルアレイの読み出し及び書込みがｍビット並列で行なわれ、エラー検出訂正がＭビット（Ｍはｍの整数倍）のデータ単位で行なわれるものとして、前記エンコード部と前記シンドローム計算部とは、それぞれチェックビット生成及びシンドローム生成の表に従ってデータビット選択を行うために、ｍビット並列のデータ入力を複数サイクル繰り返す時分割デコーダを共有する
ことを特徴とする。
【０００９】
この発明の他の態様によるエラー検出訂正システムは、
メモリ装置の読み出しデータから求められるシンドロームに基づいて、前記読み出しデータのエラー検出及び訂正を行なうために、時分割で繰り返し利用されてガロア体要素の和計算、積計算及びコード変換を行なう各種演算素子を含む演算回路部と、
前記演算回路部の演算素子配列方向の端部に配置された、その入出力データを保持するために時分割で繰り返し利用される複数のラッチを有するラッチ回路部と、
前記演算回路部とラッチ回路部を挟んで互いに並行するように配置された入力側データバス及び出力側データバスと、
前記演算回路部及び前記ラッチ回路部と、前記入力側データバス及び前記出力側データバスとの間にそれぞれ配置された転送ゲート回路部と、
前記入力側データバス及び出力側データバスの一端側に配置されて、前記演算回路部、ラッチ回路部及びデータ転送ゲート回路部のタイミング制御を行なうクロックを含むタイミング信号を発生するタイミング信号発生回路と、
を備えたことを特徴とする。
【発明の効果】
【００１０】
この発明によれば、回路規模縮小が要求されるメモリ用途に適したエラー検出訂正システムを提供することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態による４ＥＣ−ＢＣＨ−ＥＣＣシステムの構成を示す図である。
【図２】エンコード回路の構成を示す図である。
【図３】同エンコード回路の動作タイミングを示す図である。
【図４】同エンコード回路の制御クロック波形を示す図である。
【図５】同エンコード回路の制御クロック発生の様子を示す図である。
【図６】シンドローム計算回路の構成を示す図である。
【図７】同シンドローム計算回路の動作タイミングを示す図である。
【図８】同シンドローム計算回路の制御クロック波形を示す図である。
【図９】同シンドローム計算回路の制御クロック発生の様子を示す図である。
【図１０】１３ビット変換デコーダの構成を示す図である。
【図１１】同変換デコーダの動作タイミングを示す図である。
【図１２】有限体要素の和計算回路の構成を示す図である。
【図１３】有限体要素の積計算回路の構成和示す図である。
【図１４】有限体要素の計算手順を示す図である。
【図１５】エラー探索の排他的分岐条件を示す図である。
【図１６】ＳＥＣ部の構成を示す図である。
【図１７】ＳＥＣ部の制御クロック発生の様子を示す図である。
【図１８】ＥＳ部の構成を、４ＥＣ−Ｃａｓｅ１について示す図である。
【図１９】同ＥＳ部の制御クロック発生の様子を示す図である。
【図２０】ＥＳ部の構成を、４ＥＣ−Ｃａｓｅ２について示す図である。
【図２１】同ＥＳ部の制御クロック発生の様子を示す図である。
【図２２】ＥＳ部の構成を、４ＥＣ−Ｃａｓｅ３について示す図である。
【図２３】同ＥＳ部の制御クロック発生の様子を示す図である。
【図２４】ＥＳ部の構成を、４ＥＣ−Ｃａｓｅ４について示す図である。
【図２５】同ＥＳ部の制御クロック発生の様子を示す図である。
【図２６】ＥＳ部の構成を、３ＥＣの場合について示す図である。
【図２７】同ＥＳ部の制御クロック発生の様子を示す図である。
【図２８】ＥＳ部の構成を、２ＥＣの場合について示す図である。
【図２９】同ＥＳ部の制御クロック発生の様子を示す図である。
【図３０】ＳＥＣ部−その１のラッチ回路シェアリングを示すテーブルである。
【図３１】ＳＥＣ部−その２のラッチ回路シェアリングを示すテーブルである。
【図３２】ＥＳ部−Ｃａｓｅ１のラッチ回路シェアリングを示すテーブルである。
【図３３】ＥＳ部−Ｃａｓｅ２のラッチ回路シェアリングを示すテーブルである。
【図３４】ＥＳ部−Ｃａｓｅ３のラッチ回路シェアリングを示すテーブルである。
【図３５】ＥＳ部−Ｃａｓｅ４のラッチ回路シェアリングを示すテーブルである。
【図３６】ＥＳ部−３ＥＣのラッチ回路シェアリングを示すテーブルである。
【図３７】ＥＳ部−２ＥＣのラッチ回路シェアリングを示すテーブルである。
【図３８】図１６のＳＥＣ部構成についてラッチ回路を当てはめた図である。
【図３９】図１８のＥＳ部構成についてラッチ回路を当てはめた図である。
【図４０】図２０のＥＳ部構成についてラッチ回路を当てはめた図である。
【図４１】図２２のＥＳ部構成についてラッチ回路を当てはめた図である。
【図４２】図２４のＥＳ部構成についてラッチ回路を当てはめた図である。
【図４３】図２６のＥＳ部構成についてラッチ回路を当てはめた図である。
【図４４】図２８のＥＳ部構成についてラッチ回路を当てはめた図である。
【図４５】データバスと演算ブロックのレイアウト例を示す図である。
【図４６】ラッチ回路とバスの具体構成例を示す図である。
【図４７】１３ビットラッチの記号と構成例を示す図である。
【図４８】１３ビット変換デコーダの他の構成例を示す図である。
【図４９】同変換デコーダの制御クロックを示す図である。
【図５０】クロック発生回路の構成を示す図である。
【図５１】同クロック発生回路のブロックBlock_sの構成を示す図である。
【図５２】同クロック発生回路のブロックBlock_tの構成を示す図である。
【図５３】同クロック発生回路のクロック波形を示す図である。る
【発明を実施するための形態】
【００１２】
実施形態を説明する前に、この発明の提案趣旨を説明する。
【００１３】
オンチップで       ＥＣＣ回路をメモリに搭載する場合、その処理速度が問題にならない応用分野ではチェックビットなどが占める領域の冗長度をできるだけ減らし、更にデータ処理システムの回路規模をできるだけ減らす方法がメモリのコストを下げる観点から最優先の条件となる。
【００１４】
この発明ではこのような条件を考慮して、例えば５１２バイト単位で４ビットエラー訂正を行なうＢＣＨ−ＥＣＣシステム（以下、４ＥＣ−ＢＣＨ−ＥＣＣシステムという）を提案する。５１２バイト＝４０９６ビットのデータをカバーできるガロア体は、ＧＦ（２１３）＝ＧＦ（８１９２）であり、ゼロ元以外の有限体要素の数は８１９１であって、これ自体素数である。従ってこの発明では、５１２ビットをエラー訂正の単位とした例えば先の特許文献２等の提案におけるように、有限体要素数を素因数分解してエラー検出訂正の計算ステップを並列化して高速化する手法を利用することはできない。
【００１５】
そこでこの発明は、エラー訂正の高速化よりは、回路規模の縮小が要求されるメモリ用途に適したものとして、５１２バイト単位で４ビットエラー訂正を行なう４ＥＣ−ＢＣＨ−ＥＣＣシステムを提案するものである。この場合、最低限必要なチェックビット数は１３×４＝５２ビットで、メモリの冗長度はかなり小さくできる。
【００１６】
また、５１２バイトのデータを単位としてエラー訂正処理を行なうので一回の処理に必要なデータを転送する時間がある程度必要であり、ＥＣＣ処理をデータの入出力のリアルタイムで行なうことは難しい。そこで、データ転送に使われる時間くらいの時間内でＥＣＣ処理を行うものとし、部分計算回路を時分割多重化して使用することで回路規模を減らすことを考える。具体的に、計算処理の方法を見直し、数μ秒でデータ処理が出来る４ＥＣシステムを構成することを目指す。
【００１７】
回路規模縮小の観点からは、要素のインデックス表現を用いると要素の積の計算はアダーでの和となり規模を小さくすることができる。しかし、要素の和の計算をする際に多項式係数表現に変換して各係数のパリティチェックを行なうので、インデックスのバイナリ表現と係数表現との間の変換デコーダが必要になり、ガロア体の要素数が大きいとこのデコーダの規模が膨大となる。そこで、この変換を必要とする回路が出来るだけ少なくなるように時分割動作の構成を考える。
【００１８】
次に、従来公知の方法との関係で、この発明での４ＥＣ−ＢＣＨ−ＥＣＣシステムの方向性を少し具体的に明らかにする。エラーに対して、シンドローム生成を行なうことは、どの方法でも同様であり、基本的な処理は、シンドロームからエラー探索方程式Λ（ｘ）を構築し、次にΛ（ｘ）＝０を満たすガロア体の要素を見つけることになる。得られた解を訂正に利用するが、４ビットまでのエラー訂正でよければ、次の方法１と方法２が主要な方法となる。
【００１９】
方法１は、Euclid法或いはBerlekamp-Massey法として知られ、反復法アルゴリズムとして確立されている。Λ（ｘ）＝０の解探索は、ガロア体の要素を逐次代入して解となる要素を見つけるもので、これもChien search法として知られた反復アルゴリズムとして確立している。利用するガロア体の要素数が大きくなればそれだけ計算時間が増え、膨大な計算時間がこの探索に費やされる。
【００２０】
即ち方法1は、計算時間がオンチップ処理のネックとなりメモリの動作性能をかなり落とすことになる。これに対して、高速のエラー訂正処理を可能にするものとして提案されたのが、次の方法２である。
【００２１】
方法２は、Λ（ｘ）＝０を代数的な方法で解く。この際、ガロア体の要素をインデックス表示にして計算を行い、計算を簡略化する。シンドロームの多項式係数表現の結果をインデックス表示にして計算処理に利用するが、要素間の和を求める場合にインデックス表示から多項式係数表現に再び変換するためにこれらの変換のデコーダを必要とする。
【００２２】
またΛ（ｘ）＝０の解探索にもデコーダを利用して瞬時に解を求める。ガロア体の規模が小さい場合はデコーダの大きさも小さいが、一括して扱うデータを多くして行くとデコーダの回路規模は膨大になる。したがってこの方法２は、回路速度が重要で、一括処理のデータ規模が小さく使用されるガロア体の大きさが小さく出来、ＥＣＣ回路の規模があまり問題とはならない応用でのオンチップ処理に適している。
【００２３】
この発明は、メモリの容量が更に増大しセルも微細化し、不安定なセルが含まれるようになってきた場合に、ＥＣＣの処理速度よりは、回路規模の縮小が要求されるようなメモリ分野にふさわしいものとして、新たなＢＣＨ−ＥＣＣシステムを提案するものである。
【００２４】
先ず、実施の形態での４ＥＣ−ＢＣＨ−ＥＣＣシステムの概要を説明する。
【００２５】
・データのエンコーディング（Ｅｎｃｏｄｉｎｇ）
有限体ＧＦ（２１３）を用いた４ＥＣ−ＢＣＨ−ＥＣＣシステムでは一般的に、数１に示すように、４つの既約多項式ｍ１（ｘ），ｍ３（ｘ），ｍ５（ｘ）及びｍ７（ｘ）を用いて５２次のコード生成多項式ｇ（ｘ）を作る。
【００２６】
［数１］
ｍ１（ｘ）＝ｘ１３＋ｘ４＋ｘ３＋ｘ＋１
ｍ３（ｘ）＝ｘ１３＋ｘ１０＋ｘ９＋ｘ７＋ｘ５＋ｘ４＋１
ｍ５（ｘ）＝ｘ１３＋ｘ１０＋ｘ８＋ｘ７＋ｘ４＋ｘ＋１
ｍ７（ｘ）＝ｘ１３＋ｘ１０＋ｘ９＋ｘ８＋ｘ６＋ｘ３＋ｘ２＋ｘ＋１
ｇ（ｘ）＝ｍ１（ｘ）ｍ３（ｘ）ｍ５（ｘ）ｍ７（ｘ）
＝ｘ５２＋ｘ４９＋ｘ４６＋ｘ４５＋ｘ４３＋ｘ３０＋ｘ２９＋ｘ２８＋ｘ２７＋ｘ２６＋ｘ２５
＋ｘ２４＋ｘ２３＋ｘ２１＋ｘ２０＋ｘ１９＋ｘ１８＋ｘ１６＋ｘ１４＋ｘ１３＋ｘ１１＋ｘ９
＋ｘ７＋ｘ５＋ｘ３＋ｘ＋１
このコード生成多項式を用いると、情報ビットｄ０〜ｄ４０９５から、最低限１３×４（＝５２）のチェックビットｂ０〜ｂ５１を作ることができる。
【００２７】
このコード生成多項式が、４ビットエラー訂正に必要最低限の多項式である。但しこの場合、最小ハミング（Ｈａｍｍｉｎｇ）距離が９ビットであり、５ビットエラーなら誤訂正はないが、６ビットエラー以上では他のコードに訂正される誤訂正が生じる可能性がある。
【００２８】
そこでこの実施形態においては、コード化されたデータのハミング距離をより大きくして、誤訂正の確率を下げるために、数２に示すように、もう一つの既約多項式ｍ９（ｘ）と（ｘ＋１）を追加して、コード生成多項式ｇ１（ｘ）を作る。
【００２９】
［数２］
ｍ９（ｘ）＝ｘ１３＋ｘ１２＋ｘ８＋ｘ７＋ｘ６＋ｘ５＋１
ｇ１（ｘ）＝（ｘ＋１）ｇ（ｘ）ｍ９（ｘ）
＝ｘ６６＋ｘ６４＋ｘ６３＋ｘ６０＋ｘ５９＋ｘ５７＋ｘ５３＋ｘ５１＋ｘ４９＋ｘ４８＋ｘ４７
＋ｘ４５＋ｘ３９＋ｘ３８＋ｘ３７＋ｘ３４＋ｘ３１＋ｘ２４＋ｘ２３＋ｘ２１＋ｘ２０＋ｘ１９
＋ｘ１８＋ｘ１７＋ｘ１６＋ｘ１５＋ｘ１４＋ｘ１１＋ｘ１０＋ｘ７＋ｘ４＋ｘ３＋Ｘ２＋１
このコード生成多項式ｇ１（ｘ）を用いて、６６個のチェックビットｂ０〜ｂ６５を生成して、これを情報ビットと共に冗長ビットとして記憶する。
【００３０】
即ち、数３に示すように、情報多項式ｆ（ｘ）ｘ６６をコード生成多項式ｇ１（ｘ）で割って得られる剰余をｒ（ｘ）とする。この剰余多項式ｒ（ｘ）の６６個の係数ｂ０〜ｂ６５がチェックビットになる。
【００３１】
［数３］
ｆ（ｘ）ｘ６６＝ｑ（ｘ）ｇ１（ｘ）＋ｒ（ｘ）
ｒ（ｘ）＝ｂ６５ｘ６５＋ｂ６４ｘ６４＋…＋ｂ１ｘ＋ｂ０
このコード生成多項式ｇ１（ｘ）を用いると、最小ハミング距離が１２となり、８ビットエラー訂正までは誤訂正が生じないようにすることができる。
【００３２】
具体的にチェックビットを生成するエンコード処理は、データビットｄ０〜ｄ４０９５を、予め作られているチェックビットｂ０〜ｂ６５の表に従ってＸＯＲ論理で選択することにより行なわれる。
【００３３】
・データのデコーディング（Ｄｅｃｏｄｉｎｇ）
メモリから読み出したデータに対応する多項式ν（ｘ）は、エラー多項式ｅ（ｘ）を用いて数４に示すように表される。
【００３４】
［数４］
ν（ｘ）＝ｆ（ｘ）ｘ６６＋ｒ（ｘ）＋ｅ（ｘ）
＝ｑ（ｘ）ｇ１（ｘ）＋ｅ（ｘ）
エラー多項式ｅ（ｘ）の係数１の項がエラービットとなるので、これを求めるのがエラー検出である。
【００３５】
第1段階としてν（ｘ）をｍ１（ｘ），ｍ３（ｘ），ｍ５（ｘ），ｍ７（ｘ）でそれぞれ割って剰余をＳ１（ｘ），Ｓ３（ｘ），Ｓ５（ｘ），Ｓ７（ｘ）とすると、これはｅ（ｘ）の各々の剰余ともなっている。これらの剰余多項式がシンドローム（Ｓｙｎｄｒｏｍｅ）多項式であり、下記数５のようになる。
【００３６】
［数５］
ν（ｘ）≡Ｓ１（ｘ） ｍｏｄ ｍ１（ｘ）
→ｅ（ｘ）≡Ｓ１（ｘ） ｍｏｄ ｍ１（ｘ）
ν（ｘ）≡Ｓ３（ｘ） ｍｏｄ ｍ３（ｘ）
→ｅ（ｘ）≡Ｓ３（ｘ） ｍｏｄ ｍ３（ｘ）
ν（ｘ）≡Ｓ５（ｘ） ｍｏｄ ｍ５（ｘ）
→ｅ（ｘ）≡Ｓ５（ｘ） ｍｏｄ ｍ５（ｘ）
ν（ｘ）≡Ｓ７（ｘ） ｍｏｄ ｍ７（ｘ）
→ｅ（ｘ）≡Ｓ７（ｘ） ｍｏｄ ｍ７（ｘ）
４ビットエラーがｉ，ｊ，ｋ，ｌ次にあれば、エラー多項式ｅ（ｘ）は次の数６となる。
【００３７】
［数６］
ｅ（ｘ）＝ｘｉ＋ｘｊ＋ｘｋ＋ｘｌ
このエラー多項式の次数ｉ，ｊ，ｋ，ｌを求めればエラー位置すなわちどのデータビットがエラーであるかが確定する。
【００３８】
そこで、ｍ１（ｘ）＝０の根の指数に関するＧＦ（２ｎ）内での計算により、ｉ，ｊ，ｋ，ｌを求める。そのために、ｘｎをｍ１（ｘ）で割った剰余をｐｎ（ｘ）とすると、αｎ＝ｐｎ（α）となるので、下記数７のように、Ｘ１，Ｘ２，Ｘ３，Ｘ４及びシンドロームＳ１，Ｓ３，Ｓ５及びＳ７を定義する。
【００３９】
［数７］
Ｘ１＝ｐｉ（α）＝αｉ
Ｓ１＝Ｓ１（α）＝ασ１
Ｘ２＝ｐｊ（α）＝αｊ
Ｓ３＝Ｓ３（α３）＝ασ３
Ｘ３＝ｐｋ（α）＝αｋ
Ｓ５＝Ｓ５（α５）＝ασ５
Ｘ４＝ｐｌ（α）＝αｌ
Ｓ７＝Ｓ７（α７）＝ασ７
以上の定義から、次の数８の関係が求まる。
【００４０】
［数８］
ｅ（α）＝Ｘ１＋Ｘ２＋Ｘ３＋Ｘ４＝Ｓ１
ｅ（α３）＝Ｘ１３＋Ｘ２３＋Ｘ３３＋Ｘ４３＝Ｓ３
ｅ（α５）＝Ｘ１５＋Ｘ２５＋Ｘ３５＋Ｘ４５＝Ｓ５
ｅ（α７）＝Ｘ１７＋Ｘ２７＋Ｘ３７＋Ｘ４７＝Ｓ７
ここでＸ１，Ｘ２，Ｘ３，Ｘ４のインデックスがそれぞれｉ，ｊ，ｋ，ｌでＳ１，Ｓ３，Ｓ５，Ｓ７のインデックスがそれぞれσ１ (=σ)，σ３，σ５，σ７である。
【００４１】
第２段階として、数９に示す、Ｘ１，Ｘ２，Ｘ３，Ｘ４を未知数とするＧＦ（２１３）内の多項式ΛＲ（ｘ）を考える。
【００４２】
［数９］
ΛＲ（ｘ）＝（ｘ−Ｘ１）（ｘ−Ｘ２）（ｘ−Ｘ３）（ｘ−Ｘ４）
＝ｘ４＋Ｓｘ３＋Ｄｘ２＋Ｔｘ＋Ｑ
数９の各係数のパラメータＳ，Ｄ，Ｔ，Ｑは下記数１０に示すように、Ｘ１，Ｘ２，Ｘ３，Ｘ４の基本対称式となる。
【００４３】
［数１０］
Ｓ＝Ｓ１＝Ｘ１＋Ｘ２＋Ｘ３＋Ｘ４
Ｄ＝Ｘ１Ｘ２＋Ｘ２Ｘ３＋Ｘ３Ｘ４＋Ｘ４Ｘ１＋Ｘ１Ｘ３＋Ｘ２Ｘ４
Ｔ＝Ｘ１Ｘ２Ｘ３＋Ｘ２Ｘ３Ｘ４＋Ｘ４Ｘ１Ｘ２
Ｑ＝Ｘ１Ｘ２Ｘ３Ｘ４
これらの係数パラメータとシンドロームである対称式Ｓ１＝Ｓ，Ｓ３，Ｓ５，Ｓ７の間には関係があって式で表すことができ、下記数１１の連立方程式を構成する。
【００４４】
［数１１］
ＳＤ＋Ｔ＝ζ
（ζ＋Ｓ３）Ｄ＋Ｓ２Ｔ＋ＳＱ＝η
（η＋Ｓ５）Ｄ＋Ｓ４Ｔ＋（ζ＋Ｓ３）Ｑ＝θ
但し、ζ＝Ｓ３＋Ｓ３，η＝Ｓ５＋Ｓ５，θ＝Ｓ７＋Ｓ７とする。
【００４５】
Ｄ,Ｔ,Ｑをシンドロームで表現するために上の３元連立方程式を解く。係数行列式をΓとして、下記数１２のように解くことができる。
【００４６】
［数１２］
Γ＝Ｓ３ζ＋Ｓη＋ζ２
ΓＤ＝Ｓ３η＋Ｓ２ζ２＋Ｓθ＋ζη
ΓＴ＝Ｓ４η＋Ｓ２θ＋ζ３
ΓＱ＝Ｓ４ζ２＋Ｓ２ζη＋ζθ＋η２
ここで、Γ≠０ならば、Ｄ，Ｔ，Ｑは確定し、次の数１３のエラー探索方程式を解く過程に入る。
【００４７】
［数１３］
ΛＲ（ｘ）＝ｘ４＋Ｓｘ３＋Ｄｘ２＋Ｔｘ＋Ｑ＝０
Γ＝０の場合は、連立方程式の解法から未知数のひとつＱを任意に設定してＤとＴを求めることが出来る。
【００４８】
４エラーが生じていればＳ，Ｄ，Ｔ，Ｑの間に任意関係はありえないので、この場合は５エラー以上が生じたか、３エラー以下の場合となる。以下、解探索の分岐条件に従って、４エラー、３エラー、２エラー、１エラーの解を求め、或いは５エラー以上であることの警告を出し、或いはエラーなし等の信号を出す。
【００４９】
４ＥＣ−ＢＣＨ−ＥＣＣシステムの概要
図１は、４ＥＣ−ＢＣＨ−ＥＣＣシステムの概略構成を示す。記憶すべきデータに対応する情報多項式ｆ（ｘ）に基づいて、チェックビットを生成する剰余多項式ｒ（ｘ）を求めるのが、エンコード部２１である。情報ビットはデータビットの構成によって適宜必要な次数を選んでその係数のみを用い、使用しない係数は固定した０または１データとして扱うことによって、固定ビットをメモリに記憶させずにメモリ容量に合ったシステムを構成する。
【００５０】
前述のように、ｆ（ｘ）ｘ６６をコード生成多項式ｇ１（ｘ）で割った剰余をｒ（ｘ）として多項式ｆ（ｘ）ｘ６６＋ｒ（ｘ）の係数をデータビットとしてメモリコア２２に書き込む。ここでメモリコア２２は、メモリセルアレイとデコーダ回路及びセンスアンプ回路を含むもので、具体的には、ＮＡＮＤ型フラッシュメモリ、抵抗変化型メモリ（Ｒｅｓｉｓｔｉｖｅ  ＲＡＭ：ＲｅＲＡＭ）、相変化メモリ（Ｐｈａｓｅ  Ｃｈａｎｇｅ  ＲＡＭ：ＰＣＲＡＭ）等の大容量メモリであり、ビットエラーが避けられない構成のものである。
【００５１】
データ読み出しに関しては、メモリコア２２から読み出したデータは数４に示した８１９０次のデータ多項式ν（ｘ）の係数として扱われる。
【００５２】
この読み出しデータ多項式ν（ｘ）に基づいて、シンドロームＳ（＝Ｓ１），Ｓ３，Ｓ５，Ｓ７を求めるのが、シンドローム計算部２３である。ν（ｘ）をｍ１（ｘ），ｍ３（ｘ），ｍ５（ｘ），ｍ７（ｘ）でそれぞれ割った剰余からシンドロームＳ，Ｓ３，Ｓ５，Ｓ７を得る。
【００５３】
以後の計算においては、シンドロームＳ，Ｓ３，Ｓ５，Ｓ７はインデックスで表わして、アダー回路とパリティチェッカが用いられる。即ち、インデックスの積は、アダー回路でバイナリ数の足し算として計算する。インデックスの和は、インデックスをデコードして有限体要素の１２次の多項式として表して、各次数の係数のパリティチェックの結果として和の要素の多項式を得て、これを再度インデックスにデコードする。
【００５４】
シンドロームが得られた後のシンドローム要素の演算を行なうのが、シンドローム要素計算（ＳＥＣ；Syndrome Element Calculation)部２４である。ここでは、数１３に示すエラー探索方程式を構築するために必要なシンドローム要素の演算を行い、演算結果はレジスタ（図示しない）に保持される。
【００５５】
シンドローム要素計算部２４で得られた量をもとにエラー位置探索を行なうのが、エラー探索（ＥＳ：Error Search）部２５である。これらの計算過程を制御するのがクロック発生器２７で、外部クロックＣＬから分周されたクロックｃｋ０〜ｃｋ１７が用いられる。
【００５６】
シンドローム要素計算部２４とエラー探索部２５とは、データをやり取りして互いの回路ブロックをマルチプレックスして使用し、回路規模を小さくするようにしている。従って、図ではシンドローム要素計算部２４とエラー探索部２５とは両方向の矢印で結ばれている。
【００５７】
エラー探索部２５で得られた結果は、エラー訂正（ＥＣ：Error Correction）部２６によってメモリから読み出されたデータの修正に利用される。エラー訂正部２６では外部からメモリに入れられた情報データ多項式ｆ（ｘ）が復元され、情報データとして出力される。
【００５８】
ここまで、実施形態の４ＥＣ−ＢＣＨ−ＥＣＣシステムの概要を説明した。次にこのＥＣＣシステムにおいて用いられる各種計算回路の構成法を説明する。
【００５９】
エンコード回路
図２は、エンコード部２１で用いられる、チェックビット生成のためのエンコード回路の構成を示している。このエンコード回路は、データビットｄ０〜ｄ４０９５について、予め作成されたエンコードのテーブルに従ってＸＯＲ演算を行なって６６個のチェックビットｂ０〜ｂ６５を選択生成する。この実施の形態での基本方針は、データの転送まとまりに合わせて回路を時分割で動作させて、回路規模を小さくすることにある。
【００６０】
即ちこのエンコード回路は、６４クロックサイクルで時分割動作する時分割デコーダ(ｔｉｍｅ  ｓｈａｒｉｎｇ  ｄｅｃｏｄｅｒ：ＴＳＣ）３１と、各タイミングでのデコード結果のパリティチェックを行なう並列パリティチェック回路（ｐａｒｒａｌｌｅｌ  ｐａｒｉｔｙ  ｃｈｅｃｋｅｒ：ＰＰＣ）３２及び直列パリティチェック回路（ｓｅｒｉａｌ  ｐａｒｉｒｙ  ｃｈｅｋｅｒ：ＳＰＣ）３３とを備える。
【００６１】
なおこれらの時分割デコーダ３１、並列パリティチェック回路３２及び直列パリティチェック回路３３は、エンコードのみならず、後に説明するようにシンドローム計算回路でも共用される。従ってモード選択信号／ｅｎと／ｄｅによってモードを変えられるようにしている。図２は、エンコード回路であるので、／ｅｎ＝“Ｌ”，／ｄｅ＝“Ｈ”である。
【００６２】
メモリセルアレイとのデータ転送は８バイト単位すなわち６４ビットのまとまりで行われるものとする。この６４ビットデータのまとまりごとにデータを処理してチェックビットを生成することによって、５１２バイト一括で処理してチェックビットを作る場合に比べて、回路規模を６４分の1程度に小さく出来ることになる。
【００６３】
チェックビットを求めるには、データビットｄ０〜ｄ４０９５を各チェックビットｂ０〜ｂ６５のエンコードの表にしたがって選択して、ＸＯＲをとれば計算が出来る。このＸＯＲ演算の選択を時分割で行うのが、時分割デコーダ３１である。即ち、サイクルτ０で回路の初期状態をセットして、６４ビット並列入力のＸＯＲ演算を、図３及び図４に示す６４サイクルτ1〜τ６４繰り返すことになる。
【００６４】
デコーダ数は、各チェックビットｂｍごとに1サイクルのデータビット数の６４個あるので、全部でサイクル数ｍの範囲６６（０≦ｍ≦６５)との積である４１６０個ある。
【００６５】
即ち時分割デコーダ３１は、各クロックサイクルでデータビットｄｉをソースに受け、クロックをゲートに受けて、データビット選択を行うデコード用ＰＭＯＳトランジスタＰ１を有する。サイクルτ1でデータビットｄｉ（０≦ｉ＝ｎ≦６３)を受け取り、データｄｉが“１”でサイクルτ1で“Ｌ”となるクロック信号／τ1がゲートに入るＰＭＯＳトランジスタＰ１があれば、データノードｄｉと出力ノードｄｉ（ｂｍ）間のパスがオンになり、ｄｉ＝ｄｉ（ｂｍ）、そうでなければｄｉ（ｂｍ）＝“０”となる。
【００６６】
ここで、ｄｉは、サイクルクロックτ1に同期して“Ｌ”からデータビットにしたがって“Ｈ”に変化するものとする。エンコードでは前述のようにモード選択信号／ｅｎが入るモード選択ＰＭＯＳトランジスタＰ２により、ｄｉとｄｉ（ｂｍ）間のパスが成立する。
【００６７】
一般に、サイクルτｋ(１≦ｋ≦６４)ではデータビットｄｉ｛ｉ＝ｎ＋６４（ｋ−１）；０≦ｎ≦６３｝を受け取り、データｄｉが“１”でサイクルτｋで“Ｌ”となるクロック信号／τｋがデータノードｄｉと出力ノーｄｉ（ｂｍ）間に存在するＰＭＯＳトランジスタＰ１のゲート信号になっていれば、ｄｉ＝ｄｉ（ｂｍ）となり、そうでなければｄｉ（ｂｍ）＝“０”となる。ｄｉ＝“０”のときは、ＮＭＯＳトランジスタＮにより、出力ノードｄｉ（ｂｍ）は“Ｌ”（＝“０”）となる。
【００６８】
このようにして、各サイクルでデータビットを選択するかどうかは、クロック信号／τｋが入るＰＭＯＳトランジスタＰ１の有無によって決まる。
【００６９】
図２の時分割デコーダ３１の場合、エンコード（即ちチェックビット生成）ではクロックサイクルτ１，τ４，τ５，τ６，…でデータビットが選択される。なおτ５は、エンコードやデコードに関係なくデータビットが選択される場合であり、デコード用ＰＭＯＳトランジスタＰ１のドレインが直接出力ノードｄｉ（ｂｍ）に接続されている。即ちモード選択信号／ｅｎや／ｄｅには影響されずに、入出力間のパスが形成される。
【００７０】
時分割デコーダ３１で選択されたデータビットｄｉ（ｂｍ）は、次に各サイクルごとに、並列パリティチェック回路３２にｎ＝０〜６３に対応した６４ビット並列に入力される。並列パリティチェック回路３２は、チェックビットｂ０〜ｂ６５のそれぞれに存在する６６個のパリティチェッカラダーＰＣＬによって、６４ビットのデータのパリティすなわちＸＯＲを一気に求める。
【００７１】
毎サイクルで得られるパリティは直列パリティチェック回路３３により、前サイクルまでのパリティ結果と積算される。即ち直列パリティチェック回路３３は、パリティ結果を保持するラッチＬＴと、その保持データとのＸＯＲ論理をとるゲートＸＯＲとを有する。
【００７２】
ラッチＬＴは、最初のクロックサイクルτ０ですべて“０”にリセットされ、毎サイクルごとに並列パリティチェック回路３２の出力と保持データとのＸＯＲをとり直す。これによってすべてのサイクルが終了すると保持されたデータはそれぞれチェックビットｂ０〜ｂ６５となる。
【００７３】
図５は、クロックサイクルとクロック信号の関係を示している。一定の周期で発生されるクッロクＣＬと信号ｅｎとからサイクルクロックτなど作られる。τ６４でエンコードサイクルが終了する。
【００７４】
シンドローム計算回路
図６は、図１のシンドローム計算部２３に用いられる、シンドローム計算回路である。即ちメモリセルアレイに保持されたデータビットとチェックビットからシンドロームＳ１，Ｓ３，Ｓ５及びＳ７の多項式係数表現を求める。各シンドロームの係数ビットは１３ビットずつで計４×１３＝５２ビットとなるので、先のエンコード回路がそのまま使用できる。エンコードとデコードはメモリの動作上タイミングが異なるのが一般的であるので共用が可能である。
【００７５】
コード化されて記憶されたデータ処理の単位は、５１２バイトにチェックビット６６ビットが加わり、メモリセルアレイからのデータは６４ビットごとに転送されるので、これを並列入力として、図７及び図８に示すように、６６クロックサイクルで処理してシンドロームを計算する。
【００７６】
時分割デコード回路３１は、前述のようにモード選択信号／ｅｎと／ｄｅでモードを変えられるようになっており、いまの場合／ｅｎ＝“Ｈ”，／ｄｅ＝“Ｌ”でシンドローム計算回路となる。回路はサイクルτ０で初期状態に設定され、６６サイクルτ１〜τ６６繰り返しという時分割動作を行う。
【００７７】
シンドロームは、前述のように既約多項式ｍ１（ｘ），ｍ３（ｘ），ｍ５（ｘ），ｍ７（ｘ）の剰余として求められるもので、データビットｄ０〜ｄ４０９５とチェックビットｂ０〜ｂ６５の各ビットを各シンドロームＳ１，Ｓ３，Ｓ５，Ｓ７の係数ビットの関係の表にしたがって選択してＸＯＲをとれば計算出来る。このデータ選択を６６サイクルの時分割動作で行うのが、時分割デコーダ３１である。
【００７８】
このデコーダの数はシンドロームの係数ビットＳαmごとに1サイクルのデータビット数６４個あるので、これとシンドロームの係数ビットＳαmの数４×１３＝５２との積である３３２８個必要であり、先のエンコード回路を構成する４１６０デコーダの一部を用いることで対応できることになる。
【００７９】
具体的には、ｂ０〜ｂ５１を求めるエンコード回路部分を使用すれば足りる。時分割デコーダ３１の動作はエンコード回路の場合と全く同じであるが、データビットと出力ビットとの関係が異なるのでこれを説明する。
【００８０】
即ちシンドローム計算回路では、サイクルτ１でデータビットｄｉ（０≦ｉ＝ｎ≦６３）を受け取り、データｄｉが“１”でサイクルτ１で“Ｌ”となるクロック信号／τ１が、データノードｄｉと出力ノードｄｉ（Ｓαm）間に存在するＰＭＯＳトランジスタＰ１のゲート信号になっていれば、ｄｉ＝ｄｉ（Ｓαm）となり、そうでなければｄｉ（Ｓαm）＝“０”となる。
【００８１】
一般に、サイクルτｋ（１≦ｋ≦６４）ではデータビットｄｉ｛ｉ＝ｎ＋６４（ｋ−１）；０≦ｎ≦６３｝を受け取り、データｄｉが“１”でサイクルτｋで“Ｌ”となるクロック信号／τｋがデータノードｄｉと出力ノードｄｉ（Ｓαm）間にＰＭＯＳトランジスタが存在してそのゲート信号になっていれば、ｄｉ＝ｄｉ（Ｓαm）となり、そうでなければｄｉ（Ｓαm）＝“０”となる。
【００８２】
サイクルτ６５とτ６６は特殊で、ｄｉ’＝ｂｉ’−４０９６でありまたｉ’≧４１６２ではｄｉ’＝０となるように、デコーダへの入力データビットを設定する。
【００８３】
図の時分割デコーダ３１の場合、クロックサイクルτ２，τ３，τ５，…でデータビットが選択される。なおτ５はエンコードやデコードに関係なくデータビットが選択される場合である。
【００８４】
データビット選択後、エンコード回路と同様に、並列パリティチェック回路３２及び直列パリティチェック回路３３により、シンドローム係数ビット（Ｓ１）０，（Ｓ１）１，…，（Ｓ７）１２が求まる。
【００８５】
図９は、シンドローム計算回路でのクロックサイクルとクロック信号の関係を示している。一定の周期で発生されるクッロクＣＬとスタート信号s_startからサイクルクロックτなど作られ、τ６６でシンドロームサイクルが終了する。
【００８６】
シンドローム要素計算回路
次に、シンドローム要素計算部２４に用いられる計算回路について説明する。５１２バイトのデータをＥＣＣ処理の単位データとする場合はガロア体ＧＦ（２１３）を使う。このガロア体はゼロ元を除いた要素数が素数なので因数分解を用いた表現インデックスを用いた計算方法は利用できない。そこでインデックスをそのまま用いる方法となるが、インデックスの総数は８１９１であるので、１３ビットのバイナリ表現を用いることになる。
【００８７】
従来提案の計算方法を用いてＥＣＣ処理を行う場合、要素間の積はインデックスの和で、要素間の和は係数表現のＸＯＲ演算で行うので、係数表現とインデックスのバイナリ表現間の変換を行うことが必要になる。このインデックスのバイナリ表現と係数表現との間の変換のためのデコーダ回路の規模はかなり大きくなるが、この変換回路に関係した部分の説明を行う。
【００８８】
係数表現はＧＦ（２）上の１２次の多項式ｐｎ（ｘ）のｊ次の項の係数Ｐnjの１３ビットで表される。インデックスはｐｎ（ｘ）とｍ１（ｘ）に関して合同なｘｎの指数ｎのことであり、ｎのバイナリ展開の２ｊの係数Ｂnjの１３ビットで表される。
【００８９】
係数表現→インデックスのバイナリ表現のデコーダでは、数１４に示すように入力がIi＝Ｐniであり、出力がＯi＝Ｂniである。
【００９０】
［数１４］
Ｉｎｐｕｔ：  Ｉｉ＝Ｐｎｉ
ｐｎ（ｘ）＝Ｐｎ１２ｘ１２＋Ｐｎ１１ｘ１１＋Ｐｎ１０ｘ１０＋Ｐｎ９ｘ９＋Ｐｎ８ｘ８＋Ｐｎ７ｘ７＋Ｐｎ６ｘ６＋Ｐｎ５ｘ５＋Ｐｎ４ｘ４＋Ｐｎ３ｘ３＋Ｐｎ２ｘ２＋Ｐｎ１ｘ＋Ｐｎ０
Ｏｕｔｐｕｔ：  Ｏｉ＝Ｂｎｉ
ｘｎ≡ｐｎ（ｘ） ｍｏｄ ｍ１（ｘ）
ｎ＝Ｂｎ１２２１２＋Ｂｎ１１２１１＋Ｂｎ１０２１０＋Ｂｎ９２９＋Ｂｎ８２８＋Ｂｎ７２７
＋Ｂｎ６２６＋Ｂｎ５２５＋Ｂｎ４２４＋Ｂｎ３２３＋Ｂｎ２２２＋Ｂｎ１２＋Ｂｎ０
インデックスのバイナリ表現→係数表現のデコーダでは、数１５に示すように、入力がIｉ＝Ｂniであり、出力がＯi＝Ｐniである。
【００９１】
［数１５］
Ｉｎｐｕｔ：  Ｉｉ＝Ｂｎｉ
ｘｎ≡ｐｎ（ｘ） ｍｏｄ ｍ１（ｘ）
ｎ＝Ｂｎ１２２１２＋Ｂｎ１１２１１＋Ｂｎ１０２１０＋Ｂｎ９２９＋Ｂｎ８２８＋Ｂｎ７２７
Ｏｕｔｐｕｔ：  Ｏｉ＝Ｐｎｉ
ｐｎ（ｘ）＝Ｐｎ１２ｘ１２＋Ｐｎ１１ｘ１１＋Ｐｎ１０ｘ１０＋Ｐｎ９ｘ９＋Ｐｎ８ｘ８＋Ｐｎ７ｘ７＋Ｐｎ６ｘ６＋Ｐｎ５ｘ５＋Ｐｎ４ｘ４＋Ｐｎ３ｘ３＋Ｐｎ２ｘ２＋Ｐｎ１ｘ＋Ｐｎ０
入力と出力のビット間の対応をつけるのがこれらの変換デコーダである。
【００９２】
これらのデコーダの規模はビット数の二乗にほぼ比例して増大するので、部分デコードを利用した回路の簡略化が必要となる。
【００９３】
１３ビットコード変換デコーダ：ＤＥＣ
図１０は、ガロア体の要素間の変換や要素の表現間の変換に利用される、１３ビットのデータＩ（＝Ｉ０〜Ｉ１２）を他の１３ビットデータＯ（Ｏ０〜Ｏ１２）に変換するコード変換デコーダＤＥＣの一般的な構成法を示す。図１０には、１３個併設される回路ブロック（ＮＯＲゲート）の一つを示しており、図１１に示すように、クロックτ０，τ１の２サイクルで動作する。
【００９４】
このコード変換デコーダＤＥＣは、入力データビットＩ（＝Ｉ０〜Ｉ１２）のうちＩ０〜Ｉ１１を４ビットずつ部分デコードして信号／Ａ０〜／Ａ１５、／Ｂ０〜／Ｂ１５、Ｃ０〜Ｃ１５を作るＮＡＮＤゲートＧ１〜Ｇ３と、さらに／Ａｉと／ＢｋからＮＯＲ信号ＡｉＢｋを作るＮＯＲゲートＧ４を有する。
【００９５】
コード変換デコーダ回路ＤＥＣは、これらのデコード信号／Ａ０〜／Ａ１５、／Ｂ０〜／Ｂ１５、Ｃ０〜Ｃ１５により制御される１６×１６＝２５６個の放電経路ＰＤＣが、出力ビットＯｍごとに併設されたＮＯＲゲートを構成する。各ブロックごとに共通のＮＯＲノードＮＤのデータをラッチする出力ラッチＬＴ２がある。このラッチ回路ＬＴ２のリセットに1クロックτ０が用いられる。
【００９６】
２５６個の放電経路ＰＤＣの各々は、信号ＡｉＢｋ（ｉ＝０〜１５；ｋ＝０〜１５）でゲートされ、さらに入力ビットＩ１２と／Ｉ１２で分岐し、この分岐の下に変換の対応に従ってＣｍｉ（ｍｉ＝０〜１５）がゲート入力となるＮＭＯＳトランジスタＯＲ接続が配置される。これらの分岐は第２のクロックτ１でＶｓｓに接続される。
【００９７】
ＣｍｉゲートのＮＭＯＳトランジスタ配置は、変換において出力ビットＯｍに対応する入力ビットをＡｉＢｋの分類の後、Ｉ１２の“１”，“０”で分類して、Ｃ０〜Ｃ１５の中から含まれるものを選択することによって行われる。
【００９８】
上述のコード変換デコーダＤＥＣは、ガロア体内での２次方程式や３次方程式の根を求める解法デコーダとしても適用される。この場合、Ｃｍｉゲートのトランジスタ選択を、方程式の根となる要素を予め選択しておき、これに合わせればよい。
【００９９】
ここでは、ＥＣＣ処理の中で解くべき方程式の定数項と変数項の間の関係とデコーダの入力と出力の関係について説明する。
【０１００】
先ず、ｕ２＋ｕ＝ｇなる２次方程式の解法デコーダＳＬＶｕである。入力は定数項ｇで、これのインデックスであるｕｎまたは多項式ｐｕｎ（ｘ）の各ビットを求める。要素間の変換は２次方程式｛ｐｎ（ｘ）｝２＋ｐｎ（ｘ）＝ｐｕｎ（ｘ）となるようにｐｎ（ｘ）を選択することに対応する。
【０１０１】
この対応はすべての要素ｇに対するｐｎ（ｘ）を予め計算しておくことによって得られ、ひとつのｇに対して２つの要素ｐｎ１（ｘ）とｐｎ２（ｘ）がある。デコーダＳＬＶｕの出力はこれらの要素のインデックスまたは係数表現であり、第１根Ｏｉ＝Ｂｎ１ｉまたはｐｎ１ｉと、第２根Ｏｉ＝Ｂｎ２ｉまたはｐｎ２ｉとなる。
【０１０２】
３次方程式解法デコーダは、ｗ３＋ｗ＝ｈの解法デコーダＳＬＶｗ及び、ｗ３＝ｃの解法デコーダＳＬＶｃｕｂｅがある。入力は定数項ｈやｃで、これのインデックスであるｗｎまたは多項式ｐｗｎ（ｘ）の各ビットを求める。要素間の変換は３次方程式｛ｐｎ（ｘ）｝３＋ｐｎ（ｘ）＝ｐｗｎ（ｘ）や｛ｐｎ（ｘ）｝３＝ｐｗｎ（ｘ）となるように、ｐｎ（ｘ）を選択することに対応する。
【０１０３】
この対応はすべての要素ｈに対するｐｎ（ｘ）を予め計算しておくことによって得られ、解としては１つの要素か３つの要素ｐｎ１（ｘ），ｐｎ２（ｘ）及びｐｎ３（ｘ）がある。計算の過程で使用するのは根の一つであり、解法デコーダＳＬＶｗ，ＳＬＶｃｕｂｅの出力はこれらの要素のインデックスまたは係数表現であり、Ｏｉ＝Ｂｎ１ｉまたはｐｎ１ｉとなる。第２根（Ｏｉ＝Ｂｎ２ｉまたはｐｎ２ｉ）及び第３根（Ｏｉ＝Ｂｎ３ｉまたはｐｎ３ｉ）は使用しない。
【０１０４】
ＥＳ部２５には、以上の３つの方程式解法デコーダＳＬＶｕ，ＳＬＶｗ，ＳＬＢｃｕｂｅが用意され、これらが制御クロックにより時分割動作する。
【０１０５】
要素の和計算回路（１３並列２入力パリティチェッカ）：ＰＣ
ＥＣＣ処理過程で頻繁に用いられる有限体要素間の和の計算回路を、図１２を参照して説明する。和は二つの要素に対し係数表現の各ビットごとのＸＯＲ演算として得られるので、１３個並列の２入力パリティチェッカを用いる。和計算を行う前に、インデックスのバイナリ表現→係数表現の変換を行うコード変換デコーダＤＥＣｉを置き、得られた係数表現の各ビットを１３並列２入力パリティチェッカを通して新たな要素の係数表現を得る。
【０１０６】
さらに得られた要素を次の演算が積演算ならインデックスのバイナリ表現が必要である。そこで出力側に、係数表現→インデックスのバイナリ表現の変換を行うコード変換デコーダＤＥＣｏを配置する。以下では、１３並列２入力パリティチェッカを、その入出力部の変換デコーダを含めて単にパリティチェッカＰＣと呼ぶものとする。
【０１０７】
コード変換デコーダＤＥＣでは前述のように２クロックサイクル必要であるから、このパリティチェッカＰＣには、要素のインデックスからインデックスへの和の演算で最長４サイクル必要となる。回路規模はコード変換デコーダＤＥＣを３つ用いるので大きなものとなる。
【０１０８】
入力側のコード変換デコーダを一つとして、二つの入力間で時分割して用いることもできるが、このときにはさらに２サイクル必要でインデックスからインデックスへの和の演算で６サイクル必要となるが、コード変換デコーダＤＥＣの数が２つで済み回路規模を小さく出来るので有効である。但し、以下の説明ではパリティチェッカＰＣとして３つのコード変換デコーダを用いる場合を想定する。
【０１０９】
このような和計算回路（パリティリチェッカ）が、ＳＥＣ部及びＥＳ部の共有回路として用意され、ＳＥＣ部内、ＥＳ部内及びそれらの間で時分割駆動により有限体要素の和計算を行う。
【０１１０】
要素の積計算回路（１３ビットアダー）：ＡＤ
図１３は、ガロア体の要素に対してインデックスのバイナリ表現を用いる場合の積計算回路（１３ビットアダーＡＤ）である。要素の積はインデックスの和を２１３−１＝８１９１を法として求めることで積の要素のインデックスが得られる。したがって、１３ビットアダーを構成して法８１９１で和がバイナリで求まる様に構成すればよい。
【０１１１】
図１３は、１３ビットアダーであり、数Ａｍ（ｍ＝０〜１２）とＢｍ（ｍ＝０〜１２）を２進数で表した各桁の和をフルアダー（Full adder）及びハーフアダー（Half adder）で求めて法８１９１の剰余として和を表すものである。
【０１１２】
このアダーは、１３ビットの第１段加算回路１３１と、その和が８１９１以上であることを検出して、桁上げをする桁上げ補正回路１３２と、この桁上げ補正回路と共に、和が８１９１以上の場合に補数１を加える第２段加算回路１３３とを有する。
【０１１３】
桁上げ補正回路１３２では、第１段加算回路１３１の結果Ｓ０’〜Ｓ１２’が８１９１以上か否かの判定を行う。全ビットＳ０'〜Ｓ１２'が“１”かキャリーＣ１２’が発生していれば８１９１以上なので信号ＰＦ０を出して、第２段加算回路１３３で８１９１の補数1をＳ０’〜Ｓ１２’に加える。その結果としてＡｍとＢｍの８１９１を法としての和Ｓｍが求まる。
【０１１４】
このアダーは、クロックなどの同期が必要でなく、入力が確定すれば出力も確定するようにして、システムのタイミング制御の負担を減らす構成となっている。
【０１１５】
このような積計算回路（アダーＡＤ）が、ＳＥＣ部及びＥＳ部の共有回路として複数個用意され、ＳＥＣ部内、ＥＳ部内及びそれらの間で、時分割駆動により有限体要素の積演算を行なう。
【０１１６】
ＥＣＣ処理
ここまで、演算に用いる各種計算回路を説明したが、次にこれらの計算回路を用いたＥＣＣ処理の説明を行う。エラー探索方程式の係数を含んだ様々な量を計算の分岐と計算の過程で利用するが、これらの量は全てシンドロームから計算される量である。シンドロームＳ（＝Ｓ１），Ｓ３，Ｓ５，Ｓ７はメモリセルアレイに記憶されたデータから直接計算され得られる量であり、他の量はこれをもとに積、累乗、和の計算を行なうことによって得られる。
【０１１７】
図１４は、シンドロームから順に計算で必要な量が得られる手順を示している。同じスステージで並列に求める量を出来るだけ少なくしてかつステージ数も少なくなるように計算の手順を作っている。なお、要素の累乗は２の累乗の場合を除いてインデックスのビットの並び替えやシフトでは対応できないので、要素間の積としてその都度計算することになる。このためステージ０において、Ｓの３乗、５乗、７乗を求めている。
【０１１８】
次のステージ１で、ζ＝Ｓ３＋Ｓ３、η＝Ｓ５＋Ｓ５、θ＝Ｓ７＋Ｓ７を計算する。次のステージ２でこの計算結果から、ζ３を計算し、次のステージ３でζ，η，θとＳを用いてこれらの様々な累乗の積と商とを計算する。
【０１１９】
まず和を計算する際に必要な量は、Ｓ３ζ，Ｓη，Ｓ４η及びＳ２θの４個である。これらの４個の量の和から２個の量を計算するのがその次のステージ４で、Γ及びΓＴと次のステージ５で必要な４つの量Ｓ３η，Ｓζ，Ｓθ，ζηを計算する。
【０１２０】
次のステージ５で前のステージの量の和であるΓＤと、次のステージの和で必要な３つの量を計算する。次のステージ６は得られた量の和であるΓＱと積と商によってＤ及びＴを計算する。
【０１２１】
更に次のステージ７で積と商演算で次にステージで必要な２つの量Ｑ及びＳＴを計算し、ステージ８でｂとζＴとＳ２Ｑを計算し、最後のステージ９でｃを計算する。ｃの計算では和の数を少なくすため、ζ＝ＳＤ＋Ｔの関係を用いて変形している。シンドローム以降の計算ステージ数は、１０ステージである。
【０１２２】
シンドロームから得られた様々な要素のゼロ元との対応によってエラーの数やエラー探索の方法が分岐する。その分岐の条件を、図１５にまとめた。この分岐条件の導出を説明すれば、次の通りである。
【０１２３】
４ＥＣでのシンドロームとエラー探索方程式の係数が基本となり、各エラー数の探索の条件から、４ＥＣの探索が３ＥＣ以下の探索になるのは、Γ＝０またはcＱ＝０、３ＥＣの探索が２ＥＣ以下の探索になるのは、ζＴ３＝Γ＝０、２ＥＣの探索が１ＥＣ以下になるのはζ＝０の場合である。これを踏まえて、エラー数が少ない方から多い方へと排他的分岐の条件を求める。
【０１２４】
・１ＥＣ以下の分岐条件
Γ＝０，ζ＝０の条件での、ζ＝０から、４ＥＣでのシンドロームと係数の関係は、次の数１６のようになる。
【０１２５】
［数１６］
ＳＤ＋Ｔ＝ζ  →  ＳＤ＋Ｔ＝０
（ζ＋Ｓ３）Ｄ＋Ｓ２Ｔ＋ＳＱ＝η  →  ＳＱ＝η
（η＋Ｓ５）Ｄ＋Ｓ４Ｔ＋（ζ＋Ｓ３）Ｑθ  →  ηＤ＋Ｓ３Ｑ＝η（Ｓ２＋Ｄ）＝θ
Γ＝Ｓ３ζ＋Ｓη＋ζ２  →  Γ＝Ｓη
ｃ＝Ｓ２Ｑ＋ＳＤＴ＋Ｔ２  →  ｃ＝Ｓ２Ｑ＝Γ
【０１２６】
ｃＱ＝０からはＳＱ＝０となり、Γ＝０が成り立ち、Γ＝０とすると、ｃ＝０でｃＱ＝０は成り立つ。
【０１２７】
従って、Γ＝０のみ考えればよく、このときη＝０又はＳ＝０であり、Ｓ＝０なら、ζ＝０でη＝０になるから、θ＝０が常に成り立つ。逆に、ζ＝η＝０（θ＝０）から、Γ＝０，ｃＱ＝０が成り立つので、これは４ＥＣの計算の１ＥＣ以下の条件と同値になる。
【０１２８】
１ＥＣ以下への分岐の排他的条件は、ζ＝η＝０（θ＝０）である。このとき、Ｓ≠０ならＸ１＝Ｓで１エラー、Ｓ＝０なら“ｎｏ  ｅｒｒｏｒ”となる。
【０１２９】
１ＥＣ以下のエラー探索が不解の場合に相当するのは同値条件下で矛盾が生じる場合で、η＝０でθ≠０なら矛盾、Ｓ＝０でη≠０なら矛盾がシンドロームと係数の関係から言え、この場合は５エラー以上となる。
【０１３０】
・２ＥＣの分岐条件
Γ＝０で４ＥＣが３ＥＣ以下となり、２ＥＣ以下になるには、ζＴ３＝Γ＝０であるが、ζ＝０とすると１ＥＣ以下なので、ζ≠0であり、Ｔ３＝０である。従って、２ＥＣでのシンドロームと係数の関係は、数１１でＱ＝θとしたζとηの式が３ＥＣの係数の連立方程式であり、その係数に下添え字３を付して、次の数１７のように書き換えられる。
【０１３１】
［数１７］
ＳＤ３＋Ｔ３＝ζ  →  ＳＤ３＝ζ
（ζ＋Ｓ３）Ｄ３＋Ｓ２Ｔ３＝η  →  ζ（Ｓ２＋Ｄ３）＝η
Γ＝Ｓ３ζ＋Ｓη＋ζ２  →  Γ＝０
４ＥＣでの２ＥＣになる条件Γ＝０が常に成り立つので、ｃＱ＝０は考えなくても良く、２ＥＣへの分岐条件はΓ＝０かつζ≠０となる。
【０１３２】
・３ＥＣの分岐条件
Γ＝０またはcＱ＝０の条件で３ＥＣ以下となるが、Γ＝０は２ＥＣ以下となるので、３ＥＣへの分岐条件は、Γ≠０の時のｃ＝０又はＱ＝０である。
【０１３３】
・４ＥＣの分岐条件
Γ≠０かつcＱ≠０が４ＥＣの条件、言い換えれば、Γ≠０かつc≠０かつＱ≠０が４ＥＣの分岐条件となる。
【０１３４】
次に、処理時間を犠牲にして回路規模を縮小する方向への改善として、回路規模が増大する要素間の和の演算ができるだけ少なくなる方法を説明する。まず、探索多項式の成立条件について説明する。解法の分岐のエラーの数に従って、その数の次数を持った、シンドロームから得られた要素を係数とするエラー探索方程式が得られるが、解探索のためには得られた方程式の根がゼロ元とは異なりかつ全て異なるかどうかの判断をして解法を適用することが必要である。
【０１３５】
そこで得られたエラー探索方程式の係数から重根の判断を行いながら、解探索を行なう方法の条件について説明する。各エラー数でのエラー探索方程式が異なる根を持つものとして成立する条件をまとめると、次のようになる。
【０１３６】
・４次エラー探索方程式ｘ４＋Ｓｘ３＋Ｄｘ２＋Ｔｘ＋Ｑ＝０の成立条件
ゼロ元が解なら、Ｑ＝０で３次になる。また重根：ｘ４＋Ｓｘ３＋Ｄｘ２＋Ｔｘ＋Ｑ＝（ｘ２＋α）（ｘ２＋βｘ＋γ）の場合は、（ｃ＝）：Ｓ２Ｑ＋ＳＤＴ＋Ｔ２＝０となるので、異なる根を持つ４次探索方程式の成立条件は、Ｑ≠０かつｃ≠０である。
【０１３７】
・３次エラー探索方程式ｘ３＋Ｓｘ２＋Ｄｘ＋Ｔ＝０の成立条件
ゼロ元が解なら、Ｔ＝０で２次になる。また重根：ｘ３＋Ｓｘ２＋Ｄｘ＋Ｔ＝（ｘ＋α）（ｘ２＋β）の場合は、（ζ＝）：ＳＤ＋Ｔ＝０となるので、異なる根を持つ３次探索方程式の成立条件は、Ｔ≠０かつζ≠０である。
【０１３８】
・２次エラー探索方程式ｘ２＋Ｓｘ＋Ｄ＝０の成立条件
ゼロ元が解なら、Ｄ＝０で１次になる。また重根：ｘ２＋Ｓｘ＋Ｄ＝（ｘ２＋α）の場合は、Ｓ＝０となるので、異なる根を持つ２次探索方程式の成立条件は、Ｄ≠０かつＳ≠０である。
【０１３９】
・１次エラー探索方程式ｘ＋Ｓ＝０の成立条件
ゼロ元が解なら、Ｓ＝０でエラーなしになる。従ってこの１次探索方程式の成立条件は、Ｓ≠０である。
【０１４０】
これらの条件の下、以下では各方程式の解法を和の演算が減るように構成する場合として説明する。
【０１４１】
４次エラー探索方程式：ｘ４＋Ｓｘ３＋Ｄｘ２＋Ｔｘ＋Ｑ＝０の解法（４ＥＣ）
４ＥＣの場合、即ち４次エラー探索方程式の解法をシンドロームから決まる量の関係の４つの場合分けに従って説明する。当然全ての場合でΓ≠０、Ｑ≠０、ｃ≠０である。
【０１４２】
（１）Ｃａｃｅ１（Ｓ≠０，ｂ≠０の場合）
ここで、ｂ＝Ｄ２＋ＳＴ，ｃ＝Ｓ２Ｑ＋ＳＤＴ＋Ｔ２とする。エラー探索方程式を、数１８のように２次式の積に因数分解する。
【０１４３】
［数１８］
ｘ４＋Ｓｘ３＋Ｄｘ２＋Ｔｘ＋Ｑ＝（ｘ２＋α１ｘ＋α０）（ｘ２＋β１ｘ＋β０）＝０
因数分解の２次式の係数α０，α１，β０，β１とシンドロームから導かれた量の関係から、未知量δ＝α０＋β０を導入して、δが満たすべき３次の方程式が数１９のように得られる。
【０１４４】
［数１９］
δ３＋Ｄδ２＋ＳＴδ＋Ｓ２Ｑ＋Ｔ２＝０
ここで更にδ＝ψ＋Ｄなる変換を施すと、数２０のように、ψに関する３次方程式を得る。
【０１４５】
［数２０］
（ψ／ｂ１／２）３＋（ψ／ｂ１／２）＋ｃ／ｂ３／２＝０
この方程式を導く際にｂ≠０が必要となる。
【０１４６】
この方程式を解いて1根ψを選択する。δを計算し因数分解係数が満たすべきεを未知数とする、数２１の２次方程式が得られる。
【０１４７】
［数２１］
ψ＋Ｄ≠０なら、（ε／δ）２＋（ε／δ）＋Ｑ／δ２＝０  （δ≠０）
ψ＋Ｄ＝０なら、ε２＋Ｑ＝０  （δ＝０）
これらを解いて係数α０，β０を得る。δがゼロならα０＝β０が得られる。
【０１４８】
更にψからもうひとつの因数分解係数が満たすべきεを未知数とする、数２２の２次方程式が得られる。
【０１４９】
［数２２］
（ε／Ｓ）２＋（ε／Ｓ）＋ψ／Ｓ２＝０
これを解いて、α１，β１を得る。
【０１５０】
これらの解α０，β０，α１，β１の係数を持つ、数２３に示す因数分解の２次方程式を解いて、Ｘ＝ｘとして、エラー探索の４次方程式の４つの解が求まる。
【０１５１】
［数２３］
（ｘ／α１）２＋（ｘ／α１）＋α０／α１＝０
（ｘ／β１）２＋（ｘ／β１）＋β０／β１＝０
なお，各方程式を解く際に解のテーブルが利用できるように未知数の係数はＧＦ（２）の要素となる様に変換している。
【０１５２】
ψを求める３次方程式では未知変数をψ／ｂ１／２とし、α０，β０を求める２次方程式では未知変数をε／δとし、α１，β１を求める２次方程式では未知変数をε／Ｓとし、因数分解の２次方程式ではx／α１，x／β１としている。
【０１５３】
（２）Ｃａｃｅ２（Ｓ≠０，ｂ＝０の場合）
ここで、ｂ＝Ｄ２＋ＳＴ＝０，ｃ＝Ｓ２Ｑ＋ＳＤＴ＋Ｔ２である。（ｃ＝０なら、重根で、３ＥＣへ行く。）この４次エラー探索方程式を、数２４のように２次式の積に因数分解する。
【０１５４】
［数２４］
ｘ４＋Ｓｘ３＋Ｄｘ２＋Ｔｘ＋Ｑ＝（ｘ２＋α１ｘ＋α０）（ｘ２＋β１ｘ＋β０）＝０
因数分解の２次式の係数α０，α１，β０，β１とシンドロームから導かれた量の関係から、未知量δ＝α０＋β０を導入して、δが満たすべき数２５の３次方程式が得られる。
【０１５５】
［数２５］
δ３＋Ｄδ２＋ＳＴδ＋Ｓ２Ｑ＋Ｔ２＝０
ここで更にδ＝ψ＋Ｄなる変換を施すと、数２６のようにψに関する３次方程式が得られる。
【０１５６】
［数２６］
ψ３＋ｃ＝０  （ｃ≠０）
これを解いて１根を選択する。
【０１５７】
δを計算し、因数分解係数が満たすべきεを未知数とする、次の数２７の２次方程式が得られる。
【０１５８】
［数２７］
ψ＋Ｄ≠０なら、（ε／δ）２＋（ε／δ）＋Ｑ／δ２＝０  （δ≠０）
ψ＋Ｄ＝０なら、ε２＋Ｑ＝０  （δ＝０）
これらを解いて係数α０，β０、δがゼロならα０＝β０が得られる。
【０１５９】
更にψからもうひとつの因数分解係数が満たすべきεを未知数とする、数２８の２次方程式が得られる。
【０１６０】
［数２８］
（ε／Ｓ）２＋（ε／Ｓ）＋ψ／Ｓ２＝０
これを解いて、α１，β１を得る。
【０１６１】
これらの解α０，β０，α１，β１の係数を持つ、数２９に示す因数分解の２次方程式を解く。
【０１６２】
［数２９］
（ｘ／α１）２＋（ｘ／α１）＋α０／α１＝０
（ｘ／β１）２＋（ｘ／β１）＋β０／β１＝０
この未知量xを求めると、Ｘ＝ｘとして、エラー探索の４次方程式の４つの解が求まる。
【０１６３】
なお，各方程式を解く際に解のテーブルが利用できるように未知数の係数はＧＦ（２）の要素となる様に変換している。ψを求める３次方程式では未知変数をψ／ｂ１／２とし、α０，β０を求める２次方程式では未知変数をε／δ，α１，β１を求める２次方程式では未知変数をε／Ｓ，因数分解の２次方程式ではx／α１，x／β１としている。
【０１６４】
（３）Ｃａｃｅ３（Ｓ＝０，ｂ≠０の場合）
ここで、ｂ＝Ｄ２＋ＳＴ＝Ｄ２，ｃ＝Ｓ２Ｑ＋ＳＤＴ＋Ｔ２＝Ｔ２である。（ｃ＝０なら、重根で３ＥＣへ行く。）４次のエラー探索方程式を、数３０のように２次式の積に因数分解する。
【０１６５】
［数３０］
ｘ４＋Ｄｘ２＋Ｔｘ＋Ｑ＝（ｘ２＋α１ｘ＋α０）（ｘ２＋β１ｘ＋β０）＝０
因数分解の２次式の係数α０，α１，β０，β１とシンドロームから導かれた量の関係から、未知量δ＝α０＋β０を導入して、δが満たすべき数３１の３次方程式が得られる。
【０１６６】
［数３１］
δ３＋Ｄδ２＋Ｔ２＝０
ここで更にδ＝ψ＋Ｄなる変換を施すと、ψに関する数３２の３次方程式が得られ、これを解いて1根ψを選択する。
【０１６７】
［数３２］
（ψ／ｂ１／２）３＋（ψ／ｂ１／２）＋ｃ／ｂ３／２＝０  （ｂ≠０）
δはゼロになることはないので因数分解係数が満たすべきεを未知数とする数３３の２次方程式が得られる。
【０１６８】
［数３３］
（ε／δ）２＋（ε／δ）＋Ｑ／δ２＝０  （δ≠０，Ｔ２≠０）
これを解いて係数α０，β０を得る。
【０１６９】
更に、ψからもうひとつの因数分解係数が満たすべきεを未知数とする数３４の２次方程式が得られ、これを解いてα１＝β１を得る。
【０１７０】
［数３４］
ε２＋ψ＝０  （Ｓ＝０）
以上のα０，β０，α１，β１の係数を持つ、数３５の因数分解の２次方程式を解く。
【０１７１】
［数３５］
（ｘ／α１）２＋（ｘ／α１）＋α０／α１２＝０
（ｘ／β１）２＋（ｘ／β１）＋β０／β１２＝０
この未知量xを求めると、４次エラー探索方程式の４つの解が求まる。
【０１７２】
なお、各方程式を解く際に解のテーブルが利用できるように未知数の係数はＧＦ（２）の要素となる様に変換している。α０，β０を求める２次方程式では未知変数をε／δ，因数分解の２次方程式ではｘ／α１，ｘ／β１としている。
【０１７３】
（４）Ｃａｃｅ４（Ｓ＝０，ｂ＝０の場合）
ここで、ｂ＝Ｄ２＋ＳＴ＝０，ｃ＝Ｓ２Ｑ＋ＳＤＴ＋Ｔ２＝Ｔ２である。（ｃ＝０なら、重根で３ＥＣへ行く。）このとき４次エラー探索方程式を、数３６のように２次式の積に因数分解する。
【０１７４】
［数３６］
ｘ４＋Ｔｘ＋Ｑ＝（ｘ２＋α１ｘ＋α０）（ｘ２＋β１ｘ＋β０）＝０
未知量δ＝α０＋β０を導入して、δが満たすべき数３７の３次方程式が得られる。
【０１７５】
［数３７］
δ３＋Ｔ２＝０  （δ≠０）
この方程式を解いて1根δを選択する。δはゼロでない。更に因数分解係数が満たすべきεを未知数とする数３８の２次方程式が得られる。
【０１７６】
［数３８］
（ε／δ）２＋（ε／δ）＋Ｑ／δ２＝０  （δ≠０）
ε２＋δ＝０  （Ｓ＝０）
これらを解いて係数α０，β０及びα１＝β１を得る。
【０１７７】
これらのα０，β０，α１，β１の係数を持つ、数３９の因数分解の２次方程式を解く。
【０１７８】
［数３９］
（ｘ／α１）２＋（ｘ／α１）＋α０／α１＝０
（ｘ／β１）２＋（ｘ／β１）＋β０／β１＝０
この未知量xを求めると、Ｘ＝ｘとして４次エラー探索方程式の４つの解が求まる。
【０１７９】
なお，各方程式を解く際に解のテーブルが利用できるように未知数の係数はＧＦ（２）の要素となる様に変換している。α０，β０を求める２次方程式では未知変数をε／δ，因数分解の２次方程式ではｘ／α１，ｘ／β１としている。
【０１８０】
ここまで説明した４次の場合のエラー探索４ＥＣの過程の骨子をまとめると以下のようになる。
【０１８１】
（ａ）Ｓ≠０，ｂ≠０の場合は、３次方程式ｗ３＋ｗ＝ｃ／ｂ３／２より、デコードにより１根ｗを選び、ψ＝ｂ１／２ｗ，δ＝ψ＋Ｄとする。次に、δ≠０で２次方程式ｕ２＋ｕ＝Ｑ／δ２の根をデコードして求め、ｕ１，ｕ２として、α０＝δｕ１，β０＝δｕ２とする。δ＝０なら、α０＝β０＝ｕ＝Ｑ１／２とする。
【０１８２】
さらにｖ２＋ｖ＝ψ／Ｓ２の根をデコードして求め、ｖ１，ｖ２としてα１＝Ｓｖ１，β１＝Ｓｖ２とする。さらに、２次方程式ｙ２＋ｙ＝α０／α１２，ｚ２＋ｚ＝β０／β１２の根をデコードして求めた結果をｙ１，ｙ２及びｚ１，ｚ２として、４つのエラー位置を示す有限体要素がＸ１＝α１ｙ１，Ｘ２＝α１ｙ２，Ｘ３＝β１ｚ１，Ｘ４＝β１ｚ２として求まる。
【０１８３】
（ｂ）Ｓ≠０，ｂ＝０の場合は、ψ＝ｃ１／３，δ＝ψ＋Ｄとする。次にδ≠０で２次方程式ｕ２＋ｕ＝Ｑ／δ２の根をデコードして求め、ｕ１，ｕ２として、α０＝δｕ１，β０＝δｕ２とする。δ＝０なら、α０＝β０＝ｕ＝Ｑ１／２とする。
【０１８４】
さらにｖ２＋ｖ＝ψ／Ｓ２の根をデコードして求め、ｖ１，ｖ２としてα１＝Ｓｖ１，β１＝Ｓｖ２とする。さらに２次方程式ｙ２＋ｙ＝α０／α１２及びｚ２＋ｚ＝β０／β１２の根をデコードして求めた結果をｙ１，ｙ２及びｚ１，ｚ２として、４つのエラー位置を示す有限体要素がＸ１＝α１ｙ１，Ｘ２＝α１ｙ２，Ｘ３＝β１ｚ１，Ｘ４＝β１ｚ２として求まる。
【０１８５】
（ｃ）Ｓ＝０，ｂ≠０の場合は、３次方程式ｗ３＋ｗ＝ｃ／ｂ３／２よりデコードにより1根ｗを選び、ψ＝ｂ１／２ｗ，δ＝ψ＋Ｄとする。次に、２次方程式ｕ２＋ｕ＝Ｑ／δ２の根をデコードして求めてｕ１，ｕ２として、α０＝δｕ１，β０＝δｕ２，α１＝β１＝ψ１／２とする。
【０１８６】
更に、２次方程式ｙ２＋ｙ＝α０／α１２，ｚ２＋ｚ＝β０／β１２の根をデコードして求めた結果をｙ１，ｙ２及びｚ１，ｚ２として、４つのエラー位置を示す有限体要素がＸ１＝α１ｙ１，Ｘ２＝α１ｙ２，Ｘ３＝β１ｚ１，Ｘ４＝β１ｚ２として求まる。
【０１８７】
（ｄ）Ｓ＝０，ｂ＝０の場合は、δ＝ｃ１／３である。２次方程式ｕ２＋ｕ＝Ｑ／δ２の根をデコードして求め、ｕ１，ｕ２として、α０＝δｕ１，β０＝δｕ２，α１＝β１＝δ１／２とする。さらに２次方程式ｙ２＋ｙ＝α０／α１２及びｚ２＋ｚ＝β０／β１２の根をデコードして求めた結果を、ｙ１，ｙ２及びｚ１，ｚ２として、４つのエラー位置を示す有限体要素がＸ１＝α１ｙ１，Ｘ２＝α１ｙ２，Ｘ３＝β１ｚ１，Ｘ４＝β１ｚ２として求まる。
【０１８８】
３次エラー探索方程式：ｘ３＋Ｓｘ２＋Ｄｘ＋Ｔ＝０の解法（３ＥＣ）
次に、３ＥＣの場合の３次エラー探索方程式の解法を説明する。Ｔ≠０とζ≠０とから、Ｑ＝０ならｃ≠０が成り立つ。ここから、ｂ＝Ｄ２＋ＳＴ，ｃ＝Ｓ２Ｑ＋ζＴ＝Ｓ２Ｑ＋ＳＤＴ＋Ｔ２となる。
【０１８９】
この３次方程式を、１次式ｘ＋αと２次式ｘ２＋β１ｘ＋β０の積で表すと、これらの方程式の係数が中間の媒介変数の役割を果たし、本来の係数との間には次のような関係が得られる。
【０１９０】
即ち、δ＝β０とすると、αβ０＝Ｔ，αβ１＋β０＝Ｄ，α＋β１＝Ｓから、数４０に示すδの３次方程式が得られる。
【０１９１】
［数４０］
δ３＋Ｄδ２＋ＳＴδ＋Ｔ２＝０  （Ｔ≠０からδ≠０）
ここで更にδ＝ψ＋Ｄなる変換を施すと、ψに関する数４１の３次方程式を得る。
【０１９２】
［数４１］
（ψ／ｂ１／２）３＋（ψ／ｂ１／２）＋ζＴ／ｂ３／２＝０
この方程式を導く際にｂ≠０が必要となる。
【０１９３】
この方程式を解いて1根を選択する。ｂ＝０なら、ψ＝（ζＴ）１／３である。このψからβ０＝ψ＋Ｄとおいて、β１＝β０ψ／Ｔ，α＝Ｔ／β０を得る。これから、ｘ＝α及びβ０，β１の係数を持つ因数分解の２次方程式（ｘ／β１）２＋（ｘ／β１）＋β０／β１２＝０を解いて、Ｘ＝ｘとして、３つの解が求まる。
【０１９４】
なお，各方程式を解く際に解のテーブルが利用できるように未知数の係数はＧＦ（２）の要素となる様に変換している。ψを求める３次方程式では未知変数をψ／ｂ１／２とし、因数分解の２次方程式ではｘ／β１としている。
【０１９５】
以上の３次エラー探索方程式の解法を、実際の回路システムに焼きなおすことができる様に形式化すれば、次のようになる。
【０１９６】
解くべき３次方程式は、ｂ≠０では、ｗ３＋ｗ＝ζＴ／ｂ３／２となり、根ｗを1つ選択してψ＝ｂ１／２ｗとする。ｂ＝０なら、ψ＝(ζＴ)１／３とする。β０＝ψ＋Ｄ，β１＝β０ψ／Ｔ，α＝Ｔ／β０とおき、２次のエラー探索方程式はｚ２＋ｚ＝β０／β１２となる。この方程式の２根ｚ１，ｚ２をデコードして求め、エラー位置の解としてＸ１＝α，Ｘ２＝β１ｚ１，Ｘ３＝β１ｚ２の３つが得られる。
【０１９７】
２次エラー探索方程式：ｘ２＋Ｓｘ＋Ｄ＝０の解法（２ＥＣ）
次に、２ＥＣの場合、即ち２次エラー探索方程式の解法を説明する。この場合、Ｄ≠０，Ｓ≠０である。従って、２次方程式を次の数４２のように変形する。
【０１９８】
［数４２］
（ｘ／Ｓ）２＋（ｘ／Ｓ）＋Ｄ／Ｓ２＝０
これをデコードして、Ｘ＝Ｓｘとして２つの解が求まる。
【０１９９】
形式的には、ｚ２＋ｚ＝Ｄ／Ｓ２の２根をデコードして求め、これをｚ１，ｚ２として、Ｘ１＝Ｓｚ１，Ｘ２＝Ｓｚ２として解が求まる。
【０２００】
次に、ここまで説明した方程式の解法の計算過程を具体化した、図１におけるＥＣＣシステムの各部回路の具体的な構成を説明する。なお、図１のＳＥＣ部２４とＥＳ部２５はあくまでも機能的に分けたものであって、実際には各部の各種計算回路は、時分割駆動により共通に利用される共有回路であること、従ってまた以下の図で異なるクロックタイミングに示された計算回路が、同じ回路の繰り返し動作を意味していることに注意する必要がある。
【０２０１】
ＳＥＣ部の構成
図１６は、シンドローム要素計算（ＳＥＣ）部２４の構成である。ＳＥＣ部では、４つのアダーＡＤ１〜ＡＤ４と、１つのパリティチェッカＰＣをクロックでタイムシェアリングして利用する。ここでは、アダーＡＤ１〜ＡＤ４に関しては、それぞれクロッｃｋ０−ｃｋ９で示した横軸を時間軸としての時分割使用を表現し、パリティチェッカＰＣに関しては、横軸の時間軸に加えて、縦軸を内部の時間軸としての時分割使用を表現している。
【０２０２】
例えば、アダーＡＤ１についてみると、クロックｃｋ２，ｃｋ３，ｃｋ４，ｃｋ６，ｃｋ７で用いられているが、これらは同じ回路が各クロックタイミングで繰り返し使用されることを示している。パリティチェッカＰＣについても、横方向にクロックｃｋ１，ｃｋ４，ｃｋ５，ｃｋ６，ｃｋ８，ｃｋ９の位置に並べられている６個、更に例えばクロックｃｋ１のタイミングで縦方向に並べられている３個とも、同じパリティチェッカＰＣが繰り返し使用されることを示している。後に示すＥＳ部の構成についても同様の表現を用いる。
【０２０３】
図には示さないが、クロックｃｋ０の前のクロックでシンドロームＳ，Ｓ３，Ｓ５及びＳ７が計算され、レジスタに保持されているものとする。
【０２０４】
クロックｃｋ０〜ｃｋ９の番号は、先に図１４で説明した有限体要素計算の手順を示すステージ０〜９の番号と対応する。これらの計算過程で得られたＳ，ζ，η，θ，Γ，Ｄ，Ｔ，Ｑ，ζＴ，ｂ及びｃの１１個の量は、エラー探索（ＥＳ）部での分岐の判断や計算で使用されるので、後にＥＳ部の構成において示すレジスタＲＥＧにＥＣＣ処理中保持される。
【０２０５】
パリティチェッカＰＣでの計算では計算途中でのみ用いられる要素をｐ１〜ｐ６として表した。処理のための基本ステップ数はパリティチェッカＰＣの内部処理も含めて、５３ステップで完了する。
【０２０６】
図１７は、その５３ステップのクロックの波形の概要を示す。定常的に発生される基本クロックＣＬから、信号ＳＥＣによって処理のためのステップクロックを５３個、パルスτ０〜τ５２として切り取る。このクロックτから、アダーＡＤやパリティチェッカＰＣの動作に必要なクロックｃｋ０〜ｃｋ９をさらに必要なステップ数として切り取って演算処理を行なう。
【０２０７】
前述のように、アダーＡＤは２ステップで、パリティチェッカＰＣは係数表現へのコード変換デコーダＤＥＣを入れて４ステップで処理する。実際には途中で内部データのみ使うこともあるので、クロックｃｋ１はＰＣ３回分で１２ステップとなり、クロックｃｋ４はＰＣ４回分であるが１２ステップとなり、クロックｃｋ５とｃｋ６はＰＣ３回分であるが６ステップとデコーダを介さない演算もある。
【０２０８】
ＥＳ部の構成（４ＥＣ−Ｃａｓｅ１）
図１８は、４ＥＣ−Ｃａｓｅ１の場合のエラー探索（ＥＳ）部２５の構成である。４ＥＣであるのでΓ≠０，Ｑ≠０，ｃ≠０であり、更にＣａｓｅ１の場合なので、Ｓ≠０及びｂ≠０である。これらのＳＥＣ部２４による要素計算結果は、レジスタＲＥＧに保持されている。なおこのレジスタＲＥＧとして実際には、後に説明するように、ＳＥＣ部及びＥＳ部において時分割演算に共用されるラッチ回路が適用される。
【０２０９】
クロックｃｋ１０で、アダーＡＤ１を用いてｂ３を求め、クロックｃｋ１１で同じくアダーＡＤ１を用いてＨ＝ｃｂ−３／２を計算する。コード変換デコーダを用いた３次方程式解法デコーダＳＬＶｗにより、ｗ３＋ｗ＝Ｈからｗをデコードし、クロックｃｋ１２でアダーＡＤ４によりψ＝ｗｂ１／２を計算する。またクロックｃｋ１３でパティチェッカＰＣによりδ＝ψ＋Ｄを計算し、クロックｃｋ１４でアダーＡＤ１とＡＤ４によりそれぞれ、Ｊ＝Ｑδ−２とＫ＝ψＳ−２を計算する。
【０２１０】
δ≠０なら、２次方程式解法デコーダＳＬＶｕを時分割して使用し、ｕ２＋ｕ＝Ｊと、ｖ２＋ｖ＝Ｋからｕとｖをそれぞれ２つ、ｕ１とｕ２、ｖ１とｖ２としてデコードする。クロックｃｋ１５で、アダーＡＤ１〜ＡＤ４により、α０＝δｕ１，β０＝δｕ２，α１＝Ｓｖ１，β１＝Ｓｖ２を計算する。ただし、解法デコーダＳＬＶｕの時分割にあわせて、クロックｃｋ１５内で時分割を行う。
【０２１１】
δ＝０なら、α０＝β０＝Ｑ１／２とする。クロックｃｋ１６で、アダーＡＤ１によりＬ＝α０α１−２、アダーＡＤ２によりＭ＝β０β１−２を計算する。２次方程式解法デコーダＳＬＶｕを時分割して使用して、ｙ２＋ｙ＝Ｌとｚ２＋ｚ＝Ｍとしてｙとｚをそれぞれ２つ、ｙ１とｙ２、ｚ１とｚ２としてデコードする。
【０２１２】
クロックｃｋ１７でアダーＡＤ１〜ＡＤ４により、Ｘ１＝α１ｙ１，Ｘ２＝α１ｙ２，Ｘ３＝β１ｚ１，Ｘ４＝β１ｚ２を計算する。ただし、解法デコーダＳＬＶｕの時分割にあわせてクロックｃｋ１７内で時分割を行う。
【０２１３】
全処理は２８ステップで終了する。その制御クロックの発生の様子を図１９に示す。定常的に発生されるクロックＣＬから、信号ＥＳ１によって処理のためのステップクロックτを２８パルス、τ０〜τ２７として切り取る。このτから、アダーＡＤやパリティチェッカＰＣの動作に必要なクロックｃｋ０〜ｃｋ１７をさらに必要なステップ数切り取って演算処理を行なう。
【０２１４】
アダーＡＤには２ステップ、パリティチェッカＰＣには係数表現へのコード変換デコードを入れて４ステップが用いられる。方程式解法デコーダＳＬＶはコード変換デコードに２ステップを要するので、アダーＡＤとデコードで６ステップの処理となる。
【０２１５】
ＥＳ部の構成（４ＥＣ−Ｃａｓｅ２）
図２０は、４ＥＣ−Ｃａｓｅ２の場合のエラー探索（ＥＳ）部２５の構成である。４ＥＣであるのでΓ≠０，Ｑ≠０，ｃ≠０であり、更にＣａｓｅ２の場合なので、Ｓ≠０及びｂ＝０である。
【０２１６】
クロックｃｋ１０で、コード変換デコーダを用いた３次方程式解法デコーダＳＬＶｃｕｂｅを使用して、ψ＝ｃ１／３とする。クロックｃｋ１１でパリティチェッカＰＣを用いて、δ＝ψ＋Ｄを計算し、クロックｃｋ１２でアダーＡＤ１とＡＤ４を用いてそれぞれ、Ｊ＝Ｑδ−２とＫ＝ψＳ−２を計算する。
【０２１７】
δ≠０なら、２次方程式解法デコーダＳＬＶｕを時分割により使用して、ｕ２＋ｕ＝Ｊとｖ２＋ｖ＝Ｋからｕとｖをそれぞれ２つ、ｕ１，ｕ２とｖ１，ｖ２としてデコードする。
【０２１８】
クロックｃｋ１３でアダーＡＤ１〜ＡＤ４を使用して、α０＝δｕ１，β０＝δｕ２と、α１＝Ｓｖ１，β１＝Ｓｖ２を計算する。ただしデコーダＳＬＶｕの時分割にあわせてクロックｃｋ１３内での時分割を行う。
【０２１９】
δ＝０なら、α０＝β０＝Ｑ１／２とする。クロックｃｋ１４で、アダーＡＤ１によりＬ＝α０α１−２を、アダーＡＤ２によりＭ＝β０β１−２を計算する。２次方程式解法デコーダＳＬＶｕを時分割して使用して、ｙ２＋ｙ＝Ｌとｚ２＋ｚ＝Ｍとしてｙとｚをそれぞれ２つ、ｙ１，ｙ２とｚ１，ｚ２としてデコードする。
【０２２０】
そしてクロックｃｋ１５で、アダーＡＤ１〜ＡＤ４により、Ｘ１＝α１ｙ１，Ｘ２＝α１ｙ２，Ｘ３＝β１ｚ１，Ｘ４＝β１ｚ２を計算する。ただし、デコーダＳＬＶｕの時分割にあわせてクロックｃｋ１５内で時分割を行う。 
【０２２１】
全処理は２２ステップで終了する。その制御クロック発生の様子を、図２１に示す。定常的に発生されるクロックＣＬから、信号ＥＳ２によって処理のためのステップクロックτを２２パルス、τ０〜τ２１を切り取る。このτから、アダーＡＤやパリティチェッカＰＣの動作に必要なクロックｃｋ１０〜ｃｋ１５をさらに必要なステップ数として切り取って演算処理を行なう。
【０２２２】
アダーＡＤと３次方程式解法デコーダＳＬＶｃｕｂｅには２ステップ、パリティチェッカＰＣはコード変換デコードを入れて４ステップで処理する。ＳＬＶには、デコードに２ステップを要するので、アダーＡＤとデコードで６ステップの処理になる。
【０２２３】
ＥＳ部の構成（４ＥＣ−Ｃａｓｅ３）
図２２は、４ＥＣ−Ｃａｓｅ３の場合のエラー探索（ＥＳ）部２５の構成である。４ＥＣであるのでΓ≠０，Ｑ≠０，ｃ≠０であり、更にＣａｓｅ３の場合なので、Ｓ＝０及びｂ≠０である。
【０２２４】
クロックｃｋ１０でアダーＡＤ１を用いてｂ３を求め、クロックｃｋ１１でＨ＝ｃｂ−３／２を計算する。３次方程式解法デコーダＳＬＶｗによりｗ３＋ｗ＝Ｈからｗをデコードし、クロックｃｋ１２でアダーＡＤ４によりψ＝ｗｂ１／２を計算する。
【０２２５】
クロックｃｋ１３でパリティチェッカＰＣによりδ＝ψ＋Ｄを計算し、クロックｃｋ１４でアダーＡＤ１によりＪ＝Ｑδ−２を計算する。２次方程式解法デコーダＳＬＶｕを使用してｕ２＋ｕ＝Ｊから２つ、ｕ１とｕ２をデコードし、クロックｃｋ１５でアダーＡＤ１とＡＤ２によりα０＝δｕ１とβ０＝δｕ２を計算し、α１＝β１＝ψ１／２とする。
【０２２６】
クロックｃｋ１６でアダーＡＤ１によりＬ＝α０α１−２を、アダーＡＤ２によりＭ＝β０β１−２を計算する。２次方程式解法デコーダＳＬＶｕを時分割して使用して、ｙ２＋ｙ＝Ｌとｚ２＋ｚ＝Ｍとしてｙとｚをそれぞれ２つ、ｙ１，ｙ２とｚ１，ｚ２としてデコードする。
【０２２７】
クロックｃｋ１７でアダーＡＤ１〜ＡＤ４によりＸ１＝α１ｙ１，Ｘ２＝α１ｙ２，Ｘ３＝β１ｚ２，Ｘ４＝β１ｚ２を計算する。ただしデコーダＳＬＶｕの時分割にあわせてクロックｃｋ１７内で時分割を行う。
【０２２８】
全処理は２６ステップで終了する。その制御クロックの発生の様子を図２３に示す。定常的に発生されるクロックＣＬから、信号ＥＳ３によって処理のためのステップクロックτの２６パルス、τ0〜τ２５を切り取る。このτからアダーＡＤやパリティチェッカＰＣの動作に必要なクロックｃｋ１０〜ｃｋ１７をさらに必要なステップ数として切り取って演算処理を行なう。
【０２２９】
アダーＡＤには２ステップ、パリティチェッカＰＣはコード変換デコードを入れて４ステップを用いる。方程式解法デコーダＳＬＶはデコードに２ステップを要するので、アダーＡＤとデコードで４または６ステップの処理となる。
【０２３０】
ＥＳ部の構成（４ＥＣ−Ｃａｓｅ４）
図２４は、４ＥＣ−Ｃａｓｅ４の場合のエラー探索（ＥＳ）部２５の構成である。４ＥＣであるのでΓ≠０，Ｑ≠０，ｃ≠０であり、更にＣａｓｅ３の場合なので、Ｓ＝０及びｂ＝０である。
【０２３１】
クロックｃｋ１０で３次方程式解法デコーダＳＬＶｃｕｂｅを使用して、δ＝ｃ１／３とする。クロックｃｋ１１でアダーＡＤ１によりＪ＝Ｑδ−２を計算する。２次方程式解法デコーダＳＬＶｕを使用して、ｕ２＋ｕ＝Ｊから２つ、ｕ１とｕ２をデコードし、クロックｃｋ１２でアダーＡＤ１とＡＤ２により、α０＝δｕ１とβ０＝δｕ２を計算し、α１＝β１＝δ１／２とする。
【０２３２】
クロックｃｋ１３でアダーＡＤ１によりＬ＝α０α１−２を、アダーＡＤ２によりＭ＝β０β１−２を計算する。２次方程式解法デコーダＳＬＶｕを時分割して使用して、ｙ２＋ｙ＝Ｌとｚ２＋ｚ＝Ｍとしてｙとｚをそれぞれ２つ、ｙ１，ｙ２とｚ１，ｚ２としてデコードする。クロックｃｋ１４でアダーＡＤ１〜ＡＤ４によりし、Ｘ１＝α１ｙ１，Ｘ２＝α１ｙ２，Ｘ３＝β１ｚ１，Ｘ４＝β１ｚ２を計算する。ただしデコーダＳＬＶｕの時分割にあわせてクロックｃｋ１４内で時分割を行う。
【０２３３】
全処理は１６ステップで終了する。その制御クロック発生の様子を図２５に示す。定常的に発生されるクロックＣＬから、信号ＥＳ４によって処理のためのステップクロックτとして１６パルス、τ０〜τ１５を切り取る。このτからアダーＡＤとパリティチェッカＰＣの動作に必要なクロックｃｋ１０〜ｃｋ１４をさらに必要なステップ数として切り取って演算処理を行なう。
【０２３４】
アダーＡＤと３次方程式解法デコーダＳＬＶｃｕｂｅには２ステップ、パリティチェッカＰＣはコード変換デコードを入れて４ステップを用いる。デコーダＳＬＶはデコードに２ステップを要するので、アダーＡＤとデコードで４または６ステップの処理となる。
【０２３５】
ＥＳ部の構成（３ＥＣ）
図２６は、３ＥＣの場合のＥＳ部２５の構成である。３ＥＣであるので、Γ≠０、Ｑ＝０またはｃ＝０の場合で、３つの根が異なる条件として、ζ≠０、Ｔ≠０である。
【０２３６】
ｂ≠０なら、クロックｃｋ１０でアダーＡＤ１を用いてｂ３を求め、クロックｃｋ１１でＨ＝ζＴｂ−３／２を計算する。３次方程式解法デコーダＳＬＶｗによりｗ３＋ｗ＝Ｈからｗをデコードし、クロックｃｋ１２でアダーＡＤ４によりψ＝ｗｂ１／２を計算する。
【０２３７】
ｂ＝０なら、３次方程式解法デコーダＳＬＶｃｕｂｅによりψ＝（ζＴ）１／３とする。クロックｃｋ１３でパリティチェッカＰＣによりβ０＝ψ＋Ｄを計算し、クロックｃｋ１４でアダーＡＤ１によりβ０ψを、アダーＡＤ３によりＸ１＝Ｔβ０−１を計算する。クロックｃｋ１５でβ１＝β０ψＴ−１を計算する。
【０２３８】
クロックｃｋ１６でアダーＡＤ２によりＪ＝β０β１−２を計算する。２次方程式解法デコーダＳＬＶｕを使用して、ｕ２＋ｕ＝Ｊとしてｕを２つ、ｕ１とｕ２としてデコードし、クロックｃｋ１７でアダーＡＤ１とＡＤ２により、Ｘ２＝β１ｕ１とＸ３＝β１ｕ２を計算する。
【０２３９】
全処理は最長２３ステップで終了する。その制御クロック発生の様子を図２７に示す。定常的に発生されるクロックＣＬから、信号３ＥＣによって処理のためのステップクロックτを２３パルス、τ０〜τ２２を切り取る。このτからアダーＡＤやパリティチェッカＰＣの動作に必要なクロックｃｋ１０〜ｃｋ１７をさらに必要なステップ数として切り取って演算処理を行なう。
【０２４０】
アダーと３次方程式解法デコーダＳＬＶｃｕｂｅには２ステップ、パリティチェッカＰＣはコード変換デコードを入れて４ステップを用いる。デコーダＳＬＶはデコードに２ステップを要するので、アダーＡＤとデコードで４ステップの処理となる。
【０２４１】
ＥＳ部の構成（２ＥＣ）
図２８は、２ＥＣの場合のＥＳ部２５の構成である。２ＥＣであるので、Γ＝０、ζ≠０であり、２根異なる条件としてさらに、Ｓ≠０，Ｄ≠０である。
【０２４２】
クロックｃｋ１０でアダーＡＤ４を用いてＫ＝ＤＳ−２を計算する。２次方程式解法デコーダＳＬＶｕを使用して、ｕ２＋ｕ＝Ｊとしてｕを２つ、ｕ１とｕ２としてデコードし、クロックｃｋ１１でアダーＡＤ１とＡＤ２により、Ｘ１＝Ｓｕ１とＸ２＝Ｓｕ２を計算する。
【０２４３】
全処理は最長６ステップで終了する。その制御クロック発生の様子を図２９に示す。定常的に発生されるクロックＣＬから、信号２ＥＣによって処理のためのステップクロックτを６パルス、τ０〜τ５を切り取る。このτからアダーＡＤやパリティチェッカＰＣの動作に必要なクロックｃｋ１０とｃｋ１１をさらに必要なステップ数として切り取って演算処理を行なう。
【０２４４】
アダーＡＤには２ステップ、デコーダＳＬＶには２ステップを要するので、アダーＡＤとデコーダとで４ステップの処理となる。
【０２４５】
以上、いずれの解探索演算処理もＳＥＣ部のステップ数より少ない。ＳＥＣ部での処理が完了すれば５ビットエラー以上の判断が行えるので、エラー位置探索処理にかかる時間はエラー警告の判断にかかる時間より少ない。具体的には、５ビット以上のエラーの有無の判断が出るまでの時間より少ない時間で、エラー判断からエラーの位置探索の結果が出るまでの処理が完了できる。
【０２４６】
各演算処理では同一の演算回路を時分割で使用して回路規模を小さく出来ることを見たが、時分割処理で重要なのは処理結果の受け渡しである。このためにデータラッチを設けて演算結果を必要な期間保持し利用する。そのラッチ回路も規模縮小のために時分割で利用するので、保持データがぶつからないようにラッチ回路を設けてデータの出し入れを制御する必要がある。
【０２４７】
以下に、ＳＥＣ部及びＥＳ部において、各演算回路が出力する処理データと、その処理データを保持する、時分割利用されるラッチ回路との関係を、クロックと共にテーブルにして示す。
【０２４８】
図３０は、ＳＥＣ部でのアダー（ＡＤ）の演算処理データ（ガロア体の要素）と、それを保持するラッチ回路を、それが処理データを保持すべきクロック期間との関係でまとめたものである。同様に図３１は、ＳＥＣ部でのシンドローム演算処理“Ｓｙｎｄ”及びパリティチェッカ（ＰＣ）処理のデータを保持するラッチ回路部をまとめたものである。
【０２４９】
なおシンドローム計算処理は、その後の演算処理の開始クロックｃｋ０より前であって、これをクロックサイクルｃｋ-1として示している。
【０２５０】
図３０について説明すれば、アダーは前述のように４つＡＤ１〜ＡＤ４があり、テーブルの第２列目には第１列目のアダーの動作により出力される要素名を記載してある。それらの要素を保持すべきラッチ回路と保持すべき期間とは、第３列目以降に時系列で示したクロックｃｋ０−ｃｋ９の下に示している。
【０２５１】
具体的に、図３０のテーブルの左上の欄から説明すれば、アダーＡＤ２，ＡＤ３，ＡＤ４により得られるデータＳ７，Ｓ５，Ｓ３は、それぞれクロックｃｋ０でラッチ回路Ａ１，Ａ２，Ａ３に保持されることを示している。それぞれのデータを保持する期間は、Ｓ７については、クロックｃｋ０，ｃｋ１の期間、Ｓ５については、クロックｃｋ０，ｃｋ１の期間、Ｓ３については、クロックｃｋ０−ｃｋ４の期間であり、これらのラッチ回路Ａ１，Ａ２，Ａ３によるデータ保持期間を、斜線で示している。
【０２５２】
以下、他の要素出力についても同様である。最終的に要素データを固定的に維持することが必要となるクロックまではラッチ回路は時分割で使用して回路規模を減らす。
【０２５３】
ＳＥＣ部では、ラッチ回路として必要なのは、Ａ１〜Ａ３、Ｂ１〜Ｂ４、Ｒ１〜Ｒ１１の１８種類で、各々が１３ビット構成であるので、１８×１３＝２３８ビットのラッチ回路が必要となる。二重枠で示したラッチ回路Ｒ１〜Ｒ１１は、対応するクロック以後、最終的にＥＣＣ期間中データを保持することが必要となるラッチ回路であって、これが先にＥＳ部の計算回路構成を示した図１８，２０，２２，２４，２６，２８におけるレジスタＲＥＧを構成する。
【０２５４】
ＳＥＣ部での演算に必要な上述したラッチ回路は、ＥＳ部の個々の分岐のケースでも利用することになる。このＥＳ部でのラッチ回路時分割使用の例を、図３２〜図３７に示す。
【０２５５】
図３２，図３３，図３４及び図３５は、それぞれエラー探索の４つの場合Ｃａｓｅ１，Ｃａｓｅ２，Ｃａｓｅ３及びＣａｓｅ４についての、ラッチ回路の時分割使用をまとめている。ラッチ回路Ａ１−Ａ４，Ｂ１−Ｂ４が、それぞれの演算処理について斜線で示すクロック期間データ保持を行なうように、時分割利用される。
【０２５６】
各々のケースは重複して進行することはないので、各々が独立してラッチ回路の使用を設定できる。なお、図３３及び図３５の演算回路“ＳＬＶｃ”は、先に説明した３次方程式解法デコーダＳＬＶｃｕｂｅである。
【０２５７】
図３６及び図３７は同様に、それぞれ３ＥＣと２ＥＣのエラー探索についてのラッチ回路の時分割使用の例を示す。
【０２５８】
以上のようにラッチ回路の時分割使用が決まると、各演算回路の時分割動作に際してそれに接続するラッチ回路が決まる。具体的に、先に説明したＳＥＣ部及びＥＳ部の計算回路構成において、それらの計算回路の入出力の要素データに対応して、ラッチ回路名Ａ１〜Ａ４，Ｂ１〜Ｂ４，Ｒ１〜Ｒ１１を当てはめて示すと、図３８〜図４４のようになる。
【０２５９】
即ち、図３８は図１８のＳＥＣ部対応、図３９は図２０のＥＳ部対応、図４０は図２２のＥＳ部対応、図４１は図２４のＥＳ部対応、図４２は図２６のＥＳ部、図４４は図２８のＥＳ部対応である。
【０２６０】
ガロア体の要素としては、２の累乗やこの逆要素はインデックスのバイナリ表示のビット位置シフトで対応可能なので、これらの要素はラッチ内のデータとしては同じであり、同一のラッチ回路に接続される。
【０２６１】
二つの入力が同じラッチ回路に接続される場合（例えば、図３８のクロックｃｋ０でのアダーＡＤ２，ＡＤ３，ＡＤ４）は、アダー等の入力でのビット接続が各々シフトして２の累乗を表現することになる。
【０２６２】
図３９〜図４４の各ＥＳ部構成においては、レジスタＲＥＧ内のデータにも対応するラッチ回路名Ｒ１〜Ｒ１１を示している。これらのラッチ回路の内容によって当該ケースへの分岐が決まるので、それぞれのケースでの分岐条件を、ラッチ回路Ｒの下に示している。
【０２６３】
図３９において、入力接続がＡ３／Ｒ８になっているところ（クロックｃｋ１６でのアダーＡＤ１）は、δの条件によって分岐したときに一部計算処理をバイパスすることがあることを反映している。これは以下に示す他の場合でも同様である。
【０２６４】
図４５は、ガロア体の要素を利用してコード化したデータを保持したメモリセルアレイからの読み出しデータに基づいて行なわれるＥＣＣ処理回路について、具体的なラッチ回路と演算素子とデータバスとの回路レイアウト例及びその間のデータの流れを示すブロック図である。即ち、図１では、ＳＥＣ部２４とＥＳ部２５を機能的にブロックに分けて示したが、それらの多くの演算素子は共有回路であって、実際の回路レイアウトとしては、機能的に分けられているわけではない。
【０２６５】
図４５の回路レイアウトの中央部４０１が、アダーＡＤ１〜ＡＤ４やパリティチェッカＰＣ、方程式解法デコーダｓｏｌｖｅｒ、コード変換デコーダ“index to pn(x)”およぴ“pn(x) to index”が配列された演算回路部である。演算回路部４０１の演算素子配列方向の端部には、複数のラッチＡ，Ｂ，Ｒを有するラッチ回路部４０２が配置されている。
【０２６６】
演算回路部４０１とラッチ回路部４０２を挟むように、その一方側に演算素子入力となるインデックスデータを供給する入力側データバス４０３が、他方側に演算回路部４０１から得られる演算素子出力インデックスデータが乗る出力側データバス４０４が、互いに並行して配置される。入力側データバス４０３と演算回路部４０１の間には、演算回路部４０１へのデータ転送制御を行なうＭＵＸからなる転送ゲート回路４０６，４０７が、出力側データバス４０４と演算回路部４０１の間には、演算回路部４０１のデータの出力側データバス４０４の転送制御を行なうＭＵＸからなる転送ゲート回路４０８，４０９配置される。
【０２６７】
また、ラッチ回路部４０２と入力側データバス４０３の間にはラッチ回路データを入力側データバス４０３に転送制御する転送ゲート部４０５が、ラッチ回路部４０５と出力側データバス４０４の間にはバスデータをラッチ回路部４０２に転送制御する転送ゲート部４１２が配置される。
【０２６８】
データバス４０３，４０４の左側の端部には、各演算素子の時分割動作とバスとのデータのやり取りを制御するクロックやケース選択信号等のタイミング信号を発生するタイミング信号発生部４１１がある。クロック信号は、転送ゲート回路４０５〜４０９，４１２に供給される。
【０２６９】
データの流れに従って順に概略回路動作を説明する。
【０２７０】
まず、右上のシンドローム計算部４１０で得られた結果は、演算素子ＰＣを経るか直接コード変換デコーダ４０１即ち“pn(x) to index”デコーダに送られて、ガロア体の要素インデックスとなる。そして、出力マルチプレクサ４０９を経て出力側データバス４０４のデータとなる。
【０２７１】
この出力側データバス４０４に乗ったデータは転送ゲート回路４１２を経てラッチ回路（Ａ，Ｂ，Ｒ）４０２に取り込まれる。ラッチ回路４０２内のデータは適当なタイミングで転送ゲート回路４０５を経て入力側データバス４０３のインデックスデータとなる。このバスに乗ったデータは転送ゲート回路４０６を経て演算素子ＡＤ１〜ＡＤ４に直接インデックスとして取り込まれるか、或いは転送ゲート回路４０７を経てコード変換デコーダ即ち“index to pn(x)”デコーダを経て一時係数表示に変換され演算素子ＰＣに送られる。
【０２７２】
演算が終了したら、その出力は出力転送ゲート回路４０８を経るか、演算素子ＰＣからならコード変換デコーダ即ち“pn(x) to index”デコーダによりインデックスになり、出力転送ゲート回路４０９を経て出力側データバス４０４に送られる。そのデータは再び転送ゲート回路４１２を経てラッチ回路（Ａ，Ｂ，Ｒ）４０２に取り込まれ、適当なタイミングで入力側データバス４０３に送られるが、一部のラッチデータは内部マルチプレクサＭＵＸの適当なタイミングで方程式解法デコーダ“solver”を経てバスに再び送られる。
【０２７３】
以上の様に入出力バスのデータをラッチや演算素子が適切なタイミングで利用することにより演算処理が進行する。ＥＣＣ処理の終了時点で出力側データバス４０４に残っているデータがエラーの位置情報であるＸ１〜Ｘ４となる。
【０２７４】
図４６は、ラッチ回路と入出力データバスの具体的接続関係を示す。ここでは、ＰＭＯＳトランジスタとＮＭＯＳトランジスタを並列接続した転送ゲートを、図示のように記号化して示している。１ビットラッチ“ｂ”は、二つのインバータから構成されるバッファと同じで、データの保持をアシストするために弱いフィードバックのインバータが点線の様に付加されている。
【０２７５】
このデータ保持バッファであるラッチへのバスからのデータ転送はイン・クロック“in clocks”によって制御され、適切なタイミングで発生されて対応するバス線と接続される。ラッチからのデータ転送出力はアウト・クロック“out clocks”によって制御され、適切なタイミングで発生されて対応するバス線と接続される。この1ビットラッチ“ｂ”の部分は、図のように回路記号化できる。
【０２７６】
さらにガロア体ＧＦ（２１３）の要素のインデックスは１３ビットであり、１３個の１ビットラッチで要素を保持できる。従って図４７に示すように、１３ビットのラッチｂ０，ｂ１，…，ｂ１２をまとめたものを一つの回路記号“Latch B”で１３ビットラッチとして表すことができる。
【０２７７】
入出力のマルチプレクサＭＵＸに入力されるクロック信号“in ck”，“out ck”は、図４５のラッチと演算素子の接続関係図で説明したと同様、各々のラッチの入出力バスに対するデータ分配を指示する。
【０２７８】
以上、ＥＣＣ回路システムで使用されるガロア体要素の表現間の変換デコーダは和の演算を工夫することによって、多項式係数表現からインデックス表現への変換デコーダである“pn(x) to index”デコーダと、インデックス表現から多項式係数表現への変換デコーダである“index to pn(x)”デコーダが各々一つで、最小限とできるようになった。他の同様なデコーダは方程式解法デコーダとしてＳＶＬｃｕｂｅ，ＳＬＶｗ，ＳＬＶｕの三つであり、これらはすべて時分割されて利用するように回路システムが構成される。
【０２７９】
さらに回路規模を小さくするには、デコーダ自体の構成の工夫が必要である。その一つの１３ビットコード変換デコーダＤＥＣの変形例を、図４８に示す。先に図１０で説明したコード変換デコーダＤＥＣの回路ブロック数は、デコーダが対応する要素表現のビット数である１３個であった。この１３ビットを一括でなくビットごとに時分割してデコードするように構成すれば、デコード時間は延びるものの回路規模を更に小さく出来る可能性がある。
【０２８０】
即ち図４８に示すのは、１３ビット一括ではなく、1ビット分ずつデコードするコード変換デコーダＤＥＣの例であり、回路ブロック数は１である。共通ＮＯＲノードＮＤは、１３ステップτ０〜τ１２で選択されるスイッチＳＷを介して、１３ビット出力Ｏ０〜Ｏｍ（ｍ＝１２）に対応する１３個のラッチＬＴ２に接続される。
【０２８１】
即ちクロックサイクルステップとしては、図４９に示す１３ステップτ０〜τ１２を利用し、デコーダの放電経路ＰＤＣの状態を各ビットのサイクルステップごとに切り替えていく。
【０２８２】
ステップτ０〜τ１２は、１３ビット（ｍ＝０〜１２）のデコードとして放電の最終分岐の部分デコード信号Ｃ0〜Ｃ15の放電スイッチをオンにする。このスイッチは表現のビットｍのデコードに従ってＮＭＯＳトランジスタを配置することで実現する。出力ラッチＬＴ２のリセットには、それぞれセットステップ直前のステップが利用される。
【０２８３】
入力データビットＩ０〜Ｉ１１を４ビットずつ部分デコードして信号／Ａ０〜／Ａ１５、／Ｂ０〜／Ｂ１５、Ｃ０〜Ｃ１５を作るＮＡＮＤゲートＧ１〜Ｇ３、／Ａｉと／ＢｋからＮＯＲ信号ＡｉＢｋを作るＮＯＲゲートＧ４の部分は、図１０と変わらない。
【０２８４】
以上の構成で回路ブロック数としては1ビット分でコード変換デコーダを構成できる。クロックによる放電回路ＰＤＣのトランジスタアレイをコンパクトに集積回路としてレイアウトできれば回路規模をかなり小さく出来る。ただしデコード時間は一括方式に比較して数倍が必要となる。
【０２８５】
クロックサイクルステップによって時分割回路システムは制御されるが、以下にクロック発生回路の簡便な構成方法を説明する。
【０２８６】
図５０は、例として６４クロックサイクルステップを発生するクロック発生回路を示している。回路を構成するユニット数の組合せにより必要最小限のステップ数を発生する回路を構成できる。
【０２８７】
この回路は個別のクロックパルスを必要とする個数、基本クロックＣＬに同期して発生するものであり、先に説明したクッロクｃｋ０〜ｃｋ１７を構成するステップクロックτiとなるものである。
【０２８８】
図５０は、概要説明図であり、クロック発生回路は二つの個別の周期を持ったブロックBlock_s，Block_tにより構成される。各ブロックは複数ユニットで構成され、このユニットの状態が"1"である状態をクロックサイクルで左右にシフトして"1"状態と"0"状態の境界からステップクロックを発生するものである。
【０２８９】
具体的に一方のブロックBlock_sはユニット数が７、もう一方のブロックBlock_tはユニット数が３である。
【０２９０】
外部クロックＣＬが信号“gate”がＨの期間に内部に取り込まれて、クロックｃｌｋ，／ｃｌｋになる。第１のブロックBlock_sではクロックｃｌｋでユニットの境界が右に移動し、右端に達すると反射して左に移動し、左端に達すると反射して右に移動するという動作を繰り返す。
【０２９１】
移動するユニット“１”，“０”の境界番号を２ｉ〜２ｉ＋２（ｉ＝０〜３）で表すものとし、２ｉ＝０はＶｄｄ，２ｉ＋２＝８はＶｓｓとして、クロックステップ信号／ｓｉ，／ｓ７−ｉは、図の様なロジックゲートＧ１１，Ｇ１２で合成される。なお信号Ｒはユニット境界が右への移動中であることを示し、信号Ｌは左への移動中であることを示す信号である。このブロックBlock_sにより、境界の移動が一巡するごとに内部クロックｃｋ，／ｃｋが発生される。
【０２９２】
第２のブロックBlock_tは、クロックｃｋによってユニットの状態の境界が移動し、ブロックBlock_sと同様の動作を行う。このブロックBlock_tで発生するステップ信号はクロックパルス間にギャップを設けないので、ユニット数はブロックBlock_sのほぼ半分である。
【０２９３】
移動するユニット“１”，“０”の境界番号をｊ（＝０〜３）で表すものとし、ｊ＝０はＶｄｄ，ｊ＋１＝４はＶｓｓとして、クロックステップ信号／ｔｊ，／ｔ７−ｉは、図の様なロジックゲートＧ１３，Ｇ１４で合成される。境界の状態からロジック合成されるステップ信号／ｔｊの数は／ｓｉと同じであるが、合成の仕方がブロックBlock_sとは異なる。信号ＲＳＦはユニット境界が右への移動中であることを示し、信号ＬＳＦは左への移動中であることを示す。
【０２９４】
ステップ信号／ｓｐと／ｔｑのＮＯＲ論理をとるゲートＧ１５により、ステップクロックτｐ＋８ｑを得る。
【０２９５】
図５１は、ブロックBlock_sの詳細回路図である。クロスカップルしたＣＭＯＳインバータ対により７ユニットが構成されている。各ユニットには、ユニットのデータ状態を左右に移すことが出来るように、クロックｃｌｋ，／ｃｌｋとシフト信号Ｒ，Ｌにより制御される放電パスが設けられている。
【０２９６】
ロジック回路５１１は、ユニット境界信号Ｂ１〜Ｂ７とシフト信号Ｒ，Ｌによりステップ信号／ｓ０〜／ｓ７を合成するステップ合成回路である。回路のノードＢ１〜Ｂ６とクロックノードｃｋは初期化信号ｒｓでＶｓｓに初期化され、クロックｃｌｋによりユニット状態が移動する。
【０２９７】
シフト信号発生回路５１２は、ブロックBlock_sの両端ノードの信号ＦとＣに基づいてシフト信号Ｒ，Ｌを発生する。クロックｃｋを発生するクロック発生回路５１３は、ブロックBlock_sの両端ノードの信号ＦとＣと、シフト信号Ｒ，Ｌによって、移動が一巡するたびに状態を変えるクロックｃｋを発生する。
【０２９８】
図５２は、ブロックBlock_tの詳細回路図である。クロスカップルしたＣＭＯＳインバータ対により３ユニットが構成されている。各ユニットには、ユニット状態を左右に移すことが出来るように、クロックｃｋ，／ｃｋとシフト信号ＲＳＦ，ＬＳＦにより制御される放電パスが設けられている。
【０２９９】
論理ゲート回路５２１は、ユニット境界信号Ｃ１〜Ｃ３とシフト信号ＲＳＦ，ＬＳＦによってステップ信号／ｔ０／ｔ７を合成するステップ合成回路である。回路ノードＣ１とＣ２は初期化信号ｒｓでＶｓｓに初期化され、クロックｃｋによりユニット状態が移動する。
【０３００】
シフト信号発生回路５２２は、ブロックの両端ノードの信号ＤとＥに基づいて境界移動方向を決めるシフト信号ＲＳＦ，ＬＳＦを発生する。
【０３０１】
図５３は、クロック発生回路からの主な発生信号の波形を示す。ステップ信号／ｓ０〜／ｓ７が互いにギャップを有するクロックパルスであり、ステップ信号／ｔ０〜／ｔ７がギャップのないクロックパルスであって、／ｓ０〜／ｓ７の一巡ごとに発生しているのがわかる。
【符号の説明】
【０３０２】
２１…エンコード部、２２…メモリコア、２３…シンドローム計算部、２４…シンドローム要素計算（ＳＥＣ）部、２５…エラー探索（ＥＳ）部、２６…エラー訂正（ＥＣ）部、２６…クロック発生回路、３１…時分割デコーダ、３２…並列パリティチェック回路、３３…直列パリティチェック回路、ＤＥＣ…１３ビットコード変換デコーダ、ＰＣ…１３並列２入力パリティチェッカ（要素の和計算回路）、ＡＤ１〜ＡＤ４…１３ビットアダー（要素の積計算回路）、ＳＬＶｕ，ＳＬＶｗ，ＳＬＶｃｕｂｅ…方程式解法デコーダ。
【図１】
2011165026.tif 000003
【図２】
2011165026.tif 000004
【図３】
2011165026.tif 000005
【図４】
2011165026.tif 000006
【図５】
2011165026.tif 000007
【図６】
2011165026.tif 000008
【図７】
2011165026.tif 000009
【図８】
2011165026.tif 000010
【図９】
2011165026.tif 000011
【図１０】
2011165026.tif 000012
【図１１】
2011165026.tif 000013
【図１２】
2011165026.tif 000014
【図１３】
2011165026.tif 000015
【図１４】
2011165026.tif 000016
【図１５】
2011165026.tif 000017
【図１６】
2011165026.tif 000018
【図１７】
2011165026.tif 000019
【図１８】
2011165026.tif 000020
【図１９】
2011165026.tif 000021
【図２０】
2011165026.tif 000022
【図２１】
2011165026.tif 000023
【図２２】
2011165026.tif 000024
【図２３】
2011165026.tif 000025
【図２４】
2011165026.tif 000026
【図２５】
2011165026.tif 000027
【図２６】
2011165026.tif 000028
【図２７】
2011165026.tif 000029
【図２８】
2011165026.tif 000030
【図２９】
2011165026.tif 000031
【図３０】
2011165026.tif 000032
【図３１】
2011165026.tif 000033
【図３２】
2011165026.tif 000034
【図３３】
2011165026.tif 000035
【図３４】
2011165026.tif 000036
【図３５】
2011165026.tif 000037
【図３６】
2011165026.tif 000038
【図３７】
2011165026.tif 000039
【図３８】
2011165026.tif 000040
【図３９】
2011165026.tif 000041
【図４０】
2011165026.tif 000042
【図４１】
2011165026.tif 000043
【図４２】
2011165026.tif 000044
【図４３】
2011165026.tif 000045
【図４４】
2011165026.tif 000046
【図４５】
2011165026.tif 000047
【図４６】
2011165026.tif 000048
【図４７】
2011165026.tif 000049
【図４８】
2011165026.tif 000050
【図４９】
2011165026.tif 000051
【図５０】
2011165026.tif 000052
【図５１】
2011165026.tif 000053
【図５２】
2011165026.tif 000054
【図５３】
2011165026.tif 000055