JPH1153206A - プロセッサ - Google Patents
プロセッサInfo
- Publication number
- JPH1153206A JPH1153206A JP9215230A JP21523097A JPH1153206A JP H1153206 A JPH1153206 A JP H1153206A JP 9215230 A JP9215230 A JP 9215230A JP 21523097 A JP21523097 A JP 21523097A JP H1153206 A JPH1153206 A JP H1153206A
- Authority
- JP
- Japan
- Prior art keywords
- data
- register
- instruction
- bit
- circuit
- 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.)
- Pending
Links
Landscapes
- Detection And Correction Of Errors (AREA)
Abstract
(57)【要約】
【課題】ファイア符号復号化処理における誤りビット列
検出処理の高速化 【解決手段】レジスタ124に保持された、受信ビット
列に対して検出された剰余データを1ビット上位側にシ
フトし、元の最上位ビットはゲート132に供給され
る。回路130は、レジスタ125に記憶されたマスク
データを使用して、レジスタ124内の剰余データの上
位側の所定長のビット部分以外のビットがすべて0であ
るか否かを判別し、そうなるまでその出力は1であり、
ゲート132に供給される。EOR演算回路120は、
上記シフトされた後の剰余データとレジスタ122に保
持された生成多項式データとに対してEOR演算を実行
する。ゲート132の出力が1か否かにより、その演算
結果データによりレジスタ124を更新するか否かが制
御される。以上の処理を回路130の出力が0になるま
で繰り返す。最終的にレジスタ124に誤りビット列が
得られる。
検出処理の高速化 【解決手段】レジスタ124に保持された、受信ビット
列に対して検出された剰余データを1ビット上位側にシ
フトし、元の最上位ビットはゲート132に供給され
る。回路130は、レジスタ125に記憶されたマスク
データを使用して、レジスタ124内の剰余データの上
位側の所定長のビット部分以外のビットがすべて0であ
るか否かを判別し、そうなるまでその出力は1であり、
ゲート132に供給される。EOR演算回路120は、
上記シフトされた後の剰余データとレジスタ122に保
持された生成多項式データとに対してEOR演算を実行
する。ゲート132の出力が1か否かにより、その演算
結果データによりレジスタ124を更新するか否かが制
御される。以上の処理を回路130の出力が0になるま
で繰り返す。最終的にレジスタ124に誤りビット列が
得られる。
Description
【0001】
【発明の属する技術分野】本発明は、ディジタル信号処
理等における誤り訂正処理で使用される頻度が高いバー
スト誤り訂正巡回符号化処理を高速に行うための演算回
路を有するプロセッサに関する。
理等における誤り訂正処理で使用される頻度が高いバー
スト誤り訂正巡回符号化処理を高速に行うための演算回
路を有するプロセッサに関する。
【0002】
【従来の技術】近年、データ伝送の信頼性を高めるた
め、伝送途中で生じる伝送データの誤りを訂正する誤り
訂正技術が多方面でよく用いられている。誤り訂正符号
としては、巡回符号がよく使用されている。バースト誤
りは、伝送途中でデータに集中して生じる誤りであり、
これを訂正するバースト誤り訂正訂正符号としては、バ
ースト誤り訂正巡回符号がよく使用され、その中でも代
表的な符号はファイア符号である。
め、伝送途中で生じる伝送データの誤りを訂正する誤り
訂正技術が多方面でよく用いられている。誤り訂正符号
としては、巡回符号がよく使用されている。バースト誤
りは、伝送途中でデータに集中して生じる誤りであり、
これを訂正するバースト誤り訂正訂正符号としては、バ
ースト誤り訂正巡回符号がよく使用され、その中でも代
表的な符号はファイア符号である。
【0003】2元(n、k)巡回符号の符号化では、k
ビットの情報ビット列からnビットの符号ビット列が生
成される。まず、情報ビット列を係数とする多項式を生
成する。例えば、情報ビット列の長さkを4とし、その
ビット列を”1100”とすると、情報ビット列を係数
とする多項式I(X)は、
ビットの情報ビット列からnビットの符号ビット列が生
成される。まず、情報ビット列を係数とする多項式を生
成する。例えば、情報ビット列の長さkを4とし、その
ビット列を”1100”とすると、情報ビット列を係数
とする多項式I(X)は、
【0004】
【数1】 I(X)=1・X3↑+1・X2↑+0・X+0・1=X3↑+X2↑ ・・・(1) である。ここで、X3↑は、Xの3乗を表す。X2↑も同
様である。以下でも、変数XのN乗をXN↑で表す。巡
回符号化処理では、生成多項式G(X)が定義され、生
成多項式G(X)の次数はn−k次である。上記の例
で、生成多項式G(X)の次数を3とすると、符号ビッ
ト列の長さnは、n=4+3=7となり、(7、4)巡
回符号となる。符号ビット列を係数とする符号多項式W
(X)は、情報ビット列を係数とする多項式I(X)、
生成多項式G(X)および剰余多項式R(X)を用いて
次式で表される。
様である。以下でも、変数XのN乗をXN↑で表す。巡
回符号化処理では、生成多項式G(X)が定義され、生
成多項式G(X)の次数はn−k次である。上記の例
で、生成多項式G(X)の次数を3とすると、符号ビッ
ト列の長さnは、n=4+3=7となり、(7、4)巡
回符号となる。符号ビット列を係数とする符号多項式W
(X)は、情報ビット列を係数とする多項式I(X)、
生成多項式G(X)および剰余多項式R(X)を用いて
次式で表される。
【0005】
【数2】 W(X)=Q(X)・G(X)=I(X)・X(n−k)↑+R(X) ・・・(2) すなわち、剰余多項式R(X)はI(X)とX(n−
k)↑との積を生成多項式G(X)で割ったときに得ら
れる剰余である。たとえば、生成多項式G(X)=X3
↑+X+1の場合、剰余多項式R(X)=Xとなり、符
号多項式はW(X)は、次式となる。
k)↑との積を生成多項式G(X)で割ったときに得ら
れる剰余である。たとえば、生成多項式G(X)=X3
↑+X+1の場合、剰余多項式R(X)=Xとなり、符
号多項式はW(X)は、次式となる。
【0006】
【数3】 W(X)=(X3↑+X2↑)・X3↑+X =1・X6↑+1・X5↑+0・X4↑ +0・X3↑+0・X2↑+1・X+0・1 ・・・(3) つまり、生成多項式G(X)=X3↑+X+1を用いた
(7、4)巡回符号化処理においては、情報ビット”1
100”が与えられると、符号ビットは”110001
0”となる。この例からもわかる通り、符号ビット列の
先頭から4番目までのビット列(例では”1100”)
は、情報ビット列と一致する。また、符号ビット列の5
から7番目のビットは剰余多項式の係数と一致する。す
なわち、情報ビット列から符号ビット列を生成するため
には剰余ビットを算出すればよい。
(7、4)巡回符号化処理においては、情報ビット”1
100”が与えられると、符号ビットは”110001
0”となる。この例からもわかる通り、符号ビット列の
先頭から4番目までのビット列(例では”1100”)
は、情報ビット列と一致する。また、符号ビット列の5
から7番目のビットは剰余多項式の係数と一致する。す
なわち、情報ビット列から符号ビット列を生成するため
には剰余ビットを算出すればよい。
【0007】ファイア符号は、バースト誤り訂正を可能
とする特定の生成多項式によって生成される巡回符号で
ある。具体的な例を挙げると、次の生成多項式G(X)
を使用して生成した(35,27)巡回符号はファイア
符号である。
とする特定の生成多項式によって生成される巡回符号で
ある。具体的な例を挙げると、次の生成多項式G(X)
を使用して生成した(35,27)巡回符号はファイア
符号である。
【0008】
【数4】 G(X)=X8↑+ X6↑+X5↑+X3↑+X+1 ・・・(4) このファイア符号にも、上に述べた巡回符号の特徴があ
てはまるのは言うまでもない。ファイア符号の復号化処
理において、受信ビット列に含まれたバースト誤りを訂
正するとき、ファイア符号の生成に使用した生成多項式
によって訂正できるバースト誤りの長さが変わる。この
ため、各ファイア符号に対してバースト誤りの訂正能力
が定義される。例えば、ファイア符号である(n、k)
巡回符号が長さl以下のすべてのバースト誤りを訂正で
き、長さl+1のバースト誤りを訂正できない場合、こ
のファイア符号のバースト誤り訂正能力はlと定義され
る。式4の生成多項式により生成されたファイア符号の
バースト誤り訂正能力lは3であることが知られてい
る。なお、ファイア符号の生成多項式およびバースト誤
り訂正能力については、例えば、電子情報学会編集”符
号理論”第212頁から第214頁参照。
てはまるのは言うまでもない。ファイア符号の復号化処
理において、受信ビット列に含まれたバースト誤りを訂
正するとき、ファイア符号の生成に使用した生成多項式
によって訂正できるバースト誤りの長さが変わる。この
ため、各ファイア符号に対してバースト誤りの訂正能力
が定義される。例えば、ファイア符号である(n、k)
巡回符号が長さl以下のすべてのバースト誤りを訂正で
き、長さl+1のバースト誤りを訂正できない場合、こ
のファイア符号のバースト誤り訂正能力はlと定義され
る。式4の生成多項式により生成されたファイア符号の
バースト誤り訂正能力lは3であることが知られてい
る。なお、ファイア符号の生成多項式およびバースト誤
り訂正能力については、例えば、電子情報学会編集”符
号理論”第212頁から第214頁参照。
【0009】ファイア符号の復号化処理は、(1)受信
したビット列に伝送途中で生じた誤りが含まれているか
どうかを調べる誤り発生検出処理、(2)誤りが含まれ
ている場合は誤りのビット列を検出する誤りビット列検
出処理、(3)誤りのビット列に従って受信したビット
を訂正する誤り訂正処理という3つの処理に分割でき
る。
したビット列に伝送途中で生じた誤りが含まれているか
どうかを調べる誤り発生検出処理、(2)誤りが含まれ
ている場合は誤りのビット列を検出する誤りビット列検
出処理、(3)誤りのビット列に従って受信したビット
を訂正する誤り訂正処理という3つの処理に分割でき
る。
【0010】
【発明が解決しようとしている課題】本発明者は、たと
えば、本出願人により開発されたSH7600マイコン
において巡回符号の符号化処理を実行するプログラムを
先に検討した。その結果、従来のプロセッサでは剰余算
出処理時間が大きいことを見いだし、それを改善するの
に適したプロセッサを発明した。特願平09−1267
02号明細書参照。
えば、本出願人により開発されたSH7600マイコン
において巡回符号の符号化処理を実行するプログラムを
先に検討した。その結果、従来のプロセッサでは剰余算
出処理時間が大きいことを見いだし、それを改善するの
に適したプロセッサを発明した。特願平09−1267
02号明細書参照。
【0011】本発明者は、その後上記SH7600マイ
コンにおいて巡回符号の一つであるファイア符号の復号
化処理を実行するプログラムを検討した。その結果、後
に詳しく説明するように、従来の誤り発生検出処理およ
び誤りビット列検出処理では受信したビット列の1ビッ
トあたりの処理時間が大きいことを見いだした。
コンにおいて巡回符号の一つであるファイア符号の復号
化処理を実行するプログラムを検討した。その結果、後
に詳しく説明するように、従来の誤り発生検出処理およ
び誤りビット列検出処理では受信したビット列の1ビッ
トあたりの処理時間が大きいことを見いだした。
【0012】特に、生成多項式の次数が汎用レジスタの
長さを越える場合には、処理量がさらに増大することを
見いだした。具体的には、ファイア符号の復号化処理
は、生成多項式の次数が汎用レジスタの長さより短い場
合に必要な処理時間の約2倍程度かかることが分かっ
た。
長さを越える場合には、処理量がさらに増大することを
見いだした。具体的には、ファイア符号の復号化処理
は、生成多項式の次数が汎用レジスタの長さより短い場
合に必要な処理時間の約2倍程度かかることが分かっ
た。
【0013】これらの二つの処理の内、誤り発生検出処
理で必要となる剰余算出処理には、上記特願平09−1
26702に記載の技術を修正して適用するすることが
有効であることが分かった。
理で必要となる剰余算出処理には、上記特願平09−1
26702に記載の技術を修正して適用するすることが
有効であることが分かった。
【0014】したがって、本発明の目的は、誤りビット
列検出処理をより高速に実行するのに適したプロセッサ
を提供することにある。
列検出処理をより高速に実行するのに適したプロセッサ
を提供することにある。
【0015】本発明のより具体的な目的は、生成多項式
の次数が汎用レジスタの長さを越える場合にも、誤りビ
ット列検出処理をより高速に実行するのに適したプロセ
ッサを提供することにある。
の次数が汎用レジスタの長さを越える場合にも、誤りビ
ット列検出処理をより高速に実行するのに適したプロセ
ッサを提供することにある。
【0016】
【課題を解決する為の手段】上記目的を達成するため
に、本発明によるプロセッサには、複数のビットからな
る第1から第3のデータをそれぞれ保持するための第1
から第3のレジスタと、第1のデータの各ビットと、第
2のデータの対応するビットとに対して論理積演算を実
行し、第1のデータの複数のビットに対する論理積演算
の結果データに対して論理和演算を行うアンドオア回路
と、第2のデータを1ビット上位側にシフトしたデータ
と上記第3のデータとに対して排他的論理和演算を実行
可能な演算回路と、上記アンドオア回路の出力と上記第
2のデータの最上位のビットの値に依存して、上記第2
のデータを上記演算回路により与えられる上記排他的論
理和演算の結果データにより更新するかあるいは上記第
2のデータを1ビット上位側にシフトしたデータに更新
するかを制御する制御回路とが設けられる。
に、本発明によるプロセッサには、複数のビットからな
る第1から第3のデータをそれぞれ保持するための第1
から第3のレジスタと、第1のデータの各ビットと、第
2のデータの対応するビットとに対して論理積演算を実
行し、第1のデータの複数のビットに対する論理積演算
の結果データに対して論理和演算を行うアンドオア回路
と、第2のデータを1ビット上位側にシフトしたデータ
と上記第3のデータとに対して排他的論理和演算を実行
可能な演算回路と、上記アンドオア回路の出力と上記第
2のデータの最上位のビットの値に依存して、上記第2
のデータを上記演算回路により与えられる上記排他的論
理和演算の結果データにより更新するかあるいは上記第
2のデータを1ビット上位側にシフトしたデータに更新
するかを制御する制御回路とが設けられる。
【0017】
【発明の実施の形態】以下、本発明に係わるプロセッサ
を説明する前に、ファイア符号の復号化処理の原理を説
明する。以下では、剰余多項式の係数を表すビット列を
剰余多項式係数ビット列もしくは剰余多項式係数データ
あるいは剰余データと呼ぶことがある。同様に、生成多
項式の係数を表すビット列を生成多項式係数ビット列あ
るいは生成多項式係数データあるいは生成多項式データ
と呼ぶことがある。
を説明する前に、ファイア符号の復号化処理の原理を説
明する。以下では、剰余多項式の係数を表すビット列を
剰余多項式係数ビット列もしくは剰余多項式係数データ
あるいは剰余データと呼ぶことがある。同様に、生成多
項式の係数を表すビット列を生成多項式係数ビット列あ
るいは生成多項式係数データあるいは生成多項式データ
と呼ぶことがある。
【0018】(1)ファイア符号の復号化処理の原理 (1a)誤り発生検出処理 伝送途中で生じた誤りビット列を係数とする誤り多項式
をE(X)、生成多項式をG(X)符号多項式をW
(X)とすると、受信ビット列を係数とする受信多項式
S(X)は、次式で表される。
をE(X)、生成多項式をG(X)符号多項式をW
(X)とすると、受信ビット列を係数とする受信多項式
S(X)は、次式で表される。
【0019】
【数5】 S(X)=W(X)+E(X)=Q(X)・G(X)+E(X) (5) 伝送途中で誤りが生じなかった場合は、E(X)=0で
ある。従って、誤り発生検査処理では、受信ビット列に
対応する受信多項式S(X)を、生成多項式G(X)で
割った剰余を算出し、算出された剰余が0であるかどう
かを検出すればよい。この剰余が0となる場合は、伝送
途中で誤りが生じなかった場合であり、その後の誤りビ
ット列検出処理および誤り訂正処理を実行する必要はな
い。
ある。従って、誤り発生検査処理では、受信ビット列に
対応する受信多項式S(X)を、生成多項式G(X)で
割った剰余を算出し、算出された剰余が0であるかどう
かを検出すればよい。この剰余が0となる場合は、伝送
途中で誤りが生じなかった場合であり、その後の誤りビ
ット列検出処理および誤り訂正処理を実行する必要はな
い。
【0020】図6において、10は、式4で表された生
成多項式G(X)を用いて生成された(35、27)巡
回符号であるファイア符号により符号化された情報ビッ
ト列の一例を示す。11は、対応する受信ビット列を示
し、このビット列は、情報ビット列11aと剰余ビット
列11bとからなる。12は、伝送途中で発生した誤り
ビット列の一例を示す。誤りビット列の発生位置は、そ
のビット列の最下位ビットの位置で示す。図に示したよ
うに、この誤りビット列12は3ビットであり、受信ビ
ット列の最下位ビット位置から数えて第9ビット目に発
生したと仮定する。
成多項式G(X)を用いて生成された(35、27)巡
回符号であるファイア符号により符号化された情報ビッ
ト列の一例を示す。11は、対応する受信ビット列を示
し、このビット列は、情報ビット列11aと剰余ビット
列11bとからなる。12は、伝送途中で発生した誤り
ビット列の一例を示す。誤りビット列の発生位置は、そ
のビット列の最下位ビットの位置で示す。図に示したよ
うに、この誤りビット列12は3ビットであり、受信ビ
ット列の最下位ビット位置から数えて第9ビット目に発
生したと仮定する。
【0021】この受信ビット列11で表される受信多項
式S(X)を生成多項式G(X)で除算すると、剰余多
項式K(X)は、次式で与えられる。
式S(X)を生成多項式G(X)で除算すると、剰余多
項式K(X)は、次式で与えられる。
【0022】
【数6】 K(X)=X6↑+X5↑+X4↑+X3↑+X (6) 従って、K(X)は0と一致しないため、誤りが発生し
ていることがわかる。この受信ビット列11中の情報ビ
ット列11aで表される情報多項式を生成多項式G
(X)で除算すると、得られる剰余多項式Ki(X)
は、次式で表されることとなる。
ていることがわかる。この受信ビット列11中の情報ビ
ット列11aで表される情報多項式を生成多項式G
(X)で除算すると、得られる剰余多項式Ki(X)
は、次式で表されることとなる。
【0023】
【数7】 Ki(X)=X6↑+X4↑+X2↑+1 (7) この受信ビット列11に含まれた剰余ビット列11b表
される剰余多項式Krrは、次式で表される。
される剰余多項式Krrは、次式で表される。
【0024】
【数8】 Kr(X)=X5↑+X3↑+X2↑+X+1 (8) これらの二つの多項式Ki(X)とKr(X)を加算す
ると、上記式6に示された剰余多項式K(X)が得られ
るという特徴がある。受信ビット列に対する剰余多項式
データをマイクロコンピュータで算出するとき、上に述
べたような受信ビット列11から対応する剰余データを
いきなり算出する方法ではなく、上に述べた特徴を利用
して次のように算出される。
ると、上記式6に示された剰余多項式K(X)が得られ
るという特徴がある。受信ビット列に対する剰余多項式
データをマイクロコンピュータで算出するとき、上に述
べたような受信ビット列11から対応する剰余データを
いきなり算出する方法ではなく、上に述べた特徴を利用
して次のように算出される。
【0025】まず受信ビット列11中の情報ビット列1
1aに対する剰余多項式Ki(X)に対応する剰余デー
タが算出される。その後、こうして算出された剰余デー
タと受信ビット列11中の剰余データとに対して排他的
論理和演算が行われる。この方法が処理時間が少なくて
済むからである。こうして、受信ビット列11全体に対
する剰余データが得られる。
1aに対する剰余多項式Ki(X)に対応する剰余デー
タが算出される。その後、こうして算出された剰余デー
タと受信ビット列11中の剰余データとに対して排他的
論理和演算が行われる。この方法が処理時間が少なくて
済むからである。こうして、受信ビット列11全体に対
する剰余データが得られる。
【0026】図7は、情報ビット列に対応する情報多項
式を生成多項式で除算して剰余多項式の係数を算出する
処理の実行手順を模式的に示す。なお、今の例では、生
成多項式G(X)は8次であるから、剰余多項式R
(X)の次数は7である。一般的に、剰余多項式の係数
算出処理は次の3つの演算に分解できる。
式を生成多項式で除算して剰余多項式の係数を算出する
処理の実行手順を模式的に示す。なお、今の例では、生
成多項式G(X)は8次であるから、剰余多項式R
(X)の次数は7である。一般的に、剰余多項式の係数
算出処理は次の3つの演算に分解できる。
【0027】(演算1)剰余多項式データの最高次のビ
ットと情報ビット列のいずれかのビットとの排他的論理
和演算を行い、フラグビットを生成する。
ットと情報ビット列のいずれかのビットとの排他的論理
和演算を行い、フラグビットを生成する。
【0028】(演算2)剰余多項式データの最高次ビッ
トをシフトアウトするように剰余多項式データを1ビッ
トだけ論理シフトする。
トをシフトアウトするように剰余多項式データを1ビッ
トだけ論理シフトする。
【0029】(演算3)フラグビットが1である場合
は、剰余多項式データと生成多項式データとの排他的論
理和演算を行う。フラグビットが0である場合は、この
演算を行わない。演算3の結果が新たな剰余多項式デー
タとなる。以上の処理を受信ビット列11中の情報ビッ
ト列11aのビット数、今の例では27に等しい回数だ
け行う。
は、剰余多項式データと生成多項式データとの排他的論
理和演算を行う。フラグビットが0である場合は、この
演算を行わない。演算3の結果が新たな剰余多項式デー
タとなる。以上の処理を受信ビット列11中の情報ビッ
ト列11aのビット数、今の例では27に等しい回数だ
け行う。
【0030】誤りビット列検出処理では、上記のように
して求められた剰余多項式K(X)から誤りビット列1
2の位置および誤りビットのパターンが算出される。
して求められた剰余多項式K(X)から誤りビット列1
2の位置および誤りビットのパターンが算出される。
【0031】(1b)誤りビット列検出処理 原理的には誤りビット列は、以下の方法で求めることが
できる。
できる。
【0032】<ステップ1>受信ビット列に対して得ら
れた剰余多項式E(X)が0でない場合、剰余多項式
が、(生成多項式の次数−生成多項式により定まるバー
スト誤り訂正能力l)に等しい値の次数以上の項のみか
らなるという条件を満たすか否かを判別する。今の例で
は、生成多項式の次数が8であり、l=3であるから、
得られた剰余多項式が、X↑5以上の項のみからなるか
否かが判別される。
れた剰余多項式E(X)が0でない場合、剰余多項式
が、(生成多項式の次数−生成多項式により定まるバー
スト誤り訂正能力l)に等しい値の次数以上の項のみか
らなるという条件を満たすか否かを判別する。今の例で
は、生成多項式の次数が8であり、l=3であるから、
得られた剰余多項式が、X↑5以上の項のみからなるか
否かが判別される。
【0033】<ステップ2>もし、得られた剰余多項式
が、X4↑以下の項を含むときには、その剰余多項式に
Xを掛け、得られた結果を生成多項式G(X)で再度除
し、新たな剰余を求める。この新たな剰余に対してステ
ップ2を繰り返す。こうして上記条件を満たす特定の剰
余多項式が得られたときには、その時により得られた剰
余多項式に含まれた項の係数が発生した誤りビット列を
表す。このステップ2の実行回数が誤り発生位置を表
す。
が、X4↑以下の項を含むときには、その剰余多項式に
Xを掛け、得られた結果を生成多項式G(X)で再度除
し、新たな剰余を求める。この新たな剰余に対してステ
ップ2を繰り返す。こうして上記条件を満たす特定の剰
余多項式が得られたときには、その時により得られた剰
余多項式に含まれた項の係数が発生した誤りビット列を
表す。このステップ2の実行回数が誤り発生位置を表
す。
【0034】次のステップ0を上記ステップ1の前に実
行することにより、以上の処理と同じ結果をより高速に
得ることができることが知られている。
行することにより、以上の処理と同じ結果をより高速に
得ることができることが知られている。
【0035】<ステップ0>生成多項式G(X)および
上記誤り発生検出処理により得られた剰余多項式K
(X)のそれぞれの係数を逆順に並び替え、得られた係
数により定義される変形生成多項式G’(X)、変形剰
余多項式K’(X)を、生成多項式G(X)、元の剰余
多項式K(X)の代わりに使用して、上記ステップ1,
2を実行する。
上記誤り発生検出処理により得られた剰余多項式K
(X)のそれぞれの係数を逆順に並び替え、得られた係
数により定義される変形生成多項式G’(X)、変形剰
余多項式K’(X)を、生成多項式G(X)、元の剰余
多項式K(X)の代わりに使用して、上記ステップ1,
2を実行する。
【0036】以下では、上記式4で示される生成多項式
の場合を例に採り、以上の処理をより具体的に説明す
る。
の場合を例に採り、以上の処理をより具体的に説明す
る。
【0037】<ステップ0>生成多項式G(X)、剰余
多項式K(X)を上記変形生成多項式G’(X)、変形
剰余多項式K'(X)に変換する。今、生成多項式G
(X)をG(X)=Σαi・Xi(i=8....0)とす
ると、変形生成多項式G'(X)は、G'(X)=Σα
(8−i)・Xi(i=8....0)である。上記の例で
はG'(X)は次式で与えられる。
多項式K(X)を上記変形生成多項式G’(X)、変形
剰余多項式K'(X)に変換する。今、生成多項式G
(X)をG(X)=Σαi・Xi(i=8....0)とす
ると、変形生成多項式G'(X)は、G'(X)=Σα
(8−i)・Xi(i=8....0)である。上記の例で
はG'(X)は次式で与えられる。
【0038】
【数9】 G'(X)=X8↑+X7↑+X5↑+X3↑+X2↑+1 (9) 剰余多項式K(X)をK(X)=Σβi・Xi(i=
7....0)とすると、変形剰余多項式K'(X)は、K'
(X)=Σβ(7−i)・Xi(i=7....0)であ
る。以下では、この変形剰余多項式を次式で表す。
7....0)とすると、変形剰余多項式K'(X)は、K'
(X)=Σβ(7−i)・Xi(i=7....0)であ
る。以下では、この変形剰余多項式を次式で表す。
【0039】
【数10】 K’(X)=Σβ’i・Xi(i=7.....0) (10) 剰余多項式K(X)が式6に示されたものであるときに
は、上記変形剰余多項式K’(X)は次式で与えられ
る。
は、上記変形剰余多項式K’(X)は次式で与えられ
る。
【0040】
【数11】 K'(X)=X6↑+X4↑+X3↑+X2↑+X (11) <ステップ1>剰余多項式K'(X)の項X4↑以下の
すべての項の係数β’0〜β’4がすべて0となってい
るか否かをチェックする。
すべての項の係数β’0〜β’4がすべて0となってい
るか否かをチェックする。
【0041】<ステップ2>変形剰余多項式K’(X)
の係数β’0〜β’4がすべて0である場合は、β’
7、β’6、β’5で表されるビット列が誤りビット列
のパターンである。係数β’0〜β’4の少なくとも一
つが0でない場合には、K’(X)にXを掛け、再び変
形生成多項式G'(X)で除算し、再びステップ1を実
行する。但し、Xを掛ける前の変形剰余多項式の最大次
数が7より小さいときには、その変形剰余多項式にXを
掛けて得られる変形剰余多項式の最大次数は、8以上に
はならない。したがって、この新たな変形剰余多項式に
対しては、上記除算を実行する必要はなく、この新たな
変形剰余多項式が、上記除算を実際に行ったときに得ら
れる剰余多項式に等しい。なお、このステップ2で行う
除算は、先に説明した、受信多項式を生成多項式で除算
するときの演算1から3を、受信ビット列11中の情報
ビット列11aのビット数、今の例では27に等しい回
数だけ繰り返し実行することにより得られる。後に詳し
く説明するように、図6に示した受信ビット列11に対
して、誤りビット列”111”が得られ、誤り発生位置
として値8が得られる。
の係数β’0〜β’4がすべて0である場合は、β’
7、β’6、β’5で表されるビット列が誤りビット列
のパターンである。係数β’0〜β’4の少なくとも一
つが0でない場合には、K’(X)にXを掛け、再び変
形生成多項式G'(X)で除算し、再びステップ1を実
行する。但し、Xを掛ける前の変形剰余多項式の最大次
数が7より小さいときには、その変形剰余多項式にXを
掛けて得られる変形剰余多項式の最大次数は、8以上に
はならない。したがって、この新たな変形剰余多項式に
対しては、上記除算を実行する必要はなく、この新たな
変形剰余多項式が、上記除算を実際に行ったときに得ら
れる剰余多項式に等しい。なお、このステップ2で行う
除算は、先に説明した、受信多項式を生成多項式で除算
するときの演算1から3を、受信ビット列11中の情報
ビット列11aのビット数、今の例では27に等しい回
数だけ繰り返し実行することにより得られる。後に詳し
く説明するように、図6に示した受信ビット列11に対
して、誤りビット列”111”が得られ、誤り発生位置
として値8が得られる。
【0042】(1c)誤り訂正処理 図6に示した受信ビット列11は、符号ビット列10と
誤りビット列12に対して排他的論理和演算を行うこと
により生成される。したがって、受信ビット列11から
符号ビット列10を生成するには、受信ビット列11と
検出されたビット列12に対して排他的論理和演算を実
行すればよい。
誤りビット列12に対して排他的論理和演算を行うこと
により生成される。したがって、受信ビット列11から
符号ビット列10を生成するには、受信ビット列11と
検出されたビット列12に対して排他的論理和演算を実
行すればよい。
【0043】(2)プログラム例1(C言語プログラ
ム) 以上に示したファイア符号の復号化処理を、汎用的に使
用されているC言語で記述したプログラムによりさらに
具体的に説明する。図8から10は、式4の生成多項式
により生成される(35、27)巡回符号であるファイ
ア符号の復号化処理を実行するために本発明者が記述し
たプログラムである。以下の説明においては図6に示し
た受信ビット列11その他を適宜参照する。このプログ
ラムは、誤り発生検査処理100、誤りビット列検出処
理200、誤り訂正処理300からなる。誤り発生検査
処理100は命令704から712よりなり、誤りビッ
ト列検出処理200は命令713から723よりなり、
誤り訂正処理300は命令724から729よりなる。
ム) 以上に示したファイア符号の復号化処理を、汎用的に使
用されているC言語で記述したプログラムによりさらに
具体的に説明する。図8から10は、式4の生成多項式
により生成される(35、27)巡回符号であるファイ
ア符号の復号化処理を実行するために本発明者が記述し
たプログラムである。以下の説明においては図6に示し
た受信ビット列11その他を適宜参照する。このプログ
ラムは、誤り発生検査処理100、誤りビット列検出処
理200、誤り訂正処理300からなる。誤り発生検査
処理100は命令704から712よりなり、誤りビッ
ト列検出処理200は命令713から723よりなり、
誤り訂正処理300は命令724から729よりなる。
【0044】図8から9のプログラムで使用される変数
は命令701から703で定義される。なお、shor
tは、これらの変数が16ビットの変数であることを示
す。flagは誤り発生検査処理100および誤りビッ
ト列検出処理200の各々において条件判定に使用され
るフラグである。geneRegは誤り発生検査処理1
00において生成多項式の係数を格納する変数であり、
parityRegは誤り発生検査処理100において
剰余多項式の係数を格納する変数である。geneRe
g2は誤りビット列検出処理200において生成多項式
の係数を格納する変数であり、parityReg2は
誤りビット列検出処理200において剰余多項式の係数
を格納する変数である。counterは誤りビットの
位置を示す変数であり、変数iは誤り発生検査処理10
0および誤りビット列検出処理200で実行されるルー
プ繰り返し変数である。mask_dataは、誤りビ
ット列検出処理200において先に述べたステップ1の
判別を行うために使用される、マスクされたデータであ
り、error_dataは、誤りビット列検出処理2
00により検出される誤りビット列である。
は命令701から703で定義される。なお、shor
tは、これらの変数が16ビットの変数であることを示
す。flagは誤り発生検査処理100および誤りビッ
ト列検出処理200の各々において条件判定に使用され
るフラグである。geneRegは誤り発生検査処理1
00において生成多項式の係数を格納する変数であり、
parityRegは誤り発生検査処理100において
剰余多項式の係数を格納する変数である。geneRe
g2は誤りビット列検出処理200において生成多項式
の係数を格納する変数であり、parityReg2は
誤りビット列検出処理200において剰余多項式の係数
を格納する変数である。counterは誤りビットの
位置を示す変数であり、変数iは誤り発生検査処理10
0および誤りビット列検出処理200で実行されるルー
プ繰り返し変数である。mask_dataは、誤りビ
ット列検出処理200において先に述べたステップ1の
判別を行うために使用される、マスクされたデータであ
り、error_dataは、誤りビット列検出処理2
00により検出される誤りビット列である。
【0045】このプログラムは、以下の仮定をしてい
る。通常そうであるように、受信ビット列11が復号化
される前に、このビット列11中の情報ビット列11a
に対してビット分離処理が施され、図11に示すよう
に、メモリ上のInformation_arrayと
いう配列の各要素に1ビットずつに区分して、かつ、各
要素の最下位ビット位置に格納される。このように1つ
の情報ビットを含むメモリ上のデータを分割情報データ
と呼ぶことがある。受信ビット列11中の剰余ビット列
11bは、上記情報ビット列と異なり、メモり上のPa
rity_arrayという配列の先頭要素にまとめて
格納される。命令703はそれぞれの配列を指すポイン
タInfo_ptrおよびparity_ptrを宣言
している。
る。通常そうであるように、受信ビット列11が復号化
される前に、このビット列11中の情報ビット列11a
に対してビット分離処理が施され、図11に示すよう
に、メモリ上のInformation_arrayと
いう配列の各要素に1ビットずつに区分して、かつ、各
要素の最下位ビット位置に格納される。このように1つ
の情報ビットを含むメモリ上のデータを分割情報データ
と呼ぶことがある。受信ビット列11中の剰余ビット列
11bは、上記情報ビット列と異なり、メモり上のPa
rity_arrayという配列の先頭要素にまとめて
格納される。命令703はそれぞれの配列を指すポイン
タInfo_ptrおよびparity_ptrを宣言
している。
【0046】命令704は、変数geneRegの初期
値として式4で表される生成多項式の係数データを設定
する。命令705は、変数parityRegの初期値
として値0を設定する。命令706,707は、前述の
二つのポインタを設定する。図12の800は、変数g
eneRegに保持されたデータの一例を示す。801
は、命令705により変数parityRegに設定さ
れた初期値0を示す。図12に示すように、これらの変
数の最下位ビットには生成多項式および剰余多項式のX
7の係数が格納され、以下次数の高い係数から順に続い
て格納される。なお、メモリ上の配列Parity_a
rrayの先頭要素に保持された上記受信ビット列中の
剰余ビット列も、同様に配列されている。
値として式4で表される生成多項式の係数データを設定
する。命令705は、変数parityRegの初期値
として値0を設定する。命令706,707は、前述の
二つのポインタを設定する。図12の800は、変数g
eneRegに保持されたデータの一例を示す。801
は、命令705により変数parityRegに設定さ
れた初期値0を示す。図12に示すように、これらの変
数の最下位ビットには生成多項式および剰余多項式のX
7の係数が格納され、以下次数の高い係数から順に続い
て格納される。なお、メモリ上の配列Parity_a
rrayの先頭要素に保持された上記受信ビット列中の
剰余ビット列も、同様に配列されている。
【0047】(2a)誤り発生検査処理100 この処理では、受信ビット列11の内の情報ビット列1
1aに対する情報多項式を生成多項式で除算して、剰余
を算出する。この除算は先に述べた演算1から3により
行われる。命令708は、ループ命令であり、ループ内
命令709、710、711を情報ビット列のビット数
27に等しい回数だけ繰り返し実行する。ループ内の最
初の命令709は、先に説明した演算1を実行する命令
である。すなわち、ポインタInfo_ptrで指定さ
れる受信ビット列11の一つのエントリと変数pari
tyRegとに対して排他的論理和演算を行い、その結
果データをデータ000..1との論理積を採る。上記
排他的論理和演算の結果データの最下位ビットが1であ
るか否かにより変数flagが1または0となる。命令
709が最初に実行されたときには、配列Info_a
rrayの最初のエントリの最下位ビットは0であり、
parity_Regの対応するビットは0であるの
で、flagは0となる。
1aに対する情報多項式を生成多項式で除算して、剰余
を算出する。この除算は先に述べた演算1から3により
行われる。命令708は、ループ命令であり、ループ内
命令709、710、711を情報ビット列のビット数
27に等しい回数だけ繰り返し実行する。ループ内の最
初の命令709は、先に説明した演算1を実行する命令
である。すなわち、ポインタInfo_ptrで指定さ
れる受信ビット列11の一つのエントリと変数pari
tyRegとに対して排他的論理和演算を行い、その結
果データをデータ000..1との論理積を採る。上記
排他的論理和演算の結果データの最下位ビットが1であ
るか否かにより変数flagが1または0となる。命令
709が最初に実行されたときには、配列Info_a
rrayの最初のエントリの最下位ビットは0であり、
parity_Regの対応するビットは0であるの
で、flagは0となる。
【0048】命令710は先に示した演算2を実行する
命令であり、変数parityRegを1ビット右シフ
トする。今の例では変数parity_Regは0のま
まである。命令711は、先の演算3を実行する命令で
あり、flagが1の場合には、変数parityRe
gとgeneRegとに対して排他的論理和演算を実行
し、その結果を変数parityRegの新たな値とす
る。命令711はflagが0の場合には実行されな
い。この結果、ループ内の命令が1回実行された後のp
arityRegは802に示すデータを有する。同様
に、ループ内の命令が2回目、3回目、4回目、5回目
に実行されると、変数parityRegは、それぞれ
803、804、805、806に示すデータを有す
る。
命令であり、変数parityRegを1ビット右シフ
トする。今の例では変数parity_Regは0のま
まである。命令711は、先の演算3を実行する命令で
あり、flagが1の場合には、変数parityRe
gとgeneRegとに対して排他的論理和演算を実行
し、その結果を変数parityRegの新たな値とす
る。命令711はflagが0の場合には実行されな
い。この結果、ループ内の命令が1回実行された後のp
arityRegは802に示すデータを有する。同様
に、ループ内の命令が2回目、3回目、4回目、5回目
に実行されると、変数parityRegは、それぞれ
803、804、805、806に示すデータを有す
る。
【0049】ループ命令の実行後に命令712が実行さ
れると、メモリ上の配列Parity_arrayの最
初のエントリにある、受信ビット列中の剰余ビット列1
1bとparityRegとに対してと排他的論理和演
算が実行される。今の例では前者は807に示す値を有
するので、この演算の結果、parityRegは80
8に示すデータを有する。こうして誤り発生検査処理1
00は終了する。今の例では、誤り発生検査処理100
を実行した後のparityRegは0ではないことか
ら、受信ビット列11には誤りが生じたことがわかる。
れると、メモリ上の配列Parity_arrayの最
初のエントリにある、受信ビット列中の剰余ビット列1
1bとparityRegとに対してと排他的論理和演
算が実行される。今の例では前者は807に示す値を有
するので、この演算の結果、parityRegは80
8に示すデータを有する。こうして誤り発生検査処理1
00は終了する。今の例では、誤り発生検査処理100
を実行した後のparityRegは0ではないことか
ら、受信ビット列11には誤りが生じたことがわかる。
【0050】(2b)誤りビット列検出処理200 命令714は、変数parityReg2内の剰余多項
式K(X)の係数データを8ビット左シフトする命令で
ある。この命令713を実行する前のこの変数は、図1
2の808に示すとおりである。従って、この命令71
4を実行した後のこの変数の値は図13の901に示す
通りである。図12に示した変数parityRegと
異なり、変数parityReg2のMSB側が次数の
大きな項の係数を表すと考えると、命令714を実行し
た後のこの変数の値は、先にステップ0で述べた式11
の変形剰余多項式K’(x)の係数データを表すことが
わかる。このように、一般に、剰余多項式K(X)の係
数データから変形剰余多項式k’(x)の係数データを
得るには、変数geneReg2を8ビット左シフト
し、変数geneReg2の各ビットとそれに対応する
係数との関係を、変数parityRegの各ビットと
それに対応する係数との関係を反転したものに一致させ
るとよい。
式K(X)の係数データを8ビット左シフトする命令で
ある。この命令713を実行する前のこの変数は、図1
2の808に示すとおりである。従って、この命令71
4を実行した後のこの変数の値は図13の901に示す
通りである。図12に示した変数parityRegと
異なり、変数parityReg2のMSB側が次数の
大きな項の係数を表すと考えると、命令714を実行し
た後のこの変数の値は、先にステップ0で述べた式11
の変形剰余多項式K’(x)の係数データを表すことが
わかる。このように、一般に、剰余多項式K(X)の係
数データから変形剰余多項式k’(x)の係数データを
得るには、変数geneReg2を8ビット左シフト
し、変数geneReg2の各ビットとそれに対応する
係数との関係を、変数parityRegの各ビットと
それに対応する係数との関係を反転したものに一致させ
るとよい。
【0051】命令713は、先にステップ0で述べた変
形生成多項式G’(X)の係数データを変数geneR
eg2にセットする命令である。この命令713を実行
した後のgeneReg2の値は、図13の900によ
り示す通り、式9に示す変形生成多項式G’(X)の係
数データに一致している。但し、図13に示すように、
変数geneReg2は、図12に示した変数gene
Regと異なり、MSB側に次数の大きな項の係数を保
持すると考える。これは、変形生成多項式G’(X)の
係数データの各ビットと対応する項との関係を、上に述
べた変形剰余多項式K’(X)の各ビットと対応する項
との関係に一致させるためである。命令713,714
が先に述べたステップ0を実行していることになる。命
令715は、ループ繰り返し回数を表す変数count
erを初期値0に設定する。
形生成多項式G’(X)の係数データを変数geneR
eg2にセットする命令である。この命令713を実行
した後のgeneReg2の値は、図13の900によ
り示す通り、式9に示す変形生成多項式G’(X)の係
数データに一致している。但し、図13に示すように、
変数geneReg2は、図12に示した変数gene
Regと異なり、MSB側に次数の大きな項の係数を保
持すると考える。これは、変形生成多項式G’(X)の
係数データの各ビットと対応する項との関係を、上に述
べた変形剰余多項式K’(X)の各ビットと対応する項
との関係に一致させるためである。命令713,714
が先に述べたステップ0を実行していることになる。命
令715は、ループ繰り返し回数を表す変数count
erを初期値0に設定する。
【0052】命令716から718は先に述べたステッ
プ1を実行する。命令716はループ命令であり、命令
717から命令723を最大35回繰り返し実行する。
命令717と命令718は先に説明したステップ1の処
理を実行する。命令717は、変数parityReg
2の上位側第4ビットから第7ビットまでがすべて0で
あるか否かを判別するための命令である。すなわち、変
数parityReg2とデータH’1f00との論理
積を採り、その結果データを変数mask−dataに
格納する。このデータH’1f00は、変数parit
yReg2の上位3ビットと下位8ビットのデータを0
でマスクするためのデータである。この結果、変数ma
sk−dataには、変数parityReg2の上位
側の第4ビットから第7ビットまでがそのまま格納さ
れ、変数mask−dataの他のビットはすべて0で
ある。
プ1を実行する。命令716はループ命令であり、命令
717から命令723を最大35回繰り返し実行する。
命令717と命令718は先に説明したステップ1の処
理を実行する。命令717は、変数parityReg
2の上位側第4ビットから第7ビットまでがすべて0で
あるか否かを判別するための命令である。すなわち、変
数parityReg2とデータH’1f00との論理
積を採り、その結果データを変数mask−dataに
格納する。このデータH’1f00は、変数parit
yReg2の上位3ビットと下位8ビットのデータを0
でマスクするためのデータである。この結果、変数ma
sk−dataには、変数parityReg2の上位
側の第4ビットから第7ビットまでがそのまま格納さ
れ、変数mask−dataの他のビットはすべて0で
ある。
【0053】命令719から723は先に述べたステッ
プ2を実行する。変数mask−dataの値が0でな
い場合は、命令719から723が実行される。命令7
19は、変数parityReg2内のMSBをフラグ
flagとして出力するための命令である。具体的に
は、この変数を15ビット右にシフトし、その変数のM
SBをこの変数の最下位ビットの位置に移動する。その
MSBと値1のデータとの論理積を算出し、flagと
して出力する。命令720はこの変数を1ビット左シフ
トする。このことは、変数parityReg2の各ビ
ットを係数とする多項式にXを掛けることと等価であ
る。次に、命令721〜722により、変数parit
yReg2で表される変形剰余多項式を生成多項式G’
(X)によって割った後の剰余データを算出する。上記
フラグflagが1のときには、すなわち、変数par
ityReg2のMSBが1のとき、変数parity
Reg2とgeneRegとに対して排他的論理和を実
行し、その結果を前者の変数に格納する。フラグfla
gが0のときには、この除算は行われない。その後、命
令723はループの実行回数countをカウントアッ
プする。以上のステップ1、2のための処理が繰り返さ
れる。
プ2を実行する。変数mask−dataの値が0でな
い場合は、命令719から723が実行される。命令7
19は、変数parityReg2内のMSBをフラグ
flagとして出力するための命令である。具体的に
は、この変数を15ビット右にシフトし、その変数のM
SBをこの変数の最下位ビットの位置に移動する。その
MSBと値1のデータとの論理積を算出し、flagと
して出力する。命令720はこの変数を1ビット左シフ
トする。このことは、変数parityReg2の各ビ
ットを係数とする多項式にXを掛けることと等価であ
る。次に、命令721〜722により、変数parit
yReg2で表される変形剰余多項式を生成多項式G’
(X)によって割った後の剰余データを算出する。上記
フラグflagが1のときには、すなわち、変数par
ityReg2のMSBが1のとき、変数parity
Reg2とgeneRegとに対して排他的論理和を実
行し、その結果を前者の変数に格納する。フラグfla
gが0のときには、この除算は行われない。その後、命
令723はループの実行回数countをカウントアッ
プする。以上のステップ1、2のための処理が繰り返さ
れる。
【0054】以上の処理において変数parityRe
g2の値はたとえば以下のように変化する。この変数p
arityReg2は、命令714の実行の結果、図1
3の901に示すデータを有する。この変数の最上位ビ
ット(MSB)が0であることから、命令719が実行
されると、フラグflagは0となる。命令720によ
りこの辺数は1ビット左シフトされ、parityRe
g2は902に示すデータを有する。しかし、上記fl
agが0であるから、命令722による、生成多項式
G’(X)による除算は実行されず、この変数の値は変
わらない。その後、上記ループが繰り返されると、変数
parityReg2のデータ902の最左端ビットが
1であることから、生成多項式G’(X)による除算
(命令722)は実行され、parityReg2は9
03に示すデータを有する。
g2の値はたとえば以下のように変化する。この変数p
arityReg2は、命令714の実行の結果、図1
3の901に示すデータを有する。この変数の最上位ビ
ット(MSB)が0であることから、命令719が実行
されると、フラグflagは0となる。命令720によ
りこの辺数は1ビット左シフトされ、parityRe
g2は902に示すデータを有する。しかし、上記fl
agが0であるから、命令722による、生成多項式
G’(X)による除算は実行されず、この変数の値は変
わらない。その後、上記ループが繰り返されると、変数
parityReg2のデータ902の最左端ビットが
1であることから、生成多項式G’(X)による除算
(命令722)は実行され、parityReg2は9
03に示すデータを有する。
【0055】さらに、ループが繰り返されると、903
により示されるデータの最左端ビットが1であることか
ら、生成多項式G’(X)による除算は実行され、pa
rityReg2はデータ904を有する。以降、デー
タ905から908生成されている間は生成多項式G’
(X)による除算は実行されず、その結果parity
Reg2はデータ909を保持することとなる。する
と、X↑4から定数項に至る5つの項の係数がすべて0
であるので、命令718が誤りビット列検出処理200
を終了する。こうして、データ909が変数parit
yReg2の最終データとなる。なお、変数mask−
dataの値が0である場合は、変形剰余多項式の項X
↑4およびそれ以下の項の係数がすべて0であるので、
命令719〜723を実行することなく、誤りビット列
検出処理200が終了する。以上の処理により、変数c
ounterの値は8となる。この値は誤りビット列が
発生した位置を示す。
により示されるデータの最左端ビットが1であることか
ら、生成多項式G’(X)による除算は実行され、pa
rityReg2はデータ904を有する。以降、デー
タ905から908生成されている間は生成多項式G’
(X)による除算は実行されず、その結果parity
Reg2はデータ909を保持することとなる。する
と、X↑4から定数項に至る5つの項の係数がすべて0
であるので、命令718が誤りビット列検出処理200
を終了する。こうして、データ909が変数parit
yReg2の最終データとなる。なお、変数mask−
dataの値が0である場合は、変形剰余多項式の項X
↑4およびそれ以下の項の係数がすべて0であるので、
命令719〜723を実行することなく、誤りビット列
検出処理200が終了する。以上の処理により、変数c
ounterの値は8となる。この値は誤りビット列が
発生した位置を示す。
【0056】(2c)誤り訂正処理300 命令724は、この変数parityReg2の最上位
ビット(MSB)がその最下位ビット(LSB)に位置
するように、この変数を15ビット右シフトして変数e
rror_dataを生成する。命令725はこの生成
された変数error_dataでもって、メモリ上の
配列Infomation_array内の誤りが発生
したビットを保持するエントリを書き換える。具体的に
は、35−変数counterの値のエントリを書き換
える。書き換えは元の値とこのeroor_dataと
に排他的論理和演算を実行し、その結果により元のデー
タを書き換える。命令726から729も同様に、34
−変数counterの値のエントリおよび33−変数
counterの値のエントリを順次書き換える。
ビット(MSB)がその最下位ビット(LSB)に位置
するように、この変数を15ビット右シフトして変数e
rror_dataを生成する。命令725はこの生成
された変数error_dataでもって、メモリ上の
配列Infomation_array内の誤りが発生
したビットを保持するエントリを書き換える。具体的に
は、35−変数counterの値のエントリを書き換
える。書き換えは元の値とこのeroor_dataと
に排他的論理和演算を実行し、その結果により元のデー
タを書き換える。命令726から729も同様に、34
−変数counterの値のエントリおよび33−変数
counterの値のエントリを順次書き換える。
【0057】(3)従来の技術とその問題点 本発明者は、本出願人が開発した汎用プロセッサである
SH7600上で図8から図10に示された符号化処理
を実行するプログラムを検討した。図14、15は、そ
れぞれ誤り発生検査処理100および誤りビット列検出
処理200を実行するためのプログラムである。なお、
図14、15に記述されている命令の詳細については、
たとえば、”SH7600シリーズプログラミングマニ
ュアル”を参照。
SH7600上で図8から図10に示された符号化処理
を実行するプログラムを検討した。図14、15は、そ
れぞれ誤り発生検査処理100および誤りビット列検出
処理200を実行するためのプログラムである。なお、
図14、15に記述されている命令の詳細については、
たとえば、”SH7600シリーズプログラミングマニ
ュアル”を参照。
【0058】図14に記述されているレジスタr0、r
1、r2、r3、r4、r5、r6は32ビットの汎用
レジスタである。
1、r2、r3、r4、r5、r6は32ビットの汎用
レジスタである。
【0059】レジスタr0は受信ビット列中の情報ビッ
ト列を格納するレジスタである。レジスタr1は受信ビ
ットに対する剰余多項式K(X)の係数を格納するレジ
スタであり、図8から図10のCプログラムのpari
tyRegに対応する。レジスタr2は生成多項式の係
数を格納するレジスタであり、図8から図10のCプロ
グラムのgeneRegに対応する。レジスタr1、r
2に保持されたデータの各ビットに対応するXの項は、
図12のデータ800、801と同じである。レジスタ
r3はループカウンタであり、図8から図10のCプロ
グラムのiに対応する。レジスタr6は情報ビットが格
納されているメモリのアドレスを格納するレジスタあ
り、レジスタr4は剰余ビットが格納されているメモリ
のアドレスを格納するレジスタである。命令1000は
ループカウンタ用のレジスタr3にループ回数27をセ
ットする命令であり、命令708に対応する。命令10
01は命令704に対応し、命令1002は命令705
に対応し、命令1003は命令706に対応し、命令1
004は命令707に対応する。命令1005、100
6と1007は命令709に対応し、命令1008は命
令710に対応し、命令1009、1010および10
11は命令711に対応する。命令1012および10
13は命令708に対応し、命令1014および101
5は命令712に対応する。
ト列を格納するレジスタである。レジスタr1は受信ビ
ットに対する剰余多項式K(X)の係数を格納するレジ
スタであり、図8から図10のCプログラムのpari
tyRegに対応する。レジスタr2は生成多項式の係
数を格納するレジスタであり、図8から図10のCプロ
グラムのgeneRegに対応する。レジスタr1、r
2に保持されたデータの各ビットに対応するXの項は、
図12のデータ800、801と同じである。レジスタ
r3はループカウンタであり、図8から図10のCプロ
グラムのiに対応する。レジスタr6は情報ビットが格
納されているメモリのアドレスを格納するレジスタあ
り、レジスタr4は剰余ビットが格納されているメモリ
のアドレスを格納するレジスタである。命令1000は
ループカウンタ用のレジスタr3にループ回数27をセ
ットする命令であり、命令708に対応する。命令10
01は命令704に対応し、命令1002は命令705
に対応し、命令1003は命令706に対応し、命令1
004は命令707に対応する。命令1005、100
6と1007は命令709に対応し、命令1008は命
令710に対応し、命令1009、1010および10
11は命令711に対応する。命令1012および10
13は命令708に対応し、命令1014および101
5は命令712に対応する。
【0060】同様に、図15において、レジスタr0、
r1、r2、r3、r6は32ビットの汎用レジスタで
あり、レジスタr0は図8から図10の変数mask−
dataに対応する。レジスタr1は剰余多項式の係数
を格納するレジスタであり、図8から図10のCプログ
ラムのparityReg2に対応する。レジスタr2
はループカウンタであり、図8から図10のCプログラ
ムのiに対応する。レジスタr3は生成多項式の係数を
格納するレジスタであり、図8から図10のCプログラ
ムのgeneReg2に対応する。レジスタr1、r3
は、図13と同様にそれぞれの多項式の係数を格納す
る。命令1100は命令714に対応し、命令110
1,1112および1113は命令716に対応し、命
令1102は命令713に対応し、命令1103は命令
717に対応し、命令1104は命令715に対応す
る。命令1105、1106および1107は命令71
7に対応し、命令1108は命令718に対応し、命令
1109は命令720に対応し、命令1110は命令7
21に対応し、命令1111は命令722に対応する。
命令1114は命令723に対応する。
r1、r2、r3、r6は32ビットの汎用レジスタで
あり、レジスタr0は図8から図10の変数mask−
dataに対応する。レジスタr1は剰余多項式の係数
を格納するレジスタであり、図8から図10のCプログ
ラムのparityReg2に対応する。レジスタr2
はループカウンタであり、図8から図10のCプログラ
ムのiに対応する。レジスタr3は生成多項式の係数を
格納するレジスタであり、図8から図10のCプログラ
ムのgeneReg2に対応する。レジスタr1、r3
は、図13と同様にそれぞれの多項式の係数を格納す
る。命令1100は命令714に対応し、命令110
1,1112および1113は命令716に対応し、命
令1102は命令713に対応し、命令1103は命令
717に対応し、命令1104は命令715に対応す
る。命令1105、1106および1107は命令71
7に対応し、命令1108は命令718に対応し、命令
1109は命令720に対応し、命令1110は命令7
21に対応し、命令1111は命令722に対応する。
命令1114は命令723に対応する。
【0061】”SH7600シリーズ プログラミング
マニュアル”に記載されているように、命令1010お
よび1014のような条件分岐命令の実行処理量は、分
岐する場合は3マシーンサイクルかかり、分岐しない場
合は1マシーンサイクルかかる。図14のプログラムに
記載されている分岐命令以外の命令の実行処理量は1マ
シーンサイクルである。図14に示すように、誤り発生
検査処理100のプログラムを初期化処理101、剰余
算出処理102、繰り返し処理103および剰余判定処
理104に分割すると、初期化処理101に5マシーン
サイクルを要し、剰余算出処理102には1情報ビット
データあたり8マシーンサイクル(分岐しない場合は7
マシーンサイクル)を要し、繰り返し処理103には1
回あたり4マシーンサイクルを要し、剰余判定処理10
4に2マシーンサイクルを要する。従って、(n、k)
巡回符号であるファイア符号の復号化における誤り発生
検査処理100の処理量Mは、情報ビット数がkである
から、M=(8+4)k+7 マシーンサイクルと見積
もることができる。
マニュアル”に記載されているように、命令1010お
よび1014のような条件分岐命令の実行処理量は、分
岐する場合は3マシーンサイクルかかり、分岐しない場
合は1マシーンサイクルかかる。図14のプログラムに
記載されている分岐命令以外の命令の実行処理量は1マ
シーンサイクルである。図14に示すように、誤り発生
検査処理100のプログラムを初期化処理101、剰余
算出処理102、繰り返し処理103および剰余判定処
理104に分割すると、初期化処理101に5マシーン
サイクルを要し、剰余算出処理102には1情報ビット
データあたり8マシーンサイクル(分岐しない場合は7
マシーンサイクル)を要し、繰り返し処理103には1
回あたり4マシーンサイクルを要し、剰余判定処理10
4に2マシーンサイクルを要する。従って、(n、k)
巡回符号であるファイア符号の復号化における誤り発生
検査処理100の処理量Mは、情報ビット数がkである
から、M=(8+4)k+7 マシーンサイクルと見積
もることができる。
【0062】図15に示すように、誤りビット列検出処
理200を初期化処理201、剰余算出処理202、繰
り返し処理203に分割すると、初期化処理201に5
マシーンサイクルを要し、剰余算出処理202に1情報
ビットデータあたり最大8マシーンサイクルを要し、繰
り返し処理203に1回あたり4マシーンサイクルを要
する。従って、(n、k)巡回符号であるファイア符号
の復号化における誤りビット列検出処理200の処理量
Lは、情報ビット数がkであるから、L=(8+4)k
+5 マシーンサイクルと見積もることができる。
理200を初期化処理201、剰余算出処理202、繰
り返し処理203に分割すると、初期化処理201に5
マシーンサイクルを要し、剰余算出処理202に1情報
ビットデータあたり最大8マシーンサイクルを要し、繰
り返し処理203に1回あたり4マシーンサイクルを要
する。従って、(n、k)巡回符号であるファイア符号
の復号化における誤りビット列検出処理200の処理量
Lは、情報ビット数がkであるから、L=(8+4)k
+5 マシーンサイクルと見積もることができる。
【0063】従って、ファイア符号復号化処理の処理量
Nは、簡単のための誤り訂正処理300の処理時間その
他を概略的に考慮すると、N=(24k+12)/0.
9程度と見積もることができる。たとえば、先に述べた
(35,27)巡回符号あるいはさらに長い剰余データ
を用いる(44、4)巡回符号の場合には、それぞれN
=733あるいは120マシンサイクル必要である。
Nは、簡単のための誤り訂正処理300の処理時間その
他を概略的に考慮すると、N=(24k+12)/0.
9程度と見積もることができる。たとえば、先に述べた
(35,27)巡回符号あるいはさらに長い剰余データ
を用いる(44、4)巡回符号の場合には、それぞれN
=733あるいは120マシンサイクル必要である。
【0064】以上から明らかなように、従来のプロセッ
サを使用した場合には、誤り発生検査処理100および
誤りビット列検出処理200の処理量がいずれも大き
く、これらの処理が復号化処理全体の約90%を占め
る。とくに、誤り発生検査処理100内の剰余算出処理
102および誤りビット列検出処理200内の剰余算出
処理202とが要する1情報ビットあたりの処理量が大
きい。
サを使用した場合には、誤り発生検査処理100および
誤りビット列検出処理200の処理量がいずれも大き
く、これらの処理が復号化処理全体の約90%を占め
る。とくに、誤り発生検査処理100内の剰余算出処理
102および誤りビット列検出処理200内の剰余算出
処理202とが要する1情報ビットあたりの処理量が大
きい。
【0065】さらに、生成多項式の次数がレジスタ長を
越える場合には、処理量がさらに増大する。例えば、S
H7600では汎用レジスタ長は32ビットであるが、
生成多項式の次数が32より大きい場合、例えば40ビ
ットとすると、生成多項式および剰余多項式の次数を格
納するためのレジスタはそれぞれ2つずつ必要になり、
誤り発生検査処理および誤りビット列検出処理の処理量
は図14、15に示したプログラムが要求する8サイク
ルの約2倍程度かかる。
越える場合には、処理量がさらに増大する。例えば、S
H7600では汎用レジスタ長は32ビットであるが、
生成多項式の次数が32より大きい場合、例えば40ビ
ットとすると、生成多項式および剰余多項式の次数を格
納するためのレジスタはそれぞれ2つずつ必要になり、
誤り発生検査処理および誤りビット列検出処理の処理量
は図14、15に示したプログラムが要求する8サイク
ルの約2倍程度かかる。
【0066】本発明の目的は、誤りビット列検出処理を
より高速に実行するのに適したプロセッサを提供するこ
とである。
より高速に実行するのに適したプロセッサを提供するこ
とである。
【0067】本発明の他の目的は、生成多項式の次数が
レジスタ長を越える場合にも、誤りビット列検出処理を
高速に実行するのに適したプロセッサを提供することで
ある。
レジスタ長を越える場合にも、誤りビット列検出処理を
高速に実行するのに適したプロセッサを提供することで
ある。
【0068】以下、本発明に係わるプロセッサを図面に
示した実施の形態を参照してさらに詳しく説明する。図
1において、プロセッサ100は、本実施の形態に特徴
的なファイア符号符号演算回路112およびその回路1
12に関連して本実施の形態で新たに使用される複数の
命令の実行を制御可能に構成された制御回路105およ
びその他の回路からなり、一つの半導体チップ上に大規
模集積回路(LSI)により実現される。
示した実施の形態を参照してさらに詳しく説明する。図
1において、プロセッサ100は、本実施の形態に特徴
的なファイア符号符号演算回路112およびその回路1
12に関連して本実施の形態で新たに使用される複数の
命令の実行を制御可能に構成された制御回路105およ
びその他の回路からなり、一つの半導体チップ上に大規
模集積回路(LSI)により実現される。
【0069】すなわち、プロセッサ100は、処理を行
うための命令や演算を行うために必要なデータが格納し
てあるメモリ101と、命令をデコードするための命令
デコーダ回路102と、外部のクロック103から供給
される周波数を逓倍するためのタイミング生成回路10
4と、デコードした命令コードとタイミング生成回路か
ら出力されるクロック信号からプロセッサ100を動作
させるための制御信号を出力する制御回路105と、算
術演算や論理演算を行う汎用演算器106と、汎用演算
器106で実行された処理の状態を格納するステータス
レジスタ119と、メモリ101から命令をフェッチす
るアドレスを示すプログラムカウンタ107と、メモリ
101から命令をフェッチする命令フェッチ回路108
と、メモリ101からデータを読み出すために必要なア
ドレス情報を格納するアドレス・レジスタ109と、メ
モリ101からデータを読み出すメモリアクセス回路1
10と、メモリ101から読み出したデータを格納した
り汎用演算器の演算結果を格納するための複数の汎用レ
ジスタ111と、ファイア符号復号演算回路112と、
バッファ113、114、115およびセレクタ11
6、117からなる。
うための命令や演算を行うために必要なデータが格納し
てあるメモリ101と、命令をデコードするための命令
デコーダ回路102と、外部のクロック103から供給
される周波数を逓倍するためのタイミング生成回路10
4と、デコードした命令コードとタイミング生成回路か
ら出力されるクロック信号からプロセッサ100を動作
させるための制御信号を出力する制御回路105と、算
術演算や論理演算を行う汎用演算器106と、汎用演算
器106で実行された処理の状態を格納するステータス
レジスタ119と、メモリ101から命令をフェッチす
るアドレスを示すプログラムカウンタ107と、メモリ
101から命令をフェッチする命令フェッチ回路108
と、メモリ101からデータを読み出すために必要なア
ドレス情報を格納するアドレス・レジスタ109と、メ
モリ101からデータを読み出すメモリアクセス回路1
10と、メモリ101から読み出したデータを格納した
り汎用演算器の演算結果を格納するための複数の汎用レ
ジスタ111と、ファイア符号復号演算回路112と、
バッファ113、114、115およびセレクタ11
6、117からなる。
【0070】また、汎用演算器106、汎用レジスタ1
11および制御回路105等は、バス118で接続され
ている。なお、図1のプロセッサ100は、ファイア符
号復号演算回路112以外はSH7600のアーキテク
チャをベースにしており、命令長はすべて16ビット固
定長であり、汎用レジスタはすべて32ビットである。
11および制御回路105等は、バス118で接続され
ている。なお、図1のプロセッサ100は、ファイア符
号復号演算回路112以外はSH7600のアーキテク
チャをベースにしており、命令長はすべて16ビット固
定長であり、汎用レジスタはすべて32ビットである。
【0071】ファイア符号復号演算回路112は、排他
的論理和演算を行うEOR演算回路120と、3つのシ
フトレジスタ122、123、124と、レジスタ12
5と、これらのシフトレジスタ122から125を選択
するためのセレクタ121と、シフトレジスタ123、
124の最右端ビットに接続しているEORゲート12
6と、およびシフトレジスタ124に接続しているセレ
クタ127、およびバッファ128、129および、シ
フトレジスタ124とレジスタ125の各ビットを入力
とするANDゲート130と、ANDゲート130の出
力を入力とするORゲート131と、シフトレジスタ1
24の最左端ビットのデータとORゲート131の出力
を入力として論理積演算を実行する第2ANDゲート1
32と、EORゲート126と第2ANDゲート132
の出力を格納するコントロールレジスタ133からな
る。
的論理和演算を行うEOR演算回路120と、3つのシ
フトレジスタ122、123、124と、レジスタ12
5と、これらのシフトレジスタ122から125を選択
するためのセレクタ121と、シフトレジスタ123、
124の最右端ビットに接続しているEORゲート12
6と、およびシフトレジスタ124に接続しているセレ
クタ127、およびバッファ128、129および、シ
フトレジスタ124とレジスタ125の各ビットを入力
とするANDゲート130と、ANDゲート130の出
力を入力とするORゲート131と、シフトレジスタ1
24の最左端ビットのデータとORゲート131の出力
を入力として論理積演算を実行する第2ANDゲート1
32と、EORゲート126と第2ANDゲート132
の出力を格納するコントロールレジスタ133からな
る。
【0072】シフトレジスタ123は情報ビットを格納
するレジスタであり、シフトレジスタ124は剰余多項
式の係数を格納するレジスタであり、シフトレジスタ1
22は生成多項式の係数を格納するレジスタであり、レ
ジスタ125はマスクデータを格納するレジスタであ
る。シフトレジスタ122〜124およびレジスタ12
5のレジスタ長は、汎用レジスタ長よりも生成多項式の
次数が大きい場合の剰余算出処理を高速に実行するため
に、汎用レジスタの長さ2倍である64ビットとする。
これらのレジスタとメモリ101との間のデータ転送は
32ビット単位で実行する。従って、以下、シフトレジ
スタ122の上位32ビットをシフトレジスタ122h
とし、シフトレジスタ122の下位32ビットをシフト
レジスタ122lと記述する。シフトレジスタ123、
124、およびレジスタ125についても同様である。
この回路112は、誤り発生検出処理で必要となる剰余
算出処理の高速化のために特願平09−126702に
記載した回路と類似の回路を使用するとともに、誤りビ
ット列検出処理に新たな回路を使用する。
するレジスタであり、シフトレジスタ124は剰余多項
式の係数を格納するレジスタであり、シフトレジスタ1
22は生成多項式の係数を格納するレジスタであり、レ
ジスタ125はマスクデータを格納するレジスタであ
る。シフトレジスタ122〜124およびレジスタ12
5のレジスタ長は、汎用レジスタ長よりも生成多項式の
次数が大きい場合の剰余算出処理を高速に実行するため
に、汎用レジスタの長さ2倍である64ビットとする。
これらのレジスタとメモリ101との間のデータ転送は
32ビット単位で実行する。従って、以下、シフトレジ
スタ122の上位32ビットをシフトレジスタ122h
とし、シフトレジスタ122の下位32ビットをシフト
レジスタ122lと記述する。シフトレジスタ123、
124、およびレジスタ125についても同様である。
この回路112は、誤り発生検出処理で必要となる剰余
算出処理の高速化のために特願平09−126702に
記載した回路と類似の回路を使用するとともに、誤りビ
ット列検出処理に新たな回路を使用する。
【0073】以下では、次の生成多項式により生成され
る2元(44,4)巡回符号であるファイア符号の復号
化処理を具体例として、図1に示すプロセッサの動作を
詳細に説明する。
る2元(44,4)巡回符号であるファイア符号の復号
化処理を具体例として、図1に示すプロセッサの動作を
詳細に説明する。
【0074】
【数12】 G(X) =X40↑ +X26↑ +X23↑ +X17↑ +X3↑+1 (12) なお、このファイア符号の誤り訂正能力l=11であ
り、図2に、このファイア符号により得られた符号ビッ
ト列10、このビット列の転送中に発生した誤りビット
列12、この符号ビット列を受信したときに得られる受
信ビット列11の例を示す。以下の説明においては、図
2に示すビット列10から12を適宜参照する。なお、
生成多項式の次数40は、汎用レジスタ111の長さよ
り長いため、シフトレジスタ122〜124およびレジ
スタ125の長さは、この次数より長く定められてい
る。
り、図2に、このファイア符号により得られた符号ビッ
ト列10、このビット列の転送中に発生した誤りビット
列12、この符号ビット列を受信したときに得られる受
信ビット列11の例を示す。以下の説明においては、図
2に示すビット列10から12を適宜参照する。なお、
生成多項式の次数40は、汎用レジスタ111の長さよ
り長いため、シフトレジスタ122〜124およびレジ
スタ125の長さは、この次数より長く定められてい
る。
【0075】図3に、図8から図10に示したプログラ
ムにより実行されるファイア符号の復号化処理を、図1
のプロセッサを使用して式12の生成多項式に従って符
号化されたファイア符号の復号化処理を行うように作成
されたプログラムの1例を示す。ファイア符号復号化処
理のうち、命令301から命令318までが誤り発生検
査処理100であり、命令319から命令331までが
誤りビット列検出処理200である。r2、r3、r
4、r5、r6はそれぞれ汎用レジスタを指す。レジス
タr6には、情報ビット列が格納してあるメモリ101
のアドレスが格納され、レジスタr3、r2はループカ
ウンタに用いる汎用レジスタであり、レジスタr4には
誤りビット列の位置の情報が格納され、レジスタr5に
は剰余ビット列が格納されているメモリのアドレスが格
納される。FiregeneRegはシフトレジスタ1
22を指し、FireparityRegはシフトレジ
スタ124を指し、FireinfoRegはシフトレ
ジスタ123を指し、FiremaskRegはシフト
レジスタ125を指す。受信ビット列11中の情報ビッ
ト列11aは、メモリ101に設けられた配列Info
rmation_arrayに、図15に例示したのと
同様に、ビット分割されて格納されている。但し、この
配列の各エントリは本実施の形態では32ビットとす
る。受信ビット列11中の剰余ビット列11bも、メモ
リ101に設けられた配列Parity_arrayの
先頭のエントリに、図12の807に例示したように整
列されて保持されている。但し、この配列の先頭のエン
トリは64ビットの大きさとする。
ムにより実行されるファイア符号の復号化処理を、図1
のプロセッサを使用して式12の生成多項式に従って符
号化されたファイア符号の復号化処理を行うように作成
されたプログラムの1例を示す。ファイア符号復号化処
理のうち、命令301から命令318までが誤り発生検
査処理100であり、命令319から命令331までが
誤りビット列検出処理200である。r2、r3、r
4、r5、r6はそれぞれ汎用レジスタを指す。レジス
タr6には、情報ビット列が格納してあるメモリ101
のアドレスが格納され、レジスタr3、r2はループカ
ウンタに用いる汎用レジスタであり、レジスタr4には
誤りビット列の位置の情報が格納され、レジスタr5に
は剰余ビット列が格納されているメモリのアドレスが格
納される。FiregeneRegはシフトレジスタ1
22を指し、FireparityRegはシフトレジ
スタ124を指し、FireinfoRegはシフトレ
ジスタ123を指し、FiremaskRegはシフト
レジスタ125を指す。受信ビット列11中の情報ビッ
ト列11aは、メモリ101に設けられた配列Info
rmation_arrayに、図15に例示したのと
同様に、ビット分割されて格納されている。但し、この
配列の各エントリは本実施の形態では32ビットとす
る。受信ビット列11中の剰余ビット列11bも、メモ
リ101に設けられた配列Parity_arrayの
先頭のエントリに、図12の807に例示したように整
列されて保持されている。但し、この配列の先頭のエン
トリは64ビットの大きさとする。
【0076】誤り発生検査処理100は、初期化処理1
01、剰余算出処理102、繰り返し処理103、剰余
判定処理104からなる。誤り発生検査処理100の初
期化処理101において、命令301は、シフトレジス
タ124に格納されている剰余ビット列をクリアする命
令であり、命令302はシフトレジスタ123に格納さ
れている情報ビット列をクリアする命令である。命令3
03は32ビットのシフトレジスタ122lに、生成多
項式G(X)の係数データの下位側の32ビットを表す
データH’00412000を転送する命令であり、命
令304は、この生成多項式データの上位側の32ビッ
トを表すデータH’00000090をシフトレジスタ
122hに転送する命令である。ここで、H’はこれら
のデータが16進表示のデータであることを示す。これ
らの命令は図8から図10に示したプログラムの命令7
04に対応する。
01、剰余算出処理102、繰り返し処理103、剰余
判定処理104からなる。誤り発生検査処理100の初
期化処理101において、命令301は、シフトレジス
タ124に格納されている剰余ビット列をクリアする命
令であり、命令302はシフトレジスタ123に格納さ
れている情報ビット列をクリアする命令である。命令3
03は32ビットのシフトレジスタ122lに、生成多
項式G(X)の係数データの下位側の32ビットを表す
データH’00412000を転送する命令であり、命
令304は、この生成多項式データの上位側の32ビッ
トを表すデータH’00000090をシフトレジスタ
122hに転送する命令である。ここで、H’はこれら
のデータが16進表示のデータであることを示す。これ
らの命令は図8から図10に示したプログラムの命令7
04に対応する。
【0077】命令301から304は次のように処理さ
れる。図1において、まず、プログラム・カウンタ10
7がアドレスをバスcに出力する。命令フェッチ回路1
08は、バスcに出力されたアドレスに格納されている
命令301をメモリからバスfを介してフェッチし、命
令デコーダ回路102は命令301をデコードする。制
御回路105は、デコードされた命令301に関して、
タイミング生成回路104から出力されるクロック信号
に同期しながらシフトレジスタ124およびセレクタ1
21等に対して動作内容を指示する制御信号を生成し、
出力する。制御回路105は、シフトレジスタ124に
レジスタのデータを0にクリアするようなクリア信号を
出力する。クリア信号を受信したシフトレジスタ124
は各ビットのデータを0にクリアし、命令301の実行
が終了する。次に、命令302が命令デコード回路10
2にてデコードされると、制御回路105は、シフトレ
ジスタ123にレジスタのデータを0にクリアするよう
なクリア信号を出力する。クリア信号を受信したシフト
レジスタ123は各ビットのデータを0にクリアし、命
令302の実行が終了する。
れる。図1において、まず、プログラム・カウンタ10
7がアドレスをバスcに出力する。命令フェッチ回路1
08は、バスcに出力されたアドレスに格納されている
命令301をメモリからバスfを介してフェッチし、命
令デコーダ回路102は命令301をデコードする。制
御回路105は、デコードされた命令301に関して、
タイミング生成回路104から出力されるクロック信号
に同期しながらシフトレジスタ124およびセレクタ1
21等に対して動作内容を指示する制御信号を生成し、
出力する。制御回路105は、シフトレジスタ124に
レジスタのデータを0にクリアするようなクリア信号を
出力する。クリア信号を受信したシフトレジスタ124
は各ビットのデータを0にクリアし、命令301の実行
が終了する。次に、命令302が命令デコード回路10
2にてデコードされると、制御回路105は、シフトレ
ジスタ123にレジスタのデータを0にクリアするよう
なクリア信号を出力する。クリア信号を受信したシフト
レジスタ123は各ビットのデータを0にクリアし、命
令302の実行が終了する。
【0078】命令303が命令デコード回路102にて
デコードされると、汎用演算器106はデータH’00
412000を格納してあるメモリのアドレスを計算
し、演算結果のアドレスはアドレスレジスタ109に格
納される。次に、アドレス・レジスタ109はバスcに
アドレスを出力し、メモリアクセス回路110はアドレ
ス・レジスタ109が指すメモリ101から上記データ
をバッファ129Lに出力する。次に、制御回路105
から制御信号iがセレクタ121に出力され、制御信号
iを受けたセレクタ121はバッファ129lとシフト
レジスタ122lを接続し、メモリ101から読み出さ
れたデータH’00412000はシフトレジスタ12
2lに格納される。同様にして命令304によりデータ
H’00000090はシフトレジスタ122hに格納
される。但し、この際、バッファ129Hが使用され
る。
デコードされると、汎用演算器106はデータH’00
412000を格納してあるメモリのアドレスを計算
し、演算結果のアドレスはアドレスレジスタ109に格
納される。次に、アドレス・レジスタ109はバスcに
アドレスを出力し、メモリアクセス回路110はアドレ
ス・レジスタ109が指すメモリ101から上記データ
をバッファ129Lに出力する。次に、制御回路105
から制御信号iがセレクタ121に出力され、制御信号
iを受けたセレクタ121はバッファ129lとシフト
レジスタ122lを接続し、メモリ101から読み出さ
れたデータH’00412000はシフトレジスタ12
2lに格納される。同様にして命令304によりデータ
H’00000090はシフトレジスタ122hに格納
される。但し、この際、バッファ129Hが使用され
る。
【0079】図3において、命令305は汎用レジスタ
r3に剰余算出処理102の繰り返し回数4を転送する
命令であり、命令306は情報ビットが格納してある配
列Information_arrayの先頭アドレス
を汎用レジスタr6に転送する命令である。命令307
は、受信ビット列11中の剰余データ11bが格納して
いる、配列Parity_arrayの先頭エントリの
アドレスを汎用レジスタr5に転送する命令である。命
令305,306,307はそれぞれ図8から図10に
示したプログラムの命令708,706,707に対応
し、命令308は図8から図10の命令709の処理の
一部を実行する。なお、命令305、306、307は
前述のプロセッサSH7600の命令であり、この2命
令の詳細な動作は ”SH7600ハードウェアマニュ
アル”を参照。
r3に剰余算出処理102の繰り返し回数4を転送する
命令であり、命令306は情報ビットが格納してある配
列Information_arrayの先頭アドレス
を汎用レジスタr6に転送する命令である。命令307
は、受信ビット列11中の剰余データ11bが格納して
いる、配列Parity_arrayの先頭エントリの
アドレスを汎用レジスタr5に転送する命令である。命
令305,306,307はそれぞれ図8から図10に
示したプログラムの命令708,706,707に対応
し、命令308は図8から図10の命令709の処理の
一部を実行する。なお、命令305、306、307は
前述のプロセッサSH7600の命令であり、この2命
令の詳細な動作は ”SH7600ハードウェアマニュ
アル”を参照。
【0080】剰余算出処理102においては、命令30
8は、汎用レジスタr6に格納してあるアドレスが指す
メモリ位置から、配列Information_arr
ayの一つのエントリをシフトレジスタ123に転送
し、アドレスデータをインクリメントする命令である。
命令309は、ファイア符号復号演算回路112を使用
して剰余ビットを算出する命令である。命令308、3
09は、本実施の形態で新設された命令である。これら
の命令は、それぞれ図8から図10に示したプログラム
の命令709、710、711、712により実行され
る処理を実行する。命令308、309は以下のように
処理される。
8は、汎用レジスタr6に格納してあるアドレスが指す
メモリ位置から、配列Information_arr
ayの一つのエントリをシフトレジスタ123に転送
し、アドレスデータをインクリメントする命令である。
命令309は、ファイア符号復号演算回路112を使用
して剰余ビットを算出する命令である。命令308、3
09は、本実施の形態で新設された命令である。これら
の命令は、それぞれ図8から図10に示したプログラム
の命令709、710、711、712により実行され
る処理を実行する。命令308、309は以下のように
処理される。
【0081】命令308がデコードされると、デコード
された命令からソース・オペランドのレジスタを確定
し、制御回路105はセレクタ117に制御信号gを出
力する。制御信号gを受けたセレクタ117はレジスタ
r6をバスに接続し、レジスタr6に格納されている、
配列Information_arrayのエントリの
アドレスがバス118に出力される。次に、メモリアク
セス回路110は、バス118に出力されたアドレスの
エントリに格納されているデータをメモリ101から読
み出し、バスdを介してこのデータをバッファ129L
に送る。このデータは、図11に例示した1つの情報ビ
ットを含むデータである。さらに制御回路105は制御
信号iをセレクタ121に送る。制御信号iを受けたセ
レクタ121は、バッファ129Lとシフトレジスタ1
23lを接続する。メモリ101から読み出されたデー
タは、バッファ129Lからシフトレジスタ123lに
出力される。
された命令からソース・オペランドのレジスタを確定
し、制御回路105はセレクタ117に制御信号gを出
力する。制御信号gを受けたセレクタ117はレジスタ
r6をバスに接続し、レジスタr6に格納されている、
配列Information_arrayのエントリの
アドレスがバス118に出力される。次に、メモリアク
セス回路110は、バス118に出力されたアドレスの
エントリに格納されているデータをメモリ101から読
み出し、バスdを介してこのデータをバッファ129L
に送る。このデータは、図11に例示した1つの情報ビ
ットを含むデータである。さらに制御回路105は制御
信号iをセレクタ121に送る。制御信号iを受けたセ
レクタ121は、バッファ129Lとシフトレジスタ1
23lを接続する。メモリ101から読み出されたデー
タは、バッファ129Lからシフトレジスタ123lに
出力される。
【0082】次に、命令309がデコードされると、シ
フトレジスタ123、124に保持されていた情報ビッ
トデータおよび剰余データを1ビット右にシフトする。
これにより先に述べた演算2が実行される。EORゲー
ト126は、シフトレジスタ123、124からシフト
アウトしたデータに対して排他的論理和演算を行い、フ
ラグbを生成する。この演算により先に図7を用いて説
明した演算1が実行されたことになる。フラグbは演算
制御レジスタ134に格納される。次に、シフトレジス
タ124に格納されていた剰余データと、シフトレジス
タ122に格納されている生成多項式データがソース・
オぺランドとしてバッファ129B、129Aにそれぞ
れ出力される。
フトレジスタ123、124に保持されていた情報ビッ
トデータおよび剰余データを1ビット右にシフトする。
これにより先に述べた演算2が実行される。EORゲー
ト126は、シフトレジスタ123、124からシフト
アウトしたデータに対して排他的論理和演算を行い、フ
ラグbを生成する。この演算により先に図7を用いて説
明した演算1が実行されたことになる。フラグbは演算
制御レジスタ134に格納される。次に、シフトレジス
タ124に格納されていた剰余データと、シフトレジス
タ122に格納されている生成多項式データがソース・
オぺランドとしてバッファ129B、129Aにそれぞ
れ出力される。
【0083】EOR演算回路120は、演算制御レジス
タ134に格納されているフラグbが1の場合、64ビ
ットの排他的論理和演算をこれらのソース・オぺランド
に対して行い、64ビットの演算結果データをバッファ
129H、129Lに区分して出力する。また、演算制
御レジスタ134に格納されているフラグbが0の場
合、EOR演算回路120は64ビットの排他的論理和
演算を行わずに、シフトレジスタ124に格納されてい
たシフト後の剰余データをそのまま演算結果データとし
てバッファ129H、129Lに出力する。次に、制御
回路105はセレクタ121に制御信号iを送る。制御
信号iを受けたセレクタ121はバッファ129H、1
29Lとシフトレジスタ124h、124lを接続す
る。こうして、バッファ129H、129L内の演算結
果データはシフトレジスタ124に格納される。したが
って、フラグbが1の場合には、剰余データと生成多項
式データに対する排他的論理和演算の結果データでもっ
てシフトレジスタ124内の元の剰余データが更新され
る。フラグbが0の場合には、シフトレジスタ124内
の剰余データが1ビット右シフトされただけになる。こ
うして、先に述べた演算3が実行されたことになる。
タ134に格納されているフラグbが1の場合、64ビ
ットの排他的論理和演算をこれらのソース・オぺランド
に対して行い、64ビットの演算結果データをバッファ
129H、129Lに区分して出力する。また、演算制
御レジスタ134に格納されているフラグbが0の場
合、EOR演算回路120は64ビットの排他的論理和
演算を行わずに、シフトレジスタ124に格納されてい
たシフト後の剰余データをそのまま演算結果データとし
てバッファ129H、129Lに出力する。次に、制御
回路105はセレクタ121に制御信号iを送る。制御
信号iを受けたセレクタ121はバッファ129H、1
29Lとシフトレジスタ124h、124lを接続す
る。こうして、バッファ129H、129L内の演算結
果データはシフトレジスタ124に格納される。したが
って、フラグbが1の場合には、剰余データと生成多項
式データに対する排他的論理和演算の結果データでもっ
てシフトレジスタ124内の元の剰余データが更新され
る。フラグbが0の場合には、シフトレジスタ124内
の剰余データが1ビット右シフトされただけになる。こ
うして、先に述べた演算3が実行されたことになる。
【0084】繰り返し処理310内の命令310は汎用
レジスタr3の内容を1デクリメントした結果を0と比
較し、結果が0のときにステータスレジスタ119内の
特定のビット(Tビット)を1にセットし、結果が0以
外のときにはこのTビットを0にセットするという命令
である。命令310は条件付分岐命令であり、命令デコ
ード回路はステータスレジスタ119内のTビットが0
の時、命令コードに含まれる分岐先アドレスのディスプ
レースメント値を使用して、プログラムカウンタを変更
し、剰余算出処理102の先頭に分岐する命令である。
また、Tビットが1の時は何も行わない。このように、
剰余算出処理102は、情報ビットの転送命令308と
剰余算出命令309の繰り返しとなる。命令310と3
11は、図8から図10のプログラムの命令711によ
る判定を行う命令である。本実施の形態では、情報ビッ
ト列の長さは4ビットであるので、この繰り返しは4回
行われる。この結果、受信ビット列11中の情報データ
11aと生成多項式の係数データとから、その情報デー
タに対する剰余データがシフトレジスタ124に得られ
る。なお、命令310、311の動作の詳細は、例え
ば、”SH7600ハードウェアマニュアル”等を参照
のこと。
レジスタr3の内容を1デクリメントした結果を0と比
較し、結果が0のときにステータスレジスタ119内の
特定のビット(Tビット)を1にセットし、結果が0以
外のときにはこのTビットを0にセットするという命令
である。命令310は条件付分岐命令であり、命令デコ
ード回路はステータスレジスタ119内のTビットが0
の時、命令コードに含まれる分岐先アドレスのディスプ
レースメント値を使用して、プログラムカウンタを変更
し、剰余算出処理102の先頭に分岐する命令である。
また、Tビットが1の時は何も行わない。このように、
剰余算出処理102は、情報ビットの転送命令308と
剰余算出命令309の繰り返しとなる。命令310と3
11は、図8から図10のプログラムの命令711によ
る判定を行う命令である。本実施の形態では、情報ビッ
ト列の長さは4ビットであるので、この繰り返しは4回
行われる。この結果、受信ビット列11中の情報データ
11aと生成多項式の係数データとから、その情報デー
タに対する剰余データがシフトレジスタ124に得られ
る。なお、命令310、311の動作の詳細は、例え
ば、”SH7600ハードウェアマニュアル”等を参照
のこと。
【0085】次に、剰余判定処理104において、命令
312、313は汎用レジスタr5に格納されている、
受信ビット列11中の剰余データ11bのアドレスによ
り、メモリ101から剰余データ11bをシフトレジス
タ122に転送する命令である。シフトレジスタ122
は、これまでは生成多項式データを保持するのに使用さ
れていたが、この命令312により、受信された剰余デ
ータ11bを保持するのに使用される。命令314はシ
フトレジスタ122内の受信された剰余データ11bと
シフトレジスタ124に格納されている、受信された情
報ビット列に対して計算された剰余データに対してEO
R演算回路120にて排他的論理和演算を実行し、演算
結果データをシフトレジスタ124に格納する命令であ
る。この命令314により、受信ビット列11の全体に
対する剰余データがレジスタ214に得られる。このデ
ータは、受信データビット列に対する剰余多項式K
(X)に対する剰余ビット列である。命令312,31
3,314は、図8から図10の命令712を実行する
ことになる。
312、313は汎用レジスタr5に格納されている、
受信ビット列11中の剰余データ11bのアドレスによ
り、メモリ101から剰余データ11bをシフトレジス
タ122に転送する命令である。シフトレジスタ122
は、これまでは生成多項式データを保持するのに使用さ
れていたが、この命令312により、受信された剰余デ
ータ11bを保持するのに使用される。命令314はシ
フトレジスタ122内の受信された剰余データ11bと
シフトレジスタ124に格納されている、受信された情
報ビット列に対して計算された剰余データに対してEO
R演算回路120にて排他的論理和演算を実行し、演算
結果データをシフトレジスタ124に格納する命令であ
る。この命令314により、受信ビット列11の全体に
対する剰余データがレジスタ214に得られる。このデ
ータは、受信データビット列に対する剰余多項式K
(X)に対する剰余ビット列である。命令312,31
3,314は、図8から図10の命令712を実行する
ことになる。
【0086】命令312、313の動作は命令308の
動作と同様であり、以下では命令314の動作のみを詳
細に説明する。命令314がデコードされると、制御回
路105はシフトレジスタ122、124に制御信号を
出力し、シフトレジスタ122、124はデータをそれ
ぞれバスk、jに出力する。EOR演算回路120はこ
れらのデータに対して64ビットの排他的論理和演算を
実行し、演算結果データをバッファ129H、129L
に区分して格納する。制御回路105はセレクタ121
に信号iを出力し、バッファ129H、129Lとシフ
トレジスタ124H、124Lが接続され、演算結果デ
ータがこれらのレジスタに格納される。
動作と同様であり、以下では命令314の動作のみを詳
細に説明する。命令314がデコードされると、制御回
路105はシフトレジスタ122、124に制御信号を
出力し、シフトレジスタ122、124はデータをそれ
ぞれバスk、jに出力する。EOR演算回路120はこ
れらのデータに対して64ビットの排他的論理和演算を
実行し、演算結果データをバッファ129H、129L
に区分して格納する。制御回路105はセレクタ121
に信号iを出力し、バッファ129H、129Lとシフ
トレジスタ124H、124Lが接続され、演算結果デ
ータがこれらのレジスタに格納される。
【0087】命令315は、シフトレジスタ124に格
納されている剰余データをメモリ101に格納するデー
タストア命令である。。データストアの命令は上記で説
明したデータロード命令と同様に32ビット単位で行わ
れる。このデータストア命令が命令デコーダ回路102
でデコードされると、制御回路105は、セレクタ12
7に制御信号mを送り、制御信号mを受けたセレクタ1
27は、この命令が指定するソース・オぺランドのレジ
スタ、今の例ではシフトレジスタ124をバスlに接続
する。その結果、そのレジスタに格納されているデータ
はバスlに出力され、この命令が指定する、メモリ10
1内のアドレスの位置に格納される。
納されている剰余データをメモリ101に格納するデー
タストア命令である。。データストアの命令は上記で説
明したデータロード命令と同様に32ビット単位で行わ
れる。このデータストア命令が命令デコーダ回路102
でデコードされると、制御回路105は、セレクタ12
7に制御信号mを送り、制御信号mを受けたセレクタ1
27は、この命令が指定するソース・オぺランドのレジ
スタ、今の例ではシフトレジスタ124をバスlに接続
する。その結果、そのレジスタに格納されているデータ
はバスlに出力され、この命令が指定する、メモリ10
1内のアドレスの位置に格納される。
【0088】命令316は、ファイア符号復号演算回路
112によりシフトレジスタ124内の剰余データ、シ
フトレジスタ122内の変形生成多項式データ、シフト
レジスタ123内の受信ビット列11、シフトレジスタ
124内の変形剰余データおよびレジスタ125内のマ
スク用のデータとを使用して誤りビット列12を検出す
る命令である。もし誤りビット列が検出されたならば、
ステータスレジスタ119内のTビットを0にセットす
るようになっている。この命令は先に述べたステップ1
と2の主要部を実行する命令であり、図8から図10の
命令717,719、720、721,722での処理
を実行することになる。
112によりシフトレジスタ124内の剰余データ、シ
フトレジスタ122内の変形生成多項式データ、シフト
レジスタ123内の受信ビット列11、シフトレジスタ
124内の変形剰余データおよびレジスタ125内のマ
スク用のデータとを使用して誤りビット列12を検出す
る命令である。もし誤りビット列が検出されたならば、
ステータスレジスタ119内のTビットを0にセットす
るようになっている。この命令は先に述べたステップ1
と2の主要部を実行する命令であり、図8から図10の
命令717,719、720、721,722での処理
を実行することになる。
【0089】命令317は条件付分岐命令であり、ステ
ータスレジスタ119が0でないときには、次の命令を
実行し、このレジスタが0のときには、loop_ex
itに分岐する命令であり、ビット列検出処理200を
実行しない。命令318は汎用レジスタR4にループカ
ウントの初期値0を転送する命令である。命令317の
動作は命令311で説明したので、以下では、命令31
6の実行時の装置動作を詳細に説明する。
ータスレジスタ119が0でないときには、次の命令を
実行し、このレジスタが0のときには、loop_ex
itに分岐する命令であり、ビット列検出処理200を
実行しない。命令318は汎用レジスタR4にループカ
ウントの初期値0を転送する命令である。命令317の
動作は命令311で説明したので、以下では、命令31
6の実行時の装置動作を詳細に説明する。
【0090】命令316がデコードされると、シフトレ
ジスタ124内の変形剰余データとシフトレジスタ12
5内のマスク用のデータがアンドオア回路130に出力
される。アンドオア回路130は、これらのデータの互
いに対応する64個のビット対のそれぞれに対して論理
積演算を行い、それぞれのビット対に対するこれらの論
理積演算により得られる64個のデータに対してOR演
算を行う。アンドオア回路130は、得られた演算結果
データを制御信号nとしてステータスレジスタ119お
よびANDゲート132に出力する。このアンドオアゲ
ート130の出力nは、シフトレジスタ124内の剰余
データの第12ビット目から第32ビット目のいずれか
のビットが1であるときには1となる。このような剰余
データは誤りビット列12がまだ検出されていないこと
を示す。従って、アンドオアゲート130は、シフトレ
ジスタ124内の剰余データが、誤りビット列のみから
なるか否かを判別する回路として動作する。
ジスタ124内の変形剰余データとシフトレジスタ12
5内のマスク用のデータがアンドオア回路130に出力
される。アンドオア回路130は、これらのデータの互
いに対応する64個のビット対のそれぞれに対して論理
積演算を行い、それぞれのビット対に対するこれらの論
理積演算により得られる64個のデータに対してOR演
算を行う。アンドオア回路130は、得られた演算結果
データを制御信号nとしてステータスレジスタ119お
よびANDゲート132に出力する。このアンドオアゲ
ート130の出力nは、シフトレジスタ124内の剰余
データの第12ビット目から第32ビット目のいずれか
のビットが1であるときには1となる。このような剰余
データは誤りビット列12がまだ検出されていないこと
を示す。従って、アンドオアゲート130は、シフトレ
ジスタ124内の剰余データが、誤りビット列のみから
なるか否かを判別する回路として動作する。
【0091】シフトレジスタ124は、ANDゲート1
30にデータを出力した後に、データを1ビット左シフ
トし、シフト後のデータをバスjに出力する。このシフ
ト動作は図8のプログラムの命令720による処理と同
じである。ANDゲート132はアンドオア回路130
から出力される制御信号nと、シフトレジスタ124よ
りシフトアウトされたデータに対して論理積演算を実行
しフラグoを生成する。生成されたフラグoは演算制御
レジスタ134に格納される。さらに、シフト後のシフ
トレジスタ124に格納されている変形剰余データと、
シフトレジスタ122に格納されている変形生成多項式
データがバッファ128L、128Hに出力され、これ
らの2つのデータがEOR演算回路120のソースオペ
ランドとなる。
30にデータを出力した後に、データを1ビット左シフ
トし、シフト後のデータをバスjに出力する。このシフ
ト動作は図8のプログラムの命令720による処理と同
じである。ANDゲート132はアンドオア回路130
から出力される制御信号nと、シフトレジスタ124よ
りシフトアウトされたデータに対して論理積演算を実行
しフラグoを生成する。生成されたフラグoは演算制御
レジスタ134に格納される。さらに、シフト後のシフ
トレジスタ124に格納されている変形剰余データと、
シフトレジスタ122に格納されている変形生成多項式
データがバッファ128L、128Hに出力され、これ
らの2つのデータがEOR演算回路120のソースオペ
ランドとなる。
【0092】EOR演算回路120は、演算制御レジス
タ134に格納されているフラグoが1である場合は、
64ビットの排他的論理和演算を実行し、演算結果デー
タをバッファ129L、129Hに出力する。また、フ
ラグoが0の場合は、EOR演算回路120は排他的論
理和演算を実行せず、シフトレジスタ124に格納され
ていたシフト後の変形多項式データをバッファ129
L、129Hに出力する。次に、制御回路105はセレ
クタ127に変形剰余制御信号iを送る。制御信号iを
受けたセレクタ127はバッファ129L、129Hと
シフトレジスタ124l、124hをそれぞれ接続す
る。こうして、EOR演算回路120による演算結果デ
ータはシフトレジスタ124に格納される。
タ134に格納されているフラグoが1である場合は、
64ビットの排他的論理和演算を実行し、演算結果デー
タをバッファ129L、129Hに出力する。また、フ
ラグoが0の場合は、EOR演算回路120は排他的論
理和演算を実行せず、シフトレジスタ124に格納され
ていたシフト後の変形多項式データをバッファ129
L、129Hに出力する。次に、制御回路105はセレ
クタ127に変形剰余制御信号iを送る。制御信号iを
受けたセレクタ127はバッファ129L、129Hと
シフトレジスタ124l、124hをそれぞれ接続す
る。こうして、EOR演算回路120による演算結果デ
ータはシフトレジスタ124に格納される。
【0093】したがって、アンドオア回路130の出力
nが1のときに、シフトレジスタ124からシフトアウ
トされた先頭のビットが1であれば、制御信号nは1と
なり、上記EOR演算回路120による演算が行われ
る。この演算により、先にステップ2で述べた除算が行
われたことになる。この除算後の新たな剰余データはシ
フトレジスタ124に格納される。しかし、シフトレジ
スタ124からシフトアウトされた先頭のビットが0の
ときには、制御信号nは0となり、上記EOR演算回路
120による演算は行われないで、シフトレジスタ12
4内の、1ビットシフトされた後の剰余データがそのま
ま同じレジスタに格納される。こうして、元の剰余デー
タが1ビットシフトされるだけである。シフトレジスタ
124から左にシフトアウトされたビットは剰余多項式
のX7↑の係数であり、これが0のときには、生成多項
式データによる除算は必要がないからである。以上の動
作が繰り返された後にアンドオア回路130の出力が0
になれば、シフトレジスタ124に保持された剰余デー
タの内、先頭11ビット以外は0であることになるの
で、この先頭11ビットのビット列が発生した誤りビッ
ト列として使用される。
nが1のときに、シフトレジスタ124からシフトアウ
トされた先頭のビットが1であれば、制御信号nは1と
なり、上記EOR演算回路120による演算が行われ
る。この演算により、先にステップ2で述べた除算が行
われたことになる。この除算後の新たな剰余データはシ
フトレジスタ124に格納される。しかし、シフトレジ
スタ124からシフトアウトされた先頭のビットが0の
ときには、制御信号nは0となり、上記EOR演算回路
120による演算は行われないで、シフトレジスタ12
4内の、1ビットシフトされた後の剰余データがそのま
ま同じレジスタに格納される。こうして、元の剰余デー
タが1ビットシフトされるだけである。シフトレジスタ
124から左にシフトアウトされたビットは剰余多項式
のX7↑の係数であり、これが0のときには、生成多項
式データによる除算は必要がないからである。以上の動
作が繰り返された後にアンドオア回路130の出力が0
になれば、シフトレジスタ124に保持された剰余デー
タの内、先頭11ビット以外は0であることになるの
で、この先頭11ビットのビット列が発生した誤りビッ
ト列として使用される。
【0094】命令315から命令318の剰余判定処理
104において、命令316によってステータスレジス
タのTビットが0の場合は、誤りが発生しなかった場合
か、もしくは、誤りビット列が検出されていることを示
しているため、以下の誤りビット列検出処理200を実
行することなく、次の命令317によってloop_e
xit2に分岐する。また、ステータスレジスタのTビ
ットが1の場合は、次の誤りビット検出処理200が実
行される。 誤りビット列検出処理200は、命令31
6によって生成されたステータスレジスタのTビットが
0でない時に実行される。この処理は初期化処理20
1、剰余算出処理202、繰り返し処理203を含む。
初期化処理201では、命令319は、シフトレジスタ
122lに、式12で表される生成多項式G(X)に対
する変形生成多項式G’(X)のデータの下位側32ビ
ットのデータH’01000000を転送する命令であ
り、命令320は、シフトレジスタ122hに変形生成
多項式G’(X)のデータの上位側の32ビットのデー
タH’20008240を転送する命令である。これら
の命令319、320により先にステップ0として記載
したビット列の並び替えが生成多項式データに対して行
われることになる。命令319、320は図8から図1
0の命令713の処理を実行する命令である。
104において、命令316によってステータスレジス
タのTビットが0の場合は、誤りが発生しなかった場合
か、もしくは、誤りビット列が検出されていることを示
しているため、以下の誤りビット列検出処理200を実
行することなく、次の命令317によってloop_e
xit2に分岐する。また、ステータスレジスタのTビ
ットが1の場合は、次の誤りビット検出処理200が実
行される。 誤りビット列検出処理200は、命令31
6によって生成されたステータスレジスタのTビットが
0でない時に実行される。この処理は初期化処理20
1、剰余算出処理202、繰り返し処理203を含む。
初期化処理201では、命令319は、シフトレジスタ
122lに、式12で表される生成多項式G(X)に対
する変形生成多項式G’(X)のデータの下位側32ビ
ットのデータH’01000000を転送する命令であ
り、命令320は、シフトレジスタ122hに変形生成
多項式G’(X)のデータの上位側の32ビットのデー
タH’20008240を転送する命令である。これら
の命令319、320により先にステップ0として記載
したビット列の並び替えが生成多項式データに対して行
われることになる。命令319、320は図8から図1
0の命令713の処理を実行する命令である。
【0095】命令321はレジスタ125lに、後に述
べる変形剰余データをマスクするためのデータの下位側
の32ビットのデータH’00000000を転送する
命令であり、命令322はレジスタ125hに同じマス
クするためのデータの上位側の32ビットのデータH’
ffe00000を転送する命令である。これらの二つ
の命令によりレジスタ125には、上位側11ビットが
0であり、その下位側の21ビットが1であり、残りの
下位側32ビットが0であるマスク用のデータが設定さ
れる。この上位側の値1のビットの数は式12で使用さ
れる生成多項式に対して定まるバースト誤り訂正能力に
等しい。命令321、322は図8から図10の命令7
18の処理の一部を実行する命令である。
べる変形剰余データをマスクするためのデータの下位側
の32ビットのデータH’00000000を転送する
命令であり、命令322はレジスタ125hに同じマス
クするためのデータの上位側の32ビットのデータH’
ffe00000を転送する命令である。これらの二つ
の命令によりレジスタ125には、上位側11ビットが
0であり、その下位側の21ビットが1であり、残りの
下位側32ビットが0であるマスク用のデータが設定さ
れる。この上位側の値1のビットの数は式12で使用さ
れる生成多項式に対して定まるバースト誤り訂正能力に
等しい。命令321、322は図8から図10の命令7
18の処理の一部を実行する命令である。
【0096】命令323はシフトレジスタ124に保持
された、受信ビット列全体に対する剰余データを24ビ
ット左へ論理シフトする命令であり、これにより、この
レジスタに保持されていた剰余データが表す剰余多項式
に対応する変形剰余多項式に対する剰余データが得られ
る。ここで、24は、シフトレジスタ124の長さ−生
成多項式G(X)の次数に等しい。したがって、この命
令は先に述べたステップ0での並び替えを剰余データに
対して行うことになり、命令319は図8から図10の
命令714の処理に対応する処理を実行する。
された、受信ビット列全体に対する剰余データを24ビ
ット左へ論理シフトする命令であり、これにより、この
レジスタに保持されていた剰余データが表す剰余多項式
に対応する変形剰余多項式に対する剰余データが得られ
る。ここで、24は、シフトレジスタ124の長さ−生
成多項式G(X)の次数に等しい。したがって、この命
令は先に述べたステップ0での並び替えを剰余データに
対して行うことになり、命令319は図8から図10の
命令714の処理に対応する処理を実行する。
【0097】命令324は汎用レジスタR2に受信ビッ
ト列11のビット数43を転送する命令である。この数
値は、ループ繰り返し最大数として使用される。命令3
25は汎用レジスタR4にループカウントを1インクリ
メントする命令である。汎用レジスタR4に格納される
データはfireDec命令(命令318)を実行した
回数に等しい。命令324は、図8から図10の命令7
16の処理の一部を実行する。命令325は、図8から
図10の命令715を実行する。
ト列11のビット数43を転送する命令である。この数
値は、ループ繰り返し最大数として使用される。命令3
25は汎用レジスタR4にループカウントを1インクリ
メントする命令である。汎用レジスタR4に格納される
データはfireDec命令(命令318)を実行した
回数に等しい。命令324は、図8から図10の命令7
16の処理の一部を実行する。命令325は、図8から
図10の命令715を実行する。
【0098】剰余算出処理202において、命令326
は、ファイア符号復号演算回路112によりシフトレジ
スタ124内の剰余データ、シフトレジスタ122内の
変形生成多項式データ、シフトレジスタ123内の受信
ビット列11、シフトレジスタ124内の変形剰余デー
タおよびレジスタ125内のマスク用のデータとを使用
して誤りビット列12を検出する命令である。もし誤り
ビット列が検出されたならば、ステータスレジスタ11
9内のTビットを0にセットするようになっている。こ
の命令は先に述べたステップ1と2の主要部を実行する
命令であり、図8から図10の命令717,719、7
20、721,722での処理を実行することになる。
は、ファイア符号復号演算回路112によりシフトレジ
スタ124内の剰余データ、シフトレジスタ122内の
変形生成多項式データ、シフトレジスタ123内の受信
ビット列11、シフトレジスタ124内の変形剰余デー
タおよびレジスタ125内のマスク用のデータとを使用
して誤りビット列12を検出する命令である。もし誤り
ビット列が検出されたならば、ステータスレジスタ11
9内のTビットを0にセットするようになっている。こ
の命令は先に述べたステップ1と2の主要部を実行する
命令であり、図8から図10の命令717,719、7
20、721,722での処理を実行することになる。
【0099】命令327は条件付分岐命令であり、ステ
ータスレジスタ119が0でないときには、次の命令を
実行し、このレジスタが0のときには、loop_ex
itに分岐し、ビット列検出処理200を終了するとい
う命令である。したがって、誤りビット列が検出される
まで命令326と後続の命令328から330とが繰り
返し実行されることになる。命令327は、図8のプロ
グラムの命令718による判定を行う。
ータスレジスタ119が0でないときには、次の命令を
実行し、このレジスタが0のときには、loop_ex
itに分岐し、ビット列検出処理200を終了するとい
う命令である。したがって、誤りビット列が検出される
まで命令326と後続の命令328から330とが繰り
返し実行されることになる。命令327は、図8のプロ
グラムの命令718による判定を行う。
【0100】命令328は、汎用レジスタr0内のルー
プ繰り返し最大数を1デクリメントし、その結果を0と
比較し、結果が0のときに汎用演算器106のステータ
スレジスタ119を1にセットし、結果が0以外のとき
にはステータスレジスタ119を0にセットするという
命令である。命令329は、条件付分岐命令であり、汎
用演算器106のステータスレジスタ119が0のとき
にloop_startに分岐するという命令である。
したがって、ループ繰り返し回数の最大値は、レジスタ
r2に設定された最大値44である。命令330は、汎
用レジスタr4に格納されているループ繰り返し回数に
1を加算する命令である。このように、誤りビット列検
出処理200は、誤りビット検出命令322と条件分岐
命令323の繰り返しとなる。命令328,329、3
30は図8から図10の命令716、723の繰り返し
処理を実行することになる。
プ繰り返し最大数を1デクリメントし、その結果を0と
比較し、結果が0のときに汎用演算器106のステータ
スレジスタ119を1にセットし、結果が0以外のとき
にはステータスレジスタ119を0にセットするという
命令である。命令329は、条件付分岐命令であり、汎
用演算器106のステータスレジスタ119が0のとき
にloop_startに分岐するという命令である。
したがって、ループ繰り返し回数の最大値は、レジスタ
r2に設定された最大値44である。命令330は、汎
用レジスタr4に格納されているループ繰り返し回数に
1を加算する命令である。このように、誤りビット列検
出処理200は、誤りビット検出命令322と条件分岐
命令323の繰り返しとなる。命令328,329、3
30は図8から図10の命令716、723の繰り返し
処理を実行することになる。
【0101】命令324、325、327、328、3
29、330はSH7600の命令であり、その動作の
詳細は、例えば、”SH7600ハードウェアマニュア
ル”等を参照のこと。また、命令319、320、32
1、322は上記で説明した命令303,304と同様
に実行される。また、命令326は命令316と同様に
実行される。以下では、命令323の実行時の装置動作
を詳細に説明する。すでに述べたごとく、命令323
は、シフトレジスタ124のデータを24ビット左へ論
理シフトする命令である。命令323が命令デコード回
路102にてデコードされると、制御回路105は、シ
フトレジスタ124に格納されているデータを24ビッ
ト左に論理シフトするシフト制御信号を出力する。シフ
ト制御信号を受信したシフトレジスタ124は、データ
を24ビット左に論理シフトする。命令319に示すよ
うに、シフトレジスタ124に対してシフト量はイミデ
ィエート値で指定され、シフト量sの範囲は、64>s
>0である。
29、330はSH7600の命令であり、その動作の
詳細は、例えば、”SH7600ハードウェアマニュア
ル”等を参照のこと。また、命令319、320、32
1、322は上記で説明した命令303,304と同様
に実行される。また、命令326は命令316と同様に
実行される。以下では、命令323の実行時の装置動作
を詳細に説明する。すでに述べたごとく、命令323
は、シフトレジスタ124のデータを24ビット左へ論
理シフトする命令である。命令323が命令デコード回
路102にてデコードされると、制御回路105は、シ
フトレジスタ124に格納されているデータを24ビッ
ト左に論理シフトするシフト制御信号を出力する。シフ
ト制御信号を受信したシフトレジスタ124は、データ
を24ビット左に論理シフトする。命令319に示すよ
うに、シフトレジスタ124に対してシフト量はイミデ
ィエート値で指定され、シフト量sの範囲は、64>s
>0である。
【0102】次に、命令331により検出された誤りビ
ット列がメモリに格納される。なお、命令331の動作
は命令315と同様である。
ット列がメモリに格納される。なお、命令331の動作
は命令315と同様である。
【0103】図4には、図2の受信ビット列11に対し
て誤り発生検査処理100を実行した場合のシフトレジ
スタ124、123およびフラグbの変化を具体的に示
している。なお、括弧( )内の数字は記載を省略して
いる0の個数である。まず、命令301、302により
シフトレジスタ124のデータはクリアされ、0とな
る。次に、命令303、304が実行され、シフトレジ
スタ122は”0…(22)…010010…(11)
…010000010010…(11)…0”となる。
次に命令308が実行されると、シフトレジスタ123
は”0…(61)…01”となる。次に、命令309が
実行されると、シフトレジスタ124、123のデータ
は1ビット右シフトされ、EORゲート126にはそれ
ぞれ、0、1が出力され、その結果、フラグbは1とな
る(状態400)。すると、EOR演算回路120にお
いて64ビットの排他的論理和演算が実行され、演算結
果はシフトレジスタ124に格納される。次に、繰り返
し処理103が実行された後、再び命令308が実行さ
れる。
て誤り発生検査処理100を実行した場合のシフトレジ
スタ124、123およびフラグbの変化を具体的に示
している。なお、括弧( )内の数字は記載を省略して
いる0の個数である。まず、命令301、302により
シフトレジスタ124のデータはクリアされ、0とな
る。次に、命令303、304が実行され、シフトレジ
スタ122は”0…(22)…010010…(11)
…010000010010…(11)…0”となる。
次に命令308が実行されると、シフトレジスタ123
は”0…(61)…01”となる。次に、命令309が
実行されると、シフトレジスタ124、123のデータ
は1ビット右シフトされ、EORゲート126にはそれ
ぞれ、0、1が出力され、その結果、フラグbは1とな
る(状態400)。すると、EOR演算回路120にお
いて64ビットの排他的論理和演算が実行され、演算結
果はシフトレジスタ124に格納される。次に、繰り返
し処理103が実行された後、再び命令308が実行さ
れる。
【0104】命令308が再度実行されると、シフトレ
ジスタ123は”0…(61)…01”となる。次に、
命令309が実行されると、シフトレジスタ124、1
23のデータは1ビット右シフトされ、EORゲート1
26にはそれぞれ、0、1が出力され、その結果、フラ
グbは1となる(状態401)。すると、EOR演算回
路120において64ビットの排他的論理和演算が実行
され、演算結果はシフトレジスタ124に格納される。
次に、繰り返し処理103が実行された後、再び命令3
07が実行される。
ジスタ123は”0…(61)…01”となる。次に、
命令309が実行されると、シフトレジスタ124、1
23のデータは1ビット右シフトされ、EORゲート1
26にはそれぞれ、0、1が出力され、その結果、フラ
グbは1となる(状態401)。すると、EOR演算回
路120において64ビットの排他的論理和演算が実行
され、演算結果はシフトレジスタ124に格納される。
次に、繰り返し処理103が実行された後、再び命令3
07が実行される。
【0105】命令308がさらに実行されると、シフト
レジスタ123は”0…(61)…00”となる。次
に、命令309が実行されると、シフトレジスタ12
4、123のデータは1ビット右シフトされ、EORゲ
ート126にはそれぞれ、0、0が出力され、その結
果、フラグbは0となる(状態402)。すると、EO
R演算回路120において64ビットの排他的論理和演
算は実行されず、演算結果としてシフトレジスタ124
のデータがバッファ129に出力され、シフトレジスタ
124に格納される。このように、命令308、309
の処理が受信された情報ビットの数、すなわち合計4回
繰り返し実行され、実行結果は状態404のシフトレジ
スタ124となる。次に命令312、313を実行して
受信ビット列11中の剰余データ11bがメモリ101
からシフトレジスタ122に格納される。命令314に
よって、状態404のシフトレジスタ124内の剰余デ
ータとシフトレジスタ122に格納された剰余ビット列
とに対して排他的論理和演算が実行され、シフトレジス
タ124は状態405となる。さらに、命令316によ
りステータスレジスタのTビットは1となることから、
誤り発生検出処理100が終了し、次に誤りビット列検
出処理を実行する。
レジスタ123は”0…(61)…00”となる。次
に、命令309が実行されると、シフトレジスタ12
4、123のデータは1ビット右シフトされ、EORゲ
ート126にはそれぞれ、0、0が出力され、その結
果、フラグbは0となる(状態402)。すると、EO
R演算回路120において64ビットの排他的論理和演
算は実行されず、演算結果としてシフトレジスタ124
のデータがバッファ129に出力され、シフトレジスタ
124に格納される。このように、命令308、309
の処理が受信された情報ビットの数、すなわち合計4回
繰り返し実行され、実行結果は状態404のシフトレジ
スタ124となる。次に命令312、313を実行して
受信ビット列11中の剰余データ11bがメモリ101
からシフトレジスタ122に格納される。命令314に
よって、状態404のシフトレジスタ124内の剰余デ
ータとシフトレジスタ122に格納された剰余ビット列
とに対して排他的論理和演算が実行され、シフトレジス
タ124は状態405となる。さらに、命令316によ
りステータスレジスタのTビットは1となることから、
誤り発生検出処理100が終了し、次に誤りビット列検
出処理を実行する。
【0106】図5は、図2の受信ビット列11に対して
誤りビット列検出処理200の実行時における、シフト
レジスタ124、制御信号n、aおよびフラグoの変化
を示している。なお、状態406におけるシフトレジス
タ124内のデータは図4の状態405に示すデータと
同じである。まず、命令319、320により、シフト
レジスタ122は”0010…(11)…010000
0010010…(10)…010…(22)…0”と
なる。次に命令322、323によりレジスタ125
は、”0…(9)…01…<51>…1”となる。な
お、<>内の数字は記載を省略している1の個数であ
る。次に命令324ではシフトレジスタ124を左に2
4ビット論理シフトする(状態406)。次に命令32
5によって、ループカウンタがセットされ、命令32
6、327は最大44回実行される。
誤りビット列検出処理200の実行時における、シフト
レジスタ124、制御信号n、aおよびフラグoの変化
を示している。なお、状態406におけるシフトレジス
タ124内のデータは図4の状態405に示すデータと
同じである。まず、命令319、320により、シフト
レジスタ122は”0010…(11)…010000
0010010…(10)…010…(22)…0”と
なる。次に命令322、323によりレジスタ125
は、”0…(9)…01…<51>…1”となる。な
お、<>内の数字は記載を省略している1の個数であ
る。次に命令324ではシフトレジスタ124を左に2
4ビット論理シフトする(状態406)。次に命令32
5によって、ループカウンタがセットされ、命令32
6、327は最大44回実行される。
【0107】次に、命令326が実行されると、シフト
レジスタ124とレジスタ125の各ビットの論理積演
算および論理和演算が実行され、制御信号nが1とな
る。また、シフトレジスタ124は1ビット左に論理シ
フトし、シフト後のデータをバスjに出力する。する
と、制御信号aは0となり、フラグoは0となる(状態
407)。従って、EOR演算回路120において64
ビットの排他的論理和演算は実行されず、演算結果とし
てシフトレジスタ124のデータがバッファ129H、
129Lに出力され、シフトレジスタ124に格納され
る。制御信号nによりステータスレジスタ119が1と
なり、条件分岐命令323の分岐が実行されずに、命令
328、329の繰り返し処理203が実行され、命令
330によりループカウンタがインクリメントされた
後、再び命令326が実行される。
レジスタ124とレジスタ125の各ビットの論理積演
算および論理和演算が実行され、制御信号nが1とな
る。また、シフトレジスタ124は1ビット左に論理シ
フトし、シフト後のデータをバスjに出力する。する
と、制御信号aは0となり、フラグoは0となる(状態
407)。従って、EOR演算回路120において64
ビットの排他的論理和演算は実行されず、演算結果とし
てシフトレジスタ124のデータがバッファ129H、
129Lに出力され、シフトレジスタ124に格納され
る。制御信号nによりステータスレジスタ119が1と
なり、条件分岐命令323の分岐が実行されずに、命令
328、329の繰り返し処理203が実行され、命令
330によりループカウンタがインクリメントされた
後、再び命令326が実行される。
【0108】次に、命令326が実行されると、シフト
レジスタ124と125の各ビットの論理積演算および
論理和演算が実行され、制御信号nが1となる。また、
シフトレジスタ124は1ビット左に論理シフトし、シ
フト後のデータをバスjに出力する。すると、制御信号
aは1となり、フラグoは1となる(状態408)。従
って、EOR演算回路120において64ビットの排他
的論理和演算は実行され、演算結果は、シフトレジスタ
124に格納される。すると、汎用レジスタ106のコ
ントロールレジスタが1となり、命令327の条件分岐
命令が実行されずに、命令328、329の繰り返し処
理が実行され、命令330によりループカウンタがイン
クリメントされた後、再び命令326が実行される。
レジスタ124と125の各ビットの論理積演算および
論理和演算が実行され、制御信号nが1となる。また、
シフトレジスタ124は1ビット左に論理シフトし、シ
フト後のデータをバスjに出力する。すると、制御信号
aは1となり、フラグoは1となる(状態408)。従
って、EOR演算回路120において64ビットの排他
的論理和演算は実行され、演算結果は、シフトレジスタ
124に格納される。すると、汎用レジスタ106のコ
ントロールレジスタが1となり、命令327の条件分岐
命令が実行されずに、命令328、329の繰り返し処
理が実行され、命令330によりループカウンタがイン
クリメントされた後、再び命令326が実行される。
【0109】上記の動作が繰り返し実行され、実行結果
が状態410のシフトレジスタ124となり、次に、命
令322においてシフトレジスタ124とレジスタ12
5の各ビットの論理積演算および論理和演算が実行さ
れ、制御信号nが0となる。また、シフトレジスタ12
4は1ビット左に論理シフトし、シフト後のデータをバ
スjに出力する。すると、制御信号aは0となり、フラ
グoは0となる(状態411)。従って、EOR演算回
路120において64ビットの排他的論理和演算は実行
されず、演算結果としてシフトレジスタ124のデータ
がバッファ129H、129Lに出力され、シフトレジ
スタ124に格納される。すると、ステータスレジスタ
119が0となり、命令327の条件分岐命令が実行さ
れ、誤りビット列検出処理200が終了する。そして、
状態411のシフトレジスタ124内の先頭の11ビッ
トが誤りビット列12となる。このとき汎用レジスタr
4内のループカウンタの値は、今の例では31となる。
このループカウントの値が誤りビット列12の位置情報
となる。
が状態410のシフトレジスタ124となり、次に、命
令322においてシフトレジスタ124とレジスタ12
5の各ビットの論理積演算および論理和演算が実行さ
れ、制御信号nが0となる。また、シフトレジスタ12
4は1ビット左に論理シフトし、シフト後のデータをバ
スjに出力する。すると、制御信号aは0となり、フラ
グoは0となる(状態411)。従って、EOR演算回
路120において64ビットの排他的論理和演算は実行
されず、演算結果としてシフトレジスタ124のデータ
がバッファ129H、129Lに出力され、シフトレジ
スタ124に格納される。すると、ステータスレジスタ
119が0となり、命令327の条件分岐命令が実行さ
れ、誤りビット列検出処理200が終了する。そして、
状態411のシフトレジスタ124内の先頭の11ビッ
トが誤りビット列12となる。このとき汎用レジスタr
4内のループカウンタの値は、今の例では31となる。
このループカウントの値が誤りビット列12の位置情報
となる。
【0110】次に命令331により、誤りビット列がメ
モリに格納され、誤りビット列検出処理200が終了
し、誤り訂正処理が実行される。誤り訂正処理は、命令
331によってメモリに格納された誤りビット列情報を
再び汎用レジスタにロードし、従来方法である図15の
ような方法で誤り訂正が行われる。
モリに格納され、誤りビット列検出処理200が終了
し、誤り訂正処理が実行される。誤り訂正処理は、命令
331によってメモリに格納された誤りビット列情報を
再び汎用レジスタにロードし、従来方法である図15の
ような方法で誤り訂正が行われる。
【0111】以上に示したように、本実施の形態では、
誤り発生検査処理100の剰余算出処理102は情報ビ
ット列のデータ転送命令308と剰余算出命令309の
2命令で実行可能となり、また、誤りビット列検出処理
200の剰余算出処理202は剰余算出命令326と条
件分岐命令327の2命令で実行可能となる。どの命令
も1命令あたり1マシーンサイクルで実行可能であるの
で、従来よりも高速にファイア符号の復号化処理を実行
できる。この処理は、生成多項式の次数が汎用レジスタ
長(32ビット)を越える場合でも同様に高速に実行で
きる。このように大きな次数の生成多項式を使用した場
合には、従来のプロセッサを使用する図14、15のプ
ログラムでは誤り発生検査処理および誤りビット列検出
処理の剰余算出処理を実行するには1情報ビットデータ
あたり約16マシーンサイクルかかっていた。しかし、
本実施の形態における1情報ビットあたりの剰余算出処
理102、202はいずれも2マシーンサイクルで実行
されるので、このような従来のプロセッサを使用する場
合に比べて処理量が約1/8になる。
誤り発生検査処理100の剰余算出処理102は情報ビ
ット列のデータ転送命令308と剰余算出命令309の
2命令で実行可能となり、また、誤りビット列検出処理
200の剰余算出処理202は剰余算出命令326と条
件分岐命令327の2命令で実行可能となる。どの命令
も1命令あたり1マシーンサイクルで実行可能であるの
で、従来よりも高速にファイア符号の復号化処理を実行
できる。この処理は、生成多項式の次数が汎用レジスタ
長(32ビット)を越える場合でも同様に高速に実行で
きる。このように大きな次数の生成多項式を使用した場
合には、従来のプロセッサを使用する図14、15のプ
ログラムでは誤り発生検査処理および誤りビット列検出
処理の剰余算出処理を実行するには1情報ビットデータ
あたり約16マシーンサイクルかかっていた。しかし、
本実施の形態における1情報ビットあたりの剰余算出処
理102、202はいずれも2マシーンサイクルで実行
されるので、このような従来のプロセッサを使用する場
合に比べて処理量が約1/8になる。
【0112】このファイア符号復号化処理は音声、デー
タ等の伝送による劣化を防ぐために施される処理であ
り、送信するデータによって異なる生成多項式を用いて
ファイア符号復号化が行われる場合が多い。従って、フ
ァイア符号復号化処理を高速に実行する回路を設計する
場合には、任意の生成多項式に対して高速に処理を実行
できる回路構成とする必要がある。本実施の形態では、
ファイア符号復号演算回路112が生成多項式の係数を
格納するシフトレジスタ122を保持しており、任意の
生成多項式に対してファイア符号復号化処理が高速に実
行される。また、本実施の形態に記載されているファイ
ア符号復号演算回路112は主に3つのシフトレジスタ
122,123,124、一つのレジスタ125および
EOR演算回路120等の論理回路から構成されており
回路規模も小さい。
タ等の伝送による劣化を防ぐために施される処理であ
り、送信するデータによって異なる生成多項式を用いて
ファイア符号復号化が行われる場合が多い。従って、フ
ァイア符号復号化処理を高速に実行する回路を設計する
場合には、任意の生成多項式に対して高速に処理を実行
できる回路構成とする必要がある。本実施の形態では、
ファイア符号復号演算回路112が生成多項式の係数を
格納するシフトレジスタ122を保持しており、任意の
生成多項式に対してファイア符号復号化処理が高速に実
行される。また、本実施の形態に記載されているファイ
ア符号復号演算回路112は主に3つのシフトレジスタ
122,123,124、一つのレジスタ125および
EOR演算回路120等の論理回路から構成されており
回路規模も小さい。
【0113】<変形例>本実施の形態に対していろいろ
の変形例が実現可能である。たとえば、特願平09−1
36702に記載のいろいろの実施の形態あるいはそれ
らの変形例を本実施の形態に適用することができる。た
とえば、シフトレジスタ122、123、124をシフ
トレジスタにより構成したが、これらをシフト機能を有
しないレジスタにて構成することも可能である。たとえ
ばシフトレジスタ124内の剰余データを命令319に
よるシフトするときには、このレジスタの最上位ビット
を除いた残りのビットの下位側に値0の1ビットを付加
し、EOR演算回路120を介してこのデータを同じシ
フトレジスタ124に書き込むことを繰り返せばよい。
また、命令322により、シフトレジスタ124内の剰
余データを1ビット左にシフトしたデータを演算器12
0に与えるときにも、同様にこのレジスタの最上位ビッ
トを除いた残りのビットの下位側に値0の1ビットを付
加したデータを演算回路120に与えればよい。
の変形例が実現可能である。たとえば、特願平09−1
36702に記載のいろいろの実施の形態あるいはそれ
らの変形例を本実施の形態に適用することができる。た
とえば、シフトレジスタ122、123、124をシフ
トレジスタにより構成したが、これらをシフト機能を有
しないレジスタにて構成することも可能である。たとえ
ばシフトレジスタ124内の剰余データを命令319に
よるシフトするときには、このレジスタの最上位ビット
を除いた残りのビットの下位側に値0の1ビットを付加
し、EOR演算回路120を介してこのデータを同じシ
フトレジスタ124に書き込むことを繰り返せばよい。
また、命令322により、シフトレジスタ124内の剰
余データを1ビット左にシフトしたデータを演算器12
0に与えるときにも、同様にこのレジスタの最上位ビッ
トを除いた残りのビットの下位側に値0の1ビットを付
加したデータを演算回路120に与えればよい。
【0114】
【発明の効果】本発明によれば、ファイア符号の復号化
処理を高速に実行できる。
処理を高速に実行できる。
【図1】本発明によるプロセッサの概略回路図。
【図2】2元(44、4)巡回符号であるファイア符
号、発生した誤りビット列、受信ビット列の例を示す
図。
号、発生した誤りビット列、受信ビット列の例を示す
図。
【図3】図1のプロセッサで実行するための、ファイア
符号の復号化処理用のプログラムの例を示す図。
符号の復号化処理用のプログラムの例を示す図。
【図4】図3のプログラムの誤り発生検出処理を実行し
た場合に生成される剰余データおよびフラグbの値の変
化を示す図。
た場合に生成される剰余データおよびフラグbの値の変
化を示す図。
【図5】図3のプログラムの誤りビット列検出処理を実
行した場合に生成される剰余データ、制御信号およびフ
ラグoの値の変化を示す図。
行した場合に生成される剰余データ、制御信号およびフ
ラグoの値の変化を示す図。
【図6】2元(35、27)巡回符号であるファイア符
号、発生した誤りビット列、受信ビット列の例を示す
図。
号、発生した誤りビット列、受信ビット列の例を示す
図。
【図7】ファイア符号の復号化処理の中の誤り発生検出
処理で行う剰余算出処理の原理を説明する図。
処理で行う剰余算出処理の原理を説明する図。
【図8】ファイア符号復号化処理の原理を説明するため
の、C言語で記述したプログラムの一部を示す図。
の、C言語で記述したプログラムの一部を示す図。
【図9】上記C言語で記述したプログラムの第2の部分
を示す図。
を示す図。
【図10】上記C言語で記述したプログラムの第3の部
分を示す図。
分を示す図。
【図11】図8から10のプログラムで使用する情報デ
ータの構造を示す図。
ータの構造を示す図。
【図12】図7のプログラムにおける誤り発生検査処理
を実行した場合のシフトレジスタ等のデータの変化を示
す図。
を実行した場合のシフトレジスタ等のデータの変化を示
す図。
【図13】図7のプログラムにおける誤りビット列検出
処理を実行した場合のシフトレジスタ等のデータの変化
を示す図。
処理を実行した場合のシフトレジスタ等のデータの変化
を示す図。
【図14】図7のプログラムの処理の内の誤り発生検査
処理を従来のプロセッサで実行させるプログラムの例を
示す図。
処理を従来のプロセッサで実行させるプログラムの例を
示す図。
【図15】図7のプログラムの処理の内の誤りビット列
検出処理を従来のプロセッサで実行させるプログラムの
例を示す図。
検出処理を従来のプロセッサで実行させるプログラムの
例を示す図。
Claims (6)
- 【請求項1】複数のビットからなる第1から第3のデー
タをそれぞれ保持するための第1から第3のレジスタ
と、 第1のデータの各ビットと、第2のデータの対応するビ
ットとに対して論理積演算を実行し、第1のデータの複
数のビットに対する論理積演算の結果データに対して論
理和演算を行うアンドオア回路と、 第2のデータを1ビット上位側にシフトしたデータと上
記第3のデータとに対して排他的論理和演算を実行可能
な演算回路と、 上記アンドオア回路の出力と上記第2のデータの最上位
のビットの値に依存して、上記第2のデータを上記演算
回路により与えられる上記排他的論理和演算の結果デー
タにより更新するかあるいは上記第2のデータを1ビッ
ト上位側にシフトしたデータに更新するかを制御する制
御回路とを有するプロセッサ。 - 【請求項2】上記制御回路は、上記アンドオア回路の出
力が第1の値であり、上記第2のデータの最上位ビット
の値が所定値であるときに、上記演算回路により与えら
れる演算結果データにより上記第2のレジスタ内のデー
タを更新し、上記アンドオア回路の出力が上記第1の値
であり、上記第2のデータの最上位側のビットが上記所
定の値と異なるとき、上記第2のレジスタ内のデータ
を、そのデータを1ビット上位側にシフトしたデータに
更新する回路を有する請求項1記載のプロセッサ。 - 【請求項3】命令で指定可能な複数の汎用レジスタをさ
らに有し、 上記第1から第3のレジスタは、上記複数の汎用レジス
タの長さより長いレジスタからなる請求項1記載のプロ
セッサ。 - 【請求項4】上記第2のレジスタはシフトレジスタから
なり、 上記制御回路は、 上記第2のレジスタにシフト信号を供給する回路と、 上記アンドオア回路の出力が上記第1の値であり、上記
第2のデータの最上位ビットの値が上記所定値であると
きに、上記シフト信号により上記第2のレジスタ内のデ
ータがシフトされた後の、上記第2のレジスタに保持さ
れたデータを上記演算回路に供給し、上記演算回路によ
り与えられる演算結果データにより上記第2のレジスタ
内のシフトされた第2のデータを更新する回路とを有す
る請求項1記載のプロセッサ。 - 【請求項5】上記制御回路は、上記アンドオア回路の出
力が上記第1の値であり、上記第2のデータの最上位ビ
ットの値が上記所定値であるときに、上記第2のレジス
タ内のデータの内の最上位ビットを除いた他の複数のビ
ットの最下位側にデータ0を付加したデータを上記演算
回路に供給し、上記演算回路により与えられる演算結果
データにより上記第2のレジスタ内のシフトされた第2
のデータを更新し、上記アンドオア回路の出力が上記第
1の値であり、上記第2のデータの最上位ビットの値が
上記所定値と異なるときに、上記第2のレジスタ内のデ
ータの内の最上位ビットを除いた他の複数のビットの最
下位側にデータ0を付加したデータを上記第2のレジス
タに書き込む回路を有する請求項1記載のプロセッサ。 - 【請求項6】マスク用の第1のデータを保持する第1の
レジスタと、 誤りビット列を含むファイア符号に対する剰余多項式の
係数に対応する第2のデータを保持する第2のレジスタ
と、 上記ファイア符号を生成するのに使用した生成多項式の
係数に対応する第3のデータを保持するための第3のレ
ジスタと、 上記第2のデータを1ビット上位側にシフトしたデータ
と上記第3のデータとに対して排他的論理和演算を実行
可能な演算回路と、 第2のレジスタに保持された上記第2のデータが上記生
成多項式により定まる所定長のビット列以外のビットの
値が0であるか否かを上記第1のデータに基づいて判別
するためのビット列判別回路と、 上記ビット列判別回路の出力と第2のデータの最上位ビ
ットの値に依存して、上記第2のデータを上記演算回路
により与えられる上記排他的論理和演算の結果データに
より更新するかあるいは上記第2のデータを1ビット上
位側にシフトしたデータにより更新するかを制御する制
御回路とを有するプロセッサ。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP9215230A JPH1153206A (ja) | 1997-08-08 | 1997-08-08 | プロセッサ |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP9215230A JPH1153206A (ja) | 1997-08-08 | 1997-08-08 | プロセッサ |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH1153206A true JPH1153206A (ja) | 1999-02-26 |
Family
ID=16668874
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP9215230A Pending JPH1153206A (ja) | 1997-08-08 | 1997-08-08 | プロセッサ |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH1153206A (ja) |
-
1997
- 1997-08-08 JP JP9215230A patent/JPH1153206A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3719509B2 (ja) | シリアル演算パイプライン、演算装置、算術論理演算回路およびシリアル演算パイプラインによる演算方法 | |
| US5946361A (en) | Viterbi decoding method and circuit with accelerated back-tracing and efficient path metric calculation | |
| JP4885422B2 (ja) | ガロア拡大体線形変換器 | |
| JP3570188B2 (ja) | 可変長符号処理機構を有するデータ処理装置 | |
| US6754870B2 (en) | CRC operation unit and CRC operation method | |
| JP3274668B2 (ja) | 演算処理装置及び演算処理方法 | |
| US7571370B2 (en) | Configurable, fast, 32-bit CRC generator for 1-byte to 16-bytes variable width input data | |
| US5742621A (en) | Method for implementing an add-compare-select butterfly operation in a data processing system and instruction therefor | |
| JP2682264B2 (ja) | プログラムカウンタ装置 | |
| US20040021591A1 (en) | Processor, encoder, decoder, and electronic apparatus | |
| US7124351B2 (en) | Software instructions utilizing a hardwired circuit | |
| US20020002694A1 (en) | Coding apparatus | |
| EP0936537B1 (en) | Cyclic redundancy check in a computer system | |
| JP2793342B2 (ja) | 演算処理装置 | |
| JPH1153206A (ja) | プロセッサ | |
| JP3607116B2 (ja) | 演算処理装置 | |
| JP4567753B2 (ja) | パリティ生成回路、計数回路および計数方法 | |
| JPH06103035A (ja) | 擬似乱数を生成する方法および装置 | |
| JPH10320221A (ja) | プロセッサ | |
| AU700454B2 (en) | Jump prediction | |
| JPWO2019030860A1 (ja) | 誤り検出用冗長ビットの生成方法および装置 | |
| JP3707729B2 (ja) | アドレス生成インターロック検出方法およびシステム | |
| JP3252029B2 (ja) | 符号化装置及び符号化方法 | |
| JP2000081989A (ja) | プロセッサおよび該プロセッサを用いた巡回符号化処理方法 | |
| US7039795B2 (en) | System and method for using a two-stage multiplexing architecture for performing combinations of passing, rearranging, and duplicating operations on data |