説明

比較方法および比較器

【課題】比較結果を得るために乗算器を使用せず、小さな回路規模で比較処理を行うことができるようにする。
【解決手段】a,b,c,dを正の整数とし、「b/a」と「d/c」の大小関係を「b・c−a・d」の値の符号から判定する比較方法である。「b・c−a・d+y」として、yを初期値0とし、「y<d」ならば「b←b−1」と「y←y+c」を繰り返し、「y>−c」ならば「a←a−1」と「y←y−d」を繰り返す。該繰り返しの結果、「a=0」となったとき、「b≠0」を満たす間、「b←b−1」と「y←y+c」を繰り返し、前記繰り返しの結果、「b=0」となったとき、「a≠0」を満たす間、「a←a−1」と「y←y−d」を繰り返す。「a=0」且つ「b=0」となったとき、「y>0」であれば「b・c>a・d」と判定し、「y=0」であれば「b・c=a・d」と判定し、「y<0」であれば「b・c<a・d」と判定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、正の整数の値を比較する比較方法および比較器に関するものである。
【背景技術】
【0002】
正の整数の値a,b,c,dに関して、「b/a」と「d/c」の大小関係を求める問題を考える。これは、「b・c」と「a・d」の大小関係を求めることと等価であり、よって「b・c−a・d」を求めて、それが正、負、0のいずれであるかを判定すれば良い。これに対応した従来の典型的な比較器の構成を図8に示す。51は数値データbの入力端子、52は数値データcの入力端子、53は数値データaの入力端子、54は数値データdの入力端子、55,56は乗算器、57は減算器、58は減算器57の減算結果の正、負又は0を判定する符号判定器、59は比較結果を出力する出力端子である。
【0003】
乗算器55の入力は、数値データbの入力端子51と数値データcの入力端子52に接続される。乗算器56の入力は、数値データaの入力端子53と数値データdの入力端子54に接続される。減算器57の入力は、乗算器55の出力と乗算器56の出力に接続される。符号判定器58の入力は減算器57の出力に接続される。比較結果の出力端子59は、符号判定器58の出力に接続される。
【0004】
動作を税明する。入力端子51〜54から数値データb,c,a,dが入力されると、乗算器55は「b・c」を出力し、乗算器56は「a・d」を出力する。減算器57は「b・c−a・d」を出力する。符号判定器58は「b・c−a・d」の正、負又は0を判定する。この判定結果により「b・c」と「a・d」の大小関係が分かる。
【発明の開示】
【発明が解決しようとする課題】
【0005】
しかしながら、上記のような比較器の構成では、加算器57等と比較して回路規模の大きな乗算器55,56を必要とし、コストを増加させる。本発明はこのような問題点を解消し、比較結果を得るために乗算器を使用せず、小さな回路規模で比較処理を行うことができるようにした比較方法および比較器を提供することを目的とする。
【課題を解決するための手段】
【0006】
上記目的を達成するために、請求項1にかかる発明の比較方法は、a,b,c,dを正の整数とし、「b/a」と「d/c」の大小関係を「b・c−a・d」の値の符号から判定する比較方法であって、「b・c−a・d+y」として、yを初期値0とし、「y<d」ならば「b←b−1」と「y←y+c」を繰り返し、「y>−c」ならば「a←a−1」と「y←y−d」を繰り返し、該繰り返しの結果、「a=0」となったとき、「b≠0」を満たす間、「b←b−1」と「y←y+c」を繰り返し、前記繰り返しの結果、「b=0」となったとき、「a≠0」を満たす間、「a←a−1」と「y←y−d」を繰り返し、
「a=0」且つ「b=0」となったとき、「y>0」であれば「b・c>a・d」と判定し、「y=0」であれば「b・c=a・d」と判定し、「y<0」であれば「b・c<a・d」と判定する、ことを特徴とする。
請求項2にかかる発明の比較方法は、a,b,c,dを正の整数とし、「b/a」と「d/c」の大小関係を「b・c−a・d」の値の符号から判定する比較方法であって、
「b・c−a・d+y」として、yを初期値0とし、「y<d」ならば「b←b−1」と「y←y+c」を繰り返し、「y>−c」ならば「a←a−1」と「y←y−d」を繰り返し、該繰り返しの結果、「a=0」となったとき、「b≠0」且つ「y≦0」を満たす間、「b←b−1」と「y←y+c」を繰り返し、前記繰り返しの結果、「b=0」となったとき、「a≠0」且つ「y≧0」を満たす間、「a←a−1」と「y←y−d」を繰り返し、「a=0」且つ「b=0」となったとき、「y>0」であれば「b・c>a・d」と判定し、「y=0」であれば「b・c=a・d」と判定し、「y<0」であれば「b・c<a・d」と判定し、または「a=0」且つ「y>0」となったとき、「b・c>a・d」と判定し、または「b=0」且つ「y<0」となったとき、「b・c<a・d」と判定する、ことを特徴とする。
請求項3にかかる発明の比較器は、a,b,c,dを正の整数とし、「b/a」と「d/c」の大小関係を「b・c−a・d」の値の符号から判定する比較器であって、初期値としてy=0の値を格納するyレジスタと、前記aの値がロードされ「y>−c」ならば前記aの値を1づつカウントダウンするaカウンタと、前記bの値がロードされ「y<d」ならば前記bの値を1づつカウントダウントするbカウンタと、前記dの値を符号反転する2の補数回路と、該2の補数回路から出力する−dの値と前記cの値の一方を選択するセレクタと、「y>−c」で且つ前記セレクタから出力する値が−dのときこれと前記yレジスタから出力するyの値を加算し、「y<d」で且つ前記セレクタから出力する値がcのときこれと前記yレジスタから出力するyの値を加算する加算器と、前記aカウンタ、前記bカウンタ、前記セレクタおよび前記yレジスタを制御する制御回路とを備え、前記制御回路は、前記aカウンタの値が0になったときは、前記bカウンタの値が0でない間、前記bカウンタのダウンカウントと前記yレジスタへのcの加算を繰り返し、前記bカウンタの値が0になったときは、前記aカウンタの値が0でない間、前記aカウンタのダウンカウントと前記yレジスタへの−dの加算を繰り返し、前記aカウンタの値と前記bカウンタの値が0になったとき、前記yレジスタの値が、「y>0」であれば「b・c>a・d」と判定し、「y=0」であれば「b・c=a・d」と判定し、「y<0」であれば「b・c<a・d」と判定する、ことを特徴とする。
請求項4にかかる発明の比較器は、a,b,c,dを正の整数とし、「b/a」と「d/c」の大小関係を「b・c−a・d」の値の符号から判定する比較器であって、初期値としてy=0の値を格納するyレジスタと、前記aの値がロードされ「y>−c」ならば前記aの値を1づつカウントダウンするaカウンタと、前記bの値がロードされ「y<d」ならば前記bの値を1づつカウントダウントするbカウンタと、前記dの値を符号反転する2の補数回路と、該2の補数回路から出力する−dの値と前記cの値の一方を選択するセレクタと、「y>−c」で且つ前記セレクタから出力する値が−dのときこれと前記yレジスタから出力するyの値を加算し、「y<d」で且つ前記セレクタから出力する値がcのときこれと前記yレジスタから出力するyの値を加算する加算器と、前記aカウンタ、前記bカウンタ、前記セレクタおよび前記yレジスタを制御する制御回路とを備え、前記制御回路は、前記aカウンタの値が0になったとき、前記bカウンタの値が0でなく且つ前記yレジスタの値が0以下の間、前記bカウンタのダウンカウントと前記yレジスタへのcの加算を繰り返し、前記bカウンタの値が0になったとき、前記aカウンタの値が0でなく且つ前記yレジスタの値が0以上の間、前記aカウンタのダウンカウントと前記yレジスタへの−dの加算を繰り返し、前記aカウンタの値と前記bカウンタの値が0になったとき、前記yレジスタの値が、「y>0」であれば「b・c>a・d」と判定し、「y=0」であれば「b・c=a・d」と判定し、「y<0」であれば「b・c<a・d」と判定し、または「a=0」且つ「y>0」となったとき、「b・c>a・d」と判定し、または「b=0」且つ「y<0」となったとき、「b・c<a・d」と判定する、ことを特徴とする。
【発明の効果】
【0007】
本発明によれば、乗算器を使用することなく、小さな回路規模で比較処理を行うことができ、コストを低減できる利点がある。
【発明を実施するための最良の形態】
【0008】
まず、本発明の比較処理の原理を説明する。a,b,c,dを正の整数とするとき、本発明でも、「b/a」と「d/c」の大小関係の比較を、「b・c−a・d」の符号を求めることで行うが、まずΔを式1で定義する。ここで、yは作業用変数であり初期値は0である。
Δ=b・c−a・d+y (1)
Δに関して、恒等式2が成り立つ
Δ=(b−1)・c−a・d+(y+c)
=b・c−(a−1)・d+(y−d) (2)
よって、a,b,yに対して、新たにa’,b’,y’を式3のように定義した場合、式4が成り立つ。

