【実施例1】
【0011】
図1乃至
図6、
図8及び
図9を参照して実施例1を説明する。
この実施例において、温度電圧センサは、
図2に示す温度補償発振器に用いた例を説明する。この温度補償発振器は、水晶発振器(水晶振動子)を外付けし、発振回路を内蔵した半導体IC(チップ)から構成される。ここで、温度電圧センサは、半導体ICに形成される。
【0012】
図1に示すように、この実施例では、半導体ICに形成した、温度に敏感で温度特性の異なる2つのリングオシレータ2a、2bの発振周波数(f1、f2)を、同一の温度(T)、電圧(V)環境で、温度安定性の良い基準周波数f0(基準クロック信号)で計測し、予め各リングオシレータ2a、2bの発振周波数(f1、f2)を温度T、電圧Vを変えて測定したデータから計算で求めた2つのT、Vの2元の高次多項式近似式(f1(T、V)、f2(T、V))の係数を使って、T、Vを未知数とする2つのリングオシレータ2a、2bの2元連立方程式からT、Vを半導体IC(チップ)に形成された演算回路で解くことを特徴としている。
【0013】
この実施例の温度電圧センサは、発振周波数の温度特性、電圧特性が異なる第1のリングオシレータ2a及び第2のリングオシレータ2bと、前記第1のリングオシレータ2a及び前記第2のリングオシレータ2bのそれぞれの発振周波数f1、f2を計測するためのカウント時間(Tosc)を設定する基準クロック信号f0を供給する基準周波数供給部(基準クロック源)1と、前記カウント時間Toscで前記それぞれの発振周波数f1、f2の計測により得られる周波数のカウントデータに対して温度T及び電源電圧Vの2元の2次以上の多項式近似式を設定した上で、予め前記温度T及び前記電源電圧Vを変えて測定した前記周波数のカウントデータを基に算出した前記第1のリングオシレータ2a及び前記第2のリングオシレータ2bの前記多項式近似式における第1の係数セット及び第2の係数セットを記憶する係数記憶部(ROM)34と、同一の温度及び電源電圧の環境において動作する前記第1のリングオシレータ2a及び前記第2のリングオシレータ2bの発振周波数f1、f2を、前記カウント時間Toscで計測することにより、そのときの発振周波数に対応する第1の周波数カウントデータF1及び第2の周波数カウントデータF2を生成する周波数カウンタ(Counter)32と、前記第1の周波数カウントデータF1と前記第1の係数セットを前記多項式近似式に適用した第1の方程式と、前記第2の周波数カウントデータF2と前記第2の係数セットを前記多項式近似式に適用した第2の方程式による連立2元方程式から、前記第1及び第2の周波数カウントデータを生成した時の温度及び電源電圧の少なくとも一方を演算により求める温度電圧変換部(Digital Processing)33とを有する。
基準クロックf0を供給する基準周波数供給部(基準クロック源)1は、この温度電圧センサが、例えば、温度補償発振器に組み込まれる場合、水晶発振器(X’tal Oscillator)の発振周波数を分周して、基準クロックf0を生成する。
【0014】
図3において、
図3(a)は、この実施例における第1及び第2のリングオシレータ2a、2bの発振周波数f1、f2の温度特性及び電圧特性を示すものであり、
図3(b)は、温度及び電圧特性の他の例である。
図3(c)は、発振周波数f1、f2の温度特性の他の例であり、発振周波数f1が正特性、他方のf2が負特性を有している。
図4は、第1及び第2のリングオシレータの出力f1、f2と基準クロックf0が記載されており、基準クロックf0で設定されるカウント時間Toscでそれぞれの周波数をカウントして周波数カウントデータF1、F2を得る。周波数を計測するには波形の立ち上がり(rise)エッジをカウントする。
【0015】
図5及び
図6は、温度電圧センサを構成するリングオシレータ2を表している。
図5において、リングオシレータは、外部から電源2cが供給される2つのリングオシレータ2a、2bから構成されている。これらは、それぞれRO1、RO2と表記する。2つのリングオシレータは、それぞれリング状に接続された複数(N個)のインバータ(
図6)から構成されている。第1のリングオシレータ(RO1)2aは、入力が電流源に接続されて電流駆動し、発振周波数f1を出力する(
図5参照)。発振周波数f1は、温度T、電圧Vの関数であり、f1(T,V)で表記される。第2のリングオシレータ(RO2)2bは、入力が電源2cに接続されて電圧駆動し、発振周波数f2を出力する(
図5参照)。発振周波数f2は、温度T、電圧Vの関数であり、f2(T,V)で表記される。リングオシレータの発振周波数(f)は、インバータの数(N)と遅延時間(td)で決まり、遅延時間(td)は、温度(T)に依存する。即ち、発振周波数fは、1/(2N・td(T))で表される。
【0016】
以下、この実施例の2つのリングオシレータによる温度電圧センサを用いた温度検出方法を説明する。
半導体ICに形成されるリングオシレータの発振周波数は、温度依存性を有する以外に電圧依存性を有している。フェムトセルの要求するクロック精度(50ppb程度)温度補償発振器の温度補償回路で実現する場合に必要な温度センサに要求される温度精度は、温度補償発振器に使われる温度センサの特性から計算して約0.05℃が必要とされる。このリングオシレータの電源電圧をレギュレータによって安定化することも考えられるが、−50〜125℃などの広範囲でその電源電圧を温度精度0.05℃に相当する電圧変動以内(1mVより遥かに下である)に安定化することは容易ではない。この実施例によって説明される発明は、このような課題を解決するものである。
【0017】
1つのリングオシレータの発振周波数fは、温度(T)、電圧(V)単独、T・V項の多項式近似式f(T,V)(式1)で表すことができる。式1は、
図8に記載する。この近似式において、m、n、p、q、M、N、P、Qはすべて自然数であり、a
m、b
n、c
pq、c
0は係数である。ここで第1のリングオシレータは、RO1、第2のリングオシレータは、RO2と表記する。この実施例では、近似式をTに関する4次、Vに関する2次、T・Vに関する1次の項の線形結合からなるものとする。
【0018】
2つのリングオシレータの発振周波数f1、f2を
図1に示すカウンタ32で測定した値をF1(T,V)、F2(T,V)とする。
RO1の周波数カウント値F1は、
F1(T,V)=a
41T
4+a
31T
3+a
21T
2+a
11T+b
21V
2+b
11V+c
11TV+c
01 (式2)
a41、a31、a21、a11、b21、b11、c11、c01は、各項の係数である。
F2(T,V)=a
42T
4+a
32T
3+a
22T
2+a
12T+b
22V
2+b
12V+c
12TV+c
02 (式3)
a42、a32、a22、a12、b22、b12、c12、c02は、各項の係数である。
【0019】
次に、RO1、RO2を恒温槽などの同一の温度環境で温度を可変しつつ、電源電圧も変えながら、RO1、RO2の周波数カウント値F1、F2データをそれぞれ採取する。測定ポイント数は、最小二乗法によって、未知数である係数を計算できる最小数以上のポイント数を設定する。そして、RO1の測定から得られたデータを[F1(Ti,Vj),Ti,Vj](i=1〜m、j=1〜n)とし、RO2の測定から得られたデータを[F2(Ti,Vj),Ti,Vj](i=1〜m、j=1〜n)とする。但し、i、j、m、nは全て自然数である。ここで使用するm、nは
図8に記載した式1のm、nとは無関係である。
【0020】
これら測定によって得られたRO1に関するデータから、最小二乗法によって、RO1に関する未知数[a41、a31、a21、a11、b21、b11、c11、c01]を計算し、同様にして、測定によって得られたRO2に関するデータから、最小二乗法によって、RO2に関する未知数[a42、a32、a22、a12、b22、b12、c12、c02]を計算する。なお、この最小二乗法による計算は、半導体ICの出荷テスト時やユーザによる製品組み込み時に行うものであり、半導体ICからデータを採取し、外部のパソコンなどの演算装置で計算することができる。
このような処理によって求められた係数は、温度電圧センサが形成された半導体ICの係数メモリに書き込まれている。係数メモリは、
図1のメモリ(ROM)34が相当する。係数メモリにはEPROM、EEPROM、フラッシュメモリなどの不揮発性メモリが適当である。
【0021】
次に、RO1及びRO2は、それぞれの係数が、半導体IC内のメモリに書き込まれている状態で、同一の温度環境に置かれ、同一の電源電圧が印加されている。そして、RO1、RO2の周波数カウント値がF1(T,V)、F2(T,V)であり、この2値から未知数T、Vを計算する。即ち、RO1とRO2のF1、F2に関する係数が既知であるので、次式(式4及び式5)の2元(T、V)の連立4次方程式を解くことによって、未知数T、Vが計算される。
F1=a
41T
4+a
31T
3+a
21T
2+a
11T+b
21V
2+b
11V+c
11TV+c
01 (式4)
F2=a
42T
4+a
32T
3+a
22T
2+a
12T+b
22V
2+b
12V+c
12TV+c
02 (式5)
しかしながら、2元(T,V)の4次連立方程式の解は、2次方程式のように定式化されていないために、ニュートン−ラフソン法を用いて、漸化式による繰り返し演算によって解を求める。
【0022】
まず、式4の右辺から左辺を引いた値をY1(T,V)とし、同様に、式5の右辺から左辺を引いた値をY2(T,V)とする。Y1、Y2は、式6及び式7のように表される。
Y1=a
41T
4+a
31T
3+a
21T
2+a
11T+b
21V
2+b
11V+c
11TV+c
01−F1 (式6)
Y2=a
42T
4+a
32T
3+a
22T
2+a
12T+b
22V
2+b
12V+c
12TV+c
02−F2 (式7)
【0023】
また、式6及び式7において、その微分値は、式8乃至式11のように表される。
∂Y1/∂T=4a
41T
3+3a
31T
2+2a
21T+a
11+c
11V (式8)
∂Y2/∂T=4a
42T
3+3a
32T
2+2a
22T+a
12+c
12V (式9)
∂Y1/∂V=2b
21V+b
11+c
11T (式10)
∂Y2/∂V=2b
22V+b
12+c
12T (式11)
これらの式から、T、Vの変化分ΔT、ΔVは、
図9に記載された式12及び式13で表される。
【0024】
次に、式12から、ΔT、ΔVは、次式で表される。
ΔT=−(Y1*∂Y2/∂V−Y2*∂Y1/∂V)/det
(式14)
ΔV=(Y1*∂Y2/∂T−Y2*∂Y1/∂T)/det
(式15)
ここで示したΔT、ΔVの計算式を用いてニュートン−ラフソン法による漸化式は、次式で表される。
Tn+1=Tn+ΔT (式16)
Vn+1=Vn+ΔV (式17)
計算の最初は、式16、式17のTn、Vnのn=0に相当するT0、V0を初期値として与える必要がある。このT0、V0には想定されるT、Vの変動範囲のほぼ中心値を与えることもできる。
【0025】
ニュートン−ラフソン法では漸化式による計算を繰り返すので、所望の誤差以内の結果が得られた場合には、計算を中止し、その段階のTn、Vnを計算結果として出力する。
具体的には、下記の式18、式19に表すように、ΔT、ΔVが予め設定した誤差範囲Et、Ev未満になったときに収束したと判断する。
ABS(ΔT)<Et (式18)
ABS(ΔV)<Ev (式19)
なお、ABS(X)は、Xの絶対値を表す。
また、下記の式20に示すように、計算回数(Nctv)がリミット回数(Mtv)を超える場合には時間オーバーとして計算を中止し、その時点での最終結果を出力する。もしくは、問題のないディフォルト値を出力する事もあり得る。
Nctv>Ntv (式20)
【0026】
また、式14、式15に記載された(1/det)の計算には割り算が必要であるが、この計算自体もニュートン−ラフソン法を用いることができる。
以上のニュートン−ラフソン法による計算は、半導体IC上に搭載されたデジタル演算回路と演算シーケンス(プログラム)によって実現可能である。このプログラムは半導体ICに形成されたメモリに記憶される。
【0027】
次に、
図10を参照して、周波数カウント値(F1、F2)から温度(T)、電圧(V)を計算する方法を説明する。
事前に、RO1用係数(a41、a31、a21、a11、b21、b11、c11、c01、4a41、3a31、2a21、2b21)、RO2用係数(a42、a32、a22、a12、b22、b12、c12、c02、4a42、3a32、2a22、2b22)、det逆数計算用係数(2)、温度(T)用誤差リミット値(Et)、電圧(V)用誤差リミット値(Ev)、det逆数用誤差リミット値(Edet)、T及びV用計算回数リミット値(Mtv)、det逆数用計算回数リミット値(Mdet)が
図1に示すメモリ(ROM)(係数記憶部)34に書き込まれている。
計算方法は、2つのフローに分かれており、左側のフロー(
図10(a))がメインフロー、右側のフロー(
図10(b))がサブフローであり、Idet(=1/det)を計算するものである。
【0028】
まず、メインフローを説明する。
[計算開始] 計算が開始されると、RO1及びRO2の周波数カウントデータF1、F2を取得する。このカウントデータは、通常は、カウンタ(
図1の32)から取得したデータをレジスタなどに記憶しているので、レジスタから取得するとしても良い。
[初期値設定] つぎに、ニュートン−ラフソン法で計算する場合の温度データT、電圧データVの初期値として、T0、V0を与える。初期値は、予めメモリ(
図1の34)に記憶しておき、このメモリから読み出すこともできる。
[カウンタリセット] 次に、ニュートン−ラフソン法の演算繰り返し回数のカウンタをリセットする(即ち、計算回数(Nctv)を0とする)。そして、既に与えた初期値T0、V0を式6、式7のT、Vに代入して、Y1(T、V)、Y2(T、V)を計算する。
【0029】
次に、同様にして、Y1(T、V)、Y2(T、V)のT、Vに関する1階微分のdY1T、dY2T、dY1V、dY2V(略記号)を式8乃至式11により計算する。これら略記号は、以下に示すように、式21乃至式24で表される。
dY1T=∂Y1/∂T (式21)
dY2T=∂Y2/∂T (式22)
dY1V=∂Y1/∂V (式23)
dY1V=∂Y1/∂V (式24)
次に、detを計算する。これは、detを表す式13に式8乃至式11を代入して計算する。
【0030】
つぎに、式12から導き出されたΔT、ΔVは、式14及び式15に表されるが、これらにdetを積算した値は、式25、式26に示される。そして、ΔT*det、ΔV*detに相当する2式の右辺を計算する。
ΔT*det=−(Y1*∂Y2/∂V−Y2*∂Y1/∂V)
(式25)
ΔV*det=(Y1*∂Y2/∂T−Y2*∂Y1/∂T)
(式26)
上記で計算したY1、Y2、dY1T、dY2T、dY1V、dY2V、det、ΔT*det、ΔV*detの計算結果は、計算後一時記憶レジスタに保管される。
次に、Idet(=1/det)の計算を説明するが、詳細は、サブフロー(
図10(b))でするので、ここではIdetが計算されたものとして、説明を進める。
【0031】
次に、既に式25、式26で計算したΔT*det、ΔV*detにIdetを掛けることにより、ΔT、ΔVを計算する。
ΔT=Idet*(ΔT*det) (式27)
ΔV=Idet*(ΔV*det) (式28)
次に、式16、式17により、T=T1、V=V1を計算する。具体的にはn=0とした次の式29、式30にあらわされる。
T1=T0+ΔT (式29)
V1=V0+ΔV (式30)
[収束判断] 次に、計算された結果がニュートン−ラフソン法でいう収束に相当するかどうかを判断するために、ABS(ΔT)<EtとABS(ΔV)<Vtの大小比較を計算する。その結果がYesであれば上記で計算したT1、V1を計算結果として出力し、計算終了となる。
【0032】
一方、もしその結果がNo(未収束)であれば、再度計算を繰り返すために、計算回数カウント数Nctvを1つカウントアップする。Nctvが初期リセットされている場合は、カウントアップしてNctv=1となる。
次に、計算回数カウントNctvが計算回数リミット値Mtvを超えていないかを計算する。超えている場合(Yes)には、T、V計算結果出力を行い、計算終了となり、超えない場合(No)には、Y1、Y2の計算から計算の繰り返しを行う。
【0033】
次に、サブフローを説明する。ここではIdetの逆数計算フローを説明する。
[計算開始] まず、ニュートン−ラフソン法を用いて、detの逆数を計算する方法を説明する。
例えば、数値aの逆数をxとした場合、式31のように、f(x)=0を解けばx=1/aが求められる。f(x)の微分値は、式32に示される。
f(x)=(1/x)−a (式31)
f′(x)=−1/x
2 (式32)
これらの式を用いて、式33に示すニュートン−ラフソン法の漸化式が得られる。漸化式は、式33のように表される。
xn+1=xn−f(xn)/f′(xn)=xn(2−axn)
(式33)
まず、メイン計算フローの途中でレジスタに保管されたdetデータを取得する。
【0034】
[初期値設定] 初期値Idet0を
図1に示すメモリ(ROM)から読み出し、Idet初期値として設定する。
[カウンタリセッタ] 次に、計算回数カウンタNcdetをリセットする(Ncdet=0)。そして、式33に従って、Idetを計算する。その際、ROMのdet逆数計算用係数(2)を使用する。
[収束判断] 次に、計算された結果がニュートン−ラフソン法でいう収束に相当するかどうかを判断するために、ABS(ΔIdet)<Edetであるか否かを計算する。ΔIdetは、式33では、「xn+1−xn」のことである。ABS(ΔIdet)<EdetがYes(収束)であれば、上記で計算したIdetを計算結果として出力して計算終了となる。一方、もし、その結果がNo(未収束)であれば、再度計算を繰り返すために、計算回数カウント数Ncdetを1つカウントアップする。Ncdetが初期リセットされていれば、カウントアップしてNcdet=1となる。
次に、計算回数カウントNcdetが計算回数リミット値Mtvを越えていないかを計算する。超えている場合(Yes)には、Idet計算結果出力を行い、計算終了となる。超えていない場合(No)には、Idetの計算から計算繰り返しを行う。