(57)【特許請求の範囲】
【請求項１】
シフトレジスタユニットを多段に縦続接続し、シフトクロックに従ってデータのシフト動作を行うシフトレジスタにおいて、
各段のシフトレジスタユニットは、入力データとして第２データを選択するように指示する選択制御信号に基づいて、前段から入力する第１データと、当該シフトレジスタユニットに直接与えられる第２データと、のいずれか一方を入力データとして選択する選択手段を有し、
任意の段のシフトレジスタユニットの前記選択手段に対して前記選択制御信号を出力し、かつ、前記選択制御信号の出力に依存して前記任意の段以降のシフトレジスタユニットへ前記シフトクロックを出力する制御手段を有することを特徴とするシフトレジスタ。
【請求項２】
前記多段シフトレジスタユニットを複数列並列に用いて構成され、前記制御手段は、段数位置が対応したシフトレジスタユニット群毎に同期したシフトクロックを選択的に出力し、所望の段のシフトレジスタユニット群のそれぞれの前記選択手段に対して前記第２データを選択するように指示することを特徴とする請求項１または２に記載のシフトレジスタ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のレジスタユニットを従属接続して構成したシフトレジスタに関し、特に保持しているデータ列にデータ挿入等の操作を高速に行うことができるシフトレジスタおよびその制御方法に関する。
【０００２】
【従来の技術】
シフトレジスタは、各種電子回路中で使用されているが、本発明に係るシフトレジスタは特にデータ列の操作に有効に活用できるものである。例えば、通信装置等ではデータを時刻順あるいはアドレス順に並べ変えたい場合など、データを順序良く整理したい場合等にはデータ列の操作が必要となる。
【０００３】
従来、このような機能の実現は、ソフトウェア処理によっておこなわれていた。例えばデータ列中へのデータの挿入であれば、プログラムによって新しいデータを割り込ませたい場所から後ろに位置しているデータ群を１つずつ全てずらしてゆき、空いた場所に新しいデータを割り込ませるという手法が一般的であった。このため、データを１つ割り込ませるだけであっても多大な時間を要するという問題点があった。
【０００４】
【発明が解決しようとする課題】
本発明の目的は、前述のようなデータ列に対する操作（データの構築）を、比較的簡単なハードウェア的構成を用いることで従来のソフトウェア処理に比べて格段に高速かつ簡単に行うためのシフトレジスタとその制御方法を新規に提案することにある。
【０００５】
【課題を解決するための手段】
課題解決のため本発明によれば、シフトレジスタユニットを多段に縦続接続し、シフトクロックに従ってデータのシフト動作を行うシフトレジスタにおいて、各段のシフトレジスタユニットは、前段から入力する第１データと、当該シフトレジスタユニットに直接与えられる第２データと、のいずれか一方を入力データとして選択する選択手段を有し、任意の段のシフトレジスタユニットの前記選択手段に対して前記入力データとして前記第２データを選択するように指示する選択制御信号を出力し、かつ、前記選択制御信号に依存して前記任意の段以降のシフトレジスタユニットへ前記シフトクロックを出力する制御手段を有することを特徴とする。
【０００６】
上記回路構成により、例えば任意に位置指定される特定のレジスタユニットのみを直接入力動作としデータバス側を選択すれば、シフトクロックがアクティブになると、そのレジスタユニットはデータバス上のデータを取り込み、また、そのレジスタユニットから後のレジスタユニットでは前段の出力データを取り込む、即ちシフト動作を行うこととなる。これによりデータ列中への任意データの挿入が高速に行える。その他各種のデータ列操作が、各レジスタユニットの入力選択とシフトクロック印加の有無を適切に制御することで可能となる。
【０００７】
また、本発明では上述した如きのシフトレジスタを複数個並列に用いてシフトレジスタを構成し、段数位置が対応したシフトレジスタユニット群毎に同期したシフトクロックが選択的に印加され、且つ段数位置の対応するシフトレジスタユニット群のそれぞれの直接入力端子からの入力動作が同期して行われるように構成する。これにより複数ビットを組にした例えばワード単位の高速なデータ操作が可能になる。
【０００８】
また、指定された任意の位置のレジスタユニットに前記直接入力端子からデータを入力させるとともに当該レジスタユニットより後段のレジスタユニットの全てをシフト動作させるセレクト／シフト制御部を備えた構成とする。データ挿入が簡単な制御で行える。
【０００９】
本発明の方法の１つは上述したようなシフトレジスタに順に保持されたデータ列の任意の位置に１段分のデータを挿入する場合の制御方法であり、挿入位置に対応するシフトレジスタユニットの入力を挿入すべきデータが印加された前記直接入力端子を選択し、前記挿入位置に対応するシフトレジスタユニット及び後段の連続するシフトレジスタユニットにシフトクロックを印加するように制御を行う。
【００１０】
また、他の方法は前述シフトレジスタに順に保持されたデータ列の任意の位置にｎ段分のデータを挿入する場合の制御方法であって、前記挿入位置に対応するシフトレジスタユニット及び後段の連続するシフトレジスタユニットにｎ−１個のシフトクロックを印加し、その後、挿入位置に対応するシフトレジスタユニット及び後続する（ｎ−１）個のシフトレジスタユニット群の前記直接入力端子に挿入すべきｎ段分のデータを順番を対応させて印加して当該ｎ個のシフトレジスタユニット群のみ直接入力端子を選択してシフトクロックを印加するように制御する。
【００１１】
更に他の方法は、前述シフトレジスタに順に保持されたデータ列の任意の位置のデータを置換する場合の制御方法であって、前記置換開始位置に対応するシフトレジスタユニットの前記直接入力端子に置換すべきデータを印加して当該シフトレジスタユニットのみ直接入力端子を選択してシフトクロックを印加する。
【００１２】
また、本発明の上記同様に前述シフトレジスタに順に保持されたデータ列の任意の位置からｎ段分のデータを置換する場合の制御方法では、前記置換開始位置に対応するシフトレジスタユニット及び後続する（ｎ−１）個のシフトレジスタユニット群の前記直接入力端子に置換すべきｎ段分のデータを順番を対応させて印加して当該ｎ個のシフトレジスタユニット群のみ直接入力端子を選択してシフトクロックを印加する。
【００１３】
【発明の実施の形態】
本発明のシフトレジスタは、シフトレジスタユニットを多段に縦続接続するとともに各レジスタユニットに直接にデータを入力可能な直接入力端子を設け、前記直接入力端子へのデータ入力を個別に制御可能なゲート手段と、任意位置の連続したレジスタユニット全てにのみシフトクロックを印加することも可能なクロック手段とを設ける。
【００１４】
上記のようなシフトレジスタに対して所定制御を行うことでデータの挿入、置換等を行う。データの挿入には挿入位置に対応するシフトレジスタユニットの入力を挿入すべきデータが印加された前記直接入力端子を選択し、前記挿入位置に対応するシフトレジスタユニット及び後段の連続するシフトレジスタユニットにシフトクロックを印加する。複数回繰り返せば複数段のデータ挿入ができる。
【００１５】
また、ｎ段分のデータを挿入する場合の制御として、挿入位置に対応するシフトレジスタユニット及び後段の連続するシフトレジスタユニットにｎ−１個のシフトクロックを印加し、その後、挿入位置に対応するシフトレジスタユニット及び後続する（ｎ−１）個のシフトレジスタユニット群の前記直接入力端子に挿入すべきｎ段分のデータを順番を対応させて印加して当該ｎ個のシフトレジスタユニット群のみ直接入力端子を選択してシフトクロックを印加する。
【００１６】
更に、前述シフトレジスタに順に保持されたデータ列の任意の位置からｎ段分のデータを置換する場合の制御には、置換開始位置に対応するシフトレジスタユニット及び後続する（ｎ−１）個のシフトレジスタユニット群の直接入力端子に置換すべきｎ段分のデータを順番を対応させて印加して当該ｎ個のシフトレジスタユニット群のみ直接入力端子を選択してシフトクロックを印加する。
【００１７】
【実施例】
以下、実施例を挙げ図面を参照して本発明について詳細に説明する。図１は本発明装置の一実施例であるシフトレジスタ７０のブロック図を示している。図１のシフトレジスタは、縦続接続された複数のレジスタユニット１１〜１ｎと、シフト／セレクタ制御部１０によって構成されている。
【００１８】
各レジスタユニットには、その入力データとして前段のレジスタユニットの出力データまたはデータバスＤＢ上のデ―タのいずれかを選択的に入力することができる。どちらの入力に印加されているデータを用いるかは、シフト／セレクタ制御部１０からのＳＥＬ信号によって選択することができる。
【００１９】
また、各レジスタユニットはシフト／セレクタ制御部１０から出力されるＣＫ信号に同期して入力データを取り込み、出力に反映させる。従って、各レジスタユニット全てに前段の出力データが入力される場合には全体として従来のシフトレジスタと同様にＣＫ信号に同期してシフト動作を行う。
【００２０】
ＣＫ信号（シフトクロック）は、外部のクロック源から加えられたクロックパルスをシフト／セレクタ制御部１０で加工して出力されるもので、個々のシフトレジスタユニットに対して独立して印加が制御可能になっている。そして、単なるシフト動作のためには全てのシフトレジスタユニットに同一タイミングでＣＫ信号を入力すれば良い。
【００２１】
このようにクロック源とシフト／セレクタ制御部により構成されるクロック手段によって、例えばデータバス上のデータ取り込み動作を行うレジスタユニット以降にＣＫ信号（シフトクロック）を供給することができる。
【００２２】
図２の回路図は、レジスタ回路部の一実施例である。それぞれｎ個のセレクタ回路２１〜２ｎとＤ型Ｆ／Ｆ（フリップフロップ）３１〜３ｎを個々に対にしてレジスタユニットＲ１〜Ｒｎとした構成であり、対となるレジスタユニットはｎ段に直列接続されている。
【００２３】
各レジスタユニットはＳＥＬ信号がアクティブの場合Ａ入力を、そうでない場合Ｂ入力（ＩＮ或いは前段レジスタユニットの出力）を選択する。またＣＫ信号がアクティブになったとき、そのとき選択されている入力端子に印加されているデータを取り込んで保持するとともにこのデータを出力に反映させる。
【００２４】
次に、シフト／セレクタ制御部１０は、シフト位置指定データによって指定されるレジスタユニットＲｘ（１≦ｘ≦ｎ）のみに対して、前段の出力データではなくデータバス上のデータを選択するよう指示する。また、シフト位置指定データによって指定されるレジスタユニットＲｘ以降のレジスタユニットに対し、シフトクロックであるＣＫ信号を与える。図３の回路図は、シフト／セレクタ制御部１０の一実施例を示している。
【００２５】
ラインデコーダ４０には、シフト位置を指定するためのバイナリー信号１〜ｋが入力され、デコードされた結果ＳＥＬ１〜ＳＥＬｎのいずれかの信号がアクティブとなる。ＯＲ回路５２〜５ｎは、２つの入力の少なくとも１つがアクティブとなったとき、出力もアクティブとなる回路である。本実施例では、あるＳＥＬ信号がアクティブとなると、それを入力とするＯＲ回路以降の全てのＯＲ回路の出力がアクティブとなる。
【００２６】
ＳＥＬ１とＯＲ回路の出力はイネーブル付きバッファ６１〜６ｎのイネーブル端子に接続されている。イネーブルバッファは、イネーブル端子にアクティブ信号が印可されると入力信号が出力端子に出力される素子である。本回路例では、ＳＥＬｘ（１≦ｘ≦ｎ）端子がアクティブになると、イネーブルバッファ６ｘ以降の全てのイネーブルバッファのイネーブル端子がアクティブとなり、シフトクロックがＣＫｘ〜ＣＫｎに出力されるようになる。
【００２７】
このように、シフト／セレクタ制御部はデータバス上のデータ取り込み動作を行うレジスタユニット以降にＣＫ信号（シフトクロック）を供給する。また、そのレジスタユニットのみＳＥＬ信号として、データバス側を選択するような極性のものをシフト／セレクタ制御部１０から出力する。
【００２８】
以上述べた回路構成により、実施例のシフトレジスタは、シフト位置指定ビットで指定される、ある特定のレジスタユニットのみ入力としてデータバス側を選択し、シフトクロックがアクティブになると、そのレジスタユニットはデータバス上のデータを取り込み、また、そのレジスタユニットから後のレジスタユニットでは前段の出力データを取り込む、即ちシフト動作を行うこととなる。
【００２９】
このように実施例レジスタ装置は、ある並びのデータ系列がシフトレジスタにセットされていて、その任意の位置に所望のデータを割り込ませたいという場合に、任意のレジスタユニットに対して所望のデータをセットしそのレジスタユニット以降に元からセットされているデータは後段にシフトさせるという動作（データの挿入）がハードウェアによって簡単かつ高速に実行可能である。
【００３０】
本実施例のレジスタは、例えば一連のシリアルデータ中の所定位置に特定のシリアルコードを挿入する場合等に利用することができる。コード挿入の動作例を図４を参照して説明する。
【００３１】
ステップ１は、ある時点で本実施例のシフトレジスタに格納されているデータ列を示す。Ｒ１〜Ｒｎは連続するレジスタユニットを示す。ここでステップ２に示す如く、Ｒ７とＲ８の間に“１，１，１，０，０，０”という６ビットの連続データを挿入する場合を想定する。そのためには、データバス上にＢ４というデータを出力し、Ｃ１が格納されている８段目のレジスタユニットＲ８をシフト位置指定ビットで指定し、シフトクロックをアクティブとしシフトクロックに対応して順に“１，１，１，０，０，０”をレジスタユニットＲ８に入力すればよい。
【００３２】
ステップ３は上記動作を行った結果を示す。同様な動作を繰返すことで６ビット分のデータが挿入される。ステップ４は最終結果を示す。このようにハードウェアによって、任意の位置にデータを割り込ませ、所望の並びのデータ列を構築することが出来る。なお、挿入位置から挿入個数分の段数だけシフト動作を行わせた後に、開いたレジスタユニット群に挿入データを並列入力しても同じようにデータの挿入が行える（図示なし）。
【００３３】
上述のようなシフトレジスタを並列に複数個並列に接続して、共通のセレクト／シフト制御部によって段数位置が対応したシフトレジスタユニット群毎に同期したシフトクロックが選択的に印加され、且つ段数位置の対応するシフトレジスタユニット群のそれぞれの直接入力端子からの入力動作が同期して行われるようにしたシフトレジスタを構成することもできる。
【００３４】
図５の回路図は、レジスタユニットの他の実施例を説明するブロック図である。それぞれｍ個（ｍは１以上）のセレクタ回路２１´〜２ｍ´とＤ型Ｆ／Ｆ（フリップフロップ）３１´〜３ｍ´を個々に対にした構成であり、各対（単位ユニット）には共通のＳＥＬ入力及び共通のＣＫ入力が接続されている。各レジスタユニットはＳＥＬ信号がアクティブの場合Ａ入力を、そうでない場合Ｂ入力を選択する。またＣＫ信号がアクティブになったとき、そのとき選択されている入力端子に印加されているデータを取り込んで保持するとともにこのデータを出力に反映させる。
【００３５】
このようなレジスタユニットを複数段、それぞれのレジスタユニットの出力（ＯＵＴ１〜ＯＵＴｍ）を、次段のレジスタユニットの対応する単位ユニットのＢ入力に接続させて、順に縦続させることで複数ビット（ｍビット）のデータが扱えるシフトレジスタを構成することができる。Ａ入力は、例えばデータバスに接続される（図１参照）。
【００３６】
上述のシフトレジスタの動作例を図６を参照して説明する。まず前提条件として、大別するとＡ，Ｂ，Ｃ，Ｄの４種類のデータがあるとする。各種類には複数のデータがあり、それぞれ順序を示す番号がふられているものとする。ここでは次々に発生するデータをＡ〜Ｄの順に、なおかつ同じ種類の中では若番順（昇順）に並べる必要がある場合を想定する。
【００３７】
ステップ１は、ある時点で本実施例のシフトレジスタに格納されているデータ列を示す。もしここでステップ２に示す如く、Ｂ４というデータが発生した場合、このデータはＢ３とＣ１との間に挿入すべきである。そのためには、データバス上にＢ４というデータを出力し、Ｃ１が格納されている８段目のレジスタユニットをシフト位置指定ビットで指定し、シフトクロックをアクティブとすればよい。ステップ３は上記動作を行った結果を示すものである。このようにハードウェアによって、任意の位置にデータを割り込ませ、所望の並びのデータ列を構築することが出来る。
【００３８】
【発明の効果】
以上説明したように本発明によれば、既述した構成とこれに対応した制御によって、ある並びのデータ系列がシフトレジスタにセットされていて、その任意の位置に所望のデータを割り込ませる等のデータ列に対する操作が、任意のレジスタユニットに対して所望のデータをセットしそのレジスタユニット以降のレジスタユニットに順次にシフトさせることによりハードウェア上で簡単かつ高速に実行可能となるという効果が得られる。なお、本発明のシフトレジスタは構成的に簡易であり安価との利点を有する。
【図面の簡単な説明】
【図１】本発明のシフトレジスタの一実施例の構成を示すブロック図である。
【図２】本発明に係るレジスタユニットの構成の一例を示す回路図である。
【図３】本発明に係るシフト／セレクタ制御部の構成の一例を示す回路図である。
【図４】本発明のレジスタの作用を説明する説明図である。
【図５】本発明に係るレジスタユニットの構成の他の例を示す回路図である。
【図６】本発明のレジスタの作用を説明する説明図である。
【符号の説明】
１０…シフト／セレクタ制御部
１１〜１ｎ…レジスタユニット
２１〜２ｍ…セレクタ回路
３１〜３ｍ…Ｄ型Ｆ／Ｆ（フリップフロップ）
４０…ラインデコーダ
５２〜５ｎ…ＯＲ回路
６１〜６ｎ…イネーブル付きバッファ
７０…シフトレジスタ
ＤＢ…データバス
Ｒ１〜Ｒｍ…レジスタユニット
【図１】
0003744285.tif 000002
【図２】
0003744285.tif 000003
【図３】
0003744285.tif 000004
【図４】
0003744285.tif 000005
【図５】
0003744285.tif 000006
【図６】
0003744285.tif 000007