(57)【要約】【課題】上位レイヤが光トランシーバ内のＣＰＵのマイクロプログラムをＭＤＩＯバスを介して更新する方法を提供すること。【解決手段】光トランシーバ１０はロジックデバイス１１とＣＰＵ１２と不揮発性メモリ１３とを有し、上位レイヤ１００とロジックデバイス１１とはＭＤＩＯバス１４を介して接続され、ロジックデバイス１１とＣＰＵ１２とは通信バス１６を介して接続され、ＣＰＵ１２と不揮発性メモリ１３とは通信バス１７を介して接続される。更新用マイクロプログラムは、複数のデータに分割された後に上位レイヤ１００からＭＤＩＯバス１４を介して光トランシーバ１０に送信され、ＭＤＩＯレジスタ１２ａとＲＡＭ１２ｂとを経由して不揮発性メモリ１３に転送され、不揮発性メモリ１３上に再構成される。不揮発性メモリ１３上に格納された更新用マイクロプログラムは通信バス１７を介して制御記憶１２ｈに転送される。【選択図】  図１
2014165780.tif 000002
【特許請求の範囲】
【請求項１】
上位レイヤに接続される光トランシーバであって、
ＭＤＩＯレジスタと制御記憶とを備えるマイクロコンピュータと、
前記上位レイヤとＭＤＩＯバスを介して接続されると共に、前記マイクロコンピュータと第１の通信バスを介して接続されるロジックデバイスと、
前記マイクロコンピュータと、前記第１の通信バスとは独立の第２の通信バスを介して接続される不揮発性メモリと、
を有し、
前記マイクロコンピュータは、前記上位レイヤによって前記ロジックデバイスを介して前記ＭＤＩＯレジスタに書き込まれたデータを、前記第２の通信バスを介して前記不揮発性メモリに書き込み、
前記不揮発性メモリに書き込まれたデータを、前記第２の通信バスを介して前記制御記憶に転送する、
ことを特徴とする光トランシーバ。
【請求項２】
前記マイクロコンピュータは、さらに退避用メモリを備え、
前記ＭＤＩＯレジスタに書き込まれたデータの、前記第２の通信バスを介する前記不揮発性メモリへの書き込みが、その途中に該退避用メモリへの書き込みを経て行われる、
ことを特徴とする請求項１に記載の光トランシーバ。
【請求項３】
前記ＭＤＩＯレジスタに格納されたデータの前記不揮発性メモリへの書き込みが、前記上位レイヤと前記ロジックデバイスとの前記第１の通信バスを介する通信における一つのフレームの送信時間よりも短い時間内に行われる、
ことを特徴とする請求項１に記載の光トランシーバ。
【請求項４】
前記ＭＤＩＯレジスタに書き込まれたデータの前記退避用メモリへの書き込みおよび前記退避用メモリから前記不揮発性メモリへの書き込みのそれぞれが、前記上位レイヤと前記ロジックデバイスとの前記第１の通信バスを介する通信における一つのフレームの送信時間よりも短い時間内に行われる、
ことを特徴とする請求項２に記載の光トランシーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はマイクロプログラム制御方式のマイクロコンピュータを備える光トランシーバに関する。
【背景技術】
【０００２】
下記特許文献１には、外部の上位レイヤに接続される光トランシーバが記載されている。特許文献１に記載された光トランシーバは、マイクロコンピュータ（以下、「ＣＰＵ」という）とロジックデバイスとを備えている。ＣＰＵは、光トランシーバの複数の内部状態を監視し、それら複数の内部状態を示す複数のデータを記憶するＭＤＩＯ（Ｍａｎａｇｅｍｅｎｔ  Ｄａｔａ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）レジスタを有している。ロジックデバイスは、前記上位レイヤとＭＤＩＯバスを介して接続されると共に、前記ＣＰＵと通信バスを介して接続される。
【０００３】
上位レイヤと光トランシーバとは「フレーム」と呼ばれる６４ビットの長さのシリアルデータを、ＭＤＩＯバスを介して送受信することで通信を行う。フレームの構造は、公知の規格“ＩＥＥＥ８０２．３  Ｃｌａｕｓｅ  ４５，  ＣＦＰ  ＭＳＡ  Ｍａｎａｇｅｍｅｎｒ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”に準拠し、「オペレーションコード（略号ＯＰ）」と呼ばれる２ビットの長さのバイナリデータや１６ビットの長さのアドレス情報あるいは単一のデータを格納する領域等を含んでいる。上位レイヤは、オペレーションコードによって「アドレス設定」、「データライト（書き込み）」、「データリード（読み出し）」、「インクリメント付きデータリード」の４種類の命令を光トランシーバに指示できる。
【０００４】
上位レイヤが光トランシーバ内のＭＤＩＯレジスタに格納されたデータを読み出す場合、まず、「アドレス設定」のオペレーションコードと、対象となるＭＤＩＯレジスタのアドレス情報とを含んだフレームを、ＭＤＩＯバスを介してロジックデバイスに送る。ロジックデバイスは、受信したアドレス情報を、通信バスを介してＣＰＵに送り、そのアドレス情報によって特定されるＭＤＩＯレジスタに格納されている単一のデータをＣＰＵから通信バスを介して受信し、その単一のデータを自身の内部に用意したレジスタ（以下「通信用レジスタ」という）に格納する。次に、上位レイヤが「データリード」のオペレーションコードを含んだフレームを、ＭＤＩＯバスを介してロジックデバイスに送る。このとき、ロジックデバイスは、そのフレーム内のターンアラウンドビッツ（略号ＴＡ）を受信した直後に通信用レジスタに格納されたデータを、ＭＤＩＯバスを介して上位レイヤに送信する。これらの処理により、上位レイヤはＭＤＩＯレジスタに格納されたデータを読み出すことができる。
【０００５】
上位レイヤが光トランシーバ内部のＭＤＩＯレジスタにデータを書き込む場合は、まず、「アドレス設定」のオペレーションコードと、対象となるＭＤＩＯレジスタのアドレス情報とを含んだフレームを、ＭＤＩＯバスを介してロジックデバイスに送る。ロジックデバイスは、受信したアドレス情報を、通信バスを介してＣＰＵに送る。次に、上位レイヤは、「データライト」のオペレーションコードと、書き込むべき単一のデータとを含んだフレームを、ＭＤＩＯバスを介してロジックデバイスに送る。ロジックデバイスは、受信したフレーム内の単一のデータを、通信バスを介してＣＰＵに送る。ＣＰＵは先に受信したアドレス情報によって特定されるＭＤＩＯレジスタに、通信バスを介して受信した単一のデータを書き込む。これらの処理により、上位レイヤはＭＤＩＯレジスタにデータを書き込むことができる。
【０００６】
上位レイヤは、光トランシーバの内部状態の監視および制御に関する命令を、予め定められたアドレスのＭＤＩＯレジスタ（以下「コマンドレジスタ」という）に、予め命令毎に定められた単一のデータ（以下「コマンドデータ」という）を書き込むことによってＣＰＵに指示する。そのためのロジックデバイスとのＭＤＩＯバスを介する通信は、上記の通り、第一のフレームによって、アドレス情報を送信してコマンドレジスタを特定し、第ニのフレームによって、そのコマンドレジスタについて「読み出し」、あるいは、「書き込み」を指示するという方法にて行われる。
【０００７】
ＣＰＵは、さらにＲＡＭ（退避用メモリ）とフラッシュＲＯＭ（リードオンリーメモリー）とを備えている。ＲＡＭは、フラッシュＲＯＭよりも一般に記憶容量は少ないが、高速の読み書きが可能で、マイクロプログラムの実行や演算あるいは転送のためのデータの一時的な保管等に使用される。フラッシュＲＯＭは、制御記憶および光トランシーバ固有の識別情報や各種設定情報の恒久的な記憶場所として使用される。フラッシュＲＯＭの制御記憶に使用する領域（以下「制御記憶」という）にＣＰＵを制御するためのマイクロプログラム（ファームウェア）が格納される。ＣＰＵが制御記憶に格納されたマイクロプログラムを実行することによって、光トランシーバの複数の内部状態の監視や制御、ロジックデバイスとの通信バスを介した通信等が実施される。そのため、制御記憶内のマイクロプログラムを新しいものに書き換えること（以下「更新」という）によって、より複雑で高度な機能を光トランシーバに与えることができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１２−１６９７４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
光トランシーバが製造者によって市場に提供された後に、機能の追加や不具合の是正のために、マイクロプログラムの更新が必要となる場合がある。この場合に、製造者が光トランシーバを市場から回収してマイクロプログラムを更新し、その後返送して回収前の状態に戻すのは、その経済的負担が甚大となるだけでなく、光トランシーバが実装された伝送システム等の製造者および利用者に重大な影響を与えるという虞がある。従って、光トランシーバのマイクロプログラムの更新は、市場での使用環境に設置されたままの状態にて、上位レイヤがＭＤＩＯバスを介して行えることが好ましい。
【００１０】
特許文献１の発明において、上位レイヤがＭＤＩＯバスを介してマイクロプログラムを更新しようとする場合の問題点ついて以下に説明する。光トランシーバのマイクロプログラムのサイズは、制御記憶（フラッシュＲＯＭ）の記憶容量等の制約により、例えば、数十〜数百キロバイトに成り得る。一つのフレームに格納可能なバイナリデータのサイズは、１６ビット（２バイトに等しい）に限られるため、上位レイヤは、更新するためのマイクロプログラム（以下、「更新用マイクロプログラム」という）を２バイト毎に分割して、個々の分割された２バイトのデータ（以下、「更新用データ」という）を別々のフレームに収めてＭＤＩＯバスを介して光トランシーバに送る必要がある。次に、特定のＭＤＩＯレジスタを予め「更新用レジスタ」として定めておき、ロジックデバイスは、上位レイヤからＭＤＩＯバスを介して更新用データを格納したフレームを受信したら、その更新用データを更新用レジスタに書き込むようにする。この時、上位レイヤが更新用データを格納したフレームを連続して送ると、更新用レジスタに格納された前の更新用データが後の更新用データによって上書されてしまうので、前の更新データを先に制御記憶へ書き込んでおくようにする。これは、ＣＰＵが更新用レジスタの更新用データを制御記憶に書き込むように特定のコマンドコードを定めておき、上位レイヤからそのコマンドコードをコマンドレジスタに書き込むように構成したフレームを、更新用データを格納したフレームを送った後に、送ることで可能となる。このように、更新用データの制御記憶への書き込みを繰り返して行うことによって、最終的に制御記憶上に更新用プログラムを実行可能な状態に再現することができ、よって、マイクロプログラムを更新することができる。
【００１１】
しかしながら、ＣＰＵの制御記憶へのデータの書き込みには１００μｓ程度の時間が必要であり、その間ＣＰＵは他の動作を行うことができなくなる。一方で、上位レイヤと光トランシーバとのＭＤＩＯバスを介した通信は、“ＣＦＰ  ＭＳＡ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．４”（以下「ＭＳＡ規格」という）に準拠して、最大４ＭＨｚのクロック周波数（周期０．２５μｓ）にて行われなければならず、１フレーム（上記の通り、６４ビットの長さのシリアルデータとして扱われる）の通信は最小周期１６μｓ（＝６４ビット×０．２５μｓ／ビット）にて行われなければならない。すなわち、光トランシーバは、上位レイヤから送られてくる、更新以外の光トランシーバ内部の監視および制御を目的としたフレームの送信に対しても、最少周期１６μｓにて毎回必ず応答しなければならない。従って、ＣＰＵは、更新用レジスタに格納された更新用データを制御記憶に書き込む場合に、１６μｓ以上の間ロジックデバイスからの通信バスを介した通信に応答することができず、ロジックデバイスも上位レイヤからのＭＤＩＯバスを介した通信に対応できなくなる。その結果として、上位レイヤと光トランシーバとのＭＤＩＯバスを介した通信が中断されてしまうという問題が生じる。このため、特許文献１の光トランシーバにおいて、上位レイヤがマイクロプログラムを、ＭＤＩＯバスを介して更新することはこれまで実現されていなかった。
【００１２】
本発明は、上記課題に鑑みなされたものであり、外部の上位レイヤと光トランシーバとのＭＤＩＯバスを介した通信に関して、ＭＳＡ規格に基づく最小周期でも光トランシーバは応答しなければならないという制約を満たすと共に、上位レイヤが光トランシーバ内の制御記憶に格納されているマイクロプログラムを、ＭＤＩＯバスを介した通信によって更新する手段を供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明は、上位レイヤに接続される光トランシーバであって、ＭＤＩＯレジスタと制御記憶（フラッシュＲＯＭ）とを備えるマイクロコンピュータ（ＣＰＵ）と、上位レイヤとＭＤＩＯバスを介して接続されると共に、マイクロコンピュータと第１の通信バスを介して接続されるロジックデバイスと、マイクロコンピュータと、第１の通信バスとは独立の第２の通信バスを介して接続される不揮発性メモリと、を有する。また、マイクロコンピュータは、上位レイヤによってロジックデバイスを介してＭＤＩＯレジスタに書き込まれたデータを、第２の通信バスを介して不揮発性メモリに書き込み、不揮発性メモリに書き込まれたデータを、第２の通信バスを介して制御記憶に転送する、ことを特徴とする。
【００１４】
上記構成において、マイクロコンピュータは、さらに退避用メモリ（ＲＡＭ）を備え、ＭＤＩＯレジスタに書き込まれたデータの、第２の通信バスを介する不揮発性メモリへの書き込みが、その途中に退避用メモリへの書き込みを経て行われる、ことを特徴としてもよい。
【００１５】
上記構成において、ＭＤＩＯレジスタに格納されたデータの不揮発性メモリへの書き込みが、前記上位レイヤと前記ロジックデバイスとの前記第１の通信バスを介する通信における一つのフレームの送信時間よりも短い時間内に行われる、ことを特徴としてもよい。
【００１６】
また、上記構成において、ＭＤＩＯレジスタに書き込まれたデータの、第２の通信バスを介する不揮発性メモリへの書き込みが、その途中に退避用メモリへの書き込みを経て行われる場合に、ＭＤＩＯレジスタに書き込まれたデータの退避用メモリへの書き込み、および、退避用メモリから不揮発性メモリへの書き込みのそれぞれが、上位レイヤとロジックデバイスとの第１の通信バスを介する通信における一つのフレームの送信時間よりも短い時間内に行われる、ことを特徴としてもよい。
【発明の効果】
【００１７】
本発明によると、光トランシーバは、上位レイヤとのＭＤＩＯバスを介した通信をＭＳＡ規格に基づく最小周期において正常に行うと共に、上位レイヤがＭＤＩＯバスを介した通信によって光トランシーバのマイクロプログラムを更新する手段を供することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施例１に係る光トランシーバを示す図である。
【図２】本発明の実施例１に係るＭＤＩＯバスを介して行われる通信データのフレーム構造を示す図である。
【図３】本発明の実施例１に係るロジックデバイスからの／ＳＳ信号による外部割り込み信号に対するＣＰＵの処理手順を示すフローチャートである。
【図４】本発明の実施例１に係るＲＡＭから不揮発性メモリへの更新用データの書き込み手順を示すフローチャートである。
【図５】本発明の実施例１に係る不揮発性メモリからフラッシュＲＯＭへの更新用マイクロプログラムの書き込み手順を示すフローチャートである。
【図６】本発明の実施例１に係るマイクロプログラムの構成を示す図である。
【図７】本発明の実施例１に係るマイクロプログラムの書き換え手順を示すフローチャートである。
【図８】本発明の実施例１に係るＭＤＩＯバスおよび第２の通信バスの信号の流れを示すタイミングチャートである。
【図９】本発明の第２の実施例に係る光トランシーバを示す図である。
【図１０】本発明の第２の実施例に係るマイクロプログラムの書き換え手順を示すフローチャートである。
【図１１】本発明の第２の実施例に係るＭＤＩＯバスおよび第２の通信バスの信号の流れを示すタイミングチャートである。
【図１２】本発明の第３の実施例に係る光トランシーバを示す図である。
【発明を実施するための形態】
【００１９】
以下、図面を参照して本発明の実施例について説明する。
（実施例１）
【００２０】
図１は、本発明の実施例１に係る光トランシーバを示す図である。光トランシーバ１０は、ロジックデバイス１１とＣＰＵ１２と不揮発性メモリ１３とを有する。ＣＰＵ１２は、ＭＤＩＯレジスタ１２ａと退避用メモリのＲＡＭ１２ｂとフラッシュＲＯＭ１２ｃとを有する。ロジックデバイス１１は、プログラム可能なロジックデバイスであって、通信用レジスタ１１ａを有する。ＭＤＩＯレジスタ１２ａは、コマンドレジスタ１２ｄと更新用レジスタ１２ｅとを有する。ＲＡＭ１２ｂは、受信フラグ１２ｆと、更新用データを一時的に退避させるための更新用領域１２ｇとを有する。フラッシュＲＯＭ１２ｃは、制御記憶１２ｈを有する。ロジックデバイス１１と上位レイヤ１００とは、ＭＤＩＯバス１４と、光トランシーバ１０の物理的アドレスを指定するための５本の信号線ＰＨＹＡＤＲ１５とを介して接続される。ロジックデバイス１１とＣＰＵ１２とは、通信バス１６を介して接続される。ＣＰＵ１２と不揮発性メモリ１６とは、通信バス１７を介して接続される。
【００２１】
なお、通信用レジスタ１１ａ、コマンドレジスタ１２ｄ、更新用レジスタ１２ｅ、受信フラグ１２ｆ、更新用領域１２ｇ、制御記憶１２ｈは、ロジック回路あるいは各種メモリの内部にて特定の用途に使用する部分に説明の便宜上名称を付与したものである。従って、それらの特定の物理的な構造物等がＣＰＵ１２の各要素１２ａ、１２ｂ、１２ｃの内部に含まれることを意味するものではない。また、更新用領域１２ｇは、ＲＡＭ１２ｂ上にあるとしたが、ＣＰＵ１２のアーキテクチャによっては、汎用レジスタやアキュムレータなどのＣＰＵ内で一時的なデータの退避場所として利用できるものを使用しても良い。
【００２２】
光トランシーバ１０は、上位レイヤ１００から受信した複数あるいは単一の電気信号を複数あるいは単一の光信号に変換して外部へ送信する機能と、外部から受信した複数あるいは単一の光信号を複数あるいは単一の電気信号に変換して上位レイヤに送信する機能とを有する。そのため、ロジックデバイス１１、ＣＰＵ１２、および不揮発性メモリ１３以外に、構成要素として、電気入出力信号、光入出力信号、光信号クロックデータリカバリ、駆動制御回路、光送信サブアセンブリ（ＴＯＳＡ）、光受信サブアセンブリ（ＲＯＳＡ）、周辺ＩＣ、及び、電源回路などを備え得る。しかし、それらの構成要素は、本発明の実施例に直接関係しないため、図１には図示せずに省略している。ＣＰＵ１２は、クロックデータリカバリ、駆動制御回路、ＴＯＳＡ，ＲＯＳＡ，周辺ＩＣ、電源回路などの複数の内部状態の監視および制御を行うことができ、それら複数の内部状態を示す複数のデータをＭＤＩＯレジスタに記憶することができる。また、ＣＰＵ１２は、監視および制御を行う周期にて監視および制御の結果に応じてＭＤＩＯレジスタ１２ａに格納されるデータを更新することができる。
【００２３】
上位レイヤ１００とロジックデバイス１１とは、ＭＤＩＯバス１４を介して通信を行う。詳細には、ＭＤＩＯバス１４は、クロック信号ＭＤＣとデータ信号ＭＤＩＯの２本の信号線から構成される。上位レイヤ１００からクロック信号ＭＤＣを供給し、上位レイヤ１００とロジックデバイス１１とでフレームを送受信することで通信が行われる。
【００２４】
図２はフレームの構造を示している。フレームの構造は、公知の規格“ＩＥＥＥ８０２．３  Ｃｌａｕｓｅ  ４５，  ＣＦＰ  ＭＳＡ  Ｍａｎａｇｅｍｅｎｒ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ”に準拠する。図２中のＰＨＹＡＤＲの５ビットは、光トランシーバの物理アドレスを指定するのに使用される。ＭＤＩＯバス１４では、一つの上位レイヤ１００に対して最大３２個までの光トランシーバを並列して接続できる。上位レイヤ１００が送信したフレームがどの光トランシーバ向けのものなのか識別するためにＰＨＹＡＤＲの５ビットが使用される。
【００２５】
再び、図１を参照すると、光トランシーバ１０の物理アドレスを指定するための５本の信号線ＰＨＹＡＤＲ１５は、フレーム内のＰＨＹＡＤＲで指定される物理アドレスを予め光トランシーバに通知して設定しておくために使用される。従って、上位レイヤ１００と光トランシーバ１０との監視および制御を目的とした通信自体には直接寄与しない。例えば、上位レイヤ１００と一つの光トランシーバのみ接続する場合や予め物理的アドレスを光トランシーバ１０に記憶させておく場合は、信号線ＰＨＹＡＤＲ１５は省略することができる。
【００２６】
ロジックデバイス１１とＣＰＵ１２とは、通信バス１６を介して通信を行う。詳細には、この通信において、ロジックデバイス１１は、上位レイヤからＭＤＩＯバスを介して送信されたフレーム内のアドレス情報によってＭＤＩＯレジスタを特定し、その特定されたＭＤＩＯレジスタに対して単一データの読み出しあるいは書き込みを行うことができる。
【００２７】
次に、ロジックデバイス１１とＣＰＵ１２との通信バス１６を介した通信についてさらに詳細に説明する。図１は、第１の通信バスの例として、パラレル通信バスを示しており、４本の制御信号、すなわち、／ＳＳ信号、ＡＤ信号、ＷＲ信号、／ＲＥＳ信号と、１６本のパラレルデータ信号Ｄａｔａとが使用される。なお、信号名称について、以下、特に断らない限り、最初に「／」が付いているものは、その論理レベルが負論理にて使用されることを表し、最初に「／」が付かないものは、その論理レベルが正論理にて使用されることを表すものとする。
【００２８】
／ＳＳ信号は、ＣＰＵ１２の外部割り込み信号端子（図示していない）に接続され、ロジックデバイス１１は／ＳＳ信号によってＣＰＵ１２に外部割り込みを掛けて、ＣＰＵ１２に通信バス１６を介した通信に必要な処理を行わせる。
【００２９】
１６本の信号線によって伝達されるパラレルデータ信号Ｄａｔａは、ＭＤＩＯレジスタを特定するアドレス情報あるいはＭＤＩＯレジスタに格納されているデータをＣＰＵ１２に伝達するために使用される。ＡＤ信号は、パラレルデータ信号Ｄａｔａがアドレス情報なのかデータなのかを知らせるために使用される。例えば、ロジックデバイス１１は、ＡＤ信号の論理レベルをＬｏｗとすることで送信中のパラレルデータ信号ＤａｔａがＭＤＩＯレジスタを特定するアドレス情報であることをＣＰＵに知らせることができる。また、ＡＤ信号の論理レベルをＨｉｇｈにしているときは、パラレルデータ信号Ｄａｔａは、１６本の並行した双方向信号として働き、ロジックデバイス１１からＣＰＵ１２へ指定したＭＤＩＯレジスタへ書き込むデータを送信するか、あるいは、ＣＰＵ１２からロジックデバイス１１へ特定されたＭＤＩＯレジスタから読み出したデータを送信するか、のいずれかに使用される。いずれの場合であるかは、ＷＲ信号の論理レベルによって決定される。すなわち、例えば、ＷＲ信号の論理レベルがＬｏｗである場合は、Ｄａｔａ信号はＭＤＩＯレジスタへ書き込まれるデータとして扱われ、ＷＲ信号の論理レベルがＨｉｇｈである場合は、Ｄａｔａ信号はＭＤＩＯレジスタから読み出されたデータとして扱われる、
【００３０】
／ＲＥＳ信号は、ＣＰＵ１２がロジックデバイス１１にＣＰＵ内の処理が終了して次の命令を受信して処理する準備ができたことを知らせるために使用される。例えば、ロジックデバイス１１は、／ＲＥＳ信号の論理レベルがＬｏｗとなっている間はＣＰＵ１２が先に指示した命令の処理を行っていて、／ＲＥＳ信号の論理レベルがＬｏｗからＨｉｇｈに変わったらＣＰＵ１２が次の命令を受ける準備ができたことを認識して次の処理に進む。
【００３１】
ＣＰＵ１２と不揮発性メモリ１３とは、通信バス１７を介して通信を行う。図１は、通信バス１７の例として、ＳＰＩ（ＳＥＲＩＡＬ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）を使用した場合を示しており、／ＳＳ信号、ＳＣＫ信号、ＳＤＩ信号、ＳＤＯ信号の４本の信号線が使用される。ＣＰＵ１２はマスタ、不揮発性メモリ１３はスレーブとして働く。すなわち、／ＳＳ信号、ＳＣＫ信号、ＳＤＩ信号はＣＰＵ１２から出力され、ＳＤＯ信号は不揮発性メモリ１３から出力される。ＳＰＩには複数のスレーブとなるデバイスをバス接続することができ、その場合には、／ＳＳ信号によって一つのデバイスを指定した上でＣＰＵ１２（マスタ）とそのデバイス（スレーブ）との間で通信を行う。
【００３２】
図１の構成にて、上位レイヤ１００がＭＤＩＯバス１４を介して制御記憶１２ｈに格納されているマイクロプログラムを新しい更新用マイクロプログラムに更新する手順と方法を以下に説明する。なお、制御記憶１２ｈは、フラッシュＲＯＭ１２ｃ内の特定の領域をマイクロプログラムの格納に使用していることを便宜的に示している。
【００３３】
マイクロプログラムの大きさは、実用上はフラッシュＲＯＭ１２ｃの記憶容量に制限されて、例えば、数十から数百キロバイトとなる。ＭＤＩＯバスを介する通信は、フレームを送受信して行われるが、一つのフレームに収納できるデータ量は１６ビット（２バイト）に制限される。従って、上位レイヤ１００から更新用マイクロプログラムを送る場合に、予め更新用マイクロプログラムを２バイトのデータに分割して、個々の分割されたデータ（以下「更新用データ」という）を一つずつ一つのフレームに収納して、それらのフレームを、少なくとも分割によって生じた更新用データの数に等しい回数以上、ロジックデバイス１１に送る必要がある。
【００３４】
なお、上位レイヤ１００と光トランシーバ１０とのＭＤＩＯバス１４を介する通信は、もともと光トランシーバ１０の複数の内部状態の監視および制御を行うためのものである。このため、更新用マイクロプログラムが分割されて複数のフレームとして送信されるのは、通常の監視および制御を目的としたフレームの送受信の合間に行われる。
【００３５】
ロジックデバイス１１は、上位レイヤ１００からＭＤＩＯ通信バス１４を介してフレームを受信する毎に、その内部に含まれたオペレーションコードに従ってＣＰＵ１０と通信バス１６を介して通信を行う。図２を参照すると、例えば、オペレーションコード（ＯＰ）がバイナリデータ“００”で「アドレス設定」を行う場合には、フレーム内の１６ビットのシリアルデータを１６本のパラレル信号に変換してパラレルデータ信号Ｄａｔａとして出力し、それがアドレス情報であることを知らせるためにＡＤ信号の論理レベルをＬｏｗにして、／ＳＳ信号の論理レベルをＨｉｇｈからＬｏｗにする。すると、ＣＰＵ１２は、外部割り込みが掛けられて、パラレルデータ信号Ｄａｔａからアドレス情報を取り込み、所定の場所に記憶する。上位レイヤ１００が先に送信されたアドレス情報によって特定したＭＤＩＯレジスタにデータを読み書きする場合も、ＡＤ信号の論理レベルをＨｉｇｈにすることで同様に行うことができる。
【００３６】
また、ＭＤＩＯレジスタ１２ａの特定のアドレスのレジスタは、コマンドレジスタ１２ｄとして使用することができる。上位レイヤ１００は、コマンドレジスタ１２ｄに特定のコマンドコードを書き込むことによって、光トランシーバ１０に対して内部の監視および制御について予め処理手順を定めた命令を指示することができる。さらに、ＣＰＵ１２内に更新用データを格納する場所として、特定のＭＤＩＯレジスタを更新用レジスタ１２ｅとして用意しておくことで、上位レイヤ１００はＭＤＩＯバス１４とロジックデバイス１１とを介して更新用レジスタ１２ｅに更新用データを書き込むことができる。
【００３７】
ところで、ＣＰＵ１２の側から、ロジックデバイス１１との通信バス１６を介する通信を見ると、ＭＳＡ規格に基づく最小周期１６μｓ以上のある周期にて、一定間隔でロジックデバイス１１から／ＳＳ信号によって外部割り込みが掛けられ、その都度ＭＤＩＯレジスタ１２ａに関する処理を要求されるように見える。個々の処理は、通常の制御あるいは監視のためのものであるか、あるいは、更新用データを受信するためのものとなる。
【００３８】
図３は、ＣＰＵ１２が／ＳＳ信号による外部割り込みに対して行う処理手順のフローチャートを示している。ＣＰＵ１２は、ＷＲ信号の論理レベルに応じて、ＭＤＩＯレジスタ１２ａへの書き込みか、ＭＤＩＯレジスタ１２ａからの読み出しかを判断する（ステップＴ１）。読み出しの場合（Ｙｅｓの場合）には、ＣＰＵ１２は、先に受信したフレーム内のアドレス情報によって特定されるＭＤＩＯレジスタからデータを取得し、それをパラレルデータ信号Ｄａｔａを介してロジックデバイス１１へ出力する（ステップＴ５）。ステップＴ１にて、ＭＤＩＯレジスタへの書き込みと判断した場合（Ｎｏの場合）には、ＣＰＵ１２は、パラレルデータ信号Ｄａｔａを介して受信した１６ビットのデータを先に受信したフレーム内のアドレス情報によって特定されるＭＤＩＯレジスタへ書き込む（ステップＴ２）。書き込み先となるＭＤＩＯレジスタは、コマンドレジスタ１２ｄ、あるいは、更新用レジスタ１２ｅ、あるいは、それら以外のレジスタ、のいずれか一つとなる。ただし、更新用レジスタ１２ｅに書き込みが行われた場合には（ステップＴ３；Ｙｅｓ）、更新用レジスタ１２ｅに格納された更新用データをＲＡＭ上の予め用意しておいた更新用領域１２ｇに書き込み、ＲＡＭ１２ｂ上に予め用意した受信フラグ１２ｆを立てる（ステップＴ４）。なお、書き込み先が更新用レジスタでなければ（ステップＴ３；Ｎｏ）、手順を終了する。
【００３９】
ＣＰＵ１２が、更新用レジスタ１２ｅに格納された更新用データを更新用領域１２ｇに書き込むのは、ＣＰＵ内の内部バス等を使用して数μｓ以内で行うことができる。従って、ＭＳＡ規格に基づく最小周期１６μｓ以上にてロジックデバイス１１から次の更新用データが通信バス１６を介して送られて来た場合でも、それよりも早く更新用レジスタ１２ｅから更新用領域１２ｇへ先に書き込まれた更新用データを退避させることができる。これにより、上書きによって更新用データが消失するのを回避することができる。また、ＣＰＵ１２が更新用レジスタに格納された更新用データを更新用領域に書き込むのに要する時間は、高々数μｓであり、ＭＳＡ規格に基づく最小周期１６μｓよりも短いため、上位レイヤ１００と光トランシーバ１０とは、ＭＤＩＯバス１４を介する通信を、妨げられることなく正常に行うことができる。なお、更新用データを退避させる目的においては、ＲＡＭ（退避用メモリ）１２ｂ上の更新用領域１２ｇの代わりに、ＣＰＵ１２内にある汎用レジスタやアキュムレータ等を使用しても良い。現在のＣＰＵのアーキテクチャには、汎用レジスタやアキュムレータの大きさが２バイト以上のものが多くあり、更新用データを格納することが可能である。
【００４０】
ところで、ＲＡＭ１２ｂは、高速のメモリでマイクロプログラムの実行にも使用される。そのため、ＲＡＭ上の更新用領域１２ｇは、一つの更新用データを格納できる最低限の大きさ（２バイト）にしておくことが好適である。技術的には、さらに大きい領域を割り当てることは可能だが、その場合でも更新用マイクロプログラムの全体（サイズは、上記の通り、例えば、数十から数百キロバイトとなる）を格納できるだけの領域を確保するのは実用上難しい。そのため、更新用領域１２ｇに格納した更新用データは、更新用マイクロプログラムのサイズ以上の記憶容量を有する不揮発メモリ１３を用意しておき、そこに通信バス１７を介して書き込まれるようにする。
【００４１】
図４は、更新用領域１２ｇに格納された更新用データを不揮発性メモリ１３に書き込む手順に係るフローチャートを示している。ＣＰＵ１２は、上記の／ＳＳ信号による外部割り込みに対する処理（図３）を終了すると、通常の監視制御処理に戻る（ステップＵ１）。その処理の後に受信フラグ１２ｆを調べて受信フラグが立っている（例えば、バイナリデータの“１”になっている）場合（ステップＵ２；Ｙｅｓ）は、更新用領域１２ｇに新しい更新用データが書き込まれているので、それを不揮発性メモリ１３に通信用バス１７を介して書き込む（ステップＵ３）。その後、受信フラグ１２ｆをクリアし、次に説明する通り、不揮発性メモリ用ポインタをインクリメントする（ステップＵ４）。なお、受信フラグが立っていない（例えば、バイナリデータの“０”になっている）場合には処理手順を終了する（ステップＵ２；Ｎｏ）。
【００４２】
ＣＰＵ１２による通信バス１７を介した更新用データの不揮発性メモリ１３への書き込みは、ＣＰＵ１２からＳＣＫ信号を供給して、更新用データをＣＰＵ１２内でシリアルデータに変換してからＳＤＩ信号に出力することで行われる。この際に、不揮発性メモリ１３内のアドレス情報を指定するが、予めアドレスの値を格納するポインタをＲＡＭ１２ｂ上に用意しておき、書き込みを行う度にポインタをインクリメントして更新データが所定の順番で連続して不揮発メモリ１３上に格納されてゆくようにすることもできる。その結果、上位レイヤ１００から更新用データが必要な回数だけ送信された後には、不揮発性メモリ１３上の所定の領域に更新用マイクロプログラムを更新用データに分割される前の実行可能な形態に再現することができる。なお、ＣＰＵ１２による更新用領域１２ｇに格納された更新用データの不揮発性メモリ１３への書き込みは、ＭＳＡ規格に基づく最小周期１６μｓよりも短い時間で行われるようにする。そのため、不揮発性メモリ１３は、その書き込み時間が、例えば、数μｓといったものを採用する。
【００４３】
上記に説明してきた通り、本発明では、更新用レジスタ１２ｅに格納された更新用データの更新用領域１２ｇへの書き込みと、更新用領域１２ｇに格納された更新用データの不揮発性メモリ１３への書き込みとを、それぞれ、上位レイヤ１００とロジックデバイス１１とのＭＤＩＯバス１４を介する通信のＭＳＡ規格に基づく最小周期１６μｓよりも短い時間内に行うことができる。これにより、上位レイヤ１００と光トランシーバ１０とのＭＤＩＯバス１４を介する通信を中断することなく、上位レイヤ１００は、ＭＤＩＯバス１４を介して不揮発性メモリ１３上に更新用マイクロプログラムを書き込む（更新用データに分割される前のＣＰＵによって実行可能な様態に再現する）ことができる。
【００４４】
なお、上記の「ＭＳＡ規格に基づく最小周期１６μｓ」は、本発明出願時以前の技術に基づいて定められたものであり、種々の関連する技術の今後の進展または発達に伴って、さらに短い周期が規定されることが考え得る。そのような場合であっても、本発明を技術的思想として適用することは可能であって、例えば、上記の最小周期は、上位レイヤ１００がＭＤＩＯバス１４を介して一つのフレームを送信するのに必要な最小時間に等しいために、次のように説明することもできる。すなわち、更新用レジスタ１２ｅに格納された更新用データの更新用領域１２ｇへの書き込みと、更新用領域１２ｇに格納された更新用データの不揮発性メモリ１３への書き込みとは、それぞれ、上位レイヤ１００とロジックデバイス１１とのＭＤＩＯバス１４を介する通信における、一つのフレームを送信するのに必要な時間よりも短い時間内に行うことができる。
【００４５】
上記の通り、更新用マイクロプログラムが不揮発性メモリ１３上に書き込まれた後、ＣＰＵ１２は、不揮発性メモリ１３上に再現された更新用マイクロプログラムを制御記憶１２ｈに転送することでマイクロプログラムを更新することができる。この手順は以下のように行われる。すなわち、上位レイヤ１００は、全ての更新用データを送信し終わった後に、ＭＤＩＯバス１４を介する通信によって、光トランシーバ１０に再起動を行うように命令する。これは、コマンドレジスタ１２ｄに再起動を指示するコマンドデータを書き込むように構成したフレームを送信することで行うことができる。
【００４６】
図５は、上位レイヤ１００から再起動命令を受信したＣＰＵ１２が行う更新処理手順のフローチャートを示している。まず、ＣＰＵ１２は、光トランシーバ１０の複数の内部状態の監視および制御に必要な各種の初期化を行う（ステップＶ１）。その後、不揮発性メモリ１３に更新用マイクロプログラムが格納されているかどうか、通信バス１７を介して調べる（ステップＶ２）。更新用プログラムが格納されている場合（Ｙｅｓの場合）は、不揮発性メモリ１３上の更新用マイクロプログラムを、通信バス１７を介して制御記憶１２ｈに転送する（ステップＶ３）。この時、制御記憶１２ｈは、フラッシュＲＯＭ１２ｃの特定の領域（ブロック）内にあり、ＣＰＵ１２が更新用マイクロプログラムを制御記憶１２ｈへの書き込むのには１００μｓ程度を必要とするが、再起動中は、光トランシーバ内の複数の内部状態について所定の準備が整うまでは、上位レイヤ１００とのＭＤＩＯバス１４を介する通信を行わなくても良いために、問題となることはない。なお、不揮発性メモリ１３に更新用マイクロプログラムが格納されていない場合には（ステップＶ２；Ｎｏ）、処理手順を終了する。
【００４７】
図６は、本発明の実施例１に係るマイクロプログラムの構成を示している。マイクロプログラム５０は更新処理部５１と監視制御処理部５２とから成っている。更新処理部５１は、自身は更新されずに、再起動時にＣＰＵ１２が更新処理部５１を実行して、上述の不揮発性メモリ１３から制御記憶１２ｈへの更新用マイクロプログラムの転送を行う。監視制御処理部５２は、更新用マイクロプログラムとして更新される部分に該当する。なお、監視制御処理部５２は、光トランシーバ１０の複数の内部状態の監視および制御を行うための部分以外に、更新用データ受信処理部を有し、更新用データ受信処理部が図３および図４に示した処理手順をＣＰＵ１２に指示する。
【００４８】
図６の監視制御処理部５２は、マイクロプログラムのバージョンを識別するためのバージョン情報と、不揮発性メモリ１３、あるいは制御記憶１２ｈに更新用マイクロプログラム、すなわち監視制御処理部５２が正常に格納されたかどうか確認するためのチェックサム情報を有することができる。
【００４９】
更新用マイクロプログラムのバージョン情報は、既に制御記憶１２ｈに格納されているマイクロプログラムのバージョン情報と比較することによって、それを含む更新用マイクロプログラムが更新されるべきバージョン情報のものかどうかＣＰＵ１２が確認することに使用することができる。例えば、不揮発性メモリ１３に格納された更新用マイクロプログラムが、現在実行中のマイクロプログラムよりも同じか古いことを示すバージョン情報を有している場合は、更新用マイクロプログラムの不揮発性メモリ１３から制御記憶１２ｈへの転送を行わないように更新処理部５１を作成しておくことで無用なマイクロプログラムの更新処理を省くことができる。
【００５０】
次に、チェックサム情報について述べる。チェックサム情報は、例えば、一般的な誤り検出手法による冗長データを用いることができる。ＣＰＵ１２は、チェックサム情報を用いて不揮発性メモリ１３に格納された更新用マイクロプログラム（図６中の監視制御処理部５２）のデータに誤りが無いことを検査することができる。検査の結果。更新用マイクロプログラムが正常であれば、制御記憶１２ｈへの転送を行い、正常でなければマイクロプログラムの更新処理を中止して上位レイヤ１００へ異常が生じたことを通知するように処理手順を構成することができる。これにより、誤った更新用マイクロプログラムが制御記憶１２ｈに書き込まれること、さらに、それによりＣＰＵ１２、すなわち光トランシーバ１０が誤動作することを防止することができる。
【００５１】
図７は、本発明の実施例１に係るマイクロプログラムの書き換え手順全体を示すフローチャートである。光トランシーバ１０を起動した際に、ＣＰＵ１２は、受信フラグ１２ｆと不揮発性メモリポインタ（図示していない）を初期化する（ステップＳ１）。上位レイヤ１００から更新用データを含んだフレームが送られて来た場合に、ＣＰＵ１２は図７のステップＳ２、Ｓ３、Ｓ４を繰り返し行う。ステップＳ２では、図３に示すロジックデバイス１１からの／ＳＳ信号による外部割り込みに対する割込み処理を行い、ステップＳ３では、図４に示すＲＡＭ１２ｂから不揮発性メモリへ１３の更新用データの書き込み処理を行う。
【００５２】
図８は、図７のステップＳ２〜Ｓ４を繰り返す際のＭＤＩＯバス１４および通信バス１７上の各々のデータの流れをタイミングチャートにて示している。ＭＤＩＯバス１４には、上位レイヤ１００から更新用データを含んだフレームが最小周期１６μｓで送信されて来る。説明のため、時間の早い順番にフレーム１、フレーム２、フレーム３と呼ぶことにする。最初のフレーム１を受信する間に、ＣＰＵ１２は、フレーム１に含まれる更新用データ１のＲＡＭ１２ｂ上の更新用領域１２ｇへの書き込み（図７のステップＳ２に該当する）を完了する。そして、次のフレーム２を受信する間に、ＣＰＵ１２は、更新用領域１２ｇに格納された更新用データを、通信バス１７を介して不揮発性メモリ１３に書き込む（図７のステップＳ４に該当する）。本実施例では、通信バス１７としてＳＰＩを採用しており、図８は、ＣＰＵ１２が不揮発性メモリ１３に更新用データの書き込みを指示するのに、一例として、４８ビットのシリアルデータ信号を送信する場合を示している。現在の技術では、通信速度として４０Ｍｂｉｔ／ｓが可能であり、約１．２４μｓにて書き込みを完了することができる。これにより、上位レイヤ１００から最小周期１６μｓでＭＤＩＯバスを介してフレームが送られてきても、本発明に係る光トランシーバ１０は、それを妨げることなく、図７中のステップＳ２およびステップＳ３を順次行うことができる。
【００５３】
続いて、図７のステップＳ４以降についての説明に戻る。上述した通り、更新用マイクロプログラムは、複数の２バイト単位の更新用データに分割される。各々の更新用データは、それぞれフレーム内に格納されて、上位レイヤ１００からＭＤＩＯバス１４を介して光トランシーバ１０に送信される。不揮発性メモリ１３上に順次更新用データを書き込んで行って、更新用マイクロプログラムを再現するのに必要なフレームの数は、上位レイヤ１００が把握している。光トランシーバ１０は、上位レイヤ１００から送られてくるフレームの処理を順次行い、全ての更新用データを受信し終わったら、上位レイヤ１００から光トランシーバの再起動を行う（ステップＳ４；Ｙｅｓ）。それにより、ＣＰＵ１２は、図４に示す手順に従って、不揮発性メモリ１３から制御領域１２ｈへの更新用マイクロプログラムの転送を行う（ステップＳ５）。なお、このステップＳ５は、図６の更新処理部５１に具体的な手順を記述しておき、それをＣＰＵ１２が実行することで実施することができる。また、このステップＳ５にて、上記の更新用マイクロプログラムのバージョン情報とチェックサム情報とによる転送可否の判断を行うことができる。
【００５４】
制御記憶１２ｈに更新用マイクロプログラムが書き込まれた後、ＣＰＵ１２は、その更新用マイクロプログラムを実行し、それに従って、光トランシーバ１０の内部状態の監視および制御を行う（ステップＳ６）。
（実施例２）
【００５５】
図９は、本発明の第２の実施例に係る光トランシーバを示す図である。実施例１では、更新用レジスタ１２ｅに格納された更新用データは、次の更新用データが書き込まれる前に更新用領域１２ｇに書き込まれて一時的に退避される。その後に、更新用領域１２ｇに格納された更新用データは不揮発性メモリ１３に書き込まれる、という２段階の手順を踏んでいる。しかし、更新用レジスタ１２ｅに格納された更新用データを不揮発性メモリ１３に直接書き込む方法も考え得る。それにより、図９においては、図１からＲＡＭ１２ｂおよびその内部の受信フラグ１２ｆ、更新用領域１２ｇが削除されている。なお、第１図と同一部分については同符号を用いて、その説明は省略する。
【００５６】
図１０は、本発明の第２の実施例に係るマイクロプログラムの書き換え手順全体を示すフローチャートである。図７のステップＳ３、Ｓ４が一つの「ＣＰＵは、更新レジスタに格納された更新用データを不揮発性メモリに書き込む」というステップＷ２に統合されている。
【００５７】
実施例１では、更新用領域１２ｇに格納された更新用データを不揮発性メモリ１３に書き込むのは、図８に示すように次のフレームを受信する間に行えば良い。これにより、不揮発性メモリ１３の書き込みに要する時間に余裕を持たせることができる。しかし、さらに速く書き込みを行うことができる不揮発性メモリを採用することによって、上記の図２の手順Ｓ３，Ｓ４を図１０の手順Ｗ２へ統合して簡素化することができる。すなわち、更新用レジスタ１２ｅに格納された更新用データの不揮発性メモリ１３への書き込みは、上位レイヤ１００とロジックデバイス１１とのＭＤＩＯバス１４を介する通信のＭＳＡ規格に基づく最小周期内に行うことができる。これにより、例えば、図６の更新用データ受信処理部のプログラミングを簡易にすることができる。
【００５８】
図１１は、図１０のステップＷ２、Ｗ４を繰り返す際のＭＤＩＯバス１４および通信バス１７上のデータの流れをタイミングチャートにて示している。光トランシーバ１０が、ＭＤＩＯバス１４を介して一つのフレームを受信する間に、ＣＰＵ１２が更新用レジスタ１２ｅに格納された更新用データを、通信用バス１７を介して不揮発性メモリ１３に書き込む様態を示している。
【００５９】
実施例１と第２の実施例とは、本発明に係る光トランシーバの具体的な仕様とハードウェアおよびマイクロプログラムの設計指針等を勘案して選択されるのが好適となる。すなわち、通信バス１７の通信速度、不揮発性メモリ１３の書き込み時間、ＣＰＵ１２の動作速度、マイクロプログラムの光トランシーバ１０の内部状態の監視および制御に要する時間等や、さらに、ＩＣ等の部品コストに係る経済性やマイクロプログラムの動作や回路動作に係る時間的余裕度も考慮して、いずれかの構成および方法を選択することが好ましい。
（実施例３）
【００６０】
図１２は、本発明の第３の実施例に係る光トランシーバを示す図である。実施例１では、ロジックデバイス１１とＣＰＵ１２とを接続する通信バス１６の例として、パラレル通信バスを採用したが、第３の実施例では通信バス１６にシリアル通信バスを採用している。具体的には、図１２は、通信バス１６の例として、ＳＰＩを使用した場合を示しており、／ＳＳ信号、ＳＣＫ信号、ＳＤＩ信号、ＳＤＯ信号の４本の信号線が使用される。なお、第１図と同一部分については同符号を用いて、その説明は省略する。
【００６１】
図１２では、ＣＰＵ１２と不揮発性メモリ１３とを接続する通信バス１７もＳＰＩを使用しているが、通信バス１６と通信バス１７とは互いに独立に働く。例えば、通信バス１７では、ＣＰＵ１２がマスタ、不揮発性メモリ１３がスレーブとして働くが、通信バス１６では、ロジックデバイス１１がマスタ、ＣＰＵ１２がスレーブとして働く。すなわち、通信バス１６では、セレクト信号／ＳＳ、クロック信号ＳＣＫ、データ入力信号ＳＤＩは、ロジックデバイス１１からＣＰＵ１２へ入力され、データ出力信号ＳＤＯはＣＰＵ１２からロジックデバイス１１へ出力される。
【００６２】
通信バス１６において、セレクト信号／ＳＳは、クロック信号ＳＣＫとデータ入力信号ＳＤＩとデータ出力信号ＳＤＯとによるシリアル通信の開始および終了をロジックデバイス１１からＣＰＵ１２へ通知するために使用される。ＣＰＵ１２は、セレクト信号／ＳＳの論理レベルがＨｉｇｈレベルの間は、ロジックデバイス１１からの信号が変化していたとしてもそれを無視し、セレクト信号／ＳＳの論理レベルがＬｏｗレベルの間にロジックデバイス１１とのシリアル通信を行う。
【００６３】
ロジックデバイス１１とＣＰＵ１２との通信バス１６を介する通信は、クロック信号ＳＣＫに同期して、ロジックデバイス１１からＣＰＵ１２へデータ入力信号ＳＤＩが入力され、入力されたデータに応じてＣＰＵ１２からロジックデバイス１１へデータ出力信号ＳＤＯが出力されることによって行われる。
【００６４】
詳細には、例えば、通信バス１６において、データ入力信号ＳＤＩは、クロック信号ＳＣＫに同期したシリアルデータであり、ＣＰＵ１２に動作を指示するための８ビット長のインストラクション・フォーマット（コマンド）、レジスタを特定するための８ビット長のアドレス情報、アドレス情報で特定されるレジスタに読み書きされる８ビット長のバイナリデータを含んでいる。コマンドによって、ＭＤＩＯレジスタ１２ａに対して「読み出し」と「書き込み」のいずれを行うか等が指示される。例えば、「読み出し」が指示された場合には、ＣＰＵ１２は、指定されたレジスタに格納されたバイナリデータをデータ出力信号ＳＤＯへシリアルデータとして出力し、ロジックデバイス１１は、そのデータを受信して通信用レジスタ１１ａに格納する。
【００６５】
従って、これまで説明した通り、ロジックデバイス１１が上位レイヤ１００からＭＤＩＯバスを介して受信したフレームの内容に応じて適宜シリアル通信に必要なデータを処理・生成することによって、通信バス１６にシリアル通信バスを採用することができる。詳細には、例えば、フレームに格納されたオペレーションコード（ＯＰ）によって指示される「アドレス設定」、「データライト（書き込み）」、「データリード（読み出し）」、「インクリメント付きデータリード」の４種類の命令に応じて、ＳＰＩのコマンドを適宜選択し、その実行に必要なアドレス情報やデータをデータ入力信号ＳＤＩを介してＣＰＵ１２へ入力したり、あるいは、ＭＤＩＯレジスタ１２ａに格納されたデータを読み出す際には、データ出力信号ＳＤＯを介してＣＰＵ１２からそのデータを受信することができる。
【００６６】
通信バス１６に関して、パラレル通信バスとシリアル通信バスとの差異について説明する。まず、一つには、シリアル通信バスは４本の信号線を使用するのに対して、パラレル通信バスは２０本の信号線を使用する。従って、シリアル通信バスの方が、信号線の本数が少ないために、例えば、プリント板上の信号線の配線面積を減らすと共に、より端子数が少なくてサイズの小さいＬＳＩをＣＰＵ１２に採用することによって回路の実装面積を小さくでき、光トランシーバの小型化に有利となる。一方で、シリアル通信バスのクロック周波数は、シリアル通信バスの方がデータの送受信に使用できる信号線の本数が少ないために、パラレル通信バスのクロック周波数に比べて１０倍以上高くする必要がある。従って、通信バス１６にパラレル通信バスを採用した場合には、ロジックデバイス１１やＣＰＵ１２のクロック周波数は相対的に低くできるので、例えば、ゲート長が長いなどの、より成熟した半導体プロセスによって製造されるＩＣを使用できる。その結果、例えば、部品のコストを安価に抑えるなどして、経済性の面で有利となる可能性がある。また、クロック周波数の低いＩＣは、クロック周波数の高いＩＣに比べて消費電力が少ない場合が多く、光トランシーバの低消費電力化に寄与する可能性もある。
【００６７】
このように、本発明を実施する際には、光トランシーバの具体的な仕様やハードウェアおよびマイクロプログラムの設計指針等に基づいて、光トランシーバに係る小型化効果と経済性とを考慮し、通信バス１６、１７にシリアル通信バスとパラレル通信バスとのいずれが好適となるかを判断して選択することが望ましい。
【００６８】
以上、本発明の実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【００６９】
１０  光トランシーバ
１１  ロジックデバイス
１１ａ  通信用レジスタ
１２  ＣＰＵ（マイクロコンピュータ）
１２ａ  ＭＤＩＯレジスタ
１２ｂ  ＲＡＭ（退避用メモリ）
１２ｃ  フラッシュＲＯＭ
１２ｄ  コマンドレジスタ
１２ｅ  更新用レジスタ
１２ｆ  受信フラグ
１２ｇ  更新用領域
１２ｈ  制御記憶
１３  不揮発性メモリ
１４  ＭＤＩＯバス
１５  信号線ＰＨＹＡＤＲ
１６、１７  通信バス
１００  上位レイヤ
【図１】
2014165780.tif 000003
【図２】
2014165780.tif 000004
【図３】
2014165780.tif 000005
【図４】
2014165780.tif 000006
【図５】
2014165780.tif 000007
【図６】
2014165780.tif 000008
【図７】
2014165780.tif 000009
【図８】
2014165780.tif 000010
【図９】
2014165780.tif 000011
【図１０】
2014165780.tif 000012
【図１１】
2014165780.tif 000013
【図１２】
2014165780.tif 000014