(57)【特許請求の範囲】
【請求項１】
CPUとPCI制御回路とを１チップ化したシステムＬＳＩにおいて、
前記PCI制御回路は、CPUの低速バスとのインタフェースを制御する周辺モジュールバス制御手段と、
CPUの外部メモリバスに接続される主メモリを制御するローカルバス制御回路と、
PCIバスを制御するPCIインタフェース制御手段と、
前記ローカルバス制御手段と前記PCIインタフェース制御手段とのデータ転送を制御するデータ転送制御回路とを有し、
前記ローカルバス制御回路は、前記外部メモリバスのエンディアンと、前記PCIバスのエンディアンとの変換を行うエンディアン制御回路を含み、
前記エンディアン制御回路は、前記外部メモリバスと前記PCIバスとの間でDMA転送を行う場合、DMA転送毎に、転送するデータについてのエンディアンパラメータの前記CPUによる設定を可能とするエンディアンパラメータ記憶回路と、
前記エンディアンパラメータ記憶回路に記憶されたエンディアンパラメータに対応するエンディアン変換モードに従ってエンディアン変換可能なエンディアン変換回路と、を含み、
前記エンディアン変換モードには、入力データをバイトデータとみなしてエンディアン変換するバイトデータモードと、入力データをワードデータとみなしてエンディアン変換するワードデータモードと、入力データをロングワードデータとみなしてエンディアン変換するロングワードデータモードと、が含まれ、
前記エンディアン変換回路は、前記エンディアンパラメータ記憶回路に設定されたエンディアンパラメータによって、前記バイトデータモード、前記ワードデータモード、前記ロングワードデータモードの何れかが選択された場合、その選択されたモードによって示されるデータの所定バイトを選択的に出力可能なセレクタを含んで成ることを特徴としたシステムＬＳＩ。
【請求項２】
請求項１において、
前記システムＬＳＩは、前記周辺モジュールバス制御手段を動作させる低速クロック発生手段と、前記ローカルバス制御手段を動作させる高速クロック発生手段と、前記PCIインタフェース制御手段を動作させるPCIクロック発生手段と、を更に有することを特徴としたシステムＬＳＩ。
【請求項３】
CPUコアと、
前記CPUコアを集積した半導体装置と同一チップ上に集積されるPCI制御回路と、
前記半導体装置と主メモリとの間でデータ転送を行う外部メモリバスを接続する第一の端子と、
前記半導体装置とPCIデバイスとの間でデータ転送を行うPCIバスを接続する第二の端子と、
前記PCI制御回路は、前記外部メモリバスに接続される主メモリを制御するローカルバス制御回路と、を含み、
前記ローカルバス制御回路は、第一の端子に接続された前記外部メモリバスと、前記第二の端子に接続された前記PCIバスとのエンディアンが異なる場合に、前記外部メモリバスのインディアンと、前記PCIバスのエンディアンとの変換を行うエンディアン制御回路を含み、
前記エンディアン制御回路は、前記外部メモリバスと前記PCIバスとの間でDMA転送を行う場合に、DMA転送毎に、転送するデータについてのエンディアンパラメータの前記CPUによる設定を可能とするエンディアンパラメータ記憶回路と、
前記エンディアンパラメータ記憶回路に記憶されたエンディアンパラメータに対応するエンディアン変換モードに従ってエンディアン変換可能なエンディアン変換回路と、を含み、
前記エンディアン変換モードには、入力データをバイトデータとみなしてエンディアン変換するバイトデータモードと、入力データをワードデータとみなしてエンディアン変換するワードデータモードと、入力データをロングワードデータとみなしてエンディアン変換するロングワードデータモードと、が含まれ、
前記エンディアン変換回路は、前記エンディアンパラメータ記憶回路に設定されたエンディアンパラメータによって、前記バイトデータモード、前記ワードデータモード、前記ロングワードデータモードの何れかが選択された場合、その選択されたモードによって示されるデータの所定バイトを選択的に出力可能なセレクタを含んで成ることを特徴とする半導体集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイコンと複数の機能ユニットから構成される半導体制御装置において、特に汎用のバス制御インタフェースであるPCI（Peripheral Component Interconnect）バス制御回路を１チップ化するのに適したPCI制御半導体装置に関する。
【０００２】
【従来の技術】
近年、マルチメディア分野の進展が著しく、従来マイコン（CPU）と周辺制御用LSI（コンパニオンチップ）の２チップ構成で実現されていた機能を１チップ化できるようになってきている。その中で特に、マイコンと汎用のバス制御インタフェースであるPCIバスを制御するPCI制御回路を１チップ化すると、既存のPCIバスで接続可能な周辺デバイスとの接続が容易になり、システムのコストおよびプリント基板上の面積を削減することが可能となる。
【０００３】
これを実現するためには、PCI制御回路や高速なデータ転送を行う論理モジュールを１チップ化する場合には、これらのモジュールとCPUや主メモリを制御するバス制御回路等を接続する高速な内部バスが必要であった。
【０００４】
【発明が解決しようとする課題】
従来のチップ構成では、PCI制御回路は、高速な内部バスに接続できるように、内部バスとのインタフェース回路を高速で動作するように設計する必要があった。このため、インタフェース回路のタイミング設計が難しくなり、レイアウトを考慮した上でのタイミング設計およびタイミングのチューニングをする必要があった。また、レイアウト変更があると再度タイミングをチューニングする必要があった。このため、LSIの設計期間が長くなり、設計コストが増大するという問題があった。
【０００５】
そこで本発明では、CPUとのインタフェース回路が低速なクロックで動作し、CPUコアとの接続が容易でかつ、PCI制御回路と主メモリ間のデータ転送速度が低下しないPCI制御半導体装置を提案する。
【０００６】
【課題を解決するための手段】
上記課題を解決するための手段は、本発明の一実施形態によれば、CPUコアとPCI制御回路を１チップ化したシステムLSIにおいて、
割り込み制御回路と、周辺モジュールバス制御回路と、ローカルバス制御回路と、データ転送制御回路と、PCIインタフェース制御回路から構成されるPCI制御半導体装置であって、
低速なクロックで動作する周辺モジュールバスを介してCPUコアと接続される周辺モジュールバス制御回路が、CPUコアからのデータ転送開始信号に応じてデータ転送制御回路を起動し、
この起動信号に応じてデータ転送制御回路は、主メモリからPCIデバイスにデータを転送する場合には、高速なバスクロックで動作するローカルバス制御回路にデータ転送要求を出力し、ローカルバス制御回路から転送されたデータをデータ転送制御回路に一時記憶し、PCIインタフェース制御回路にデータ転送要求を出力し、PCIインタフェース制御回路の許可信号に応じて一時記憶したデータがPCIインタフェース制御回路を介してPCIバスに出力され、
PCIデバイスから主メモリにデータを転送する場合には、PCIインタフェース制御回路にデータ転送要求を出力し、PCIインタフェース制御回路から転送されたデータをデータ転送制御回路に一時記憶し、ローカルバス制御回路にデータ転送要求を出力し、ローカルバス制御回路の許可信号に応じて一時記憶したデータをローカルバス制御回路を介して主メモリに書き込み、データ転送が終了したときに割り込み制御回路から割り込み信号をCPUコアに出力することを特徴としたものである。
【０００７】
また、本発明の好適な実施形態によれば、ローカルバスとPCIバスのデータバスのエンディアンが異なる場合に、ローカルバスとPCIバス間でデータ転送を行う場合に、DMA転送のチャンネル毎に転送するデータが、バイト境界のデータか、ワード境界のデータか、ロングワード境界のデータかを記憶し、バイト境界の場合には、バイトの区切りで、データのＭＳＢ(Most Significant Bit)バイトとＬＳＢ(Least Significant Bit)バイトのデータを入れ替えてデータ転送し、ワード境界の場合には、ワードの区切りでデータのＭＳＢバイトとＬＳＢバイトのデータを入れ替え、ロングワード境界の場合には、ロングワードの区切りでＭＳＢバイトとＬＳＢバイトを入れ替えるエンディアン変換回路を有することを特徴としたものである。
【０００８】
また、本発明の好適な実施形態によれば、ローカルバス制御回路から転送されたデータおよびPCIインタフェース制御回路から転送されたデータを一時記憶するデータ転送制御回路内のメモリの容量を少なくともCPUコアのキャッシュの１ラインよりも大きい容量としたことを特徴としたものである。
【０００９】
また、本発明の好適な実施形態によれば、PCIバス調停用のピンを入出力ポートピンと切り替え可能としたことを特徴としたものである。
【００１０】
また、本発明の好適な実施形態によれば、PCIインタフェース制御回路の動作クロックを外部からのPCI入力クロックと主メモリを制御するローカルバスクロックと切り替え可能にし、ローカルバスクロックを一度チップから出力させてから入力させ、外部からのPCI入力クロックとローカルバスクロックのピンから内部回路までの遅延時間を等しくさせたことを特徴としたものである。
【００１１】
【発明の実施の形態】
本発明のPCI制御回路１００を説明する前に、図２に本発明のPCI制御回路１００を用いたシステムLSI１０の構成図を示す。システムLSI１０は、CPUコア１２とPCI制御回路１００とバス切り替えスイッチ１４から構成され、外部ローカルバス６０に主メモリ１１が接続されているものとする。外部ローカルバス６０には、主メモリ以外にも、周辺デバイスが接続されるが、本実施例では省略してある。また、PCIバスには、PCIデバイスが接続されるが、PCIデバイスに関しても省略してある。
【００１２】
CPUコア１２には、主メモリ１１を制御するバス制御回路１３がある。バス制御回路１３は、主メモリ１１から外部ローカルバス６０とバス切り替えスイッチ１４を介して、プログラムおよびデータを読み出し、データ処理および演算処理を行う。PCI制御回路１００に対しては、周辺モジュールバス２１および周辺モジュールクロック３０（以下PCLK３０と記載する）を供給し、PCI制御回路１００の内部レジスタのアクセスおよびデータ転送の起動等を行う。また、PCI制御回路１００が、主メモリ１１を制御する場合に必要なバスクロック３２（以下BCLK３２と記載する）を供給する。
【００１３】
以下、図３にPCI制御回路１００の動作シーケンスを示し、主メモリ１１からPCIバス４０にデータを転送する場合を例に説明する。
【００１４】
ステップ１：CPUコア１２が周辺モジュールバス２１を介して、データ転送要求をPCI制御回路１００に出力する。
【００１５】
ステップ２：PCI制御回路１００は、ローカルバスのバス調停制御信号２２（バス権要求信号２２A）をCPUコア１２に出力する。
【００１６】
ステップ３：CPUコア１２は、この信号を受信し、その許可信号２２（バス権許可信号２２B）をPCI制御回路１００に出力すると同時に、バス切り替え制御信号１５を出力し、バス切り替えスイッチ１４がPCI制御回路を選択するようにする。
【００１７】
ステップ４：PCI制御回路１００は、主メモリ１１からデータを読み出す。
【００１８】
ステップ５：バス権要求信号２２Aをネゲートすると同時に、PCIバス４０にデータを転送する。
【００１９】
以上のように主メモリとPCIバス間のデータ転送を行う。
【００２０】
図４に外部ローカルバス６０をCPUコア１２とPCI制御回路１００が時分割で使用する場合のタイミングチャートを示す。ここで、外部ローカルバス６０の制御信号は、チップセレクト信号(CS_N）６０A、アドレスバス(ADDR[25:0])６０Ｂ、読み出し信号(RD_N)６０Ｃ、書き込み信号(WT_N)６０Ｄ、データバス(DATA[31:0])６０Eから構成されている。それぞれの制御信号は、CPUコア１２がバス権を取っている時は、CPUコア１２がドライブし、PCI制御回路１００がバス権を取っているときは、PCI制御回路１００がドライブする。通常はCPUコア１２がバス権を取り、主メモリ１１とのインタフェースである外部ローカルバス６０を制御している（CPUアクセスサイクル）。CPUコア１２は、PCI制御回路１００からのバス権要求信号２２Aを検出して、PCI制御回路１００にバス権許可信号２２Ｂを返し、CPUアクセスサイクルを終了する。PCI制御回路１００は、バス権許可信号２２Ｂを受信して、PCIアクセスサイクルを開始する。そして、PCI制御回路１００がデータ転送を行った後、PCIアクセスサイクルを終了する場合には、バス権要求信号２２Aをネゲートする。PCI制御回路１００は、CPUコア１２からのバス権許可信号２２Ｂのネゲートを検出して、PCIアクセスサイクルを終了する。PCIアクセスサイクル終了後、CPUコア１２はCPUアクセスサイクルを再開する。
【００２１】
図１は本発明の一実施例を示すPCI制御回路１００のブロック図である。PCI制御回路１００は、割り込み制御回路２００、周辺モジュールバス制御回路２１０、ローカルバス制御回路２２０、データ転送制御回路２３０、PCIインタフェース制御回路２４０、PCIバスから入力されるPCICLK３１とBCLK３２を切り替えるクロック切り替え回路２５０から構成されている。
【００２２】
割り込み制御回路２００は、低速なPCLK３０に同期して動作し、データ転送制御回路２３０から出力されるデータ転送終了割り込み１０６、PCIインタフェース制御回路２４０から出力されるエラー割り込み１０７等を受信し、その割り込み信号２０をCPUコア１２に出力する。
【００２３】
周辺モジュールバス制御回路２１０は、PCLK３０に同期して動作し、CPUコア１２からPCI制御回路１００の内部レジスタのアクセスを制御する。また、クロック切り替え信号１０５を出力し、クロック切り替え回路２５０を制御する。周辺モジュールバス制御回路２１０には、PCLK３０同期の制御信号をCCLK３３（PCICLK３１とBCLK３２を切り替えるクロック切り替え回路２５０の出力クロック）同期の信号に同期化する同期回路５０、PCLK３０同期の制御信号をBCLK同期の信号に同期化する同期回路５１を実装し、CPUコア１２とのインタフェースをPCI制御回路１００内で使用するBCLK同期とCCLK同期の信号にタイミング変換する。
【００２４】
ローカルバス制御回路２２０は、CPUコア１２内のバス制御回路１３の動作クロックと同じBCLK３２で動作する。CPUコア１２にバス調停制御信号２２を出力し、外部ローカルバス６０の使用要求を制御し、主メモリ１１のアクセスを制御する。
【００２５】
データ転送制御回路２３０は、CCLK３３で動作し、PCIバスとのデータ転送を制御する。データ転送の種類としては、PIO（プログラムIO）転送、ターゲット転送、DMA（ダイレクト・メモリ・アクセス）転送を行う。
【００２６】
データ転送制御回路２３０は、同期回路５２を実装し、BCLK３２で動作するローカルバス制御回路２２０とのインタフェース信号１０３を同期化する。
【００２７】
PCIインタフェース制御回路２４０は、CCLK３３で動作し、PCIバス規格のバスプロトコルを制御する。
【００２８】
クロック切り替え回路２５０は、PCIインタフェース制御回路２４０の動作クロックを切り替える回路である。通常のPCI規格では、PCIクロックを発振する発振器をシステムLSIの外部に設け、そこからPCIクロックが入力される（PCICLK３１）。しかし、CPUコアのバスクロック(BCLK)とPCIクロックとを同じ周波数にしてBCLKをPCIバスのクロックに使用することにより、PCIバス専用のクロック発振器を削除することが可能となる。安価なシステムを構築する場合に適する。
【００２９】
以下、簡単にPCI制御回路１００で実行されるデータ転送のシーケンスを説明する。
【００３０】
まず、PIO転送について説明する。PIO転送は、CPUコア１２が周辺モジュールバス２１からPCIバスをアクセスするデータ転送方式である。周辺モジュールバスのアドレス空間にPCIバスのアドレス空間が割り付られている。PIO転送でPCIバス４０にデータを出力する場合には、CPUコア１２が、周辺バスの内のPCIバス空間にデータを書き込む。このデータを受けた周辺バスモジュール制御回路２１０は、内部バス１０１を介してデータ転送制御回路２３０にデータを転送し、データ転送制御回路２３０は、PCIインタフェース制御回路２４０にデータを転送し、PCIインタフェース制御回路２４０は、データをPCIバス４０に出力する。データを読み出す場合には、周辺バスモジュール制御回路２１０、データ転送制御回路２３０を介してPCIインタフェース制御回路２４０にデータの読み出し要求が出力され、PCIバス４０からのデータが、PCIインタフェース制御回路２４０、データ転送制御回路２３０、周辺バスモジュール制御回路２１０を介して、周辺モジュールバス２１に出力される。
【００３１】
次にターゲット転送について説明する。ターゲット転送は、PCIバス４０に接続されている外部PCIデバイスが、PCI制御回路１００内のレジスタや主メモリ１１をアクセスする転送である。外部PCIデバイスがデータを読み出す転送をターゲットリード、データを書き込む転送をターゲットライト転送と呼ぶ。
【００３２】
ターゲットライト転送により主メモリ１１にデータを書き込む場合には、外部PCIデバイスがPCIインタフェース制御回路２４０にターゲットライト転送コマンドを発行すると、PCIインタフェース制御回路２４０は、このコマンドとデータを受けて、データをデータ転送制御回路２３０に出力する。データ転送制御回路２３０は、受信したデータをローカルバス制御回路２２０に出力する。ローカルバス制御回路２２０は、CPUコア１２にバス権要求信号２２Aを出力し、バス権を獲得した後、主メモリ１１にデータを書き込む。
【００３３】
ターゲットリード転送により主メモリ１１からデータを読み出す場合には、外部PCIデバイスがPCIインタフェース制御回路２４０にターゲットリード転送コマンドを発行すると、PCIインタフェース制御回路２４０は、このコマンドを受けて、データ読み出し要求をデータ転送制御回路２３０に出力する。データ転送制御回路２３０は、受信した転送要求をローカルバス制御回路２２０に出力する。ローカルバス制御回路２２０は、CPUコア１２にバス権要求信号２２Aを出力し、バス権を獲得した後、主メモリ１１から、ローカルバス制御回路２２０を介してデータを読み出し、PCIインタフェース制御回路２４０にデータを転送する。PCIインタフェース制御回路２４０は、読み出したデータをPCIバス４０に出力する。
【００３４】
次にDMA転送について説明する。DMA転送には、主メモリ１１からPCIバス４０への転送と、PCIバス４０から主メモリ１１への転送がある。
【００３５】
まず、主メモリ１１からPCIバス４０への転送について説明する。CPUコア１２は、主メモリ１１のアドレスとPCIバスのアドレスと転送する転送語数等の転送データを周辺モジュールバス制御回路２１０を介してデータ転送制御回路内２３０のレジスタ（記憶回路）に書き込み、データ転送要求を出力する。データ転送制御回路２３０は、ローカルバス制御回路２２０にデータ読み出し要求を出す。ローカルバス制御回路２２０は、この転送要求を受けて、CPUコア１２にバス権要求信号２２Aを出力し、バス権を獲得した後、主メモリ１１からデータを読み出し、一時記憶する。データ転送制御回路２３０は、PCIインタフェース制御回路２４０にデータ書き込み要求を出す。PCIインタフェース制御回路２４０は、PCIバス４０のバス権を獲得し、データ転送制御回路２３０から一時記憶しておいたデータを読み出し、PCIバス４０にデータを出力する。所定の転送語数分のデータ転送が終了後、データ転送制御回路２３０は、転送終了割り込み１０６を出力する。
【００３６】
PCIバス４０から主メモリ１１への転送について説明する。CPUコア１２は、主メモリ１１のアドレスとPCIバスのアドレスと転送する転送語数等の転送データを周辺モジュールバス制御回路２１０を介してデータ転送制御回路内２３０のレジスタに書き込み、データ転送要求を出力する。データ転送制御回路２３０は、PCIインタフェース制御回路２４０にデータ読み出し要求を出す。PCIインタフェース制御回路２４０は、PCIバス４０のバス権を獲得し、外部PCIデバイスからデータを読み出し、データ転送制御回路２３０にデータを転送する。データ転送制御回路２３０は転送されたデータを一時記憶し、ローカルバス制御回路２２０にデータ書き込み要求を出す。ローカルバス制御回路２２０は、この転送要求を受けて、CPUコア１２にバス権要求信号２２Aを出力し、バス権を獲得した後、主メモリ１１にデータ転送制御回路で一時記憶しておいたデータを書き込む。所定の転送語数分のデータ転送が終了後、データ転送制御回路２３０は、転送終了割り込み１０６を出力する。
【００３７】
本発明のPCI制御回路１００で使用するクロックについて説明する。BCLK３２はローカルバス制御用のクロックで、主メモリ１１の制御を行うローカルバス制御回路２２０の動作クロックであり、３種類のクロックの中ではもっとも周波数の高いクロックである。周波数範囲は、数十MHzから数百MHzである。PCICLK３１は、PCIバスの動作クロックで、33MHzまたは66MHzである。PCLK３０は、周辺モジュールクロックであり、３種類のクロックの中で最も低速なクロックであり、20MHzから40MHz程度のクロックとなる。
【００３８】
図５にPCI制御回路１００が使用する３種類のクロック比の一例を示す。PCICLK３３とBCLK３２とPCICLK３０のクロック比を１対２対１／２とした場合、PCICLK３３が33MHzとすると、BCLK３２が66MHz、PCLK３０が16.５MHzとなる。この場合には、PCICLK３３とBCLK３２のクロック比が異なるので、クロック切り替えスイッチ２５０をPCICLK３３を選択するように制御して動作させる。
【００３９】
また、PCICLK３３を66MHzで動作させるとするとPCICLK３３とBCLK３２と同じ周波数になるので、クロック切り替えスイッチ２５０をBCLKを選択するように制御することにより、BCLK３２のみを使用して動作させる。したがって、この場合にはPCICLK３３からの入力クロックが不要である。
【００４０】
図６にローカルバス制御回路２２０のブロック図を示す。ローカルバス制御回路２２０はBCLK３２で動作し、バス調停回路３２０、主メモリ制御回路３２１、アービトレーション制御回路３２２、エンディアン制御回路３２３から構成されている。各ブロックは、PCI内部バス１０２で接続され、CPUコア１２からパラメータをセットできる。バス調停回路３２０は、CPUコア１２に対して、バス権を要求する。主メモリ制御回路は３２１は、主メモリ１１を制御する。メモリの種類としては、スタティックRAM（SRAM）、ダイナミックRAM（DRAM）、シンクロナスDRAM等を制御する。アービトレーション回路３２２は、データ転送制御回路２３０からの転送要求信号を調停する。エンディアン制御回路は、外部バス６０のエンディアンとPCIバス４０のエンディアンを変換する。
【００４１】
以下ローカルバス制御回路２２０の動作を簡単に説明する。データ転送制御回路２３０からの6種類の転送要求信号（１０３A−1、…、１０３A−6）を調停する。6種類とは、ターゲットリード、ターゲットライト、DMA1の転送要求、DMA2の転送要求、DMA3の転送要求、DMA4の転送要求である。これを優先順位を付けて制御する。図には明記していないが、優先順位の付け方としては、特定の転送の優先順位を高くする優先順位固定方法、全ての転送の待ち時間を平滑化できるラウンドロビン方法等を選択できるようになっている。
【００４２】
アービトレーション回路で選択されたデータ転送要求の転送要求信号２２４により、バス調停回路３２０は、CPUコア１２にバス権要求信号２２Aを出力する。CPUコア１２からバス権許可信号２２Bを受信したら、主メモリ制御回路３２１にデータ転送開始信号２２１を出力する。この信号により主メモリ制御回路３２１は、主メモリ１１をアクセスする。
【００４３】
主メモリ１１にデータを書き込む場合には、データ転送制御回路２３０からの転送データ１０３Ｂ−1、…、１０３Ｂ−6をエンディアン制御回路３２３で選択して、選択されたデータを主メモリ制御回路３２１が受け取り、それを主メモリ１１に書き込む。主メモリ１１からデータを読み出す場合には、主メモリ制御回路３２１が読み出したデータをエンディアン変換回路を経由して、データ転送制御回路２３０に送られる。
【００４４】
図７にエンディアン制御回路３２３のブロック図を示す。エンディアン制御回路３２３は、どのようにエンディアンを変換するかを指定するエンディアンパラメータ記憶回路４２２とエンディアンパラメータ記憶回路４２２に設定された変換モードでデータを変換するエンディアン変換回路４２５、４２６とセレクタ４２３、４２４から構成される。
【００４５】
エンディアンパラメータ記憶回路４２２は、PCI内部バス１０２に接続されていて、CPUコア１２からパラメータが設定される。エンディアンパラメータ記憶回路４２２は、4チャンネル分のDMA各チャンネル毎にエンディアンの変換パラメータが設定できるようになっている。
【００４６】
主メモリ１１をアクセスする外部バス６０もPCIバス４０もバス幅は32ビットであるとする。PCIバス４０はリトルエンディアン固定とし、外部バス60は、リトルエンディアン、ビッグエンディアンの両方設定可能とする。
【００４７】
まず、リトルエンディアンの動作について説明する。32ビットバスのビット７からビット０がアドレス4n+0、ビット１５からビット８がアドレス4n+１、ビット２３からビット１６がアドレス4n+２、ビット３１からビット２４がアドレス4n+３に割り付けられている。
【００４８】
32ビットデータの場合には、アドレス4n+0でアクセスされるデータのＭＳＢ(Most Significant Bit)から順に、データバスのビット３１から２４、ビット２３から１６、ビット１５からビット８、ビット７からビット０にデータが出力される。
【００４９】
１６ビットデータの場合には、アドレス4n+0でアクセスされるデータのMSBから順にデータバスのビット１５からビット８、ビット７からビット０に出力され、アドレス4n+２でアクセスされるデータのMSBから順にデータバスのビット３１からビット２４、ビット２３からビット１５に出力される。
【００５０】
8ビットデータの場合には、アドレス4n+0でアクセスされるデータがデータバスのビット７からビット０に出力され、アドレス4n+１でアクセスされるデータがデータバスのビット１５からビット８に出力され、アドレス4n+２でアクセスされるデータがデータバスのビット２３からビット１６に出力され、アドレス4n+３でアクセスされるデータがデータバスのビット３１からビット２４に出力される。
【００５１】
次に、ビッグエンディアンの動作について説明する。32ビットバスのビット７からビット０がアドレス4n+３、ビット１５からビット８がアドレス4n+２、ビット２３からビット１６がアドレス4n+１、ビット３１からビット２４がアドレス4n+０に割り付けられている。
【００５２】
32ビットデータの場合には、アドレス4n+0でアクセスされるデータのＭＳＢ(Most Significant Bit)から順に、データバスのビット３１から２４、ビット２３から１６、ビット１５からビット８、ビット７からビット０にデータが出力される。
【００５３】
１６ビットデータの場合には、アドレス4n+0でアクセスされるデータのMSBから順にデータバスのビット３１からビット２４、ビット２３からビット１６に出力され、アドレス4n+２でアクセスされるデータのMSBから順にデータバスのビット１５からビット８、ビット７からビット０に出力される。
【００５４】
8ビットデータの場合には、アドレス4n+0でアクセスされるデータがデータバスのビット３１からビット２４に出力され、アドレス4n+１でアクセスされるデータがデータバスのビット２３からビット１６に出力され、アドレス4n+２でアクセスされるデータがデータバスのビット１５からビット８に出力され、アドレス4n+３でアクセスされるデータがデータバスのビット７からビット０に出力される。
【００５５】
32ビットバスでビックエンディアンのデータをリトルエンディアンに変換する場合には、図8に示すように各データのサイズにより、変換方法が異なる。
【００５６】
エンディアン変換モードとしては、
00：32ビットデータを4個のバイトデータとみなして変換するバイトデータモード
01：32ビットデータを２個のワードデータとみなして変換するワードデータモード
10：32ビットデータを1個のロングワードデータとみなして変換するロングワードデータモード
である。
【００５７】
図９に上記３つのモードで、ビッグエンディアンからリトルエンディアンに変換するためのデータの入れ替え方法を示す。
【００５８】
バイトデータモードでは、ビッグエンディアンのＭＳＢ側のバイトデータをリトルエンディアンのLSB（Least Significant Bit）のバイトデータと入れ替え、次のMSB側のバイトデータを次のLSBのバイトデータと入れ替え、同様に、４つのデータを順々に入れ替える。これにより、４つのバイトデータがリトルエンディアンの正しいアドレスに転送される。
【００５９】
ワードデータモードでは、ビッグエンディアンのＭＳＢ側のバイトデータをリトルエンディアンのLSBから2番目のバイトデータと入れ替え、ビッグエンディアンのＭＳＢから2番目のバイトデータをリトルエンディアンのLSB側のバイトデータと入れ替え、ビッグエンディアンのＭＳＢから3番目のバイトデータをリトルエンディアンのLSBから３番目のバイトデータと入れ替え、ビッグエンディアンのLSB側のバイトデータをリトルエンディアンのLSBから3番目のバイトデータと入れ替える。すなわち、ワードの区切り毎にデータを入れ替える。これにより、二つのワードデータがリトルエンディアンの正しいアドレスに転送される。
【００６０】
ロングワードデータモードでは、データの入れ替えを行わず、そのまま、32ビットデータをリトルエンディアンのデータバスに出力する。これにより、ロングワードデータがリトルエンディアンの正しいアドレスに転送される。
【００６１】
ビックからリトルへの変換を行うエンディアン変換回路４２５のブロック図を図１０に示す。エンディアン変換回路４２５は、データの入れ替えを行うセレクタ５２５−１、５２５−２、５２５−３、５２５−４で構成され、各セレクタは、エンディアン制御信号５２０により、各エンディアン変換モード（00、01、10）が選択された時に、そのモードで示されるデータ２２３（D[31:24]、D[23:16]、D[15:8]、D[7:0]）の所定のバイトが選択され、エンディアン変換を実現している。
【００６２】
図１１にデータ転送制御回路２３０のブロック図を示す。データ制御回路は、PIO制御回路３３０、ターゲットライト制御回路３３１、ターゲットリード制御回路３３２、DMA１転送制御回路３３３、DMA２転送制御回路３３４、DMA３転送制御回路３３５、DMA４転送制御回路３３６から構成されている。図１では、データ転送制御回路230内に同期化回路５２が記載されているが、同期化回路５２（５２−０、５２−１、５２−２、５２−３、５２−４、５２−５、５２−６）は、各制御回路３３０、…、３３６に含まれている。
【００６３】
PIO制御回路３３０、DMA１転送制御回路３３３、DMA２転送制御回路３３４、DMA３転送制御回路３３５、DMA４転送制御回路３３６は、PCI内部バス１01からアドレスや転送語数等のパラメータ設定および、起動信号によりデータ転送を開始する。ターゲットライト制御回路３３１、ターゲットリード制御回路３３２はPCI外部デバイスからの起動信号によりデータ転送を開始する。
【００６４】
また、DMA１転送制御回路３３３、DMA２転送制御回路３３４、DMA３転送制御回路３３５、DMA４転送制御回路３３６はデータ転送終了後割込み信号１０６を出力する。
【００６５】
以下、DMA１転送制御回路３３３の構成を図１２に例示し、その詳細を説明する。他の回路も、細部では異なるが、ほとんど同じ構成で実現できる。
【００６６】
DMA１転送制御回路３３３はDMA転送のアドレスおよび転送語数を制御するアドレス／転送語数制御回路４３０、FIFOを制御するFIFO制御回路４３１、FIFO６３０、PCIインタフェース制御回路２４０からの読み出し書き込みを制御するRW制御回路４３２、ローカルバス制御回路からの読み出し書き込みを制御するＲＷ制御回路４３３およびローカルバス制御回路とのインタフェース信号を同期化する同期回路52−3−１、５２−３−２から構成される。また、FIFO６３０は、３２バイトのRAM2個（４３５−１、４３５−２）とアドレスバススイッチ４３４−１、４３４−２、データバススイッチ４３４−３、４３４−４から構成される。
【００６７】
CPUコア１２は、キャッシュ1ライン分のデータ（32バイト）を高速に読み出し書き込みできるように、バス制御回路１３を実現してある。また、シンクロナスDRAMへのアクセスに関してもキャッシュの1ライン分のデータを高速でアクセスできるように、メモリのモードレジスタが設定される。このため、PCI制御回路の１００内の回路もキャッシュの1ラインを高速に読み出し書き込みできるように設計するのが望ましい。そこで、FIFO６３０は2面バッファ構成となっていて、１つのバッファサイズは、CPUコア１２のキャッシュメモリの1ラインのサイズと同じ32バイトにしてある。これを2面用意することによって、ローカルバス制御回路２２０からのアクセスとPCIインタフェース制御回路２４０からのアクセスを同時に行うことが可能である。
【００６８】
以下データ転送のシーケンスを主メモリ１１からPCIバス４０への転送を例に説明する。CPUコア１２は、主メモリ１１のアドレスとPCIバスのアドレスと転送する転送語数等の転送データを周辺モジュールバス制御回路２１０を介してアドレス/転送語数制御回路４３０に書き込み、その後データ転送要求を書き込む。アドレス／転送語数制御回路４３０は、同期回路５２−３−１を介して、ローカルバス制御回路２２０に転送要求１０３A３−1を出力する。同時に、ローカルバス制御回路２２０から転送されるデータ１０３Ｂ３−１をFIFO６３０に書き込めるように、制御信号５３８により、書き込むべきRAMのアドレスを制御し、制御信号５３１、５３９で書き込むべきRAMのデータバスを制御する。最初にRAM４３５−１に書き込む場合には、アドレスバススイッチ４３４−１は、ローカルバス用のRW制御回路４３３の出力アドレスに接続されるように制御され、データバススイッチ４３４−４はRAM４３５−１に接続されるように制御される。
【００６９】
RAM４３５−１へのデータ転送が終了すると、終了の情報が同期回路５２−３−２を介して、FIFO制御回路４３１に出力される。
【００７０】
FIFO制御回路４３１はこの終了情報を受けて、PCIインタフェース制御回路２４０に転送要求１０４A３−１を出力すると同時に、RAM４３５−１がPCIインタフェース制御回路２４０に接続されるように、アドレスバススイッチ４３４−１、データバススイッチ４３４−３を制御する。さらに、RAM４３５−２にローカルバス制御回路２２０がデータを書き込めるように、アドレススイッチ４３４−２、データバススイッチ４３４−４を制御し、次のデータ転送要求１０３A３−１を出力する。
【００７１】
以上の転送をデータ転送語数分繰り返すことにより、データ転送を行うことができる。データ転送が終了すると割り込み信号１０６を出力する。
【００７２】
図１３に主メモリ１１がシンクロナスDRAMの場合に、キャッシュ1ラインのデータを読み出す時のタイミングチャートを示す。データバスが32ビットの場合には、１回のデータ転送で8データ連続で読み出すことにより、キャッシュ１ライン分のデータ転送が１回でできる。この場合、シンクロナスDRAMのモードレジスタに設定するバースト長は８である。また、キャッシュの１ラインが１６バイトの場合には、バースト長を４にすれば良い。このようにバースト長をCPUの処理しやすい単位にあわせることにより、CPUアクセス／PCIアクセスでの切り換えが不要となりオーバヘッドが低減できる。
【００７３】
図１４にPCIインタフェース制御回路２４０のブロック図を示す。PCIインタフェース制御回路２４０は、データ転送制御回路２３０からの複数のデータ転送要求を調停するアービトレーション制御回路３４０とPCIバスのバスプロトコルを制御するPCIバス制御回路３４１および低速で制御すれば良い信号を入出力するポート制御回路３４３から構成される。
【００７４】
以下、データ転送シーケンスを説明する。データ転送制御回路２３０からの複数のデータ転送要求（PIO転送、ターゲットリード、ターゲットライト、DMA1転送、DMA２転送、DMA３転送、DMA４転送）からの転送要求１０４A−０、…、１０４A−６をアービトレーション制御回路３４０で制御し、優先順位の一番高いデータ転送の要求を選択し、その選択信号５４０をPCIバス制御回路３４１に出力する。優先順位の決定方法には、優先順位固定やラウンドロビン等を選択可能であるが、図１４では、省略してある。PCIバス制御回路３４１は、選択されたデータ転送に対応するデータをデータバス１０４Ｂ−０から１０４Ｂ−６までの中から選択し、そのデータ転送に対応したデータをPCIバス４０に出力したり、PCIバスからデータを読み出したりする。
【００７５】
ポート制御回路３４３は、低速な制御信号を出力したり、入力したりできるポートで、ポートの読み出し、書き込み制御は、CPUコア１２がPCIの内部バス１０１を介して行うことができる。
【００７６】
図１５にPCIインタフェース制御回路２４０の第２の実施例を示す。この例では、PCIバス調停回路３４２が使用するピン（REQ[3:0]#、GNT[3:0]#）をポート用のピンとして使用する例を示す。
【００７７】
バス調停用ピンは、外部にバス権を要求するPCIデバイスが４デバイスが接続されるときに有効であるが、３デバイス以下の場合には、１デバイス分のピンはバス調停に使用しない。この場合に、ポート用に使用できるようにスイッチ３４４−１、３４４−２を設け、制御信号４４０でポート信号に切り替え可能とする。制御信号４４０は、CPUコア１３が内部バス１０１を介して制御できるようにする。また、PCIバス調停回路３４２を使用しないシステム、すなわち、PCI制御回路１００がシステム全体を制御しないシステムの場合には、バス調停用のピンを全てポートとして使用することが可能となる。
【００７８】
本例では、バス調停用のピンが４つの外部デバイス分として説明したが、接続できる外部デバイス数は４に固定するものではない。
【００７９】
図１６にクロック切り替えスイッチ２５０とクロックのタイミングを説明するブロック図を示す。データ転送制御回路２３０とPCIインタフェース制御回路２４０は、PCICLKとBCLKの切り替えが可能とするためには、ピンからの入力からの遅延を同じタイミングにすることが必要である。このために、BCLKを一度ピンCKIOに出力し、その出力信号をチップに戻して、使用すれば、PCICLKを同じ遅延Tpd１＝Tpd２にすることが可能となる。
【００８０】
本実施例によれば、CPUコアと低速なクロックで接続が可能で、かつPCIバスと主メモリ間のデータ転送を高速に行えるPCI制御回路を実現することが可能となる。また、本実施例によれば、キャッシュ１ライン分のメモリを２個有することにより、主メモリのアクセスを高速に行うことができる。また、本実施例によれば、主メモリのバスとPCIバスのエンディアンが異なっていても高速なDMA転送が可能となる。
【００８１】
さらに、バスクロックとPCIクロックを共通にすることが可能になり、システムのコストを削減できる。また、PCIバスの調停用のピンポートに使用することができるので柔軟なシステムを構築できる。
【００８２】
【発明の効果】
以上に詳述したごとく、本発明によれば、CPUコアと容易に接続できるPCI制御回路を供給できるので、CPUコアとPCI制御回路を１チップ化したシステムLSIを開発する場合に、その開発期間および開発コストを削減することができると共に、PCI制御回路を他のシステムLSIに移植することも容易になる。
【図面の簡単な説明】
【図１】本発明の一実施例を示すデータ転送制御用半導体装置のブロック図である。
【図２】本発明の一実施例のデータ転送制御半導体装置を適用したシステムLSIのブロック図である。
【図３】本発明の一実施例のデータ転送のシーケンスを説明したフローチャート図である。
【図４】本発明の一実施例のデータ転送のシーケンスを説明したタイミングチャート図である。
【図５】本発明の一実施例ので使用するクロックを説明したタイミングチャート図である。
【図６】本発明の一実施例のローカルバス制御回路ブロック図である。
【図７】本発明の一実施例のエンディアン制御回路のブロック図である。
【図８】本発明の一実施例のエンディアン変換モードを説明する表である。
【図９】本発明の一実施例のエンディアン変換の動作を説明する図である。
【図１０】本発明の一実施例のエンディアン変換回路のブロックである。
【図１１】本発明の一実施例のデータ転送制御回路のブロック図である。
【図１２】本発明の一実施例のDMA１転送制御回路のブロック図である。
【図１３】本発明の一実施例のシンクロナスDRAMのタイミングチャート図である。
【図１４】本発明の一実施例のPCIインタフェース制御回路のブロック図である。
【図１５】本発明の第２の実施例のPCIインタフェース制御回路のブロック図である。
【図１６】本発明の一実施例のクロック切り替え回路のブロック図である。
【符号の説明】
１０・・・システムLSI、１１・・・主メモリ、１２・・・CPUコア、１３・・・バス制御回路、１４・・・バス切り替えスイッチ、５０、５１、５２、５３・・・同期回路、１００・・・PCI制御回路電源、２００・・・割り込み制御回路、２１０・・・周辺モジュールバス制御回路、２２０・・・ローカルバス制御回路、２３０・・・データ転送制御回路、２４０・・・PCIインタフェース制御回路、２５０・・・クロック切り替え回路、３２０・・・バス調停回路、３２１・・・主メモリ制御回路、３２２・・・アービトレーション制御回路、３２３・・・エンディアン制御回路、４２２・・・エンディアンパラメータ記憶回路、４２５、４２６・・・エンディアン変換回路、５２５−１、５２５−２、５２５−３、５２５−４・・・セレクタ、３３０・・・PIO制御回路、３３１・・・ターゲットライト制御回路、３３２・・・ターゲットリード制御回路、３３４、３３５、３３６・・・DMA転送制御回路、４３０・・・アドレス／転送語数制御回路、４３１・・・FIFO制御回路、４３３・・・RW制御回路、４３４−１、４３４−２・・・アドレス切り替え回路、４３４−３、４３４−４・・・データバス切り替え回路、４３５−１、４３５−２・・・RAM、６３０・・・FIFO、３４０・・・アービトレーション制御回路、３４１・・・PCIバス制御回路、３４２・・・PCIバス調停回路、３４３・・・ポート制御回路、３４４−１、３４４−２・・・信号切り替え回路、６０１・・・入力バッファ。
【図１】
0004114900.tif 000002
【図２】
0004114900.tif 000003
【図３】
0004114900.tif 000004
【図４】
0004114900.tif 000005
【図５】
0004114900.tif 000006
【図６】
0004114900.tif 000007
【図７】
0004114900.tif 000008
【図８】
0004114900.tif 000009
【図９】
0004114900.tif 000010
【図１０】
0004114900.tif 000011
【図１１】
0004114900.tif 000012
【図１２】
0004114900.tif 000013
【図１３】
0004114900.tif 000014
【図１４】
0004114900.tif 000015
【図１５】
0004114900.tif 000016
【図１６】
0004114900.tif 000017