(57)【特許請求の範囲】
【請求項１】
送受信データを一時記憶するバッファと、
非分割状態の前記バッファへのアドレスを設定する非分割用アドレス設定部と、
前記バッファが論理的に分割されたサブバッファ毎に設けられ、それぞれの前記サブバッファへのアドレスを設定する複数のサブバッファ用アドレス設定部と、
前記サブバッファのサイズが設定されるサイズ設定部と、
前記サイズ設定部に設定された前記サブバッファのサイズに応じて、前記サブバッファ用アドレス設定部に前記サブバッファ内のアドレス領域を設定し、前記バッファが非分割状態のとき前記非分割用アドレス設定部のアドレスを有効化し、前記バッファが分割状態のとき前記サブバッファ用アドレス設定部のアドレスを有効化するアドレス設定制御部とを有する集積回路装置であって、
前記集積回路装置の外部回路と前記バッファとの間でデータを送受信する場合は前記バッファは非分割状態に設定され、前記バッファと前記集積回路装置の内部回路との間でデータを送受信する場合は前記バッファは分割状態に設定され、
前記非分割状態の前記バッファは、前記非分割用アドレス設定部のアドレスに応じて、前記送受信データの書き込み又は読み出しが行われ、前記サブバッファは、対応する前記サブバッファ用アドレス設定部からのアドレスに応じて、前記送受信データの読み出し又は書き込みが行われることを特徴とする集積回路装置。
【請求項２】
送受信データを一時記憶するバッファと、
非分割状態の前記バッファへのアドレスを設定する非分割用アドレス設定部と、
前記バッファが論理的に分割されたサブバッファ毎に設けられ、それぞれの前記サブバッファへのアドレスを設定する複数のサブバッファ用アドレス設定部と、
前記サブバッファのサイズが設定されるサイズ設定部と、
前記サイズ設定部に設定された前記サブバッファのサイズに応じて、前記サブバッファ用アドレス設定部に前記サブバッファ内のアドレス領域を設定し、前記バッファが非分割状態のとき前記非分割用アドレス設定部のアドレスを有効化し、前記バッファが分割状態のとき前記サブバッファ用アドレス設定部のアドレスを有効化するアドレス設定制御部とを有し、
前記非分割状態の前記バッファは、前記非分割用アドレス設定部のアドレスに応じて、前記送受信データの書き込み又は読み出しが行われ、前記サブバッファは、対応する前記サブバッファ用アドレス設定部からのアドレスに応じて、前記送受信データの読み出し又は書き込みが行われ、
前記アドレス設定制御部は、前記非分割のバッファ及び前記サブバッファに対するデータの書き込み又は読み出し状態を示すエンプティフラグ及びフルフラグを有し、
前記エンプティフラグ又はフルフラグに応じて前記バッファの非分割状態と分割状態の切替えを行うことを特徴とする集積回路装置。
【請求項３】
送受信データを一時記憶するバッファと、
非分割状態の前記バッファへのアドレスを設定する非分割用アドレス設定部と、
前記バッファが論理的に分割されたサブバッファ毎に設けられ、それぞれの前記サブバッファへのアドレスを設定する複数のサブバッファ用アドレス設定部と、
前記サブバッファのサイズが設定されるサイズ設定部と、
前記サイズ設定部に設定された前記サブバッファのサイズに応じて、前記サブバッファ用アドレス設定部に前記サブバッファ内のアドレス領域を設定し、前記バッファが非分割状態のとき前記非分割用アドレス設定部のアドレスを有効化し、前記バッファが分割状態のとき前記サブバッファ用アドレス設定部のアドレスを有効化するアドレス設定制御部とを有し、
前記非分割状態の前記バッファは、前記非分割用アドレス設定部のアドレスに応じて、前記送受信データの書き込み又は読み出しが行われ、前記サブバッファは、対応する前記サブバッファ用アドレス設定部からのアドレスに応じて、前記送受信データの読み出し又は書き込みが行われ、
前記サブバッファ用アドレス設定部は、複数のデータフォーマットのうちの最大分割数に相当する個数備えられ、
第１のデータフォーマットでは、全ての前記サブバッファ用アドレス設定部に前記サブバッファのアドレスが設定され、
第２のデータフォーマットでは、前記最大分割数より少ない前記サブバッファ用アドレス設定部に前記サブバッファのアドレスが設定されることを特徴とする集積回路装置。
【請求項４】
請求項１又は３において、
前記アドレス設定制御部は、前記バッファの非分割状態と分割状態の切替えを行うことを特徴とする集積回路装置。
【請求項５】
請求項４において、
前記アドレス設定制御部は、前記非分割のバッファ及び前記サブバッファに対するデータの書き込み又は読み出し状態を示すエンプティフラグ及びフルフラグを有し、
前記エンプティフラグ又はフルフラグに応じて前記バッファの非分割状態と分割状態の切替えを行うことを特徴とする集積回路装置。
【請求項６】
請求項４において、
前記アドレス設定制御部は、前記バッファの非分割状態又は分割状態が指定されるバッファ分割フラグを有し、
前記アドレス設定制御部は、該バッファ分割フラグに応じて前記バッファの非分割状態と分割状態の切替えを行うことを特徴とする集積回路装置。
【請求項７】
請求項１乃至３のいずれかにおいて、
複数のデータフォーマットを有する通信プロトコルプログラムを格納するメモリを有し、
前記通信プロトコルプログラムによって、前記サイズ設定部にそれぞれの前記データフォーマットに応じて前記サブバッファのサイズが設定されることを特徴とする集積回路装置。
【請求項８】
請求項１又は２において、
前記サブバッファ用アドレス設定部は、複数のデータフォーマットのうちの最大分割数に相当する個数備えられ、
第１のデータフォーマットでは、全ての前記サブバッファ用アドレス設定部に前記サブバッファのアドレスが設定され、
第２のデータフォーマットでは、前記最大分割数より少ない前記サブバッファ用アドレス設定部に前記サブバッファのアドレスが設定されることを特徴とする集積回路装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、通信機能をもつ集積回路装置、特にデータの送受信時において複数のデータフォーマットに柔軟に対応可能なバッファメモリを有する集積回路装置に関する。
【０００２】
【従来の技術】
マイクロコンピュータ等の集積回路装置とホストコンピュータや外部周辺装置との間でデータ通信を行う場合、そのデータ通信は、データのフォーマットや通信速度等を定めた通信プロトコルに従って行われる。
【０００３】
近年、データ通信において、通信プロトコルは複雑化し通信速度は高速化の傾向にあるが、通信データを受信又は送信する側である集積回路装置の処理速度は、通信速度に追いついていないのが現状である。このため、集積回路装置内にＦＩＦＯ等のバッファを設け、そのバッファに送受信するデータを一時記憶させ、バッファに記憶させたデータに対して集積回路装置の処理速度に従ったデータ処理を行い、通信速度と処理速度の違いを解決している。
【０００４】
図９は、従来のデータ通信における動作説明図（Ｉ）である。図９（１）に示すように、ＣＰＵ１８０、ＲＡＭ１８１、バッファ１８２等を有する集積回路装置１００が、ホストコンピュータ２０１と通信回線２０２を介してデータ通信を行う場合について説明する。
【０００５】
集積回路装置１００がホストコンピュータ２０１からのデータを受信する場合、そのデータのフォーマットが、図９（２）に示すように、ａバイトのデータＡとｂバイトのデータＢとｃバイトのデータＣのデータ列１０１であるとする。この場合、集積回路装置１００内のバッファ１８２が、図９（３）に示すように（ａ＋ｂ＋ｃ）バイトの記憶容量を有する場合は、データ列１０１を一括して一時記憶することができる。
【０００６】
この場合、バッファ１８２に一括して一時記憶されたデータ列１０１は、集積回路装置１００内のＲＡＭ１８１に転送され、通信プロトコルで定められたバイト数毎にソフトウェアで解釈され処理される。
【０００７】
図１０は、複数のバッファを用いた従来のデータ通信における動作説明図（ＩＩ）である。この場合は、集積回路装置１００内に、通信プロトコルで定められた各バイト数毎の記憶容量を有する複数のバッファ１８５、１８６、１８７と、受信データのバイト数をカウントして適切なバッファにデータを分配するデータ分配回路１８９とが設けられる。そして、データ分配回路１８９により、通信プロトコルで定められたバイト数毎に受信データの書き込み先のバッファを変更する。このようにすれば、それぞれのバッファ１８５、１８６、１８７に一時記憶した受信データを独立に処理できるので、データの処理効率を向上させることができる。
【０００８】
次に、集積回路装置１００からホストコンピュータ２０１にデータを送信する場合について説明する。その際、図９のように１つのバッファ１８２を使用する場合は、通信プロトコルで定められたフォーマットに従いＲＡＭ１８１に送信データを順に設定し、そのデータをバッファ１８２に転送してから送信を行う。
【０００９】
一方、図１０のように複数のバッファを使用する場合は、通信プロトコルで定められたファーマットで決まる数、サイズのバッファ１８５、１８６、１８７に送信データを書き込み、書き込みが終了した時点でバッファ１８５、１８６、１８７をフォーマットで決められた順に読み出して送信を行う。
【００１０】
【発明が解決しようとする課題】
図９のように集積回路装置内に１つのバッファを設ける場合、データ受信の場合は、１つのバッファに一時記憶した受信データをＲＡＭ等のメモリに転送し、通信プロトコルで定められたバイト数毎にその受信データをソフトウェアで解釈していた。また、データ送信の場合は、ＲＡＭ等のメモリに送信データを順に設定し、そのデータをバッファに転送して送信を行っていた。
【００１１】
しかしながら、これらの従来の方法は通信プロトコルで定められたフォーマットが固定されている場合は有効であるが、送受信するフォーマットが複数種類存在する場合に、フォーマット毎にバッファ内の書き込み先及び読み出し先を変更することが困難になる。また、ハードウェアの変更が困難な場合はソフトウェアによって変更するしかなく、ソフトウェアの負担が大きくなり、システム処理の効率も下がるといった問題が生じていた。
【００１２】
一方、図１０のように集積回路装置内に複数のバッファを設ける場合は、通信プロトコルで定められたフォーマットが複数の場合に、その複数のファーマットに対して更に複数のバッファが必要になり、バッファの数が増大して集積回路装置の回路規模が大きくなってしまう。
【００１３】
そこで、本発明は、通信プロトコルで定められたフォーマットが複数の場合でも、ソフトウェアへの負担を最小限とし、比較的簡単なハードウェアの切り替えで、複数のフォーマットに対応した処理や設定ができる集積回路装置を提供することを目的とする。
【００１４】
【課題を解決するための手段】
上記の目的は、送受信データを一時記憶するバッファと、非分割状態の前記バッファへのアドレスを設定する非分割用アドレス設定部と、前記バッファが論理的に分割されたサブバッファ毎に設けられ、それぞれの前記サブバッファへのアドレスを設定する複数のサブバッファ用アドレス設定部と、前記サブバッファのサイズが設定されるサイズ設定部と、前記サイズ設定部に設定された前記サブバッファのサイズに応じて、前記サブバッファ用アドレス設定部に前記サブバッファ内のアドレス領域を設定し、前記バッファが非分割状態のとき前記非分割用アドレス設定部のアドレスを有効化し、前記バッファが分割状態のとき前記サブバッファ用アドレス設定部のアドレスを有効化するアドレス設定制御部とを有し、非分割状態の前記バッファは、前記非分割用アドレス設定部のアドレスに応じて、前記送受信データの書き込み又は読み出しが行われ、前記サブバッファは、対応する前記サブバッファ用アドレス設定部からのアドレスに応じて、前記送受信データの読み出し又は書き込みが行われることを特徴とする集積回路装置を提供することにより達成される。
【００１５】
本発明によれば、バッファは、データの送受信時に非分割状態となり、単一のバッファとして送受信が可能である。一方、バッファは、バッファに受信したデータの読み出し時、又は送信データのバッファへの書き込み時は分割状態となり、データフォーマットに対応したサイズのサブバッファとして、独立して読み出し又は書き込みが可能である。また、サブバッファのサイズをサイズ設定部に設定するだけで、任意のサイズに分割することができる。このため、異なるデータフォーマットに対応してバッファをサブバッファに分割して使用することができ、柔軟性のある送受信バッファの構成が可能になる。
【００１６】
また、本発明の集積回路装置は、複数のデータフォーマットを有する通信プロトコルプログラムを格納するメモリを有し、前記通信プロトコルプログラムによって、前記サイズ設定部にそれぞれの前記データフォーマットに応じて前記サブバッファのサイズが設定されることを特徴とする。
【００１７】
本発明によれば、通信プロトコルに従ったデータフォーマットが複数存在する場合でも、通信プロトコルプログラムによりサブバッファのサイズを設定すれば送受信バッファをデータフォーマットに合わせることができ、異なるデータフォーマットに対して柔軟に対応することができる。
【００１８】
【発明の実施の形態】
以下、本発明の実施の形態について図面に従って説明する。しかしながら、かかる実施の形態が本発明の技術的範囲を限定するものではない。
【００１９】
図１は、本発明の実施の形態の集積回路装置１００のブロック図である。集積回路装置１００は、ホストコンピュータ２０１に対し通信回線２０２を介してデータを送受信するバッファ１０２、バッファ１０２に対するデータの書き込み又は読み出し先のアドレスを設定するアドレス設定部１９２、アドレス設定部１９２に対するポインタ値とフラグを設定するアドレス設定制御部１９１、バッファ１０２に対するデータの書き込み読み出し部であるレジスタ１９３、バッファ１０２を通信フォーマットに従って分割する場合のバイト数を設定するサイズ設定部１０３、通信プロトコル制御プログラムを格納するＲＯＭ１９０、ＣＰＵ１８０等を有する。
【００２０】
バッファ１０２は複数の通信フォーマットに対応して分割可能である。そのために、アドレス設定部１９２には、バッファ１０２が分割された場合に、分割されたそれぞれのサブバッファに対するリードポインタＲＰ＃０〜ＲＰ＃２、及びライトポインタＷＰ＃０〜ＷＰ＃２が設けられる。なお、バッファ１０２が非分割の場合は、リードポインタＲＰＭ及びライトポインタＷＰＭが使用される。
【００２１】
アドレス設定制御部１９１は、アドレス設定部１９２のポインタ値を設定すると共に、バッファ１０２が分割された場合に、分割されたそれぞれのサブバッファに対するエンプティフラグＥＦ＃０〜ＥＦ＃２、及びフルフラグＦＦ＃０〜ＦＦ＃２を有する。バッファ１０２が非分割の場合は、エンプティフラグＥＦＭ及びフルフラグＦＦＭが使用される。また、バッファ分割フラグＢＤＦは、バッファ１０２の分割又は非分割を示すフラグである。
【００２２】
バッファ１０２に対するデータの書き込み及び読み出しを行うレジスタ１９３は、００Ｈ番地から０３Ｈ番地に割り当てられる。レジスタ１９３の００Ｈ番地から０２Ｈ番地は、分割されたそれぞれのサブバッファに対する書き込み読み出しレジスタとして利用され、０３Ｈ番地はバッファ１０２が非分割のときに利用される。
【００２３】
ＣＰＵ１８０とレジスタ１９３等は、データバス１９４及びアドレスバス１９５で接続される。また、ＣＰＵ１８０は、レジスタ１９３及びアドレス設定部１９２に、書き込みストローブ信号１９７又は読み出しストローブ信号１９６を出力し、レジスタ１９３内の送信データをバッファ１０２に書き込んだり、バッファ１０２から受信データをレジスタ１９３に読み出したり等の処理を実行する。
【００２４】
また、バッファ１０２から受信データを読み出したり、送信データを書き込む場合、アドレス設定制御部１９１は、アドレス設定部１９２にリードライトポインタ選択信号１３０、ポインタ値設定信号１３１、１３３を出力し、アドレス設定部１９２は、アドレス設定制御部１９１にエンプティフラグ設定信号１３２、フルフラグ設定信号１３４を出力する。
【００２５】
次に、集積回路装置１００がホストコンピュータ２０１からデータを受信する場合について、各部の動作を順を追って説明する。
【００２６】
（１）先ず、ＣＰＵ１８０は、ＲＯＭ１９０に格納されているフォーマットに従って、バッファ１０２を分割して得られるサブバッファのサイズを示すバイト数ａ、ｂ、ｃをサイズ設定部１０３に書き込む。そして、集積回路装置１００がデータを受信する場合、アドレス設定制御部１９１は、バッファ分割フラグＢＤＦを「０」に設定して、バッファ１０２を非分割に設定する。
【００２７】
（２）次に、アドレス設定制御部１９１は、アドレス設定部１９２の非分割用のリードポインタＲＰＭとライトポインタＷＰＭに初期値「０」を設定し、さらに所定の領域に深さ「ａ＋ｂ＋ｃ」を設定する。なお、深さ「ａ＋ｂ＋ｃ」は、受信データの全バイト数である。
【００２８】
（３）非分割用ライトポインタＷＰＭに初期値「０」が設定されると、そのポインタ値をアドレスにしてバッファ１０２はデータを受信して書き込み、書き込む毎に非分割用ライトポインタＷＰＭをインクリメントする。
【００２９】
（４）非分割用ライトポインタＷＰＭがインクリメントされ、非分割用リードポインタＲＰＭの値との差が深さ「ａ＋ｂ＋ｃ」に等しくなった時、即ち、
ＷＰＭ−ＲＰＭ＝ａ＋ｂ＋ｃ
の時に、アドレス設定制御部１９１内の非分割用フルフラグＦＦＭは「１」に設定される。この非分割用フルフラグＦＦＭの「１」への設定は、アドレス設定部１９２により上記演算式からフルフラグ設定信号１３４が生成されることで行われる。
【００３０】
（５）非分割用フルフラグＦＦＭが「１」になると、アドレス設定制御部１９１は、アドレス設定部１９２内の分割用リードポインタＲＰ＃０、ＲＰ＃１、ＲＰ＃２に初期値「０」、「ａ」、「ａ＋ｂ」を設定し、分割用ライトポインタＷＰ＃０、ＷＰ＃１、ＷＰ＃２にサブバッファのサイズ（深さ）ａ、ｂ、ｃに対応して「ａ」、「ａ＋ｂ」、「ａ＋ｂ＋ｃ」を設定し、有効化する。ここに、深さ「ａ」、「ｂ」、「ｃ」は、フォーマットに従った受信データのバイト数である。これによりバッファ１０２は論理的に分割される。また、非分割用フルフラグＦＦＭ＝「１」の非反転論理により、バッファ分割フラグＢＤＦは「１」に設定され、分割用リード、ライトポインタが有効化される。
【００３１】
（６）バッファ１０２が論理的に分割されると、ＣＰＵ１８０からレジスタ１９３への００Ｈ番地読み出し命令に応答して、分割用リードポインタＲＰ＃０のポインタ値をアドレスにしてバッファ１０２からデータが読み出され、レジスタ１９３の００Ｈ番地に書き込まれる。そして、分割用リードポインタＲＰ＃０がインクリメントされる。
【００３２】
（７）レジスタ１９３の００Ｈ番地に対するデータの読み出しが終了し、分割用リードポインタＲＰ＃０の値と分割用ライトポインタＷＰ＃０の値が等しくなった時、即ち、
ＲＰ＃０＝ＷＰ＃０＝ａ
の時に、アドレス設定制御部１９１内の分割用エンプティフラグＥＦ＃０が「１」に設定される。この分割用エンプティフラグＥＦ＃０の「１」の設定は、アドレス設定部１９２により上記演算式からエンプティフラグ設定信号１３２が生成されることで行われる。
【００３３】
（８）分割された次のサブバッファのデータを読み出すために、上記の（６）、（７）をレジスタ１９３の００１Ｈ番地について行う。
【００３４】
（９）分割された更に次のサブバッファのデータを読み出すために、上記の（６）、（７）をレジスタ１９３の００２Ｈ番地について行う。
【００３５】
（１０）アドレス設定制御部１９１は、分割用エンプティフラグＥＦ＃０、ＥＦ＃１、ＥＦ＃２が全て１になるのに応答して、それらのＮＡＮＤ論理によりバッファ分割フラグＢＤＦを「０」に設定し、バッファ１０２を非分割に切り替える。これにより、バッファ１０２は次のデータの受信が可能になる。
【００３６】
次に、集積回路装置１００がホストコンピュータ２０１にデータを送信する場合について説明する。データ送信はデータ受信と逆の動作となり、最初に分割状態のサブバッファに送信データを書き込み、書き込み終了後にサブバッファを非分割状態の単一のバッファに変換してデータを送信する。
【００３７】
即ち、サイズ設定部１０３は、送信データがサブバッファに書き込まれる前に、送信フォーマットに合わせて、あらかじめサブバッファのサイズを示すａ、ｂ、ｃに設定され、バッファ１０２は、サイズ設定部１０３の設定に従い、３つのサブバッファに論理的に分割される。
【００３８】
論理的に分割された３つのサブバッファに送信データが書き込まれると、アドレス設定制御部１９１はバッファ分割フラグＢＤＦを「０」にリセットし、３つのサブバッファを単一の非分割バッファ１０２に戻す。
【００３９】
非分割バッファ１０２から送信データが送信されるが、非分割バッファ１０２には、分割時にサイズ設定部１０３のサイズに従った送信データが格納されるので、非分割バッファ１０２は、通信プロトコルで定められた送信フォーマットのデータ列１０１を送信することができる。
【００４０】
図２〜図４は、本発明の実施の形態の集積回路装置１００におけるデータ受信時の説明図（Ｉ）〜（ＩＩＩ）である。図２〜図４により、データ受信におけるバッファ１０２等の状態を説明する。
【００４１】
図２（１）は、通信プロトコルで定められた受信フォーマットのデータ列１０１を示し、データ列１０１は、２バイトのデータＡ、４バイトのデータＢ、２バイトのデータＣの順に通信回線２０２を介して受信される。
【００４２】
図２（２）は、データ列１０１の先頭から２バイトのデータＡを受信した場合のバッファ１０２、アドレス設定部１９２、アドレス設定制御部１９１の状態を示す。この場合、アドレス設定部１９２内の非分割用ライトポインタＷＰＭは「２」となり、バッファ１０２に２バイトのデータＡが書き込まれたことを示す。アドレス設定部１９２内の非分割用リードポインタＲＰＭは、データがまだ読み出されていないため初期値「０」のままである。
【００４３】
一方、アドレス設定制御部１９１内の非分割用エンプティフラグＥＦＭは、バッファ１０２内にデータが存在してＷＰＭ≠ＲＰＭであるので「０」であり、非分割用フルフラグＦＦＭは、データがバッファ１０２に全て書き込まれておらずＷＰＭ−ＲＰＭ＝２＜８であるので「０」である。また、バッファ分割フラグＢＤＦは「０」でありバッファ１０２が１つの非分割バッファとして動作していることを示す。
【００４４】
図２（３）は、データ列１０１の受信が完了した場合のバッファ１０２等の状態を示す。この場合、アドレス設定部１９２内の非分割用ライトポインタＷＰＭは「８」となり、バッファ１０２にデータ列１０１の８バイトのデータＡ、Ｂ、Ｃが全て書き込まれたことを示す。即ち、ＷＰＭ−ＲＰＭ＝８になり、フルフラグ設定信号１３４によってアドレス設定制御部１９１内の非分割用フルフラグＦＦＭは「１」にセットされ、バッファ１０２が受信完了であることを示す。次に、非分割用フルフラグＦＦＭ＝「１」の非反転論理により、バッファ分割フラグＢＤＦが「１」に設定されバッファは分割状態になる。
【００４５】
図３（１）は、サイズ設定部１０３のデータに従って分割されたバッファ１０２等の状態を示す。この場合、サイズ設定部１０３は、受信するデータ列１０１の受信フォーマットに合わせて、あらかじめＰｔ０＝「２」、Ｐｔ１＝「４」、Ｐｔ２＝「２」に設定される。このサイズ設定部１０３への設定は、ＣＰＵ１８０がＲＯＭ１９０内のプログラムに従って行う。
【００４６】
このように、バッファ１０２がデータ列１０１の受信を完了し、バッファ分割フラグＢＤＦが「１」にセットされると、次の通り、バッファ１０２は、サイズ設定部１０３で設定したサイズのサブバッファ１２０、１２１、１２２に論理的に分割される。
【００４７】
即ち、アドレス設定部１９２の分割用リードポインタＲＰ＃０、ＲＰ＃１、ＲＰ＃２には、各サブバッファの先頭アドレスを示す初期値「０」、「２」、「６」が設定され、分割用ライトポインタＷＰ＃０、ＷＰ＃１、ＷＰ＃２には、各サブバッファのサイズに対応した最終アドレスを示す「２」、「６」、「８」が設定され、有効化される。
【００４８】
また、バッファ１０２にはデータが全て書き込まれていて、ＷＰ≠ＲＰになっているので、アドレス設定制御部１９１の分割用エンプティフラグＥＦ＃０、ＥＦ＃１、ＥＦ＃２は全て「０」に設定され、ＷＰ−ＲＰ＝サブバッファサイズになっているので、分割用フルフラグＦＦ＃０、ＦＦ＃１、ＦＦ＃２は全て「１」に設定される。これらのエンプティフラグ、フルフラグの設定は、リードポインタＲＰとライトポインタＷＰ及びサブバッファサイズが設定されると、アドレス設定部１９２が生成するフルフラグ設定信号１３４、エンプティフラグ設定信号１３２により自動的に行われる。
【００４９】
図３（２）は、バッファ１０２の読み出し時のタイムチャートを示す。集積回路装置１００内のＣＰＵ１８０は、読み出しストローブ信号ＲＤＳとアドレス信号ＡＤＤを出力し、各サブバッファ１２２、１２１、１２０から受信データの読み出しを行う。この場合、前述のように、サブバッファ１２２、１２１、１２０にはそれぞれレジスタ１９３の００Ｈ番地、０１Ｈ番地、０２Ｈ番地が割り当てられる。
【００５０】
図３（２）に示すように、時間ｔ１、ｔ２でサブバッファ１２２に格納された２バイトのデータＡ１、Ａ２が読み出され、時間ｔ３〜ｔ６でサブバッファ１２１に格納された４バイトのデータＢ１、Ｂ２、Ｂ３、Ｂ４が読み出される。また、時間ｔ７、ｔ８でサブバッファ１２０に格納された２バイトのデータＣ１、Ｃ２が読み出される。なお、図３（２）では、サブバッファ１２２、１２１、１２０へのアクセスは、その順番で連続して行う場合を示したが、アドレス信号ＡＤＤを変更することにより、各サブバッファへのアクセスを、１つずつ任意の順番に行うことも可能である。
【００５１】
図４（１）は、時間ｔ４におけるバッファ１０２等の状態を示す。時間ｔ４ではサブバッファ１２２のデータＡは全て読み出されており、アドレス設定部１９２内の分割用リードポインタＲＰ＃０は「２」になり、ＲＰ＃０＝ＷＰ＃０＝２になった結果、アドレス設定制御部１９１内の分割用エンプティフラグＥＦ＃０は「１」にセットされる。尚、データＡが読み出されたことで分割用フルフラグＦＦ＃０は「０」にリセットされている。
【００５２】
時間ｔ４では図３（２）に示すように、サブバッファ１２１はデータＢ２まで読み出されており、アドレス設定部１９２内の分割用リードポインタＲＰ＃１は「４」になり、ＲＰ＃１≠ＷＰ＃１であるので分割用エンプティフラグＥＦ＃１は「０」のままである。また、データＢが読み出されたので、アドレス設定制御部１９１内の分割用フルフラグＦＦ＃１は「０」になっている。
【００５３】
図４（２）は、時間ｔ８におけるバッファ１０２等の状態を示す。時間ｔ８では各サブバッファ１２２、１２１、１２０の全てのデータが読み出されており、アドレス設定部１９２内の分割用リードポインタＲＰ＃０、ＲＰ＃１、ＲＰ＃２はそれぞれ「２」、「６」、「８」になり、分割用ライトポインタＷＰ＃０、ＷＰ＃１、ＷＰ＃２の値と等しくなる。従って、アドレス設定制御部１９１内の分割用エンプティフラグＥＦ＃０、ＥＦ＃１、ＥＦ＃２は全て「１」にセットされる。また、分割用フルフラグＦＦ＃０、ＦＦ＃１、ＦＦ＃２は既に全て「０」にリセットされている。
【００５４】
図４（３）は、読み出し終了後のバッファ１０２等の状態を示す。時間ｔ８でアドレス設定制御部１９１内の分割用エンプティフラグＥＦ＃０、ＥＦ＃１、ＥＦ＃２が全て「１」にセットされると、それらのＮＡＮＤ論理によって自動的にバッファ分割フラグＢＤＦが「０」にリセットされ、非分割用リード、ライトポインタＲＰＭ、ＷＰＭが有効化され、バッファ１０２は８バイトの１つの非分割バッファに戻る。また、非分割用リードポインタＲＰＭ及び非分割用ライトポインタＷＰＭは「０」になり、バッファサイズ＝８になって次のデータを受信するための待機状態になる。なお、ＷＰＭ＝ＲＰＭにより非分割用エンプティフラグＥＦＭは「１」になり、ＷＰＭ−ＲＰＭ＜８により非分割用フルフラグＦＦＭは「０」になる。
【００５５】
このように、本実施の形態の集積回路装置１００のバッファ１０２は、データ受信時には１つの非分割バッファとしてデータ受信が可能であり、受信データの読み出し時は、サイズ設定部１０３の設定により、受信フォーマットに対応したサイズのサブバッファとして独立して読み出し可能である。このため、異なるデータフォーマットに対応して柔軟性のある送受信バッファの構成が可能になる。
【００５６】
図５〜図７は、本発明の実施の形態の集積回路装置１００におけるデータ送信時の説明図（Ｉ）〜（ＩＩＩ）である。図５〜図７により、データ送信におけるバッファ１０２等の状態を説明する。
【００５７】
図５（１）は、送信データの書き込み前のバッファ１０２、アドレス設定部１９２、アドレス設定制御部１９１、サイズ設定部１０３の状態を示す。サイズ設定部１０３は、送信フォーマットに合わせて、あらかじめＰｔ０＝「２」、Ｐｔ１＝「４」、Ｐｔ２＝「２」に設定される。
【００５８】
本実施の形態の集積回路装置１００は、前回のデータ送信が完了すると、アドレス設定制御部１９１内のバッファ分割フラグＢＤＦが「１」にセットされ、バッファ１０２は、サイズ設定部１０３の設定に従い、３つのサブバッファ１２０、１２１、１２２に論理的に分割される。
【００５９】
この場合、アドレス設定部１９２内の分割用ライトポインタＷＰ＃０、ＷＰ＃１、ＷＰ＃２には、各サブバッファの先頭アドレスを示す初期値「０」、「２」、「６」が設定され、分割用リードポインタＲＰ＃０、ＲＰ＃１、ＲＰ＃２にも、初期値「０」、「２」、「６」が設定され、有効化される。さらに、各サブバッファのサイズ「２」、「４」、「２」は図示しない領域に設定される。この場合、まだバッファ１０２にデータが書き込まれておらず、ＲＰ＝ＷＰであるので、エンプティフラグ設定信号１３２により、アドレス設定制御部１９１内の分割用エンプティフラグＥＦ＃０、ＥＦ＃１、ＥＦ＃２は全て「１」に設定される。また、ＷＰ−ＲＰ＝０＜２、４、２であるので、フルフラグ設定信号１３４により、分割用フルフラグＦＦ＃０、ＦＦ＃１、ＦＦ＃２は全て「０」に設定される。
【００６０】
図５（２）は、バッファ１０２のデータ書き込み時のタイムチャートである。集積回路装置１００内のＣＰＵ１８０は、書き込みストローブ信号ＷＲＳとアドレス信号ＡＤＤを出力し、各サブバッファへ送信データの書き込みを行う。この場合、サブバッファ１２２、１２１、１２０には、それぞれレジスタ１９３の００Ｈ番地、０１Ｈ番地、０２Ｈ番地が割り当てられる。
【００６１】
図５（２）に示すように、時間ｔ１、ｔ２でバッファ１２２にデータＡ１、Ａ２が書き込まれ、時間ｔ３〜ｔ６でバッファ１２１にデータＢ１、Ｂ２、Ｂ３、Ｂ４が書き込まれ、時間ｔ７、ｔ８でバッファ１２０にデータＣ１、Ｃ２が書き込まれる。なお、図５（２）では、サブバッファ１２２、１２１、１２０への書き込みを、その順番で連続して行う場合を示したが、アドレス信号ＡＤＤを変更することにより、１つずつ任意の順番に書き込むことも可能である。
【００６２】
図６（１）は、時間ｔ４におけるバッファ１０２等の状態を示す。時間ｔ４ではサブバッファ１２２にデータＡが全て書き込まれており、アドレス設定部１９２内の分割用ライトポインタＷＰ＃０は「２」になり、ＷＰ＃０−ＲＰ＃０＝２になるので、アドレス設定制御部１９１内の分割用フルフラグＦＦ＃０は「１」になっている。さらに、データＡが書き込まれたことでＷＰ＃０≠ＲＰ＃０になり、分割用エンプティフラグＥＦ＃０は「０」になっている。サブバッファ１２２にデータＡが全て書き込まれ、分割用フルフラグＦＦ＃０が「１」に設定されると、アドレス設定制御部１９１により、分割用ライトポインタＷＰ＃１とリードポインタＲＰ＃１が有効化される。
【００６３】
その後、サブバッファ１２１には、時間ｔ４までにデータＢ２までのデータが書き込まれ、アドレス設定部１９２内の分割用ライトポインタＷＰ＃１は「４」になり、ＷＰ＃１−ＲＰ＃１＝２＜４であるので分割用フルフラグＦＦ＃１は「０」のままである。但し、データＢ１、Ｂ２が書き込まれたためＷＰ＃１≠ＲＰ＃１になり、アドレス設定制御部１９１内の分割用エンプティフラグＥＦ＃１は「０」になっている。
【００６４】
図６（２）は、時間ｔ８におけるバッファ１０２等の状態を示す。時間ｔ８では各サブバッファ１２２、１２１、１２０に全てのデータが書き込まれ、アドレス設定部１９２内の分割用ライトポインタＷＰ＃０、ＷＰ＃１、ＷＰ＃２はそれぞれ「２」、「６」、「８」になり、分割用リードポインタＲＰ＃０、ＲＰ＃１、ＲＰ＃２の値との差がそれぞれのサブバッファサイズと等しくなる。従って、アドレス設定制御部１９１内の分割用フルフラグＦＦ＃０、ＦＦ＃１、ＦＦ＃２は全て「１」にセットされる。また、分割用エンプティフラグＥＦ＃０、ＥＦ＃１、ＥＦ＃２はＲＰ≠ＷＰになった時点で全て「０」にリセットされている。
【００６５】
図７（１）は、送信データの書き込み終了後のバッファ１０２等の状態を示す。時間ｔ８でアドレス設定制御部１９１内の分割用フルフラグＦＦ＃０、ＦＦ＃１、ＦＦ＃２が全て「１」にセットされると、ＮＡＮＤ論理により自動的にバッファ分割フラグＢＤＦが「０」にリセットされ、非分割用リード、ライトポインタＲＰＭ、ＷＰＭが有効化され、バッファ１０２は８バイトの非分割バッファに戻る。また、アドレス設定制御部１９１により非分割用ライトポインタＷＰＭは「８」に設定され、非分割用リードポインタＲＰＭは初期値「０」に設定されて、データを送信するための待機状態になる。なお、バッファ１０２はまだデータを送信しておらず、ＷＰＭ≠ＲＰＭであるので、アドレス設定制御部１９１の非分割用エンプティフラグＥＦＭは「０」になり、ＷＰＭ−ＲＰＭ＝８であるので非分割用フルフラグＦＦＭは「１」になる。
【００６６】
図７（２）は、通信プロトコルで定められた送信フォーマットのデータ列１０１を示し、データ列１０１は、２バイトのデータＡ、４バイトのデータＢ、２バイトのデータＣの順にバッファ１０２から送信される。１バイトのデータが送信される毎に、非分割用リードポインタＲＰＭがインクリメントされる。
【００６７】
図７（３）は、送信完了時のバッファ１０２等の状態を示す。この場合、アドレス設定部１９２内の非分割用リードポインタＲＰＭは「８」になり、バッファ１０２の８バイトのデータＡ、Ｂ、Ｃが全て読み出されたことを示す。また、ＲＰＭ＝ＷＰＭ＝８によりエンプティフラグ設定信号１３２が生成され、アドレス設定制御部１９１内の非分割用エンプティフラグＥＦＭは「１」になり、バッファ１０２が送信完了であることを示す。
【００６８】
このように、本実施の形態の集積回路装置１００のバッファ１０２は、データ送信時には１つの非分割バッファとしてデータ送信が可能であり、送信データの書き込み時に、サイズ設定部１０３の設定により、送信フォーマットに対応したサイズに分割可能である。このため、異なるデータフォーマットに対応してバッファをサブバッファに分割して使用することができ、柔軟性のある送受信バッファの構成が可能になる。従って、ＣＰＵ１８０は、サイズ設定部１０３を設定するだけで良く、簡単なハードウェアで、送信データのファーマットに従った任意のサイズのサブバッファに分割することができる。
【００６９】
なお、以上の説明では、送信又は受信において８バイトのバッファ１０２を通信フォーマットの構成に従って３分割する場合を説明したが、バッファ１０２は３分割以下であれば２分割にすることも可能である。
【００７０】
即ち、本実施の形態の集積回路装置１００では、バッファ１０２の分割数は固定的になるが、アドレス設定部１９２及びアドレス設定制御部１９１内に通信フォーマットの最大分割数Ｍｄ分のリードポインタ、ライトポインタ、エンプティフラグ、フルフラグを設け、サイズ設定部１０３も最大分割数Ｍｄ分設ければ、バッファ１０２を最大分割数Ｍｄ以下の分割数で動作させることが可能である。
【００７１】
この場合は、通信フォーマットに対応した最大分割数Ｍｄ以下のリードポインタ、ライトポインタ、エンプティフラグ、フルフラグを使用し、そのリードポインタ、ライトポインタの初期値と深さ（サブバッファサイズ）を通信フォーマットに従って設定する。そして、そのエンプティフラグ、フルフラグの値により、バッファ１０２の分割、非分割を制御すれば、最大分割数Ｍｄ以下の分割数の通信フォーマットに対応可能である。
【００７２】
図８は、本発明の他の実施の形態の集積回路装置のブロック図である。この実施の形態では、ＣＰＵ１８０がソフトウェアによりバッファ１０２の分割、非分割の切替えを指示できる。図１の実施の形態と共通する部分の説明は省略し、異なる部分について説明する。
【００７３】
図８の集積回路装置１００においては、アドレス設定制御部１９１内にバッファ分割フラグを設けず、アドレス設定制御部１９１とは別にバッファ分割レジスタ１０４を設ける。そして、ＣＰＵ１８０が、データバス１９４及びアドレスバス１９５を介してバッファ分割レジスタ１０４を制御する。従って、ＣＰＵ１８０は、バッファ１０２の分割、非分割をソフトウェアにより切替えることができ、複数の通信フォーマットに柔軟に対応することができる。
【００７４】
なお、アドレス設定制御部１９１は、分割用フルフラグＦＦ＃０〜ＦＦ＃３のＮＡＮＤ論理又は非分割用フルフラグＦＦＭの非反転論理により、バッファ分割レジスタ１０４を設定するのは、第１の実施の形態と同じである。
【００７５】
【発明の効果】
以上説明した通り、本発明によれば、バッファは、データ送受信時に単一の非分割バッファとして送受信が可能である。一方、バッファから受信データを読み出す時、又はバッファへ送信データを書き込む時は、データフォーマットに対応したサイズのサブバッファに論理的に分割され独立して読み出し又は書き込みが可能である。このため、異なるデータフォーマットに対して、柔軟性のある送受信バッファの構成が可能となる。
【図面の簡単な説明】
【図１】本発明の実施の形態の集積回路装置のブロック図である。
【図２】本発明の実施の形態のデータ受信時（書込み）の説明図（Ｉ）である。
【図３】本発明の実施の形態のデータ受信時（読出し）の説明図（ＩＩ）である。
【図４】本発明の実施の形態のデータ受信時（読出し）の説明図（ＩＩＩ）である。
【図５】本発明の実施の形態のデータ送信時（書込み）の説明図（Ｉ）である。
【図６】本発明の実施の形態のデータ送信時（書込み）の説明図（ＩＩ）である。
【図７】本発明の実施の形態のデータ送信時（読出し）の説明図（ＩＩＩ）である。
【図８】本発明の他の実施の形態の集積回路装置のブロック図である。
【図９】従来のデータ通信における動作説明図（Ｉ）である。
【図１０】従来のデータ通信における動作説明図（ＩＩ）である。
【符号の説明】
１００  集積回路装置
１０２  バッファ
１０３  サイズ設定部
１０４  バッファ分割レジスタ
１８０  ＣＰＵ
１９０  ＲＯＭ
１９１  アドレス設定制御部
１９２  アドレス設定部
１９３  レジスタ
２０１  ホストコンピュータ
【図１】
0003573630.tif 000002
【図２】
0003573630.tif 000003
【図３】
0003573630.tif 000004
【図４】
0003573630.tif 000005
【図５】
0003573630.tif 000006
【図６】
0003573630.tif 000007
【図７】
0003573630.tif 000008
【図８】
0003573630.tif 000009
【図９】
0003573630.tif 000010
【図１０】
0003573630.tif 000011