Δ=b’・c−a’・d+y’ (4)
【0009】
この性質を利用して、次の繰り返し処理1を行う。
繰り返し処理1:「a≠0」且つ「b≠0」を満たす間、処理a、処理bを繰り返す。
処理a:「y<d」ならば、「b←b−1」、「y←y+c」
処理b:「y>−c」ならば、「a←a−1」、「y←y−d」
【0010】
「y<d」の論理式と「y>−c」の論理式は、必ず1つ以上が真となる。「y<d」の論理式と「y>−c」の論理式のいずれもが真になる場合は、どちらの処理を行ってもよい。繰り返し処理1が終了した時、「a=0」又は「b=0」となっている。次に「a=0」ならば繰り返し処理2を、「b=0」ならば繰り返し理3を行う。
【0011】
繰り返し処理2:「b≠0」を満たす間、「b←b−1」、「y←y+c」を繰り返す。
繰り返し処理3:「a≠0」を満たす間、「a←a−1」、「y←y−d」を繰り返す。
繰り返し処理2、又は繰り返し処理3が終了した時、「a=0」且つ「b=0」となっている。すなわち式5が成り立つ。
Δ=0・c−0・d+y=y (5)
【0012】
従って、yの符号によって、「b・c」と「a・d」の大小関係を知ることが出来る。この判定は、処理4により行う。
処理4:

【0013】
なお、処理4で必要なのは、yの正、負又は0だけである。繰り返し処理2の中でyは単調増加なので、「y>0」となったならば、それ以降はyの符号が反転することはない。同様に、繰り返し処理3の中でyは単調減少なので、「y<0」となったならば、それ以降はyの符号が反転することはない。
【0014】
よって、繰り返し処理2、繰り返し処理3は、次の繰り返し処理2’、繰り返し処理3’のように変更してもよい。この繰り返し処理2’、繰り返し処理3’を用いた場合、繰り返し条件が若干複雑になるが、繰り返しの平均回数は滅少する。
繰り返し処理2’:「b≠0」且つ「y≦0」を満たす間、「b←b−1」、「y←y+c」を繰り返す。
繰り返し処理3’:「a≠0」且つ「y≧0」を満たす間、「a←a−1」、「y←y−d」を繰り返す。
【0015】
以上の計算を整理したフローチャートを図4に示す。このフローチャート中の「条件1」の一例を図5に、「条件2」の一例を図6に示す。図5,図6中の||は論理和演算子、&&は論理積演算子、==は等価演算子、!=は非等価演算子、!は否定演算子である。「条件2」は優先順位の等しい条件式が複数あるため、論理式は幾通りかで書くことができる。図5,図6の内のどの論理式を選択しても、正しい結果が得られる。
【0016】
図7にa=5、b=3、c=7、d=4とした場合の処理過程を示す。図7(a)は条件2の条件式が、「b != 0 && (a == 0 || y < d)」、又は「a == 0 || (b != 0 && y < d)」のとき、図7(b)は条件2の条件式が、「b != 0 && (a == 0 || !(y > -c))」、又は「a == 0 || (b != 0 && !(y > -c))」の場合である。図7(a)、(b)では用いる条件式によって変数の変移は異なるが、最終結果は同じである。ここでは、最終的に「y=1」となっているので、「b・c>a・d」、つまり、「b/a>d/c」であることが判定される。
【0017】
<第1の実施例>
図1は本発明の第1の実施例の比較器の構成を示す図である。1は数値データcの入力端子、2は数値データdの入力端子、3は数値データaの入力端子、4は数値データbの入力端子、5は2の補数回路、6はセレクタ、7は加算器、8はyレジスタ、9は制御回路、10はaカウンタ、11はbカウンタ、12はstart制御信号の入力端子、13はvalid制御信号の出力端子、14は比較結果outの出力端子である。
【0018】
2の補数回路5の入力端子は数値データdの入力端子2に接続される。セレクタ7の2個の入力端子6は数値データcの入力端子1と2の補数回路5の出力端子に接続される。加算器7の2個の入力端子はyレジスタ8の出力端子とセレクタ6の出力端子に接続される。yレジスタ8の入力端子は加算器7の出力端子に接続される。aカウンタ10の入力端子は数値データaの入力端子3に接続される。bカウンタ11の入力端子は数値データbの入力端子4に接続される。加算器7の出力端子とyレジスタ8の出力端子は制御回路9の入力端子に接続される。セレクタ6の制御端子とyレジスタ8の制御端子は御御回路9の出力端子に接続される。start制御信号の入力端子12は制御回路9の入力端子に接続される。valid制御信号の出力端子13は制御回路9の出力端子に接続される。比較結果outの出力端子14は制御回路9の出力端子に接続される。
【0019】
次に、図1の構成において、図4のフローチャートの処理を実行する方法を説明する。start制御信号の入力端子12がactiveになった時、制御回路9はvalid制御信号の出力端子13にnon-activeを出力し、比較結果outの出力端子14の信号が無効であることを示す。また、aカウンタ10に数値データaを、bカウンタ11に数値データbをそれぞれロードし、yレジスタ8のyをy=0に初期化して、処理を開始する(ステップS1)。
【0020】
次に、ステップS2において、条件1の判定を行う。条件1が真のときはステップS4に移行し、偽のときはステップS3に移行する。ステップS4では、条件2の判定を行い、条件2が真のときはステップS5に移行し、偽のときはステップS6に移行する。
【0021】
「y<d」の計算は、入力端子2の数値データdの値を2の補数回路5で符号を反転して、セレクタ6で2の補数回路5の出力−dを選択し、セレクタ6の出力−dとyレジスタ8の出力yを加算器7で加算「y−d」し、加算器7の出力「y−d」の符号を制御回路9で判定することにより実行する。
【0022】
また、「y>−c」の計算は、セレクタ6で入力端子1の数値データcを選択し、セレクタ6の出力とyレジスタ8の出力yを加算器7で加算「y+c」し、加算器6の出力「y+c」の符号を制御回路9で判定することにより実行する。
【0023】
ステップS4で「y<d」が真と判定されたときは、ステップS5で「b←b−1」の計算と、「y←y+c」の計算を行う。「b←b−1」の計算は、bカウンタ11の値を1づつカウントダウンすることで実行する。また、「y←y+c」の計算は、セレクタ6で入力端子1の数値データcを選択し、セレクタ6の出力cとyレジスタ8の出力yを加算器7で加算して「y+c」とし、加算器7の出力をyレジスタ8に格納することにより実行する。
【0024】
ステップS4が「y>−c」が真と判定されたときは、ステップS6で「a←a−1」と、「y←y−d」の計算を行う。「a←a−1」の計算は、aカウンタ10の値を1づつカウントダウンすることで実行する。また、「y←y−d」の計算は、入力端子2の数値データdを2の補数回路5で符号反転し、セレクタ6で2の補数回路5の出力−dを選択し、セレクタ6の出力−dとyレジスタ07の出力yを加算器06で加算して「y−d」とし、加算器7の出力をyレジスタ8に格納することにより実行する。
【0025】
以上の計算により、ステップS2が偽(False)となったとき、このときのyレジスタ8の出力yの符号を制御回路9で判定することにより、比較の最終判定を実行する(ステップS3)。「y>0」であれば「b・c>a・d」、「y=0」であれば「b・c=a・d」、「y<0」であれば「b・c>a・d」の比較結果となる。
【0026】
処理が完了すると、制御回路9は比較結果outの出力端子13に比較結果を出力する。このとき、valid制御信号の出力端子13にactiveを出力して、現在の出力端子13の比較結果outが有効であることを示す。
【0027】
<第2の実施例>
図2は本発明の第2の実施例の比較器の構成を示す図である。21は数値データaの入力端子、22は数値データbの入力端子、23は数値データcの入力端子、24は数値データdの入力端子、25は比較結果の出力端子、26はstart制御信号の入力端子、27はvalid制御信号の出力端子、28はレジスタファイル、29はALU(Arithmetic logic Unit)、30は制御回路である。
【0028】
数値データa〜dの入力端子21〜24、比較結果の出力端子25、start制御信号の入力端子26、valid制御信号の出力端子27は、制御回路30に接続される。レジスタファイル28の入力端子はALU29の出力端子に接続される。レジスタファイル28の制御端子は制御回路30の制御端子に接続される。ALU29の入力端子はレジスタファイル28の出力に接続される。ALU29の制御端子は制御回路30の制御端子に接続される。
【0029】
次に、図2の構成において、図4のフローチャートの処理を実行する方法を説明する。start制御信号の入力端子25がactiveになった時、制御回路29はvalid制御信号の出力端子26にnon-activeを出力し、比較結果outの出力端子14の信号が無効であることを示す。また、レジスタファイル28に数値データa,b,c,dをロードし、数値データyを「y=0」に初期化して処理を開始する。
【0030】
「y<d」の論理式の計算は、レジスタファイル28から数値データd,yを出力し、ALU29で演算することにより実行する。
【0031】
「y>−c」の論理式の計算は、レジスタファイル28から数値データc,yを出力し、ALU29で演算することにより実行する。
【0032】
「a←a−1」の計算は、レジスタファイル27から数値データaを出力し、ALU28で演算し、その結果をレジスタファイル27に格納することにより実行する。
【0033】
「b←b−1」の計算は、レジスタファイル28から数値データbを出力し、ALU29で演算し、その結果をyレジスタファィル28に格納することにより実行する。
【0034】
「y←y+c」の計算は、レジスタファイル28から数値データy,cを出力し、ALU29で演算し、その結果をレジスタファイル28に格納することにより実行する。
【0035】
「y←y−d」の計算は、レジスタファイル28から数値データy,dを出力し、ALU29で演算し、その結果をレジスタファイル29に格納することにより実行する。
【0036】
yの正、負又は0の判定は、レジスタファイル28から数値データyを出力し、そのyの符号をALU29で判定することにより実行する。
【0037】
処理が完了すると、制御回路30は比較結果outの出力端子25に比較結果を出力する。このとき、valid制御信号の出力端子27にactiveを出力して、現在の出力端子25の比較結果outが有効であることを示す。
【0038】
<第3の実施例>
図3は本発明の第3の実施例の比較器の構成を示す図である。41はCPU、42はプログラムメモリ、43はデータメモリ、44はバスである。CPU41、プログラムメモリ42、データメモリ43は、バス44に接続される。プログラムメモリ42に図4のフローチャートを実行するプログラムを格納する。
【0039】
図3の構成において、図4のフローチャートの処理を実行する方法を説明する。まず、数値データa,b,c,dをデータメモリ43にロードし、処理を開始する。
【0040】
CPU41の動作は、プログラムメモリ42に格納された図4のフローチャートのプログラムによって制御する。
【0041】
計算に必要な数値データは、データメモリ43から読み出し、バス44を経由してCPU41に伝送する。CPU41による演算結果は、バス44を経由してデータメモリ43に書き出す。
【0042】
処理が完了すると、比較結果をバス44を経由してデータメモリ43に書き出す。
【図面の簡単な説明】
【0043】
【図1】本発明の第1の実施例の比較器の構成を示すブロック図である。
【図2】本発明の第2の実施例の比較器の構成を示すブロック図である。
【図3】本発明の第3の実施例の比較器の構成を示すブロック図である。
【図4】本発明の比較処理のフローチャートである。
【図5】図4中の「条件1」の一例の説明図である。
【図6】図4中の「条件2」の一例の説明図である。
【図7】(a)、(b)は本発明の比較処理の変数の変移の説明図である。
【図8】従来の比較器の構成を示すブロック図である。
【符号の説明】
【0044】
1:数値データcの入力端子、2:数値データdの入力端子、3:数値データaの入力端子、4:数値データbの入力端子、5:2の補数回路、6:セレクタ、7:加算器、8:yレジスタ、9:制御回路、10:aカウンタ、11:bカウンタ、13:start制御信号の入力端子、14:valid制御信号の出力端子、15:比較結果の出力端子
21:数値データaの入力端子、22:数値データbの入力端子、23:数値データcの入力端子、24:数値データdの入力端子、25:比較結果の出力端子、26:start制御信号の入力端子、27:valid制御信号の出力端子、28:レジスタファイル、29:ALU、30:制御回路
41:CPU、42:プログラムメモリ、43:データメモリ、44:バス
51:数値データbの入力端子、52:数値データcの入力端子、53:数値データaの入力端子、54:数値データdの入力端子、55,56:乗算器、57:減算器、58:符号判定器、59:比較結果の出力端子

