JP3710586B2 - 誤り訂正装置 - Google Patents
誤り訂正装置 Download PDFInfo
- Publication number
- JP3710586B2 JP3710586B2 JP03768297A JP3768297A JP3710586B2 JP 3710586 B2 JP3710586 B2 JP 3710586B2 JP 03768297 A JP03768297 A JP 03768297A JP 3768297 A JP3768297 A JP 3768297A JP 3710586 B2 JP3710586 B2 JP 3710586B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- value
- address
- mode
- error correction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1545—Determination of error locations, e.g. Chien search or other methods or arrangements for the determination of the roots of the error locator polynomial
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
- H03M13/15—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
- H03M13/151—Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
- H03M13/1525—Determination and particular use of error location polynomials
- H03M13/1535—Determination and particular use of error location polynomials using the Euclid algorithm
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Algebra (AREA)
- General Physics & Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Description
【発明の属する技術分野】
この発明は誤り訂正装置に関し、特に誤り位置多項式及び誤り評価多項式の係数が、符号の最終桁から先頭桁へと進む順に求められる復号方法に基づく誤り訂正装置に関する。
【0002】
【従来の技術】
図57は、従来のリードソロモン誤り訂正装置200の構成を示すブロック図である。リードソロモン誤り訂正装置200へと入力したリードソロモン符号のデータRSINを用い、シンドローム生成器1からシンドロームが求められる。このシンドロームに対して多項式生成器2において所定の処理が行われて、誤り位置多項式σ(x)及び誤り評価多項式ω(x)が求められる。
【0003】
しかし、多項式生成器2において、例えばユークリッド(Euclid)法を用いて誤り位置多項式σ(x)及び誤り評価多項式ω(x)を求める場合には、これらの係数が符号の最終桁から先頭桁へと進む順に求められることとなる。従ってチェーンサーチ(Chien search)を行う訂正器3においては、符号の最終バイトから先頭バイトへと順にサーチを開始する必要がある。
【0004】
これに対応して、データRSINを訂正器3へと与える場合には、符号の一まとまり毎にその桁の順序を逆に並べ替える必要がある。FILO(First In Last Out)型の記憶装置61,62並びにデマルチプレクサ71及びマルチプレクサ72はデータRSINに対してこの並べ替えを行うために設けられている。
【0005】
このようにして得られ、桁の順序が逆転したデータRSINは、訂正器3において誤り位置多項式σ(x)及び誤り評価多項式ω(x)の係数、並びにガロア体の元に基づいてその誤りが訂正される。訂正された符号も桁の順序が逆転しているので、これを元の順序に戻すべく、FILO型の記憶装置41,42並びにデマルチプレクサ73及びマルチプレクサ74が設けられており、マルチプレクサ74によって訂正後の符号RSOUTが出力される。
【0006】
【発明が解決しようとする課題】
従来のFILO型の記憶装置(以下、かかる記憶装置をも「FILO」と称す)はプッシュ操作とポップ操作によって動作するので、これを一つだけ用いた場合には、第1の組のデータについてFILOの処理を得た後、直ちに第2の組のデータについてFILOの処理を得ることはできない。第1の組のデータの読み出しが終わるまでに他の組のデータをFILOに入力すると、第1の組のデータが破壊されるためである。これでは連続して受信されるリードソロモン符号の複数を処理することはできない。
【0007】
従って、FILO41,42,61,62は、順次入力されたデータを入力された順とは逆にデータを出力するものの、図57に示された様に対として設けられる必要がある。
【0008】
FILO61,62はデマルチプレクサ71によってデータRSINが一まとまりのリードソロモン符号毎に振り分けられて与えられ、マルチプレクサ72によっていずれかの出力が訂正器3と与えられる。例えばデマルチプレクサ71が第1のまとまりのリードソロモン符号に対応するデータRSINをFILO61へと与える場合には、マルチプレクサ72はFILO62に格納されていた内容を訂正器3へと与える。一方、デマルチプレクサ71が第2のまとまりのリードソロモン符号に対応するデータRSINをFILO62へと与えると同時に、FILO61からは第1のまとまりのリードソロモン符号に対応するデータRSINが、その桁順を逆にしてマルチプレクサ72を介して訂正器3へと与えられる。FILO41,42並びにデマルチプレクサ73及びマルチプレクサ74に関しても同様である。
【0009】
つまり従来の技術では、交代に選択される一対のFILOを用いなければ、複数の組のデータについて連続的にFILOの処理を行うことができず、従ってデータを記憶する領域は一組のデータの2倍分が必要であった。結局シンドローム生成器1との遅延の整合を取るために設けられるFIFO(First In First Out)型の記憶装置5をも含めると、従来のリードソロモン誤り訂正装置200においては、符号長さの5倍の大きさの記憶単位(ここでは一つの記憶単位が1バイトを格納すると考える)が必要となる。
【0010】
本発明は上記問題点を解決するためになされたもので、複数の記憶素子の間においてデータの転送の方向を上から下へ向かう方向と、下から上へ向かう方向との双方向について行い、データを記憶する領域を逓減しつつも、連続的にFILOの機能を可能とする双方向FILOを用いることにより、回路規模を削減したリードソロモン誤り訂正装置を提供することを目的としている。
【0011】
【課題を解決するための手段】
この発明のうち請求項1にかかるものは、誤り訂正符号の誤り位置多項式及び誤り評価多項式の係数を符号の最終桁から先頭桁へと進む順に求める多項式生成器と、前記誤り訂正符号を構成するデータの列を逆に並び替える第1の双方向転送型記憶装置と、前記多項式生成器の出力及び前記並び替え部の出力から前記誤り訂正符号の訂正を行う訂正器と、前記訂正器が出力するデータの列を逆に並び替える第2の双方向転送型記憶装置とを備える誤り訂正装置である。そして、前記第1及び第2の双方向転送型記憶装置の少なくともいずれか一方が、いずれもが所定長のデータを格納する第0乃至第(N+K−1)(N≧2,K≧0)の記憶単位を有し、入力データはN個毎に組を成して交互に前記第0及び第(N+K−1)の記憶単位に入力され、前記入力データの異なる2つの前記組の先頭のデータがK個の前記記憶単位を挟んで対向しつつ、前記第0乃至第(N+K−1)の記憶単位において格納されるデータに対して順次に(N+K−1)回のシフト転送が行われ、前記シフト転送の方向が交互に逆向きに転向することにより、前記入力データがスイッチバックして出力される。
【0012】
この発明のうち請求項2にかかるものは、請求項1記載の誤り訂正装置であって、前記入力データは、制御信号が第1の値を採る場合に前記第0の記憶単位へ、第2の値を採る場合に前記第Nの記憶単位へ、それぞれ格納し、前記制御信号が前記第1の値を採る場合には前記第0乃至第(N+K−2)の記憶単位の格納する内容が前記第1乃至第(N+K−1)の記憶単位へ、前記第2の値を採る場合には前記第1乃至第(N+K−1)の記憶単位の格納する内容が前記第0乃至第(N+K−2)の記憶単位へ、それぞれ転送され、前記制御信号が前記第1の値を採る場合には前記第(N+K−1)の記憶単位の格納する内容を、前記第2の値を採る場合には前記第0の記憶単位の格納する内容を、それぞれ出力データとして採用され、前記制御信号は、前記第0の記憶単位にN回連続して前記入力データが書き込まれたことに対応して前記第2の値に、前記第(N+K−1)の記憶単位にN回連続して前記入力データが書き込まれたことに対応して前記第1の値に、それぞれ設定される。
【0013】
この発明のうち請求項3にかかるものは、誤り訂正符号の誤り位置多項式及び誤り評価多項式の係数を符号の最終桁から先頭桁へと進む順に求める多項式生成器と、前記誤り訂正符号を構成するデータの列を逆に並び替える第1の双方向転送型記憶装置と、前記多項式生成器の出力及び前記並び替え部の出力から前記誤り訂正符号の訂正を行う訂正器と、前記訂正器が出力するデータの列を逆に並び替える第2の双方向転送型記憶装置とを備える誤り訂正装置である。そして、前記第1及び第2の双方向転送型記憶装置の少なくともいずれか一方が、いずれもが所定長のデータを格納し、第0乃至第(N+K−1)のアドレスに対応する第0乃至第(N+K−1)(N≧2,K≧0)の記憶単位を有し、クロックに基づいて動作するメモリと、前記メモリの読み出しアドレス及び書き込みアドレスをそれぞれ生成するアドレス生成部とを有し、入力データはN個毎に組を成し、前記記憶単位の格納する内容を読み出しつつこれに追随して入力データが書き込まれ、前記入力データの組の更新に対応して前記読み出しアドレス及び前記書き込みアドレスの移動する方向が逆転する。
【0014】
この発明のうち請求項4にかかるものは、請求項3記載の誤り訂正装置であって、制御信号が第1の値を採る場合には前記メモリの前記読み出しアドレスが前記書き込みアドレスに対して前記Kだけ大きく設定されつつ、前記クロックに基づいて前記読み出しアドレス及び前記書き込みアドレスのいずれもが1増加し、前記制御信号が第2の値を採る場合には前記読み出しアドレスが前記書き込みアドレスに対して前記Kだけ小さく設定されつつ、前記クロックに基づいて前記読み出しアドレス及び書き込みアドレスのいずれもが1減少し、前記制御信号は、前記書き込みアドレスが前記第(N−1)の記憶単位を指定した場合に対応して前記第2の値に、前記第Kの記憶単位を指定した場合に対応して前記第1の値に、それぞれ設定され、前記第(N−1)の記憶単位に対して前記書き込みが行われた後、前記書き込みアドレス及び前記読み出しアドレスはそれぞれ前記第(N+K−1)のアドレス、及び前記第(N−1)のアドレス、にそれぞれ設定され、前記第Kの記憶単位に対して前記書き込みが行われた後、前記書き込みアドレス及び前記読み出しアドレスはそれぞれ前記第0のアドレス、及び前記第Kのアドレス、にそれぞれ設定される。
【0015】
この発明のうち請求項5にかかるものは請求項4記載の誤り訂正装置であって、前記メモリの書き込み及び読み出しは前記クロックのそれぞれ立ち上がり及び立ち下がりを契機として行われ、前記書き込みアドレス及び読み出しアドレスは前記メモリの書き込みに引き続いて更新される。
【0016】
【発明の実施の形態】
A.リードソロモン誤り訂正装置:
図1は、本発明に係るリードソロモン誤り訂正装置100の構成を例示するブロック図である。リードソロモン誤り訂正装置100にはリードソロモン符号のデータRSIN及び、クロックCLKが入力する。データRSINはシンドローム生成器1及び、これと遅延時間の整合を取るためのFIFO5とに与えられる。
【0017】
シンドローム生成器1はデータRSINからシンドロームを求める。このシンドロームに対して多項式生成器2において、例えばユークリッド(Euclid)法を用いて誤り位置多項式σ(x)及び誤り評価多項式ω(x)が求められる。多項式生成器2においてからは誤り位置多項式σ(x)及び誤り評価多項式ω(x)の係数が符号の最終桁から先頭桁へと進む順に求められ、チェーンサーチを行う訂正器3においては、符号の最終バイトから先頭バイトへと順にサーチを開始する。
【0018】
例えば、リードソロモン符号としてRS(204,188,17)と表現される態様を採用した場合を考える。この場合は、一まとまりのリードソロモン符号のバイト数が204バイトであり、その内のデータ数は188バイト(従って残りの16バイトはパリティ検査記号)である。符号間距離は(2t+1=)17バイトであり、よって(t=)8バイトの誤り訂正が可能となる態様である。
【0019】
かかる態様のリードソロモン符号をガロアフィールドGF(28)に基づいて構成する例として、原始多項式にP(x)=x8+x4+x3+x2+1を、また生成多項式としてG(x)=(x−α0)・(x−α1)・…・(x−α15)を、それぞれ採用することができる。この場合、α0,α-1,α-2,α-3,α-4,α-5,α-6,α-7,α-8は16進数で表現してそれぞれ1,8e,47,ad,d8,6c,36,1b,83となる。
【0020】
訂正器3ではt次式の誤り位置多項式σ(x)及び(t−1)次式の誤り評価多項式ω(x)のそれぞれの係数sigm0〜sigm8,omeg0〜omeg7をフェッチする。これは一まとまりのリードソロモン符号の到着を示す信号syncを契機として行われる。そして次の一まとまりのリードソロモン符号の到着を示す信号syncが活性化しない間、クロックCLK毎に係数sigmp,omegqにそれぞれα-p,α-qを用いてガロアの乗算を行って(p=0〜8,q=0〜7)、その結果をsigm〔8:0〕,omeg〔7:0〕に格納する。具体的には下記の演算が行われる。
【0021】
【数1】
【0022】
ここで記号multはガロア乗算を行うことを示し、sync ?との表現は、信号syncが活性化している場合にはコロンの左側に示された変数sigm〔p〕(あるいはomeg〔q〕)に、非活性の場合にはコロンの右側に示された誤り位置多項式σ(x)の係数sigmp(あるいは誤り評価多項式ω(x)の係数omegq)に、それぞれカンマの右側に示された係数α-p(あるいはα-q)を乗ずることを示す。このようなガロアの乗算を行うことで、訂正器3におけるサーチの順は符号の最終バイトから先頭バイトへと向かう順になる。
【0023】
一方、FIFO5を通過したデータRSINは双方向FILO6に入力し、その表すリードソロモン符号の一まとまり毎に桁順が逆転されて訂正器3へ与えられるので、訂正器3はリードソロモン符号の誤りを訂正して出力することができる。なお、訂正器3においては訂正が可能であったか不可能であったかという情報も得られ、これはリードソロモン誤り訂正装置100の外部へと伝達可能である。
【0024】
訂正された符号も桁の順序が逆転しているので、これを元の順序に戻すべく双方向FILO4において桁順を元に戻して、リードソロモン誤り訂正装置100から訂正後の符号RSOUTが出力される。
【0025】
ここで、双方向FILO4,6の構成については以下の2種類が例示でき、いずれかの構成を、あるいはそれぞれ異なる構成を採ることができる。
【0026】
B.双方向FILOの概説:
実施の形態1.
図2は本発明の実施の形態1として採用し得る、シフトレジスタ型の双方向FILOの構成を示す概念図である。それぞれがLビット幅のデータを格納し得る記憶単位#0〜#N+K−1が、(N+K)段のスタックを構成している。例えばリードソロモン誤り訂正装置100においてはL=8,N=204に設定され、L,Nとは独立にK≧0の整数を設定できる。
【0027】
黒矢印及び白矢印は、それぞれ互いに異なるまとまりのリードソロモン符号についての双方向FILOに対する入出力を示している。左側において黒矢印で示されるように記憶単位#0へデータ(リードソロモン符号の一つの桁に相当)が順次に入力され、かつ記憶単位#N+K−1へと向かう方向へと記憶単位の間をシフトして転送される。このとき記憶単位#N+K−1へと転送されたデータは、左側において白矢印で示されるように読み出される。
【0028】
逆に、右側において白矢印で示されるように記憶単位#N+K−1へとデータが順次に入力され、かつ記憶単位#0へと向かう方向へと記憶単位の間をシフトして転送される。このとき記憶単位#0へと転送されたデータは、右側において黒矢印で示されるように読み出される。
【0029】
このようにして互いの先頭アドレスがK個の記憶単位を挟んで対向しつつ、スイッチバックの態様にて、異なるまとまりのリードソロモン符号の2組データが双方向FILOの異なる方向から入出力されるので、(N+K)段のスタックでも連続してリードソロモン符号の桁順を入れ替えることができる。
【0030】
従ってシフトレジスタ型の双方向FILOをK=0としてFILO3,4に採用することにより、リードソロモン誤り訂正装置100においては符号長さの3倍の大きさの記憶単位しか必要とならず、回路規模の削減を実現することができる。
【0031】
実施の形態2.
図3は本発明の実施の形態2として採用し得る、アドレスポインタ型の双方向FILOの構成を示す概念図である。それぞれがLビット幅のデータを格納し得る記憶単位#0〜#N+K−1が、(N+K)段のスタックを構成している。例えばリードソロモン誤り訂正装置100においてはL=8,N=204に設定され、L,Nとは独立にK≧0の整数を設定できる。
【0032】
黒矢印及び白矢印は、それぞれ互いに異なるまとまりのリードソロモン符号についての双方向FILOに対する入出力の方向を示している。左側において黒矢印で示される方向へとデータの書き込み及び読み出しが行われる。但し、読み出しアドレスは書き込みアドレスよりも黒矢印で示される方向へKだけ進行している。
【0033】
逆に、右側において白矢印で示されるように方向へとデータの書き込み及び読み出しが行われる。但し、読み出しアドレスは書き込みアドレスよりも白矢印で示される方向へKだけ進行している。
【0034】
このようにして、古いデータを読み出しつつその直後に新たなデータを書き込む処理を、シャトルの態様にて双方向に繰り返すので、(N+K)段のスタックでも連続してリードソロモン符号の桁順を入れ替えることができる。
【0035】
従ってシフトレジスタ型の双方向FILOをK=0としてFILO3,4に採用することにより、リードソロモン誤り訂正装置100においては符号長さの3倍の大きさの記憶単位しか必要とならず、回路規模の削減を実現することができる。
【0036】
C.双方向FILOの追加機能:
実施の形態3.
図4はこの発明の実施の形態3にかかるリードソロモン誤り訂正装置101の構成を例示するブロック図である。リードソロモン誤り訂正装置101はリードソロモン誤り訂正装置100と比較して、待機命令WAITによって処理を待機することができる機能が追加される点で異なっている。
【0037】
待機命令WAITによって処理を待機することにより、リードソロモン誤り訂正装置101の処理速度がデータRSINの伝送速度よりも早い場合にも整合性よく動作することができる。
【0038】
但し、従来から周知のシンドローム生成器1、多項式生成器2、訂正器3における待機動作はともかく、本明細書で初めて明確となる双方向FILOにおける待機動作は公知ではない。よって以下においては双方向FILOの具体的動作、具体的構成を待機動作と共に詳細に説明する。
【0039】
D.双方向FILOの具体的構成及び具体的動作:
(d−1)シフトレジスタ型の双方向FILO;
図5及び図6は両図相俟ってシフトレジスタ型の双方向FILOの動作を示すフローチャートである。両図は接続子J1〜J4によって互いに結合される。また、図7はシフトレジスタ型の双方向FILOの構成を例示するブロック図である。そして図8乃至図20は図7に示された双方向FILOの動作を順に示す模式図である。
【0040】
図7に示された双方向FILOはシフトレジスタを構成するメモリM0〜M3及び、これらの間で順次データを転送する制御部CNT1〜CNT3を備えている。具体的には、メモリM0,M1の間のデータの転送は制御部CNT1が、メモリM1,M2の間のデータの転送は制御部CNT2が、メモリM2,M3の間のデータの転送は制御部CNT3が、それぞれ行う。制御部CNT1〜CNT3はクロックCLKに同期して動作する。データが転送される方向は、モード信号MODEの値が“0”,“1”を採ることに対応して、それぞれを上から下へ向かう方向(M0からM3へ向かう方向)、下から上へ向かう方向(M3からM0へ向かう方向)となる。
【0041】
デマルチプレクサDMUX及びマルチプレクサMUXは、それぞれモード信号MODEの値に基づいて出力及び入力を行う。具体的には、デマルチプレクサDMUXは入力データDINを入力し、モード信号MODEの値が“0”,“1”を採ることに対応してそれぞれ“0”,“1”と付記された出力端(以下「“0”出力端」「“1”出力端」とする)へと入力データDINを出力する。また、マルチプレクサMUXは、モード信号MODEの値が“0”,“1”を採ることに対応してそれぞれ“0”,“1”と付記された入力端(以下「“0”入力端」「“1”入力端」とする)に入力されるデータDOUT1,DOUT2を出力データDOUTとして出力する。ここで、データDOUT1,DOUT2はそれぞれメモリM3,M0に格納されたデータである。
【0042】
モード信号MODEはカウンタCOUNT1,COUNT2、及び比較器CMPによって生成される。カウンタCOUNT1はクロックCLKをカウントしてモード制御値MODE_CNTを生成し、比較器CMPはこれを所定の値、例えば2ビットの値“11”(10進数でいう“3”)と比較する。モード制御値MODE_CNTは、入力データDINを格納するメモリが、データの移動方向に沿って何番目にあるのかを指示する。モード制御値MODE_CNTが所定の値と一致した場合には(これはモード信号MODEが“0”を採るならばメモリM3が、“1”を採るならばメモリM0が、それぞれ入力データDINを格納することを意味する)、カウンタCOUNT1をリセットしてモード制御値MODE_CNTの値を“0”にし、かつカウンタCOUNT2にカウントさせる。カウンタCOUNT2はクロックCLKをカウントするのではなく、比較器CMPの出力をカウントする1ビットのカウンタであり、その出力たるモード信号MODEの値が変化するタイミングがクロックCLKに同期する。
【0043】
カウンタCOUNT1は比較器CMPの出力によってリセットされるためのリセット端R2の他、双方向FILOのリセットに用いられるリセット信号RSTによってもリセットされる為にリセット端Rをも有している。同様に、カウンタCOUNT2にもリセット信号RSTによってリセットされる為のリセット端Rが設けられている。また、各メモリM0〜M3にもリセット信号RSTによってリセットされる為のリセット端Rが設けられている。
【0044】
図5に示されたフローチャートにおいて、ステップS101はクロックCLKにかかわらず実行される。このステップS101において、リセット命令が与えられたか否かが判断される。図7に即して言えばリセット信号RSTが立ち下がったか否かが判断される。リセット命令が与えられた場合(リセット信号RSTが立ち下がった場合)、接続子J2を介して図6に示されたステップS113〜S115が実行され、接続子J3を介して再びステップS101に戻る。
【0045】
ステップS113〜S115において双方向FILOのリセットの為の処理が実行される。ステップS113では第0番目乃至第(N−1)番目のメモリ、即ち全てのメモリの内容が初期化される。図7に即して言えばN=4であり、メモリM0〜M3の内容は、これらのリセット端Rに“H”から“L”への遷移が与えられることによってクリアされる。ステップS114では動作モードが第1モードに設定される。これは図7に即して言えばモード信号MODEの値が“0”に設定されることを示し、カウンタCOUNT2のリセット端Rに“H”から“L”への遷移が与えられることによって実現される。ステップS115では同様に、カウンタCOUNT1のリセット端Rに“H”から“L”への遷移が与えられることによってモード制御値MODE_CNTが“0”に設定される。
【0046】
図5に示されたステップS102,S100に関しては、図7に示された双方向FILOでは特に対応する機構が示されていないが、待機(wait)命令WT、可動(enable)命令ENを用いてメモリを管理することは通常よく行われており、その機構も周知の技術を用いて実現することができる。
【0047】
ステップS103において、動作モードが第1モードであるか、第2モードであるかが判断される。ここで第1及び第2モードはそれぞれモード信号MODEの値が“0”,“1”であることに対応し、制御部CNT1〜CNT3がデータを転送する方向はこれに対応して上から下へ向かう方向、下から上へ向かう方向となる。ステップS113〜S115が実行されて初めてステップS103が実行される場合には、ステップS114が実行された結果、モード信号MODEの値が“0”となっており、ステップS104へ進む。
【0048】
ステップS104において、末尾のメモリである第(N−1)番目のメモリの内容が出力データとして採用される。これはマルチプレクサMUXがモード信号MODEの値が“0”であることに対応して、出力データDOUTとしてデータDOUT1を採用することで実現される。図8はこの状態を示す図であり、全てのメモリM0〜M3がクリアされて“0”を格納している状態において、出力データDOUTはメモリM3の格納する内容(データDOUT1)を採っている。
【0049】
ステップS106,S108,S111,S112はクロックCLKに同期して、例えばその立ち上がりのタイミングを契機として実行される。まずステップS106において、先頭のメモリである第0番目のメモリ乃至末尾から2番目のメモリである第(N−2)番目のメモリの内容を、先頭から2番目のメモリである第1番目のメモリ乃至末尾のメモリである第(N−1)番目のメモリへと転送する。これは、制御部CNT1〜CNT3がメモリM0〜M3の間においてデータを上から下へ向かう方向へ転送することで実現される。従って、図8においてメモリM0〜M2に格納されていたデータ“0”,“0”,“0”が、それぞれメモリM1〜M3に格納されることになる。また、ステップS108において先頭のメモリである第0番目のメモリに入力データの値が格納される。例えば入力データDINの値としてA1が与えられていれば、メモリM0にはデータA1が格納される。図9はこのようにして得られた各メモリM0〜M3の格納内容を示している。
【0050】
ステップS110ではモード制御値MODE_CNTの値が吟味される。図9に示された状態では入力データDINの値が格納される対象はメモリM0であり、モード制御値MODE_CNTが“0”であるのでステップS112へ進む。ステップS112において、モード制御値MODE_CNTは“1”増加する。これは入力データDINを格納するメモリが順次移動することを示す。そして当該メモリが先頭もしくは末尾のメモリに対応することとなった場合(即ち(N−1)に等しくなった場合)には、ステップS110からステップS111へと進み、モード信号MODEの値を切り替えて動作モードを変更し、モード制御値の値も“0”に設定する。当該メモリが先頭もしくは末尾のメモリに対応しない間は、接続子J1を介してステップS103へ戻る。
【0051】
図10はステップS114が実行されてから2回目にステップS104が実行されている状態を示している。そしてクロックCLKの立ち上がりを契機として、図8乃至図10においてメモリM0〜M2に格納されていたデータA1,“0”,“0”がそれぞれメモリM1〜M3に格納され(ステップS106)、入力データDINの新たな値A2がメモリM0へ格納される(ステップS108、図11)。その後のステップS112においてモード制御値MODE_CNTの値は増加するが、その値は10進数で2であってN−1(=3)に等しくはなく、ステップS111から、接続子J1、ステップS103を介してステップS104へと戻る。図12はこの状態を示している。
【0052】
このような処理が繰り返され、順次更新される入力データDINの値A3,A4がメモリM0へ格納される。そしてデータA4がメモリM0へ格納される際のクロックCLKの立ち上がりに対応して実行されるステップS110においては、既にモード制御値MODE_CNTが“3”となっていたので、ステップS111の処理を受ける。即ちモード制御値MODE_CNTが“0”となり、モード信号MODEが“1”となる。これは図7において、比較器CMPがモード制御値MODE_CNTの値を2進数“11”と比較して、その結果カウンタCOUNT1をそのリセット端R2を介してリセットし、カウンタCOUNT2をカウントさせることによって実現される。図13はこの状態を示している。
【0053】
ステップS111の処理を受けた直後では、ステップS103において動作モードは第2モードであると判断され、ステップS103からステップS105へと処理が進む。そして先頭のメモリである第0番目のメモリの内容が出力データDOUTとして採用される。これはマルチプレクサMUXがモード信号MODEの値が“1”であることに対応して、出力データDOUTとしてデータDOUT2を採用することで実現される。図14はこの状態を示しており、出力データDOUTはメモリM0の格納するデータA4を採る。
【0054】
ステップS107,S109はクロックCLKに同期して、例えばその立ち上がりのタイミングを契機として実行される。まずステップS107において、先頭から2番目のメモリである第1番目のメモリ乃至末尾のメモリである第(N−1)番目のメモリの内容を、先頭のメモリである第0番目のメモリ乃至末尾から2番目のメモリである第(N−2)番目のメモリへと転送する。これは、制御部CNT1〜CNT3がメモリM0〜M3の間においてデータを下から上へ向かう方向へ転送することで実現される。従って、図14においてメモリM1〜M3に格納されていたデータA3,A2,A1が、それぞれメモリM0〜M2に格納されることになる。またステップS109において、末尾のメモリである第(N−1)番目のメモリに入力データの値が格納される。例えば入力データDINの値としてB1が与えられていれば、メモリM3にはデータB1が格納される。図15はこのようにして得られた各メモリM0〜M3の格納内容を示している。
【0055】
ステップS109の実行後は、第1モードの場合と同様にステップS110〜S112が実行される。よって図16乃至図18に示されるようにして出力データとして順次A3,A2,A1が得られ、その一方で末尾のメモリM3の内容は、次々と新たな入力データの値B2,B3,B4へと更新される。
【0056】
そしてステップS109の実行によって図18に示された状態が得られた後、クロックCLKの立ち上がりに際してステップS111が実行される。第2モードにおいてモード制御値MODE_CNTの値が“3”を採用することは、メモリM0を指定していることになるためである。動作モードが第1モードへと移り、モード制御値MODE_CNTの値も“3”から“0”へとリセットされる。その後、図19に示されるように入力データDINの新たな値がC1に更新され、出力データDOUTはメモリM3の内容であるデータB4を出力する(ステップS104)。そしてメモリM0〜M2に格納されていたデータB1,B2,B3がそれぞれメモリM1〜M3に格納され(ステップS106)、そしてデータC1がメモリM0へ格納される(ステップS108、図20)。
【0057】
このようにして、N個(図7乃至図20に即して言えば4個)の値を組にしたデータ(A1,A2,A3,A4),(B1,B2,B3,B4),…を順次入力データDINとして採用すれば、出力データDOUTは(A4,A3,A2,A1),(B4,B3,B2,B1),…と得られる。つまりN個のメモリを備える双方向FILOでは、N個のデータからなる組の複数について、FILOの機能を連続的に発揮することができる。これはN個のメモリ間におけるデータの転送の方向を、上から下へ向かう方向と、下から上へ向かう方向との双方向を採用したためである。以下、データのこのN個の組をパケットという単位で取り扱うこともある。
【0058】
なお、シフトレジスタ型の双方向FILOにおいては図15乃至図17に示されるように、異なる組のデータの先頭が隣接する態様を示したが、勿論K(≧0)個の記憶単位を挟んでこれらが対向する態様でもよいのは明白である。その場合には、必要となる記憶素子が(N+K)個となり、ステップS104,S106,S107,S109,S113におけるNの値をN+Kに読み替えれば上記の効果を得ることができる。但しステップS110のNの値はこの場合にも維持される。
【0059】
さて、シフトレジスタの一部を構成するメモリM0〜M3の間でいずれの方向にデータの転送が行われるか、入力データを先頭のメモリ及び末尾のメモリのいずれに格納するか、出力データが先頭のメモリ及び末尾のメモリのいずれから読み出されるか、がそれぞれ適切に選択されれば上記双方向FILOは実現できる。従って、制御部CNT1〜CNT3とデマルチプレクサDMUXとを区分する必要はない。以下ではかかる区分がなされない場合の回路を示す。但し正論理(“1”,“0”がそれぞれ“H”,“L”に対応する)が採用される。
【0060】
表1乃至表3はこの順に結合してシフトレジスタ型の双方向FILOを記述するハードウェア記述言語(HDL)によるリストを示す。ここでは例としてCadence社のVerilog-HDLを用いている。
【0061】
【表1】
【0062】
【表2】
【0063】
【表3】
【0064】
表1は当該リストの第1行乃至第9行を、表2は当該リストの第10行乃至第47行を、表3は当該リストの第48行乃至第51行(最終行)を示している。表1ではリストの第1行においてモジュールの開始が示され、第2行乃至第9行において各種の宣言が行われている。ここではパケット一つあたりのデータは4個であり、各データのビット幅は2ビットである。
【0065】
図21は当該リストに基づいて生成される双方向FILOの構成を示すブロック図である。当該リストにおいて小文字で示された変数は、以下の図において大文字で示される信号、データに相当する。
【0066】
論理回路110にはクロックCLK、2ビットの入力データDIN<1:0>、リセット信号RST、ウエイト信号WT、エネーブル信号ENが入力し、モード信号MODE、メモリM0の格納するデータに対応する2ビットのデータFILO<0><0>,FILO<0><1>(これらはデータDOUT2を構成する)、メモリM3の格納するデータに対応する2ビットのデータFILO<3><0>,FILO<3><1>(これらはデータDOUT1を構成する)が出力される。
【0067】
インバータG1,G2、複合ゲートG3,G4はマルチプレクサMUXに対応し、モード信号MODEが“0”を採ることに対応してFILO<3><0>,FILO<3><1>の対が、“1”を採ることに対応してFILO<0><0>,FILO<0><1>の対が、それぞれ2ビットの出力データDOUT<1:0>として出力される。
【0068】
かかる構成は、表3に示された、リストの第48行乃至第50行におけるassign文によって規定され、図5のステップS103〜S105に該当する。
【0069】
表2に示された内容は論理回路110を規定しており、図22乃至図31はこれらが相俟って論理回路110の構成の詳細を示す回路図である。
【0070】
リスト第10行のalways文は、クロックCLKの立ち上がり、もしくはリセット信号の立ち下がりによって第11行乃至第47行の処理がなされることを示す。クロックCLKによらず、リセット信号RSTが立ち下がったことを認識する第11行の記載は図5におけるステップS101に相当し、リセット処理であるステップS113〜S115(図6)はそれぞれ第12行乃至第14行、第15行、第16行に相当する。
【0071】
図5に示されたステップS102は表2に示されたリスト第18行に相当し、ステップS102の判断が“Y”の場合に処理されるステップS103〜S112は第19行乃至第42行に相当する。そして第17行乃至第46行においてウエイト信号WTが“1”である場合についての処理が記載されていないので、ウエイト信号WTが“1”であれば、ステップS103〜S112の全ての処理が待機されることとなる。これはステップS102の判断が“N”の場合にステップS100を介してステップS101へと戻ることに対応している。また、第43行乃至第45行において、エネーブル信号ENが“L”である場合にはモード制御値MODE_CNTに2ビットの値“00”が与えられることが規定されている。これはステップS100に対応している。
【0072】
リストの第19行はステップS103に対応しており、ステップS106以降の処理は第20行乃至第30行に、ステップS107以降の処理は第31行乃至第41行に規定されている。
【0073】
具体的には動作モードが第1モードである場合(モード信号MODE=0)には、ステップS106は第21行乃至第23行に、ステップS108は第24行に、ステップS110は第26行に、ステップS111は第27行乃至第28行に、ステップS112は第25行に、それぞれ対応する。なお、モード制御値MODE_CNTに対する手続き的代入が行われる第25行及び第28行ではノンブロッキング代入文が用いられているので、リストにおける記載の順序にも拘らず、図6に示されるフローチャートが対応する。
【0074】
同様にして、動作モードが第2モードである場合(モード信号MODE=1)には、ステップS107は第32行乃至第34行に、ステップS109は第35行に、ステップS110は第37行に、ステップS111は第38行乃至第39行に、ステップS112は第36行に、それぞれ対応する。この動作モードにおいても、モード制御値MODE_CNTに対する手続き的代入が行われる第36行及び第39行ではノンブロッキング代入文が用いられているので、リストにおける記載の順序にも拘らず、図6に示されるフローチャートが対応する。
【0075】
図22はモード制御値MODE_CNTの第0番目のビットの値MODE_CNT<0>、及び通常動作信号WTENを生成する部分を示す。通常動作信号WTENはウエイト信号WTが“L”で、エネーブル信号ENが“H”である場合にのみ“H”となり、フローチャートに即して言えばそのステップS102において“Y”と判断されることに対応し、またリストに即して言えばその第19行乃至第42行に記載された処理が行われることに対応する。
【0076】
DフリップフロップMDCT0は第0番目のビットのモード制御値MODE_CNT<0>を出力し、その論理反転として信号X1が生成される。通常動作信号WTENが“H”であれば、信号X1がDフリップフロップMDCT0のD入力端に与えられるので、クロックCLKがDフリップフロップMDCT0のクロック端Tに与えられる度に第0番目のビットのモード制御値MODE_CNT<0>の値は“0”,“1”を交互に出力することになる。DフリップフロップMDCT0にはリセット信号RSTの立ち下がりによってリセットされるためのリセット端Rも設けられている。
【0077】
図23は第1番目のビットのモード制御値MODE_CNT<1>を生成する部分を示す。DフリップフロップMDCT1は第1番目のビットのモード制御値MODE_CNT<1>を出力し、その値が“0”,“1”を採ることに対応してセレクタSELがそれぞれA入力端に与えられたデータ、B入力端に与えられたデータを論理反転させて出力し、DフリップフロップMDCT1のD入力端に与えられる。通常動作信号WTENが“H”であれば、セレクタSELのA入力端及びB入力端にはそれぞれ第0番目のビットのモード制御値MODE_CNT<0>の論理反転及び信号X1の論理反転(つまり第0番目のビットのモード制御値MODE_CNT<0>)が与えられる。
【0078】
以上のように、図22及び図23で示された構成は、図7で示されたカウンタCOUNT1にほぼ対応している。但しカウンタCOUNT1とは異なり、比較器CMPのフィードバックを必要としない4進カウンタである。
【0079】
図24はモード信号MODEを生成する部分を示す。通常動作信号WTENが“H”であれば、モード制御値MODE_CNT<0>,MODE_CNT<1>の論理積を採ることによってモード制御値MODE_CNTが10進数でいう値“3”と一致するか否かの判定を行う(ステップS110の処理に相当)。更にステップS111の処理を行う必要上、モード制御値MODE_CNT<0>,MODE_CNT<1>の論理積と、モード信号MODEとの排他的論理和が、DフリップフロップMDのD入力端に与えられ、DフリップフロップMDがモード信号MODEを出力する。
【0080】
図25はメモリM0の第0番目のビット及び第1番目のビットにそれぞれ対応するDフリップフロップM00,M01を含む構成を示している。それぞれのD入力端には複合ゲートG5,G6の出力が与えられている。DフリップフロップM00,M01のそれぞれの出力FILO<0><0>,FILO<0><1>はメモリM0の格納する2ビットの情報に相当する。
【0081】
2ビットの入力データDIN<0>,DIN<1>はいずれも論理反転されてそれぞれ複合ゲートG5,G6へと入力する。これらの入力データDIN<0>,DIN<1>が論理反転されるのは、複合ゲートG5,G6の構成上、その最終出力段がNANDゲートとなっていることに起因する。
【0082】
図26はメモリM1の第1番目のビットに対応するDフリップフロップM11を含む構成を、図27はメモリM1の第0番目のビットに対応するDフリップフロップM10を含む構成を、それぞれ示している。それぞれのD入力端には複合ゲートG7,G8の出力が与えられている。DフリップフロップM10,M11のそれぞれの出力FILO<1><0>,FILO<1><1>はメモリM1の格納する2ビットの情報に相当する。
【0083】
図28はメモリM2の第1番目のビットに対応するDフリップフロップM21を含む構成を、図29はメモリM2の第0番目のビットに対応するDフリップフロップM20を含む構成を、それぞれ示している。それぞれのD入力端には複合ゲートG9,G10の出力が与えられている。DフリップフロップM20,M21のそれぞれの出力FILO<2><0>,FILO<2><1>はメモリM2の格納する2ビットの情報に相当する。
【0084】
図30はメモリM3の第1番目のビットに対応するDフリップフロップM31を含む構成を、図31はメモリM3の第0番目のビットに対応するDフリップフロップM30を含む構成を、それぞれ示している。それぞれのD入力端には複合ゲートG11,G12の出力が与えられている。DフリップフロップM30,M31のそれぞれの出力FILO<3><0>,FILO<3><1>はメモリM3の格納する2ビットの情報に相当する。信号X13,X12はそれぞれ入力データDIN<0>,DIN<1>の論理反転であり、複合ゲートG12,G11へと入力する。
【0085】
複合ゲートG5〜G12は、インバータ(通常動作信号WTENが“H”となってインバータとして機能するNANDゲートを含む)と相俟って、図7に示された制御部CNT1〜CNT3とデマルチプレクサDMUXとを統合した機能を実現している。
【0086】
なお、これらの図において通常動作信号WTENが“H”であれば信号X2,X4はそれぞれモード信号MODEと等しい論理を採る。また通常動作信号WTENの値に依らず、信号X5,X3,X9,X7,X11,X10,X8,X6はそれぞれFILO<0><0>,FILO<0><1>,FILO<1><0>,FILO<1><1>,FILO<2><0>,FILO<2><1>,FILO<3><0>,FILO<3><1>の論理反転である。
【0087】
ウエイト信号WTが“H”となって待機命令がかかった場合には通常動作信号WTENが“L”となり、複合ゲートG5〜G12の動作から全てのDフリップフロップの内容は変更されない。また、エネーブル信号ENが“L”となって可動状態でない場合にも通常動作信号WTENが“L”となり、DフリップフロップMDCT0,MDCT1のD入力端に“0”が与えられてステップS100が実行される。更に、リセット信号RSTが立ち下がってリセット命令を受けた場合にはステップS113〜S115の処理がなされる。
【0088】
(d−2)アドレスポインタ型の双方向FILO;
図32及び図33は両図相俟ってアドレスポインタ型の双方向FILOの動作を示すフローチャートである。両図は接続子J5,J7によって相互に結合される。また、図34はアドレスポインタ型の双方向FILOの構成を例示するブロック図である。そして図35乃至図47は図34に示された双方向FILOの動作を順に示す模式図である。
【0089】
図34に示された双方向FILOは、RAMであるメモリR256、マルチプレクサMUX1,MUX2、カウンタCOUNT10,COUNT11,COUNT2、比較器CMP1,CMP2を備えている。
【0090】
カウンタCOUNT10,COUNT11は、カウンタCOUNT2によって生成されたモード信号MODEの値が“0”,“1”を採ることに対応してそのカウント方向が増大方向、減少方向となるように制御され、それぞれ8ビットのモード制御値W_MODE_CNT,R_MODE_CNTを生成する。モード制御値W_MODE_CNT,R_MODE_CNTはメモリR256にとってはそれぞれ書き込みアドレス及び読みだしアドレスとなる。
【0091】
カウンタCOUNT10,COUNT11,COUNT2はいずれもクロックCLKを受けるクロック端Tを有しており、カウンタCOUNT10,COUNT11はクロックCLKの立ち上がりをカウントする。一方、カウンタCOUNT2はシフトレジスタ型の双方向FILOに用いられたものと同様に、クロックCLKをカウントするのではなく、比較器CMP1,CMP2の出力をカウントする1ビットのカウンタであり、その出力たるモード信号MODEの値の変化するタイミングがクロックCLKに同期する。また、これらのエネーブル端Eのいずれにもリセット信号RST、あるいはエネーブル信号ENが与えられ、これらの信号によって動作の可否が制御される。
【0092】
カウンタCOUNT10,COUNT11の初期値はそれぞれマルチプレクサMUX1,MUX2の出力から得られる。マルチプレクサMUX1には10進数で0,204を示す値の8ビット信号が入力され、マルチプレクサMUX2には10進数で203,1を示す値の8ビット信号が入力される。マルチプレクサMUX1,MUX2が自身に受けた2つの入力のいずれを出力するかは、比較器CMP1,CMP2の出力によって決定される。
【0093】
比較器CMP1には10進数で1を示す値と、モード制御値W_MODE_CNTとが与えられ、両者が等しい場合にはマルチプレクサMUX1,MUX2がそれぞれ“0”,“1”を出力するように制御する。また比較器CMP2には10進数で203を示す値と、モード制御値W_MODE_CNTとが与えられ、両者が等しい場合にはマルチプレクサMUX1,MUX2がそれぞれ“204”,“203”を出力するように制御する。
【0094】
メモリR256の書き込みクロック端WT及び読みだしクロック端RTには共通してクロックCLKが与えられ、クロックCLKの立ち上がり及び立ち下がりに同期して、それぞれメモリR256に対する書き込み及び読み出しが行われる。
【0095】
書き込み端DIには入力データDIが与えられ、読み出し端DOからメモリR256の読み出しデータが得られる。図34においてはマルチプレクサMUX3が更に設けられ、リセット信号RSTが非活性時(“1”)の場合にはメモリR256からの読み出しデータが双方向FILOの出力データDOUTとして採用されるが、リセット信号RSTが活性時(“0”)の場合には10進数でいう0が双方向FILOの出力データDOUTとして採用される。この理由については後述される。
【0096】
図35乃至図47では、(N+1)個のアドレス0〜Nに対応する記憶単位#0〜#Nを示している。メモリR256における記憶単位は256個あり、N=204に設定されている。勿論、N≦255の関係が有れば他の値でも良いが、その場合にはマルチプレクサMUX1,MUX2に与えられる値はそれぞれ204,203の代わりにN,N−1となる。
【0097】
図32に示されたフローチャートにおいて、ステップS201〜S204はクロックCLKにかかわらず実行される。ステップS201においてはリセット命令を受けたか否か(リセット信号RSTが活性化しているか非活性か)が判断され、受けた場合にはステップS215〜S219のリセット処理がなされ、接続子J8を介してステップS201へと戻る。リセット命令を受けていなければステップS202において可動状態か否か(エネーブル信号ENが活性化しているか非活性か)が判断され、可動状態にない場合にはステップS218〜S219の処理を受けてステップS201へと戻る。ステップS203では待機命令がかかっているか否か(ウエイト信号WTが活性化しているか非活性か)が判断され、待機命令がかかっていない場合にはステップS204へと進む。
【0098】
リセット処理について説明すると、ステップS215においてRAMであるメモリR256の初期化命令を受けたか否かが判断され、初期化命令を受けていればRAMの初期化が行われる。具体的には後述するが、メモリR256の初期化端Sに与えられる初期化信号SRAMが活性化(“0”)することにより、クロックCLKの立ち上がりに同期してメモリR256の全てのアドレスにおいて特定の値、例えば“0”が与えられる。但し、この時にメモリR256が出力する読み出しデータは、出力データDOUTとしての意味を有さないので、マルチプレクサMUX3によって別途に特定の値(図34では“0”と設定されて初期化に用いられる値と偶々一致する)が出力データDOUTとして採用される(ステップS217)。
【0099】
そしてステップS218において動作モードが第1モードに初期設定される。またステップS219において書き込みアドレス、読み出しアドレスがそれぞれ“0”,“1”に初期設定される。つまり、カウンタCOUNT10,COUNT11はリセット信号RSTの活性化あるいはエネーブル信号ENの非活性化によってそれぞれ初期値が“0”,“1”に設定される。ステップS218,S219はリセット命令がかかった場合にも、可動状態にない場合にも実行され、その内容は書き込みアドレス及び読み出しアドレスに関する限り同一であるので、カウンタCOUNT2,COUNT10,COUNT11のエネーブル端Eに与えられるものとしては、リセット信号RSTもエネーブル信号ENも共通して用いられる。
【0100】
図35はリセット直後の、記憶単位#0〜#Nの状態を示している。これらの全てに対して“0”が格納されている。
【0101】
ステップS204によって動作モードが第1モード、第2モードのいずれであるかが判断され、それぞれの場合に応じてステップS205、あるいは接続子J5を介してステップS210へと分岐する。
【0102】
第1モードとはモード信号MODEが“0”の場合に相当する。ステップS205において、入力データDINがRAMへの書き込みデータとして採用される。書き込み動作はクロックCLKの立ち上がりに同期して行われる。
【0103】
ステップS206において、書き込みアドレスがN−1か否かが判断される。これはモード制御値W_MODE_CNTと204−1=203とを入力する比較器CMP2によって実行される。書き込みアドレスがN−1でない限り、ステップS208によって書き込みアドレス、読み出しアドレスのいずれもが1だけ増加される。これはカウンタCOUNT10,11によって実行される。ステップS208もクロックCLKの立ち上がりを契機として行われるが、ステップS205より後に行われる。
【0104】
図36は、リセット処理が行われた後で、最初にクロックCLKが立ち上がった場合の記憶単位#0〜#Nに対する処理が示されている。ステップS219において書き込みアドレスが“0”に設定されていたので、まずステップS205に従って入力データDINの値A1が記憶単位#0において記憶される。そしてステップS208に従って読み出しアドレス及び書き込みアドレスがそれぞれ1増加して、それぞれ値1,2を採る。図36における破線はステップS205の書き込み動作を、白抜き矢印はクロックCLKの立ち上がりによるアドレスの変化を行うステップS208の動作を、それぞれ示している。
【0105】
ステップS209はRAMの読み出しデータを出力データとして採用するステップであり、クロックCLKの立ち下がりに同期して行われる。ステップS208によって読み出しアドレスは2となっているので、記憶単位#2に格納されていたリセット後の値“0”が読み出される事になる。図37はこの状態を示しており、書き込みアドレスは値1を採るものの、クロックCLKの立ち下がりによっては書き込み動作は行われないので、記憶単位#1の格納する値はこの時点では変化しない。
【0106】
ステップS201〜S205を介してステップS206,S208,S209が繰り返され、ステップS208によって書き込みアドレス、読み出しアドレスがそれぞれN−1,Nとなった場合を考える。既にステップS205によって(N−1)個の値A1〜A(N−1)が、順次記憶単位#0〜#N−1に格納されている。図38はこの状態からステップS209が実行された時点の動作を示している。この時点ではクロックCLKが立ち下がった直後であって、アドレス#N−1にはまだ新たな入力データDINは格納されていない。その一方、出力データDOUTはリセット後の値“0”を出力する。
【0107】
この後、接続子J6、ステップS201〜S204を介してステップS205が実行され、記憶単位#N−1に値ANが書き込まれる。図39の破線はこの状態を示している。書き込みアドレスが(N−1)であるのでステップS206からステップS207へ進み、動作モードが第2モードに変更され、しかも書き込みアドレス及び読み出しアドレスがそれぞれN,N−1に設定される。図39の実線及び白抜き矢印はこのアドレスの変更を示している。
【0108】
このようなアドレスの設定は、図34で示された比較器CMP2が、マルチプレクサMUX1,MUX2にそれぞれ204,203を出力させる事に対応する。これによりカウンタCOUNT10,11の初期値が設定され直す事になる。
【0109】
ステップS207もステップS208と同様に、クロックCLKの立ち上がりを契機としてステップS205より後に行われる。図39に示されるように、N個のデータA1〜ANは順次記憶単位#0〜#N−1に格納されている。
【0110】
この後、ステップS209においては記憶単位#N−1が格納していた値の読み出しが行われる。従って、出力データDOUTとしては連続して“0”が得られた後の最初には値ANが得られる事になる(図40)。
【0111】
更に接続子J6、ステップS201〜S203を介してステップS204に至ると、動作モードが第2動作モードに切り替えられたので、ステップS210が実行される。ステップS210に至るまでには書き込みアドレスに変動は無いので、入力データDINの値B1が記憶単位#Nに書き込まれる。図41の破線はこの状態を示している。
【0112】
更に、ステップS211に進み、書き込みアドレスが1か否かが判断される。これはモード制御値W_MODE_CNTと“1”とを入力する比較器CMP1によって実行される。書き込みアドレスが1でない限り、ステップS213によって書き込みアドレス、読み出しアドレスのいずれもが1だけ減じられる。これはカウンタCOUNT10,COUNT11によって実行される。ステップS211もクロックCLKの立ち上がりを契機として行われるが、ステップS210より後に行われる。ステップS211の時点では書き込みアドレスはNであったので、ステップS213によって書き込みアドレス及び読み出しアドレスはそれぞれ(N−1),(N−2)に設定される(図41の白抜き矢印及び実線参照)。
【0113】
次にステップS214へ進み、ステップS209と同様にして出力データDOUTを得る。図42はクロックCLKの立ち下がりに同期して記憶単位#N−2から値A(N−1)を読み出す状態を示している。
【0114】
このようにして接続子J7、ステップS201〜S204を介してステップS210〜S213,S214が繰り返され、出力データDOUTは値AN,A(N−1),…を順次出力する。
【0115】
ステップS213によって書き込みアドレス、読み出しアドレスがそれぞれ1,0となった場合を考える。この後にクロックCLKが立ち下がってステップS214が実行されると、図43に示されるように、出力データDOUTとして値A1が得られる。但し、記憶単位#1において格納されている値はA2のままであって更新されていない。
【0116】
この後、接続子J7、ステップS201〜S204を介してステップS210が実行され、記憶単位#1に値BNが書き込まれる(図44の破線参照)。書き込みアドレスが1であるのでステップS211からステップS212へ進み、動作モードが第1モードに変更され、しかも書き込みアドレス及び読み出しアドレスがそれぞれ0,1に設定される(図44の白抜き矢印及び実線参照)。このようなアドレスの設定は、図34で示された比較器CMP1が、マルチプレクサMUX1,MUX2にそれぞれ0,1を出力させる事に対応する。これによりカウンタCOUNT10,11の初期値が設定され直す事になる。
【0117】
ステップS212もステップS213と同様に、クロックCLKの立ち上がりを契機としてステップS210より後に行われる。図44はこの時点での記憶単位#0〜#Nの状態を示しており、N個のデータB1〜BNは順次記憶単位#N〜#1に格納されている。
【0118】
この後、ステップS214においては記憶単位#1が格納していた値の読み出しが行われる。従って、出力データDOUTとしては値AN,A(N−1),…A1の後には値BNが得られる事になる(図45)。
【0119】
更に接続子J7、ステップS201〜S203を介してステップS204に至ると、動作モードが第1動作モードに切り替えられたので、ステップS205が実行される。ステップS205に至るまでには書き込みアドレスに変動は無いので、入力データDINの値C1が記憶単位#0に書き込まれる。図46の破線はこの状態を示している。
【0120】
そしてステップS206からステップS208に進み、書き込みアドレス及び読み出しアドレスがそれぞれ1,2に設定される。図46の白抜き矢印はステップS208の動作を示している。
【0121】
以上のようにして(N+1)個の記憶素子を用いることにより、N個(図34に即して言えば204個)の値を組にしたデータ(A1,A2,…,AN),(B1,B2,…,BN),…を順次入力データDINとして入力すれば、出力データDOUTは(AN,…,A2,A1),(BN,…,B2,B1),…と得られる。つまり少なくとも(N+1)個のアドレスを有するRAMを用いて、N個のデータからなる組の複数について、FILOの機能を連続的に発揮させることができる。
【0122】
これは、記憶単位の格納する内容を読み出しつつこれに追随して入力データが書き込まれ、入力データの組の更新に対応して読み出しアドレス及び書き込みアドレスの移動する方向が上から下へ向かう方向と、下から上へ向かう方向とに逆転するためである。
【0123】
以上のように、アドレスポインタ型の双方向FILOでは、従来のRAMを利用して双方向FILOを実現することができる。
【0124】
なお、アドレスポインタ型の双方向FILOにおいてはモード制御値W_MODE_CNT,R_MODE_CNTが一つずれる態様を示したが、勿論0以上の整数Kだけずれてもよいのは明白である。その場合には、必要となる記憶素子が(N+K)異なり、ステップS207においては書き込みアドレスがN+K−1に設定され、ステップS211においては書き込みアドレスがKであるか否かが判断され、ステップS212,S219においては読み出しアドレスがKに設定される。K=0であったとしても、書き込み及び読み出しのタイミングがそれぞれクロックCLKの立ち上がり及び立ち下がりで行われるので上記の効果を得ることができる。
【0125】
表4乃至表8はこの順に結合して、アドレスポインタ型の双方向FILOを記述するハードウェア記述言語(HDL)によるリストを示す。ここでも表1乃至表3と同様にCadence社のVerilog-HDLを用いており、N=204,K=1に設定されている。
【0126】
【表4】
【0127】
【表5】
【0128】
【表6】
【0129】
【表7】
【0130】
【表8】
【0131】
表4は当該リストの第1行乃至第10行を、表5は当該リストの第11行乃至第44行を、表6は当該リストの第45行乃至第56行を、表7は当該リストの第57行乃至第81行を、表8は当該リストの第82行乃至第95行を、それぞれ示している。
【0132】
表4乃至表6ではmodule bifilo1が、表7ではmodule RAM256が、表8では module RAM256Cが、それぞれ記載されている。
【0133】
表4ではリストの第1行においてモジュールの開始が示され、第2行乃至第10行において各種の宣言が行われている。表7ではリストの第57行においてモジュールの開始が示され、第58行乃至第65行において各種の宣言が行われている。表8ではリストの第82行においてモジュールの開始が示され、第83行乃至第90行において各種の宣言が行われている。
【0134】
表8で示されるmodule RAM256Cは、クロックCLKの立ち上がりで書き込みが、立ち下がりで読み出しが、それぞれ行われるRAMのコア部分(図35乃至図47に示された記憶単位に相当する部分を含む)を規定し、表7はリセット処理の一部及び初期化処理を規定している。
【0135】
ステップS201を介して行われるステップS215〜ステップS216はリスト第69行乃至第76行に示されたif-else文における処理と、変数RP,WPによってそれぞれ指定される読み出しアドレス及び書き込みアドレスを介して初期化を行うリスト第78行乃至第80行が相当する。
【0136】
リセット処理に関してはこの他に、ステップS217がリスト第47行(表6)に相当し、ステップS201を経由して実行されるステップS218〜S219がリスト第12行乃至第15行(表5)に相当している。
【0137】
なお、ステップS202を経由して実行されるステップS218〜S219はリスト第38行乃至第41行(表5)に相当している。また、ステップS203において“Y”と判断される場合はリスト第49行乃至第51行(表6)に相当して出力データが更新されず、“N”と判断される場合はリスト第18行乃至第37行のcase文(表5)に規定される処理が実行される。
【0138】
リスト第18行乃至第37行のcase文については、リスト第18行がステップ204に相当し、リスト第19行乃至第27行がステップS206〜S208に相当し、リスト第28行乃至第36行がステップS211〜S213に相当する。ステップS205,S209,S210,S214におけるRAMへの読み書きは、リスト第78行乃至第79行における代入文と、第80行で参照される、表8に示されたmodule RAM256Cによって規定されている。
【0139】
リスト第19行乃至第27行については、ステップS206がリスト第22行に、ステップS207がリスト第23行乃至第25行に、ステップS208がリスト第20行乃至第21行に、それぞれ相当する。
【0140】
リスト第28行乃至第36行については、ステップS211がリスト第31行に、ステップS212がリスト第32行乃至第34行に、ステップS213がリスト第29行乃至第30行に、それぞれ相当する。
【0141】
図48乃至図56はこれらが相俟って、表4乃至表8で示されたHDLの内容に基づいて生成された双方向FILOの構成の詳細を示す回路図である。
【0142】
図48に示される回路は、エネーブル信号EN、リセット信号RST、ウエイト信号WT、8ビットのモード制御値W_MODE_CNT<0:7>、及び図49に示される回路で生成される信号Y3を入力し、信号Y1,Y2,Y5,Y6,W1〜W8を出力する。ここで信号W2はリセット信号RSTと相補的な値を採り、信号W4はW_MODE_CNT<3>と相補的な値を採り、信号W5はW_MODE_CNT<1>と相補的な値を採り、信号W6はW_MODE_CNT<6>と相補的な値を採り、信号W7はW_MODE_CNT<7>と相補的な値を採り、信号W8はW_MODE_CNT<0>と相補的な値を採り、信号Y1はエネーブル信号ENが“0”,“1”の値を採るのに応じてそれぞれ“1”、/RST+/WT(/は論理反転を示す)を採り、信号Y2はエネーブル信号ENが“0”,“1”の値を採るのに応じてそれぞれ“0”、RST・/WTを採るという特徴がある。
【0143】
図49に示される回路は、図48に示される回路で生成される信号Y1,Y2,Y5,W3〜W7、並びに8ビットのモード制御値W_MODE_CNT<0:7>及びクロックCLKを入力し、信号Y3,Y4,Y7,Y8、及び8ビットのデータDT1<0:7>並びにモード信号MODEを出力する。
【0144】
この図において、DフリップフロップMDはモード信号MODEを出力し、図34におけるCOUNT2に相当する。加減算器201はモード信号MODEに依存して、モード制御値W_MODE_CNTに対して1加算するか、減算するかが制御される。なお、信号Y7はモード信号MODEと相補的な値を採る。
【0145】
図50に示される回路は、図48に示される回路で生成される信号Y6、図49に示される回路で生成される信号Y4,Y7及びモード信号MODE並びに8ビットのモード制御値R_MODE_CNT<0:7>を入力し、信号Y11及び8ビットのデータDT2<0:7>を出力する。この図において、加減算器202はモード信号MODEに依存して、モード制御値R_MODE_CNTに対して1加算するか、減算するかが制御される。
【0146】
図51に示される回路は、信号Y1,Y2,Y6〜Y9,W4〜W8、並びにモード制御値W_MODE_CNT<3:5>及びデータDT1<0:7>を入力し、信号Y9,Y10,N397〜N404を出力する。また図52に示される回路は、信号Y1,Y2,Y9〜Y11、並びにモード制御値R_MODE_CNT<0:7>及びデータDT2<0:7>を入力し、信号N405〜N412を出力する。
【0147】
図53に示される回路は、RAMであるメモリR256と、信号N397〜N404からモード制御値W_MODE_CNTを生成する回路W_CNTと、信号N405〜N412からモード制御値R_MODE_CNTを生成する回路R_CNTとから構成されている。モード制御値W_MODE_CNT,R_MODE_CNTはそれぞれメモリR256の書き込みアドレス端WA及び読み出しアドレス端RAに与えられる。また8ビットの入力データDIN<7:0>は書き込み端DIに与えられ、読み出し端DOから8ビットの信号MEMO<7:0>が読み出される。クロックCLKは回路R_CNT,W_CNT及びメモリR256の書き込みクロック端WT及び読みだしクロック端RTに与えられる。またリセット信号RST及び初期化信号SRAMがR256のリセット端R及び初期化端Sにそれぞれ与えられる。
【0148】
図54に示される回路は図34に示されるマルチプレクサMUX3に相当し、出力データDOUT<7:0>を出力するDフリップフロップF0〜F7を備えている。これらはメモリR256から得られた信号MEMO<7:0>と、クロックCLKと、ウエイト信号WTと、信号W2によって制御される。
【0149】
図55は回路W_CNTの構成を示しており、DフリップフロップW0〜W7を備えている。DフリップフロップWpはいずれもクロックCLKによって制御され、信号N(404−p)を受けてモード制御値W_MODE_CNT<p>を出力する(p=0〜7)。
【0150】
図56は回路R_CNTの構成を示しており、DフリップフロップR0〜R7を備えている。DフリップフロップRqはいずれもクロックCLKによって制御され、信号N(412−q)を受けてモード制御値R_MODE_CNT<q>を出力する(q=0〜7)。
【0151】
【発明の効果】
この発明のうち請求項1にかかる誤り訂正装置によれば、その備える第1及び第2の双方向転送型記憶装置の少なくともいずれか一方において、一対の入力データがスイッチバックして出力される方向が互いに逆向きであるので、(N+K)個の記憶単位を使用して、N個のデータからなる組の複数についてFILOの機能を連続的に発揮することができる。よって、回路規模を削減した誤り訂正装置を得ることができる。
【0152】
この発明のうち請求項2にかかる誤り訂正装置によれば、その備える第1及び第2の双方向転送型記憶装置の少なくともいずれか一方において、制御信号が第1の値を採っている場合には第0の記憶単位には例えばある組のデータA1,A2,…,A(N−1),ANが順次に入力され、かつこの順に第1乃至第(N−1)の記憶単位に転送される。そして制御信号は第2の値へと変更され、第0の記憶単位からデータAN,A(N−1),…,A2,A1が順次に読み出されつつ、第(N+K−1)の記憶単位には次の組のデータB1,B2,…,B(N−1),BNが順次に入力され、かつこの順に第(N+K−2)乃至第Kの記憶単位に転送される。そして制御信号は第1の値へと変更され、第(N+K−1)の記憶単位からデータBN,B(N−1),…,B2,B1が順次に読み出される。
【0153】
このように記憶単位間におけるデータの転送の方向を、互いに逆の双方向に行うので、(N+K)個の記憶単位を使用して、N個のデータからなる組の複数についてFILOの機能が連続的に発揮され、請求項1の発明の効果を得ることができる。
【0154】
この発明のうち請求項3にかかる誤り訂正装置によれば、その備える第1及び第2の双方向転送型記憶装置の少なくともいずれか一方において、ある方向に沿って記憶単位にデータが書き込まれると、逆の方向から読み出され、かつこの読み出しに追随して新たなデータの書き込みが行われる。従って、N個のデータからなる組の複数についてFILOの機能を連続的に発揮することができる。よって、回路規模を削減した誤り訂正装置を得ることができる。
【0155】
この発明のうち請求項4にかかる誤り訂正装置によれば、その備える第1及び第2の双方向転送型記憶装置の少なくともいずれか一方において、制御信号が第1の値を採っている場合には第0乃至第(N−1)の記憶単位へと、ある組のデータA1,A2,…,A(N−1),ANが順次に記憶される。そして制御信号は第2の値へと変更され、第(N−1)乃至第0の記憶単位からデータAN,A(N−1),…,A2,A1が順次に読み出されつつ、第(N+K−1)乃至第Kの記憶単位には次の組のデータB1,B2,…,B(N−1),BNが順次に入力される。そして制御信号は第1の値へと変更され、第K乃至第(N+K−1)の記憶単位からデータBN,B(N−1),…,B2,B1が順次に読み出される。
【0156】
このように記憶単位間におけるデータの入出力を、アドレスの操作によって互いに逆の双方向に行うので、(N+K)個の記憶単位を有する通常のメモリを利用して、N個のデータからなる組の複数についてFILOの機能が連続的に発揮され、請求項3の発明の効果を得ることができる。
【0157】
この発明のうち請求項5にかかる誤り訂正装置によれば、その備える第1及び第2の双方向転送型記憶装置の少なくともいずれか一方において、書き込み、アドレス変更、読み出しの順に処理が進められるので、特にK=0の場合においても請求項3の発明の効果を得ることができ、最も効率よくメモリの記憶単位を利用することができる。よって請求項3の発明の効果を最も高めることができる。
【図面の簡単な説明】
【図1】 本発明に係るリードソロモン誤り訂正装置100の構成を例示するブロック図である。
【図2】 本発明の実施の形態1として採用し得る、シフトレジスタ型の双方向FILOの構成を示す概念図である。
【図3】 本発明の実施の形態2として採用し得る、アドレスポインタ型の双方向FILOの構成を示す概念図である。
【図4】 この発明の実施の形態3にかかるリードソロモン誤り訂正装置101の構成を例示するブロック図である。
【図5】 図6と相俟ってシフトレジスタ型の双方向FILOの動作を示すフローチャートである。
【図6】 図5と相俟ってシフトレジスタ型の双方向FILOの動作を示すフローチャートである。
【図7】 シフトレジスタ型の双方向FILOの構成を例示するブロック図である。
【図8】 図7に示された双方向FILOの動作を順に示す模式図である。
【図9】 図7に示された双方向FILOの動作を順に示す模式図である。
【図10】 図7に示された双方向FILOの動作を順に示す模式図である。
【図11】 図7に示された双方向FILOの動作を順に示す模式図である。
【図12】 図7に示された双方向FILOの動作を順に示す模式図である。
【図13】 図7に示された双方向FILOの動作を順に示す模式図である。
【図14】 図7に示された双方向FILOの動作を順に示す模式図である。
【図15】 図7に示された双方向FILOの動作を順に示す模式図である。
【図16】 図7に示された双方向FILOの動作を順に示す模式図である。
【図17】 図7に示された双方向FILOの動作を順に示す模式図である。
【図18】 図7に示された双方向FILOの動作を順に示す模式図である。
【図19】 図7に示された双方向FILOの動作を順に示す模式図である。
【図20】 図7に示された双方向FILOの動作を順に示す模式図である。
【図21】 表1乃至表3のリストに基づいて生成される双方向FILOの構成を示すブロック図である。
【図22】 図23乃至図31と相俟って論理回路110の構成の詳細を示す回路図である。
【図23】 図22及び図24乃至図31と相俟って論理回路110の構成の詳細を示す回路図である。
【図24】 図22乃至図23及び図25乃至図31と相俟って論理回路110の構成の詳細を示す回路図である。
【図25】 図22乃至図24及び図26乃至図31と相俟って論理回路110の構成の詳細を示す回路図である。
【図26】 図22乃至図25及び図27乃至図31と相俟って論理回路110の構成の詳細を示す回路図である。
【図27】 図22乃至図26及び図28乃至図31と相俟って論理回路110の構成の詳細を示す回路図である。
【図28】 図22乃至図27及び図29乃至図31と相俟って論理回路110の構成の詳細を示す回路図である。
【図29】 図22乃至図28及び図30乃至図31と相俟って論理回路110の構成の詳細を示す回路図である。
【図30】 図22乃至図29及び図31と相俟って論理回路110の構成の詳細を示す回路図である。
【図31】 図22乃至図30と相俟って論理回路110の構成の詳細を示す回路図である。
【図32】 図33と相俟ってアドレスポインタ型の双方向FILOの動作を示すフローチャートである。
【図33】 図32と相俟ってアドレスポインタ型の双方向FILOの動作を示すフローチャートである。
【図34】 アドレスポインタ型の双方向FILOの構成を例示するブロック図である。
【図35】 図34に示された双方向FILOの動作を順に示す模式図である。
【図36】 図34に示された双方向FILOの動作を順に示す模式図である。
【図37】 図34に示された双方向FILOの動作を順に示す模式図である。
【図38】 図34に示された双方向FILOの動作を順に示す模式図である。
【図39】 図34に示された双方向FILOの動作を順に示す模式図である。
【図40】 図34に示された双方向FILOの動作を順に示す模式図である。
【図41】 図34に示された双方向FILOの動作を順に示す模式図である。
【図42】 図34に示された双方向FILOの動作を順に示す模式図である。
【図43】 図34に示された双方向FILOの動作を順に示す模式図である。
【図44】 図34に示された双方向FILOの動作を順に示す模式図である。
【図45】 図34に示された双方向FILOの動作を順に示す模式図である。
【図46】 図34に示された双方向FILOの動作を順に示す模式図である。
【図47】 図34に示された双方向FILOの動作を順に示す模式図である。
【図48】 図49乃至図56と相俟って、表4乃至表8で示されたHDLの内容に基づいて生成された双方向FILOの構成の詳細を示す回路図である。
【図49】 図48及び図50乃至図56と相俟って、表4乃至表8で示されたHDLの内容に基づいて生成された双方向FILOの構成の詳細を示す回路図である。
【図50】 図48乃至図49及び図51乃至図56と相俟って、表4乃至表8で示されたHDLの内容に基づいて生成された双方向FILOの構成の詳細を示す回路図である。
【図51】 図48乃至図50及び図52乃至図56と相俟って、表4乃至表8で示されたHDLの内容に基づいて生成された双方向FILOの構成の詳細を示す回路図である。
【図52】 図48乃至図51及び図53乃至図56と相俟って、表4乃至表8で示されたHDLの内容に基づいて生成された双方向FILOの構成の詳細を示す回路図である。
【図53】 図48乃至図52及び図54乃至図56と相俟って、表4乃至表8で示されたHDLの内容に基づいて生成された双方向FILOの構成の詳細を示す回路図である。
【図54】 図48乃至図53及び図55乃至図56と相俟って、表4乃至表8で示されたHDLの内容に基づいて生成された双方向FILOの構成の詳細を示す回路図である。
【図55】 図48乃至図54及び図56と相俟って、表4乃至表8で示されたHDLの内容に基づいて生成された双方向FILOの構成の詳細を示す回路図である。
【図56】 図48乃至図55と相俟って、表4乃至表8で示されたHDLの内容に基づいて生成された双方向FILOの構成の詳細を示す回路図である。
【図57】 従来のリードソロモン誤り訂正装置200の構成を示すブロック図である。
【符号の説明】
2 多項式生成器、3 訂正器、4,6 双方向FILO、M0〜M3,R256 メモリ、M00,M01〜M30,M31 Dフリップフロップ、MODE モード制御信号、R_MODE_CNT,W_MODE_CNT,MODE_CNT モード制御値、#0〜#N 記憶単位。
Claims (5)
- 誤り訂正符号の誤り位置多項式及び誤り評価多項式の係数を符号の最終桁から先頭桁へと進む順に求める多項式生成器と、
前記誤り訂正符号を構成するデータの列を逆に並び替える第1の双方向転送型記憶装置と、
前記多項式生成器の出力及び前記並び替え部の出力から前記誤り訂正符号の訂正を行う訂正器と、
前記訂正器が出力するデータの列を逆に並び替える第2の双方向転送型記憶装置と
を備える誤り訂正装置であって、
前記第1及び第2の双方向転送型記憶装置の少なくともいずれか一方が、
いずれもが所定長のデータを格納する第0乃至第(N+K−1)(N≧2,K≧0)の記憶単位を有し、
入力データはN個毎に組を成して交互に前記第0及び第(N+K−1)の記憶単位に入力され、
前記入力データの異なる2つの前記組の先頭のデータがK個の前記記憶単位を挟んで対向しつつ、前記第0乃至第(N+K−1)の記憶単位において格納されるデータに対して順次に(N+K−1)回のシフト転送が行われ、
前記シフト転送の方向が交互に逆向きに転向することにより、前記入力データがスイッチバックして出力される、誤り訂正装置。 - 前記入力データは、制御信号が第1の値を採る場合に前記第0の記憶単位へ、第2の値を採る場合に前記第Nの記憶単位へ、それぞれ格納し、
前記制御信号が前記第1の値を採る場合には前記第0乃至第(N+K−2)の記憶単位の格納する内容が前記第1乃至第(N+K−1)の記憶単位へ、前記第2の値を採る場合には前記第1乃至第(N+K−1)の記憶単位の格納する内容が前記第0乃至第(N+K−2)の記憶単位へ、それぞれ転送され、
前記制御信号が前記第1の値を採る場合には前記第(N+K−1)の記憶単位の格納する内容を、前記第2の値を採る場合には前記第0の記憶単位の格納する内容を、それぞれ出力データとして採用され、
前記制御信号は、前記第0の記憶単位にN回連続して前記入力データが書き込まれたことに対応して前記第2の値に、前記第(N+K−1)の記憶単位にN回連続して前記入力データが書き込まれたことに対応して前記第1の値に、それぞれ設定される、請求項1記載の誤り訂正装置。 - 誤り訂正符号の誤り位置多項式及び誤り評価多項式の係数を符号の最終桁から先頭桁へと進む順に求める多項式生成器と、
前記誤り訂正符号を構成するデータの列を逆に並び替える第1の双方向転送型記憶装置と、
前記多項式生成器の出力及び前記並び替え部の出力から前記誤り訂正符号の訂正を行う訂正器と、
前記訂正器が出力するデータの列を逆に並び替える第2の双方向転送型記憶装置と
を備える誤り訂正装置であって、
前記第1及び第2の双方向転送型記憶装置の少なくともいずれか一方が、
いずれもが所定長のデータを格納し、第0乃至第(N+K−1)のアドレスに対応する第0乃至第(N+K−1)(N≧2,K≧0)の記憶単位を有し、クロックに基づいて動作するメモリと、
前記メモリの読み出しアドレス及び書き込みアドレスをそれぞれ生成するアドレス生成部と
を有し、
入力データはN個毎に組を成し、前記記憶単位の格納する内容を読み出しつつこれに追随して入力データが書き込まれ、前記入力データの組の更新に対応して前記読み出しアドレス及び前記書き込みアドレスの移動する方向が逆転する、誤り訂正装置。 - 制御信号が第1の値を採る場合には前記メモリの前記読み出しアドレスが前記書き込みアドレスに対して前記Kだけ大きく設定されつつ、前記クロックに基づいて前記読み出しアドレス及び前記書き込みアドレスのいずれもが1増加し、
前記制御信号が第2の値を採る場合には前記読み出しアドレスが前記書き込みアドレスに対して前記Kだけ小さく設定されつつ、前記クロックに基づいて前記読み出しアドレス及び書き込みアドレスのいずれもが1減少し、
前記制御信号は、前記書き込みアドレスが前記第(N−1)の記憶単位を指定した場合に対応して前記第2の値に、前記第Kの記憶単位を指定した場合に対応して前記第1の値に、それぞれ設定され、
前記第(N−1)の記憶単位に対して前記書き込みが行われた後、前記書き込みアドレス及び前記読み出しアドレスはそれぞれ前記第(N+K−1)のアドレス、及び前記第(N−1)のアドレス、にそれぞれ設定され、
前記第Kの記憶単位に対して前記書き込みが行われた後、前記書き込みアドレス及び前記読み出しアドレスはそれぞれ前記第0のアドレス、及び前記第Kのアドレス、にそれぞれ設定される、請求項3記載の誤り訂正装置。 - 前記メモリの書き込み及び読み出しは前記クロックのそれぞれ立ち上がり及び立ち下がりを契機として行われ、前記書き込みアドレス及び読み出しアドレスは前記メモリの書き込みに引き続いて更新される請求項4記載の誤り訂正装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP03768297A JP3710586B2 (ja) | 1997-02-21 | 1997-02-21 | 誤り訂正装置 |
US08/872,155 US5991913A (en) | 1997-02-21 | 1997-06-10 | Error correcting device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP03768297A JP3710586B2 (ja) | 1997-02-21 | 1997-02-21 | 誤り訂正装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH10233699A JPH10233699A (ja) | 1998-09-02 |
JP3710586B2 true JP3710586B2 (ja) | 2005-10-26 |
Family
ID=12504380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP03768297A Expired - Fee Related JP3710586B2 (ja) | 1997-02-21 | 1997-02-21 | 誤り訂正装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US5991913A (ja) |
JP (1) | JP3710586B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030140302A1 (en) * | 2002-01-23 | 2003-07-24 | Litwin, Louis Robert | Chien search cell for an error-correcting decoder |
JP4571450B2 (ja) * | 2004-06-25 | 2010-10-27 | 株式会社ニューギン | 遊技機 |
JP4571451B2 (ja) * | 2004-06-25 | 2010-10-27 | 株式会社ニューギン | 遊技機 |
US7933146B2 (en) * | 2008-10-08 | 2011-04-26 | Seagate Technology Llc | Electronic devices utilizing spin torque transfer to flip magnetic orientation |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02303221A (ja) * | 1989-05-17 | 1990-12-17 | Toshiba Corp | リード・ソロモン符号の復号装置 |
DE4140018A1 (de) * | 1991-12-04 | 1993-06-09 | Bts Broadcast Television Systems Gmbh, 6100 Darmstadt, De | Verfahren und schaltungsanordnung zum decodieren von rs-codierten datensignalen |
JP2824474B2 (ja) * | 1992-02-17 | 1998-11-11 | 三菱電機株式会社 | 誤り訂正方式及びこの誤り訂正方式を用いた復号器 |
JPH0637649A (ja) * | 1992-07-21 | 1994-02-10 | Fujitsu Ltd | 誤り訂正回路 |
JP3241851B2 (ja) * | 1993-03-18 | 2001-12-25 | 株式会社東芝 | 誤り訂正復号装置 |
JP3230888B2 (ja) * | 1993-03-31 | 2001-11-19 | 株式会社東芝 | ユークリッド互除回路 |
US5602857A (en) * | 1993-09-21 | 1997-02-11 | Cirrus Logic, Inc. | Error correction method and apparatus |
-
1997
- 1997-02-21 JP JP03768297A patent/JP3710586B2/ja not_active Expired - Fee Related
- 1997-06-10 US US08/872,155 patent/US5991913A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5991913A (en) | 1999-11-23 |
JPH10233699A (ja) | 1998-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US4649541A (en) | Reed-Solomon decoder | |
EP0114938B1 (en) | On-the-fly multibyte error correction | |
US5323402A (en) | Programmable systolic BCH decoder | |
EP0963047B1 (en) | Reed Solomon coding apparatus and Reed Solomon coding method | |
EP0021283A1 (en) | Digital data apparatus | |
JP2687941B2 (ja) | リード−ソロモン・デコーダ | |
EP0416869B1 (en) | Digital adder/accumulator | |
JP4767266B2 (ja) | 演算ユニット、エラー訂正復号回路及び誤り位置多項式の演算方法 | |
JP3710586B2 (ja) | 誤り訂正装置 | |
JP3245119B2 (ja) | 新たな多項式配列構造を採用したリード−ソロモン復号器とその復号方法 | |
JP3502583B2 (ja) | 誤り訂正方法および誤り訂正装置 | |
JPH082014B2 (ja) | 多段デジタル・フィルタ | |
JP2000004169A (ja) | Crc演算方法及びcrc演算回路 | |
KR100258951B1 (ko) | 리드-솔로몬(rs) 복호기와 그 복호방법 | |
US6609142B1 (en) | Method of performing multiplication with accumulation in a Galois body | |
EP0911983A1 (en) | Reed solomon error correcting circuit and method and device for euclidean mutual division | |
EP0991196B1 (en) | Method of correcting lost data and circuit thereof | |
JPH11196006A (ja) | 並列処理シンドロ−ム計算回路及びリ−ド・ソロモン複合化回路 | |
US6067605A (en) | Bidirectional transfer type storage and method for controlling input and output of memory | |
US5948051A (en) | Device improving the processing speed of a modular arithmetic coprocessor | |
US10879933B2 (en) | Reed solomon decoder and semiconductor device including the same | |
JPH1055352A (ja) | 浮動小数点数累積加算装置 | |
JP3614978B2 (ja) | ガロア体の除算方法および除算装置 | |
Peon et al. | A VLSI implementation of an arithmetic coder for image compression | |
JP4408727B2 (ja) | ディジタル回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050801 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050809 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050810 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080819 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090819 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |