説明

アドレスデコーダ及びアドレス設定方法

【課題】バスに接続されるモジュールのアドレスを簡易かつ効率的に設定するためのアドレスデコーダ及びアドレス設定方法を提供する。
【解決手段】アドレスデコーダ10は、レベル比較器11、エッジ検出器12、出力デコーダ13を備えている。レベル比較器11は、SDA端子に入力されたSDA信号とADDR端子に入力されたアドレス選択信号とを比較し、比較結果を出力する。ここで、両者が一致している場合には、すべてのスレーブアドレスを受信するまで比較を続ける。一致していない場合は以降の比較は行なわない。エッジ検出器12は、ADDR端子に入力されたアドレス選択信号のエッジを検出する。出力デコーダ13は、ADDR端子の接続先に応じたアドレスを設定することにより、アドレスデコーダ10に接続されたスレーブモジュールのアドレスを決定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、バスラインに接続された各モジュールの制御に関するものであり、特に各機器のアドレスの設定に関するものである。
【背景技術】
【0002】
コンピュータの内外の複数のモジュールを、データを交換するための共通の経路を接続して利用する場合がある(バス接続)。このようなバス接続では、モジュール別に個別のアドレスを設定し、制御モジュール(マスタ)から被制御モジュール(スレーブ)のアドレスを含めたコマンドを送信する。スレーブ側では受信した被制御アドレスと設定済みの自アドレスとを比較し、合致する被制御アドレスのコマンドに対してのみ応答するようにしている。
【0003】
近年、通信システムは、通信規約に従ったシリアルデータ信号(SDA信号)とシリアルクロック信号(SCL信号)の2本の信号線を備えたI2C(Inter Integrated Circuit)シリアル転送バスを用いることがある。
【0004】
例えば、タッチセンサ製品ではモジュール数を増やすことでタッチキーの数を増やすことができるため、複数のアドレスをユーザが選択できることは製品自体の魅力となる。
I2C通信等のスレーブとして機能するセンサ製品を複数使用したい場合、アドレスを個別に設定しなければならない。ユーザが容易にアドレスを設定する方法としては、モジュールにアドレス入力端子(ADDR端子)を持たせ、その入力レベルに応じてアドレスを選択する手法が用いられている。ADDR端子をディジタル入力として2値の検出を行なう手法は最も簡易であるが、より多くのモジュールを通信バスに接続させるためにはADDR端子を増やす必要があり、端子数の少ないパッケージを多用するセンサ製品では、多くの端子をアドレス入力専用とすることは困難である。
【0005】
そこで、スレーブモジュールのアドレスを設定するための各種技術が検討されている(例えば特許文献1を参照。)。特許文献1に記載された技術では、通信システムは、アドレスピンを備えているスレーブ・デバイスから構成されており、各スレーブ・デバイスは、シリアルデータライン、クロックライン、電源ライン、接地ラインと結合されている。通信回路は、データ転送バスの上の通信規約に応じて、マスターデバイスと通信を行なう。まず、デコード回路はアドレスピンの最初の状態を検出する。そして、アドレスピンの2番目の状態を検出して、アドレスピンの1つ以上の論理値が最初の状態と2番目の状態の間で異なる最初の状態を検出する。その後、アドレスピンの最初の状態と2番目の状態との機能的な関係としてスレイブデバイスアドレスをデコードする。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】米国特許出願公開第2008/0147941号明細書(第1頁、図3)
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかし、特許文献1に記載された技術では、特定の通信規約に依存しており、汎用性が低い。また、この技術では、遅延素子が用いられており、動作特性が製造プロセスのバラツキに強く影響を受けるため、集積化に適さない。更に、各状態の比較や検知は適切なタイミングで実行する必要がある。
【0008】
本発明は、上記の問題点を解決するためになされたものであり、バスに接続されるモジュールのアドレスを簡易かつ効率的に設定するためのアドレスデコーダ及びアドレス設定方法を提供することにある。
【課題を解決するための手段】
【0009】
上記問題点を解決するために、本発明は、シリアルデータ信号の参照信号入力端子と、電源電圧、接地電圧、シリアルデータ信号の何れかからなるアドレス選択信号の選択信号入力端子と、前記参照信号入力端子に入力されたシリアルデータ信号と、前記選択信号入力端子に入力されたアドレス選択信号との比較し、比較結果を出力する信号強度比較部と、前記信号強度比較部から出力された比較結果及び前記アドレス選択信号の信号レベルに基いて、前記アドレス選択信号として入力された信号を特定し、この信号に対応するアドレスを設定するアドレス設定部とを備えることを特徴とする。これにより、シリアルデータ信号を他の信号と識別するとともに、アドレス選択信号の信号レベルに基いて電源電圧と接地電圧とを識別することができる。従って、簡易な構成により多値入力を実現することができ、これに応じたアドレスを設定することができる。
【0010】
本発明において、参照信号入力端子に入力されたシリアルデータ信号と、前記選択信号入力端子に入力されたアドレス選択信号とが一致しない場合には、前記アドレス選択信号の信号レベルを出力することを特徴とする。これにより、信号強度比較部からの出力に基いて、アドレス選択信号の種類を特定することができる。
【0011】
本発明において、前記アドレス選択信号には、シリアルクロック信号を含んでおり、前記アドレスデコーダは、前記アドレス選択信号の立ち上がり又は立ち下がりを検出し、エッジ検出信号を出力するエッジ検出部を更に備え、前記アドレス設定部は、前記信号強度比較部から出力された比較結果及び前記エッジ検出部から出力されたエッジ検出信号に基づいて、前記アドレス選択信号として入力された信号を特定し、この信号に対応するアドレスを設定することを特徴とする。これにより、シリアルクロック信号を用いて4値入力を実現し、多様なアドレスを設定することができる。
【0012】
本発明において、前記信号強度比較部は、XORゲート、ORゲート、D型フリップフロップを含んで構成されており、前記XORゲートには、シリアルデータ信号及びアドレス選択信号を入力し、前記ORゲートには、前記XORゲートの出力信号及びD型フリップフロップの出力信号を入力し、前記D型フリップフロップには、前記ORゲートの出力信号を入力することを特徴とする。これにより、簡易な回路構成でアドレス設定を実現できる。
【発明の効果】
【0013】
本発明によれば、バスに接続されるモジュールについて、簡易かつ効率的にアドレスを設定することができる。
【図面の簡単な説明】
【0014】
【図1】本実施形態のアドレスデコーダの機能ブロックの説明図。
【図2】本実施形態のアドレスデコーダの各機能ブロックにおける出力の説明図であって、(a)はレベル比較器、(b)はエッジ検出器、(c)は出力デコーダの説明図。
【図3】本実施形態のアドレスデコーダの各機能ブロックにおける動作の説明図であって、(a)はレベル比較器、(b)はエッジ検出器、(c)は出力デコーダの説明図。
【図4】本実施形態のアドレスデコーダの各機能ブロックにおける回路構成の説明図であって、(a)はレベル比較器、(b)はエッジ検出器、(c)は出力デコーダの説明図。
【図5】他の実施形態のアドレスデコーダの各機能ブロックにおける回路構成の説明図であって、(a)はレベル比較器、(b)はエッジ検出器、(c)は出力デコーダの説明図。
【図6】他の実施形態のアドレスデコーダの各機能ブロックにおける処理手順の説明図であって、(a)はレベル比較器、(b)はエッジ検出器の説明図。
【図7】他の実施形態のアドレスデコーダのエッジ検出器における出力の説明図。
【発明を実施するための形態】
【0015】
以下、本発明を具体化したアドレスデコーダ及びアドレス設定方法についての一実施形態を図1〜図4に従って説明する。本実施形態においては、マスタースレーブ構成において、スレーブモジュールのアドレスを設定するためのアドレスデコーダについて説明する。ここでは、マスタモジュールとスレーブモジュールとの間で、I2C通信規約に従って、スタートコンディション、アドレス転送、アクノリッジ、データ転送、ストップコンディションを実行する。
【0016】
図1に示すように、このアドレスデコーダ10は、参照信号入力端子としてのSDA端子及び選択信号入力端子としてのADDR端子を備えている。このSDA端子にはSDA信号が入力され、ADDR端子にはアドレス選択信号が入力される。ここで、スレーブアドレスはモジュール毎にユニークな値を設定しなければならないため、アドレス信号には必ず「0」と「1」とを含む。その特徴を利用して、アドレスデコーダ10は、ADDR端子において、電源電圧が供給されるVDDライン、接地電圧が供給されるVSSライン、シリアルデータ信号(SDA信号)が供給されるSDAライン、シリアルクロック信号(SCL信号)が供給されるSCLラインのいずれかに接続されているかを検出する。
【0017】
このため、アドレスデコーダ10は、信号強度比較部としてのレベル比較器11、エッジ検出部としてのエッジ検出器12、アドレス設定部としての出力デコーダ13を備えている。
【0018】
レベル比較器11は、SDA端子に入力されたSDA信号とADDR端子に入力されたアドレス選択信号とを比較し、一致している場合には、出力を「TRUE」としてすべてのスレーブアドレスを受信するまで比較を続ける。一致していない場合は出力を「FALSE」とし、以降の比較は行なわない。
【0019】
エッジ検出器12は、ADDR端子に入力されたアドレス選択信号の立ち上がりエッジ、立下りエッジもしくはパルスであるかを検出することにより、ADDR端子への入力信号が固定レベルではないことを検出する。その場合、ADDR端子はSDAライン又はSCLラインに接続されていることが判る。
【0020】
出力デコーダ13は、ADDR端子の接続先に応じたアドレスを設定することにより、アドレスデコーダ10を備えたスレーブモジュールのアドレス(I2C通信の場合には7ビット)を決定する。そして、アドレスが一致したスレーブモジュールは、マスタモジュールからのアドレス転送を完了した場合、マスタモジュールに対して受領確認信号(ACK)を返信する。これにより、マスターモジュール・スレーブモジュール間の通信が確立する。
【0021】
(アドレスデコーダにおける各機能ブロックからの出力)
次に、レベル比較器11、エッジ検出器12、出力デコーダ13における出力信号を、図2を用いて説明する。
【0022】
レベル比較器11は、図2(a)に示すテーブルT11を用いてSDA信号との一致不
一致、信号レベルを判定する。
ここで、レベル比較器11は、ADDR端子に入力されたアドレス選択信号と、SDA端子に入力されたSDA信号とを比較し、同じ信号が入力されている場合には「0」を出力する。
【0023】
一方、ADDR端子にSDA信号とは異なる信号が入力されている場合には、VDDライン、VSSライン、SCLラインに接続されていることになる。ハイレベルの信号が入力されている場合には、電源ライン又はSCLラインに接続されているので、レベル比較器11は「1」を出力する。一方、ローレベルの信号が入力されている場合には、接地ライン又はSCLラインに接続されているので、レベル比較器11は「2」を出力する。
【0024】
エッジ検出器12は、図2(b)に示すテーブルT12を用いて、エッジの有無を判定する。そして、ADDR端子がSDAライン又はSCLラインに接続されており、エッジを検出した場合には、エッジ検出器12は「1」を出力する。一方、ADDR端子が電源ライン又は接地ラインに接続されており、エッジを検出しない場合には、エッジ検出器12は、「0」を出力する。
【0025】
出力デコーダ13は、図2(c)に示すテーブルT13を用いて、アドレスデコーダ10のADDR端子の接続先を判定し、この判定に対応するアドレスを設定する。
具体的には、レベル比較器11の出力が「0」の場合には、SDAラインに接続されていると判定する。一方、レベル比較器11の出力が「1」又は「2」であり、エッジ検出器12の出力が「1」の場合には、SCLラインに接続されていると判定する。また、レベル比較器11の出力が「1」であり、エッジ検出器12の出力が「0」の場合には、電源ラインに接続されていると判定する。その他の場合には、接地ラインに接続されていると判定する。ここでは、「SDA」〜「VSS」の順番に優先的にアドレスを決定する。
【0026】
(アドレスデコーダにおける動作)
アドレスデコーダにおけるADDR端子の接続先の判定についての状態遷移を、図3(a)を用いて説明する。
【0027】
スタートコンディションとなった場合、レベル比較器11は、SDA端子に入力されたSDA信号と、ADDR端子に入力されたアドレス選択信号とを比較する。両者の信号レベルが一致している場合には、信号「Level」として「SDA」を出力するとともに比較を継続する。
【0028】
一方、ADDR端子に入力されたアドレス選択信号とSDA端子に入力されたSDA信号とが異なる場合には、レベル比較器11は、ADDR端子に入力されるアドレス選択信号のレベルに応じて、信号「Level」として「VDD」又は「VSS」を出力する。
【0029】
エッジ検出器12において、図3(b)に示すように、ADDR端子に入力されるアドレス選択信号レベルの変化の有無により、信号「Edge」を出力する。ここでは、信号レベルの変化を検知した場合には信号「Edge」として「1」、信号レベルの変化を検知しなかった場合には「0」を出力する。
【0030】
出力デコーダ13は、図3(c)に示すテーブルT20を用いて、レベル比較器11から出力された信号「Level」、エッジ検出器12から出力された信号「Edge」を用いて、接続先のラインを判定する。ここでは、信号「Level」が「SDA」の場合には、出力デコーダ13は「SDA」を出力する。信号「Level」が「SDA」以外であって、信号「Edge」が「1」の場合には、出力デコーダ13は「SCL」を出力する。信号「Edge」が「0」であって、信号「Level」が「VDD」の場合には
、出力デコーダ13は「VDD」を出力し、信号「Level」が「VSS」の場合には「VSS」を出力する。
【0031】
(アドレスデコーダにおける各機能ブロックの構成例)
次に、図4(a)に、レベル比較器11の構成例を説明する。ここでは、レベル比較器11は、第1の回路11a、第2の回路11bを用いて構成する。
【0032】
第1の回路11aは、D型フリップフロップ111、XORゲート112、ORゲート113を備えている。レベル比較器11のSDA端子及びADDR端子に入力された信号は、XORゲート112に入力される。このXORゲート112の出力信号は、ORゲート113に入力される。このORゲート113には、D型フリップフロップ111から出力される信号「sda_b」も入力される。そして、このORゲートの出力は、D型フリップフロップ111のデータ入力端子に入力される。更に、D型フリップフロップ111には、SCL信号及びスタート信号(スタートコンディションを示す信号)が入力される。そして、このD型フリップフロップ111は信号「sda_b」を出力する。
【0033】
ここで、SDA端子及びADDR端子に入力された信号が一致している場合、XORゲート112の出力は継続的に「0」となり、D型フリップフロップ111から出力される信号「sda_b」も継続的に「0」となる。一方、SDA端子及びADDR端子に入力された信号が不一致となり、XORゲート112の出力が一旦「1」になった場合には、D型フリップフロップ111から出力される信号「sda_b」は継続的に「1」となる。
【0034】
また、第2の回路11bは、D型フリップフロップ114、ORゲート115を備えている。レベル比較器11のADDR端子に入力されたアドレス選択信号は、ORゲート115に供給される。このORゲート115には、D型フリップフロップ114から出力される信号「vdd」も供給される。このORゲート115の出力信号はD型フリップフロップ114に供給される。このD型フリップフロップ114にも、SCL信号とスタート信号とが入力される。ここで、ADDR端子が電源ライン又は接地ラインに接続されている場合には、それぞれの信号「vdd」として「1」、「0」が継続的に出力される。
【0035】
次に、エッジ検出器12の構成例を、図4(b)を用いて説明する。このエッジ検出器12においては、2つのD型フリップフロップ121,122を用いる。各D型フリップフロップ121,122には、電源電圧がデータ端子に入力される。そして、D型フリップフロップ121のクロック端子にはアドレス選択信号ADDR、D型フリップフロップ122のクロック端子には、インバータ123により生成されたアドレス選択信号ADDRの反転信号が入力される。この場合、ADDR端子に入力されたアドレス選択信号において立ち上がりおよび立下りを検知した場合に、信号「pulse」として「1」を出力する。
【0036】
出力デコーダ13は、図4(c)に示すテーブルT30により出力を行なう。ここでは、信号「sda_b」、「vdd」、「pulse」に応じて決定した接続先「SDA」、「SCL」、「VDD」、「VSS」を特定する。そして、出力デコーダ13は、この接続先に応じたアドレスを出力して、スレーブモジュールのアドレスを設定する。
【0037】
上記実施形態の素子構造によれば、以下のような効果を得ることができる。
・ 上記実施形態では、アドレスデコーダ10に、SDA端子及びADDR端子を設ける。そして、SDA端子にはSDA信号を入力する。一方、ADDR端子には、電源レベル、接地レベル、SDA信号、SCL信号のいずれかのアドレス選択信号を入力する。そして、アドレスデコーダ10は、レベル比較器11、エッジ検出器12、出力デコーダ1
3により、ADDR端子の接続先を判定して、アドレスを指定する。これにより、電源レベル、接地レベル、SDA信号、SCL信号の4値入力により、アドレスを設定することができる。従って、アドレス設定に用いることができる端子数が少ない場合にも、簡易な回路構成で多様なアドレスを設定することができる。
【0038】
・ 上記実施形態では、エッジ検出器12がエッジの有無を検出し、信号「Edge」(信号「pulse」)を出力する。出力デコーダ13は、これらの信号により、静的な信号(電源レベル又は接地レベル)と動的な信号とを識別する。これにより、SCL信号を用いて、アドレスを設定することができる。
【0039】
なお、上記実施形態は以下のように変更してもよい。
○ 上記実施形態においては、アドレスデコーダ10は、SDA端子及びADDR端子を備えている。ここで、アドレスデコーダ10に複数のADDR端子を設けることも可能である。この場合には、各ADDR端子への入力に応じた組み合わせにより、多様なアドレスを指定することができる。
【0040】
○ 上記実施形態においては、レベル比較器11において、D型フリップフロップ114、ORゲート115から構成された第1の回路11aを用いて、信号「vdd」として「1」、「0」が継続的に出力されるようにした。これに代えて、ADDR端子に入力された信号を、そのまま用いて電源レベル又は接地レベルを判定するようにしてもよい。具体的には、図5(a)に示すように、レベル比較器11が第1の回路11aのみを含み、第2の回路11bを省略する。この場合、エッジ検出器12としては、図5(b)に示す構成を用いる。この構成は、図4(b)に示した構成と同じである。そして、出力デコーダ13において、図5(c)に示すテーブルT40を用いて、ADDR端子の接続先を特定する。これにより、簡単な構成により、レベル比較器11を実現することができる。
【0041】
○ 上記実施形態においては、エッジ検出器12は、エッジの有無を検出する。この場合、このエッジ検出器12は、ADDR入力の立ち上がりエッジおよび立下りエッジを検出し、ADDR入力がパルスであるかを検出する。これに代えて、立ち上がり又は立ち下がりのいずれか一方を検出するように構成してもよい。この場合には、エッジ検出器12を一つのD型フリップフロップに構成することができる。
【0042】
更に、アドレス選択信号を構成するパルスの数だけ、D型フリップフロップの段数を設け、エッジもしくはパルスが出現した回数をカウントし期待値と比較するようにしてもよい。これにより、エッジ検出器12としてカウンタを用いて、アドレス選択信号のビット数を検出して、的確にアドレス選択信号の受信を判定することができる。
【0043】
○ 上記実施形態においては、ゲートやD型フリップフロップを用いたハードウェア構成によりアドレスを設定する。これに代えて、CPUやメモリから構成された制御手段を用いて、ソフトウェアによりアドレス選択を行なうように構成することも可能である。この場合、レベル比較器11、エッジ検出器12における処理を、図6を用いて説明する。
【0044】
図6(a)に示すように、レベル比較器11において、スタート信号を取得した場合(S111)、変数「sda」を「1」と設定する(S112)。そして、レベル比較器11は、ADDR端子に入力されたアドレス選択信号とSDA端子に入力されたSDA信号とを比較する。ここで、両者が一致した場合(S113において「Yes」の場合)には、変数「sda」として「1」を維持する。一方、両者が一致しなかった場合(S113において「No」の場合)には、レベル比較器11は変数「sda」として「0」を設定する(S114)。
【0045】
又、レベル比較器11において、スタート信号を取得した場合(S115)、変数「vdd」を「0」と設定する(S116)。そして、レベル比較器11は、ADDR端子に入力されたアドレス選択信号が「0」かどうかを判定する。ここで、「0」の場合(S116において「Yes」の場合)には、変数「vdd」として「0」を維持する。一方、「0」の場合(S116において「No」の場合)には、変数「vdd」として「1」を設定する(S117)。
【0046】
エッジ検出器12においては、図6(b)に示すように、スタート信号を取得した場合(S121)、変数「pulse」を「0」と設定する(S122)。そして、エッジ検出器12は、ADDR端子に入力されたアドレス選択信号において、エッジ又はパルスを検出したかどうかを判定する。ここで、エッジ又はパルスを検出しない場合(S123において「No」の場合)には、変数「pulse」として「0」を維持する。一方、エッジ又はパルスを検出した場合(S123において「Yes」の場合)には、エッジ検出器12は変数「pulse」として「1」を設定する(S124)。
【0047】
そして、出力デコーダ13は、図7に示すテーブルT50を用いて、変数「sda」、「vdd」、「pulse」に対応してADDR端子の接続先を特定し、アドレスを設定することができる。
【0048】
○ 上記実施形態においては、アドレスデコーダ10のADDR端子には、VDDライン、VSSライン、SDAライン、SCLラインのいずれかに接続される場合を想定した。これに代えて、シリアルクロック信号を用いない場合には、エッジ検出は不要となり、レベル比較器11の出力より、SDAライン、電源ライン、接地ラインへの各接続を識別することができる。
【符号の説明】
【0049】
10…アドレスデコーダ、11…レベル比較器、12…エッジ検出器、13…出力デコーダ、11a…第1の回路、11b…第2の回路、111…D型フリップフロップ、112…XORゲート、113…ORゲート、114…D型フリップフロップ、115…ORゲート、121,122…D型フリップフロップ、123…インバータ。

