(57)【要約】【課題】入力データのビット数が大きく変動する場合にもビット数を高速に検出すること。【解決手段】入力データビット長検出部１２０は、最初にＲビットを検査対象ビットブロックとし、基準位置からＲビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、右シフトの結果に基づいて当該上位半分のビットブロックと前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、ビット分木終了位置まで右シフトして最終シフトビット数累積値を求め、当該最終シフトビット数累積値と前記動作において最後に検査対象ビットブロックとして選択されたビットのデータの値とを加算して入力データのビット長を検出する。【選択図】図１
2007149029.tif 000002
【特許請求の範囲】
【請求項１】
ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データのビット長を検出するビット長検出器であって、
前記入力データの絶対値を受けて保持するＲ（Ｒは１６以上の２のべき乗の値である）ビットの入力データ保持手段と、
前記入力データ保持手段に保持された前記入力データのビット長を検出する入力データビット長検出手段と、を具備し、
前記入力データビット長検出手段は、最初に前記Ｒビットを検査対象ビットブロックとし、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、次に前記上位半分のビットブロックの右シフトの結果に基づいて当該上位半分のビットブロックと前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトし、次に当該上位半分のビットブロックの右シフトの結果に基づいて当該検査対象ビットブロックの上位半分のビットブロックと下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、次に前記選択された検査対象ビットブロックを分けることができないビット分木終了位置まで前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトして前記入力データのビット長を検出するものであって、
前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトした時において、当該右シフトの結果が０である時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算せず、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算し、かつ、当該右シフトの結果が０である時に当該上位半分のビットブロックと分けられた前記下位半分のビットブロックを次の検査対象ビットブロックとして選択し、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックを次の検査対象ビットブロックとして選択して、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記ビット分木終了位置まで右シフトして最終シフトビット数累積値を求め、次に当該最終シフトビット数累積値と前記動作において最後に検査対象ビットブロックとして選択されたビットのデータの値とを加算して前記入力データのビット長を検出するビット長検出器。
【請求項２】
ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データのビット長を検出するビット長検出器であって、
前記入力データの絶対値を受けて保持するＲ（Ｒは１６以上の２のべき乗の値である）ビットの入力データ保持手段と、
前記入力データ保持手段に保持された前記入力データのビット長を検出する入力データビット長検出手段と、を具備し、
前記入力データビット長検出手段は、
Ｍ（Ｍは０以上の整数である）ビット値と当該Ｍビット値のビット長とを関連づけて記憶し、かつ、当該ビット長の最大値が所定の２のべき乗の値であるビット長テーブルと、
最初に前記Ｒビットを検査対象ビットブロックとし、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、次に前記上位半分のビットブロックの右シフトの結果に基づいて当該上位半分のビットブロックと前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトし、次に当該上位半分のビットブロックの右シフトの結果に基づいて当該検査対象ビットブロックの上位半分のビットブロックと下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記検査対象ビットブロックをＤ回（Ｄは１以上の整数である）分けた時における第Ｄのビット分木位置まで右シフトして前記入力データの中間ビット長を検出するものであって、前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトした時において、当該右シフトの結果が０である時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算せず、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算し、かつ、当該右シフトの結果が０である時に当該上位半分のビットブロックと分けられた前記下位半分のビットブロックを次の検査対象ビットブロックとして選択し、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックを次の検査対象ビットブロックとして選択して、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記検査対象ビットブロックをＤ回分けた時における第Ｄのビット分木位置まで右シフトして中間シフトビット数累積値を求めて前記入力データの前記中間ビット長を検出する中間ビット長検出手段と、
前記選択された次の検査対象ビットブロックのビット数が前記ビット長テーブルのビット長の最大値となった時に当該選択された次の検査対象ビットブロックの全てのビットのデータの値であるビット値を抽出して抽出ビット値を生成する抽出手段と、
当該抽出ビット値に基づいて前記ビット長テーブルを検索して前記抽出ビット値のビット数を検出して抽出ビット数検出値を生成する抽出ビット数検出手段と、
前記中間ビット長と前記抽出ビット数検出値とを加算して前記入力データのビット長を検出する検出手段と、
を具備するビット長検出器。
【請求項３】
ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データのビット長を検出するビット長検出方法であって、
Ｒ（Ｒは１６以上の２のべき乗の値である）ビットの入力データ保持手段が前記入力データの絶対値を受けて保持する入力データ保持ステップと、
前記入力データ保持手段に保持された前記入力データのビット長を検出する入力データビット長検出ステップと、を具備し、
前記入力データビット長検出ステップは、
最初に前記Ｒビットを検査対象ビットブロックとし、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、次に前記上位半分のビットブロックの右シフトの結果に基づいて当該上位半分のビットブロックと前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトし、次に当該上位半分のビットブロックの右シフトの結果に基づいて当該検査対象ビットブロックの上位半分のビットブロックと下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、次に前記選択された検査対象ビットブロックを分けることができないビット分木終了位置まで前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトして前記入力データのビット長を検出するものであって、
前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトした時において、当該右シフトの結果が０である時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算せず、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算し、かつ、当該右シフトの結果が０である時に当該上位半分のビットブロックと分けられた前記下位半分のビットブロックを次の検査対象ビットブロックとして選択し、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックを次の検査対象ビットブロックとして選択して、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記ビット分木終了位置まで右シフトして最終シフトビット数累積値を求め、次に当該最終シフトビット数累積値と前記動作において最後に検査対象ビットブロックとして選択されたビットのデータの値とを加算して前記入力データのビット長を検出するビット長検出方法。
【請求項４】
ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データのビット長を検出するビット長検出方法であって、
Ｒ（Ｒは１６以上の２のべき乗の値である）ビットの入力データ保持手段が前記入力データの絶対値を受けて保持する入力データ保持ステップと、
前記入力データ保持手段に保持された前記入力データのビット長を検出する入力データビット長検出ステップと、を具備し、
前記入力データビット長検出ステップは、
ビット長の最大値が所定の２のべき乗の値であるビット長を記憶しているビット長テーブルがＭ（Ｍは０以上の整数である）ビット値と当該Ｍビット値のビット長とを関連づけて記憶するビット長記憶ステップと、
最初に前記Ｒビットを検査対象ビットブロックとし、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、次に前記上位半分のビットブロックの右シフトの結果に基づいて当該上位半分のビットブロックと前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトし、次に当該上位半分のビットブロックの右シフトの結果に基づいて当該検査対象ビットブロックの上位半分のビットブロックと下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記検査対象ビットブロックをＤ回（Ｄは１以上の整数である）分けた時における第Ｄのビット分木位置まで右シフトして前記入力データの中間ビット長を検出するものであって、前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトした時において、当該右シフトの結果が０である時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算せず、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算し、かつ、当該右シフトの結果が０である時に当該上位半分のビットブロックと分けられた前記下位半分のビットブロックを次の検査対象ビットブロックとして選択し、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックを次の検査対象ビットブロックとして選択して、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記検査対象ビットブロックをＤ回分けた時における第Ｄのビット分木位置まで右シフトして中間シフトビット数累積値を求めて前記入力データの前記中間ビット長を検出する中間ビット長検出ステップと、
前記選択された次の検査対象ビットブロックのビット数が前記ビット長テーブルのビット長の最大値となった時に当該選択された次の検査対象ビットブロックの全てのビットのデータの値であるビット値を抽出して抽出ビット値を生成する抽出ステップと、
当該抽出ビット値に基づいて前記ビット長テーブルを検索して前記抽出ビット値のビット数を検出して抽出ビット数検出値を生成する抽出ビット数検出ステップと、
前記中間ビット長と前記抽出ビット数検出値とを加算して前記入力データのビット長を検出する検出ステップと、
を具備するビット長検出方法。
【請求項５】
ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データのビット長を検出するビット長検出プログラムにおいて、
Ｒ（Ｒは１６以上の２のべき乗の値である）ビットの入力データ保持手段が前記入力データの絶対値を受けて保持する入力データ保持ステップと、
前記入力データ保持手段に保持された前記入力データのビット長を検出する入力データビット長検出ステップと、をコンピューターに実行させるビット長検出プログラムであって、
前記入力データビット長検出ステップは、
最初に前記Ｒビットを検査対象ビットブロックとし、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、次に前記上位半分のビットブロックの右シフトの結果に基づいて当該上位半分のビットブロックと前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトし、次に当該上位半分のビットブロックの右シフトの結果に基づいて当該検査対象ビットブロックの上位半分のビットブロックと下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、次に前記選択された検査対象ビットブロックを分けることができないビット分木終了位置まで前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトして前記入力データのビット長を検出するものであって、
前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトした時において、当該右シフトの結果が０である時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算せず、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算し、かつ、当該右シフトの結果が０である時に当該上位半分のビットブロックと分けられた前記下位半分のビットブロックを次の検査対象ビットブロックとして選択し、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックを次の検査対象ビットブロックとして選択して、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記ビット分木終了位置まで右シフトして最終シフトビット数累積値を求め、次に当該最終シフトビット数累積値と前記動作において最後に検査対象ビットブロックとして選択されたビットのデータの値とを加算して前記入力データのビット長を検出するビット長検出プログラム。
【請求項６】
ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データのビット長を検出するビット長検出プログラムであって、
Ｒ（Ｒは１６以上の２のべき乗の値である）ビットの入力データ保持手段が前記入力データの絶対値を受けて保持する入力データ保持ステップと、
ビット長の最大値が所定の２のべき乗の値であるビット長を記憶しているビット長テーブルがＭ（Ｍは０以上の整数である）ビット値と当該Ｍビット値のビット長とを関連づけて記憶するビット長記憶ステップと、
最初に前記Ｒビットを検査対象ビットブロックとし、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、次に前記上位半分のビットブロックの右シフトの結果に基づいて当該上位半分のビットブロックと前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトし、次に当該上位半分のビットブロックの右シフトの結果に基づいて当該検査対象ビットブロックの上位半分のビットブロックと下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記検査対象ビットブロックをＤ回（Ｄは１以上の整数である）分けた時における第Ｄのビット分木位置まで右シフトして前記入力データの中間ビット長を検出するものであって、前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトした時において、当該右シフトの結果が０である時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算せず、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算し、かつ、当該右シフトの結果が０である時に当該上位半分のビットブロックと分けられた前記下位半分のビットブロックを次の検査対象ビットブロックとして選択し、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックを次の検査対象ビットブロックとして選択して、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記検査対象ビットブロックをＤ回分けた時における第Ｄのビット分木位置まで右シフトして中間シフトビット数累積値を求めて前記入力データの前記中間ビット長を検出する中間ビット長検出ステップと、
前記選択された次の検査対象ビットブロックのビット数が前記ビット長テーブルのビット長の最大値となった時に当該選択された次の検査対象ビットブロックの全てのビットのデータの値であるビット値を抽出して抽出ビット値を生成する抽出ステップと、
当該抽出ビット値に基づいて前記ビット長テーブルを検索して前記抽出ビット値のビット数を検出して抽出ビット数検出値を生成する抽出ビット数検出ステップと、
前記中間ビット長と前記抽出ビット数検出値とを加算して前記入力データのビット長を検出する検出ステップと、
をコンピューターに実行させるビット長検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ディジタル信号処理システムにおいて入力データを正規化するために入力データのビット長を検出するビット長検出器、ビット長検出方法及びビット長検出プログラムに関するものである。
【背景技術】
【０００２】
ディジタル信号を処理する装置として、音声認識装置がある。この音声認識装置は、ユーザが発声した音声の特徴点データ（ケプストラム）と認識装置が持つ音声素片テンプレートとを数十ｍｓの時間毎にマッチングして尤も確からしい語彙をリアルタイムで認識するものである。
【０００３】
通常、音声素片テンプレートは数千種類の要素から構成される。ユーザの音声がどの音素かを予測することは難しく、確実に音声を認識するためには、ユーザが発声した音声特徴点データと音声素片テンプレートの全ての要素とを照合する必要がある。この照合の制御方法を工夫しても、１単位時間当たりに照合する音声素片テンプレートの要素数は数百種類になり、また、発声時間に応じて照合を繰り返すため、照合結果として得られる尤度は膨大な量となる。
【０００４】
膨大な量の尤度データを効率良く保持するために、固定小数点データ形式（ブロックフローティング）が採用される。その際、有効なビット長を調べるビット長検出器が必要となる。
【０００５】
音声認識装置においては、ユーザの発声内容を予測できず、入力系列に対する尤度の変化は必ずしも滑らかではない。すなわち、音声認識装置においては、過去の照合結果から現在の照合結果の尤度を予測することは困難である。したがって、音声認識装置においては、入力データのビット数が大きく変動する場合にも過去の入力データの入力系列に依存せずにビット数を高速に検出することができるビット長検出器が必要である。
【０００６】
携帯電話機などに使用されているデシタル信号としては、小数点が桁数の特定位置に固定されている固定小数点のディジタル信号が一般的に使用されている。
【０００７】
この固定小数点のディジタル信号を処理する装置においては、入力されるデータのビット数に対応して演算器の演算桁数を有効に活用するために、入力されるデータを正規化してから固定小数点のディジタル信号を演算器で処理する手法一般的に用いられている。
【０００８】
入力されるデータを正規化する従来の正規化シフトビット数検出回路として、特許文献１に記載されたものがある。
【０００９】
この特許文献１に記載された正規化シフトビット数検出回路（ビット長検出器）は、順次入力されるディジタル信号処理システムにおける複数ビットの入力データについて、その正規化を行うための正規化シフトビット数を検出する回路であって、上記入力データのシフト量を格納するシフト量格納部と、現入力データを上記シフト量格納部に格納されているシフト量だけシフトして出力するシフト手段と、上記シフト手段の出力データのうち所定位置の一定ビット幅のデータを入力とし、該入力データの最上位から何ビット目にて初めてビットデータの数値が反転するかを検出して、該最上位ビットから数値反転が生じた反転ビットまでのビット数を、予備演算正規化シフトビット数として出力するビット数検出手段と、該予備演算正規化シフトビット数と上記シフト量とを加算して、該加算値を上記入力データに対応する正規化シフトビット数として出力するとともに、該正規化シフトビット数に応じて上記現入力データの次に入力される次入力データに対応するシフト量を発生する演算処理手段とを備えている。  
【特許文献１】特開平１１−２８２６４９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、従来の正規化シフトビット数検出回路（ビット長検出器）においては、現入力データに対応する正規化シフトビット数を検出して出力するとともに、該正規化シフトビット数に応じて上記現入力データの次に入力される次入力データに対応するシフト量を発生し、次回動作時、過去のデータを利用して現入力データの検査開始位置を予想して高速にビット数を検出するが、入力データのビット数が大きく変動する場合に現入力データの検査開始位置を予想がはずれる可能性があり、入力データのビット数が大きく変動する場合にビット数を高速に検出することができないという問題がある。
【００１１】
また、従来の正規化シフトビット数検出回路（ビット長検出器）は、入力データのビット数の演算に特定の演算装置が必要であるため、汎用の中央処理装置（ＣＰＵ）で構成することができないという問題がある。
【００１２】
本発明は、かかる点に鑑みてなされたものであり、入力データのビット数が大きく変動する場合にもビット数を高速に検出することができるビット長検出器、ビット長検出方法及びビット長検出プログラムを提供することを目的とする。
【００１３】
また、本発明は、入力データのビット数を汎用の中央処理装置（ＣＰＵ）で演算することができるビット長検出器、ビット長検出方法及びビット長検出プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明は、ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データのビット長を検出するビット長検出器であって、前記入力データの絶対値を受けて保持するＲ（Ｒは１６以上の２のべき乗の値である）ビットの入力データ保持手段と、前記入力データ保持手段に保持された前記入力データのビット長を検出する入力データビット長検出手段と、を具備し、前記入力データビット長検出手段は、最初に前記Ｒビットを検査対象ビットブロックとし、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、次に前記上位半分のビットブロックの右シフトの結果に基づいて当該上位半分のビットブロックと前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトし、次に当該上位半分のビットブロックの右シフトの結果に基づいて当該検査対象ビットブロックの上位半分のビットブロックと下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、次に前記選択された検査対象ビットブロックを分けることができないビット分木終了位置まで前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトして前記入力データのビット長を検出するものであって、前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトした時において、当該右シフトの結果が０である時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算せず、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算し、かつ、当該右シフトの結果が０である時に当該上位半分のビットブロックと分けられた前記下位半分のビットブロックを次の検査対象ビットブロックとして選択し、また、当該右シフトの結果が０でない時に次に当該上位半分のビットブロックを次の検査対象ビットブロックとして選択して、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記ビット分木終了位置まで右シフトして最終シフトビット数累積値を求め、次に当該最終シフトビット数累積値と前記動作において最後に検査対象ビットブロックとして選択されたビットのデータの値とを加算して前記入力データのビット長を検出する構成を採る。
【発明の効果】
【００１５】
本発明によれば、入力データのビット数が大きく変動する場合にもビット数を高速に検出することができる。
【００１６】
また、本発明によれば、汎用ＣＰＵに搭載されているシフト演算器、比較器、加算器のみでビット長検出器を構成することができ、特定の演算器を追加する必要がないため、ビット長検出を必要とするディジタル信号処理を行うプログラム、あるいは、ビット長検出を必要とするディジタル信号処理を行う装置の構成規模を縮小することが可能である。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態について、図面を参照して詳細に説明する。
【００１８】
（実施の形態１）
まず、本発明の実施の形態１について、図面を参照して詳細に説明する。図１は、本発明の実施の形態１に係るビット長検出器の構成を示すブロック図である。
【００１９】
図１に示すように、本発明の実施の形態１に係るビット長検出器１００は、ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データのビット長を検出するものである。ビット長検出器１００は、入力データ保持装置１１０及び入力データビット長検出部１２０を具備している。
【００２０】
入力データ保持装置１１０は、Ｒ（Ｒは１６以上の２のべき乗の値である）ビットのレジスタで構成されている。入力データ保持装置１1０は、ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データの絶対値を受けて一時的に保持する。
【００２１】
入力データビット長検出部１２０は、入力データ保持装置１１０に保持された入力データのビット長を検出してビット長レジスタ１４０に出力する。
【００２２】
入力データビット長検出部１２０は、最初に入力データ保持装置１１０のＲビットを検査対象ビットブロックとし、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトする。
【００２３】
次に、入力データビット長検出部１２０は、前記上位半分のビットブロックの右シフトの結果に基づいて当該上位半分のビットブロックと前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする。
【００２４】
次に、入力データビット長検出部１２０は、当該上位半分のビットブロックの右シフトの結果に基づいて当該検査対象ビットブロックの上位半分のビットブロックと下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする。
【００２５】
次に、入力データビット長検出部１２０は、前記動作を繰り返して、選択された次の検査対象ビットブロックを分けることができないビット分木終了位置まで前記選択された次の検査対象ビットブロックの上位半分のビットブロックを右シフトして前記入力データのビット長を検出するものである。
【００２６】
そして、入力データビット長検出部１２０は、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを右シフトした時において、当該右シフトの結果が０である時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算せず、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算する。
【００２７】
また、入力データビット長検出部１２０は、当該右シフトの結果が０である時に当該上位半分のビットブロックと分けられた前記下位半分のビットブロックを次の検査対象ビットブロックとして選択し、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックを次の検査対象ビットブロックとして選択して、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、  次に前記選択された検査対象ビットブロックを分けることができないビット分木終了位置まで右シフトして最終シフトビット数累積値を求める。
【００２８】
次に、入力データビット長検出部１２０は、当該最終シフトビット数累積値と前記動作において最後に検査対象ビットブロックとして選択されたビットのデータの値とを加算して前記入力データのビット長を検出する。
【００２９】
次に、本発明の実施の形態１に係る入力データビット長検出部１２０の具体的な例について、詳細に説明する。
【００３０】
入力データビット長検出部１２０は、検査対象ビットブロック１２１、制御部１２２、シフト数レジスタ１２３、シフト部１２４、シフト結果レジスタ１２５、判断部１２６、判断結果レジスタ１２７、検査対象更新部１２８、累積加算部１２９、累積値レジスタ１３０、抽出制御部１３１、ラストビットブロック１３２及び加算部１３３を具備している。
【００３１】
（１）入力データビット長検出部１２０は、初めに入力データ保持装置１１０から入力データＮ(Ｒビットまでの大きさの絶対値)を検査対象ビットブロック１２１へ入力する。また、制御部１２２は初回の検査対象範囲をＲビット幅とし、累計値レジスタ１３０の値を０に初期化する。
【００３２】
（２）制御部１２２は、検査対象の幅の半分のビット数をシフト数レジスタ１２３へ与える。ここで、シフト数レジスタ１２３の初回のシフト数はＲ/２である。以後、シフト数レジスタ１２３のシフト数は、制御部１２２により、順次に前回のシフト数の半分の値(Ｒ/４、Ｒ/８、 Ｒ/１６、 … など)に更新される。
【００３３】
（３）シフト部１２４は、検査対象ビットブロック１２１をシフト数レジスタ１２３で指定されたシフト数だけ右シフトし、シフトの結果をシフト結果レジスタ１２５へ格納する。ここで、シフト数レジスタ１２３のシフト数は、検査対象の範囲の半分(初回はＲ/２ビット)である。シフト結果レジスタ１２５のシフト結果は、検査対象ビットブロック１２１の検査対象範囲の上位半分のビットブロックを選択した結果と等しい。
【００３４】
（４）判断部１２６は、シフト結果レジスタ１２５のシフト結果を受けて、シフト結果が０か否かを判断して判断結果を生成して判断結果レジスタ１２７に格納する。この判断結果レジスタ１２７の判断結果に基づき、検査対象更新部１２８は、検査対象ビットブロックのデータの更新｛（５）又は（６）｝及びシフトビット数の累計｛（７）又は（８）｝を行う。
【００３５】
（５）判断結果レジスタ１２７の判断結果が０でない時、検査対象更新部１２８は、検査対象の上位半分のビットブロックであるシフト結果をシフト結果レジスタ１２５から選択し、次の検査対象として、検査対象ビットブロック１２１へ入力する。
【００３６】
（６）判断結果レジスタ１２７の判断結果が０である時に、検査対象更新部１２８は、検査対象ビットブロックのデータを更新しない。ここで、判断結果が０である時、検査対象ビットブロック１２１の検査対象範囲の上位半分がすべて０であるから、検査対象ビットブロック１２１の値を更新しないことは、次の検査対象として、今回の検査対象ビットブロック１２１の検査対象範囲の下位半分のデータを選択した結果と等しい。
【００３７】
（７）判断結果レジスタ１２７の判断結果が０でない時に、累積加算部１２９は、今回右シフトしたシフト数（シフト数レジスタ１２３の値）を累積値レジスタ１３０のシフトビット数累計値へ加算して加算後のシフトビット数累計値を累積値レジスタ１３０に格納する。
【００３８】
（８）判断結果レジスタ１２７の判断結果が０である時、累積加算部１２９は、累積値レジスタ１３０のシフトビット数累計値の更新を行わない。すなわち、累積値レジスタ１３０のシフトビット数累計値へ何も加算しない。
【００３９】
（９）制御部１２２は、次回の検査対象範囲のビット幅を今回の半分に狭めて、検査対象範囲のビット幅が１になるまで、前記（２）〜（８）の操作を繰り返す。なお、繰り返し操作回数は、入力値の上限であるＲビットに依存して固定の値“log2(Ｒ)”に決まる。すなわち、制御部１２２は、固定回数“log2(Ｒ)”回だけ前記（２）〜（８）の操作を繰り返す。このlog2(Ｒ)は、Ｒビット幅を２等分ずつ分割できる回数である。例えば、Ｒが１６である場合には、操作回数はlog2(１６)＝４回である。
【００４０】
（１０）次の検査対象ビットブロック１２１の検査対象範囲のビット幅が１になった時に、すなわち、“log2(Ｒ)”回だけ前記（２）〜（８）の操作を繰り返した時に、抽出制御部１３１は、制御部１２２からの制御信号を受けて、検査対象ビットブロック１２１の最後の検査対象範囲として選択されたデータを抽出し、このデータをラストビットブロック１３２へ入力する。
【００４１】
（１１）最後に、加算部１３３は、制御部１２２が検査対象範囲のビット幅を１にした時の累積値レジスタ１３０のシフトビット数累計値とラストビットブロック１３２のデータとを加算し入力データＮのビット長を算出してビット長レジスタ１４０に出力する。
【００４２】
次に、本発明の実施の形態１に係るビット長検出器１００の動作の具体的な例について、図面を参照して詳細に説明する。
【００４３】
この具体的な例においては、入力データ保持装置１１０は、１６ビットのレジスタで構成されているものとする。また、検査対象ビットブロック１２１も、１６ビットのレジスタで構成されているものとする。
【００４４】
図２は、本発明の実施の形態１に係るビット長検出器の動作の具体的な例を説明するための図である。図３は、本発明の実施の形態１に係るビット長検出器の動作の具体的な例を説明するための他の図である。図４は、本発明の実施の形態１に係るビット長検出器の動作の具体的な例を説明するための他の図である。図５は、本発明の実施の形態１に係るビット長検出器の動作の具体的な例を説明するための他の図である。図６は、本発明の実施の形態１に係るビット長検出器の動作の具体的な例を説明するための他の図である。
【００４５】
１つ目の具体例として、入力データ保持装置１１０へ入力データＮ＝０ｘ７ＦＦＦ（１６進数）が入力された場合のビット長検出器１００の動作を具体的に説明する。
【００４６】
入力データビット長検出部１２０は、初めに入力データ保持装置１１０から入力データＮ＝０ｘ７ＦＦＦを検査対象ビットブロック１２１に入力する。また、制御部１２２は、初回の検査対象範囲を１６ビット幅とし、累計値レジスタ１３０の値を０に初期化する。
【００４７】
次に、制御部１２２は、シフト数レジスタ１２３のシフト数を検査対象の半分である８ビットとする。
【００４８】
シフト部１２４は、検査対象ビットブロック１２１をシフト数レジスタ１２３で指定されたシフト数＝８だけ右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【００４９】
すなわち、シフト部１２４は、図２において、前記検査対象範囲１６ビット幅の最上位のビットの上位に位置する基準位置ＢＳ０から１６ビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置ＢＰＳまで前記検査対象範囲の上位半分のビットブロックを選択して右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【００５０】
判断部１２６は、シフト結果レジスタ１２５のシフト結果を受けて、シフト結果が０か否かを判断して判断結果を生成して判断結果レジスタ１２７に格納する。
【００５１】
この時に判断結果レジスタ１２７の判断結果が０でないから、検査対象更新部１２８は、検査対象の上位半分のビットブロックであるシフト結果をシフト結果レジスタ１２５から選択し、次の検査対象として、検査対象ビットブロック１２１へ入力する。
【００５２】
また、判断結果レジスタ１２７の判断結果が０でないから、累積加算部１２９は、今回右シフトしたシフト数（シフト数レジスタ１２３の値＝８）を累積値レジスタ１３０のシフトビット数累計値へ加算して加算後のシフトビット数累計値を累積値レジスタ１３０に格納する。
【００５３】
次に、制御部１２２は、検査対象範囲を８ビット幅とし、シフト数レジスタ１２３のシフト数を検査対象範囲の半分である４ビットとする。
【００５４】
そして、シフト部１２４は、検査対象ビットブロック１２１をシフト数レジスタ１２３で指定されたシフト数＝４だけ右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【００５５】
すなわち、シフト部１２４は、図３に示すように、前記ビット分木初期位置ＢＰＳから今回の検査対象範囲８ビット幅を二等分するビット分木位置ＢＰ１１までの今回の検査対象範囲の上位半分のビットブロックを選択して４ビットだけ右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【００５６】
判断部１２６は、シフト結果レジスタ１２５のシフト結果を受けて、シフト結果が０か否かを判断して判断結果を生成して判断結果レジスタ１２７に格納する。
【００５７】
この時に判断結果レジスタ１２７の判断結果が０でないから、検査対象更新部１２８は、検査対象の上位半分のビットブロックであるシフト結果をシフト結果レジスタ１２５から選択し、次の検査対象として、検査対象ビットブロック１２１へ入力する。
【００５８】
また、判断結果レジスタ１２７の判断結果が０でないから、累積加算部１２９は、今回右シフトしたシフト数（シフト数レジスタ１２３の値＝４）を累積値レジスタ１３０のシフトビット数累計値へ加算して加算後のシフトビット数累計値を累積値レジスタ１３０に格納する。
【００５９】
次に、制御部１２２は、検査対象範囲を４ビット幅とし、シフト数レジスタ１２３のシフト数を検査対象範囲の半分である２ビットとする。
【００６０】
シフト部１２４は、検査対象ビットブロック１２１をシフト数レジスタ１２３で指定されたシフト数＝２だけ右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【００６１】
すなわち、シフト部１２４は、図４に示すように、前記ビット分木位置ＢＰ１１から今回の検査対象範囲４ビット幅を二等分するビット分木位置ＢＰ１２までの今回の検査対象範囲の上位半分のビットブロックを選択して２ビットだけ右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【００６２】
判断部１２６は、シフト結果レジスタ１２５のシフト結果を受けて、シフト結果が０か否かを判断して判断結果を生成して判断結果レジスタ１２７に格納する。
【００６３】
この時に判断結果レジスタ１２７の判断結果が０でないから、検査対象更新部１２８は、検査対象の上位半分のビットブロックであるシフト結果をシフト結果レジスタ１２５から選択し、次の検査対象として、検査対象ビットブロック１２１へ入力する。
【００６４】
また、判断結果レジスタ１２７の判断結果が０でないから、累積加算部１２９は、今回右シフトしたシフト数（シフト数レジスタ１２３の値＝２）を累積値レジスタ１３０のシフトビット数累計値へ加算して加算後のシフトビット数累計値を累積値レジスタ１３０に格納する。
【００６５】
次に、制御部１２２は、検査対象範囲を２ビット幅とし、シフト数レジスタ１２３のシフト数を検査対象範囲の半分である１ビットとする。
【００６６】
そして、シフト部１２４は、検査対象ビットブロック１２１をシフト数レジスタ１２３で指定されたシフト数＝１だけ右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【００６７】
すなわち、シフト部１２４は、図５に示すように、前記ビット分木位置ＢＰ１２から今回の検査対象範囲２ビット幅を二等分するビット分木位置ＢＰ１３までの今回の検査対象範囲の上位半分のビットブロックを選択して１ビットだけ右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【００６８】
判断部１２６は、シフト結果レジスタ１２５のシフト結果を受けて、シフト結果が０か否かを判断して判断結果を生成して判断結果レジスタ１２７に格納する。
【００６９】
この時に判断結果レジスタ１２７の判断結果が０であるから、検査対象更新部１２８は、検査対象ビットブロックのデータを更新しない。
【００７０】
ここで、判断結果が０である時、検査対象ビットブロック１２１のデータの上位半分がすべて０なので、検査対象ビットブロック１２１の値を更新しないことは、次の検査対象として、今回の検査対象ビットブロック１２１の検査対象範囲の下位半分を選択した結果と等しい。
【００７１】
また、判断結果レジスタ１２７の判断結果が０であるから、累積加算部１２９は累積値レジスタ１３０のシフトビット数累計値の更新を行わない。すなわち、累積値レジスタ１３０のシフトビット数累計値へ何も加算しない。
【００７２】
次に、制御部１２２は、検査対象範囲を１ビット幅にする。
【００７３】
ここで、検査対象範囲が１ビット幅になったので、抽出制御部１３１は、制御部１２２からの制御信号を受けて、検査対象ビットブロック１２１の最後の検査対象として選択されたデータを抽出し、この値をラストビットブロック１３２へ入力する。
【００７４】
すなわち、抽出制御部１３１は、図６に示すように、検査対象ビットブロック１２１の最後の検査対象範囲として選択したＢｌａｓｔの値を抽出し、この値をラストビットブロック１３２へ入力する。
【００７５】
最後に、加算部１３３は、制御部１２２が検査対象範囲のビット幅を１にした時の累積値レジスタ１３０のシフトビット数累計値とラストビットブロック１３２の値とを加算し、入力データ０ｘ７ＦＦＦのビット長を算出してビット長レジスタ１４０に出力する。
【００７６】
この場合には、前記入力データ０ｘ７ＦＦＦのビット長は、８＋４＋２＋（ビットＢｌａｓｔの値）＝１５ビットとなる。
【００７７】
次に、本発明の実施の形態１に係るビット長検出器の動作の具体的な他の例について、図面を参照して詳細に説明する。
【００７８】
この具体的な他の例においては、入力データ保持装置１１０は、１６ビットのレジスタで構成されているものとする。また、検査対象ビットブロック１２１も、１６ビットのレジスタで構成されているものとする。
【００７９】
図７は、本発明の実施の形態１に係るビット長検出器の動作の具体的な他の例を説明するための図である。図８は、本発明の実施の形態１に係るビット長検出器の動作の具体的な他の例を説明するための他の図である。図９は、本発明の実施の形態１に係るビット長検出器の動作の具体的な他の例を説明するための他の図である。図１０は、本発明の実施の形態１に係るビット長検出器の動作の具体的な他の例を説明するための他の図である。図１１は、本発明の実施の形態１に係るビット長検出器の動作の具体的な他の例を説明するための他の図である。
【００８０】
２つ目の具体例として、入力データ保持装置１１０へ入力データＮ＝０ｘ００ＦＦ（１６進数）が入力された場合のビット長検出器１００の動作を具体的に説明する。
【００８１】
入力データビット長検出部１２０は、初めに入力データ保持装置１１０から入力データＮ＝０ｘ００ＦＦを検査対象ビットブロック１２１に入力する。また、制御部１２２は初回の検査対象範囲を１６ビット幅とし、累計値レジスタ１３０の値を０に初期化する。
【００８２】
次に、制御部１２２は、シフト数レジスタ１２３のシフト数を検査対象の半分である８ビットとする。
【００８３】
シフト部１２４は、検査対象ビットブロック１２１をシフト数レジスタ１２３で指定されたシフト数＝８だけ右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【００８４】
すなわち、シフト部１２４は、図７において、前記検査対象範囲１６ビット幅の最上位のビットの上位に位置する基準位置ＢＳ０から１６ビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置ＢＰＳまで前記検査対象範囲の上位半分のビットブロックを選択して右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【００８５】
判断部１２６は、シフト結果レジスタ１２５のシフト結果を受けて、シフト結果が０か否かを判断して判断結果を生成して判断結果レジスタ１２７に格納する。
【００８６】
この時に判断結果レジスタ１２７の判断結果が０であるから、検査対象更新部１２８は、検査対象ビットブロックのデータを更新しない。ここで、判断結果が０である時、検査対象ビットブロック１２１のデータの上位半分がすべて０なので、検査対象ビットブロック１２１の値を更新しないことは、次の検査対象として、今回の検査対象ビットブロック１２１の検査対象範囲の下位半分を選択した結果と等しい。
【００８７】
また、判断結果レジスタ１２７の判断結果が０であるから、累積加算部１２９は累積値レジスタ１３０のシフトビット数累計値の更新を行わない、すなわち、累積値レジスタ１３０のシフトビット数累計値へ何も加算しない。
【００８８】
次に、制御部１２２は、検査対象範囲を８ビット幅とし、シフト数レジスタ１２３のシフト数を検査対象範囲の半分である４ビットとする。
【００８９】
そして、シフト部１２４は、検査対象ビットブロック１２１をシフト数レジスタ１２３で指定されたシフト数＝４だけ右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【００９０】
すなわち、シフト部１２４は、図８に示すように、前記ビット分木初期位置ＢＰＳから今回の検査対象範囲８ビット幅を二等分するビット分木位置ＢＰ２１までの今回の検査対象範囲の上位半分のビットブロックを選択して４ビットだけ右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【００９１】
判断部１２６は、シフト結果レジスタ１２５のシフト結果を受けて、シフト結果が０か否かを判断して判断結果を生成して判断結果レジスタ１２７に格納する。
【００９２】
この時に判断結果レジスタ１２７の判断結果が０でないから、検査対象更新部１２８は、検査対象の上位半分のビットブロックであるシフト結果をシフト結果レジスタ１２５から選択し、次の検査対象として、検査対象ビットブロック１２１へ入力する。
【００９３】
また、判断結果レジスタ１２７の判断結果が０でないから、累積加算部１２９は、今回右シフトしたシフト数（シフト数レジスタ１２３の値＝４）を累積値レジスタ１３０のシフトビット数累計値へ加算して加算後のシフトビット数累計値を累積値レジスタ１３０に格納する。
【００９４】
次に、制御部１２２は、検査対象範囲を４ビット幅とし、シフト数レジスタ１２３のシフト数を検査対象範囲の半分である２ビットとする。
【００９５】
シフト部１２４は、検査対象ビットブロック１２１をシフト数レジスタ１２３で指定されたシフト数＝２だけ右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【００９６】
すなわち、シフト部１２４は、図９に示すように、前記ビット分木位置ＢＰ２１から今回の検査対象範囲４ビット幅を二等分するビット分木位置ＢＰ２２までの今回の検査対象範囲の上位半分のビットブロックを選択して２ビットだけ右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【００９７】
判断部１２６は、シフト結果レジスタ１２５のシフト結果を受けて、シフト結果が０か否かを判断して判断結果を生成して判断結果レジスタ１２７に格納する。
【００９８】
この時に判断結果レジスタ１２７の判断結果が０でないから、検査対象更新部１２８は、検査対象の上位半分のビットブロックであるシフト結果をシフト結果レジスタ１２５から選択し、次の検査対象として、検査対象ビットブロック１２１へ入力する。
【００９９】
また、判断結果レジスタ１２７の判断結果が０でないから、累積加算部１２９は、今回右シフトしたシフト数（シフト数レジスタ１２３のシフト数＝２）を累積値レジスタ１３０のシフトビット数累計値へ加算して加算後のシフトビット数累計値を累積値レジスタ１３０に格納する。
【０１００】
次に、制御部１２２は、検査対象範囲を２ビット幅とし、シフト数レジスタ１２３のシフト数を検査対象範囲の半分である１ビットとする。
【０１０１】
そして、シフト部１２４は、検査対象ビットブロック１２１をシフト数レジスタ１２３で指定されたシフト数＝１だけ右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【０１０２】
すなわち、シフト部１２４は、図１０に示すように、前記ビット分木位置ＢＰ２２から今回の検査対象範囲２ビット幅を二等分するビット分木位置ＢＰ２３までの今回の検査対象範囲の上位半分のビットブロックを選択して１ビットだけ右シフトし、右シフトの結果をシフト結果レジスタ１２５へ格納する。
【０１０３】
判断部１２６は、シフト結果レジスタ１２５のシフト結果を受けて、シフト結果が０か否かを判断して判断結果を生成して判断結果レジスタ１２７に格納する。
【０１０４】
この時に判断結果レジスタ１２７の判断結果が０でないから、検査対象更新部１２８は、検査対象の上位半分のビットブロックであるシフト結果をシフト結果レジスタ１２５から選択し、次の検査対象として、検査対象ビットブロック１２１へ入力する。
【０１０５】
また、判断結果レジスタ１２７の判断結果が０でないから、累積加算部１２９は、今回右シフトしたシフト数（シフト数レジスタ１２３のシフト数＝１）を累積値レジスタ１３０のシフトビット数累計値へ加算して加算後のシフトビット数累計値を累積値レジスタ１３０に格納する。
【０１０６】
次に、制御部１２２は、検査対象範囲を１ビット幅にする。
【０１０７】
ここで、検査対象範囲が１ビットになったので、抽出制御部１３１は、制御部１２２からの制御信号を受けて、検査対象ビットブロック１２１の最後の検査対象として選択されたデータを抽出し、この値をラストビットブロック１３２へ入力する。
【０１０８】
すなわち、抽出制御部１３１は、図１１に示すように、検査対象ビットブロック１２１の最後の検査対象範囲として選択したＢｌａｓｔの値を抽出し、この値をラストビットブロック１３２へ入力する。
【０１０９】
最後に、加算部１３３は、制御部１２２が検査対象範囲のビット幅を１にした時の累積値レジスタ１３０のシフトビット数累計値とラストビットブロック１３２の値とを加算し、入力データ０ｘ００ＦＦのビット長を算出してビット長レジスタ１４０に出力する。
【０１１０】
この場合には、前記入力データ０ｘ００ＦＦのビット長は、４＋２＋１＋（ビットＢｌａｓｔの値）＝８ビットとなる。
【０１１１】
ここで、入力データビット長検出部１２０の動作について数学的な補足説明をする。
【０１１２】
数値ＮをＲビットで表現される自然数とし、数値Ｎのビット位置ｋ（ｋ＝０、１、２…、Ｒ−１）にあるビットを ｂ（ｋ）＝｛０、１｝とすると、Ｎは次の（式１）で表現することができる。
【０１１３】
【数１】
2007149029.tif 000003
数値Ｎのビット長を求めることは、Ｎが０のときは、数値Ｎのビット長を０と定め、一方、Ｎが０でないときは、（式１）において、検査対象範囲をｋ＝０、１、２…、Ｒ−１のＲビット幅として、ｂ（ｋ）＝１となる最大のｋを探し、ｋ＋１を数値Ｎのビット長として計算することである。
【０１１４】
次に、実施の形態１の詳細説明（２）〜（６）および（９）の処理内容について数学的に補足説明する。
【０１１５】
（式１）は（式２）のようにｋ＝Ｒ／２を境にして２つの項（部分和）の和で表すことができる。
【０１１６】
【数２】
2007149029.tif 000004
（式２）において、第１項が０であるか否かによって、（式２）の第１項が０でなければ、数値Ｎのビット長は（式２）の第１項のビット長と等しく、（式２）の第１項が０ならば、数値Ｎのビット長は（式２）の第２項のビット長と等しい、といえる。
【０１１７】
つまり、（式２）の第１項が０であるか否かによって、（式２）の第１項または（式２）の第２項のいずれかの部分和を次の検査対象として選択し、選択された当該部分和に対し、検査対象範囲を前回の半分のビット幅にしてビット長検出を行うことで、数値Ｎのビット長検出を実現できる。
【０１１８】
次に、実施の形態１の詳細説明（７）、（８）、（１０）、（１１）の処理内容について補足説明する。
【０１１９】
ここで、説明のため、次の２つの式を定義する。
【０１２０】
ｋ＝０、１、２、…、Ｒ−１に対し、２のべき乗を（式３）で定義する。
【０１２１】
【数３】
2007149029.tif 000005
【０１２２】
Ｌを検査対象範囲のビット幅とし、Ｓを検査対象範囲の最下位のビット番号として、検査対象ビットブロックを（式４）で定義する。
【０１２３】
【数４】
2007149029.tif 000006
【０１２４】
（式３）と（式４）を用いて、（式２）を次の（式５）で表現することができる。
【０１２５】
【数５】
2007149029.tif 000007
これは、Ｒビット幅を２等分したビットブロックにより数値Ｎを表現したことを意味する。
【０１２６】
次に、Ｒビット幅を４等分したビットブロックにより数値Ｎを表現する。
【０１２７】
【数６】
2007149029.tif 000008
このように、数値Ｎは、次の部分和（式７）の和として表現される。
【０１２８】
【数７】
2007149029.tif 000009
また、数値Ｎのビット長は最大の部分和のビット長と等しい。
【０１２９】
ここで、部分和（式７）のビット長は、Ｓ＋｛Ｑ（Ｌ、Ｓ）のビット長｝と計算でき、特に、Ｌ＝１のとき、ビットブロックＱ（Ｌ、Ｓ）のビット長はビットブロックＱ（Ｌ、Ｓ）の数値そのもの（１または０）であり、Ｎ＝０の場合を含め、数値Ｎのビット長を具体的に計算することができる。
【０１３０】
本発明の実施の形態１においては、Ｒビットで表現できる整数の絶対値を入力データとして、最初に、検査対象範囲Ｒビット幅とし、前記入力データに対し、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該上位半分のビットブロックまたは前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、次に、当該選択された次の検査対象ビットブロックに対し、検査対象範囲を前回の半分のビット幅にして、当該選択された検査対象ビットブロックの検査対象範囲の上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該検査対象ビットブロックの検査対象範囲の上位半分のビットブロックまたは下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、一連の検査対象ビットブロックに対する右シフト操作、および、当該右シフト結果に基づいた次の検査対象ビットブロックの選択と同時に当該右シフト結果に基づいた当該右シフトのシフト数の累計加算、および、次回の検査対象範囲を限定操作する動作を繰り返して、順次に選択される検査対象ビットブロックの検査対象範囲の上位半分のビットブロックを次に前記選択された検査対象ビットブロックを分けることができないビット分木終了位置まで右シフトして最終シフトビット数累積値を求め、次に当該最終シフトビット数累積値と前記動作において最後に検査対象ビットブロックとして選択されたビットのデータの値とを加算して前記入力データのビット長を検出することにより、検査の回数をlog2(Ｒ)回に減らすことができ、また、過去の入力データを利用するといった前提条件を必要としないため、入力データのビット数が大きく変動する場合にもビット数を高速に検出することができる。
【０１３１】
また、本発明の実施の形態１は、汎用ＣＰＵに備わっているシフト器、比較器、加算器で構成され、専用の演算器を追加する必要がないため、ビット長検出を必要とするディジタル信号処理プログラム、あるいは、ビット長検出を必要とするディジタル信号処理装置の構成規模を縮小することが可能である。
【０１３２】
（実施の形態２）
次に、本発明の実施の形態２について、図面を参照して詳細に説明する。
【０１３３】
図１２は、本発明の実施の形態２に係るビット長検出器の構成を示すブロック図である。本発明の実施の形態２においては、本発明の実施の形態１と同じ構成要素には同じ参照符号を付してその説明を省略する。
【０１３４】
図１２に示すように、本発明の実施の形態２に係るビット長検出器１２００は、ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データのビット長を検出するものである。ビット長検出器１２００は、入力データ保持装置１１０及び入力データビット長検出部１２１０を具備している。
【０１３５】
入力データビット長検出部１２１０は、入力データ保持装置１１０に保持された入力データのビット長を検出するものである。
【０１３６】
入力データビット長検出部１２１０は、入力データ保持装置１１０に保持された入力データのビット長を検出してビット長レジスタ１４０に出力する。
【０１３７】
入力データビット長検出部１２１０は、ビット長テーブル１２１１、中間ビット長検出部１２１２、抽出部１２１３、抽出ビット数検出部１２１４及び検出部１２１５を具備している。
【０１３８】
ビット長テーブル１２１１は、Ｍビット値と当該Ｍビット値のビット長とを関連づけて記憶している。ここで、Ｍを０以上の整数とし、０〜２Ｍ−１のＭビットで表現できる数値をＭビット値とする。また、ビット長テーブル１２１１が記憶しているビット長の最大値は、所定の２のべき乗の値である。
【０１３９】
ビット長テーブル１２１１は、例えば、ビット長の最大値が２、４又は８であるビット長と当該ビット長とＭビット値とを関連づけて記憶している。図１３は、ビット長テーブル１２１１が記憶しているビット長の最大値が４である場合におけるＭビット値（インデックス）とこれらのＭビット値に対応するビット長とを示す図である。
【０１４０】
中間ビット長検出部１２１２は、最初に入力データ保持装置１０１のＲビットを検査対象ビットブロックとし、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトする。
【０１４１】
次に、中間ビット長検出部１２１２は、当該上位半分のビットブロックの右シフトの結果に基づいて当該検査対象ビットブロックの上位半分のビットブロックと下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする。
【０１４２】
次に、中間ビット長検出部１２１２は、前記動作を繰り返して、前記検査対象ビットブロックをＤ回（Ｄは１以上の整数である）分けた時における第Ｄのビット分木位置までに右シフトして前記入力データの中間ビット長を検出するものである。
【０１４３】
そして、中間ビット長検出部１２１２は、前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトした時において、当該右シフトの結果が０である時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算せず、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算する。
【０１４４】
そして、中間ビット長検出部１２１２は、当該右シフトの結果が０である時に当該上位半分のビットブロックと分けられた前記下位半分のビットブロックを次の検査対象ビットブロックとして選択し、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックを次の検査対象ビットブロックとして選択して、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする。
【０１４５】
次に、中間ビット長検出部１２１２は、前記動作を繰り返して、前記検査対象ビットブロックをＤ回分けた時における第Ｄのビット分木位置まで右シフトして中間シフトビット数累積値を求めて前記入力データの前記中間ビット長を検出する。
【０１４６】
この場合に、中間ビット長検出部１２１２は、前記検査対象ビットブロックをＤ回分けた時における第Ｄのビット分木位置まで右シフトした時に、選択する次の検査対象ビットブロックのビット数がビット長テーブル１２１１のビット長の最大値となるまで前記動作を繰り返す。
【０１４７】
抽出部１２１３は、前記選択された次の検査対象ビットブロックのビット数がビット長テーブル１２１１のビット長の最大値となった時に当該選択された次の検査対象ビットブロックの全てのビットのデータの値であるビット値を入力データ保持装置１０１から抽出して抽出ビット値を生成する。
【０１４８】
抽出ビット数検出部１２１４は、抽出部１２１３からの抽出ビット値（インデックス）に基づいてビット長テーブル１２１１を検索して前記抽出ビット値のビット数を検出して抽出ビット数検出値を生成する。
【０１４９】
検出部１２１５は、中間ビット長検出部１２１２からの中間ビット長と抽出ビット数検出部１２１４からの抽出ビット数検出値とを加算して前記入力データのビット長を検出してビット長レジスタ１４０に出力する。
【０１５０】
次に、本発明の実施の形態２に係るビット長検出器１２００の入力データビット長検出部１２１０の具体的な例について、詳細に説明する。
【０１５１】
図１４は、本発明の実施の形態２に係るビット長検出器１２００の入力データビット長検出部１２１０の具体的な例の構成を示すブロック図である。
【０１５２】
図１４に示すように、本発明の実施の形態２に係るビット長検出器１２００は、入力データ保持装置１１０及び入力データビット長検出部１２１０を具備している。
【０１５３】
本発明の実施の形態２に係る入力データビット長検出部１２１０は、本発明の実施の形態１に係る入力データビット長検出部１２０において、ビット長テーブル１２１１、抽出ビット長検出部１４１２及び抽出ビット長レジスタ１４１３を追加し、かつ、制御部１２２及び加算部１３３の代わりに制御部１４１１及び加算部１４１４を具備している。
【０１５４】
すなわち、本発明の実施の形態２に係る入力データビット長検出部１２１０は、検査対象ビットブロック１２１、シフト数レジスタ１２３、シフト部１２４、シフト結果レジスタ１２５、判断部１２６、判断結果レジスタ１２７、検査対象更新部１２８、累積加算部１２９、累積値レジスタ１３０、抽出制御部１３１、ラストビットブロック１３２、ビット長テーブル１２１１、制御部１４１１、抽出ビット長検出部１４１２、抽出ビット長レジスタ１４１３及び加算部１４１４を具備している。
【０１５５】
次に、本発明の実施の形態１と異なる本発明の実施の形態２に係る入力データビット長検出部１２１０について詳細に説明する。
【０１５６】
制御部１４１１は、次の検査対象である検査対象ビットブロックの検査対象範囲が所定のビット幅＝Ｍになるまで、前記（２）〜前記（８）の操作を繰り返す。前記所定のビット幅Ｍは、ビット長テーブル１２１１に記憶されているビット長の最大値である。繰り返し操作回数は、入力値の上限であるＲビットに依存して固定の値“log2(Ｒ)−log2(Ｍ)”に決まる。すなわち、制御部１４１１は、所定回数“log2(Ｒ)−log2(Ｍ)”だけ前記（２）〜前記（８）の操作を繰り返す。
【０１５７】
例えば、Ｒ＝１６であってＭ＝４である場合には、制御部１４１１は、log2(１６)−log2(４)＝４−２＝２回だけ前記（２）〜前記（８）の操作を繰り返す。
【０１５８】
この時の累積値レジスタ１３０に記憶されているシフトビット数累計値は、前記中間ビット長である。
【０１５９】
次に、抽出制御部１３１は、次の検査対象ビットブロック１２１の検査対象範囲が所定のビット幅＝Ｍとなった時に、制御部１４１１からの制御信号を受けて、最後に選択した検査対象ビットブロック１２１のデータであるＭビット値を抽出してラストビットブロック１３２に入力する。
【０１６０】
次に、抽出ビット長検出部１４１２は、ラストビットブロック１３２のＭビット値（インデックス）に基づいてビット長テーブル１２１１を参照して、ラストビットブロック１３２のＭビット値のビット長である抽出ビット数検出値を検出して抽出ビット長レジスタ１４１３に入力する。
【０１６１】
最後に、加算部１４１４は、累積値レジスタ１３０からの中間ビット長と抽出ビット数レジスタ１４１３からの抽出ビット数検出値とを加算し、前記入力データのビット長をビット長レジスタ１４０に出力する。
【０１６２】
本発明の実施の形態２においては、Ｒビットで表現できる整数の絶対値を入力データとして、最初に、検査対象範囲Ｒビット幅とし、前記入力データに対し、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該上位半分のビットブロックまたは前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、次に、当該選択された次の検査対象ビットブロックに対し、検査対象範囲を前回の半分のビット幅にして、当該選択された検査対象ビットブロックの検査対象範囲の上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該検査対象ビットブロックの検査対象範囲の上位半分のビットブロックまたは下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、一連の検査対象ビットブロックに対する右シフト操作、および、当該右シフト結果に基づいた次の検査対象ビットブロックの選択と同時に当該右シフト結果に基づいた当該右シフトのシフト数の累計加算、および、次回の検査対象範囲を限定操作する動作を繰り返して、順次に選択される検査対象ビットブロックの検査対象範囲の上位半分のビットブロックを前記検査対象ビットブロックをＤ回（Ｄは１以上の整数である）分けた時における第Ｄのビット分木位置までに右シフトして前記入力データの中間ビット長を検出し、選択された次の検査対象ビットブロックのビット数がビット長テーブルのビット長の最大値Ｍとなった時に当該選択された次の検査対象ビットブロックの全てのビットのデータの値であるビット値を抽出して抽出ビット値を生成し、当該抽出ビット値に基づいて前記ビット長テーブルを検索して前記抽出ビット値のビット数を検出して抽出ビット数検出値を生成し、かつ、前記中間ビット長と前記抽出ビット数検出値とを加算して前記入力データのビット長を検出するため、ビット検査の回数をlog2(Ｒ)-log2(Ｍ)回とするから、本発明の実施の形態１と比較して処理量を軽減することができ、また、過去の入力データを利用するといった前提条件を必要としないため、入力データのビット数が大きく変動する場合にもビット数をより高速に検出することができる。
【０１６３】
なお、入力データビット長検出部１２０は、データをシフトするシフト、データの値を加算する加算、及び、データの値を比較する比較などの動作を実行する中央処理装置（ＣＰＵ）で構成される。また、入力データビット長検出部１２０は、データをシフトするシフト装置、データの値を加算する加算器、及び、データの値を比較する比較装置を具備する装置で構成してもよい。
【０１６４】
また、入力データビット長検出部１２１０は、ビット長テーブルと、データをシフトするシフト、データの値を加算する加算、及び、データの値を比較する比較などの動作を実行する中央処理装置（ＣＰＵ）とで構成される。また、入力データビット長検出部１２１０は、データをシフトするシフト装置、データの値を加算する加算器、データの値を比較する比較装置、及び、ビット長テーブルを具備する装置または入力データの一部に対してビット長を検出できる装置で構成してもよい。
【０１６５】
また、本発明の実施の形態２は、汎用ＣＰＵに備わっているシフト器、比較器、加算器で構成され、専用の演算器を追加する必要がないため、ビット長検出を必要とするディジタル信号処理プログラム、あるいは、ビット長検出を必要とするディジタル信号処理装置の構成規模を縮小することが可能である。
【０１６６】
また、本発明は、本発明の実施の形態１及び２のいずれか１つの前記動作をコンピューターに実行させるビット長検出プログラムを含むものである。
【０１６７】
本発明の第１の態様に係るビット長検出器は、ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データのビット長を検出するビット長検出器であって、前記入力データの絶対値を受けて保持するＲ（Ｒは１６以上の２のべき乗の値である）ビットの入力データ保持手段と、前記入力データ保持手段に保持された前記入力データのビット長を検出する入力データビット長検出手段と、を具備し、前記入力データビット長検出手段は、最初に前記Ｒビットを検査対象ビットブロックとし、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、次に前記上位半分のビットブロックの右シフトの結果に基づいて当該上位半分のビットブロックと前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトし、次に当該上位半分のビットブロックの右シフトの結果に基づいて当該検査対象ビットブロックの上位半分のビットブロックと下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、次に前記選択された検査対象ビットブロックを分けることができないビット分木終了位置まで前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトして前記入力データのビット長を検出するものであって、前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトした時において、当該右シフトの結果が０である時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算せず、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算し、かつ、当該右シフトの結果が０である時に当該上位半分のビットブロックと分けられた前記下位半分のビットブロックを次の検査対象ビットブロックとして選択し、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックを次の検査対象ビットブロックとして選択して、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記ビット分木終了位置まで右シフトして最終シフトビット数累積値を求め、次に当該最終シフトビット数累積値と前記動作において最後に検査対象ビットブロックとして選択されたビットのデータの値とを加算して前記入力データのビット長を検出する構成を採る。
【０１６８】
本発明の第１の態様によれば、Ｒビットで表現できる整数の絶対値を入力データとして、最初に、検査対象範囲Ｒビット幅とし、前記入力データに対し、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該上位半分のビットブロックまたは前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、次に、当該選択された次の検査対象ビットブロックに対し、検査対象範囲を前回の半分のビット幅にして、当該選択された検査対象ビットブロックの検査対象範囲の上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該検査対象ビットブロックの検査対象範囲の上位半分のビットブロックまたは下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、一連の検査対象ビットブロックに対する右シフト操作、および、当該右シフト結果に基づいた次の検査対象ビットブロックの選択と同時に当該右シフト結果に基づいた当該右シフトのシフト数の累計加算、および、次回の検査対象範囲を限定操作する動作を繰り返して、順次に選択される検査対象ビットブロックの検査対象範囲の上位半分のビットブロックを次に前記選択された検査対象ビットブロックを分けることができないビット分木終了位置まで右シフトして最終シフトビット数累積値を求め、次に当該最終シフトビット数累積値と前記動作において最後に検査対象ビットブロックとして選択されたビットのデータの値とを加算して前記入力データのビット長を検出することにより、検査の回数をlog2(Ｒ)回に減らすことができ、また、過去の入力データを利用するといった前提条件を必要としないため、入力データのビット数が大きく変動する場合にもビット数を高速に検出することができる。
【０１６９】
また、本発明の第１の態様によれば、汎用ＣＰＵに備わっているシフト器、比較器、加算器で構成され、専用の演算器を追加する必要がないため、ビット長検出を必要とするディジタル信号処理プログラム、あるいは、ビット長検出を必要とするディジタル信号処理装置の構成規模を縮小することが可能である。
【０１７０】
本発明の第２の態様に係るビット長検出器は、ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データのビット長を検出するビット長検出器であって、前記入力データの絶対値を受けて保持するＲ（Ｒは１６以上の２のべき乗の値である）ビットの入力データ保持手段と、前記入力データ保持手段に保持された前記入力データのビット長を検出する入力データビット長検出手段と、を具備し、前記入力データビット長検出手段は、Ｍ（Ｍは０以上の整数である）ビット値と当該Ｍビット値のビット長とを関連づけて記憶し、かつ、当該ビット長の最大値が所定の２のべき乗の値であるビット長テーブルと、最初に前記Ｒビットを検査対象ビットブロックとし、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、次に前記上位半分のビットブロックの右シフトの結果に基づいて当該上位半分のビットブロックと前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトし、次に当該上位半分のビットブロックの右シフトの結果に基づいて当該検査対象ビットブロックの上位半分のビットブロックと下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記検査対象ビットブロックをＤ回（Ｄは１以上の整数である）分けた時における第Ｄのビット分木位置まで右シフトして前記入力データの中間ビット長を検出するものであって、前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトした時において、当該右シフトの結果が０である時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算せず、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算し、かつ、当該右シフトの結果が０である時に当該上位半分のビットブロックと分けられた前記下位半分のビットブロックを次の検査対象ビットブロックとして選択し、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックを次の検査対象ビットブロックとして選択して、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記検査対象ビットブロックをＤ回分けた時における第Ｄのビット分木位置まで右シフトして中間シフトビット数累積値を求めて前記入力データの前記中間ビット長を検出する中間ビット長検出手段と、前記選択された次の検査対象ビットブロックのビット数が前記ビット長テーブルのビット長の最大値となった時に当該選択された次の検査対象ビットブロックの全てのビットのデータの値であるビット値を抽出して抽出ビット値を生成する抽出手段と、当該抽出ビット値に基づいて前記ビット長テーブルを検索して前記抽出ビット値のビット数を検出して抽出ビット数検出値を生成する抽出ビット数検出手段と、前記中間ビット長と前記抽出ビット数検出値とを加算して前記入力データのビット長を検出する検出手段と、を具備する構成を採る。
【０１７１】
本発明の第２の態様によれば、Ｒビットで表現できる整数の絶対値を入力データとして、最初に、検査対象範囲Ｒビット幅とし、前記入力データに対し、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該上位半分のビットブロックまたは前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、次に、当該選択された次の検査対象ビットブロックに対し、検査対象範囲を前回の半分のビット幅にして、当該選択された検査対象ビットブロックの検査対象範囲の上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該検査対象ビットブロックの検査対象範囲の上位半分のビットブロックまたは下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、一連の検査対象ビットブロックに対する右シフト操作、および、当該右シフト結果に基づいた次の検査対象ビットブロックの選択と同時に当該右シフト結果に基づいた当該右シフトのシフト数の累計加算、および、次回の検査対象範囲を限定操作する動作を繰り返して、順次に選択される検査対象ビットブロックの検査対象範囲の上位半分のビットブロックをＤ回（Ｄは１以上の整数である）分けた時における第Ｄのビット分木位置までに右シフトして前記入力データの中間ビット長を検出し、選択された次の検査対象ビットブロックのビット数がビット長テーブルのビット長の最大値Ｍとなった時に当該選択された次の検査対象ビットブロックの全てのビットのデータの値であるビット値を抽出して抽出ビット値を生成し、当該抽出ビット値に基づいて前記ビット長テーブルを検索して前記抽出ビット値のビット数を検出して抽出ビット数検出値を生成し、かつ、前記中間ビット長と前記抽出ビット数検出値とを加算して前記入力データのビット長を検出するため、ビット検査の回数をlog2(Ｒ)-log2(Ｍ)回とするから、本発明の第１の態様と比較して処理量を軽減することができ、また、過去の入力データを利用するといった前提条件を必要としないため、入力データのビット数が大きく変動する場合にもビット数をより高速に検出することができる。
【０１７２】
また、本発明の第２の態様によれば、汎用ＣＰＵに備わっているシフト器、比較器、加算器で構成され、専用の演算器を追加する必要がないため、ビット長検出を必要とするディジタル信号処理プログラム、あるいは、ビット長検出を必要とするディジタル信号処理装置の構成規模を縮小することが可能である。
【０１７３】
本発明の第３の態様に係るビット長検出方法は、ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データのビット長を検出するビット長検出方法であって、Ｒ（Ｒは１６以上の２のべき乗の値である）ビットの入力データ保持手段が前記入力データの絶対値を受けて保持する入力データ保持ステップと、前記入力データ保持手段に保持された前記入力データのビット長を検出する入力データビット長検出ステップと、を具備し、前記入力データビット長検出ステップは、最初に前記Ｒビットを検査対象ビットブロックとし、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、次に前記上位半分のビットブロックの右シフトの結果に基づいて当該上位半分のビットブロックと前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトし、次に当該上位半分のビットブロックの右シフトの結果に基づいて当該検査対象ビットブロックの上位半分のビットブロックと下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、次に前記選択された検査対象ビットブロックを分けることができないビット分木終了位置まで前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトして前記入力データのビット長を検出するものであって、前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトした時において、当該右シフトの結果が０である時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算せず、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算し、かつ、当該右シフトの結果が０である時に当該上位半分のビットブロックと分けられた前記下位半分のビットブロックを次の検査対象ビットブロックとして選択し、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックを次の検査対象ビットブロックとして選択して、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記ビット分木終了位置まで右シフトして最終シフトビット数累積値を求め、次に当該最終シフトビット数累積値と前記動作において最後に検査対象ビットブロックとして選択されたビットのデータの値とを加算して前記入力データのビット長を検出するようにした。
【０１７４】
本発明の第３の態様によれば、Ｒビットで表現できる整数の絶対値を入力データとして、最初に、検査対象範囲Ｒビット幅とし、前記入力データに対し、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該上位半分のビットブロックまたは前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、次に、当該選択された次の検査対象ビットブロックに対し、検査対象範囲を前回の半分のビット幅にして、当該選択された検査対象ビットブロックの検査対象範囲の上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該検査対象ビットブロックの検査対象範囲の上位半分のビットブロックまたは下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、一連の検査対象ビットブロックに対する右シフト操作、および、当該右シフト結果に基づいた次の検査対象ビットブロックの選択と同時に当該右シフト結果に基づいた当該右シフトのシフト数の累計加算、および、次回の検査対象範囲を限定操作する動作を繰り返して、順次に選択される検査対象ビットブロックの検査対象範囲の上位半分のビットブロックを次に前記選択された検査対象ビットブロックを分けることができないビット分木終了位置まで右シフトして最終シフトビット数累積値を求め、次に当該最終シフトビット数累積値と前記動作において最後に検査対象ビットブロックとして選択されたビットのデータの値とを加算して前記入力データのビット長を検出することにより、検査の回数をlog2(Ｒ)回に減らすことができ、また、過去の入力データを利用するといった前提条件を必要としないため、入力データのビット数が大きく変動する場合にもビット数を高速に検出することができる。
【０１７５】
また、本発明の第３の態様によれば、汎用ＣＰＵに備わっているシフト器、比較器、加算器で構成され、専用の演算器を追加する必要がないため、ビット長検出を必要とするディジタル信号処理プログラム、あるいは、ビット長検出を必要とするディジタル信号処理装置の構成規模を縮小することが可能である。
【０１７６】
本発明の第４の態様に係るビット長検出方法は、ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データのビット長を検出するビット長検出方法であって、Ｒ（Ｒは１６以上の２のべき乗の値である）ビットの入力データ保持手段が前記入力データの絶対値を受けて保持する入力データ保持ステップと、前記入力データ保持手段に保持された前記入力データのビット長を検出する入力データビット長検出ステップと、を具備し、前記入力データビット長検出ステップは、ビット長の最大値が所定の２のべき乗の値であるビット長を記憶しているビット長テーブルがＭ（Ｍは０以上の整数である）ビット値と当該Ｍビット値のビット長とを関連づけて記憶するビット長記憶ステップと、最初に前記Ｒビットを検査対象ビットブロックとし、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、次に前記上位半分のビットブロックの右シフトの結果に基づいて当該上位半分のビットブロックと前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトし、次に当該上位半分のビットブロックの右シフトの結果に基づいて当該検査対象ビットブロックの上位半分のビットブロックと下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記検査対象ビットブロックをＤ回（Ｄは１以上の整数である）分けた時における第Ｄのビット分木位置まで右シフトして前記入力データの中間ビット長を検出するものであって、前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトした時において、当該右シフトの結果が０である時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算せず、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算し、かつ、当該右シフトの結果が０である時に当該上位半分のビットブロックと分けられた前記下位半分のビットブロックを次の検査対象ビットブロックとして選択し、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックを次の検査対象ビットブロックとして選択して、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記検査対象ビットブロックをＤ回分けた時における第Ｄのビット分木位置まで右シフトして中間シフトビット数累積値を求めて前記入力データの前記中間ビット長を検出する中間ビット長検出ステップと、前記選択された次の検査対象ビットブロックのビット数が前記ビット長テーブルのビット長の最大値となった時に当該選択された次の検査対象ビットブロックの全てのビットのデータの値であるビット値を抽出して抽出ビット値を生成する抽出ステップと、当該抽出ビット値に基づいて前記ビット長テーブルを検索して前記抽出ビット値のビット数を検出して抽出ビット数検出値を生成する抽出ビット数検出ステップと、前記中間ビット長と前記抽出ビット数検出値とを加算して前記入力データのビット長を検出する検出ステップと、を具備するようにした。
【０１７７】
本発明の第４の態様によれば、Ｒビットで表現できる整数の絶対値を入力データとして、最初に、検査対象範囲Ｒビット幅とし、前記入力データに対し、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該上位半分のビットブロックまたは前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、次に、当該選択された次の検査対象ビットブロックに対し、検査対象範囲を前回の半分のビット幅にして、当該選択された検査対象ビットブロックの検査対象範囲の上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該検査対象ビットブロックの検査対象範囲の上位半分のビットブロックまたは下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、一連の検査対象ビットブロックに対する右シフト操作、および、当該右シフト結果に基づいた次の検査対象ビットブロックの選択と同時に当該右シフト結果に基づいた当該右シフトのシフト数の累計加算、および、次回の検査対象範囲を限定操作する動作を繰り返して、順次に選択される検査対象ビットブロックの検査対象範囲の上位半分のビットブロックをＤ回（Ｄは１以上の整数である）分けた時における第Ｄのビット分木位置までに右シフトして前記入力データの中間ビット長を検出し、選択された次の検査対象ビットブロックのビット数がビット長テーブルのビット長の最大値Ｍとなった時に当該選択された次の検査対象ビットブロックの全てのビットのデータの値であるビット値を抽出して抽出ビット値を生成し、当該抽出ビット値に基づいて前記ビット長テーブルを検索して前記抽出ビット値のビット数を検出して抽出ビット数検出値を生成し、かつ、前記中間ビット長と前記抽出ビット数検出値とを加算して前記入力データのビット長を検出するため、ビット検査の回数をlog2(Ｒ)-log2(Ｍ)回とするから、本発明の第３の態様と比較して処理量を軽減することができ、また、過去の入力データを利用するといった前提条件を必要としないため、入力データのビット数が大きく変動する場合にもビット数をより高速に検出することができる。
【０１７８】
また、本発明の第４の態様によれば、汎用ＣＰＵに備わっているシフト器、比較器、加算器で構成され、専用の演算器を追加する必要がないため、ビット長検出を必要とするディジタル信号処理プログラム、あるいは、ビット長検出を必要とするディジタル信号処理装置の構成規模を縮小することが可能である。
【０１７９】
本発明の第５の態様に係るビット長検出プログラムは、ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データのビット長を検出するビット長検出プログラムにおいて、Ｒ（Ｒは１６以上の２のべき乗の値である）ビットの入力データ保持手段が前記入力データの絶対値を受けて保持する入力データ保持ステップと、前記入力データ保持手段に保持された前記入力データのビット長を検出する入力データビット長検出ステップと、をコンピューターに実行させるビット長検出プログラムであって、前記入力データビット長検出ステップは、最初に前記Ｒビットを検査対象ビットブロックとし、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、次に前記上位半分のビットブロックの右シフトの結果に基づいて当該上位半分のビットブロックと前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトし、次に当該上位半分のビットブロックの右シフトの結果に基づいて当該検査対象ビットブロックの上位半分のビットブロックと下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、次に前記選択された検査対象ビットブロックを分けることができないビット分木終了位置まで前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトして前記入力データのビット長を検出するものであって、前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトした時において、当該右シフトの結果が０である時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算せず、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算し、かつ、当該右シフトの結果が０である時に当該上位半分のビットブロックと分けられた前記下位半分のビットブロックを次の検査対象ビットブロックとして選択し、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックを次の検査対象ビットブロックとして選択して、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記ビット分木終了位置まで右シフトして最終シフトビット数累積値を求め、次に当該最終シフトビット数累積値と前記動作において最後に検査対象ビットブロックとして選択されたビットのデータの値とを加算して前記入力データのビット長を検出するようにした。
【０１８０】
本発明の第５の態様によれば、Ｒビットで表現できる整数の絶対値を入力データとして、最初に、検査対象範囲Ｒビット幅とし、前記入力データに対し、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該上位半分のビットブロックまたは前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、次に、当該選択された次の検査対象ビットブロックに対し、検査対象範囲を前回の半分のビット幅にして、当該選択された検査対象ビットブロックの検査対象範囲の上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該検査対象ビットブロックの検査対象範囲の上位半分のビットブロックまたは下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、一連の検査対象ビットブロックに対する右シフト操作、および、当該右シフト結果に基づいた次の検査対象ビットブロックの選択と同時に当該右シフト結果に基づいた当該右シフトのシフト数の累計加算、および、次回の検査対象範囲を限定操作する動作を繰り返して、順次に選択される検査対象ビットブロックの検査対象範囲の上位半分のビットブロックを次に前記選択された検査対象ビットブロックを分けることができないビット分木終了位置まで右シフトして最終シフトビット数累積値を求め、次に当該最終シフトビット数累積値と前記動作において最後に検査対象ビットブロックとして選択されたビットのデータの値とを加算して前記入力データのビット長を検出することにより、検査の回数をlog2(Ｒ)回に減らすことができ、また、過去の入力データを利用するといった前提条件を必要としないため、入力データのビット数が大きく変動する場合にもビット数を高速に検出することができる。
【０１８１】
また、本発明の第５の態様によれば、汎用ＣＰＵに備わっているシフト器、比較器、加算器で構成され、専用の演算器を追加する必要がないため、ビット長検出を必要とするディジタル信号処理プログラム、あるいは、ビット長検出を必要とするディジタル信号処理装置の構成規模を縮小することが可能である。
【０１８２】
本発明の第６の態様に係るビット長検出プログラムは、ディジタル信号処理システムにおいて順次に入力される複数ビットの入力データのビット長を検出するビット長検出プログラムであって、Ｒ（Ｒは１６以上の２のべき乗の値である）ビットの入力データ保持手段が前記入力データの絶対値を受けて保持する入力データ保持ステップと、ビット長の最大値が所定の２のべき乗の値であるビット長を記憶しているビット長テーブルがＭ（Ｍは０以上の整数である）ビット値と当該Ｍビット値のビット長とを関連づけて記憶するビット長記憶ステップと、最初に前記Ｒビットを検査対象ビットブロックとし、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、次に前記上位半分のビットブロックの右シフトの結果に基づいて当該上位半分のビットブロックと前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトし、次に当該上位半分のビットブロックの右シフトの結果に基づいて当該検査対象ビットブロックの上位半分のビットブロックと下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、当該選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記検査対象ビットブロックをＤ回（Ｄは１以上の整数である）分けた時における第Ｄのビット分木位置まで右シフトして前記入力データの中間ビット長を検出するものであって、前記選択された検査対象ビットブロックの上位半分のビットブロックを右シフトした時において、当該右シフトの結果が０である時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算せず、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックのビット数をシフトビット数累積値として加算し、かつ、当該右シフトの結果が０である時に当該上位半分のビットブロックと分けられた前記下位半分のビットブロックを次の検査対象ビットブロックとして選択し、また、当該右シフトの結果が０でない時に当該上位半分のビットブロックを次の検査対象ビットブロックとして選択して、前記選択された次の検査対象ビットブロックの上位半分のビットブロックを選択して右シフトする動作を繰り返して、前記検査対象ビットブロックをＤ回分けた時における第Ｄのビット分木位置まで右シフトして中間シフトビット数累積値を求めて前記入力データの前記中間ビット長を検出する中間ビット長検出ステップと、前記選択された次の検査対象ビットブロックのビット数が前記ビット長テーブルのビット長の最大値となった時に当該選択された次の検査対象ビットブロックの全てのビットのデータの値であるビット値を抽出して抽出ビット値を生成する抽出ステップと、当該抽出ビット値に基づいて前記ビット長テーブルを検索して前記抽出ビット値のビット数を検出して抽出ビット数検出値を生成する抽出ビット数検出ステップと、前記中間ビット長と前記抽出ビット数検出値とを加算して前記入力データのビット長を検出する検出ステップと、をコンピューターに実行させるようにした。
【０１８３】
本発明の第６の態様によれば、Ｒビットで表現できる整数の絶対値を入力データとして、最初に、検査対象範囲Ｒビット幅とし、前記入力データに対し、前記Ｒビットの最上位のビットの上位に位置する基準位置から前記Ｒビットを二等分して上位半分のビットブロックと下位半分のビットブロックとに分けたビット分木初期位置まで前記上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該上位半分のビットブロックまたは前記下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、次に、当該選択された次の検査対象ビットブロックに対し、検査対象範囲を前回の半分のビット幅にして、当該選択された検査対象ビットブロックの検査対象範囲の上位半分のビットブロックを選択して右シフトし、当該右シフトの結果に基づいて当該検査対象ビットブロックの検査対象範囲の上位半分のビットブロックまたは下位半分のビットブロックのいずれかを次の検査対象ビットブロックとして選択し、同時に、当該右シフト結果に基づいて当該右シフトのシフト数の累計加算を行い、一連の検査対象ビットブロックに対する右シフト操作、および、当該右シフト結果に基づいた次の検査対象ビットブロックの選択と同時に当該右シフト結果に基づいた当該右シフトのシフト数の累計加算、および、次回の検査対象範囲を限定操作する動作を繰り返して、順次に選択される検査対象ビットブロックの検査対象範囲の上位半分のビットブロックをＤ回（Ｄは１以上の整数である）分けた時における第Ｄのビット分木位置までに右シフトして前記入力データの中間ビット長を検出し、選択された次の検査対象ビットブロックのビット数がビット長テーブルのビット長の最大値Ｍとなった時に当該選択された次の検査対象ビットブロックの全てのビットのデータの値であるビット値を抽出して抽出ビット値を生成し、当該抽出ビット値に基づいて前記ビット長テーブルを検索して前記抽出ビット値のビット数を検出して抽出ビット数検出値を生成し、かつ、前記中間ビット長と前記抽出ビット数検出値とを加算して前記入力データのビット長を検出するため、ビット検査の回数をlog2(Ｒ)-log2(Ｍ)回とするから、本発明の第５の態様と比較して処理量を軽減することができ、また、過去の入力データを利用するといった前提条件を必要としないため、入力データのビット数が大きく変動する場合にもビット数をより高速に検出することができる。
【０１８４】
また、本発明の第６の態様によれば、汎用ＣＰＵに備わっているシフト器、比較器、加算器で構成され、専用の演算器を追加する必要がないため、ビット長検出を必要とするディジタル信号処理プログラム、あるいは、ビット長検出を必要とするディジタル信号処理装置の構成規模を縮小することが可能である。
【産業上の利用可能性】
【０１８５】
本発明は、入力データのビット数が大きく変動する場合にもビット数を高速に検出することができ、かつ、入力データのビット数を汎用の中央処理装置（ＣＰＵ）で演算することができる効果を有し、ビット長検出器、ビット長検出方法及びビット長検出プログラムに有用である。
【図面の簡単な説明】
【０１８６】
【図１】本発明の実施の形態１に係るビット長検出器の構成を示すブロック図
【図２】本発明の実施の形態１に係るビット長検出器の動作の具体的な例を説明するための図
【図３】本発明の実施の形態１に係るビット長検出器の動作の具体的な例を説明するための他の図
【図４】本発明の実施の形態１に係るビット長検出器の動作の具体的な例を説明するための他の図
【図５】本発明の実施の形態１に係るビット長検出器の動作の具体的な例を説明するための他の図
【図６】本発明の実施の形態１に係るビット長検出器の動作の具体的な例を説明するための他の図
【図７】本発明の実施の形態１に係るビット長検出器の動作の具体的な他の例を説明するための図
【図８】本発明の実施の形態１に係るビット長検出器の動作の具体的な他の例を説明するための他の図
【図９】本発明の実施の形態１に係るビット長検出器の動作の具体的な他の例を説明するための他の図
【図１０】本発明の実施の形態１に係るビット長検出器の動作の具体的な他の例を説明するための他の図
【図１１】本発明の実施の形態１に係るビット長検出器の動作の具体的な他の例を説明するための他の図
【図１２】本発明の実施の形態２に係るビット長検出器の構成を示すブロック図
【図１３】本発明の実施の形態２に係るビット長検出器のビット長テーブルを説明するための図
【図１４】本発明の実施の形態２に係るビット長検出器の入力データビット長検出部の具体的な例の構成を示すブロック図
【符号の説明】
【０１８７】
１００、１２００  ビット長検出器
１１０  入力データ保持装置
１２０、１２１０  入力データビット長検出部
１２１  検査対象ビットブロック
１２２、１４１１  制御部
１２３  シフト数レジスタ
１２４  シフト部
１２５  シフト結果レジスタ
１２６  判断部
１２７  判断結果レジスタ
１２８  検査対象更新部
１２９  累積加算部
１３０  累積値レジスタ
１３１  抽出制御部
１３２  ラストビットブロック
１３３、１４１４  加算部
１２１１  ビット長テーブル
１２１２  中間ビット長検出部
１２１３  抽出部
１２１４  抽出ビット数検出部
１２１５  検出部
１４１２  抽出ビット長検出部
１４１３  抽出ビット長レジスタ
【図１】
2007149029.tif 000010
【図２】
2007149029.tif 000011
【図３】
2007149029.tif 000012
【図４】
2007149029.tif 000013
【図５】
2007149029.tif 000014
【図６】
2007149029.tif 000015
【図７】
2007149029.tif 000016
【図８】
2007149029.tif 000017
【図９】
2007149029.tif 000018
【図１０】
2007149029.tif 000019
【図１１】
2007149029.tif 000020
【図１２】
2007149029.tif 000021
【図１３】
2007149029.tif 000022
【図１４】
2007149029.tif 000023