(57)【特許請求の範囲】
【請求項１】
所定のビット幅の入力データを受け、第１のシフト量及び第２のシフト量を組み合わせた合計シフト量だけ前記入力データを左右にシフトして、所望シフト後の出力データとして出力するバレルシフト装置において、
前記入力データを受け、前記第１のシフト量を制御する第１の制御信号に基づいて前記入力データをシフトし、中間データとして出力する第１のシフト手段と、
前記第１のシフト手段からの中間データを保持するための中間データ保持手段と、
前記第２のシフト量を制御する第２の制御信号を保持し、出力する制御信号保持手段と、
前記中間データ保持手段に保持された中間データを受け、前記制御信号保持手段の出力する前記第２の制御信号に基づいて、前記受けた中間データをシフトさせて、前記所望シフト後の出力データとして出力する第２のシフト手段とを備えると共に、
前記第２の制御信号を受け、この第２の制御信号に基づき、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記第２のシフト手段から所望シフト後の出力データとして出力されるデータ要素以外のデータ要素の一部又は全部を除いたデータ要素の前記中間データ内での桁位置を検出するデコード手段を備え、
前記中間データ保持手段は、前記デコード手段で検出された前記桁位置に基づいて、前記中間データのうち、前記第２のシフト手段から所望シフト後の出力データとして出力されるデータ要素以外のデータ要素の一部又は全部が除かれ、少なくとも前記第２のシフト手段から所望シフト後の出力データとして出力されるデータ要素を含む桁位置のデータ要素を新たに保持する
ことを特徴とするバレルシフト装置。
【請求項２】
請求項１記載のバレルシフト装置において、
前記デコード手段は、前記第２の制御信号が示す情報の全部に基づいて、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記第２のシフト手段から所望シフト後の出力データとして出力されるデータ要素のみの前記中間データ内での桁位置を検出する
ことを特徴とするバレルシフト装置。
【請求項３】
請求項１記載のバレルシフト装置において、
前記デコード手段は、前記第２の制御信号が示す情報の一部に基づいて、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記第２のシフト手段から所望シフト後の出力データとして出力されるデータ要素以外のデータ要素の一部を除いたデータ要素の前記中間データ内での桁位置を検出する
ことを特徴とするバレルシフト装置。
【請求項４】
請求項１記載のバレルシフト装置において、
前記第２の制御信号は複数ビットの信号からなる制御信号であって、
前記中間データ保持手段は、前記第２の制御信号の所定の１ビットの信号に基づいて、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記第２のシフト手段から所望シフト後の出力データとして出力されるデータ要素以外のデータ要素の一部が除かれた桁位置のデータ要素を保持及び出力する
ことを特徴とするバレルシフト装置。
【請求項５】
所定のビット幅の入力データを受け、第１のシフト量及び第２のシフト量を組み合わせた合計シフト量だけ前記入力データを左右にシフトして、所望シフト後の出力データとして出力するバレルシフト装置において、
前記入力データを受け、前記第１のシフト量を制御する第１の制御信号に基づいて前記入力データをシフトし、中間データとして出力する第１のシフト手段と、
前記第１のシフト手段からの中間データを保持するための中間データ保持手段と、
前記第２のシフト量を制御する第２の制御信号を保持し、出力する制御信号保持手段と、
前記中間データ保持手段に保持された中間データを受け、前記制御信号保持手段の出力する前記第２の制御信号に基づいて、前記受けた中間データをシフトさせて、前記所望シフト後の出力データとして出力する第２のシフト手段とを備えると共に、
前記第１の制御信号を受け、この第１の制御信号に基づき、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記入力データに含まれるデータ要素の桁位置を検出するデコード手段とを備え、
前記中間データ保持手段は、前記デコード手段で検出された前記桁位置に基づいて、前記中間データを構成する全てのデータ要素のうち、少なくとも前記入力データに含まれるデータ要素を含む桁位置のデータ要素を新たに保持する
ことを特徴とするバレルシフト装置。
【請求項６】
請求項５記載のバレルシフト装置において、
前記デコード手段は、前記第１の制御信号が示す情報の全部に基づいて、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記入力データに含まれるデータ要素のみの前記中間データ内での桁位置を検出する
ことを特徴とするバレルシフト装置。
【請求項７】
請求項５記載バレルシフト装置において、
前記デコード手段は、前記第１の制御信号が示す情報の一部に基づいて、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記入力データに含まれるデータ要素以外のデータ要素の一部を除いたデータ要素の前記中間データ内での桁位置を検出する
ことを特徴とするバレルシフト装置。
【請求項８】
請求項５に記載のバレルシフト装置において、
前記第１の制御信号は複数ビットの信号からなる制御信号であって、
前記中間データ保持手段は、前記第１の制御信号の所定の１ビットの信号に基づいて、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記入力データに含まれるデータ要素以外のデータ要素の一部が除かれた桁位置のデータ要素を保持及び出力する
ことを特徴とするバレルシフト装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル信号処理における多ビットデータの左右シフト処理を行うバレルシフト装置に関するものである。
【背景技術】
【０００２】
従来のバレルシフト装置は、多段のセレクタにより構成される。一方、信号処理においてスループットを向上させる目的で、バレルシフト装置をパイプラインレジスタで分割し、シフト処理を多段処理ステージで実行する必要性が生じている。
【０００３】
従来の多段セレクタ構成のバレルシフト装置として、例えば、特許文献１がある。特許文献１記載のバレルシフト装置は、制御信号によりシフトするかしないかを選択するセレクタにより構成されるシフト回路を多段に組合わせた構造を持つ。例えば、左１５ビットシフトから右１６ビットシフトの間で任意のシフトを実現する場合、それぞれ１ビット、２ビット、４ビット、８ビットの左シフト機能を持つシフト回路と１６ビット右シフト機能を持つシフト回路を多段に組合わせることにより実現できる。この場合、右５ビットシフトを実現するには、１ビット左シフト回路、２ビット左シフト回路、８ビット左シフト回路と１６ビット右シフト回路をアクティブにすればよい。
【０００４】
以下に図１０を用いて特許文献１記載のバレルシフト装置にパイプライン構造を導入した際の構成及びその動作の説明を詳細に行う。
【０００５】
図１０は特許文献１記載のバレルシフト装置にパイプライン構造を導入した際の概略図である。第１のシフト回路１０は入力データを第１の制御信号に基づいてシフト処理し中間データ３０として出力する。ここで、第１のシフト回路１０は１ビット左シフト回路１１と２ビット左シフト回路１２と４ビット左シフト回路１３とから構成されており、左７ビットシフトから０ビットシフトまでの任意のシフトを実現する。
【０００６】
中間データ保持回路３０は第１のシフト回路１０の出力である中間データを保持し、次の第２のシフト回路へ出力する。
【０００７】
制御信号保持回路４０は第２の制御信号を保持し、出力する。
【０００８】
第２のシフト回路５０は中間データを制御信号保持回路４０の出力する第２の制御信号に基づいてシフト処理し出力データとして出力する。ここで、第２のシフト回路５０は８ビット左シフト回路５１と１６ビット右シフト回路５２とから構成されており、第１のシフト回路でのシフト処理と組合わせることにより入力データの左１５ビットシフトから右１６ビットシフトの間の任意のシフトを実現する。
【特許文献１】特開２０００−２９３３５４号公報（第７頁、第１図）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、従来のパイプラインレジスタで分割するバレルシフト装置の技術では、第１のシフト回路を構成する各シフト回路を経由するごとにデータのビット幅が大きくなり、これにより、第１のシフト回路から出力される中間データのビット幅が大きくなり、更には、中間データ保持回路の実装規模が増大してしまうため、消費電力が増加するという課題があった。
【００１０】
本発明は上記従来の課題を解決するものであり、中間データ保持回路のデータの格納動作を制御することにより、パイプライン構造化による電力増加を抑制することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するために、本発明のバレルシフト装置では、中間データ保持回路に保持する中間データのうち、最終出力データとして出力されるデータ要素以外の全部又は一部の不用なデータ要素の格納動作を抑制するようにする。
【００１２】
すなわち、請求項１記載の発明のバレルシフト装置は、所定のビット幅の入力データを受け、第１のシフト量及び第２のシフト量を組み合わせた合計シフト量だけ前記入力データを左右シフトして、所望シフト後の出力データとして出力するバレルシフト装置において、前記入力データを受け、前記第１のシフト量を制御する第１の制御信号に基づいて前記入力データをシフトし、中間データとして出力する第１のシフト手段と、前記第１のシフト手段からの中間データを保持するための中間データ保持手段と、前記第２のシフト量を制御する前記第２の制御信号を保持し、出力する制御信号保持手段と、前記中間データ保持手段に保持された中間データを受け、前記制御信号保持手段の出力する前記第２の制御信号に基づいて、前記受けた中間データをシフトさせて、前記所望シフト後の出力データとして出力する第２のシフト手段とを備えると共に、前記第２の制御信号を受け、この第２の制御信号に基づき、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記第２のシフト手段から所望シフト後の出力データとして出力されるデータ要素以外のデータ要素を一部又は全部除いたデータ要素の前記中間データ内での桁位置を検出するデコード手段を備え、前記中間データ保持手段は、前記デコード手段で検出された前記桁位置に基づいて、前記中間データのうち、前記第２のシフト手段から所望シフト後の出力データとして出力されるデータ要素以外のデータ要素の一部又は全部が除かれ、少なくとも前記第２のシフト手段から所望シフト後の出力データとして出力されるデータ要素を含む桁位置のデータ要素を新たに保持することを特徴とする。
【００１３】
請求項２記載の発明は、前記請求項１記載のバレルシフト装置において、前記デコード手段は、前記第２の制御信号が示す情報の全部に基づいて、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記第２のシフト手段から所望シフト後の出力データとして出力されるデータ要素のみの前記中間データ内での桁位置を検出することを特徴とする。
【００１４】
請求項３記載の発明は、前記請求項１記載のバレルシフト装置において、前記デコード手段は、前記第２の制御信号が示す情報の一部に基づいて、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記第２のシフト手段から所望シフト後の出力データとして出力されるデータ要素以外のデータ要素を一部除いたデータ要素の前記中間データ内での桁位置を検出することを特徴とする。
【００１５】
請求項４記載の発明は、前記請求項１記載のバレルシフト装置において、前記第２の制御信号は複数のビット信号からなる制御信号であって、前記中間データ保持手段は、前記第２の制御信号の所定の１ビット信号に基づいて、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記第２のシフト手段から所望シフト後の出力データとして出力されるデータ要素以外のデータ要素が一部除かれた桁位置のデータ要素を保持及び出力することを特徴とする。
【００１６】
請求項５記載の発明のバレルシフト装置は、所定のビット幅の入力データを受け、第１のシフト量及び第２のシフト量を組み合わせた合計シフト量だけ前記入力データを左右にシフトして、所望シフト後の出力データとして出力するバレルシフト装置において、前記入力データを受け、前記第１のシフト量を制御する第１の制御信号に基づいて前記入力データをシフトし、中間データとして出力する第１のシフト手段と、前記第１のシフト手段からの中間データを保持するための中間データ保持手段と、前記第２のシフト量を制御する第２の制御信号を保持し、出力する制御信号保持手段と、前記中間データ保持手段に保持された中間データを受け、前記制御信号保持手段の出力する前記第２の制御信号に基づいて、前記受けた中間データをシフトさせて、前記所望シフト後の出力データとして出力する第２のシフト手段とを備えると共に、前記第１の制御信号を受け、この第１の制御信号に基づき、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記入力データに含まれるデータ要素の桁位置を検出するデコード手段とを備え、前記中間データ保持手段は、前記デコード手段で検出された前記桁位置に基づいて、前記中間データを構成する全てのデータ要素のうち、少なくとも前記入力データに含まれるデータ要素を含む桁位置のデータ要素を新たに保持することを特徴とする。
【００１７】
請求項６記載の発明は、前記請求項５記載のバレルシフト装置において、前記デコード手段は、前記第１の制御信号が示す情報の全部に基づいて、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記入力データに含まれるデータ要素のみの前記中間データ内での桁位置を検出することを特徴とする。
【００１８】
請求項７記載の発明は、前記請求項５記載のバレルシフト装置において、前記デコード手段は、前記第１の制御信号が示す情報の一部に基づいて、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記入力データに含まれるデータ要素以外のデータ要素の一部を除いたデータ要素の前記中間データ内での桁位置を検出することを特徴とする。
【００１９】
請求項８記載の発明は、前記請求項５記載のバレルシフト装置において、前記第１の制御信号は複数ビットの信号からなる制御信号であって、前記中間データ保持手段は、前記第１の制御信号の所定の１ビットの信号に基づいて、前記第１のシフト手段からの中間データを構成する全てのデータ要素のうち、前記入力データに含まれるデータ要素以外のデータ要素の一部が除かれた桁位置のデータ要素を保持及び出力することを特徴とする。
【００２０】
以上により、本発明では、第２のシフト手段で施されるシフト量を制御する第２の制御信号を、デコード手段を用いてデコードすることにより、中間データから出力データとして出力されるデータ要素の桁位置を検出し、中間データ保持手段では、少なくとも前記桁位置の中間データ要素を保持するように動作する。従って、最終データとして出力されない不用なデータ要素を中間データ保持手段で格納せず、以前保持していたデータ要素を保持し続けるので、その分、省電力化が可能となる。
【００２１】
また、本発明では、第１のシフト手段で施されるシフト量を制御する第１の制御信号を、デコード手段を用いてデコードすることにより、中間データを構成する全てのデータ要素のうち、少なくとも入力データに含まれるデータ要素の桁位置を検出し、中間データ保持手段では、少なくともこの桁位置の中間データ要素を保持するように動作する。従って、入力データのデータ要素でないデータ要素を中間データ保持手段で格納せず、以前保持していたデータ要素を保持し続けるので、その分、省電力化が可能となる。
【発明の効果】
【００２２】
以上説明したように、本発明のバレルシフト装置によれば、パイプライン構造化により挿入される中間データ保持手段からデータを出力するまでの間の第２のシフト手段で施されるシフト量の情報を制御信号として用いて、中間データ保持手段での最終的には出力されないデータ要素の保持動作を抑制したので、省電力化を実現することが可能となる。
【００２３】
また、本発明のバレルシフト装置によれば、データの入力からパイプライン構造化により挿入される中間データ保持手段までの間の第１のシフト手段で施されるシフト量の情報を制御信号として用いて、中間データ保持手段での不要なデータ要素の格納保持の動作を抑制したので、省電力化を実現することが可能となる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施の形態について図面を参照しながら説明する。
【００２５】
（第１の実施の形態）
第１の実施の形態のバレルシフト装置の概略図を図１に示す。
【００２６】
本実施の形態におけるバレルシフト装置は、図１に示すように、パイプラインレジスタで分割され、多段処理ステージでシフト処理が実行される。
【００２７】
ここでは、この図１を用いて、本実施の形態のバレルシフト装置の構成を説明する。尚、本実施の形態では、簡単のため１６ビットデータ（所定のビット幅の入力データ）を左１５ビットから右１６ビットの範囲で任意に算術シフト可能なバレルシフト装置を前提として説明する。
【００２８】
図１において、１０は第１のシフト回路であり、３ビットデータからなる第１の制御信号に基づいて入力データをシフト処理し、中間データ保持回路３０へ中間データを出力する。この第１のシフト回路１０は、１ビット左シフト回路１１、２ビット左シフト回路１２及び４ビット左シフト回路１３の３つのシフト回路で構成される。これら３つのシフト回路１１、１２、１３は、それぞれ、前記第１の制御信号のうち対応するビットデータを受ける。すなわち、第１の制御信号の各ビットデータの組み合わせにより、３つのシフト回路１１、１２、１３でのシフト処理を組み合わせて、左７ビットシフトから０ビットシフトまでの任意のシフト量（第１のシフト量）を実現する。
【００２９】
５０は第２のシフト回路であって、中間データ保持回路３０の出力する中間データを受け、第１のシフト回路１０におけるシフト処理に続いて所定のシフト処理を行い、全体として所望のシフトを完成させ、出力データを出力する。この第２のシフト回路５０は、図１に示すように、８ビット左シフト回路５１と１６ビット右シフト回路５２とから構成される。また、この第２のシフト回路５０は、第１のシフト回路１０と同様に外部から入力される第２の制御信号の制御によりシフト（第２のシフト量のシフト）処理を行うのであるが、第２の制御信号は第２のシフト回路５０へ直接入力されない。第２の制御信号は、デコード回路２０に入力されると共に、第２の制御信号を一旦保持する制御信号保持回路４０を介して第２のシフト回路５０に入力される。この制御信号保持回路４０を介して第２のシフト回路５０に入力された第２の制御信号は、２分割され、第２のシフト回路５０中の２つのシフト回路５１及び５２にそれぞれ入力される。そして、２つのシフト回路５１及び５２によるそれぞれのシフト処理の組み合わせにより、第１のシフト回路１０によるシフト処理に続くシフト処理を行い、入力データの左１５ビットシフトから右１６ビットシフトの間の任意のシフト、すなわち、所望のシフトを完成させ、出力する。
【００３０】
一方、第２の制御信号が入力されたデコード回路２０は、中間データのデータ要素のうち、第２のシフト回路５０によりシフト処理された結果として出力される出力データのデータ要素の中間データ保持回路３０中の桁位置を、第２の制御信号に基づいて検出し、その検出結果を中間データ保持回路３０に対して出力する。このデコード回路２０の検出結果を用いて、中間データ保持回路３０は、出力データとして第２のシフト回路５０から出力される桁位置のデータ要素のみ、又は、この出力される桁位置のデータ要素を含むデータ要素であって且つ出力データに反映されない不用なデータを一部除いたデータ要素を保持する。このようなデコード回路２０の働きにより、中間データ保持回路３０は、出力データのデータ要素として出力されない不用なデータ要素を保持しなくても済む分だけ不用な格納動作を省略できるので、省電力化が可能である。
【００３１】
次に、図２を用いて、本実施の形態のバレルシフト装置について、具体的なシフト処理の動作説明を行う。ここでは、シフト処理の具体例として、１１ビット右シフト処理を行った場合について説明する。また、図中の“０”は値０を、“Ｓ”は符号拡張を、“Ｈ”は保持データを示す。
【００３２】
図２に示す第１の制御信号Ｃ１［２：０］は３ビットデータであり、３つの１ビットデータＣ１［０］、Ｃ１［１］、Ｃ１［２］から構成される。第１のシフト回路１０を構成する１ビット左シフト回路１１、２ビット左シフト回路１２、４ビット左シフト回路１３は、それぞれ、第１の制御信号の各ビットデータＣ１［０］、Ｃ１［１］、Ｃ１［２］により制御される。１１ビット右シフト処理時は第１の制御信号の１ビットデータＣ１［０］、Ｃ１［２］がアクティブな状態“Ｈｉ”、また、第１の制御信号の１ビットデータＣ１［１］がパッシブな状態“Ｌｏ”となる。第１のシフト回路１０に入力された入力データは第１の制御信号Ｃ１［２：０］に基づいてシフト処理される。
【００３３】
まず、１ビット左シフト回路１１で１ビット左シフト処理され、０番目のビットデータには値０が埋められ、１７ビット幅データとして出力される。次に、２ビット左シフト処理回路１２ではシフト処理されず、１７番目のビットデータ及び１８番目のビットデータが符号拡張され、１９ビット幅データとして出力される。更に、４ビット左シフト回路１３では４ビット左シフト処理され、０番目のビットデータ、１番目のビットデータ、２番目のビットデータ、及び３番目のビットデータには値０が埋められ、２３ビット幅データの中間データとして中間データ保持回路３０へ出力される。
【００３４】
第２の制御信号Ｃ２［１：０］は２ビットデータであり、１ビットデータＣ２［０］、Ｃ２［１］で構成される。第２のシフト回路５０を構成する８ビット左シフト回路５１、１６ビット右シフト回路５２は、第２の制御信号の各ビットデータＣ２［０］、Ｃ２［１］で制御される。デコード回路２０は、それぞれ、第２のシフト回路５０でのシフト処理後出力される出力データのデータ要素が中間データのどの桁位置に出力されているかを第２の制御信号Ｃ２［１：０］から検出し、この検出結果を中間データ保持回路３０へ出力する。この桁位置の検出動作を具体的に説明すると、例えば、１１ビット右シフト処理時は第２の制御信号のビットデータＣ２［１］がアクティブな状態“Ｈｉ”、また、第２の制御信号のビットデータＣ２［０］がパッシブな状態“Ｌｏ”となり、第２のシフト回路５０では１６ビット右シフト処理が施されるので、中間データの１６番目のビットから２２番目までのビットの桁位置のデータ要素が出力データのデータ要素として出力されることが分かる。従って、中間データ保持回路３０はデコード回路２０の桁位置の検出結果に基づいて、中間データの１６番目のビットから２２番目までのビットの桁位置のデータ要素を新たに格納保持し、これら検出された桁位置以外の０番目のビットから１５番目のビットまでの桁位置のデータ要素に関しては以前の保持データ要素をそのまま継続して保持する。
【００３５】
制御信号保持回路４０は第２の制御信号Ｃ２［１：０］を保持し、第２のシフト回路５０へ出力する。第２のシフト回路５０を構成する８ビット左シフト回路５１、１６ビット右シフト回路５２はそれぞれ第２の制御信号の各ビットデータＣ２［０］、Ｃ２［１］が制御信号保持回路４０に保持された後の出力により制御される。以下、簡単のため制御信号保持回路４０に保持された後の信号も第２の制御信号Ｃ２［１：０］と表現する。１１ビット右シフト処理時は第２の制御信号のビットデータＣ２［１］がアクティブな状態“Ｈｉ”、また、第２の制御信号のビットデータＣ２［０］がパッシブな状態“Ｌｏ”となる。第２のシフト回路５０に入力された中間データ保持回路３０の出力は前記第２の制御信号Ｃ２［１：０］に基づいてシフト処理される。
【００３６】
まず、８ビット左シフト処理回路５１ではシフト処理されず、２３番目のビットから３０番目のビットまでの桁位置が符号拡張され、３１ビット幅データとして出力される。次に、１６ビット右シフト回路５２では１６ビット右シフト処理され、１５番目のビットの桁位置が符号拡張され、１６ビット幅データの出力データとして出力される。
【００３７】
図３は中間データ保持回路３０の動作説明図である。中間データ保持回路３０は第２の制御信号Ｃ２［１：０］の状態によりデコード回路２０の出力に基づいて、以下のように動作する。
【００３８】
第２の制御信号の各ビットデータＣ２［０］、Ｃ２［１］が共にパッシブな状態“Ｌｏ”のとき、０番目のビットから１５番目のビットまでの桁位置の中間データのデータ要素がそのまま１６ビットの出力データとして出力されるので、その０番目のビットから１５番目のビットまでの桁位置の中間データのデータ要素が中間データ保持回路３０に格納保持される。
【００３９】
第２の制御信号のビットデータＣ２［０］がアクティブな状態“Ｈｉ”で、また、第２の制御信号のビットデータＣ２［１］がパッシブな状態“Ｌｏ”のとき、８ビット左シフト処理回路５１により８ビット左シフトされ、１６ビット右シフト処理回路５２ではシフト処理されずそのままであり、第２のシフト回路５０では８ビット左シフトされることになるため、中間データの中で８ビット左シフトされて出力データの１６ビット幅に残る０番目のビットから７番目のビットまでの桁位置のデータ要素が中間データ保持回路３０に格納保持される。
【００４０】
第２の制御信号のビットデータＣ２［１］がアクティブな状態“Ｈｉ”で、また、第２の制御信号のビットデータＣ２［０］がパッシブな状態“Ｌｏ”のとき、８ビット左シフト処理回路５１ではシフト処理されずそのままであり、１６ビット右シフト処理回路５２により１６ビット右シフト処理され、第２のシフト回路５０では１６ビット右シフト処理されることになるため、中間データの中で１６ビット右シフトされて出力データの１６ビット幅に残る１６番目のビットから２２番目のビットまでの桁位置のデータ要素が中間データ保持回路３０に格納保持される。
【００４１】
第２の制御信号の各ビットデータＣ２［０］、Ｃ２［１］が共にアクティブな状態“Ｈｉ”のとき、８ビット左シフト処理回路５１により８ビット左シフトされ、１６ビット右シフト処理回路５２により１６ビット右シフト処理され、第２のシフト処理回路５０では８ビット右シフト処理されることになるため、中間データの中で８ビット右シフトされて出力データの１６ビット幅に残る８番目のビットから２２番目のビットまでの桁位置のデータ要素が中間データ保持回路３０に格納保持される。
【００４２】
このように、中間データを構成する全てのデータ要素のうち、出力データとなるデータ要素のみが中間データ保持回路３０に格納保持されることになる。
【００４３】
図４は中間データ保持回路３０の動作説明図である。デコード回路２０は第２の制御信号Ｃ２［１：０］の一部の信号をデコードするようにしてもよい。ここでは、第２の制御信号のビットデータ（所定の１ビットデータ）Ｃ２［１］をそのまま中間データ保持回路３０に出力する。中間データ保持回路３０は第２の制御信号のビットデータＣ２［１］の状態によりデコード回路２０の出力に基づいて、以下のように動作する。
【００４４】
第２の制御信号のビットデータＣ２［１］がパッシブな状態“Ｌｏ”のとき、図３で説明したように、第２の制御信号のビットデータＣ２［０］が何れの状態であっても、中間データ中の０番目のビットから１５番目のビットまでの桁位置のデータ要素には、第２のシフト回路５０から出力される出力データが含まれるので、０番目のビットから１５番目のビットまでの桁位置のデータ要素が中間データ保持回路３０に格納保持される。
【００４５】
また、第２の制御信号のビットデータＣ２［１］がアクティブな状態“Ｈｉ”のとき、図３で説明したように、第２の制御信号のビットデータＣ２［０］が何れの状態であっても、中間データ中の８番目のビットから２２番目のビットまでの桁位置のデータ要素には、第２のシフト回路５０から出力される出力データが含まれているので、８番目のビットから２２番目のビットまでの桁位置のデータ要素が中間データ保持回路３０に格納保持される。
【００４６】
このように、少なくとも出力データとなるデータ要素を含む桁位置がデコード回路２０により検出され、その出力データを含む桁位置のデータ要素が中間データ保持回路３０に格納保持され、一部に符号拡張データ、又は値０を埋めたデータが格納される場合もある。
【００４７】
上記図３の場合が省電力に最も効果的であるが、第２の制御信号Ｃ２［１：０］の一部についてデコードすることによりデコード回路２０の回路を簡単化することができる。
【００４８】
以上、算術シフト処理を前提に述べたが、論理シフト処理については符号拡張を値０拡張に置き換えればよい。また、他のシフト処理についても同様である。
【００４９】
このようにして、第１の実施の形態においては中間データ保持回路３０の動作を制御することにより、中間データ保持回路３０を構成する記憶回路への不用なデータ要素の格納動作を防ぎ、以前のデータ要素を引き続き保持することにより、従来の技術と比べて中間データ保持回路３０の省電力化と第２のシフト回路の活性化を抑えることによる省電力化が可能となる。
【００５０】
（第２の実施の形態）
第２の実施の形態のバレルシフト装置の概略図を図５に示す。
【００５１】
本実施の形態における図５のバレルシフト装置は、第１の実施の形態と同様に、パイプラインレジスタで分割され、多段処理ステージでシフト処理が実行される。
【００５２】
先ず、図５を用いて、本実施の形態のバレルシフト装置の構成を説明する。尚、本実施の形態では、簡単のため１６ビットデータ（所定のビット幅の入力データ）を左１５ビットから右１６ビットの範囲で任意に算術シフト可能なバレルシフト装置を前提として説明する。また、第１の実施の形態において、図１を用いて説明したバレルシフト装置と同一構成については、同一符号を付し、その説明を省略する。
【００５３】
図５におけるバレルシフト装置が、第１の実施の形態において示した図１のバレルシフト装置と異なるのは、デコード回路６０の受ける制御信号が第２の制御信号ではなく第１の制御信号であり、第１のシフト回路１０によりシフトされた入力データ要素の、中間データ保持回路３０中における桁位置を、入力された第１の制御信号に基づいて検出する点である。この第１の制御信号に基づく検出では、デコード回路６０は、第１のシフト回路１０から出力されるデータのうち、少なくとも第１のシフト回路によるシフト後の入力データのデータ要素が出力される桁位置を検出する。そして、この検出結果を受けた中間データ保持回路３０は、中間データを構成する全てのデータ要素のうち、前記入力データのデータ要素以外のデータ要素を一部又は全部除いたデータ要素のみを保持し、この保持していたデータ要素を第２のシフト回路５０へ出力する。
【００５４】
これにより、中間データ保持回路３０に保持すべきデータを縮小することができ、不用な格納動作を抑制できるので省電力化が可能である。
【００５５】
次に、図６を用いて、本実施の形態のバレルシフト装置について、具体的なシフト処理の動作説明を行う。ここでは、シフト処理の具体例として、１１ビット右シフト処理を行った場合について説明する。また、図中の“０”は値０を、“Ｓ”は符号拡張を、“Ｈ”は保持データを示す。
【００５６】
第１の制御信号Ｃ１［２：０］は３ビットデータであり、１ビットデータＣ１［０］、Ｃ１［１］、Ｃ１［２］で構成される。第１のシフト回路１０を構成する１ビット左シフト回路１１、２ビット左シフト回路１２、４ビット左シフト回路１３はそれぞれ第１の制御信号の各ビットデータＣ１［０］、Ｃ１［１］、Ｃ１［２］により制御される。１１ビット右シフト処理時は第１の制御信号のビットデータＣ１［０］、Ｃ１［２］がアクティブな状態“Ｈｉ”、また、第１の制御信号のビットデータＣ１［１］がパッシブな状態“Ｌｏ”となる。第１のシフト回路１０に入力された入力データは前記第１の制御信号Ｃ１［２：０］に基づいてシフト処理される。
【００５７】
まず、１ビット左シフト回路１１で１ビット左シフト処理され、０番目のビットの桁位置には値０のデータ要素が埋められ、１７ビット幅データとして出力される。次に、２ビット左シフト処理回路１２ではシフト処理されず、１７番目のビットと１８番目のビットとが符号拡張され、１９ビット幅データとして出力される。更に、４ビット左シフト回路１３では４ビット左シフト処理され、０番目のビット、１番目のビット、２番目のビット、及び３番目のビットの桁位置には値０のデータ要素が埋めれら、２３ビット幅データの中間データとして中間データ保持回路３０へ出力される。
【００５８】
デコード回路６０は第１の制御信号Ｃ１［２：０］から、入力データのデータ要素が中間データのどの桁位置に出力されているかを検出し、その検出結果を中間データ保持回路３０へ出力する。１１ビット右シフト処理時は第１の制御信号のビットデータＣ１［０］、Ｃ１［２］がアクティブな状態“Ｈｉ”、また、第１の制御信号のビットデータＣ１［１］がパッシブな状態“Ｌｏ”となり、第１のシフト回路１０の部分では、５ビット左シフト処理が施されるので、中間データの５番目のビットから２０番目のビットまでの桁位置のデータ要素が入力データのデータ要素であることが分かる。
【００５９】
中間データ保持回路３０はデコード回路６０の出力に基づいて、中間データの５番目のビットから２０番目のビットまでの桁位置のデータ要素を格納保持し、０番目のビットから４番目のビット、及び２１番目のビット、２２番目のビットの桁位置のデータ要素に関しては以前の保持データ要素を継続して保持する。そして、第２のシフト回路５０へ出力する段階で、０番目のビットから４番目のビットの桁位置については値０のデータ要素を出力し、５番目のビットから２０番目のビットまでの桁位置については格納保持したデータ要素を出力し、２１番目のビット、２２番目のビットについては符号拡張して出力する。このように、本実施の形態では、算術シフト演算の場合を示しているので、保持したデータより上位の桁位置には、入力データの符号が出力され、また、保持したデータより下位の桁位置には、値０のデータ要素が出力される。
【００６０】
制御信号保持回路４０は第２の制御信号Ｃ２［１：０］を保持し、第２のシフト回路５０へ出力する。第２のシフト回路５０を構成する８ビット左シフト回路５１、１６ビット右シフト回路５２はそれぞれ第２の制御信号のビットデータＣ２［０］、Ｃ２［１］が制御信号保持回路４０に保持された後の出力により制御される。以下、簡単のため制御信号保持回路４０に保持された後の信号も第２の制御信号Ｃ２［１：０］と表現する。１１ビット右シフト処理時は第２の制御信号のビットデータＣ２［１］がアクティブな状態“Ｈｉ”、また、第２の制御信号のビットデータＣ２［０］がパッシブな状態“Ｌｏ”となる。第２のシフト回路５０に入力された中間データ保持回路３０の出力は前記第２の制御信号Ｃ２［１：０］に基づいてシフト処理される。
【００６１】
まず、８ビット左シフト処理回路５１ではシフト処理されず、２３番目のビットから３０番目のビットが符号拡張され、３１ビット幅データとして出力される。次に、１６ビット右シフト回路５２では１６ビット右シフト処理され、１５番目のビットが符号拡張され、１６ビット幅データの出力データとして出力される。
【００６２】
図７は中間データ保持回路３０の動作説明図である。中間データ保持回路３０は第１の制御信号Ｃ１［２：０］の状態によりデコード回路６０の出力に基づいて、以下のように動作する。
【００６３】
第１の制御信号のビットデータＣ１［０］、Ｃ１［１］、Ｃ１［２］が全てパッシブな状態“Ｌｏ”のとき、０番目のビットから１５番目のビットまでの桁位置の入力データのデータ要素がそのまま１６ビットの中間データとして第１のシフト回路１０から出力されるので、０番目のビットから１５番目のビットまでの桁位置の中間データのデータ要素が中間データ保持回路３０に格納保持される。
【００６４】
第１の制御信号のビットデータＣ１［０］がアクティブな状態“Ｈｉ”で、また、第１の制御信号のビットデータＣ１［１］、Ｃ１［２］がパッシブな状態“Ｌｏ”のとき、１ビット左シフト処理回路１１により１ビット左シフトされ、２ビット左シフト処理回路１２及び４ビット左シフト処理回路１３ではシフト処理されずそのままであり、第１のシフト回路１０としては１ビット左シフトすることとなるため、中間データとしては、入力データの出力される桁位置である１番目のビッ１から１６番目のビットまでの桁位置のデータ要素が中間データ保持回路３０に格納保持される。
【００６５】
第１の制御信号のビットデータＣ１［１］がアクティブな状態“Ｈｉ”で、また、第１の制御信号のビットデータＣ１［０］、Ｃ１［２］がパッシブな状態“Ｌｏ”のとき、２ビット左シフト処理回路１２により２ビット左シフトされ、１ビット左シフト処理回路１１及び４ビット左シフト処理回路１３ではシフト処理されずそのままであり、第１のシフト回路１０としては２ビット左シフトすることとなるため、中間データとしては、入力データの出力される桁位置である２番目のビットから１７番目のビットまでのデータ要素が中間データ保持回路３０に格納保持される。
【００６６】
第１の制御信号のビットデータＣ１［０］、Ｃ１［１］がアクティブな状態“Ｈｉ”で、また、第１の制御信号のビットデータＣ１［２］がパッシブな状態“Ｌｏ”のとき、１ビット左シフト処理回路１１により１ビット左シフトされ、且つ、２ビット左シフト処理回路１２により２ビット左シフトされ、また、４ビット左シフト処理回路１３ではシフト処理されずそのままであり、第１のシフト回路１０としては３ビット左シフトすることとなるため、中間データとしては、入力データの出力される桁位置である３番目のビットから１８番目のビットまでのデータ要素が中間データ保持回路３０に格納保持される。
【００６７】
第１の制御信号のビットデータＣ１［２］がアクティブな状態“Ｈｉ”で、また、第１の制御信号のビットデータＣ１［０］、Ｃ１［１］がパッシブな状態“Ｌｏ”のとき、４ビット左シフト処理回路１３により４ビット左シフトされ、１ビット左シフト処理回路１１及び２ビット左シフト処理回路１２ではシフト処理されずそのままであり、第１のシフト処理回路１０としては４ビット左シフトすることとなるため、中間データとしては、入力データの出力される桁位置である４番目のビットから１９番目のビットまでのデータ要素が中間データ保持回路３０に格納保持される。
【００６８】
第１の制御信号のビットデータＣ１［０］、Ｃ１［２］がアクティブな状態“Ｈｉ”で、また、第１の制御信号のビットデータＣ１［１］がパッシブな状態“Ｌｏ”のとき、１ビット左シフト処理回路１１により１ビット左シフトされ、且つ、４ビット左シフト処理回路１３により４ビット左シフトされ、また、２ビット左シフト処理回路１２ではシフト処理されずそのままであり、第１のシフト処理回路１０としては５ビット左シフトすることとなるため、中間データとしては、入力データの出力される桁位置である５番目のビットから２０番目のビットまでのデータ要素が中間データ保持回路３０に格納保持される。
【００６９】
第１の制御信号のビットデータＣ１［１］、Ｃ１［２］がアクティブな状態“Ｈｉ”で、また、第１の制御信号のビットデータＣ２［０］がパッシブな状態“Ｌｏ”のとき、２ビット左シフト処理回路１２により２ビット左シフトされ、且つ、４ビット左シフト処理回路１３により４ビット左シフトされ、また、１ビット左シフト処理回路１１ではシフト処理されずそのままであり、第１のシフト処理回路１０としては６ビット左シフトすることとなるため、中間データとしては、入力データの出力される桁位置である６番目のビットから２１番目のビットまでのデータ要素が中間データ保持回路３０に格納保持される。
【００７０】
第１の制御信号のビットデータＣ１［０］、Ｃ１［１］、Ｃ１［２］が全てアクティブな状態“Ｈｉ”のとき、１ビット左シフト処理回路１１、２ビット左シフト処理回路１２及び４ビット左シフト処理回路、すなわち、第１のシフト処理回路１０により７ビット左シフトされるため、中間データとしては、入力データの出力される桁位置である７番目のビットから２２番目のビットまでのデータ要素が中間データ保持回路３０に格納保持される。
【００７１】
このように、中間データを構成する全てのデータ要素のうち、入力データのデータ要素のみが中間データ保持回路３０に新たに格納保持されることになる。
【００７２】
図８は中間データ保持回路の動作説明図である。デコード回路６０は第１の制御信号Ｃ１［２：０］の一部の信号をデコードするようにしてもよい。ここでは、第１の制御信号Ｃ１［２：１］をデコードして中間データ保持回路３０に出力する。中間データ保持回路３０は第１の制御信号Ｃ１［１：０］の状態によりデコード回路６０の出力に基づいて、以下のように動作する。
【００７３】
第１の制御信号のビットデータＣ１［１］、Ｃ１［２］が共にパッシブな状態“Ｌｏ”のとき、図７を用いて説明したように、第１の制御信号のビットデータＣ１［０］が何れの状態であっても、中間データ中の０番目のビットから１６番目のビットまでのデータ要素には、入力データのデータ要素が含まれるので、０番目のビットから１６番目のビットまで桁位置のデータ要素が中間データ保持回路３０に格納保持される。
【００７４】
第１の制御信号のビットデータＣ１［１］がアクティブな状態“Ｈｉ”で、また、第１の制御信号のビットデータＣ１［２］がパッシブな状態“Ｌｏ”のとき、図７を用いて説明したように、第１の制御信号のビットデータＣ１［０］が何れの状態であっても、中間データ中の２番目のビットから１８番目のビットまでの桁位置のデータ要素には、入力データのデータ要素が含まれるので、２番目のビットから１８番目のビットまでの桁位置のデータ要素が中間データ保持回路３０に格納保持される。
【００７５】
第１の制御信号のビットデータＣ１［２］がアクティブな状態“Ｈｉ”で、また、第１の制御信号のビットデータＣ１［１］がパッシブな状態“Ｌｏ”のとき、図７を用いて説明したように、第１の制御信号のビットデータＣ１［０］が何れの状態であっても、中間データ中の４番目のビットから２０番目のビットまでの桁位置のデータ要素には、入力データのデータ要素が含まれるので、４番目のビットから２０番目のビットまでの桁位置のデータ要素が中間データ保持回路３０に格納保持される。
【００７６】
第１の制御信号のビットデータＣ１［１］、Ｃ１［２］が共にアクティブな状態“Ｈｉ”のとき、図７を用いて説明したように、第１の制御信号のビットデータＣ１［０］が何れの状態であっても、中間データ中の６番目のビットから２２番目のビットまでの桁位置のデータ要素には、入力データのデータ要素が含まれるので、６番目のビットから２２番目のビットまでの桁位置のデータ要素が中間データ保持回路３０に格納保持される。
【００７７】
このように、少なくとも入力データに含まれるデータ要素が中間データ保持回路３０に格納保持され、一部に符号拡張データ、値０を埋めたデータが格納されることになる。
【００７８】
図９は中間データ保持回路の動作説明図である。デコード回路６０は第１の制御信号Ｃ１［２：０］の一部の信号をデコードするようにしてもよい。ここでは、図８を用いて示した場合よりも更に少ない、１ビットの第１の制御信号のビットデータＣ１［２］をそのまま中間データ保持回路３０に出力する。中間データ保持回路３０は第１の制御信号のビットデータＣ１［２］の状態によりデコード回路６０の出力に基づいて、以下のように動作する。
【００７９】
第１の制御信号のビットデータＣ１［２］がパッシブな状態“Ｌｏ”のとき、図７を用いて説明したように、第１の制御信号のビットデータＣ１［０］及びＣ１［１］が何れの状態であっても、中間データ中の０番目のビットから１８番目のビットまでの桁位置のデータ要素には、入力データのデータ要素が含まれるので、０番目のビットから１８番目のビットまでの桁位置のデータ要素が中間データ保持回路３０に格納保持される。
【００８０】
第１の制御信号のビットデータＣ１［２］がアクティブな状態“Ｈｉ”のとき、図７を用いて説明したように、第１の制御信号ビットデータＣ１［０］及びＣ１［１］が何れの状態であっても、中間データ中の４番目のビットから２２番目のビットまでの桁位置のデータ要素には、入力データのデータ要素が含まれるので、４番目のビットから２２番目のビットまでの桁位置のデータ要素が中間データ保持回路３０に格納保持される。
【００８１】
このように、少なくとも入力データのデータ要素が中間データ保持回路３０に格納保持され、一部に符号拡張データ、値０埋めのデータが格納されることになる。
【００８２】
上記図７の場合が省電力に最も効果的であるが、上記図８、図９のように第１の制御信号Ｃ１［２：０］の一部についてデコードすることによりデコード回路６０の回路を簡単化することができる。
【００８３】
以上、算術シフト処理を前提に述べたが、論理シフト処理については符号拡張を値０拡張に置き換えればよい。また、他のシフト処理についても同様である。
【００８４】
このようにして、第２の実施の形態においては中間データ保持回路３０の動作を制御することにより、中間データ保持回路３０を構成する記憶回路への不用なデータの格納動作を防ぎ、従来の技術と比べて中間データ保持回路３０の省電力化が可能となる。
【産業上の利用可能性】
【００８５】
本発明のバレルシフト装置は、パイプライン構造化によりシフト回路間に挿入される中間データ保持回路の動作を制御し、出力データに反映されない不用なデータ要素の格納保持の動作を抑制することにより、バレルシフト装置の省電力化が可能となるので、デジタル信号処理における多ビットデータの左右シフト処理を行う半導体装置の構成要素等として有用である。
【図面の簡単な説明】
【００８６】
【図１】本発明の第１の実施の形態のバレルシフト装置の概略図である。
【図２】本発明の第１の実施の形態の１１ビット右シフト処理の動作説明図である。
【図３】本発明の第１の実施の形態の中間データ保持回路の動作説明図である。
【図４】本発明の第１の実施の形態の中間データ保持回路の動作説明図である。
【図５】本発明の第２の実施の形態のバレルシフト装置の概略図である。
【図６】本発明の第２の実施の形態の１１ビット右シフト処理の動作説明図である。
【図７】本発明の第２の実施の形態の中間データ保持回路の動作説明図である。
【図８】本発明の第２の実施の形態の中間データ保持回路の動作説明図である。
【図９】本発明の第２の実施の形態の中間データ保持回路の動作説明図である。
【図１０】従来の技術の構成を示す概略図である。
【符号の説明】
【００８７】
１０                        第１のシフト回路（第１のシフト手段）
１１                        １ビット左シフト回路
１２                        ２ビット左シフト回路
１３                        ４ビット左シフト回路
２０、６０                  デコード回路（デコード手段）
３０                        中間データ保持回路（中間データ保持手段）
４０                        制御信号保持回路（制御信号保持手段）
５０                        第２のシフト回路（第２のシフト手段）
５１                        ８ビット左シフト回路
５２                        １６ビット右シフト回路
Ｃ１［２：０］              第１の制御信号
Ｃ１［０］                  第１の制御信号の１ビットデータ
（所定の１ビット信号）
Ｃ２［１：０］              第２の制御信号
Ｃ２［０］                  第２の制御信号の１ビットデータ
（所定の１ビット信号）
Ｈｉ                        信号のアクティブな状態
Ｌｏ                        信号のパッシブな状態
０                          値０の出力
Ｓ                          符号拡張出力
Ｈ                          データ保持出力
【図１】
0004129280.tif 000002
【図２】
0004129280.tif 000003
【図３】
0004129280.tif 000004
【図４】
0004129280.tif 000005
【図５】
0004129280.tif 000006
【図６】
0004129280.tif 000007
【図７】
0004129280.tif 000008
【図８】
0004129280.tif 000009
【図９】
0004129280.tif 000010
【図１０】
0004129280.tif 000011