(57)【特許請求の範囲】
【請求項１】
ＩＥＥＥ１３９４規格に準拠したインタフェースを介して入力され該規格のデータフォーマットに準拠するパケットを、一時的に格納して転送するＦＩＦＯメモリをなすＦＩＦＯ装置において、
上記入力されたパケットを格納するメモリ部と、
外部から入力される制御信号に応じて、該メモリ部に対してデータ書き込みを行うアドレスを所定のタイミングで順次生成して出力し、メモリ部に対するデータ書き込み制御を行う入力制御部と、
外部から入力される制御信号に応じて、上記メモリ部に対してデータ読み出しを行うアドレスを所定のタイミングで順次生成して出力し、メモリ部に対するデータ読み出し制御を行う出力制御部と、
を備え、
上記入力制御部は、メモリ部に入力されているパケットのトレイラー部におけるアクノリッジ情報が入力されるまでは上記出力制御部に対してメモリ部からのデータ読み出しを禁止し、メモリ部に入力されたパケットの上記アクノリッジ情報から該パケットの転送実施判定を行い、転送を禁止する判定を行うと、上記出力制御部に対してメモリ部からのデータ読み出しを禁止すると共に、上記メモリ部に対して、新たに入力されるパケットを上書きさせて、格納しているパケットを消去させることを特徴とするＦＩＦＯ装置。
【請求項２】
上記入力制御部は、メモリ部に入力されたパケットが所定のタイプのパケットである場合のみ、上記転送実施判定結果に応じて、出力制御部に対してメモリ部からのデータ読み出しを禁止すると共に、上記メモリ部に対して、新たに入力されるパケットを上書きさせて、格納しているパケットを消去させることを特徴とする請求項１記載のＦＩＦＯ装置。
【請求項３】
上記入力制御部は、メモリ部に入力されたパケットのヘッダ部におけるパケットのタイプ情報から、該パケットが所定のタイプのパケットであるか否かの判定を行うことを特徴とする請求項２記載のＦＩＦＯ装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パーソナルコンピュータ等において、ＩＥＥＥ１３９４インタフェースを有するＯＨＣＩ（Open Host Controller Interface）規格に準拠したＰＣＩホストカードにおけるデータ転送制御装置で使用されるＦＩＦＯメモリをなすＦＩＦＯ装置に関し、特に外部の機器からＩＥＥＥ１３９４バスを介して入力されたデータを、ＰＣＩバスを介してパーソナルコンピュータ等に転送する際に使用する受信用のＦＩＦＯ装置に関する。
【０００２】
【従来の技術】
従来、ＩＥＥＥ１３９４規格に準拠したシリアルバスのインタフェース回路を有するパーソナルコンピュータ等のデータ転送制御装置では、ＩＥＥＥ１３９４バスは物理（Physical）層に接続され、該物理層はリンク（Link）層に接続されている。更に、リンク層には、アシンクロナス（Asynchronous）パケット送信用のＦＩＦＯ装置、アイソクロナス（Isochronous）パケット送信用のＦＩＦＯ装置及び受信用のＦＩＦＯ装置（以下、受信用ＦＩＦＯ装置と呼ぶ）がそれぞれ接続されている。
【０００３】
更に、アシンクロナスパケット送信用のＦＩＦＯ装置はアシンクロナス送信用のＤＭＡ(direct memory access）装置に、アイソクロナスパケット送信用のＦＩＦＯ装置はアイソクロナス送信用のＤＭＡ装置に、受信用ＦＩＦＯ装置は受信用のＤＭＡ装置（以下、受信用ＤＭＡ装置と呼ぶ）にそれぞれ対応して接続される。また、これらの各ＤＭＡ装置は、ＰＣＩバスの制御を行うＰＣＩ制御部に接続され、ＰＣＩ制御部を介してＰＣＩバスにそれぞれ接続される。
【０００４】
したがって、ＰＣＩバスには複数のお互い非同期なＤＭＡ装置が接続されることになるため、ＩＥＥＥ１３９４関連機器を複数台接続して使用したりする場合には、各ＤＭＡ装置によるＰＣＩバスへの競合が発生する可能性が高くなる。このことから、パーソナルコンピュータの処理能力の低下を招く可能性があった。そこで、ＰＣＩバスの競合を少しでも防ぐためにも、受信データを処理する際のエラー処理を行うためにＰＣＩバスを占有することを極力さけることが必要であった。
【０００５】
図８は、従来の受信用ＦＩＦＯ装置の構成例を示した図である。図８において、受信用ＦＩＦＯ装置１００は、メモリ部１０１、データ入力を制御する入力制御部１０２及びデータ出力を制御する出力制御部１０３で構成されている。メモリ部１０１は、入力されたパケットが実際に格納される記憶回路部であり、図８では１０２４×３３(ｂｉｔ)の記憶容量を有している。また、メモリ部１０１には、リンク層（図示せず）からデータ入力バス１０４を介して入力データＤＩ[32:0]が、入力制御部１０２からは該入力データＤＩ[32:0]の書き込みを行うタイミングを得るためのタイミング信号ＭＷＲがそれぞれ入力される。
【０００６】
更にメモリ部１０１には、入力制御部１０２から、データを書き込むアドレスを示した１０ビットデータからなるライトアドレスＡＤＩ[9:0]が、出力制御部１０３から、データを読み出すアドレスを示した１０ビットデータからなるリードアドレスＡＤＯ[9:0]がそれぞれ入力される。メモリ部１０１から読み出された出力データＤＯ[32:0]は、データ出力バス１０５を介して受信用ＤＭＡ装置（図示せず）へ出力される。
【０００７】
また、入力制御部１０２には、データの書き込みを行うタイミングを得るためのリンク層からのタイミング信号であるＬＷＲ＃信号が入力されると共に、リードアドレスＡＤＯ[9:0]が出力制御部１０３から入力される。更に、入力制御部１０２は、メモリ部１０１にデータを記憶するための空き領域がないフル（Full）状態であることを示すＦＵＬＬ信号をリンク層へ出力すると共に、メモリ部１０１にデータを記憶するための空き領域があるエンプティ（Empty）状態であることを示すＥＭＰＴＹ信号を出力制御部１０３へ出力する。
【０００８】
また、出力制御部１０３は、リードデータ要求信号ＦＲＲＥＱ＃が受信用ＤＭＡ装置から入力され、リードデータ許可信号ＦＲＡＣＫ＃を受信用ＤＭＡ装置に出力する。なお、メモリ部１０１のデータ幅が３３ビットである理由は、ＩＥＥＥ１３９４のパケットは基本的には３２ビットデータであり、パケットの最終データを知るために必要な１ビットデータがリンク層で付加されて、データ幅が３３ビットになる。
【０００９】
次に、図９は、図８で示した入力制御部１０２の構成例を示したブロック図である。図９で示すように、タイミング信号ＬＷＲ＃の信号レベルを反転させた信号がタイミング信号ＭＷＲとなり、該タイミング信号ＭＷＲは、１０ビットカウンタ１１１におけるカウントアップのイネーブル端子ＥＮに入力される。１０ビットカウンタ１１１の出力データは、ライトアドレスＡＤＩ[9:0]となる。また、１０ビットカウンタ１１１は、リセット端子Ｒ＃にロー（Ｌｏｗ）レベルのリセット信号Ｒｓ＃が入力されるリセット時には“０００ｈ”にセットされる。また、デコーダ１１２は、入力されたライトアドレスＡＤＩ[9:0]及びリードアドレスＡＤＯ[9:0]を所定の方法でデコードしてＦＵＬＬ信号及びＥＭＰＴＹ信号を生成し出力する。
【００１０】
メモリ部１０１に書き込まれるＩＥＥＥ１３９４の受信データは、パケットのタイプやその他のアドレス情報等が入ったヘッダ部と、データ情報が入ったデータ部と、受信した時間や送信した相手に送ったアクノリッジ情報等が入ったトレイラー（Trailer）部とで構成されている。ヘッダ部、データ部及びトレイラー部は、１ワードが３２ビットデータ（以下、クワドレットと呼ぶ）で構成されている。受信データの最終クワドレットをなすトレイラー部には、送信した相手に対して送ったアクノリッジ情報があり、該アクノリッジ情報には、様々なエラー情報等も含まれている。
【００１１】
【発明が解決しようとする課題】
ここで、受信用ＦＩＦＯ装置１００がエラーパケットを受信して、受信用ＤＭＡ装置がこれらのエラーパケットを受け取った場合においても、ＰＣＩバスを占有してパケットを処理し、最終のトレイラー部を受けた時点でこのパケットがエラーであったことを検出し処理したパケットを無効にする。すなわち、このようなエラーパケットに対してもＰＣＩバスを占有するようにしていたことから、各ＤＭＡ装置によるＰＣＩバスの競合が発生しやすいため、システム全体の処理能力が低下するという問題があった。
【００１２】
本発明は、上記のような問題を解決するためになされたものであり、不要にＰＣＩバスが占有されることを防止して、システム全体の処理能力を高めることができる受信用のＦＩＦＯ装置を得ることを目的とする。
【００１３】
【課題を解決するための手段】
この発明に係るＦＩＦＯ装置は、ＩＥＥＥ１３９４規格に準拠したインタフェースを介して入力され該規格のデータフォーマットに準拠するパケットを、一時的に格納して転送するＦＩＦＯメモリをなすＦＩＦＯ装置において、
上記入力されたパケットを格納するメモリ部と、
外部から入力される制御信号に応じて、該メモリ部に対してデータ書き込みを行うアドレスを所定のタイミングで順次生成して出力し、メモリ部に対するデータ書き込み制御を行う入力制御部と、
外部から入力される制御信号に応じて、上記メモリ部に対してデータ読み出しを行うアドレスを所定のタイミングで順次生成して出力し、メモリ部に対するデータ読み出し制御を行う出力制御部と、
を備え、
上記入力制御部は、メモリ部に入力されているパケットのトレイラー部におけるアクノリッジ情報が入力されるまでは上記出力制御部に対してメモリ部からのデータ読み出しを禁止し、メモリ部に入力されたパケットの上記アクノリッジ情報から該パケットの転送実施判定を行い、転送を禁止する判定を行うと、上記出力制御部に対してメモリ部からのデータ読み出しを禁止すると共に、上記メモリ部に対して、新たに入力されるパケットを上書きさせて、格納しているパケットを消去させるものである。
【００１６】
更に、上記入力制御部は、メモリ部に入力されたパケットが所定のタイプのパケットである場合のみ、上記転送実施判定結果に応じて、出力制御部に対してメモリ部からのデータ読み出しを禁止すると共に、上記メモリ部に対して、新たに入力されるパケットを上書きさせて、格納しているパケットを消去させるようにしてもよい。
【００１７】
具体的には、上記入力制御部は、メモリ部に入力されたパケットのヘッダ部におけるパケットのタイプ情報から、該パケットが所定のタイプのパケットであるか否かの判定を行うようにした。
【００１８】
【発明の実施の形態】
次に、図面に示す実施の形態に基づいて、本発明を詳細に説明する。
図１は、本発明の実施の形態におけるＦＩＦＯ装置を使用するデータ転送制御装置の例を示した概略のブロック図であり、ＩＥＥＥ１３９４を用いたパーソナルコンピュータ等でのデータ転送は、図１のような構成になっている。
【００１９】
ＩＥＥＥ１３９４規格に準拠したシリアルバスのインタフェース回路を有するパーソナルコンピュータ等におけるデータ転送制御装置１では、ＩＥＥＥ１３９４バス２は物理（Physical）層３に接続され、該物理層３はリンク（Link）層４に接続されている。更に、リンク層４には、アシンクロナス（Asynchronous）パケット送信用のＦＩＦＯ装置（図１ではＡＴＦＩＦＯと示す）５、アイソクロナス（Isochronous）パケット送信用のＦＩＦＯ装置（図１ではＩＴＦＩＦＯと示す）６及び受信用のＦＩＦＯ装置（以下、受信用ＦＩＦＯ装置と呼ぶ）７がそれぞれ接続されている。なお、ＦＩＦＯ装置とは、ＦＩＦＯメモリをなすものである。
【００２０】
更に、アシンクロナスパケット送信用のＦＩＦＯ装置５は、アシンクロナス送信用のＤＭＡ(direct memory access）装置（図１ではＡＴＤＭＡと示す）８に、アイソクロナスパケット送信用のＦＩＦＯ装置６はアイソクロナス送信用のＤＭＡ装置（図１ではＩＴＤＭＡと示す）９に、受信用ＦＩＦＯ装置７は受信用のＤＭＡ装置（以下、受信用ＤＭＡ装置と呼ぶ）１０にそれぞれ対応して接続されている。また、これらの各ＤＭＡ装置８〜１０は、ＰＣＩバス１２の制御を行うＰＣＩ制御部１１にそれぞれ接続され、ＰＣＩ制御部１１によってＰＣＩバス１２に接続される。
【００２１】
図２は、本発明の実施の形態におけるＦＩＦＯ装置の構成例を示した概略のブロック図であり、図２では、図１の受信用ＦＩＦＯ装置７を例にして示している。
図２における受信用ＦＩＦＯ装置７は、メモリ部２１、該メモリ部２１へのデータ書き込みを制御する入力制御部２２及びメモリ部２１からのデータ読み出しを制御する出力制御部２３で構成されている。メモリ部２１は、入力されたパケットが実際に格納される記憶回路部であり、図２では１０２４×３３(ビット)の記憶容量を有している場合を例にして示している。
【００２２】
メモリ部２１には、リンク層４からデータ入力バス２４を介して受信データである入力データＤＩ[32:0]が、入力制御部２２からは該入力データＤＩ[32:0]の書き込みを行うタイミングを得るためのタイミング信号であるＭＷＲ信号がそれぞれ入力される。また、データ入力バス２４からの入力データＤＩ[32:0]の一部のデータが、入力制御部２２に入力される。更に、メモリ部２１には、入力制御部２２から、データ書き込みを行うアドレスを示した１０ビットデータからなるライトアドレスＡＤＩ[9:0]が、出力制御部２３から、データ読み出しを行うアドレスを示した１０ビットデータからなるリードアドレスＡＤＯ[9:0]がそれぞれ入力される。また、メモリ部２１から読み出された出力データＤＯ[32:0]は、データ出力バス２５を介して受信用ＤＭＡ装置１０へ出力される。
【００２３】
なお、入力データＤＩ[32:0]及び出力データＤＯ[32:0]における[32:0]は、３２番目から０番目までの各ビットデータからなる３３ビットデータであることを示しており、同様に、ライトアドレスＡＤＩ[9:0]及びリードアドレスＡＤＯ[9:0]における[9:0]は、９番目から０番目までの各ビットデータからなる１０ビットデータであることを示している。
【００２４】
また、入力制御部２２には、データ書き込みを行うタイミングを得るためのリンク層４からのタイミング信号であるＬＷＲ＃信号が入力されると共に、リードアドレスＡＤＯ[9:0]が出力制御部２３から入力される。更に、入力制御部２２は、メモリ部２１にデータを記憶するための空き領域がないフル（Full）状態であることを示すＦＵＬＬ信号をリンク層４へ出力すると共に、メモリ部２１にデータをまったく記憶していないエンプティ（Empty）状態であることを示すＥＭＰＴＹ信号を出力制御部２３へ出力する。
【００２５】
また、出力制御部２３は、メモリ部２１からデータを読み出す場合に受信用ＤＭＡ装置１０からリードデータ要求信号ＦＲＲＥＱ＃が入力され、メモリ部２１のエンプティ状態に応じてリードデータ許可信号ＦＲＡＣＫ＃を受信用ＤＭＡ装置１０に出力する。なお、メモリ部２１のデータ幅が３３ビットである理由は、ＩＥＥＥ１３９４のパケットが基本的には３２ビットデータであり、該３２ビットデータにパケットの最終データを知るための１ビットデータがリンク層４で付加されてデータ幅が３３ビットになっている。
【００２６】
次に、図３は、図２で示した入力制御部２２の構成例を示したブロック図である。
図３において、入力制御部２２は、１０ビットカウンタ３０と、デコーダ３１と、アクセス制御部３２と、ラッチ回路部３３と、第１比較部３４と、第２比較部３５と、第３比較部３６と、ＡＮＤ回路３７，３８と、ＯＲ回路３９と、インバータ４０，４１とで構成されている。リンク層４から入力されたＬＷＲ＃信号は、インバータ４０によって信号レベルが反転され、ＭＷＲ信号としてメモリ部２１に出力される。該ＭＷＲ信号は、１０ビットカウンタ３０におけるカウントアップのイネーブル端子ＥＮに入力され、ＭＷＲ信号がハイ（Ｈｉｇｈ）レベルになると、１０ビットカウンタ３０はイネーブルとなり、カウントを開始する。
【００２７】
１０ビットカウンタ３０の出力データは、ライトアドレスＡＤＩ[9:0]としてメモリ部２１に出力されると共にデコーダ３１及びラッチ回路部３３にそれぞれ出力される。１０ビットカウンタ３０は、リセット端子Ｒ＃にロー（Ｌｏｗ）レベルのリセット信号Ｒｓ＃が入力されるリセット時には、カウント値が“０００ｈ”にリセットされる。また、１０ビットカウンタ３０は、データロード端子ＬＤにハイレベルの信号が入力されると、データ入力端子ＤＩＮに入力された１０ビットのデータがカウント値としてロードする。
【００２８】
また、デコーダ３１は、入力されたライトアドレスＡＤＩ[9:0]及びリードアドレスＡＤＯ[9:0]を所定の方法でデコードしてＦＵＬＬ信号及びＥＭＰＴＹ信号を生成し、該生成したＦＵＬＬ信号をリンク層４に、該生成したＥＭＰＴＹ信号（図３では、ＧＥＭＰＴＹ信号として示している）をＯＲ回路３９の一方の入力端に出力する。なお、後述するように、ＯＲ回路３９の出力信号をＥＭＰＴＹ信号として出力制御部２３に出力することから、以下、デコーダ３１から出力されるＥＭＰＴＹ信号をＧＥＭＰＴＹ信号と呼ぶ。
【００２９】
アクセス制御部３２は、リンク層４からのＬＷＲ＃信号と、パケットの最終データであるか否かを示した入力データＤＩ[32:0]における３２番目のビットデータである入力データＤＩ[32]とから、リンク層４から入力されたデータがそのパケットの最初のデータであることを示すＦＳＴＴＭ信号、及びリンク層４から入力されたデータがそのパケットの最後のデータであることを示すＬＳＴＴＭ信号をそれぞれ生成する。更に、アクセス制御部３２は、該生成したＦＳＴＴＭ信号をラッチ回路部３３及び第２比較部３５の各イネーブル端子ＥＮにそれぞれ出力すると共に、該生成したＬＳＴＴＭ信号をインバータ４１の入力端及び第３比較部３６にそれぞれ出力する。該ＬＳＴＴＭ信号は、インバータ４１を介して第２比較部３５のリセット端子Ｒ＃に入力される。
【００３０】
図４は、アクセス制御部３２の内部構成例を示した回路図であり、図４において、アクセス制御部３２は、同期式のセット端子を有するＤフリップフロップ５１、ＡＮＤ回路５２〜５４、ＯＲ回路５５及びインバータ５６，５７で構成されている。入力データＤＩ[32]は、インバータ５６を介してＡＮＤ回路５２の一方の入力端に入力されると共に、ＬＳＴＴＭ信号として出力される。
【００３１】
また、ＬＷＲ＃信号は、ＡＮＤ回路５３の一方の入力端に入力されると共にインバータ５７を介してＡＮＤ回路５４の一方の入力端に入力されている。一方、ＡＮＤ回路５２，５３の各他方の入力端には、外部からのリセット信号Ｒｓ＃がそれぞれ入力されている。なお、該リセット信号Ｒｓ＃は、パーソナルコンピュータ等のようなデータ転送制御装置１を備えたシステムに対して、パワーオンリセットやシステムリセット等が行われる際に、ＰＣＩバス１２を介して入力されるものであり、該リセット信号Ｒｓ＃の信号経路の図示は省略している。
【００３２】
ＡＮＤ回路５２の出力信号は、Ｄフリップフロップ５１の同期式のセット端子Ｓ＃に入力され、ＡＮＤ回路５３の出力信号は、ＯＲ回路５５の一方の入力端に入力され、ＯＲ回路５５の他方の入力端には、外部からのシステムクロックＣＬＫが入力されている。なお、該システムクロックＣＬＫは、パーソナルコンピュータ等のようなデータ転送制御装置１を備えたシステムで使用されるクロック信号であり、システムクロックＣＬＫの信号経路の図示は省略している。
【００３３】
ＯＲ回路５５の出力信号は、Ｄフリップフロップ５１のクロック信号入力端に入力されており、Ｄフリップフロップ５１のクロック信号として使用される。Ｄフリップフロップ５１の非反転出力端Ｑからの出力信号は、ＡＮＤ回路５４の他方の入力端に出力され、ＡＮＤ回路５４の出力信号がＦＳＴＴＭ信号をなす。Ｄフリップフロップ５１のＤ入力端は接地されていることから、Ｄフリップフロップ５１は、クロック信号入力端に入力されて信号のアップエッジでラッチする動作を行う。このような構成にすることにより、アクセス制御部３２は、入力データＤＩ[32]がローレベルのときにＬＷＲ＃信号がローレベルに立ち下がると、ハイレベルのＦＳＴＴＭ信号を１クロックの間出力し、入力データＤＩ[32]をＬＳＴＴＭ信号として出力する。
【００３４】
次に、ラッチ回路部３３は、１０ビットカウンタ３０から出力されるライトアドレスＡＤＩ[9:0]が入力され、イネーブル端子ＥＮに入力されているＦＳＴＴＭ信号がイネーブルになったとき、すなわちハイレベルの信号がイネーブル端子ＥＮに入力されたときに１０ビットカウンタ３０から入力されているライトアドレスＡＤＩ[9:0]をラッチする。このことは、ラッチ回路部３３が、パケットにおける最初のデータが書き込まれるメモリ部２１のアドレスデータをラッチすることを示している。
【００３５】
次に、第１比較部３４は、ラッチ回路部３３にラッチされているアドレスデータと、出力制御部２３から入力されるリードアドレスＡＤＯ[9:0]とを比較し、一致するとハイレベルの出力信号Ｃ１を、一致しなかった場合はローレベルの出力信号Ｃ１を出力する。すなわち、該出力信号Ｃ１がハイレベルのときは、リンク層４が受信用ＦＩＦＯ装置７に対して現在書き込み中であるパケットを受信用ＤＭＡ装置１０が読み出そうとしていることを示している。
【００３６】
第２比較部３５は、３３ビットの入力データＤＩ[32:0]における３２番目から０番目までの各ビットデータの内、７番目から４番目までの各ビットデータからなる入力データＤＩ[7:4]が入力されると共に、アクセス制御部３２からのＦＳＴＴＭ信号がイネーブル端子ＥＮに入力される。第２比較部３５は、入力された入力データＤＩ[7:4]が、あらかじめ設定されたデータと一致するか否かを比較し、ハイレベルのＦＳＴＴＭ信号が入力されると、該比較結果をラッチして出力する。
【００３７】
ここで、ＩＥＥＥ１３９４における受信データのフォーマットについて説明する。
図５は、リンク層４から入力されるパケットのフォーマットを示した概略図である。なお、図５では、リンク層４によって付加された、パケットの最終データであるか否かを示した１ビットデータである入力データＤＩ[32]は省略して示している。
【００３８】
図５で示すようにＩＥＥＥ１３９４の受信データ、すなわちリンク層４から入力されるパケットは、パケットのタイプやその他アドレス情報等が入ったヘッダ部６１と、データ情報が入ったデータ部６２と、受信した時間や送信した相手に送ったアクノリッジ情報等が入ったトレイラー（Trailer）部６３とで構成されている。ヘッダ部６１、データ部６２及びトレイラー部６３は、３２ビット幅の１ワードデータ（以下、クワドレットと呼ぶ）、すなわち入力データＤＩ[31:0]で構成されている。
【００３９】
ヘッダ部６１は、最大４クワドレットで構成され、ヘッダ部６１の最初の１クワドレットにおける７番目〜４番目までの各ビットデータに「ｔｃｏｄｅ」と呼ばれるパケットのタイプ情報（以下、これをｔｃｏｄｅ情報と呼ぶ）が格納されている。また、データ部６２は、０〜１０２４クワドレットで構成され、パケットのタイプによっては該データ部６２がないパケットもある。受信データの最終クワドレットはトレイラー部６３と呼ばれ、該トレイラー部６３における２０番目〜１６番目までの各ビットデータに「ｅｖｅｎｔ ｃｏｄｅ」と呼ばれる、パケットを送信してきた相手に対して送ったアクノリッジ情報が格納されている。
【００４０】
該アクノリッジ情報には、様々な情報があり、例えば、データ転送制御装置１がデータを完全に受信できたことを示す「ａｃｋ＿ｃｏｍｐｌｅｔｅ」、データ転送制御装置１がデータを受信できたが後でレスポンスパケットを送信するということを示す「ａｃｋ＿ｐｅｎｄｉｎｇ」がある。更に、アクノリッジ情報には、データ転送制御装置１が何らかの理由で現在データを受信することができないことを示す「ａｃｋ＿ｂｕｓｙ」及びデータ転送制御装置１が受け取ったデータに不具合があったことを示す「ａｃｋ＿ｄａｔａ＿ｅｒｒｏｒ」等がある。
【００４１】
このようなことから、第２比較部３５は、パケットのヘッダ部６１における１クワドレット目のデータがリンク層４から入力され、ハイレベルのＦＳＴＴＭ信号が入力されると、比較した結果をラッチして出力信号Ｃ２として出力する。すなわち、第２比較部３５は、ｔｃｏｄｅ情報をなす入力データＤＩ[7:4]をあらかじめ設定されたデータと比較して一致するか否かを調べ、ＦＳＴＴＭ信号がハイレベルのときに該比較結果をラッチして出力信号Ｃ２として出力する。
【００４２】
例えば、第２比較部３５は、入力データＤＩ[7:4]があらかじめ設定されたデータと一致すると、ハイレベルの出力信号Ｃ２を出力する。また、第２比較部３５は、アクセス制御部３２からのＬＳＴＴＭ信号がハイレベルになってアクティブになると、インバータ４１を介してリセット端子Ｒ＃がローレベルになり、入力されているクロック信号ＣＬＫに同期してリセットがかかり、出力信号Ｃ２はローレベルになる。
【００４３】
ここで、ｔｃｏｄｅ情報を用いて、あらかじめ設定されたパケットのタイプだけをエラー時に破棄するようにした必要性について説明する。
ＩＥＥＥ１３９４には、大きく分けてアシンクロナス及びアイソクロナスという２種類のパケットが存在する。アシンクロナスパケットには大きく分類すると、アシンクロナス・リクエスト（Asynchronous Request）パケットとアシンクロナス・レスポンス（Asynchronous Response）パケットが存在する。通常、図１に示すようなデータ転送制御装置１は、ＩＥＥＥ１３９４バス２からきたアシンクロナス・リクエストパケットを受信して、該パケットをそのままＰＣＩバス１２を介してメインメモリ（図示せず）にデータ転送する。
【００４４】
更に、ＣＰＵ（図示せず）が所定のソフトウェアを実行することによって、データ転送された該パケットが処理されてアシンクロナス・レスポンスパケットが生成され、データ転送制御装置１は、該パケットをメインメモリからＰＣＩバス１２を介してＩＥＥＥ１３９４バス２に送信する。また、アシンクロナスパケットには、フィジカル・リクエスト（Physical Request）とフィジカル・レスポンス（Physical Response）という特殊なパケットが存在する。これは、アシンクロナスパケットのフォーマットであるが、その中に含まれる転送相手先のアドレス情報がＩＥＥＥ１３９４で規定されている「ｔｃｏｄｅ」の種類でかつフィジカル（Physical）領域と呼ばれるアドレスであるパケットをフィジカル・リクエストパケットと呼ぶ。
【００４５】
上記フィジカル・リクエストパケットに対して、図１で示したデータ転送制御装置１は、ソフトウェアが介在することなくデータ転送制御装置１のみで処理し、フィジカル・レスポンスパケットを自動生成し、ＩＥＥＥ１３９４バス２にデータ送信を行う。これは、ソフトウェアの介在をなくしてリクエストパケットの受信からレスポンスパケットの送信までの時間を短縮できるメリットがある。しかし、すべてのパケットのタイプに対してエラー時にデータを破棄するようにした場合、すべてのパケット受信を一時的に停止する、すなわち、フィジカル・リクエストパケット受信に対する処理を遅らせる可能性が高くなる。
【００４６】
また、フィジカル・リクエストパケット受信は、データ転送制御装置１だけでフィジカル・レスポンスパケットを生成するため、基本的にはエラーのアクノリッジ情報が発生することはない。そこで、「ｔｃｏｄｅ」のようなデータのパケットタイプ情報を用いてデータ破棄できる対象に選択することができれば、フィジカル・リクエストパケットに対する処理の遅延をなくすことができる。また、本実施の形態では、ｔｃｏｄｅ情報のみを用いているが、フィジカル（Physical）領域を判断する回路も加えることができる。しかし、フィジカル領域を判断するアドレスは、４８ビットデータのデコード等が必要になり、回路が複雑になることから本実施の形態ではｔｃｏｄｅ情報のみを使用するようにした。
【００４７】
次に、第３比較部３６は、３３ビットの入力データＤＩ[32:0]における３２番目から０番目までの各ビットデータの内、２０番目から１６番目までのデータである入力データＤＩ[20:16]が入力されると共に、アクセス制御部３２からのＬＳＴＴＭ信号が入力される。第３比較部３６は、入力されているＬＳＴＴＭ信号がハイレベルのときに、該入力データＤＩ[20:16]が、エラーとしてあらかじめ規定し設定されたアクノリッジ情報と一致するか否かを比較し、一致した場合、ＬＳＴＴＭ信号がハイレベルの間、ハイレベルの出力信号Ｃ３を出力する。
【００４８】
第１比較部３１からの出力信号Ｃ１は、ＡＮＤ回路３７の一方の入力端に入力され、第２比較部３２からの出力信号Ｃ２は、ＡＮＤ回路３７の他方の入力端及びＡＮＤ回路３８の一方の入力端にそれぞれ入力される。また、第３比較部３６からの出力信号Ｃ３は、ＡＮＤ回路３８の他方の入力端に入力される。ＡＮＤ回路３７の出力信号は、ＯＲ回路３９の他方の入力端に入力され、ＯＲ回路３９の出力信号が、ＥＭＰＴＹ信号として出力制御部２３に出力される。
【００４９】
一方、ＡＮＤ回路３８の出力信号は、ＲＥＷ信号として１０ビットカウンタ３０のロード端子ＬＤに入力される。該ＲＥＷ信号がアクティブになる、すなわちハイレベルになると、データを破棄することができる対象のパケットがエラーであることを示しており、１０ビットカウンタ３０は、データ入力端子ＤＩＮに入力されているラッチ回路部３３からのアドレスデータをロードすることによって、エラーが発生したパケットの最初のアドレスにカウンタ値を戻す。
【００５０】
次に、図６は、図２で示した出力制御部２３の構成例を示した図である。
図６において、出力制御部２３は、１０ビットカウンタ７０とＮＯＲ回路７１とで構成されている。入力制御部２２からのＥＭＰＴＹ信号が、ＮＯＲ回路７１の一方の入力端に入力されると共に、リードデータ許可信号ＦＲＡＣＫ＃として受信用ＤＭＡ装置１０に出力される。
【００５１】
また、ＮＯＲ回路７１の他方の入力端には、受信用ＤＭＡ装置１０からのリードデータ要求信号ＦＲＲＥＱ＃が入力され、ＮＯＲ回路７１の出力信号は、１０ビットカウンタ７０のイネーブル端子ＥＮに入力され、該イネーブル端子ＥＮにハイレベルの信号が入力されると１０ビットカウンタ７０はイネーブルとなり、カウントを開始する。１０ビットカウンタ７０の出力データは、リードアドレスＡＤＯ[9:0]としてメモリ部２１及び入力制御部２２にそれぞれ出力され、リセット端子Ｒ＃にロー（Ｌｏｗ）レベルのリセット信号Ｒｓ＃が入力されるリセット時には、カウント値が“０００ｈ”にリセットされる。
【００５２】
このような構成において、図７は、図２及び図３における各信号のタイミング例を示したタイミングチャートであり、図７を用いて図３で示した入力制御部２２の各部の動作について説明する。
図７において、タイミングＴ１〜Ｔ４の間に３２ビットの入力データＡ０〜Ａ３からなるパケットＡが、タイミングＴ７〜Ｔ１１の間に３２ビットの入力データＢ０〜Ｂ４からなるパケットＢが、タイミングＴ１４〜Ｔ１８の間に３２ビットの入力データＣ０〜Ｃ４からなるパケットＣが、更に、タイミングＴ２１〜Ｔ２３の間に３２ビットの入力データＤ０〜Ｄ２が入力されるパケットＤがリンク層４から入力される場合を示している。また、図７では、パケットＢ及びＣがデータ破棄できるパケット対象であるものとし、パケットＢでエラーが発生して破棄される場合を例にして示している。
【００５３】
更に図７では、受信用ＤＭＡ装置１０によるデータ読み出しはタイミングＴ５から始まり、受信用ＤＭＡ装置１０は、パケットＡをタイミングＴ８まで読み出した後、次のパケットＢをタイミングＴ１０から読み出そうとするが、パケットＢがデータ破棄できる対象パケットであると共にアクノリッジ情報がエラーであったことから、メモリ部２１に格納されたパケットＢのすべてのデータが破棄される。また、パケットＣがデータ破棄できる対象パケットであるため、受信用ＤＭＡ装置１０がタイミングＴ１９までデータの読み出しが止められているタイミングを例にして示している。
【００５４】
まず、タイミングＴ１〜Ｔ４の間にパケットＡが受信用ＦＩＦＯ装置７のメモリ部２１に書き込まれるため、ＦＳＴＴＭ信号はタイミングＴ１に、ＬＳＴＴＭ信号はタイミングＴ４にハイレベルに立ち上がる。また、１０ビットカウンタ３０によって、ライトアドレスＡＤＩ[9:0]は、タイミングＴ１で“０”、タイミングＴ２で“１”、順次タイミングＴ５で“４”になるまでカウントアップされる。また、ラッチ回路部３３は、タイミングＴ２で、パケットＡのスタートアドレス“０”を示すライトアドレスＡＤＩ[9:0]をラッチし、次のパケットの最初のデータが書き込まれるまで保持してアドレスデータＰＳＴＡＤＤ[9:0]として出力する。なお、アドレスデータＰＳＴＡＤＤ[9:0]の[9:0]は、９番目から０番目までの各ビットデータからなる１０ビットデータであることを示している。
【００５５】
このため、出力信号Ｃ１は、タイミングＴ２でハイレベルになり、タイミングＴ６でローレベルになる。また、パケットＡはデータ破棄できる対象パケットではないため、出力信号Ｃ２は、タイミングＴ２からローレベルになる。そして、デコーダ３１から出力されるＧＥＭＰＴＹ信号は、タイミングＴ２以降、メモリ部２１がエンプティ状態でなくなるためローレベルになる。出力信号Ｃ１の信号レベルにかかわらず、出力信号Ｃ２がローレベルであるため、デコーダ３１から出力されたＧＥＭＰＴＹ信号がＯＲ回路３９からＥＭＰＴＹ信号として出力され、受信用ＤＭＡ装置１０へのリード許可信号ＦＲＡＣＫ＃は、タイミングＴ２からローレベルになる。
【００５６】
更に、タイミングＴ５から受信用ＤＭＡ装置１０からのリード要求信号ＦＲＲＥＱ＃がローレベルになり、１０ビットカウンタ３０によって、リードアドレスＡＤＯ[9:0]が、タイミングＴ５で“０”、タイミングＴ６で“１”、順次タイミングＴ９で“４”になるまでカウントアップされる。
【００５７】
次に、入力制御部２２は、リンク層４からパケットＢをタイミングＴ７〜Ｔ１１の間でメモリ部２１に書き込もうとするが、パケットＢはデータ破棄できる対象パケットであるため、出力信号Ｃ２は、タイミングＴ８〜Ｔ１１でハイレベルになる。また、ラッチ回路部３３は、タイミングＴ８で、パケットＢの最初のデータアドレス“４”を示すライトアドレスＡＤＩ[9:0]をロードしてラッチし、次のパケットの最初のデータが書き込まれるまで保持してアドレスデータＰＳＴＡＤＤ[9:0]として出力する。
【００５８】
更に、タイミングＴ９で受信用ＤＭＡ装置１０によるメモリ部２１からのデータ読み出しのため、リードアドレスＡＤＯ[9:0]がラッチ回路部３３にラッチされているアドレスデータＰＳＴＡＤＤ[9:0]と同じアドレス“４”を示し、出力信号Ｃ１がハイレベルになる。したがって、タイミングＴ９から出力信号Ｃ１及びＣ２が共にハイレベルになるため、ＯＲ回路３９から出力されるＥＭＰＴＹ信号は、タイミングＴ９からハイレベルとなり、これに伴って、受信用ＤＭＡ装置１０へのリード許可信号ＦＲＡＣＫ＃もハイレベルになりメモリ部２１からのデータ読み出しが許可されない。
【００５９】
また、パケットＢの最終データ“Ｂ４”がメモリ部２１に書き込まれ、そのアクノリッジ情報がエラーであったため、出力信号Ｃ３がタイミングＴ１１でハイレベルとなり、かつ出力信号Ｃ２もハイレベルであるため、ＲＥＷ信号はタイミングＴ１１でハイレベルとなる。したがって、１０ビットカウンタ３０には、ラッチ回路部３３でラッチされているアドレスデータＰＳＴＡＤＤ[9:0]のデータがタイミングＴ１１でロードされるため、タイミングＴ１２でライトアドレスＡＤＩ[9:0]は、１０ビットカウンタ３０に読み込まれたアドレスデータＰＳＴＡＤＤ[9:0]が示すアドレス“４”を示したデータに戻る。
【００６０】
すなわち、次のパケットのメモリ部２１への書き込みはアドレス“４”から行われるため、メモリ部２１に書き込まれたエラーパケットＢは上書きされて消去されたことになる。また、ライトアドレスＡＤＩ[9:0]がアドレス“４”を示すデータに戻ったため、リードアドレスＡＤＯ[9:0]が示すアドレス“４”と一致することから、メモリ部２１がＥＭＰＴＹ状態となりデコーダ３１から出力されるＧＥＭＰＴＹ信号が、タイミングＴ１２からハイレベルになる。
【００６１】
次に、入力制御部２２は、パケットＣをタイミングＴ１４〜Ｔ１８の間でメモリ部２１に書き込もうとするが、パケットＢと同様にパケットＣもデータ破棄できる対象パケットであるため、パケットＢと同様の動作を行うが、パケットＢの場合と異なるのは、パケットＣにはエラーが発生していないため、タイミングＴ１８でＲＥＷ信号がハイレベルにならずパケットＣは上書きされて消去されることはない。また、パケットＣがメモリ部２１に書き込まれたため、デコーダ３１から出力されるＧＥＭＰＴＹ信号はタイミングＴ１５からローレベルになるが、出力信号Ｃ２がハイレベルになるためＥＭＰＴＹ信号はハイレベルとなり、受信用ＤＭＡ装置１０へのデータ読み出しは停止されたままである。
【００６２】
しかし、タイミングＴ１９で出力信号Ｃ２がローレベルになるため、ＯＲ回路３９から出力されるＥＭＰＴＹ信号もローレベルになり、受信用ＤＭＡ装置１０へのリード許可信号ＦＲＡＣＫ＃もローレベルとなる。このことから、受信用ＤＭＡ装置１０によるメモリ部２１からのデータ読み出しが開始され、エラーが発生せずデータ消去されなかったパケットＣがメモリ部２１から読み出される。
【００６３】
このように、本実施の形態におけるＦＩＦＯ装置では、入力制御部２２は、第３比較部３６で、リンク層４からメモリ部２１に書き込まれた受信パケットにおけるトレイラー部のアクノリッジ情報から、該受信したパケットがエラーパケットか否かを調べ、エラーパケットであった場合は、出力制御部２３にハイレベルのＥＭＰＴＹ信号を出力すると共に該受信パケットを破棄することによって、受信用ＤＭＡ装置１０にエラーパケットが転送されないようにした。
【００６４】
また、入力制御部２２は、第１比較部３４で、出力制御部２３からのリードアドレスＡＤＯ[9:0]とラッチ回路部３３にラッチされているパケットの最初のデータが書き込まれたライトアドレスＡＤＩ[9:0]とを比較して、現在受信中のパケット、すなわちメモリ部２１へ書き込み中のパケットを受信用ＤＭＡ装置１０が読み出そうとしているか否かの検出を行うようにした。現在受信中のパケット、すなわちメモリ部２１へ書き込み中のパケットを受信用ＤＭＡ装置１０が読み出そうとしたときには、第１比較部３４は、パケットの最終データであるトレイラー部６３をメモリ部２１に書き込まれるまでは、現在受信中のパケットを破棄する可能性があることから、出力制御部２３にハイレベルのＥＭＰＴＹ信号を出力するようにし、受信用ＤＭＡ装置１０に対してメモリ部２１からのデータ読み出しの一時停止ができるようにした。
【００６５】
これらのことから、不必要なＰＣＩバスへのアクセスをなくすことができ、データ転送制御装置を使用したシステム全体の処理能力の増加を図ることができる。また、受信用ＤＭＡ装置が無駄なデータ処理のために動作しないことから消費電力の削減を図ることができる。
【００６６】
更に、第２比較部３５で、リンク層４からメモリ部２１に書き込まれたパケットにおけるヘッダ部６１の１クワドレット目に記録されたｔｃｏｄｅ情報から、受信したパケットが所定のタイプのパケットか否かを調べ、所定のタイプのパケットである場合に対してのみ、所定のエラー時にパケットを破棄できるようにした。
【００６７】
例えば、データ部を有するパケットは、ＰＣＩバスの占有率も高いが、ヘッダ部のみのパケット等は最大４クワドレットしかないのでエラーパケットであってもほとんどＰＣＩバスを占有しない。しかし、すべてのパケットタイプを、所定のエラー時にデータ破棄できるパケットの対象にすると、一時停止して受信用ＤＭＡ装置の処理が遅れるような場合もある。このような処理の遅れを好まないパケットが存在する時等に、ｔｃｏｄｅ情報によって対象を選択できるようにすることができる。例えば、ＰＣＩバスの占有率の高いデータ部を持ったパケットのみを一時停止するようにすることができる。
【００６８】
なお、上記説明において、信号名又は符号に＃が付加された信号は、ローレベルのときにアクティブになることを示し、信号名又は符号に＃が付加されていない信号は、ハイレベルのときにアクティブになることを示している。端子名又は符号に＃が付加された端子は、ローレベルの信号が入力されるとアクティブになることを示し、端子名又は符号に＃が付加されていない端子は、ハイレベルの信号が入力されるとアクティブになることを示している。
【００６９】
【発明の効果】
上記の説明から明らかなように、本発明のＦＩＦＯ装置によれば、メモリ部に入力されたパケットの所定の情報から、該パケットの転送実施判定を行い、転送を禁止する判定を行うと、メモリ部からのデータ読み出しを禁止すると共に、新たに入力されるパケットを上書きさせて、メモリ部に格納しているパケットを消去するようにした。このことから、必要のないパケットの転送を防止することができ、例えば、入力されたパケットをＰＣＩバスに転送するデータ転送制御装置に使用した場合、不必要なＰＣＩバスへのアクセスをなくすことができ、データ転送制御装置を使用したシステム全体の処理能力の増加を図ることができる。
【００７０】
具体的には、メモリ部に入力されたパケットのトレイラー部におけるアクノリッジ情報から該パケットの転送実施判定を行うようにした。このことから、パケットの転送実施判定を容易に行うことができる。
【００７１】
また、メモリ部に入力されているパケットの上記アクノリッジ情報が入力されるまでは、メモリ部からのデータ読み出しを禁止するようにした。このことから、データ読み出しを禁止したパケットが、誤って読み出されることを確実に防止することができる。
【００７２】
更に、メモリ部に入力されたパケットが所定のタイプのパケットである場合のみ、上記転送実施判定結果に応じて、メモリ部からのデータ読み出しを禁止すると共に、新たに入力されるパケットを上書きさせて、メモリ部に格納されているパケットを消去するようにした。このことから、使用状況に応じて、データ転送を行わずデータ破棄するパケットのタイプを選択することができる。
【００７３】
具体的には、メモリ部に入力されたパケットのヘッダ部におけるパケットのタイプ情報から、該パケットが所定のタイプのパケットであるか否かの判定を行うようにした。このことから、このことから、メモリ部に入力されたパケットのパケットタイプを容易に判定することができる。
【図面の簡単な説明】
【図１】  本発明の実施の形態におけるＦＩＦＯ装置を使用するデータ転送制御装置の例を示した概略のブロック図である。
【図２】  本発明の実施の形態におけるＦＩＦＯ装置の構成例を示した概略のブロック図である。
【図３】  図２で示した入力制御部２２の構成例を示したブロック図である。
【図４】  図３におけるアクセス制御部３２の内部構成の例を示した回路図である。
【図５】  リンク層４から入力されるパケットのフォーマットを示した概略図である。
【図６】  図２で示した出力制御部２３の構成例を示した図である。
【図７】  図２及び図３における各信号のタイミング例を示したタイミングチャートである。
【図８】  従来の受信用ＦＩＦＯ装置の構成例を示した図である。
【図９】  図８で示した入力制御部１０２の構成例を示したブロック図である。
【符号の説明】
１  データ転送制御装置
２  ＩＥＥＥ１３９４バス
４  リンク層
７  受信用ＦＩＦＯ装置
１０  受信用ＤＭＡ装置
１１  ＰＣＩ制御部
１２  ＰＣＩバス
２１  メモリ部
２２  入力制御部
２３  出力制御部
２４  データ入力バス
２５  データ出力バス
３０  １０ビットカウンタ
３１  デコーダ
３２  アクセス制御部
３３  ラッチ制御部
３４  第１比較部
３５  第２比較部
３６  第３比較部
６１  ヘッダ部
６２  データ部
６３  トレイラー部
【図１】
0004217386.tif 000002
【図２】
0004217386.tif 000003
【図３】
0004217386.tif 000004
【図４】
0004217386.tif 000005
【図５】
0004217386.tif 000006
【図６】
0004217386.tif 000007
【図７】
0004217386.tif 000008
【図８】
0004217386.tif 000009
【図９】
0004217386.tif 000010