(57)【特許請求の範囲】
【請求項１】
ＦＩＦＯバッファを有するデータ処理システムにおいて、前記ＦＩＦＯバッファにデータを書き込む方法であって、
前記ＦＩＦＯバッファへのアクセスを識別するステップと、
前記ＦＩＦＯバッファが使用可能か否かを判定するステップと、
格納のための前記ＦＩＦＯバッファの複数のデータ記憶素子にデータ・ワードを書き込むステップと、を備え、
前記データ・ワードのうちの所定のデータ・ワードがアドレスを含み、
前記アドレスは、前記ＦＩＦＯバッファへのアクセスを識別するためであり、
前記ＦＩＦＯバッファは、前記複数のデータ記憶素子を除いて前記アドレスを保持するための用意をしない、方法。
【請求項２】
ＦＩＦＯバッファを有するデータ処理システムにおいて、前記ＦＩＦＯバッファを介してデータ・ストリームを転送する方法であって、
前記ＦＩＦＯバッファへのアクセスを識別するステップと、
前記ＦＩＦＯバッファがデータ転送のために使用可能か否かを判定するステップと、
前記データ・ストリームを前記ＦＩＦＯバッファの複数のデータ記憶素子に書き込むステップと、
前記複数のデータ記憶素子のうちの１つのデータ記憶素子への一時的記憶のため、前記データ・ストリーム内の所定点にアドレスを挿入するステップと、を備え、
前記アドレスは、前記ＦＩＦＯバッファへのアクセスを識別するためであり、
前記ＦＩＦＯバッファは、前記複数のデータ記憶素子以外のアドレスを保持する用意を除外する、方法。
【請求項３】
ＦＩＦＯバッファを有するデータ処理システムにおいて、前記ＦＩＦＯバッファを介して第１のバスから第２のバスへデータ・ストリームを転送する装置であって、
前記データ・ストリームを一時的に記憶するための複数の記憶素子と、
前記第１バスに結合され、アドレスを受信し、且つ前記アドレスが前記複数のデータ記憶素子にアクセスするための所定アドレス範囲内にあるときを識別するアドレス・デコーダと、
前記アドレス・デコーダに結合された書き込み制御論理回路であって、前記データ・ストリームを前記複数のデータ記憶素子に書き込ませる前記書き込み制御論理回路と、を備え、
前記アドレス・デコーダは、前記複数のデータ記憶素子を介して前記第２のバスに与えられるべき前記データ・ストリーム内の所定点に前記アドレスを挿入させ、
前記ＦＩＦＯバッファは、前記複数のデータ記憶素子を除いて前記アドレスを保持するための用意をしない、装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
Smolansky et al.による、"ADJUSTABLE DEPTH/WIDTH FIFO BUFFER FOR VARIABLE WIDTH DATA TRANSFERS"と題し、弁理士ファイル番号SC0364EIを有する関連出願が同時に出願され、本願と同一譲受人に譲渡された。
【０００２】
本発明は、一般的にデータ処理システムに関し、更に特定すれば、データ処理システムにおけるデータ・ストリーム内へのアドレスの挿入に関するものである。
【０００３】
【従来の技術】
デジタル信号処理とは、規則的な間隔でサンプルされデジタル化されたリードタイム信号の算術的処理を意味する。デジタル信号プロセッサ（ＤＳＰ）は、信号のフィルタ処理、混合、比較といったデジタル信号処理機能を提供するものである。データ処理システムの中には、ＤＳＰがホスト・プロセッサ内に含まれており、デジタル信号処理作業(chore)を扱うことができるものもある。例えば、ホスト・プロセッサは、マイクロコンピュータまたはマイクロプロセッサを含むことができる。
【０００４】
場合によっては、ホスト・プロセッサとＤＳＰとの間で比較的大量のデータを転送することが必要となることもある。データがこれら２つのプロセッサ間で転送されるとき、例えば、２つのプロセッサが異なるクロックで動作するなど、２つのプロセッサ間の非互換性のために、直接転送は不可能なことがある。この場合、非同期的に動作するバッファ・メモリを用いればよい。データは、受信側プロセッサがそれを受信できるようになる前に、まず送信側プロセッサによって、バッファ・メモリにバースト状で転送される。しかしながら、バッファ・メモリは、集積回路上に大量な貴重な表面領域を必要とし、実施には費用がかかり、しかもデータが処理可能になる前に全データを転送しなければならないので、処理速度が低下する。
【０００５】
【発明が解決しようとする課題】
比較的大きなバッファ・メモリを不要とするために、時として小型の先入れ先出し（ＦＩＦＯ）バッファを用いて、ホスト・プロセッサを受信側プロセッサに接続している。ＦＩＦＯバッファは、データを受けたのと同じ順序でデータを出力するメモリ・ユニットのことである。比較的大量のデータが転送されるとき、送信側プロセッサは、ある範囲のアドレスについてのみ、ＦＩＦＯバッファをアクセスする。このアドレス範囲は、例えば、データを記憶すべき受信側プロセッサのメモリ内のアドレスのような、受信側プロセッサの転送先を識別することもできる。また、かかるアドレスは、データをどのようにそしてどこで処理するかを決定する際に重要なヘッダ情報を含むこともできる。しかしながら、ＦＩＦＯバッファを通じてデータを転送する場合、受信側プロセッサに別個のアドレス・レジスタを設けるなど、アドレスを保存する処置を取らないと、アドレスが失われることがある。
【０００６】
【課題を解決するための手段】
したがって、一形態として、ＦＩＦＯバッファを通じてデータ・ストリームを転送する方法が提供される。この方法は、ＦＩＦＯバッファへのアクセスを識別する段階、ＦＩＦＯバッファが使用可能か否かを判定する段階、およびデータ・ワードをＦＩＦＯバッファに書き込む段階から成り、これらデータ・ワードの中の所定データ・ワードがアドレスを含む。
【０００７】
他の実施例では、所定数のデータ・ワードを有するデータ・ストリームをＦＩＦＯバッファを通じて転送する装置が提供され、この装置は、アドレス・デコーダと、ライト制御論理回路とを有する。アドレス・デコーダは第１バスに結合されている。アドレス・デコーダはアドレスを受け、ＦＩＦＯバッファをアクセスする所定のアドレス以内にアドレスが入ったとき、これを識別する。ライト制御論理回路は、アドレス・バッファに結合されている。ライト制御論理回路は、データ・ストリームをＦＩＦＯバッファに書き込ませる。アドレス・デコーダは、データ・ストリーム内の所定点にアドレスを挿入する。
【０００８】
これらおよびその他の特徴、ならびに利点は、添付図面に関連付けて記載された以下の詳細な説明から、より明確に理解されよう。
【０００９】
【実施例】
概して言えば、本発明は、データ・ストリームの先頭にアドレスを挿入し、データ・ストリームがＦＩＦＯバッファを通じて転送されるときにアドレスが失われるのを防ぐ方法および装置を提供するものである。アドレスを保存するための特別なアドレス・レジスタは必要でない。アドレス・デコーダを用いて、ＦＩＦＯバッファをアクセスするアドレス範囲を識別する。アドレスは、データ・ストリームの転送先を判断するためのヘッダ情報と、データ・ストリームをどのように処理するか制御するための情報も含むことができる。
【００１０】
信号、ステータス・ビット、または同様の装置(apparatus)をその論理真または論理虚の状態にすることを意味する場合、「アサート」および「ニゲート」という用語を、それぞれ用いることにする。論理真状態がデジタル論理レベル１の場合、論理虚状態はデジタル論理レベル０となる。また、論理真状態がデジタル論理レベル０の場合、論理虚状態はデジタル論理レベル１となる。また、データ、アドレス、制御、またはステータスのような１つ以上の種々の情報を転送するために用いられる複数の信号を意味する場合に、「バス」という用語を用いることにする。
【００１１】
図１ないし図８を参照しながら、本発明をより詳しく説明する。図１ないし図７の各ブロック図は、回路を表わす。図８に示す各ブロックは、フロー・チャートにおける１つ以上のステップを表わす。図１は、本発明によるデータ処理システム２０をブロック図形状で示す。図１に示す実施例では、データ処理システム２０はデジタル信号プロセッサ（ＤＳＰ）であり、単一の集積回路上に配置されている。他の実施例では、データ処理システム２０は、例えば、マイクロコンピュータまたはマイクロプロセッサでもよい。データ処理システム２０は、タイマ２２、ホスト・インターフェース２４、改良直列同期インターフェース(ＥＳＳＩ:enhanced serial synchronous interface)２６、直列非同期インターフェース（ＳＣＩ）２８、プログラムＲＡＭ（ランダム・アクセス・メモリ）および命令キャッシュ３０、データ・メモリ３２、データ・メモリ３４、アドレス発生器／直接メモリ・アクセス（ＤＭＡ）コントローラ３６、外部アドレス・バス・スイッチ３８、内部データ・バス・スイッチ４０、ＤＲＡＭ（ダイナミック・ランダム・アクセス・メモリ）およびＳＲＡＭ（スタティック・ランダム・アクセス・メモリ）バス・インターフェースおよび命令キャッシュ制御部４２、外部データ・バス・スイッチ４４、プログラム制御部（ＰＣＵ）４６、ならびにデータ算術演算部（ＡＬＵ）５４を含む。プログラム制御部４６は、プログラム割り込みコントローラ４８、プログラム・デコード・コントローラ５０、およびプログラム・アドレス発生器５２を含む。
【００１２】
「YAB」と表記されたアドレス・バス５６、「XAB」と表記されたアドレス・バス５７、「PAB」と表記されたプログラム・アドレス・バス５８、および「DAB」と表記されたアドレス・バス５９が、アドレス発生器／ＤＭＡコントローラ３６と外部アドレス・バス・スイッチ３８との間に結合されている。「DDB」と表記されたデータ・バス６０が、ホスト・インターフェース２４と外部データ・バス・スイッチ４４との間に結合されている。「YDB」と表記されたデータ・バス６１、「XDB」と表記されたデータ・バス６２、「PDB」と表記されたプログラム・データ・バス６３、および「GDB」と表記されたプログラム・データ・バス６４が、内部データ・バス・スイッチ４０と外部データ・バス・スイッチ４４との間に結合されている。
【００１３】
タイマ２２は、３つのタイマを含み、内部または外部タイミングに用いることができると共に、データ処理システム２０に割り込みをかけたり、外部装置に通知することができる。加えて、タイマ２２は、特定数の事象が発生した後にＤＭＡ転送を通知するために用いることもできる。３つのタイマの各々は、１本の双方向ピン即ち端子に結合されている。更に、タイマ２２の各タイマは、バス５７、バス５９、プログラム割り込みコントローラ４８、およびバス６０に結合されている。
【００１４】
ホスト・インターフェース２４は、データ処理システム２０と、マイクロコンピュータ、マイクロプロセッサ、またはＤＭＡのようなその他の素子との間の通信のための双方向インターフェースを形成する。また、ホスト・インターフェース２４は、バス６０を介して外部データ・バス・スイッチ４４に双方向結合され、更に、バス５７，５９を介して、グローバル・データ・バス６４、プログラム割り込み制御部４８、アドレス発生器／ＤＭＡコントローラ３６、および外部アドレス・バス・スイッチ３８に、双方向結合されている。加えて、ホスト・インターフェース２４は、双方向データ転送、アドレス・レジスタの選択、およびホスト・プロセッサからの制御通信のために、５０本の外部ピン即ち端子に、双方向結合されている。
【００１５】
改良直列同期インターフェース（ＥＳＳＩ）２６は、１２本の双方向外部ピンに結合され、例えば、１つ以上の業界標準コデック、ＤＳＰ（デジタル信号プロセッサ）、またはマイクロプロセッサを含む外部直列装置との直列通信を可能にする。ＥＳＳＩ２６は、更に、バス５７、バス５９、およびバス６０に結合された端子も有する。
【００１６】
直列通信インターフェース（ＳＣＩ）２８は、３本の双方向外部ピンに結合され、外部装置との直列通信を可能にする。ＳＣＩ２８は、バス５７、バス５９、およびバス６０に結合された端子も有する。
【００１７】
図１に示したデータ処理システム２０の実施例は、３箇所のメモリ空間を有する。即ち、プログラムＲＡＭおよび命令キャッシュ３０、Ｘメモリ３２、ならびにＹメモリ３４である。他の実施例では、これ以上またはこれ以下のメモリ空間の場合もある。プログラムＲＡＭおよび命令キャッシュ３０は、アドレス・バス５８およびデータ・バス６３に結合されている。Ｘメモリ３２は、アドレス・バス５７、アドレス・バス５９、データ・バス６０、およびデータ・バス６２に結合されている。Ｙメモリ３４は、アドレス・バス５６、アドレス・バス５９、データ・バス６０、およびデータ・バス６１に結合されている。
【００１８】
アドレス発生器／ＤＭＡコントローラ３６は、アドレス・バス５６，５７，５８，５９に結合されている。アドレス発生器／ＤＭＡコントローラ３６は、メモリ・アドレスを、タイマ２２、ホスト・インターフェース２４、ＥＳＳＩ２６、ＳＣＩ２８、プログラムＲＡＭおよび命令キャッシュ３０、メモリ３２、メモリ３４、外部アドレス・バス・スイッチ３８、ならびにＤＲＡＭおよびＳＲＡＭバス・インターフェース／命令キャッシュ制御部４２に供給する。好適実施例では、ＤＭＡコントローラは６つのチャネルを有する。
【００１９】
ＤＲＡＭおよびＳＲＡＭバス・インターフェース／命令キャッシュ４２は、プログラム・アドレス・バス５８および１４本の双方向外部ピンに結合されている。ＤＲＡＭおよびＳＲＡＭバス・インターフェース／命令キャッシュ４２の命令キャッシュは、外部メイン・メモリ（図示せず）とプログラム制御部４６との間のバッファ・メモリとして機能する。命令キャッシュは、頻繁に用いられるプログラム命令を記憶するものである。プログラムが必要とする命令語をキャッシュの中で得られるようにすると、メイン・メモリにアクセスするための時間が不要になるので、その結果として性能の向上を達成することができる。
【００２０】
内部データ・バス・スイッチ４０は、データ・バス６０、データ・バス６１、データ・バス６２、プログラム・データ・バス６３、およびグローバル・データ・バス６４に結合されている。また、外部データ・バス・スイッチ４４は、データ・バス６０、データ・バス６１、データ・バス６２、プログラム・データ・バス６３、およびグローバル・データ・バス６４を介して、内部データ・バス・スイッチ４０に結合されている。加えて、外部データ・バス・スイッチ４４は、データ・バス６０を介して、タイマ２２、ホスト・インターフェース２４、ＥＳＳＩ２６、およびＳＣＩ２８に結合されている。内部データ・バス・スイッチ４０は、バス間の転送に用いられる。内部データ・バス・スイッチ４０を介して、いずれの２つのバスでも、共に接続することができる。外部アドレス・バス・スイッチ３８および外部データ・バス・スイッチ４４は、外部バス（図示せず）を、内部アドレスおよび内部データ・バスに、それぞれ結合する。
【００２１】
プログラム制御部４６では、プログラム割り込みコントローラ４８が割り込み要求間の仲裁を行い、タイマ２２、ホスト・インターフェース２４、ＥＳＳＩ２６、およびＳＣＩ２８に結合されている。また、プログラム割り込みコントローラ４８は、グローバル・データ・バス６４とプログラム・デコード・コントローラ５０とに、双方向結合されている。プログラム・デコード・コントローラ５０は、各２４ビット命令をデコードするものであり、プログラム割り込みコントローラ４８とプログラム・アドレス発生器５２とに、双方向結合されている。プログラム・アドレス発生器５２は、プログラム・アドレスの発生、システム・スタック、およびループ制御に必要なハードウエアの全てを内蔵する。加えて、プログラム・アドレス発生器５２は、プログラム・アドレス・バス５８およびプログラム・データ・バス６３に結合されている。
【００２２】
データ算術論理演算部（ＡＬＵ）５４は、プログラム・データ・バス６３、データ・バス６１、およびデータ・バス６２に結合されている。データＡＬＵ５４は、データ・オペランド上での算術および論理演算の全てを実行する。ＡＬＵ５４は、バス６１，６２を介して読み出しまたは上書き可能なレジスタを含む。また、データＡＬＵ５４は、バス６３およびバス６０にも結合されている。
【００２３】
クロック発生回路（図示せず）が、図１に示したブロックの全てにクロック信号を供給する。また、図１には示していないが、データ処理システム２０には検査回路も含まれている。
【００２４】
図２は、図１のデータ処理システム２０のホスト・インターフェース２４を、ブロック図形状で示す。ホスト・インターフェース２４は、ホスト送信データＦＩＦＯバッファ６５、ＤＳＰ送信データＦＩＦＯバッファ６６、ホスト・インターフェース制御レジスタ６７、ＤＳＰステータス・レジスタ６８、ＤＳＰ制御レジスタ６９、およびアドレス構成レジスタ７０を含む。図示の実施例では、ホスト・インターフェース２４は、２つのＦＩＦＯバッファを有する。他の実施例では、ホスト・インターフェース２４が有するＦＩＦＯバッファは、それよりも多い場合も少ない場合もある。ホスト送信データＦＩＦＯバッファ６５は、外部バス１１６に結合された複数のデータ入力端子、グローバル・データ・バス（ＧＤＢ）６４に結合された複数のデータ出力端子、ホスト・インターフェース制御レジスタ６７の複数の出力端子に結合された複数の第１制御端子、およびＤＳＰ制御レジスタ６９の複数の出力端子に結合された複数の第２制御端子を有する。ＤＳＰ送信データＦＩＦＯバッファ６６は、グローバル・データ・バス６４に結合された複数のデータ入力端子、外部バス１１６に結合された複数のデータ出力端子、ホスト・インターフェース制御レジスタ６７の複数の出力端子に結合された複数の第１制御端子、およびＤＳＰ制御レジスタ６９の複数の出力端子に結合された複数の第２制御端子を有する。
【００２５】
また、ホスト・インターフェース制御レジスタ６７は、外部バス１１６に結合された複数の双方向端子と、ＤＳＰステータス・レジスタ６８に結合された複数の出力端子とを有する。ＤＳＰステータス・レジスタ６８は、グローバル・データ・バス６４に結合された複数の出力端子を有し、ＤＳＰ制御レジスタ６９は、グローバル・データ・バス６４に結合された複数の双方向端子と、ＦＩＦＯバッファ６５，６６の制御端子に結合された複数の出力端子とを有する。
【００２６】
ホスト・プロセッサ（図示せず）は、ホスト・インターフェース２４からグローバル・データ・バス６４を介して、バス１１６からデータ処理システム２０内のある場所までのデータ転送を開始することができる。外部バス１１６およびバス６４は、両方とも双方向バスである。一実施例では、バス１１６は多重化バスであり、データとアドレスの双方を通信する。他の実施例では、外部バス１１６は、データ線およびアドレス線を別個に有する場合もある。バス１１６からバス６４への転送が要求されたとき、ホスト・プロセッサはこの転送を制御する。ＦＩＦＯバッファ６５は、ホスト・プロセッサのみに対してスレーブ(slave)として動作する。ＦＩＦＯバッファ６５は、ホスト・プロセッサによる書き込みが可能であるが、ＦＩＦＯバッファ６５が転送を開始することはない。同様に、ＦＩＦＯバッファ６６は、データ処理システム２０から外部バス１１６にデータを送信する場合にのみスレーブとなる。
【００２７】
ホスト・インターフェース制御レジスタ６７（図５）およびＤＳＰ制御レジスタ６９（図４）は、バス１１６とバス６４との間のデータ転送を規定するための制御ビットを発生する。また、ホスト・プロセッサは、ホスト・インターフェース制御レジスタ６７を介してＤＳＰステータス・レジスタ６８と通信してＦＩＦＯバッファ６５を活性化し、ＦＩＦＯバッファ６５，６６が空か満杯かを判定し、更に他のタイプのステータス情報を受け取る。かかるステータス情報については、図６を参照して後に説明する。アドレス構成レジスタ７０は、バス１１６に結合されており、ＦＩＦＯバッファ６５をアクセスするアドレス範囲を規定するベース・アドレスをプログラムするためのアドレス・ビットを含む。
【００２８】
図３は、本発明の一実施例によるホスト・インターフェース２４の深度／幅調節可能ＦＩＦＯバッファ６５を、ブロック図形状で示す。ＦＩＦＯバッファ６５は、ＦＩＦＯレジスタ７２、レジスタ・リード制御論理回路９０、バス６４、狭／広制御部９２、出力バッファ制御論理回路９４、ＦＩＦＯリード選択器９６、レジスタ・ライト制御論理回路９８、バス１１６狭／広制御部１００、アドレス・デコーダ１０２、入力バッファ制御論理回路１０４、ＦＩＦＯライト選択器１０６、奇数入力バッファ１０８、偶数入力バッファ１１０、奇数出力バッファ１１２、および偶数出力バッファ１１４を含む。バス１１６は、入力バッファ１０８，１１０に接続された双方向バスである。バス６４は出力バッファ１１２，１１４に接続された双方向バスである。ＦＩＦＯレジスタ７２は、レジスタ部７３とレジスタ部７５とを含む。レジスタ部７３は、奇数レジスタ７４，７６，７８，８０を含む。レジスタ部７５は、偶数レジスタ８２，８４，８６，８８を含む。
【００２９】
好適実施例では、ＦＩＦＯバッファ６５は、図１のホスト・インターフェース２４の一部を含む。また、ＦＩＦＯバッファ６６は、ＦＩＦＯバッファ６５に類似した回路を有していればよい。データはバス１１６からＦＩＦＯバッファ６５に供給される。バス１１６は、ホスト・プロセッサ（図示せず）の一部である外部バスである。バス６４は、ホスト・インターフェース２４（図２）内部のバスである。他の実施例では、バス１１６，６４は、その間にバッファ動作を必要とする２つのバスであれば、いずれでもよい。バッファ動作が必要となるのは、例えば、２つのバスが異なるクロックによって制御される場合である。
【００３０】
バス１１６，６４は、Ｗビットを有するデータ・ワードを転送する。ここでＷは整数である。奇数入力バッファ１０８は、バス１１６に結合されデータ・ビット［Ｗ／２：１］を受ける複数の入力端子、奇数レジスタ７４，７６，７８，８０の各々の入力端子に結合された複数の出力端子、および入力バッファ制御論理回路１０４からの制御信号を受ける制御端子を有する。偶数入力バッファ１１０は、バス１１６に結合されデータ・ビット［Ｗ：Ｗ／２＋１］を受ける複数の入力端子、偶数レジスタ８２，８４，８６，８８の各々の複数の入力端子に結合された複数の出力端子、および入力バッファ制御論理回路１０４からの制御信号を受ける制御端子を有する。奇数出力バッファ１１２は、奇数レジスタ７４，７６，７８，８０の複数の出力端子に結合された複数の入力端子、バス６４に結合されデータ・ビット［Ｗ／２：１］を供給する複数の出力端子、および出力バッファ制御論理回路９４の出力に結合され制御信号を受ける制御端子を有する。偶数出力バッファ１１４は、偶数レジスタ８２，８４，８６，８８の各々の複数の出力端子に結合された複数の入力端子、バス６４に結合されデータ・ビット［Ｗ：Ｗ／２＋１］を供給する複数の出力端子、および出力バッファ制御論理回路９４の出力端子に結合された制御端子を有する。
【００３１】
ＦＩＦＯリード選択器９６は、出力バッファ制御論理回路９４の入力端子に結合された出力端子を有する。また、ＦＩＦＯリード選択器９６の出力端子は、レジスタ・リード制御論理回路９０の入力端子にも結合されている。レジスタ・リード制御論理回路９０は、奇数レジスタ７４，７６，７８，８０および偶数レジスタ８２，８４，８６，８８の各々の入力端子に結合され、リード制御信号を供給する出力端子を有する。好適実施例では、奇数レジスタ７４，７６，７８，８０および偶数レジスタ８２，８４，８６，８８の各々は、従来の１６ビット・リード／ライト・レジスタである。レジスタ・リード制御論理回路９０およびレジスタ・ライト制御論理回路９８は、ＦＩＦＯレジスタ７２を監視し、ＦＩＦＯレジスタ７２が空か満杯かについて、追跡を行う。
【００３２】
バス６４狭／広制御部９２は、図２のレジスタ１２８，１２４に結合された複数の入力端子と、出力バッファ制御論理回路９４とレジスタ・リード制御論理回路９０双方の入力端子に結合された出力端子とを有する。レジスタ・ライト制御論理回路９８は、奇数レジスタ７４，７６，７８，８０および偶数レジスタ８２，８４，８６，８８の各々の入力端子に結合され、ライト制御信号を供給する出力端子を有する。アドレス・デコーダ１０２は、バス１１６に結合され複数のアドレス信号を受ける複数の入力と、レジスタ・ライト制御論理回路９８に結合された複数の出力端子とを有する。
【００３３】
ＦＩＦＯライト選択器１０６は、入力バッファ制御論理回路１０４の入力端子と、レジスタ・ライト制御論理回路９８の入力端子とに結合された出力端子を有する。ＦＩＦＯライト選択器１０６は、ホスト・プロセッサがデータをＦＩＦＯバッファ６５に書き込むとき、入力バッファ制御論理回路１０４とレジスタ・ライト制御論理回路９８とにイネーブル信号を供給する。バス１１６狭／広制御部１００は、レジスタ１２４，１２８に結合された複数の入力端子と、レジスタ・ライト制御論理回路９８と入力バッファ制御論理回路１０４の入力端子とに結合された出力端子とを有する。入力バッファ制御論理回路１０４は、奇数入力バッファ１０８の入力端子に結合された第１出力端子と、偶数入力バッファ１１０の入力端子に接続された第２出力端子とを有する。
【００３４】
データはバス１１６からＦＩＦＯバッファ６５に書き込まれ、更にデータはＦＩＦＯバッファ６５からバス６４に読み出される。ＦＩＦＯレジスタ７２は２つの部分、即ち、部分７３，７５に分割されている。部分７５は、偶数レジスタ８２，８４，８６，８８から成る「偶数」部であり、部分７３は、奇数レジスタ７４，７６，７８，８０から成る「奇数」部である。他の実施例では、収容すべき異なるデータ幅の種類に応じて、いかなる数の部分にすることも可能である。各部分は、別個に読み書きができる。バス１１６，６４は、双方ともサイズは動的であり、様々なサイズのワードを同一バス上で送信することができる。図示の実施例では、ＦＩＦＯバッファ６５は３２ビット幅までのワード幅（Ｗ）を有するデータを受けることができ、ＦＩＦＯバッファ６５は、ワード幅（Ｗ）に応じた可変の深度（Ｄ）を有する。
【００３５】
ＦＩＦＯバッファ６５の図示した実施例では、次の４つのデータ転送の可能性がある。１）ＦＩＦＯバッファ６５はバス１１６から１６ビット・ワードを受け、１６ビット・ワードをバス６４に供給することができる。２）ＦＩＦＯバッファ６５はバス１１６から１６ビット・ワードを受け、バス６４に３２ビット・ワードを供給することができる。３）ＦＩＦＯバッファ６５はバス１１６から３２ビット・ワードを受け、バス６４に１６ビット・ワードを供給することができる。４）ＦＩＦＯバッファ６５はバス１１６から３２ビット・ワードを受け、バス６４に３２ビット・ワードを供給することができる。１６ビット・ワードが転送される場合、ＦＩＦＯレジスタ７２の深度は８ワードとなる。３２ビット・ワードが転送される場合、ＦＩＦＯレジスタ７２の深度は４ワードである。以下に示すＦＩＦＯバッファ６５を通じてのデータ転送の例では、Ｗは３２に等しい。しかしながら、他の実施例では、Ｗは他のデータ幅と等しくすることもできる。
【００３６】
バス１１６からＦＩＦＯバッファ６５に１６ビット・ワードを書き込み、１６ビット・ワードをバス６４に読み出すとき、バス１１６およびバス６４の双方は、狭い１６ビット幅ＦＩＦＯバッファを「見る」。バス１１６狭／広制御部１００は、バス１１６を狭い、即ち、Ｗ／２ビット幅として定義する。バス６４狭／広制御部９２は、バス６４を狭い、即ち、Ｗ／２ビット幅として定義する。ＦＩＦＯライト選択部１０６は、レジスタ・ライト制御論理回路９８および入力バッファ制御論理回路１０４に制御信号を供給し、バス１１６からのデータをサンプリングするためにＦＩＦＯバッファ６５の準備を行う。バス１１６からの入力データはビット［Ｗ／２：１］からサンプリングされ、奇数入力バッファ１０８または偶数入力バッファ１１０に入力される。奇数入力バッファ１０８からは、最初の１６ビット・データ・ワードが奇数レジスタ７４，７６，７８，８０の内の１つに、アドレス・デコーダ１０２によってバス１１６から受け取られたアドレスによって決定される、［Ｗ／２：１］から書き込まれる。アドレス・デコーダ１０２は、デコードされたアドレスをレジスタ・リード制御論理回路９０に供給する。レジスタ・リード制御論理回路９０は、奇数レジスタ７４，７６，７８，８０の中から書き込むべき１つを選択する。２番目の１６ビット・データ・ワードは、偶数入力バッファ１１０を介して、ビット［Ｗ／２：１］から、偶数レジスタ８２，８４，８６，８８の内の１つに書き込まれる。３番目の１６ビット・データ・ワードは、奇数レジスタ７４，７６，７８，８０の内の１つに、ビット［Ｗ／２：１］から書き込まれる。転送は、完了まで、即ち、ＦＩＦＯバッファ６５が満杯になるまで、偶数および奇数レジスタ間で交代しながら続けられる。
【００３７】
ＦＩＦＯバッファ６５から１６ビット・データ・ワードを読み出すとき、１６ビット・データ・ワードは、奇数レジスタ７４，７６，７８，８０の内の１つから、または偶数レジスタ８２，８４，８６，８８の内の１つから出力される。最初の１６ビット・ワードは、奇数レジスタ７４，７６，７８，８０の内の１つから読み出され、奇数出力バッファ１１２を通じて、ビット［Ｗ／２：１］が出力される。２番目の１６ビット・ワードは、偶数レジスタ８２，８４，８６，８８の内の１つから読み出され、偶数出力バッファ１１４を通じて、ビット［Ｗ／２：１］が出力される。３番目の１６ビット・ワードは、奇数レジスタ７４，７６，７８，８０の内の１つから読み出され、奇数出力バッファ１１２を通じて、ビット［Ｗ／２：１］が出力される。この動作は、転送が完了するまで、即ちＦＩＦＯバッファ６５が空になるまで続けられる。図示した実施例では、奇数レジスタおよび偶数レジスタの各々は１６ビット幅である。他の実施例では、レジスタはいかなる幅でもよい。
【００３８】
１６ビット・ワードをバス１１６からＦＩＦＯバッファ６５に書き込み、３２ビット・ワードをバス６４に読み出すときは、バス１１６はＦＩＦＯバッファ６５が８ワードの深度を有するものとして認知し、バス６４はＦＩＦＯバッファ６５が４ワードの深度を有するものとして認知する。バス１１６狭／広制御部１００は、バス１１６を狭い、即ちＷ／２ビット幅として定義する。バス６４狭／広制御部９２は、バス６４を広い、即ち、Ｗビット幅として定義する。ＦＩＦＯライト選択器１０６は、レジスタ・ライト制御論理回路９８と入力バッファ制御論理回路１０４とに制御信号を供給し、バス１１６からのデータをサンプリングするように、ＦＩＦＯバッファ６５の準備を行う。バス１１６からの入力データは、ビット［Ｗ／２：１］からサンプリングされ、奇数入力バッファ１０８または偶数入力バッファ１１０に入力される。データは、［Ｗ：Ｗ／２＋１］ビットからはサンプリングされない。好適実施例では、Ｗは３２に等しい。奇数入力バッファ１０８から、最初の１６ビット・データ・ワードが、アドレス・デコーダ１０２によってバス１１６から受け取られたアドレスによって決定される、「Ｗ／２：１］から、奇数レジスタ７４，７６，７８，８０の内の１つに書き込まれる。アドレス・デコーダ１０２は、レジスタ・リード制御論理回路９０にデコードされたアドレスを供給する。レジスタ・リード制御論理回路９０は、奇数レジスタ７４，７６，７８，８０の内書き込むべき１つを選択する。２番目の１６ビット・データ・ワードは、「Ｗ／２：１］から、偶数レジスタ８２，８４，８６，８８の内の１つに、偶数入力バッファ１１０を介して書き込まれる。３番目の１６ビット・データ・ワードは、「Ｗ／２：１］から、奇数レジスタ７４，７６，７８，８０の内の１つに書き込まれる。転送は、完了するまで、即ち、ＦＩＦＯバッファが満杯になるまで、偶数および奇数レジスタを交代しながら続けられる。
【００３９】
奇数レジスタ７４，７６，７８，８０の内の１つおよび偶数レジスタ８２，８４，８６，８８の内の１つから同時に、３２ビット・データ・ワードがバス６４に読み出される。３２ビット・データ・ワードの内１６ビットは、奇数レジスタ７４，７６，７８，８０から読み出され、奇数出力バッファ１１２を通じて、ビット［Ｗ／２：１］を出力する。別の１６ビットは、偶数レジスタ８２，８４，８６，８８の１つから読み出され、偶数出力バッファ１１４を通じて、ビット［Ｗ：Ｗ／２＋１］を出力する。アドレス・デコーダ１０２は、デコードされたアドレスをレジスタ・リード制御論理回路９０に供給し、奇数および偶数レジスタのどちらから読み出すかを選択する。これは、転送が完了するまで、即ちＦＩＦＯバッファ６５が空になるまで続く。
【００４０】
３２ビット・ワードをバス１１６からＦＩＦＯバッファ６５にサンプリングし、１６ビット・ワードをバス６４に読み出すとき、バス１１６はＦＩＦＯバッファ６５を４ワードの深度を有するものとして認知し、一方バス６４はＦＩＦＯバッファ６５を８ワードの深度を有するものとして認知する。バス１１６狭／広制御部１００は、バス１１６を広い、即ちＷビット幅として定義し、制御信号を発生して、３２ビット・ワードを受けるように、レジスタ・ライト制御論理回路９８および入力バッファ制御論理回路の準備を行う。バス６４狭／広制御部９２は、バス６４を狭い、即ちＷ／２ビット幅として定義し、３２ビット・ワードを書き込むように、レジスタ・リード制御論理回路９０および出力バッファ制御論理回路９４の準備を行う。ＦＩＦＯライト選択器１０６は、イネーブル信号をレジスタ・ライト制御論理回路９８および入力バッファ制御論理回路１０４に供給し、ＦＩＦＯバッファ６５にバス１１６からのデータのサンプリングを行わせる。アドレス・デコーダ１０２は、デコードされたアドレスをレジスタ・ライト制御論理回路９８に供給する。レジスタ・ライト制御論理回路９８は、奇数レジスタ７４，７６，７８または８０の中から書き込むべき１つを選択する。３２ビット・データ・ワードの内の１６ビットが、バス１１６のビット［Ｗ／２：１］からサンプリングされ、奇数入力バッファ１０８に入力され、同時に別の１６ビットが、ビット［Ｗ：Ｗ／２＋１］からサンプリングされ、偶数入力バッファ１１０に入力される。
【００４１】
バス６４に１６ビット・データ・ワードを読み出すとき、読み出される最初のワード［Ｗ／２：１］は、奇数レジスタ７４，７６，７８，８０の１つから奇数出力バッファ１１２に読み出される。２番目の１６ビット・ワード［Ｗ：Ｗ／２＋１］は、偶数レジスタ８２，８４，８６，８８の１つから偶数出力バッファ１１４に読み出される。３番目の１６ビット・ワードは、奇数レジスタ７４，７６，７８または８０の１つから、というように、転送が完了するまで、即ちＦＩＦＯバッファ６５が空になるまで続けられる。アドレス・デコーダ１０２は、デコードされたアドレスを、レジスタ・リード制御論理回路９０に供給し、奇数および偶数レジスタのどちらを読み出すかを選択する。
【００４２】
３２ビット・ワードをバス１１６からＦＩＦＯバッファ６５にサンプリングし、３２ビット・ワードをバス６４に読み出すとき、バス１１６，６４は、ＦＩＦＯバッファ６５を４ワードの深度を有するものとして認知する。バス１１６狭／広制御部１００は、バス１１６を広い、即ちＷビット幅として定義し、制御信号を供給して、３２ビット・ワードを受けるように、レジスタ・ライト制御論理回路９８および入力バッファ制御論理回路１０２の準備を行う。バス６４狭／広制御部９２も、バス６４を広いと定義し、３２ビット・ワードを書き込むように、レジスタ・リード制御論理回路９０および出力バッファ制御論理回路９４の準備を行う。ＦＩＦＯライト選択器１０６は、レジスタ・ライト制御論理回路９８および入力バッファ制御論理回路１０４にイネーブル信号を供給し、ＦＩＦＯバッファ６５にバス１１６からの３２ビット・ワードのデータをサンプリングさせる。アドレス・デコーダ１０２は、デコードされたアドレスをレジスタ・ライト制御論理回路９８に供給する。レジスタ・ライト制御論理回路９８は、奇数レジスタ７４，７６，７８または８０から［Ｗ／２：１］からの１６ビットを受ける１つを選択し、同時に、別の１６ビットがサンプリングされ、ビット［Ｗ：Ｗ／２＋１］から偶数入力バッファ１１０に入力される。
【００４３】
奇数レジスタ７４，７６，７８，８０の１つおよび偶数レジスタ８２，８４，８６，８８の１つから、３２ビット・データ・ワードが同時にバス６４に読み出される。この３２ビット・データ・ワードの１６ビットは、奇数レジスタ７４，７６，７８，８０から読み出され、奇数出力バッファ１１２を通じて、ビット［Ｗ／２：１］を出力する。別の１６ビットは、偶数レジスタ８２，８４，８６，８８の１つから読み出され、偶数出力バッファ１１４を通じて、ビット［Ｗ：Ｗ／２＋１］を出力する。アドレス・デコーダ１０２は、デコードされたアドレスをレジスタ・リード制御論理回路９０に供給して、ＦＩＦＯリード選択器９６からのイネーブル信号に応答して、奇数および偶数レジスタのどちらから読み出すかを選択する。これは、転送が完了するまで、即ち、ＦＩＦＯバッファ６５が空になるまで続く。
【００４４】
ＦＩＦＯレジスタを複数の部分に分割し、これらの部分を独立して制御することにより、ＦＩＦＯバッファ内の記憶領域を浪費することなく、可変幅のデータ・ワードを転送することができる。バッファの記憶領域が効率的に用いられるので、集積回路上の表面領域は、更に効率的に用いられることになる。
【００４５】
図４は、図２のホスト・インターフェース２４のＤＳＰ制御レジスタ６９を、ブロック図形状で示す。ＤＳＰ制御レジスタ６９は３２ビットの制御ビットを含む。「FC1」および「FC0」と表記された制御ビット１３０，１３１は、ホスト・インターフェース２４がデータをバス・マスタとして送信しているとき、ホストの送信データＦＩＦＯバッファ６５およびＤＳＰの送信データＦＩＦＯバッファ６６におけるデータ転送フォーマットを制御する。制御ビット１３０，１３１は、ＦＩＦＯバッファにおけるデータ幅、ＦＩＦＯレジスタ７２におけるデータの配列、およびホスト・インターフェース２４がバス１１６に読み出しているあるいはバス１１６から書き込んでいるときの符号拡張(sign extension)を規定する。「BL5-BL0」と表記された制御ビット１３２は、データのバースト長(data burst length)を規定する。制御ビット１３２内の値は、データが転送される各データ転送サイクルの後に、減分される。制御ビット１３２内の値がゼロまたは他の所定値に達したとき、転送を終了する。
【００４６】
図５は、図２のホスト・インターフェース２４のホスト・インターフェース制御レジスタ６７を、ブロック図形状で示す。ホスト・インターフェース制御レジスタ６７は、制御ビット１３６−１４２を含む。「HRF1」および「HRF0」とそれぞれ表記された、ホスト受信データ転送フォーマット制御ビット１３６，１３７は、ホスト・インターフェース２４がホスト・プロセッサによって読み出されているとき、ＤＳＰ送信データＦＩＦＯバッファ６６を介したデータ転送のための、データ転送フォーマットを定義する。制御ビット１３６，１３７は、ＦＩＦＯバッファ内のデータ幅、ＦＩＦＯレジスタ内のデータ配列、および符号拡張を規定する。「HTF1」および「HTF0」とそれぞれ表記された、ホスト・データ転送フォーマット制御ビット１３８，１３９は、ホスト・インターフェース２４がホスト・プロセッサによって書き込まれているときに、ホスト送信データＦＩＦＯバッファ６５を用いた転送のために、データ転送フォーマットを定義する。制御ビット１３８，１３９は、ＦＩＦＯバッファ内のデータ幅、ＦＩＦＯレジスタ内のデータ配列、および符号拡張を規定する。「HF2」，「HF1」，「HF0」とそれぞれ表記された、制御ビット１４０，１４１，１４２は、バス１１６およびバス６４間の通信のための汎用ホスト・フラグである。制御ビット１４０，１４１，１４２は、ホスト・プロセッサ（図示せず）によって、アサートまたはニゲートすることができる。
【００４７】
図６は、図２のホスト・インターフェース２４のＤＳＰステータス・レジスタ６８を、ブロック図形状で示す。ＤＳＰステータス・レジスタ６８は、ビット１４５−１５１を含む。「HACT」と表記されたビット１４５は、ホスト・インターフェース２４がアクティブのときはいつでも、アサートされている。転送が完了し、ホスト・インターフェース２４内の動作が停止されると、ビット１４５はニゲートされる。「HF2」，「HF1」，「HF0」と表記されたビット１４６，１４７，１４８は、ホスト・インターフェース制御レジスタ６７内のホスト・フラグHF2，HF1，HF0の状態を示す。ホスト・インターフェースのみが、ビット１４６，１４７，１４８を変更することができる。「SRRQ」と表記されたビット１４９は、ホスト送信データＦＩＦＯバッファ６５が、データ処理システム２０のためのデータを含むことを示す。ホスト・インターフェース・データＦＩＦＯバッファ６５内のレジスタが、データ処理システム２０によって空にされたとき、ビット１４９はニゲートされる。「STRQ」と表記されたビット１５０は、アサートされると、ＤＳＰ送信データＦＩＦＯバッファ６６内のレジスタが満杯でなく、データ処理システム２０によって書き込み可能であることを示す。「HCP」と表記されたビット１５１は、アサートされると、ホスト・コマンド割り込みが中断中であることを示す。ホスト・インターフェース２４によって割り込みがかけられた(service)とき、ビット１５１はニゲートされる。ビット１５１は、ホスト・インターフェース２４またはホスト・プロセッサ（図示せず）によってニゲートすることができる。
【００４８】
図７は、図２のホスト・インターフェース２４のアドレス構成レジスタ７０を、ブロック図形状で示す。「PM31-PM16」と表記されたアドレス・ビット１５３は、ＦＩＦＯバッファ６５にアクセスするためのアドレス範囲を規定する。アドレス構成レジスタ７０へのアクセスは、ホスト・インターフェース２４の動作モードに応じて行われ、ホスト・プロセッサがアクセスすることも、あるいはホスト・インターフェース２４が間接的にアクセスすることもできる。
【００４９】
図８は、本発明の一実施例によって、ＦＩＦＯバッファ６５のデータ・ストリームにアドレスを挿入するために必要なステップを、フロー・チャート形状で示す。ダイヤモンド形のボックス１５５，１５６は、判断ステップを表わし、矩形形ボックス１５７−１６１は、アドレスをデータ・ストリームに挿入ために実行されるステップを表わす。ＦＩＦＯバッファ６５へのアクセスは、あるアドレス範囲を用いて、バス１１６を通じて行うことができる。このアドレス範囲は、バス１１６からサンプリングされるアドレスの最上位ビットによって規定される。例えば、３２ビット・アドレスの上位１６ビットを用いて、ＦＩＦＯバッファ６５へのアクセスを識別する場合、ＦＩＦＯバッファ６５の２16即ち６５５３６カ所にアクセスすることができる。６５５３６カ所の内７カ所はＦＩＦＯバッファ６５以外のレジスタであるので、最下位ビットは「ほとんど」ドント・ケア(don't care)である。ＦＩＦＯバッファ６５の出力は、いくつかの機構のいずれかによって、あるアドレス範囲に転送することができる。例えば、下位アドレス・ビットをポインタとして用い、ＦＩＦＯバッファ６５を通じて到来するデータをどこに記憶するかを指揮することができる。
【００５０】
ＦＩＦＯバッファを通じてデータ・ストリームを転送するとき、ＦＩＦＯバッファにアクセスするために用いられるアドレスは、これを保持するなんらかの用意をしなければ、失われることになる。ＦＩＦＯバッファ６５では、バス１１６からサンプルされる最初のデータはアドレスである。このアドレスは、ヘッダ情報を含むこともできる。アドレス内のヘッダ情報を用いて、このデータをデータ処理システム２０内の所望の場所に送出することや、どのようにデータ処理システムがこのアドレスを用いるべきかを記述することもできる。図示の実施例では、バス１１６は、アドレスおよびデータ情報の双方を搬送する「多重化バス」である。ここに記載するアドレス挿入方法では、例えば、アドレス発生器／ＤＭＡコントローラ３６のようなデータを読み取るシステムの構成物が、データがＦＩＦＯバッファ６５から読み出すかについて、アドレス自体を識別しなければならない。多重化バスにおいてアドレスをデータから区別する方法はいくつかある。例えば、処理が始まったときにＦＩＦＯバッファが空である場合、アドレスは、このＦＩＦＯバッファから読み出される最初のデータである。また、データ・バーストが既知の長さのものである場合、ＦＩＦＯバッファから読み出される次のワードはアドレスである。加えて、データ・ストリームの長さもアドレスの関数となり得る。この場合、データ・ストリームの後に読まれる次のワードがアドレスである。
【００５１】
アドレス情報がバス１１６からサンプリングされるとき、アドレス・デコーダ１０２は、ライト・イネーブル信号をレジスタ・ライト制御論理回路９８に供給する。ライト・イネーブル信号が供給されたときバス１１６上にはアドレスがあったので、バス１１６からサンプリングされた最初のデータとして、アドレスが書き込まれる。アドレスが受け取られた後、バス１１６からデータがサンプリングされる。データ・ストリームのサイズは、ホスト・インターフェース２４がスレーブのときは、ホスト・プロセッサによって制御される。ホスト・インターフェース２４がマスタのとき、データ・ストリームのサイズは、ＤＳＰ制御レジスタ６９（図４）のビット１３２内の初期値によって決定される。ビット１３２内の値は、データ・ワードが転送される毎に減分される。値がゼロに等しくなったとき、転送が完了する。
【００５２】
判断ステップ１５５において、ホスト・プロセッサは、アドレスがＦＩＦＯバッファ６５にアクセスするために要求される範囲以内にあるか否か判断する。アドレスが要求された範囲以内にない場合、「否定」経路が選択され、ステップ１５７において、ＦＩＦＯバッファ６５へのアクセスは拒否される。アドレスが要求された範囲内にある場合、「肯定」経路が選択され、判断ステップ１５６に進む。ステップ１５６において、ホスト・プロセッサは、ＤＳＰステータス・レジスタ６８（図６）内のビット１４５をチェックすることによって、ＦＩＦＯバッファが使用可能であるか否か判断を行う。ＦＩＦＯバッファが使用可能でない場合、「否定」経路が選択されステップ１５８に進み、ＦＩＦＯバッファ６５へのアクセスは拒否される。ホスト・プロセッサは、アクセスが許可される前の現在実行中の処理(transaction)をＦＩＦＯバッファ６５が完了するまで、待機しなければならない。ＦＩＦＯバッファが使用可能な場合、「肯定」経路が選択されステップ１５９に進み、ホスト・インターフェース２４によってＦＩＦＯバッファ６５にアドレスがサンプリングされる。ここに記載した処理とは、ＦＩＦＯバッファ６５を介したバス１１６からバス６４への処理であることを注記しておく。しかしながら、他の実施例では、この処理は、同様のステップを用いて、ＤＳＰ送信データＦＩＦＯバッファ６６を介してのバス６４からバス１１６への処理とすることもできる。アドレスがＦＩＦＯバッファ６５のレジスタに書き込まれた後、ステップ１６０において、データ・バーストをＦＩＦＯバッファ６５に書き込む。一旦データ・ワードがＦＩＦＯバッファ６５に書き込まれたなら、即ち、ＦＩＦＯバッファ６５が空でない場合、ステップ１６１において、データ・ワードがＦＩＦＯバッファ６５からデータ処理システム２０内の記憶場所に読み出される。データ・ストリームのＦＩＦＯバッファ６５からの読み出しは、データ・ストリームのＦＩＦＯバッファ６５への書き込みと同時に行うことができる。ＦＩＦＯバッファは常に、部分的には空の部分が残っている。処理中にＦＩＦＯバッファが満杯になった場合、ホスト・インターフェース２４によって待機状態が挿入され、ホスト・プロセッサはＦＩＦＯバッファ６５に上書きすることが禁止される。
【００５３】
バス１１６は多重化バスとして示されている。これは、バスがアドレスおよびデータ情報の双方を搬送することを意味する。しかしながら、他の実施例では、ＩＳＡバスにおけるように、バス１１６を別個のアドレスおよびデータ・バスに分割してもよい。図７に示した実施例では、ＦＩＦＯバッファ６５がホスト・インターフェース２４内で用いられているが、他の実施例では、固定深度および固定幅を有する従来のＦＩＦＯバッファも使用可能であることも、指摘しておく。
【００５４】
大きなメモリ・アレイの代わりに小さなＦＩＦＯバッファを用いることによって、データ処理システム２０における空間を節約することができる。可変幅および可変深度のＦＩＦＯバッファを有することにより、あるサイズのバスから異なるサイズを有する別のバスへデータを転送するときに、ＦＩＦＯバッファの記憶領域のより効率的な使用が可能になる。ＦＩＦＯバッファを通過するデータ・バーストのアドレスが失われないようにするために、データ・ストリームの先頭にアドレスを挿入する。
【００５５】
以上、本発明を好適実施例に基づいて記載したが、本発明は数多くの方法で変更可能であり、先に具体的に示し説明したもの以外にも多くの実施例が想定できることは、当業者には明白であろう。例えば、ＦＩＦＯバッファ６５は、２種類のデータ幅を有するＦＩＦＯバッファを設けるために、２つの部分のＦＩＦＯレジスタ７２を有するものとして例示された。しかしながら、他の実施例では、ＦＩＦＯバッファ６５は、３つ以上の部分を有し、３種類以上のデータ幅のＦＩＦＯバッファを設けるように適応させることも可能である。したがって、本発明の真の精神および範囲に該当する本発明の変更は全て、特許請求の範囲に含まれることを意図するものである。
【図面の簡単な説明】
【図１】本発明によるデータ処理システムを示すブロック図。
【図２】図１のデータ処理システムのホスト・インターフェースの一実施例を示すブロック図。
【図３】本発明の一実施例による図２のホスト・インターフェースの深度／幅調節可能ＦＩＦＯバッファを示すブロック図。
【図４】図２のホスト・インターフェースのＤＳＰ制御レジスタを示すブロック図。
【図５】図２のホスト・インターフェースのホスト・インターフェース制御レジスタを示すブロック図。
【図６】図２のホスト・インターフェースのＤＳＰステータス・レジスタを示すブロック図。
【図７】図２のホストインターフェースのアドレス構成レジスタを示すブロック図。
【図８】本発明によるデータ・ストリームにアドレスを挿入する方法を示すフロー・チャート。
【符号の説明】
２０  データ処理システム
２２  タイマ
２４  ホスト・インターフェース
２６  改良直列同期インターフェース
２８  直列非同期インターフェース
３０  プログラムＲＡＭおよび命令キャッシュ
３２，３４  データ・メモリ
３６  アドレス発生器／直接メモリ・アクセス・コントローラ
３８  外部アドレス・バス・スイッチ
４０  内部データ・バス・スイッチ
４２  ＤＲＡＭおよびＳＲＡＭバス・インターフェース／命令キャッシュ制御部
４４  外部データ・バス・スイッチ
４６  プログラム制御部
４８  プログラム割り込みコントローラ
５０  プログラム・デコード・コントローラ
５２  ログラム・アドレス発生器
５４  データ算術演算部
５６，５７  アドレス・バス
５８  プログラム・アドレス・バス
５９  アドレス・バス
６１，６２  データ・バス
６３，６４  プログラム・データ・バス
６５  ホスト送信データＦＩＦＯバッファ
６６  ＤＳＰ送信データＦＩＦＯバッファ
６７  ホスト・インターフェース制御レジスタ
６８  ＤＳＰステータス・レジスタ
６９  ＤＳＰ制御レジスタ
７０  アドレス構成レジスタ
７２  ＦＩＦＯレジスタ
９０  レジスタ・リード制御論理回路
９２  バス６４、狭／広制御部
９４  出力バッファ制御論理回路
９６  ＦＩＦＯリード選択器
９８  レジスタ・ライト制御論理回路
１００  バス１１６狭／広制御部
１０２  アドレス・デコーダ
１０４  入力バッファ制御論理回路
１０６  ＦＩＦＯライト選択器
１０８  奇数入力バッファ
１１０  偶数入力バッファ
１１２  奇数入力バッファ
１１４  偶数出力バッファ
１１６  バス
１２４，１２８  レジスタ
【図１】
0003773574.tif 000002
【図２】
0003773574.tif 000003
【図３】
0003773574.tif 000004
【図４】
0003773574.tif 000005
【図５】
0003773574.tif 000006
【図６】
0003773574.tif 000007
【図７】
0003773574.tif 000008
【図８】
0003773574.tif 000009