【特許請求の範囲】
【請求項1】
a,b,c,dを正の整数とし、「b/a」と「d/c」の大小関係を「b・c−a・d」の値の符号から判定する比較方法であって、
「b・c−a・d+y」として、yを初期値0とし、
「y<d」ならば「b←b−1」と「y←y+c」を繰り返し、「y>−c」ならば「a←a−1」と「y←y−d」を繰り返し、
該繰り返しの結果、「a=0」となったとき、「b≠0」を満たす間、「b←b−1」と「y←y+c」を繰り返し、
前記繰り返しの結果、「b=0」となったとき、「a≠0」を満たす間、「a←a−1」と「y←y−d」を繰り返し、
「a=0」且つ「b=0」となったとき、「y>0」であれば「b・c>a・d」と判定し、「y=0」であれば「b・c=a・d」と判定し、「y<0」であれば「b・c<a・d」と判定する、
ことを特徴とする比較方法。
【請求項2】
a,b,c,dを正の整数とし、「b/a」と「d/c」の大小関係を「b・c−a・d」の値の符号から判定する比較方法であって、
「b・c−a・d+y」として、yを初期値0とし、
「y<d」ならば「b←b−1」と「y←y+c」を繰り返し、「y>−c」ならば「a←a−1」と「y←y−d」を繰り返し、
該繰り返しの結果、「a=0」となったとき、「b≠0」且つ「y≦0」を満たす間、「b←b−1」と「y←y+c」を繰り返し、
前記繰り返しの結果、「b=0」となったとき、「a≠0」且つ「y≧0」を満たす間、「a←a−1」と「y←y−d」を繰り返し、
「a=0」且つ「b=0」となったとき、「y>0」であれば「b・c>a・d」と判定し、「y=0」であれば「b・c=a・d」と判定し、「y<0」であれば「b・c<a・d」と判定し、または「a=0」且つ「y>0」となったとき、「b・c>a・d」と判定し、または「b=0」且つ「y<0」となったとき、「b・c<a・d」と判定する、
ことを特徴とする比較方法。
【請求項3】
a,b,c,dを正の整数とし、「b/a」と「d/c」の大小関係を「b・c−a・d」の値の符号から判定する比較器であって、
初期値としてy=0の値を格納するyレジスタと、前記aの値がロードされ「y>−c」ならば前記aの値を1づつカウントダウンするaカウンタと、前記bの値がロードされ「y<d」ならば前記bの値を1づつカウントダウントするbカウンタと、前記dの値を符号反転する2の補数回路と、該2の補数回路から出力する−dの値と前記cの値の一方を選択するセレクタと、「y>−c」で且つ前記セレクタから出力する値が−dのときこれと前記yレジスタから出力するyの値を加算し、「y<d」で且つ前記セレクタから出力する値がcのときこれと前記yレジスタから出力するyの値を加算する加算器と、前記aカウンタ、前記bカウンタ、前記セレクタおよび前記yレジスタを制御する制御回路とを備え、前記制御回路は、
前記aカウンタの値が0になったときは、前記bカウンタの値が0でない間、前記bカウンタのダウンカウントと前記yレジスタへのcの加算を繰り返し、
前記bカウンタの値が0になったときは、前記aカウンタの値が0でない間、前記aカウンタのダウンカウントと前記yレジスタへの−dの加算を繰り返し、
前記aカウンタの値と前記bカウンタの値が0になったとき、前記yレジスタの値が、「y>0」であれば「b・c>a・d」と判定し、「y=0」であれば「b・c=a・d」と判定し、「y<0」であれば「b・c<a・d」と判定する、
ことを特徴とする比較器。
【請求項4】
a,b,c,dを正の整数とし、「b/a」と「d/c」の大小関係を「b・c−a・d」の値の符号から判定する比較器であって、
初期値としてy=0の値を格納するyレジスタと、前記aの値がロードされ「y>−c」ならば前記aの値を1づつカウントダウンするaカウンタと、前記bの値がロードされ「y<d」ならば前記bの値を1づつカウントダウントするbカウンタと、前記dの値を符号反転する2の補数回路と、該2の補数回路から出力する−dの値と前記cの値の一方を選択するセレクタと、「y>−c」で且つ前記セレクタから出力する値が−dのときこれと前記yレジスタから出力するyの値を加算し、「y<d」で且つ前記セレクタから出力する値がcのときこれと前記yレジスタから出力するyの値を加算する加算器と、前記aカウンタ、前記bカウンタ、前記セレクタおよび前記yレジスタを制御する制御回路とを備え、前記制御回路は、
前記aカウンタの値が0になったとき、前記bカウンタの値が0でなく且つ前記yレジスタの値が0以下の間、前記bカウンタのダウンカウントと前記yレジスタへのcの加算を繰り返し、
前記bカウンタの値が0になったとき、前記aカウンタの値が0でなく且つ前記yレジスタの値が0以上の間、前記aカウンタのダウンカウントと前記yレジスタへの−dの加算を繰り返し、
前記aカウンタの値と前記bカウンタの値が0になったとき、前記yレジスタの値が、「y>0」であれば「b・c>a・d」と判定し、「y=0」であれば「b・c=a・d」と判定し、「y<0」であれば「b・c<a・d」と判定し、または「a=0」且つ「y>0」となったとき、「b・c>a・d」と判定し、または「b=0」且つ「y<0」となったとき、「b・c<a・d」と判定する、
ことを特徴とする比較器。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2010−92412(P2010−92412A)
【公開日】平成22年4月22日(2010.4.22)
【国際特許分類】
【出願番号】特願2008−264019(P2008−264019)
【出願日】平成20年10月10日(2008.10.10)
【出願人】(000191238)新日本無線株式会社 (569)