(57)【特許請求の範囲】
【請求項１】
AugendレジスタＡ、符号レジスタＣ及び空バイトカウンタＣＴの値を参照し、ＭＱ-ＣＯＤＥＲ方式における符号化時再正規化処理並びに復号時再正規化処理を行う再正規化手段を備え、
上記再正規化手段は、
ＭＳＢが１となるまで上記AugendレジスタＡの値を１ビット毎に左シフトした場合のシフト回数を求め、この回数をシフト数ＳＨＩＦＴ＿Ａとして出力するシフト数算出部と、
上記シフト数ＳＨＩＦＴ＿Ａで示された値のビット分、上記AugendレジスタＡの値を左シフトする第１の左ビットシフト部と、
上記シフト数ＳＨＩＦＴ＿Ａから空バイトカウンタＣＴの値を減算する減算部と、
符号化時であって上記減算部による減算結果が負でない場合には、バイトアウト処理命令を発行し、復号時であって上記減算部による減算結果が負でない場合、並びに、復号時であって上記空バイトカウンタＣＴの値が０でなく且つ空バイトカウンタＣＴの値とシフト数ＳＨＩＦＴ＿Ａが同一であり且つ正規化が行われる場合には、バイトイン処理命令を発行するバイトアウト/バイトイン部と、
上記バイトアウト/バイトイン部によりバイトアウト処理命令又はバイトイン処理命令を発行する場合には、上記空バイトカウンタＣＴで示された値のビット分上記符号レジスタＣを左シフトし、上記バイトアウト/バイトイン部によりバイトアウト処理命令又はバイトイン処理命令を発行しない場合には、上記シフト数ＳＨＩＦＴ＿Ａで示された値のビット分上記符号レジスタＣの値を左シフトする第２の左ビットシフト部と、
上記バイトアウト/バイトイン部によりバイトアウト処理命令又はバイトイン処理命令を発行しない場合には、上記減算部による減算結果の絶対値を上記空バイトカウンタＣＴの値とし、上記バイトアウト/バイトイン部によりバイトアウト処理命令又はバイトイン処理命令を発行する場合には、上記空バイトカウンタＣＴの値を０とするＣＴ値選択部と、
上記バイトアウト/バイトイン部によりバイトアウト処理命令又はバイトイン処理命令を発行しない場合には、上記シフト数ＳＨＩＦＴ＿Ａの値を０とし、上記バイトアウト/バイトイン部によりバイトアウト処理命令又はバイトイン処理命令を発行する場合には、上記シフト数ＳＨＩＦＴ＿Ａを上記減算部による減算結果の絶対値とする残りループ数選択部とを有すること
を特徴とするＭＱ-ＣＯＤＥＲ方式の算術符号化/復号装置。
【請求項２】
AugendレジスタＡ、符号レジスタＣ及び空バイトカウンタＣＴの値を参照して、符号化時再正規化処理並びに復号時再正規化処理を行うＭＱ-ＣＯＤＥＲ方式の算術符号化/復号処理で用いられる再正規化方法において、
ＭＳＢが１となるまで上記AugendレジスタＡの値を１ビット毎に左シフトした場合のシフト回数を求め、この回数をシフト数ＳＨＩＦＴ＿Ａとして出力するシフト数算出ステップと、
上記シフト数ＳＨＩＦＴ＿Ａで示された値のビット分、上記AugendレジスタＡの値を左シフトする第１の左ビットシフトステップと、
上記シフト数ＳＨＩＦＴ＿Ａから空バイトカウンタＣＴの値を減算する減算ステップと、
符号化時であって上記減算ステップによる減算結果が負でない場合には、バイトアウト処理を行い、復号時であって上記減算ステップによる減算結果が負でない場合、並びに、復号時であって上記空バイトカウンタＣＴの値が０でなく且つ空バイトカウンタＣＴの値とシフト数ＳＨＩＦＴ＿Ａが同一であり且つ正規化が行われる場合には、バイトイン処理を行うバイトアウト/バイトインステップと、
上記バイトアウト/バイトインステップによりバイトアウト処理又はバイトイン処理を行う場合には、上記空バイトカウンタＣＴで示された値のビット分上記符号レジスタＣを左シフトし、上記バイトアウト/バイトインステップによりバイトアウト処理又はバイトイン処理を行わない場合には、上記シフト数ＳＨＩＦＴ＿Ａで示された値のビット分上記符号レジスタＣの値を左シフトする第２の左ビットシフトステップと、
上記バイトアウト/バイトインステップによりバイトアウト処理又はバイトイン処理を行わない場合には、上記減算ステップによる減算結果の絶対値を上記空バイトカウンタＣＴの値とし、上記バイトアウト/バイトインステップによりバイトアウト処理又はバイトイン処理を行う場合には、上記空バイトカウンタＣＴの値を０とするＣＴ値選択ステップと、
上記バイトアウト/バイトインステップによりバイトアウト処理又はバイトイン処理を行わない場合には、上記シフト数ＳＨＩＦＴ＿Ａの値を０とし、上記バイトアウト/バイトインステップによりバイトアウト処理又はバイトイン処理を行う場合には、上記シフト数ＳＨＩＦＴ＿Ａを上記減算ステップによる減算結果の絶対値とする残りループ数選択ステップとを有し、
上記残りループ数選択ステップから出力される上記シフト数ＳＨＩＦＴ＿Ａの値が０である場合には処理を終了し、０でない場合には上記減算ステップから処理を繰り返すこと
を特徴とするＭＱ-ＣＯＤＥＲ方式の算術符号化/復号処理で用いられる再正規化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、算術符号化方式の一つであるＭＱ−ＣＯＤＥＲの符号化アルゴリズム上で用いられる正規化処理方法、並びに、ＭＱ−ＣＯＤＥＲ方式の算術符号化／復号装置に関するものである。
【０００２】
【従来の技術】
算術符号化方式の一つにＭＱ−ＣＯＤＥＲと呼ばれる符号化方式が知られている。このＭＱ−ＣＯＤＥＲは、例えば、ＪＰＥＧ２０００（ＩＳＯ／ＩＥＣ  ＪＴＣ  １／ＳＣ  ２９／ＷＧ１）等の算術符号化方式として採用されている。このＭＱ−ＣＯＤＥＲの符号化／復号アルゴリズムは、例えば、以下の文献に詳細に記載されている。
・『次世代画像符号化方式  ＪＰＥＧ２０００』（トリケップス）２００１年２月１３日発行。
・『ＪＰＥＧ２０００  Ｐａｒｔ１  Ｆｉｎａｌ  Ｃｏｍｍｉｔｔｅｅ  Ｄｒａｆｔ  Ｖｅｒｓｉｏｎ  １．０  』（ＩＳＯ／ＩＥＣ  ＪＴＣ  １／ＳＣ  ２９／ＷＧ１，ＪＰＥＧ２０００  Ｅｄｉｔｏｒ  Ｍａｒｔｉｎ  Ｂｏｌｉｅｋ  ，Ｃｏ−ｅｄｉｔｏｒｓ  Ｃｈａｒｉｌａｏｓ  Ｃｈｒｉｓｔｏｐｏｕｌｏｓ  ，  ａｎｄ  Ｅｒｉｃ  Ｍａｊａｎｉ）    ２０００年４月１１日発行。
【０００３】
このＭＱ−ＣＯＤＥＲの符号化／復号アルゴリズムでは、符号化時再正規化処理（ＲＥＮＯＲＭＥ）並びに復号時再正規化処理（ＲＥＮＯＲＭＤ）が行われる。符号化時再正規化処理（ＲＥＮＯＲＭＥ）は、ＬＰＳ符号化（ＣＯＤＥＬＰＳ）及びＭＰＳ符号化（ＣＯＤＥＭＰＳ）の最終段の処理に用いられる。ＬＰＳは劣勢シンボルを意味し、ＭＰＳは優勢シンボルを意味する。復号時再正規化処理（ＲＥＮＯＲＭＤ）は、復号処理（ＤＥＣＯＤＥ）の最終段の処理に用いられる。なお、復号処理（ＤＥＣＯＤＥ）では、復号時再正規化処理（ＲＥＮＯＲＭＤ）の前で行われる区間分割と選択の処理の結果によっては、この復号時再正規化（ＲＥＮＯＲＭＤ）を行わず処理を終了する場合もある。また、符号化処理（ＥＮＣＯＤＥ）でも、符号化時再正規化処理（ＲＥＮＯＲＭＥ）を行わず処理を終了する場合もある。
【０００４】
以下、符号化時再正規化処理（ＲＥＮＯＲＭＥ）並びに復号時再正規化処理（ＲＥＮＯＲＭＤ）について説明をする。なお、符号化時再正規化処理（ＲＥＮＯＲＭＥ）処理並びに復号時再正規化処理（ＲＥＮＯＲＭＤ）に参照されるＡ，Ｃ，ＢＰ，Ｂ，Ｂ１，ＣＴのデータ内容は、上述した文献に示されているデータ内容と同一であり、詳細は次の通りである。
【０００５】
Ａ  ：Ａｕｇｅｎｄレジスタに格納されている値。１６ビット長のバイナリデータ
Ｃ  ：符号レジスタに格納されている値。２８ビット長のバイナリデータ
ＢＰ：バイトバッファのポインタ
Ｂ  ：バイトバッファのＢＰで示された位置のデータ。８ビット長のバイナリデータ
Ｂ１：バイトバッファのＢＰ＋１で示された位置のデータ。８ビット長のバイナリデータ
ＣＴ：空ビットをカウントする空バイトカウンタの値。４ビット長のバイトデータ
また、演算式“Ｘ＞＞Ｙ”は、バイナリデータであるＸをＹビット分右ビットシフトすることを意味し、演算式“Ｘ＜＜Ｙ”は、バイナリデータであるＸをＹビット分左ビットシフトすることを意味している。０ｘＸＸ…Ｘは、１６表現がされたバイナリデータを意味する。Ｘは、１６進数の０〜Ｆを表している。
【０００６】
図３に、符号化時再正規化処理（ＲＥＮＯＲＭＥ）の処理フローを示す。
【０００７】
符号化時再正規化処理（ＲＥＮＯＲＭＥ）では、まず、Ａ，Ｃを１ビット分左ビットシフトし、ＣＴから１を減算する（ステップＳ１１）。
【０００８】
続いて、ＣＴ＝０であるか否かを判断する（ステップＳ１２）。ＣＴ＝０である場合には、ステップＳ１３のバイトアウト処理（ＢＹＴＥＯＵＴ）のサブルーチン処理を行い、このバイトアウト処理（ＢＹＴＥＯＵＴ）のサブルーチンが終了するとステップＳ１４に進む。ＣＴ≠０である場合には、そのままステップＳ１４に進む。
【０００９】
続いて、（Ａ＆０ｘ８０００）の演算を行い、この演算結果が０であるか否かを判断する（ステップＳ１４）。すなわち、このステップＳ１４では、Ａｕｇｅｎｄレジスタに格納されているＡのＭＳＢが、１であるか否かを判断する。
【００１０】
このステップＳ１４の演算結果が０である場合には、再度ステップＳ１１から処理を繰り返し、この演算結果が０でない場合には、本フローが終了する。
【００１１】
つまり、この符号化時再正規化処理（ＲＥＮＯＲＭＥ）では、Ａｕｇｅｎｄレジスタに格納されているＡの値が、０ｘ８０００以上となるまで、当該Ａの値を左ビットシフトする処理を行う。
【００１２】
図４に、上記符号化時再正規化処理（ＲＥＮＯＲＭＥ）のステップＳ１３におけるバイトアウト処理（ＢＹＴＥＯＵＴ）の処理フローを示す。
【００１３】
バイトアウト処理（ＢＹＴＥＯＵＴ）では、まず、Ｂ＝０ｘＦＦであるか否かを判断する（ステップＳ２１）。Ｂ＝０ｘＦＦである場合には、ステップＳ２７に進む。Ｂ≠０ｘＦＦである場合には、次のステップＳ２２に進む。
【００１４】
続いて、Ｃ＜０ｘ８００００００であるか否かを判断する（ステップＳ２２）。Ｃ＜０ｘ８００００００である場合には、ステップＳ２６に進む。Ｃ≧０ｘ８００００００である場合には、次のステップＳ２３に進む。
【００１５】
続いて、Ｂに１を加算する（ステップＳ２３）。
【００１６】
続いて、Ｂ＝０ｘＦＦであるか否かを判断する（ステップＳ２４）。Ｂ＝０ｘＦＦである場合には、次のステップＳ２５に進む。Ｂ≠０ｘＦＦである場合には、ステップＳ２６に進む。
【００１７】
続いて、（Ｃ＆０ｘ７ＦＦＦＦＦＦ）の演算を行い、この演算結果をＣに代入し、ステップＳ２７に進む（ステップＳ２６）
ステップＳ２６では、ＢＰに１を加算し、続いて、Ｃを１９ビット分右ビットシフトした値をＢに代入し、続いて、（Ｃ＆０ｘ７ＦＦＦＦ）の演算を行ってこの値をＣに代入し、続いて、ＣＴに８を代入する。
【００１８】
ステップＳ２７では、ＢＰに１を加算し、続いて、Ｃを２０ビット分右ビットシフトした値をＢ代入し、続いて、（Ｃ＆０ｘ７ＦＦＦＦＦ）の演算を行ってこの値をＣに代入し、続いて、ＣＴに７を代入する。
【００１９】
バイトアウト処理（ＢＹＴＥＯＵＴ）では、上記ステップＳ２６又はステップＳ２７の処理を終えると、サブルーチン処理を終了する。
【００２０】
図５に、復号時再正規化処理（ＲＥＮＯＲＭＤ）の処理フローを示す。
【００２１】
復号時再正規化処理（ＲＥＮＯＲＭＤ）では、まず、ＣＴ＝０であるか否かを判断する（ステップＳ３１）。ＣＴ＝０である場合には、ステップＳ３２のバイトイン処理（ＢＹＴＥＩＮ）のサブルーチンに進み、このバイトイン処理（ＢＹＴＥＩＮ）のサブルーチンが終了するとステップＳ３３に進む。ＣＴ≠０である場合には、そのままステップＳ３３に進む。
【００２２】
続いて、Ａ，Ｃを１ビット分左ビットシフトし、ＣＴから１を減算する（ステップＳ３３）。
【００２３】
続いて、（Ａ＆０ｘ８０００）の演算を行い、この演算結果が０であるか否かを判断する（ステップＳ３４）。すなわち、このステップＳ３４では、Ａｕｇｅｎｄレジスタに格納されているＡのＭＳＢが、１であるか否かを判断する。
【００２４】
このステップＳ３４の演算結果が０である場合には、再度ステップＳ３１から処理を繰り返し、この演算結果が０でない場合には、本フローが終了する。
【００２５】
つまり、この復号時再正規化処理（ＲＥＮＯＲＭＤ）では、Ａｕｇｅｎｄレジスタに格納されているＡの値が、０ｘ８０００以上となるまで、当該Ａの値を左ビットシフトする処理を行う。
【００２６】
図６に、上記復号時再正規化処理（ＲＥＮＯＲＭＤ）のステップＳ３２におけるバイトイン処理（ＢＹＴＥＩＮ）の処理フローを示す。
【００２７】
バイトイン処理（ＢＹＴＥＩＮ）では、まず、Ｂ＝０ｘＦＦであるか否かを判断する（ステップＳ４１）。Ｂ＝０ｘＦＦである場合には、次のステップＳ４２に進む。Ｂ≠０ｘＦＦである場合には、ステップＳ４５に進む。
【００２８】
続いて、Ｂ１＞０ｘ８Ｆであるか否かを判断する（ステップＳ４２）。Ｂ１＞０ｘ８Ｆである場合には、ステップＳ４３に進む。Ｂ１≦０ｘ８Ｆである場合には、ステップＳ４４に進む。
【００２９】
ステップＳ４３では、ＢＰに１を加算し、続いて、Ｂを９ビット分左ビットシフトした値に、Ｃを加算して、この加算結果をＣに代入し、続いて、ＣＴに７を代入する。
【００３０】
ステップＳ４４では、Ｃに０ｘＦＦ００を加算して、この加算結果をＣに代入し、続いて、ＣＴに８を代入する。
【００３１】
ステップＳ４５では、ＢＰに１を加算し、続いて、Ｂを８ビット分左ビットシフトした値に、Ｃを加算して、この加算結果をＣに代入し、続いて、ＣＴに８を代入する。
【００３２】
バイトイン処理（ＢＹＴＥＩＮ）では、上記ステップＳ４３、ステップＳ４４又はステップＳ４５の処理を終えると、サブルーチン処理を終了する。
【００３３】
【発明が解決しようとする課題】
ところで、以上の符号化時再正規化処理（ＲＥＮＯＲＭＥ）処理並びに復号時再正規化処理（ＲＥＮＯＲＭＤ）では、Ａを１ビットごとに左ビットシフトさせるループを形成し、Ａの値が０ｘ８０００以上となった時点でそのループを抜ける処理を行っている。そのため、１回のビットシフトごとにループ処理がされるので、ビットシフトの量が大きければ大きいほど処理時間が長くなってしまい、１組のデータ（Ｓｙｍｂｏｌ，Ｃｏｎｔｅｃｔ）を処理するために費やす時間が変動してしまっていた。さらに、符号化時と復号時で、異なる処理モジュールを用いなければならず、ソフトウェアやハードウェアによる回路規模が大きくなってしまっていた。
【００３４】
本発明は、このような実情を鑑みてなされたものであり、処理時間が短く、回路規模を小さくしたＭＱ−ＣＯＤＥＲ方式の算術符号化／復号装置及び再正規化方法を提供することを目的とする。
【００３５】
【課題を解決するための手段】
本発明にかかるＭＱ−ＣＯＤＥＲ方式の算術符号化／復号装置は、ＡｕｇｅｎｄレジスタＡ、符号レジスタＣ及び空バイトカウンタＣＴの値を参照し、ＭＱ−ＣＯＤＥＲ方式における符号化時再正規化処理並びに復号時再正規化処理を行う再正規化手段を備えている。
【００３６】
上記再正規化手段は、ＭＳＢが１となるまで上記AugendレジスタＡの値を１ビット毎に左シフトした場合のシフト回数を求め、この回数をシフト数ＳＨＩＦＴ＿Ａとして出力するシフト数算出部と、上記シフト数ＳＨＩＦＴ＿Ａで示された値のビット分、上記AugendレジスタＡの値を左シフトする第１の左ビットシフト部と、上記シフト数ＳＨＩＦＴ＿Ａから空バイトカウンタＣＴの値を減算する減算部と、符号化時であって上記減算部による減算結果が負でない場合には、バイトアウト処理命令を発行し、復号時であって上記減算部による減算結果が負でない場合、並びに、復号時であって上記空バイトカウンタＣＴの値が０でなく且つ空バイトカウンタＣＴの値とシフト数ＳＨＩＦＴ＿Ａが同一であり且つ正規化が行われる場合には、バイトイン処理命令を発行するバイトアウト/バイトイン部と、  上記バイトアウト/バイトイン部によりバイトアウト処理命令又はバイトイン処理命令を発行する場合には、上記空バイトカウンタＣＴで示された値のビット分上記符号レジスタＣを左シフトし、上記バイトアウト/バイトイン部によりバイトアウト処理命令又はバイトイン処理命令を発行しない場合には、上記シフト数ＳＨＩＦＴ＿Ａで示された値のビット分上記符号レジスタＣの値を左シフトする第２の左ビットシフト部と、上記バイトアウト/バイトイン部によりバイトアウト処理命令又はバイトイン処理命令を発行しない場合には、上記減算部による減算結果の絶対値を上記空バイトカウンタＣＴの値とし、上記バイトアウト/バイトイン部によりバイトアウト処理命令又はバイトイン処理命令を発行する場合には、上記空バイトカウンタＣＴの値を０とするＣＴ値選択部と、上記バイトアウト/バイトイン部によりバイトアウト処理命令又はバイトイン処理命令を発行しない場合には、上記シフト数ＳＨＩＦＴ＿Ａの値を０とし、上記バイトアウト/バイトイン部によりバイトアウト処理命令又はバイトイン処理命令を発行する場合には、上記シフト数ＳＨＩＦＴ＿Ａを上記減算部による減算結果の絶対値とする残りループ数選択部とを有する。
【００３７】
このＭＱ−ＣＯＤＥＲ方式の算術符号化／復号装置では、ＡｕｇｅｎｄレジスタＡの値をループ処理を行わずに求める。このＭＱ−ＣＯＤＥＲ方式の算術符号化／復号装置では、（シフト数ＳＨＩＦＴ＿Ａ−空バイトカウンタＣＴ）の正負符号並びに上記空バイトカウンタＣＴの値に基づき、バイトアウト処理又はバイトイン処理が発生するか否かを判断する。バイトアウト処理又はバイトイン処理が発生する場合には、このバイトアウト処理又はバイトイン処理前までの符号レジスタＣ、空バイトカウンタＣＴの値を求め、バイトアウト処理又はバイトイン処理が発生しない場合には、正規化処理終了までの符号レジスタＣ、空バイトカウンタＣＴの値を求める。そして、バイトアウト処理又はバイトイン処理の後に、（シフト数ＳＨＩＦＴ＿Ａ−空バイトカウンタＣＴ）の値が正の値である場合には、この減算結果をシフト数ＳＨＩＦＴ＿Ａに代入して、再度、再正規化処理を行う。
【００３８】
本発明にかかる再正規化方法は、  ＡｕｇｅｎｄレジスタＡ、符号レジスタＣ及び空バイトカウンタＣＴの値を参照して、符号化時再正規化処理並びに復号時再正規化処理を行うＭＱ−ＣＯＤＥＲ方式の算術符号化／復号処理で用いられる再正規化方法である。
【００３９】
この再正規化方法は、ＭＳＢが１となるまで上記ＡｕｇｅｎｄレジスタＡの値を１ビット毎に左シフトした場合のシフト回数を求め、この回数をシフト数ＳＨＩＦＴ＿Ａとして出力するシフト数算出ステップと、上記シフト数ＳＨＩＦＴ＿Ａで示された値のビット分、上記ＡｕｇｅｎｄレジスタＡの値を左シフトする第１の左ビットシフトステップと、上記シフト数ＳＨＩＦＴ＿Ａから空バイトカウンタＣＴの値を減算する減算ステップと、符号化時であって上記減算ステップによる減算結果が負でない場合には、バイトアウト処理を行い、復号時であって上記減算ステップによる減算結果が負でない場合、並びに、復号時であって上記空バイトカウンタＣＴの値が０でなく且つ空バイトカウンタＣＴの値とシフト数ＳＨＩＦＴ＿Ａが同一であり且つ正規化を行う場合には、バイトイン処理を行うバイトアウト／バイトインステップと、上記バイトアウト／バイトインステップによりバイトアウト処理又はバイトイン処理を行う場合には、上記空バイトカウンタＣＴで示された値のビット分上記符号レジスタＣを左シフトし、上記バイトアウト／バイトインステップによりバイトアウト処理又はバイトイン処理を行わない場合には、上記シフト数ＳＨＩＦＴ＿Ａで示された値のビット分上記符号レジスタＣの値を左シフトする第２の左ビットシフトステップと、上記バイトアウト／バイトインステップによりバイトアウト処理又はバイトイン処理を行わない場合には、上記減算ステップによる減算結果の絶対値を上記空バイトカウンタＣＴの値とし、上記バイトアウト／バイトインステップによりバイトアウト処理又はバイトイン処理を行う場合には、上記空バイトカウンタＣＴの値を０とするＣＴ値選択ステップと、上記バイトアウト／バイトインステップによりバイトアウト処理又はバイトイン処理を行わない場合には、上記シフト数ＳＨＩＦＴ＿Ａの値を０とし、上記バイトアウト／バイトインステップによりバイトアウト処理又はバイトイン処理を行う場合には、上記シフト数ＳＨＩＦＴ＿Ａを上記減算ステップによる減算結果の絶対値とする残りループ数選択ステップとを有しており、上記残りループ数選択ステップから出力される上記シフト数ＳＨＩＦＴ＿Ａの値が０である場合には処理を終了し、０でない場合には上記減算ステップから処理を繰り返す。
【００４０】
この再正規化方法では、ＡｕｇｅｎｄレジスタＡの値をループ処理を行わずに求める。この再正規化方法では、（シフト数ＳＨＩＦＴ＿Ａ−空バイトカウンタＣＴ）の正負符号並びに上記空バイトカウンタＣＴの値に基づき、バイトアウト処理又はバイトイン処理が発生するか否かを判断する。バイトアウト処理又はバイトイン処理が発生する場合には、このバイトアウト処理又はバイトイン処理前までの符号レジスタＣ、空バイトカウンタＣＴの値を求め、バイトアウト処理又はバイトイン処理が発生しない場合には、正規化処理終了までの符号レジスタＣ、空バイトカウンタＣＴの値を求める。そして、バイトアウト処理又はバイトイン処理の後に、（シフト数ＳＨＩＦＴ＿Ａ−空バイトカウンタＣＴ）の値が正の値である場合には、この減算結果をシフト数ＳＨＩＦＴ＿Ａに代入して、再度、再正規化処理を行う。
【００４１】
【発明の実施の形態】
以下、本発明の実施の形態として、本発明を適用した再正規化処理装置について説明をする。本実施の形態の再正規化処理装置は、算術符号化方式の一つであるＭＱ−ＣＯＤＥＲの符号化／復号アルゴリズムの再正規化処理を行う装置である。つまり、本実施の形態の再正規化処理装置は、符号化時再正規化処理（ＲＥＮＯＲＭＥ）及び復号時再正規化処理（ＲＥＮＯＲＭＤ）を行う装置である。
【００４２】
図１に、本実施の形態の再正規化処理装置１０の回路図を示す。
【００４３】
再正規化処理装置１０は、シフト量算出部１１と、第１の左ビットシフタ１２と、減算器１３と、絶対値化部１４と、バイトアウト／バイトイン判断部１５と、シフト量選択スイッチ１６と、第２の左ビットシフタ１７と、下位４ビット抽出部１８と、残りループ回数選択スイッチ１９と、ＣＴ選択スイッチ２０と、制御部２１とを備えている。
【００４４】
再正規化処理装置１０には、１データ処理ステップごとに、すなわち、１つのシンボル及びコンテキストに対する処理ステップごとに、ＡｕｇｅｎｄレジスタＡ、符号レジスタＣ及び空バイトカウンタＣＴに格納されている値が入力される。これらの値は、１データ処理ステップごとに、すなわち、１つのシンボル及びコンテキストに対する処理ステップごとに、再正規化処理装置１０に入力される。ＡｕｇｅｎｄレジスタＡには、１６ビットのバイナリデータが格納されている。符号レジスタＣには、２８ビットのバイナリデータが格納されている。空バイトカウンタＣＴの値は、４ビットのバイナリデータである。
【００４５】
また、再正規化処理装置１０には、現在の動作が、符号化処理であるか復号処理であるかを識別するＤＥＣ信号が入力される。
【００４６】
シフト量算出部１１には、１６ビットのＡｕｇｅｎｄレジスタＡの値が入力される。シフト量算出部１１は、ＡｕｇｅｎｄレジスタＡの値が再正規化処理が終了するまでに左ビットシフトするシフト量を算出する。すなわち、シフト量算出部１１は、Ａ≧０ｘ８０００となるまで、つまり、ＡのＭＳＢが１となるまでにＡｕｇｅｎｄレジスタＡの値を何ビット分左シフトするかを算出する。ＡのＭＳＢの値が１となるまでの左ビットシフトの回数は、Ａの各ビットの値をＭＳＢ側から走査していき、最初に１が検出されたビット位置から算出することができる。ＡのＬＳＢを０ビット目とし、ＡのＭＳＢのビット位置を１５ビット目と定義したとき、ＭＳＢから各ビットの値を走査していって最初に１が検出されたビット位置が１５ビット目であれば左ビットシフト回数は０、１４ビット目であれば左ビットシフト回数は１、１３ビット目であれば左ビットシフト回数は１２、そして、０ビット目であれば左ビットシフト回数は１５となる。シフト量算出部１１は、算出した左ビットシフト回数を、シフト数ＳＨＩＦＴ＿Ａとして出力する。なお、シフト量算出部１１から出力されるシフト数ＳＨＩＦＴ＿Ａは、符号化時再正規化処理（ＲＥＮＯＲＭＥ）及び復号時再正規化処理（ＲＥＮＯＲＭＤ）の処理のループ演算されるべき回数を示しているものである。
【００４７】
第１の左ビットシフタ１２には、ＡｕｇｅｎｄレジスタＡの値と、シフト量算出部１１から出力されるシフト数ＳＨＩＦＴ＿Ａが入力される。第１の左ビットシフタ１２は、Ａの値を、ＳＨＩＦＴ＿Ａビット分左ビットシフトする。すなわち、第１の左ビットシフタ１２は下記演算を行う。
Ａ＜＜ＳＨＩＦＴ＿Ａ
第１の左ビットシフタ１２は、左ビットシフトを行った後の値の下位１６ビット（ＮＥＸＴ＿Ａ）を出力する。この下位１６ビットの値（ＮＥＸＴ＿Ａ）は、再正規化結果として、ＡｕｇｅｎｄレジスタＡに格納される。なお、本再正規化処理装置１０では、バイトアウト処理又はバイトイン処理が発生するか否かを考慮せずに、再正規化後のＡの値を算出している。これは、バイトアウト処理及びバイトイン処理を行ったとしても、Ａの値が変化しないためである。
【００４８】
減算器１３は、シフト数ＳＨＩＦＴ＿Ａと、空バイトカウンタＣＴの値とが入力される。減算器１３は、シフト数ＳＨＩＦＴ＿Ａから、空バイトカウンタＣＴの値を減算する。すなわち、第１の左ビットシフタ１２は下記演算を行う。
ＳＨＩＦＴ＿Ａ−ＣＴ
減算器１３の出力値は、正負符号付きの値として出力される。ＳＨＩＦＴ＿Ａ及びＣＴはともに４ビットの値なので、減算器１３の出力値は、５ビットで表され、上位１ビットが正負符号を表し、残り４ビットが絶対値部分の値を表している。上位１ビットの正負符号は、減算器１３の減算結果が、負のときに１となり、０又は正のときに０となる。
【００４９】
なお、減算器１３に入力されるシフト数ＳＨＩＦＴ＿Ａは、バイトアウト処理又はバイトイン処理が発生する前の最初の再正規化処理時には、シフト量算出部１１から出力された値となるが、バイトアウト処理又はバイトイン処理のあとの再度の再正規化処理時には、残りループ回数選択スイッチ１９とから出力される残りのループ回数を示すＮＥＸＴ＿ＳＨＩＦＴ＿Ａの値となる。
【００５０】
絶対値化部１４は、減算器１３の出力値（５ビット）を絶対値化する。この絶対値化部１４から出力される値のビット幅は、符号ビットが除かれるので、４ビットとなる。
【００５１】
バイトアウト／バイトイン判断部１５は、バイトアウト処理（ＢＹＴＥＯＵＴ）又はバイトイン処理（ＢＹＴＥＩＮ）が発生するか否かを判断する。バイトアウト／バイトイン判断部１５には、空バイトカウンタＣＴと、減算器１３の出力値と、ＤＥＣ信号とが入力される。なお、ＣＴ選択スイッチ２０の出力値に応じて空バイトカウンタＣＴの値が更新されるが、バイトアウト／バイトイン判断部１５に入力される空バイトカウンタＣＴの値は、更新される前の値である。
【００５２】
バイトアウト／バイトイン判断部１５は、ＤＥＣ信号に基づき、現在の処理が符号化処理であるか、復号処理であるかを判断する。
【００５３】
バイトアウト／バイトイン判断部１５は、符号化処理時には、減算器１３の出力値の符号ビットが１のとき、つまり、ＣＴ＞ＳＨＩＦＴ＿Ａのときには、バイトアウト処理は発生しないと判断し、減算器１３の出力値の符号ビットが０、つまり、ＣＴ≦ＳＨＩＦＴ＿Ａのときには、バイトアウト処理が発生すると判断する。これは、Ａ≧０ｘ８０００となるまでＡを左ビットシフトしている途中で、ＣＴ＝０となったときに限りバイトアウト処理が発生するためである。
【００５４】
バイトアウト／バイトイン判断部１５は、復号処理時には、減算器１３の出力値の符号ビットが１のとき、つまり、ＣＴ＞ＳＨＩＦＴ＿Ａのとき、バイトイン処理は発生しないと判断する。また、バイトアウト／バイトイン判断部１５は、復号処理時には、減算器１３の出力値の符号ビットが０であっても、ＣＴ選択スイッチ２０による更新前の空バイトカウンタＣＴの値が０でなく、且つ、ＣＴ＝ＳＨＩＦＴ＿Ａのときには、バイトイン処理は発生しないと判断する。バイトアウト／バイトイン判断部１５は、それ以外の場合には、バイトイン処理が発生すると判断する。なお、復号処理時にＣＴ＝ＳＨＩＦＴ＿Ａのときにもバイトイン処理を発生しないのは、図５に示すように、バイトイン処理の後のステップに、Ａの左ビットシフト処理並びにＣＴのカウントダウン処理があるためである。
【００５５】
バイトアウト／バイトイン判断部１５は、バイトアウト処理又はバイトイン処理を発生するか否かを示す信号として、ＢＹＴＥＩＯ＿Ｘを出力する。バイトアウト／バイトイン判断部１５は、バイトアウト処理又はバイトイン処理を発生する場合には、ＢＹＴＥＩＯ＿Ｘを０とし、バイトアウト処理又はバイトイン処理を発生しない場合には、ＢＹＴＥＩＯ＿Ｘを１とする。
【００５６】
シフト量選択スイッチ１６は、符号レジスタＣの値を左ビットシフトするシフト数ＳＨＩＦＴ＿Ｃを選択するスイッチである。シフト量選択スイッチ１６の選択信号は、バイトアウト／バイトイン判断部１５から出力されるＢＹＴＥＩＯ＿Ｘである。シフト量選択スイッチ１６は、バイトアウト処理又はバイトイン処理が発生する場合には、空バイトカウンタＣＴの値を選択し、この空バイトカウンタＣＴの値をシフト数ＳＨＩＦＴ＿Ｃとして出力する。すなわち、バイトアウト処理又はバイトイン処理が発生する場合には、符号レジスタＣのシフト数に、バイトアウト処理又はバイトイン処理の発生直前までの再正規化処理のループ回数を示すこととなる空バイトカウンタＣＴが選択される。また、シフト量選択スイッチ１６は、バイトアウト処理又はバイトイン処理が発生しない場合には、すなわち、再正規化処理が終了する場合には、シフト数ＳＨＩＦＴ＿Ａを選択し、このシフト数ＳＨＩＦＴ＿Ａをシフト数ＳＨＩＦＴ＿Ｃとして出力する。
【００５７】
なお、シフト量選択スイッチ１６に入力されるシフト数ＳＨＩＦＴ＿Ａは、バイトアウト処理又はバイトイン処理が発生する前の最初の再正規化処理時には、シフト量算出部１１から出力された値となるが、バイトアウト処理又はバイトイン処理のあとの再度の再正規化処理時には、残りループ回数選択スイッチ１９とから出力される残りのループ回数を示すＮＥＸＴ＿ＳＨＩＦＴ＿Ａの値となる。
【００５８】
また、シフト量選択スイッチ１６に入力される選択信号は、バイトアウト／バイトイン判断部１５から出力されるＢＹＴＥＩＯ＿Ｘではなく、減算器１３の減算結果の符号ビットであってもよい。
【００５９】
第２の左ビットシフタ１７には、２８ビットの符号レジスタＣの値と、シフト量選択スイッチ１６により選択されたシフト数ＳＨＩＦＴ＿Ｃが入力される。第２の左ビットシフタ１７は、Ｃの値を、ＳＨＩＦＴ＿Ｃビット分左ビットシフトする。すなわち、第２の左ビットシフタ１７は下記演算を行う。
Ｃ＜＜ＳＨＩＦＴ＿Ｃ
この第２の左ビットシフタ１７から出力された値の下位２８ビットの値（ＮＥＸＴ＿Ｃ）は、符号レジスタＣに格納される。なお、バイトアウト処理又はバイトイン処理が行われた後、再度、再正規化が行われる場合には、ＮＥＸＴ＿Ｃで更新された符号レジスタＣの値が、本再正規化処理装置１０に入力される。
【００６０】
下位４ビット抽出部１８は、減算器１３の出力値（５ビット）の下位４ビットを抽出する。減算器１３の出力値は、全５ビットであり、上位の１ビットが符号ビットを意味するので、下位４ビットを抽出するということは、減算器１３の出力値の絶対値部分を抽出していることを意味する。
【００６１】
残りループ回数選択スイッチ１９は、バイトアウト処理又はバイトイン処理が発生した後の残りのループ回数ＮＥＸＴ＿ＳＨＩＦＴ＿Ａを選択するスイッチである。残りループ回数選択スイッチ１９の選択信号は、バイトアウト／バイトイン判断部１５から出力されるＢＹＴＥＩＯ＿Ｘである。残りループ回数選択スイッチ１９は、バイトアウト処理又はバイトイン処理が発生する場合には、下位４ビット抽出部１８から出力された値を選択し、この下位４ビット抽出部１８の出力値を残りのループ回数ＮＥＸＴ＿ＳＨＩＦＴ＿Ａとして出力する。すなわち、本来再正規化処理では、本来、ＳＨＩＦＴ＿Ａ回だけループ処理が行われるはずであるが、バイトアウト処理又はバイトイン処理が発生した場合、ループ回数はＣＴ回で終了している。従って、残りのループ回数として、ＳＨＩＤＴ＿Ａ−ＣＴを選択している。残りループ回数選択スイッチ１９は、バイトアウト処理又はバイトイン処理が発生しない場合には、０を選択し、この０の値を残りのループ回数ＮＥＸＴ＿ＳＨＩＦＴ＿Ａとして出力する。バイトアウト処理及びバイトイン処理が発生しない場合には、すでに、ＳＨＩＦＴ＿Ａ回だけループ処理が行われており、残りループ回数が０となるためである。
【００６２】
なお、残りループ回数選択スイッチ１９に入力される選択信号は、バイトアウト／バイトイン判断部１５から出力されるＢＹＴＥＩＯ＿Ｘではなく、減算器１３の減算結果の符号ビットであってもよい。
【００６３】
ＣＴ選択スイッチ２０は、空バイトカウンタＣＴの更新値ＮＥＸＴ＿ＣＴを選択するスイッチである。ＣＴ選択スイッチ２０の選択信号は、バイトアウト／バイトイン判断部１５から出力されるＢＹＴＥＩＯ＿Ｘである。ＣＴ選択スイッチ２０は、バイトアウト処理又はバイトイン処理が発生する場合には、０を選択し、この０を空バイトカウンタＣＴの更新値ＮＥＸＴ＿ＣＴとして出力する。これは、バイトアウト処理又はバイトイン処理が発生する場合には、必ず空バイトカウンタＣＴの値が０となっているからである。ＣＴ選択スイッチ２０は、バイトアウト処理又はバイトイン処理が発生しない場合には、絶対値化部１４から出力された値を選択し、この絶対値化部１４から出力された値を、空バイトカウンタＣＴの更新値ＮＥＸＴ＿ＣＴとして出力する。バイトアウト処理又はバイトイン処理が発生しない場合には、ＳＨＩＦＴ＿Ａ回のループ処理を行った後のＣＴの値が、ＣＴ−ＳＨＩＦＴ＿Ａとなっているためである。
【００６４】
なお、ＣＴ選択スイッチ２０に入力される選択信号は、バイトアウト／バイトイン判断部１５から出力されるＢＹＴＥＩＯ＿Ｘではなく、減算器１３の減算結果の符号ビットであってもよい。
【００６５】
制御部２１は、バイトアウト／バイトイン判断部１５から出力されたＢＹＴＥＩＯ＿Ｘに応じて、図４で示したバイトアウト処理、又は、図６で示したバイトイン処理を実行する。制御部２１は、ＢＹＴＥＩＯ＿Ｘが１である場合には、本再正規化処理を終了する。制御部２１は、符号化時であって、ＢＹＴＥＩＯ＿Ｘが０である場合には、バイトアウト処理を実行する。制御部２１は、復号時であって、ＢＹＴＥＩＯ＿Ｘが０である場合には、バイトイン処理を実行する。また、制御部２１は、バイトアウト処理又はバイトイン処理を行った後、残りのループ回数ＮＥＸＴ＿ＳＨＩＦＴ＿Ａの値を判断し、残りのループ回数ＮＥＸＴ＿ＳＨＩＦＴ＿Ａの値が０であれば、再正規化処理を終了する。また、残りのループ回数ＮＥＸＴ＿ＳＨＩＦＴ＿Ａの値が０でない場合（１以上の場合）には、残りのループ回数ＮＥＸＴ＿ＳＨＩＦＴ＿Ａの値を、上記のシフト数ＳＨＩＦＴ＿Ａに代入し、再度、本回路による再正規化処理を実行する。すなわち、残りのループ回数ＮＥＸＴ＿ＳＨＩＦＴ＿Ａの値は、バイトアウト処理又はバイトイン処理が発生した後、２回目以降のバイトアウト処理又はバイトイン処理が行われるかどうかを判断するために用いられることとなる。
【００６６】
以上の再正規化処理装置１０で行われる再正規化処理フローを図２に示す。
【００６７】
再正規化処理装置１０は、再正規化処理を開始すると、以下のステップＳ５１から処理を行う。
【００６８】
まず、ステップＳ５１では、ＡｕｇｅｎｄレジスタＡの値から、ループ回数（ＳＨＩＦＴ＿Ａ）を算出する。続いて、ステップＳ５２では、ＳＨＩＦＴ＿Ａ−ＣＴ＜０を判断する。ＳＨＩＦＴ＿Ａ−ＣＴ＜０であるならば、ステップＳ５３に進み、ＳＨＩＦＴ＿Ａ−ＣＴ≧０であるならば、ステップＳ５４に進む。
【００６９】
ステップＳ５３では、下記演算を行う。
Ｃ＜＜ＳＨＩＦＴ＿Ａ
ＣＴ＝｜ＳＨＩＦＴ＿Ａ−ＣＴ｜
ＮＥＸＴ＿ＳＨＩＦＴ＿Ａ＝０
ＢＹＴＥＩＯ＿Ｘ＝１
ステップＳ５３で以上の演算を終えると、再正規化処理装置１０は再正規化処理を終了する。
【００７０】
ステップＳ５４では、下記演算を行う。
Ｃ＜＜ＣＴ
ＣＴ＝０
ＮＥＸＴ＿ＳＨＩＦＴ＿Ａ＝｜ＳＨＩＦＴ＿Ａ−ＣＴ｜
ステップＳ５４の処理を終えると、ステップＳ５５に進む。
【００７１】
ステップＳ５５では、現在の処理が復号処理であるか否かを判断する。復号処理であれば、ステップＳ５６に進み、符号化処理であればステップＳ５８に進む。
【００７２】
ステップＳ５６では、（（ＣＴ＝ＳＨＩＦＴ＿Ａ）＆（ＣＴ≠０））且つ正規化が発生しない場合であるか否かを判断する。すなわち、バイトイン処理が発生するか否かを判断する。なお、ここで判断されるＣＴの値は、上記ステップＳ５４で代入された０ではなく、ステップＳ５４で０が代入される前の値である。（ＣＴ＝ＳＨＩＦＴ＿Ａ）＆（ＣＴ≠０））である場合、つまり、バイトイン処理が発生しない場合には、ステップＳ５７に進む。（ＣＴ＝ＳＨＩＦＴ＿Ａ）＆（ＣＴ≠０））でない場合、つまり、バイトイン処理が発生する場合には、ステップＳ５８に進む。
【００７３】
ステップＳ５７では、ＢＹＴＥＩＯ＿Ｘに１を代入する。このステップＳ５７の処理を終えると、再正規化処理装置１０は再正規化処理を終了する。
【００７４】
ステップＳ５８では、ＢＹＴＥＩＯ＿Ｘに０を代入する。続いて、ステップＳ５９では、現在の処理が復号処理であるか否かを判断する。復号処理であれば、ステップＳ６０においてバイトイン処理のサブルーチンを呼び出して、処理を実行する。バイトイン処理を終了すると、ステップＳ６２に進む。符号化処理であれば、ステップＳ６１においてバイトアウト処理のサブルーチンを呼び出して、処理を実行する。バイトアウト処理を終了すると、ステップＳ６２に進む。
【００７５】
ステップＳ６２では、ＮＥＸＴ＿ＳＨＩＦＴ＿Ａ＝０であるか否かを判断する。すなわち、残りループ回数が０であるか否かを判断する。ＮＥＸＴ＿ＳＨＩＦＴ＿Ａ＝０である場合には、再正規化処理装置１０は再正規化処理を終了する。ＮＥＸＴ＿ＳＨＩＦＴ＿Ａ≠０である場合には、ステップＳ６３に進む。
【００７６】
ステップＳ６３では、ＳＨＩＦＴ＿Ａに、ＮＥＸＴ＿ＳＨＩＦＴ＿Ａを代入する。
【００７７】
そして、このステップＳ６３の処理を終えると、再正規化処理装置１０は、ステップＳ５２から処理を繰り返す。
【００７８】
以上のように再正規化処理装置１０は、再正規化処理中に、バイトアウト処理（ＢＹＴＥＯＵＴ）又はバイトイン処理（ＢＹＴＥＩＮ）処理が発生するか否かを判断する。再正規化処理装置１０は、バイトアウト処理又はバイトイン処理が発生する場合には、符号レジスタＣ及び空バイトカウンタＣＴの値を、バイトアウト処理及びバイトイン処理が発生する直前の状態に遷移させる処理を行う。また、バイトアウト処理又はバイトイン処理が発生しない場合には、符号レジスタＣ及び空バイトカウンタＣＴの値を、正規化終了後の値に遷移させる処理を行う。また、再正規化処理装置１０は、バイトアウト処理及びバイトイン処理が発生するか否かに関わらず、ＡｕｇｅｎｄレジスタＡの値を正規化終了後の値に遷移させる処理を行う。これは、ＡｕｇｅｎｄレジスタＡが、バイトアウト処理及びバイトアウト処理により影響は与えられないためである。
【００７９】
また、再正規化処理装置１０は、バイトイン処理又はバイトアウト処理を終了した後にも、再度、再正規化処理を行い、符号レジスタＣ及び空バイトカウンタＣＴの状態を遷移させる。この際に、再正規化処理装置１０では、ＡｕｇｅｎｄレジスタＡの値を扱わずに、再正規化処理の残りループ回数ＮＥＸＴ＿ＳＨＩＦＴ＿Ａのみを取り扱う。このため、バイトアウト処理又はバイトイン処理後に改めてＡｕｇｅｎｄレジスタＡの値からシフト量ＳＨＩＦＴ＿Ａを算出せずに処理を行うことができる。
【００８０】
【発明の効果】
本発明にかかるＭＱ−ＣＯＤＥＲ方式の算術符号化／復号装置並びに再正規化方法では、ＡｕｇｅｎｄレジスタＡの値を、ループ処理を行わずに求める。本発明では、（シフト数ＳＨＩＦＴ＿Ａ−空バイトカウンタＣＴ）の正負符号並びに上記空バイトカウンタＣＴの値に基づき、バイトアウト処理又はバイトイン処理が発生するか否かを判断する。バイトアウト処理又はバイトイン処理が発生する場合には、このバイトアウト処理又はバイトイン処理前までの符号レジスタＣ、空バイトカウンタＣＴの値を求め、バイトアウト処理又はバイトイン処理が発生しない場合には、正規化処理終了までの符号レジスタＣ、空バイトカウンタＣＴの値を求める。そして、バイトアウト処理又はバイトイン処理の後に、（シフト数ＳＨＩＦＴ＿Ａ−空バイトカウンタＣＴ）の値が正の値である場合には、この減算結果をシフト数ＳＨＩＦＴ＿Ａとして、再度、再正規化処理を行う。
【００８１】
このことにより、本発明では、処理時間を短縮し、回路規模も小さくすることができる。
【００８２】
また、本発明では、ＡｕｇｅｎｄレジスタＡの値を、ループ処理を行わずに求め、さらに、バイトアウト処理又はバイトイン処理が発生する場合には、このバイトアウト処理又はバイトイン処理前までの符号レジスタＣ、空バイトカウンタＣＴの値を求め、バイトアウト処理又はバイトイン処理が発生しない場合には、正規化処理終了までの符号レジスタＣ、空バイトカウンタＣＴの値を求めているので、符号化時再正規化処理（ＲＥＮＯＲＭＥ）及び復号時再正規化処理（ＲＥＮＯＲＭＤ）を共通の回路で構成することができる。
【００８３】
また、本発明では、バイトアウト処理又はバイトイン処理が発生する場合には、このバイトアウト処理又はバイトイン処理前まで、バイトアウト処理又はバイトイン処理が発生しない場合には、正規化処理終了までの処理を、ループ演算をせずに求めるので、１データを処理する時間を均一にすることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態の再正規化処理装置の回路図である。
【図２】上記再正規化処理装置の処理内容を示すフローチャートである。
【図３】符号化時再正規化処理のフローチャートである。
【図４】バイトアウト処理のフローチャートである。
【図５】復号時再正規化処理のフローチャートである。
【図６】バイトイン処理のフローチャートである。
【符号の説明】
１０  再正規化処理装置、１１  シフト量算出部、１２  第１の左ビットシフタ、１３  減算器、１４  絶対値化部、１５  バイトアウト／バイトイン判断部、１６  シフト量選択スイッチ、１７  第２の左ビットシフタ、１８  下位４ビット抽出部、１９  残りループ回数選択スイッチ、２０  ＣＴ選択スイッチ、２１  制御部
【図１】
0003620506.tif 000002
【図２】
0003620506.tif 000003
【図３】
0003620506.tif 000004
【図４】
0003620506.tif 000005
【図５】
0003620506.tif 000006
【図６】
0003620506.tif 000007