【特許請求の範囲】
【請求項1】
シリアルデータ信号の参照信号入力端子と、
電源電圧、接地電圧、シリアルデータ信号の何れかからなるアドレス選択信号の選択信号入力端子と、
前記参照信号入力端子に入力されたシリアルデータ信号と、前記選択信号入力端子に入力されたアドレス選択信号との比較し、比較結果を出力する信号強度比較部と、
前記信号強度比較部から出力された比較結果及び前記アドレス選択信号の信号レベルに基いて、前記アドレス選択信号として入力された信号を特定し、この信号に対応するアドレスを設定するアドレス設定部と
を備えたことを特徴とするアドレスデコーダ。
【請求項2】
前記参照信号入力端子に入力されたシリアルデータ信号と、前記選択信号入力端子に入力されたアドレス選択信号とが一致しない場合には、前記アドレス選択信号の信号レベルを出力することを特徴とする請求項1に記載のアドレスデコーダ。
【請求項3】
前記アドレス選択信号には、シリアルクロック信号を含んでおり、
前記アドレスデコーダは、前記アドレス選択信号の立ち上がり又は立ち下がりを検出し、エッジ検出信号を出力するエッジ検出部を更に備え、
前記アドレス設定部は、前記信号強度比較部から出力された比較結果及び前記エッジ検出部から出力されたエッジ検出信号に基づいて、前記アドレス選択信号として入力された信号を特定し、この信号に対応するアドレスを設定することを特徴とする請求項1又は2に記載のアドレスデコーダ。
【請求項4】
前記信号強度比較部は、XORゲート、ORゲート、D型フリップフロップを含んで構成されており、
前記XORゲートには、シリアルデータ信号及びアドレス選択信号を入力し、
前記ORゲートには、前記XORゲートの出力信号及びD型フリップフロップの出力信号を入力し、
前記D型フリップフロップには、前記ORゲートの出力信号を入力するように構成したことを特徴とする請求項1〜3のいずれか一つに記載のアドレスデコーダ。
【請求項5】
シリアルデータ信号の参照信号入力端子と、
電源電圧、接地電圧、シリアルデータ信号の何れかからなるアドレス選択信号の選択信号入力端子と、
アドレス選択信号を出力する制御手段を用いて、アドレスを設定する方法であって、
前記制御手段が、
前記参照信号入力端子に入力されたシリアルデータ信号と、前記選択信号入力端子に入力されたアドレス選択信号との比較し、比較結果を出力する段階と、
前記比較結果及び前記アドレス選択信号の信号レベルに基いて、前記アドレス選択信号として入力された信号を特定し、この信号に対応するアドレスを設定する段階と
実行することを特徴とするアドレス設定方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate