(57)【特許請求の範囲】
【請求項１】
Ｍ系列の擬似乱数系列を発生させるためのフィードバックシフトレジスタ回路において、
入力されるデータを１ビット単位でシフトする１シフト回路と、
入力されるデータをｎ（ｎは２のべき乗で２以上の自然数）ビット単位でシフトするｎシフト回路と、
前記１シフト回路の出力と前記ｎシフト回路の出力とのいずれか一方を選択して出力する選択回路と、
該選択回路から出力されるデータを内部保持してシフトデータとして出力するとともに、該シフトデータを前記１シフト回路及び前記ｎシフト回路の入力にフィードバックするシフトデータ生成回路と、
前記選択回路での前記ｎシフト回路の出力の選択回数を所望のシフト数をｎで除算した整数解の数に設定するとともに、前記１シフト回路の出力の選択回数を前記除算で生じた余りの数に設定する選択制御回路と、
前記シフトデータ生成回路から出力されるシフトデータを所定のタイミングでラッチし、出力データとして外部に出力するラッチ回路とを備えたことを特徴とするフィードバックシフトレジスタ回路。
【請求項２】
前記ラッチ回路は、前記出力データを１周期（２m−１）ビットのＭ系列の疑似乱数系列のうちのｍビットのデータとして出力することを特徴とする請求項１記載のフィードバックシフトレジスタ回路。
【請求項３】
前記シフトデータ生成回路は、前記Ｍ系列の擬似乱数系列を発生するための特性多項式の次数に応じたｍ個の並列接続されたフリップフロップを有し、前記選択回路の出力を内部状態として保持し、その内部状態をｍビットの信号として出力するとともに、該ｍビットの信号を前記１シフト回路及び前記ｎシフト回路の入力にフィードバックするｍ段フリップフロップ回路を備えたことを特徴とする請求項１または２記載のフィードバックシフトレジスタ回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フィードバックシフトレジスタ回路に関し、特に、Ｍ系列の擬似乱数系列を発生させるためのフィードバックシフトレジスタ回路に関する。
【０００２】
【従来の技術】
従来、スペクトル拡散変調を用いた通信方式においては、符号分割多元接続（Code Division Multiple Access）によって、多数の信号のスペクトルを広帯域に拡散させ、多重化（暗号化）して伝送するものが知られている。この通信方式では、送信データの多重化のために送信データ系列に擬似乱数を排他的論理和で足し込む処理を行う。この場合、擬似乱数系列（疑似雑音系列）として、一般的にＭ系列が利用されている。
【０００３】
Ｍ系列の擬似乱数系列は、図９に示すように、ｍ段のフリップフロップを備えたフィードバックシフトレジスタによって生成することができる。フリップフロップの段数ｍは、Ｍ系列発生のための多項式の次数に応じた値とされる。
【０００４】
フィードバックシフトレジスタ１００は、セレクタ１０１-1〜１０１-mを備え、このセレクタ１０１-1〜１０１-mは、フリップフロップ１０２-1〜１０２-mへの入力データを切り替える。
【０００５】
各セレクタ１０１-1〜１０１-mへの入力の一つである初期値データＤINITは、ｍビットのバス信号であり、初期値データＤINITの各ビットＤINIT-1〜ＤINIT−mが各々セレクタ１０１-1〜１０１-mへ入力される。
【０００６】
初期値設定信号ＳSET＝“１”のとき、セレクタ１０１-1〜１０１-mは、各々対応する初期値データＤINITの各ビットＤINIT-1〜ＤINIT−mを選択する。初期値設定信号ＳSET＝“０”のとき、セレクタ１０１-1〜１０１-mは、前段のフリップフロップ１０２-1〜１０２-(m-1)の出力を選択し、セレクタ１０１-1は、演算回路２２１の出力を選択する。
【０００７】
フリップフロップ１０２-1〜１０２-(m-1)は、クロックＣＫが供給されると、前段のセレクタ１０１-1〜１０１-(m-1)からの出力を内部状態として保持するとともに、内部状態を次段のセレクタ１０１-2〜１０１-m及び演算回路２２１内の乗算器２２２-1〜２２２-(m-1)へ出力する。
【０００８】
フリップフロップ１０２-mは、クロックＣＫが供給されると、前段のセレクタ１０１-mからの出力を内部状態として保持するとともに、内部状態をシフト結果データＤRES及び演算回路２２１内の乗算器２２２-mへ出力する。
【０００９】
演算回路２２１は、フリップフロップ１０２-1への戻り値を算出する。この演算回路２２１は、ｍ個の乗算器２２２-1〜２２２-mと（ｍ−１）個の加算器２２３-1〜２２３-(m-1)により構成される。乗算器は、ＡＮＤ回路（論理積回路）によって、加算器は、ＥＸＯＲ回路（排他的論理和回路）によって実現できる。
【００１０】
各乗算器２２２-1〜２２２-mへの入力の一つであるフィードバック係数ＦＢは、周期（２m−１）となるＭ系列を生成するためのフリップフロップ１０２-1へのフィードバック値を決定するための係数であり、ｍビットのバス信号である。フィードバック係数ＦＢの各ビットをＦＢ-1〜ＦＢ-mとする。
【００１１】
乗算器２２２-1〜２２２-mには、各々、被乗算値として、フリップフロップ１０２-1〜１０２-(m-1)の出力が入力され、乗算値としてフィードバック係数ＦＢの各ビットＦＢ-1〜ＦＢ-mが入力される。
【００１２】
乗算器２２２-1〜２２２-mの出力が（ｍ−１）個の加算器２２３-1〜２２３-(m-1)に入力され、乗算器２２２-1〜２２２-m全体の排他的論理和が算出される。算出結果は、フリップフロップ１０２-1へのフィードバック値として出力される。
【００１３】
次に、図９に示したフィードバックシフトレジスタの動作について説明する。
【００１４】
初期値設定信号ＳSET＝“１”のとき、セレクタ１０１-1〜１０１-mは、初期値データＤINITの各ビットＤINIT-1〜ＤINIT−mを選択し、フリップフロップ１０２-1〜１０２-(m-1)へ出力する。フリップフロップ１０２-1〜１０２-(m-1)は、クロックＣＫが供給されると、前段のセレクタ１０１-1〜１０１-(m-1)から出力される初期値データＤINITの各ビットＤINIT-1〜ＤINIT−mを内部状態として保持する。
【００１５】
初期値データＤINITの設定以後、フリップフロップ１０２-1〜１０２-(m-1)は、前段のフリップフロップ１０２-1〜１０２-(m-1)の出力を内部状態として保持し、フリップフロップ１０２-1は、演算回路２２１の出力を内部状態として保持する。フリップフロップ１０２-mの出力が、順次シフト結果データＤRESとして出力される。シフト結果データＤRESがＭ系列である。
【００１６】
【発明が解決しようとする課題】
上記従来のフィードバックシフトレジスタ１００においては、クロックが１回供給される度にフリップフロップ１０２-1〜１０２-mの内部状態が1ビットシフトしていくので、位相をずらしたＭ系列が必要となる場合には、位相シフト量に対応する回数のクロックが供給されるまで所望するＭ系列が出力されないという問題点があった。
【００１７】
また、フィードバックシフトレジスタ１００では、１周期(２m−１)ビットのＭ系列を1ビットづつ出力しているため、暗号元の送信データ系列の伝送速度と同じ処理速度を確保する必要があり、結果としてフィードバックシフトレジスタ１００に高速動作が要求されるという問題点があった。
【００１８】
そこで、本発明の目的は、少ないクロック数で所望する位相シフト量に対応するＭ系列の疑似乱数系列を生成することができ、また、シフト結果データＤRESの出力先である暗号元の送信データ系列の処理速度よりも内部処理速度を低速動作させることが可能なフィードバックシフトレジスタを提供することを目的とする。
【００１９】
【課題を解決するための手段】
上記課題を解決するため、本発明にかかるＭ系列の擬似乱数系列を発生させるためのフィードバックシフトレジスタ回路は、入力されるデータを１ビット単位でシフトする１シフト回路と、入力されるデータをｎ（ｎは２のべき乗で２以上の自然数）ビット単位でシフトするｎシフト回路と、前記１シフト回路の出力と前記ｎシフト回路の出力とのいずれか一方を選択して出力する選択回路と、該選択回路から出力されるデータを内部保持してシフトデータとして出力するとともに、該シフトデータを前記１シフト回路及び前記ｎシフト回路の入力にフィードバックするシフトデータ生成回路と、前記選択回路での前記ｎシフト回路の出力の選択回数を所望のシフト数をｎで除算した整数解の数に設定するとともに、前記１シフト回路の出力の選択回数を前記除算で生じた余りの数に設定する選択制御回路と、前記シフトデータ生成回路から出力されるシフトデータを所定のタイミングでラッチし、出力データとして外部に出力するラッチ回路とを備えたことを特徴とする。
【００２１】
また、前記ラッチ回路は、前記出力データを１周期（２m−１）ビットのＭ系列の疑似乱数系列のうちのｍビットのデータとして出力するようにしてもよい。
【００２２】
さらに、前記シフトデータ生成回路は、前記Ｍ系列の擬似乱数系列を発生するための特性多項式の次数に応じたｍ個の並列接続されたフリップフロップを有し、前記選択回路の出力を内部状態として保持し、その内部状態をｍビットの信号として出力するとともに、該ｍビットの信号を前記１シフト回路及び前記ｎシフト回路の入力にフィードバックするｍ段フリップフロップ回路を備えるようにしてもよい。
【００２４】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照しながら詳細に説明する。まず、具体的な実施形態の説明に先立ち、本発明にかかるフィードバックシフトレジスタ回路の動作原理について説明する。
【００２５】
本実施形態は、ｍ段フィードバックシフトレジスタの内部状態に対してフィードバックシフト動作を１回実行した後の各フリップフロップの内部状態を算出する回路と、ｍ段フィードバックシフトレジスタの内部状態に対してフィードバックシフト動作をｎ回（ｎ＝２x、ｎ≧２）実行した後の各フリップフロップの内部状態を算出する回路を有することを主な特徴とし、１クロックで１回シフトする動作と、１クロックでｎ回シフトする動作を組み合わせることによって、従来よりも少ないクロック数で所望する位相シフト量に対するＭ系列の疑似乱数系列を生成するものである。
【００２６】
例えば、位相をｊ（ｊ≧ｎ）シフトさせたＭ系列を算出するため、１クロックでｎシフトする動作を、
ＩＮＴ（ｊ／ｎ）  ［回］
（ここで、ＩＮＴ（Ｘ）は、Ｘの整数部分を表す。）
行い、１クロックで１シフトする動作を、
ｊ−｛ｎ×ＩＮＴ（ｊ／ｎ）｝  ［回］
行うことにより実現する。
【００２７】
より具体的には、ｎ＝４と設定した場合、位相をｊ＝１５シフトさせたＭ系列を算出するため、１クロックで４シフトする動作を、
ＩＮＴ（ｊ／４）
＝ＩＮＴ（１５／４）
＝ＩＮＴ（３．７５）
＝３  ［回］
行い、残りの
ｊ−｛ｎ×ＩＮＴ（ｊ／４）｝
＝１５−｛４×ＩＮＴ（１５／４）｝
＝１５−｛４×ＩＮＴ（３．７５）｝
＝１５−｛４×３｝
＝３
回分は１クロックで１シフトする動作を行うことによって、ｊ＝１５シフト後のＭ系列を算出する。
【００２８】
また、本実施形態では、ｍ段フィードバックシフトレジスタの内部状態をバス信号として外部に出力する。従って、ｍ段フィードバックシフトレジスタは、フリップフロップのｍ段目の値を順次出力しているので、ある時刻ｔにおいてｍ段目の値が出力されると、次の時刻（ｔ＋１）では、時刻ｔ時点における（ｍ−１）段目の値が出力され、時刻（ｔ＋２）では時刻ｔ時点での（ｍ−２）段目の値が出力される。よって、ある時刻ｔにおけるｍ段フィードバックシフトレジスタの内部状態をｍビットのバス信号として出力すれば、時刻ｔ〜時刻（ｔ＋ｍ）までのＭ系列が得られる。
【００２９】
さらに、本実施形態では、任意の位相シフト量に対するＭ系列を生成することができるので、ｍビットのＭ系列を一旦生成した後、そのときのｍ段フィードバックシフトレジスタの内部状態に対してｍシフト後の内部状態を算出してｍビットのＭ系列として出力するという動作を繰り返す。これにより、従来の回路においてＭ系列を順次出力した場合と同じＭ系列がｍビットづつ得られる。従って、１周期（２m−１）ビットのＭ系列をｍビットづつ出力することができ、フィードバックシフトレジスタの内部動作を暗号元の送信データの伝送速度に合わせて高速化する必要がなくなる。
【００３０】
次に、本発明にかかるフィードバックシフトレジスタ回路の具体的な実施の形態について説明する。
【００３１】
図１は、本発明にかかるフィードバックシフトレジスタ回路の一実施形態を示す概要構成図である。尚、本発明に入力される初期値設定信号ＳSET、初期値データＤINIT、フィードバック係数ＦＢは、信号の機能、ビット幅等において従来回路へ入力される信号と同等であるものとする。
【００３２】
フィードバックシフトレジスタ２００は、大別すると、制御回路２１０、１シフト回路２２０、ｎシフト回路２３０、第１セレクタ２４０、第２セレクタ２５０、ｍ段フリップフロップ回路２６０及びラッチ回路２７０を備えている。
【００３３】
制御回路２１０は、フィードバックシフトレジスタ２００を構成する各回路の動作を制御する。
【００３４】
１シフト回路２２０は、ｍ段フリップフロップ２６０の出力であるシフトデータＳＤ-1〜ＳＤ-m及びフィードバック係数ＦＢ-1〜ＦＢ-mに基づいて、シフトデータＳＤ-1〜ＳＤ-mに対してフィードバックシフト動作を１回実行した後（１ビットシフト後）の値を算出する。
【００３５】
ｎシフト回路２３０は、ｍ段フリップフロップ２６０の出力であるシフトデータＳＤ-1〜ＳＤ-mとフィードバック係数ＦＢ-1〜ＦＢ-mに基づいて、シフトデータＳＤ-1〜ＳＤ-mに対してフィードバックシフト動作をｎ回実行した後の値を算出する。ここで、ｎの値は、ｎ＝２xとなる２以上の整数であり、ｎシフト回路２３０の処理遅延がクロックＣＫの周期よりも小さくなる範囲であれば任意に設定することができる。
【００３６】
第１セレクタ２４０は、シフト数ＳＦＮに基づいて１シフト動作とｎシフト動作を切り替える。第２セレクタ２５０は、ｍ段フリップフロップ２６０への入力を第１セレクタ２４０の出力あるいは初期値データＤINITのいずれかとする。ｍ段フリップフロップ回路２６０は、初期値設定信号ＳSETが“１”のときにクロックＣＫが供給されると、第２セレクタ２５０から出力される初期値データＤINIT-1〜ＤINIT-mを内部状態として保持する。また、ｍ段フリップフロップ回路２６０は、制御回路２１０から出力されるイネーブル信号ＳENが“１”のときにクロックＣＫが供給されると、第２セレクタ２５０から出力される第１セレクタ２４０の出力を内部状態として保持する。ラッチ回路２７０は、シフト数ＳＦＮにより設定された回数のフィードバックシフト動作を実行し、得られたシフト結果を出力データＤＲとして外部に出力する。
【００３７】
ここで、フィードバックレジスタ２００の概要動作について説明する。フィードバックレジスタ２００の制御回路２１０は、シフト数設定信号ＳＮSETが“１”のときにクロックＣＫが供給されると、シフト数ＳＦＮの値を取り込み、取り込んだシフト数ＳＦＮに基づいて、第１セレクタ２４０において１シフト回路２２０からの入力である１シフト結果データＤS1Rあるいはｎシフト回路２３０からの入力であるｎシフト結果データＤSnRのいずれかを選択的に切り替えて出力するための切替制御信号となるシフト数制御信号ＳＦＣを生成する。
【００３８】
同様に、制御回路２１０は、ｍ段フリップフロップ回路２６０において入力値を保持するタイミングを制御するイネーブル信号ＳEN及びラッチ回路２７０において入力値を保持するタイミングを制御するラッチ信号ＬＴを生成する。
【００３９】
１シフト回路２２０は、ｍ段フリップフロップ２６０の出力であるシフトデータＳＤ-1〜ＳＤ-m及びフィードバック係数ビットＦＢ-1〜ＦＢ-mに基づいて、シフトデータＳＤ-1〜ＳＤ-mに対してフィードバックシフト動作を１回実行した後の値を算出し、得られた算出結果を１シフト結果データＤS1Rとして第１セレクタ２４０へ出力する。
【００４０】
ｎシフト回路２３０は、ｍ段フリップフロップ２６０の出力であるシフトデータＳＤ-1〜ＳＤ-m及びフィードバック係数ＦＢ-1〜ＦＢ-mに基づいて、シフトデータＳＤ-1〜ＳＤ-mに対してフィードバックシフト動作をｎ回実行した後の値を算出し、算出結果をｎシフト結果データＤSｎRとして第１セレクタ２４０へ出力する。
【００４１】
第１セレクタ２４０は、シフト数ＳＦＮにより１シフト動作とｎシフト動作を切り替える機能を有する。制御回路２１０から出力されるシフト数制御信号ＳＦＣが１のとき、ｎシフト回路２３０の出力を選択し、シフト数制御信号ＳＦＣが０のとき、１シフト回路２２０の出力を選択して第２セレクタ２５０に選択結果を出力する。
【００４２】
第２セレクタ２５０は、ｍ段フリップフロップ２６０への入力を切り替える機能を有する。初期値設定信号ＳSETが１のとき、初期値データＤINITを選択し、初期値設定信号ＳSETが０のとき、第１セレクタ２４０の出力を選択してｍ段フリップフロップ２６０に出力する。
【００４３】
図２は、ｍ段フリップフロップ２６０の概要構成ブロック図である。ｍ段フリップフロップ２６０は、大別すると、フリップフロップ２６１-1〜２６１-mが並列接続されている。
【００４４】
ｍ段フリップフロップ２６０のフリップフロップ２６１-1〜２６１-mは、初期値設定信号ＳSET＝“１”がロード端子Ｌｏａｄに供給され、かつ、クロックＣＫがクロック端子ＣＫＴに供給されると、第２セレクタ２５０から出力され、各データ端子Ｄａｔａに入力される初期値データＤINIT-1〜ＤINIT-mを内部状態として保持する。
【００４５】
そして、図１に示す制御回路２１０から出力されるイネーブル信号ＳENが“１”のときにクロックＣＫが供給されると、第２セレクタ２５０から出力される第１セレクタ２４０の出力を内部状態として保持する。
【００４６】
フリップフロップ２６１-1〜２６１-mは、当該フリップフロップ２６１-1〜２６１-mの内部状態をシフトデータビットＳＤ-1〜ＳＤ-mとして出力する。ｍビットのバス信号として構成されるシフトデータＳＤは、ラッチ回路２７０に出力されるとともに、１シフト回路２２０及びｎシフト回路２３０へフィードバックされる。
【００４７】
ラッチ回路２７０は、シフト数ＳＦＮにより設定された回数のフィードバックシフト動作を実行し、得られたシフト結果出力データＤＲとして外部に出力する。ラッチ回路２７０は、制御回路２１０から出力されるラッチ信号ＬＴが“１”のときにクロックＣＫが供給されると、ｍ段フリップフロップ２６０の出力を保持し、シフト結果出力データＤＲとして出力する。シフト結果出力データＤＲは、１周期（２m−１）ビットのＭ系列のうちのｍビットである。
【００４８】
以下、本実施形態における各部の詳細構成及び詳細動作を説明する。
【００４９】
図３は、制御回路２１０の構成例を示すブロック図である。図３では、一例として、ｎシフト回路２３０（図１参照）でのシフト量ｎ＝４であり、シフト数ＳＦＮが８ビット幅の２進値信号である場合の回路構成を示している。
【００５０】
制御回路２１０は、大別すると、第１ダウンカウンタ２１１、第１比較器２１２、第２比較器２１３、第１ＡＮＤ回路２１４、第２ダウンカウンタ２１５、第３比較器２１６、ＯＲ回路２１７、フリップフロップ２１８及び第２ＡＮＤ回路２１９を備えている。
【００５１】
第１ダウンカウンタ２１１は、シフト数ＳＦＮとして設定されたシフト量のシフト動作を実行するため、ｎシフト動作を何回実行する必要があるのかを求めるために使用する。シフト数設定信号ＳＮSETが“１”のときにクロックＣＫが供給されると、シフト数ＳＦＮの上位ビットを内部状態として保持する。ここで、上位ビットとは、８ビットのシフト数ＳＦＮについてＭＳＢを７ビットとし、ＬＳＢを０ビットとした場合のＭＳＢからｘビット（２x＝ｎ）までを指すものとする。従って、図３の場合には、ＭＳＢから２ビットまでが上位ビットに当たる。これと並行して、第１ダウンカウンタ２１１は、第１比較器２１２の出力が“１”である間、クロックＣＫが供給される毎にデクリメントカウントを実行する。
【００５２】
第１比較器２１２は、第１ダウンカウンタ２１１が動作中かどうかをモニタする。第１比較器２１２は、第１ダウンカウンタ２１１の出力が“０”であるか否かを判別し、第１ダウンカウンタ２１１の出力が“０”でない場合には、シフト数制御信号ＳＦＣ＝“１”としてＯＲ回路２１７、第１ダウンカウンタ２１１に出力する。本実施形態においては、シフト数制御信号ＳＦＣが“１”である期間、ｎシフト動作を行うこととなる。
【００５３】
第２比較器２１３は、第１ダウンカウンタ２１１の動作終了タイミング（動作終了時点）を検出する。第２比較器２１３は、第１ダウンカウンタ２１１の出力が“０”であるか否かを判別し、“０”であると判別したとき、第１ＡＮＤ回路２１４に、第１ダウンカウンタ２１１の動作終了タイミングであることを表す“１”を出力する。
【００５４】
第１ＡＮＤ回路２１４は、第２ダウンカウンタ２１５の動作を制御する信号を生成する。第２比較器２１３の出力及び第３比較器２１６の出力がともに“１”であるとき、第１ＡＮＤ回路２１４は、第２ダウンカウンタ２１５に“１”を出力する。第１ＡＮＤ回路２１４の出力により、第２ダウンカウンタ２１５は、第１ダウンカウンタ２１１のデクリメントカウント終了後から、第２ダウンカウンタ２１５の内部状態、すなわち、第２ダウンカウンタ２１５の値＝０（カウントダウン終了値）になるまで動作するように制御される。
【００５５】
第２ダウンカウンタ２１５は、シフト数ＳＦＮとして設定された回数のシフト動作を行うため、１シフト動作を何回実行する必要があるのかを求めるために使用する。シフト数設定信号ＳＮSETが“１”のときにクロックＣＫが供給されると、シフト数ＳＦＮの下位ビットを内部状態として保持する。ここで、下位ビットとは、８ビットのシフト数ＳＦＮについてＭＳＢを７ビットとし、ＬＳＢを０ビットとした場合の（ｘ−１）ビット（２x＝ｎ）からＬＳＢまでを指す。図３の例では、１ビットからＬＳＢまでが下位ビットに当たる。
【００５６】
そして、第２ダウンカウンタ２１５は、第１ＡＮＤ回路２１４の出力が“１”である間、クロックＣＫが供給される毎にデクリメントカウントを実行する。詳細には、第２比較器２１３の出力が“１”のときにクロックＣＫが供給されるとデクリメントカウントを開始し、第３比較器２１６の出力が“１”である間、クロックＣＫが供給される毎にデクリメントカウントを実行する。
【００５７】
第３比較器２１６は、第２ダウンカウンタ２１５が動作中か否かをモニタする。第３比較器２１６は、第２ダウンカウンタ２１５の出力値＝０であるか否かを判別し、第２ダウンカウンタ２１５の出力値≠０のとき、すなわち、第２ダウンカウンタ２１５動作期間中に第１ＡＮＤ回路２１４及びＯＲ回路２１７に“１”を出力する。
【００５８】
ＯＲ回路２１７は、ｍ段フリップフロップ２６０の動作を制御する信号を生成する。第１比較器２１２の出力及び第３比較器２１６の出力の少なくともいずれか一方が“１”の場合に、イネーブル信号ＳEN及びフリップフロップ２１８に“１”を出力する。
【００５９】
これらの結果、第１比較器２１２からは１クロックでフィードバックシフト動作をｎ回実行する必要がある期間中、“１”が出力される。一方、第３比較器２１６からは１クロックでフィードバックシフト動作を１回実行する必要がある期間中、“１”分１が出力される。
【００６０】
従って、第１比較器２１２の出力と、第３比較器２１６の出力の論理和（ＯＲ）をＯＲ回路２１７により求めることにより、ｍ段フリップフロップを動作させる必要のある期間が求められる。
【００６１】
第２ＡＮＤ回路２１９は、ラッチ回路２７０においてデータを保持するタイミングを制御するラッチ信号ＬＴを生成する。第２ＡＮＤ回路２１９は、ＯＲ回路２１７の反転信号と、フリップフロップ２１８から出力されるＯＲ回路２１７の出力が１クロック遅延分した信号がともに“１”のとき、ラッチ信号ＬＴとして“１”を出力する。第２ＡＮＤ回路２１９により、イネーブル信号ＳENが“１”→“０”に変化した変化点からクロックＣＫで１周期分、ラッチ信号ＬＴは“１”を出力することとなる。
【００６２】
図４は、１シフト回路２２０（図１参照）の一例を示す概要構成ブロック図である。図４では、ｍ段フリップフロップ２６０（図１参照）の段数ｍ＝６４とした場合の１シフト回路２２０の構成を示している。
【００６３】
演算回路２２１の内部構成は、図９に示した演算回路２２１と同じであるため図示を省略する。乗算器２２２-1〜２２２-64には各々、被乗算値としてｍ段フリップフロップ２６０の出力であるシフトデータＳＤ-1〜ＳＤ-64が入力され、乗算値としてフィードバック係数ＦＢ-1〜ＦＢ-64が入力される。乗算器２２２-1〜２２２-64の出力が６３個の加算器２２３-1〜２２３-(m-1)に入力され、乗算器２２２-1〜２２２-64全体の排他的論理和が算出される。演算回路２２１の出力が１シフト結果データＤS1R-1として出力される。１シフト結果データＤS1R（２）〜ＤS1R-64からは、シフトデータＳＤ-1〜ＳＤ-63の値が出力される。１シフト結果データＤS1R-1〜ＤS1R-64が、シフトデータＳＤ-1〜ＳＤ-64に対してフィードバックシフト動作を１回実行した後のｍ段フリップフロップ２６０内の各フリップフロップ２６１-1〜２６１-mの内部状態となる。
【００６４】
ｎシフト回路２３０（図１参照）は、図４に示した演算回路２２１をｎ個（演算回路２２１-1〜２２１（ｎ））接続して構成する。図６は、ｍ段フリップフロップ２６０の段数ｍ＝６４とし、ｎシフト回路２３０でのシフト量ｎ＝４とした場合のｎシフト回路２３０の構成を示すブロック図である。そのため、図１のｎシフト結果データＤSｎRに当たる信号を４シフト結果ＤS4Rとして説明する。
【００６５】
演算回路２２１-1では、各乗算器への被乗算値として、ｍ段フリップフロップ２６０（図１参照）の出力であるシフトデータＳＤ-1〜ＳＤ-64が入力され、乗算値としてフィードバック係数ＦＢ-1〜ＦＢ-64が入力される。演算回路２２１-1の出力は、演算回路２２１-2〜２２１-4及び４シフト結果ＤS4R-4に出力される。
【００６６】
演算回路２２１-2では、乗算器２２２-1（図９参照）への被乗算値として演算回路２２１-1の出力が入力され、乗算器２２２-2〜２２２-64への被乗算値としてシフトデータＳＤ-1〜ＳＤ-63が入力される。乗算器２２２-1〜２２２-64への乗算値としてはフィードバック係数ビットＦＢ-1〜ＦＢ-64が入力される。演算回路２２１-2の出力は、演算回路２２１-3〜２２１-4へと出力されるとともに、４シフト結果ＤS4R-3として出力される。
【００６７】
演算回路２２１-3では、乗算器２２２-1への被乗算値として演算回路２２１-2の出力が入力され、乗算器２２２-2への被乗算値として演算回路２２１-1の出力が入力され、乗算器２２２-3〜２２２-64への被乗算値としてシフトデータＳＤ-1〜ＳＤ-62が入力される。乗算器２２２-1〜２２２-64への乗算値としては、フィードバック係数ＦＢ-1〜ＦＢ-64が入力される。演算回路２２１-3の出力は、演算回路２２１-4及び４シフト結果ＤS4R-2に出力される。
【００６８】
演算回路２２１-4では、乗算器２２２-1への被乗算値として演算回路２２１-3の出力が入力され、乗算器２２２-2への被乗算値として演算回路２２１-2の出力が入力され、乗算器２２２-3への被乗算値として演算回路２２１-1の出力が入力され、乗算器２２２-4〜２２２-64への被乗算値としてシフトデータＳＤ-1〜ＳＤ-61が入力される。乗算器２２２-1〜２２２-64への乗算値としては、フィードバック係数ＦＢ-1〜ＦＢ-64が入力される。演算回路２２１-4の出力は、４シフト結果ＤS4R-1として出力される。
【００６９】
４シフト結果ＤS4R-5〜ＤS4R-64からは、シフトデータＳＤ-1〜Ｄ-60の値が出力される。
【００７０】
４シフト結果ＤS4R-1〜ＤS4R-64が、シフトデータＳＤ-1〜ＳＤ-64に対してフィードバックシフト動作を４回実行した後のｍ段フリップフロップ２６０内の各フリップフロップ２６１-1〜２６１-mの内部状態となる。
【００７１】
以上の説明においては、ｎ＝４の場合を例として説明したが、ｎが４以外の場合には、演算回路２２１をｎ個使用し、上述した規則と同様に信号線を接続すれば、シフトデータＳＤ-1〜ＳＤ-mに対してフィードバックシフト動作をｎ回実行した後のフリップフロップ２６１の内部状態を算出することができる。
【００７２】
以下、上記フィードバックシフトレジスタ回路の動作について説明する。
【００７３】
図６乃至図８は、図１に示すｍ段フリップフロップ２６０の段数ｍ＝６４とし、ｎシフト回路２３０でのシフト量ｎ＝４、シフト数ＳＦＮが８ビット幅の２進値信号である場合の回路動作を示すタイミングチャートである。
【００７４】
まず、回路全体の基本動作について図６のタイミングチャートを用いて説明する。
【００７５】
図６は、シフト数ＳＦＮ＝５が入力された場合のタイミングチャートである。
【００７６】
初期値設定信号ＳSETが“１”のときにクロックＣＫが供給されると、ｍ段フリップフロップ２６０は内部状態として初期値データＤINITの値を保持し、シフトデータＳＤから初期値が出力される。
【００７７】
シフト数設定信号ＳＮSETが“１”のときにクロックＣＫが供給されると、制御回路２１０においてシフト数ＳＦＮが取り込まれ、シフト数制御信号ＳＦＣ及びイネーブル信号ＳENが生成される。
【００７８】
１シフト回路２２０では、シフトデータＳＤ（＝初期値）に対してフィードバックシフト動作を１回実行した後の値（＝１シフト後の値）を算出する。
【００７９】
ｎ（＝４）シフト回路２３０では、シフトデータＳＤ（＝初期値）に対してフィードバックシフト動作をｎ＝４回実行した後の値（＝４シフト後の値）を算出する。
【００８０】
このとき、シフト数制御信号ＳＦＣが１であるため、第１セレクタ２４０において、ｎ（＝４）シフト回路２３０の出力（＝４シフト後の値）が選択され、ｍ段フリップフロップ２６０に出力される。
【００８１】
イネーブル信号ＳENが“１”のときにクロックＣＫが供給されると、ｍ段フリップフロップ２６０は、内部状態として第１セレクタ２４０の出力（＝４シフト後の値）が第２セレクタ２５０を介して入力されて保持するとともに、シフトデータＳＤとして出力する。
【００８２】
１シフト回路２２０では、シフトデータＳＤ（＝４シフト後の値）に対してさらにフィードバックシフト動作を１回実行した後の値（＝５シフト後の値）を算出する。
【００８３】
ｎ（＝４）シフト回路２３０では、シフトデータＳＤ（＝４シフト後の値）に対してフィードバックシフト動作を４回実行した後の値（＝８シフト後の値）を算出する。
【００８４】
このとき、シフト数制御信号ＳＦＣ＝“０”、すなわち、１シフト回路２２０側が選択されたため、第１セレクタ２４０において、１シフト回路２２０の出力（＝５シフト後の値）が選択され、ｍ段フリップフロップ２６０に出力される。
【００８５】
イネーブル信号ＳEN＝“１”のときにクロックＣＫが供給されると、ｍ段フリップフロップ２６０は内部状態として第１セレクタ２４０の出力（＝５シフト後の値）を保持するとともに、シフトデータＳＤとして出力する。ｍ段フリップフロップ２６０の内部状態がシフト数ＳＦＮに設定された５シフト後の値になると、制御回路２１０からラッチ信号ＬＴが出力される。
【００８６】
ラッチ信号ＬＴ＝“１”のときにクロックＣＫが供給されると、ラッチ回路２７０において、シフトデータＳＤの値（＝５シフト後の値）が保持され、シフト結果出力データＤＲとして出力される。シフト結果出力データＤＲは、１周期（２m−１）ビットで位相シフト量５のＭ系列の１〜ｍビット分に当たる。
【００８７】
すなわち、本実施形態によれば、図６に示したように、ｍ段フリップフロップ２６０に初期値が設定されてから３クロック後に初期値に対する５シフト後のＭ系列が出力される。従来技術で同様の値を得るためには５クロック分のクロック供給が必要であるから、本実施形態により処理遅延が短縮されたことが判る。従って、本実施形態では、シフト数が大きくなる程、従来技術に対する処理遅延短縮量が大きくなることがわかる。
【００８８】
以上が実施形態の基本動作例である。そして、本実施形態によれば、任意の位相シフト量に対するＭ系列をｍビットづつ生成するため、図６の一連の動作終了後、シフト数設定信号ＳＮSET及びシフト数ＳＦＮを再設定し、図６の動作終了時のｍ段フリップフロップ２６０の内部状態を新しい初期値としてフィードバックシフト動作を実施する。
【００８９】
図７に、図６の動作終了後、シフト数ＳＦＮに８を設定した場合のタイミングチャートを示す。
【００９０】
本実施形態では、１周期（２m−１）ビットのＭ系列をｍビットづつ出力していくため、初めに任意の位相シフト後のｍビットのＭ系列を出力した後のシフト数ＳＦＮには、ｍを再設定する必要があるが、ここでは回路動作の説明が目的であるため、例としてシフト数ＳＦＮに８を設定した場合の動作を示す。図７において、時刻Ａまでの動作は図６の場合と同様であるので、その詳細な説明を省略する。
【００９１】
ｍ段フリップフロップ２６０において、内部状態の更新を行うのは、イネーブル信号ＳEN＝“１”のときにクロックＣＫが供給されたときのみである。従って、シフト数ＳＦＮに設定されたシフト分の動作が終了すると、イネーブル信号ＳEN＝“０”になるように構成されている本実施形態では、シフト終了時の値がｍ段フリップフロップ２６０の内部状態として保持される。より具体的には、図７においては、シフト終了後、ｍ段フリップフロップ２６０の内部状態として５シフト後の値が保持される。
【００９２】
時刻Ａを経過後、所定のタイミングでシフト数ＳＦＮ＝８が設定され、シフト数設定信号ＳＮSET＝“１”になると、ｍ段フリップフロップ２６０に保持されている５シフト後の値を新しい初期値としてフィードバックシフト動作を行う。
【００９３】
シフト数設定信号ＳＮSET＝“１”のときにクロックＣＫが供給されると、制御回路２１０においてシフト数ＳＦＮが取り込まれ、シフト数制御信号ＳＦＣ及びイネーブル信号ＳENが生成される。
【００９４】
１シフト回路２２０では、シフトデータＳＤ（＝５シフト後の値）に対してフィードバックシフト動作を１回実行した後の値（＝６シフト後の値）を算出する。
【００９５】
ｎ（＝４）シフト回路２３０では、シフトデータＳＤ（＝５シフト後の値）に対してフィードバックシフト動作をｎ（＝４）回実行した後の値（＝９シフト後の値）を算出する。
【００９６】
ここで、シフト数制御信号ＳＦＣ＝“１”であるため、第１セレクタ２４０において、４シフト回路２３０の出力（＝９シフト後の値）が選択されて、ｍ段フリップフロップ２６０に出力される。
【００９７】
イネーブル信号ＳEN＝“１”のときにクロックＣＫが供給されると、ｍ段フリップフロップ２６０は内部状態として第１セレクタ２４０の出力（＝９シフト後の値）を保持するとともに、シフトデータＳＤとして出力する。
【００９８】
１シフト回路２２０では、シフトデータＳＤ（＝９シフト後の値）に対してフィードバックシフト動作を１回実行した後の値（＝１０シフト後の値）を算出する。
【００９９】
ｎ（＝４）シフト回路２３０では、シフトデータＳＤ（＝９シフト後の値）に対してフィードバックシフト動作を４回実行した後の値（＝１３シフト後の値）を算出する。
【０１００】
ここで、シフト数制御信号ＳＦＣ＝“１”であるため、第１セレクタ２４０において、ｎ（＝４）シフト回路２３０の出力（＝１３シフト後の値）が選択されｍ段フリップフロップ２６０に出力される。
【０１０１】
イネーブル信号ＳEN＝“１”のときにクロックＣＫが供給されると、ｍ段フリップフロップ２６０は内部状態として第１セレクタ２４０の出力（＝１３シフト後の値）を保持するとともに、シフトデータＳＤとして出力する。
【０１０２】
ｍ段フリップフロップ２６０の内部状態がシフト数ＳＦＮに設定された８シフト後の値になると、制御回路２１０からラッチ信号ＬＴが出力される。ラッチ信号ＬＴが“１”のときにクロックＣＫが供給されると、ラッチ回路２７０においてシフトデータＳＤの値（＝１３シフト後の値）が保持され、シフト結果出力データＤＲとして出力される。
【０１０３】
以上の説明のように、シフト終了後にシフト数設定信号ＳＮSETとシフト数ＳＦＮの再設定を行うと、（１回目に設定したシフト数＋２回目に設定したシフト数）分のシフト動作終了後のｍビット分のＭ系列が得られる。よって、任意の位相シフト量をシフト数ＳＦＮに設定して動作させた後、シフト数ＳＦＮにｍを設定して回路を動作させれば、１回目の動作で任意の位相のずれがあるＭ系列の１〜ｍビット分出力され、２回目の動作で（ｍ＋１）〜（ｍ＋ｍ）ビット分のＭ系列が出力される。これは従来回路で生成するＭ系列と等価なＭ系列となる。
【０１０４】
次に、本実施形態の制御回路２１０の動作について説明する。
【０１０５】
図８は、制御回路２１０の動作を示すタイミングチャートである。図８では、一例として、シフト数ＳＦＮに１５が設定された場合の制御回路２１０の動作を示している。
【０１０６】
シフト数設定信号ＳＮSET＝“１”のときにクロックＣＫが供給されると、第１ダウンカウンタ２１１にシフト数ＳＦＮの２進値（＝００００１１１１）のうちＭＳＢから２ビットまでの値である「００００１１」が設定され、第２ダウンカウンタ２１５にシフト数ＳＦＮの２進値のうち１ビットからＬＳＢまでの値である「１１」が設定される。
【０１０７】
第１比較器２１２は、第１ダウンカウンタ２１１の内部状態が「０００００１」以上となったので、“１”を出力する。また、第３比較器２１６は、第２ダウンカウンタ２１５の内部状態が「０１」以上となったので、“１”を出力する。
【０１０８】
第１ダウンカウンタ２１１は、第１ダウンカウンタ２１１の内部状態が「０００００１」以上であり、第１比較器２１２の出力が“１”である間、クロックＣＫが供給される毎にデクリメントカウントを実行し、第１ダウンカウンタ２１１の内部状態が「００００００」になると、動作を停止する。
【０１０９】
第１ダウンカウンタ２１１の内部状態が「００００００」になると、第１比較器２１２は“０”を出力し、第１ＡＮＤ回路２１４は“１”を出力する。
【０１１０】
第２ダウンカウンタ２１５は、第２ダウンカウンタ２１５の内部状態が「０１」以上であり、第１ＡＮＤ回路２１４の出力が“１”である間、クロックＣＫが供給される毎にデクリメントカウントを実行し、第２ダウンカウンタ２１５の内部状態が「００」になると、動作を停止する。第２ダウンカウンタ２１５の内部状態が「００」になると、第３比較器２１６及び第１ＡＮＤ回路２１４は“０”を出力する。
【０１１１】
シフト数制御信号ＳＦＣは、第１比較器２１２の出力が“１”である間、“１”を出力する。イネーブル信号ＳENは、第１比較器２１２あるいは第３比較器２１６のいずれか一方が“１”である間、“１”を出力する。フリップフロップ２１８は、イネーブル信号ＳENをクロックＣＫの１周期分遅延した信号を出力する。
【０１１２】
従って、制御回路２１０から出力されるラッチ信号ＬＴは、第２ダウンカウンタ２１５の内部状態が「００」になった点からクロックＣＫの１周期分の期間“１”となる。
【０１１３】
以上の説明のように、本実施形態によれば、シフト数ＳＦＮに設定される値がｎシフト回路２３０でのシフト量ｎよりも大きい場合、図１に示す回路を用いて１クロックで１シフトする動作と１クロックでｎシフトする動作を組み合わせてシフト結果を算出することにより、従来よりも短時間で所望する位相シフト量に対するＭ系列を生成することができる。
【０１１４】
また、ｍ段フリップフロップの内部状態をｍビットのバス信号であるシフト結果出力データＤＲとして出力することにより１周期（２m−１）ビットのＭ系列をｍビットづつパラレル出力することになるため、暗号元の送信データの伝送速度に合わせた高速動作が不要となる。
【０１１５】
【発明の効果】
以上説明したように、本発明によれば、従来よりも短時間で所望する位相シフト量に対するＭ系列を生成することができる。また、１周期（２m−１）ビットのＭ系列をｍビットづつパラレル出力することになるため、暗号元の送信データの伝送速度に合わせた高速動作が不要となる。
【図面の簡単な説明】
【図１】図１のフィードバックシフトレジスタ回路の一実施形態を示す概要構成図である。
【図２】図１のフィードバックシフトレジスタ回路のｍ段フリップフロップの概要構成ブロック図である。
【図３】図１のフィードバックシフトレジスタ回路の制御回路の概要構成ブロック図である。
【図４】図１のフィードバックシフトレジスタ回路の１シフト回路の概要構成ブロック図である。
【図５】図１のフィードバックシフトレジスタ回路のｎシフト回路の概要構成ブロック図である。
【図６】図１のフィードバックシフトレジスタ回路の実施形態の動作タイミングチャートである。
【図７】本発明にかかるフィードバックシフトレジスタ回路において、シフト終了後にシフト数ＳＦＮを再設定した場合の動作タイミングチャートである。
【図８】図１のフィードバックシフトレジスタ回路の制御回路２１０の回路動作図である。
【図９】従来のフィードバックシフトレジスタ回路の一例を示す構成図である。
【符号の説明】
１００  フィードバックシフトレジスタ
１０１  セレクタ
１０２  フリップフロップ
２００  フィードバックシフトレジスタ
２１０  制御回路
２１１  第１ダウンカウンタ
２１２  第１比較器
２１３  第２比較器
２１４  第１ＡＮＤ回路
２１５  第２ダウンカウンタ
２１６  第３比較器
２１７  ＯＲ回路
２１８  フリップフロップ
２１９  第２ＡＮＤ回路
２２０  １シフト回路
２２１  演算回路
２２２  乗算器
２２３  加算器
２３０  ｎシフト回路
２４０  第１セレクタ
２５０  第２セレクタ
２６０  ｍ段フリップフロップ
２６１  フリップフロップ
２７０  ラッチ回路
ＳSET   初期値設定信号
ＤINIT  初期値データ
ＦＢ    フィードバック係数
ＣＫ    クロック
ＣKT    クロック端子
ＳＮSET シフト数設定信号
ＳＦＮ  シフト数
ＤＲ    シフト結果出力データ
ＳＦＣ  シフト数制御信号
ＳEN    イネーブル信号
ＬＴ    ラッチ信号
ＤS1R   １シフト結果
ＤSnR   ｎシフト結果
ＳＤ    シフトデータ
【図１】
0004152124.tif 000002
【図２】
0004152124.tif 000003
【図３】
0004152124.tif 000004
【図４】
0004152124.tif 000005
【図５】
0004152124.tif 000006
【図６】
0004152124.tif 000007
【図７】
0004152124.tif 000008
【図８】
0004152124.tif 000009
【図９】
0004152124.tif 000010