JP2020035337A - ブリッジデバイスとブリッジデバイスの制御方法、ならびに当該ブリッジデバイスを有する情報処理装置 - Google Patents
ブリッジデバイスとブリッジデバイスの制御方法、ならびに当該ブリッジデバイスを有する情報処理装置 Download PDFInfo
- Publication number
- JP2020035337A JP2020035337A JP2018163192A JP2018163192A JP2020035337A JP 2020035337 A JP2020035337 A JP 2020035337A JP 2018163192 A JP2018163192 A JP 2018163192A JP 2018163192 A JP2018163192 A JP 2018163192A JP 2020035337 A JP2020035337 A JP 2020035337A
- Authority
- JP
- Japan
- Prior art keywords
- qspi
- data
- communication
- slave
- master
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/3287—Power saving characterised by the action undertaken by switching off individual functional units in the computer system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/0083—Arrangements for transferring signals between different components of the apparatus, e.g. arrangements of signal lines or cables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N1/00—Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
- H04N1/32—Circuits or arrangements for control or supervision between transmitter and receiver or between image input and image output device, e.g. between a still-image camera and its memory or between a still-image camera and a printer device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Information Transfer Systems (AREA)
Abstract
【課題】バッファを有するブリッジデバイスを用いて、マスタデバイスとスレーブデバイスの間でデータ転送をする場合に、バッファの空き容量の不足や読み出しデータが不足することを防ぐ。【解決手段】ブリッジデバイスは、マスタデバイスから受信したコマンドに応じて、マスタデバイスとデータ転送を行う第1の通信手段と、マスタデバイスから受信したコマンドに応じて、スレーブデバイスとデータ転送を行う第2の通信手段と、第1の通信手段または第2の通信手段を介して入力されたデータを記憶する記憶手段と、を有する。ブリッジデバイスは、記憶手段の状態に応じて、第2の通信手段によるスレーブデバイスとのデータ転送を停止する制御手段を有する。【選択図】図3
Description
本発明は、ブリッジデバイスとブリッジデバイスの制御方法、ならびに当該ブリッジデバイスを有する情報処理装置に関する。
情報処理装置において、コントローラのメインバスには、メモリコントローラを介してCPUが実行するソフトウェアの動作ログなどを記憶するメモリが接続される。
メモリコントローラとメモリとは、SPI(Serial Periheral Interface)等のシリアルインタフェースの規格に則って接続される。このとき、メモリコントローラはマスタデバイスとして動作し、メモリはマスタデバイスにより制御されるスレーブデバイスとして動作する。SPIの規格に則った通信は、クロック信号を転送するクロック信号線と、データを転送するデータ信号線と、を用いて行われる。マスタデバイスはクロック信号線にクロック信号を供給し、データ信号線にデータを出力する。スレーブデバイスは、マスタデバイスからクロック信号線を介して入力されるクロック信号に合わせて、データを受信する。
特許文献1には、マスタデバイスとデータ転送速度の異なる複数のスレーブデバイスを接続する場合に、マスタデバイスから出力されたデータを一度バッファに格納し、スレーブデバイスがバッファから読み出す構成が記載されている。特許文献1では、データを一度バッファに格納することで、マスタデバイスとスレーブデバイスのデータ転送速度が異なる場合でも、データ転送に使用するスレーブデバイスのデータ転送速度でデータ転送を行うことができるようにしている。
バッファを有するブリッジデバイスを用いて、マスタデバイスとスレーブデバイスを接続する場合がある。上記の構成において、ブリッジデバイスとスレーブデバイスの間でのデータ転送中にバッファが空になったり、バッファがメモリフルの状態になると、データ転送を正しく完了することができない。
たとえば、マスタデバイスとブリッジデバイスの間のデータ転送速度がブリッジデバイスとスレーブデバイスの間のデータ転送速度よりも遅いとする。このとき、マスタデバイスがブリッジデバイスを介してスレーブデバイスにリードアクセスすると、マスタデバイスがバッファに書き込まれたデータの読み出しを完了する前にバッファの空き容量がなくなってしまう。このとき、スレーブデバイスから読み出したデータをバッファに格納してしまうと、マスタデバイスにより読み出しが完了していないデータが消失してしまう。また、上記の構成において、マスタデバイスがブリッジデバイスを介してスレーブデバイスにライトアクセスするとする。このとき、マスタデバイスによるバッファへの新しいデータの書き込まれる前に、スレーブデバイスがバッファに書き込まれたデータの読み出しを完了してしまうと、バッファが空になる。このとき、スレーブデバイスがバッファからデータの読み出しを継続すると、スレーブデバイスに書き込まれるデータと異なるデータをスレーブデバイスがバッファから読み出してしまう。上記のように、ブリッジデバイスとスレーブデバイスがデータ転送をしている間にブリッジデバイス内のバッファが空になったり、バッファの空き容量が不足してしまうと正しくデータ転送をすることが出来なくなる。
本発明は、上記の課題を鑑みて、バッファを有するブリッジデバイスを用いて、マスタデバイスとスレーブデバイスの間でデータ転送をする場合に、バッファの空き容量の不足や読み出しデータが不足してしまうのを防ぐことを目的とする。
本発明に記載のブリッジデバイスは、第1のデバイスから受信されたコマンドに応じて、前記第1のデバイスとデータ転送を行う第1の通信手段と、前記第1のデバイスから受信された前記コマンドに応じて、第2のデバイスとデータ転送を行う第2の通信手段と、前記第1の通信手段、または、前記第2の通信手段を介して入力されたデータを記憶する記憶手段と、を有するブリッジデバイスにおいて、前記記憶手段の状態に応じて、前記第2の通信手段による前記第2のデバイスとのデータ転送を停止する制御手段を有することを特徴とする。
本発明は、上記の課題を鑑みて、バッファを有するブリッジデバイスを用いて、マスタデバイスとスレーブデバイスの間でデータ転送をする場合に、バッファの空き容量の不足や読み出しデータが不足してしまうのを防ぐことができる。
<第1の実施形態>
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下の実施例において示す構成は一例にすぎず、本発明は図示された構成に限定されるものではない。
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下の実施例において示す構成は一例にすぎず、本発明は図示された構成に限定されるものではない。
図1は、本実施例に係る情報処理装置として動作するデジタル複合機の構成の一例を示すブロック図である。スキャナ部1010は、原稿を光学的に読み取って画像データに変換する。また、スキャナ部1010は、原稿を光学的に読み取るためのレーザ光源やレンズ等からなる原稿読取部1012と、原稿を搬送するベルト等からなる原稿搬送部1011とで構成される。プリンタ部1040は、記録媒体(用紙)を搬送し、その上に画像データを可視画像として印刷する。プリンタ部1040は、用紙を給紙する給紙部1042、画像データを用紙に転写、定着させる転写定着部1041、印刷された用紙をソート、ステイプルして機外へ搬出する排紙部1043で構成される。
コントローラ部1020は、スキャナ部1010、プリンタ部1040と電気的に接続され、さらにLAN、ISDN、インターネット/イントラネット等のネットワーク1050と接続されている。ユーザがコピー機能を利用する場合、コントローラ部1020は、スキャナ部1010を制御して原稿の画像データを取得し、プリンタ部1040を制御して画像を用紙に印刷し出力する。また、スキャン機能を利用する場合、スキャナ部1010を制御して原稿の画像データを取得してコードデータに変換し、ネットワーク1050を介してホストPC(不図示)等へ送信する。また、プリント機能を利用する場合、ホストPCからネットワーク1050を介して受信した印刷データ(コードデータ)を画像データに変換し、プリンタ部1040を制御して画像を用紙に印刷して出力する。また、ISDN等からデータを受信してプリントするFAX受信機能やISDN等へスキャンしたデータを送信するFAX送信機能も有する。また、これら各機能における処理の実行指示をジョブと呼び、画像処理装置1000は各機能に対応するジョブに従って所定の処理を実行する。操作部1030は、ユーザが入力操作を行うためのユーザインタフェースであり、例えばタッチパネルや各種ボタンで構成される。
図2は、本実施例に係る、コントローラ部1020の内部構成を示すブロック図である。以下、コントローラ部1020を構成する各要素について説明する。
CPU1110は、システム全体を制御するプロセッサーである。CPU1110は、RAM1191に展開されたOSや制御プログラムに従って、プリント処理やスキャン処理といったジョブ処理を統括的に制御する。
ROMコントローラ1120は、システムのブートプラグラムを格納しているROM1190にアクセスするための制御モジュールである。画像処理装置1000の電源がONされた時に、CPU1110はROMコントローラ1120を介してROM1190にアクセスし、CPU1110がブートする。
RAMコントローラ1130は、システムの制御プログラムや画像データが格納されるRAM1191にアクセスするための制御モジュールである。RAMコントローラ1130は、RAM1191の設定や制御を行うためのレジスタを備えており、このレジスタは、CPU1110からアクセス可能である。操作部インターフェース1140は、ユーザが操作部1030を操作した操作指示の受付及び操作結果の表示の制御を行う。
スキャン画像処理部1151は、スキャナ部1010で取得した画像データに対し、シェーディング補正処理、MTF補正処理、ガンマ補正処理、フィルタ処理といったスキャナ用画像処理を行う。また、スキャン画像処理部1151は、静電ノイズの影響による異常周期の同期信号を検出し、検出した異常周期の同期信号のマスク処理および、異常周期の同期信号の数をカウントする機能を持つ。
プリント画像処理部1150は、プリンタ部1040で使用する画像データのための色空間変換処理、中間調処理、ガンマ補正処理といったプリント用画像処理を行う。プリント用画像処理を施し、処理後の画像データをプリンタ部1040へ出力する。
HDD1192は、システムソフトウェアやアプリケーションプログラム、画像データと各画像データに対応するページ情報やジョブ情報を格納する。HDD1192は、HDDコントローラ1160を介してシステムバス1100に接続されており、CPU1110の指示に従ってデータの書き込みや読み出しを行う。
LANコントローラ1170はPHY1193を介してネットワーク1050に接続し、外部のホストコンピュータとの間で画像データなどの情報の入出力を行う。
モデム1172は図示しない公衆回線に接続し、FAX送信やFAX受信ジョブを処理する際に外部のFAX機器とデータ通信を行う。レンダリング部1152は、ネットワーク1050からLANコントローラ1170を経由して受信した画像データ(PDLデータ)を、プリンタ部1040で取り扱い可能なビットマップデータに変換する。
QSPIマスタデバイス410は、QSPIブリッジデバイス411を介してQSPI I/Fを持つメモリデバイスなどのQSPIスレーブ412、413にアクセスするための制御モジュールである。QSPIマスタデバイス410とQSPIブリッジデバイス411は第1のQSPI I/F420で接続される。
QSPIブリッジデバイス411は、第1のQSPI I/F420を介してQSPIマスタデバイス410から転送されたデータをQSPIスレーブデバイス412、413に転送する。QSPIブリッジデバイス411は第2のQSPI I/F421を介してQSPIスレーブデバイス412と接続される。また、QSPIブリッジデバイス411は第3のQSPI I/F422を介してQSPIスレーブデバイス413と接続される。
QSPIスレーブデバイス412、413は、QSPI I/Fを有するFRAM(登録商標)(Feroelectric Random Memory)やSRAM(Static Random Memory)等のメモリデバイスである。本実施形態では、QSPIスレーブ412,413は、CPU1110が実行するブート処理や、プログラムの実行のログを記録する。なお、本実施形態では、QSPIスレーブデバイスとして、メモリデバイスを例に説明するが、QSPIスレーブデバイスはこれに限定されるものではない。
本実施形態においては、コントローラ部1020は第1のプリント基板に実装され、QSPIブリッジデバイス411、QSPIスレーブデバイス412、413は第2のプリント基板に実装される。
本実施形態は、図2のようにQSPIブリッジデバイス411を用いて、ひとつのQSPIマスタデバイス410に対して複数のQSPIスレーブデバイス412、413を接続することができるように構成される。このようにQSPIブリッジデバイス411を用いることで、QSPIマスタデバイス410の構成を変えることなく、QSPIマスタデバイス410に接続されるQSPIスレーブデバイスの数を増やすことができる。QSPIスレーブデバイスがFRAM等のメモリである場合、QSPIブリッジデバイス411を用いて、QSPIスレーブデバイスの数を増やし、疑似的にメモリの容量を大きくすることができる。
図3を用いて、本実施形態における、QSPIマスタデバイス410とQSPIブリッジデバイス411、QSPIスレーブデバイス412、413の詳細を説明する。
QSPIブリッジデバイス411は、QSPIスレーブ回路501、QSPIマスタ回路502、503およびSCKゲート回路532、533で構成される。
QSPIマスタデバイス410とQSPIスレーブ回路501は、以下に示す6本の信号線を用いてQSPIの規格に則った通信を行う。
CS信号線543は、QSPIマスタデバイス410がアクセスするデバイスのアクセス開始を通知するチップセレクト信号を伝送する信号線である。SCK信号線544は、IO_0信号線545〜IO_3信号線548を用いて行われるデータ転送を同期するためのクロック信号を伝送する信号線である。QSPIの規格に則った通信では、クロック信号はデータ転送中のみ出力される。データ転送が完了した後、QSPIマスタデバイス410は、CS信号をネゲートし、クロック信号の出力を停止する。
IO_0信号線545〜IO_3信号線548は、QSPIマスタデバイス410とQSPIスレーブ回路501とがデータ転送するための信号線である。
ライトバッファ511は、QSPIマスタデバイス410からライトアクセスがなされたときにQSPIスレーブデバイス412、413に書き込まれるデータを一時的に格納するバッファである。本実施形態では、QSPIスレーブ回路501が8クロック分のライトバッファ511を備えるものとする。なお、ライトバッファ511の容量は上記の容量に限定されるものではない。
QSPIスレーブ回路501とQSPIマスタ回路502は、信号線520を介して接続される。信号線520は、QSPIマスタデバイス410から転送された信号を解析して得られるオペコードを転送るための信号線、アドレスを転送するための信号線、ライトバッファ511に格納されたデータを転送するための信号線等で構成される。さらに、信号線520は、QSPIマスタ回路502の動作を制御するためのデータ通信イネーブル信号を転送するための信号線を有する。信号線520に含まれる信号線は、QSPIスレーブ回路501のバッファに接続される。QSPIスレーブ回路501は、マスタデバイス410から入力されるクロック信号に合わせて、バッファにデータを書き込む。QSPIマスタ回路502は、信号線550を介して入力されるクロック信号に合わせて、QSPIスレーブ回路501に格納されたデータを読み出して、スレーブデバイス412に渡す。図3や以下の説明では、簡略化のため信号線520と呼称するが、信号線520は上記のように複数の信号線で構成される。
QSPIスレーブ回路501とQSPIマスタ回路503は信号線521を介して接続される。信号線521の詳細は信号線520と同様であるため説明を省略する。
外部クロック信号線550は、SCK信号線544と異なる周波数のクロック信号をQSPIマスタ回路502とQSPIマスタ回路503に供給するための信号線である。本実施形態において、外部クロック信号線550を介してQSPIマスタ回路502、503に供給されるクロック信号の周波数はQSPIマスタデバイス410からQSPIスレーブ回路501に供給されるクロック信号の周波数よりも速い周波数であるとする。外部クロック信号線550にクロック信号を供給する振動子は、QSPIマスタデバイス410にクロック信号を供給されるクロック信号を供給する振動子と異なる振動子である。
QSPIマスタ回路502はSCKゲート回路532を介して、QSPIスレーブデバイス412と接続される。QSPIマスタ回路502とQSPIスレーブデバイス412はQSPIの規格に則ってデータの転送を行う。なお、CS信号線553、SCK信号線554、IO_0信号線555〜IO_3信号線558についてはQSPIマスタデバイス410とQSPIスレーブ回路501間の信号線と同様であるため説明を省略する。
SCKゲート回路532は、QSPIマスタ回路502から出力されたクロック信号をゲートし、QSPIスレーブデバイス412へクロック信号が入力されないよう制御する回路である。たとえば、QSPIマスタデバイス410からのライトアクセス時にライトバッファが空になった場合に、SCKゲート回路532がQSPIスレーブデバイス412へのクロック信号の供給を一時停止する。また、QSPIマスタデバイス410からのリードアクセス時に、リードバッファがいっぱいになった場合にSCKゲート回路532がQSPIスレーブデバイスへのクロック信号の供給を停止する。
リードバッファ512は、QSPIスレーブデバイス412から転送されたリードデータを格納するバッファである。本実施形態ではリードバッファ512は8クロック分のバッファとするが、バッファの容量はこれに限定されるものではない。
QSPIマスタ回路503はSCKゲート回路533を介してQSPIスレーブデバイス413に接続される。QSPIマスタ回路503とQSPIスレーブデバイス413はQSPIの規格に則ってデータの転送を行う。QSPIマスタ回路503とQSPIスレーブデバイス413の間の構成はQSPIマスタ回路502とQSPIスレーブデバイス412の間の構成と同様であるため説明を省略する。
QSPIの規格において、データ転送の開始、終了はマスタ側のデバイスからしか制御することができない。そのため、例えば、QSPIマスタデバイス410がデータを書き込む際、ライトバッファ511がフルになったとしても、QSPIスレーブ回路501からQSPIマスタデバイス410のデータ転送を停止することができない。そこで、本実施形態では、QSPIマスタ回路502に供給されるクロック信号の周波数をQSPIマスタデバイス410からQSPIスレーブデバイス412に供給されるクロック信号よりも速くする。それにより、ライトバッファ511からのデータの読み出し速度がライトバッファ511へのデータの書き込み速度よりも速くなる。そのため、ライトバッファ511がフルになるのを抑制することができる。本実施形態では、外部クロックがQSPIスレーブ回路501に供給されるクロック信号の周波数の2倍の周波数であるとする。外部クロックはQSPIスレーブ回路501に供給されるクロック信号の周波数よりもわずかでも速い周波数であればよい。
図4は、QSPIの規格でマスタデバイス410、または、マスタ回路502、503がスレーブに対してライトアクセスするときのタイミングチャートである。QSPIの規格に則った信号は、オペコード201、アドレス202、ライトデータ203の3つのフェーズで構成される。IO_0信号105〜IO_3で示されるデータ信号線を介して転送されるデータを示すブロックの中に記載される数字はスレーブデバイスがデータを解析するときのビットの順番を示している。ライトデータ203においては、ブロックの中の数字の上位の桁がバイト数を示しており、下位の桁が解析する時の順番を示している。
オペコード201は、QSPIスレーブに対してどのような処理を実行するかを示す信号である。CS信号103がアサートされた後の2クロック分8ビットで送信される。オペコード201のフェーズで送信される信号はIO_3信号108の0番目のビットが最も下位のビットであり、IO_0信号105の7番目のビットが最も上位のビットである。
アドレス202はデータのライトを開始するアドレスを指定するための信号である。アドレス202はオペコード201に続けて送信される、6クロック24ビットで指定される。ここで、本実施形態で使用されるQSPIスレーブデバイス412、413はともに容量が512KbyteのFRAMであるとする。すなわち、QSPIブリッジデバイス411には1MbyteのFRAMが接続されている。そのため、本実施形態では24bitある信号のうち、0番目のビットから19番目のビットまでの20ビットを使ってそれぞれのQSPIスレーブデバイスのアドレスを指定する。QSPIスレーブデバイス412は10番目〜23番目のビットの信号を無効とする。本実施系形態では無効とされるデータの箇所にXを記載している。
ライトデータ203は、QSPIスレーブデバイス412または413に格納するデータの信号である。ライトデータ203のフェーズでは書き込むデータを連続して出力することができる。ライトデータが連続して出力された場合、アドレス202で指定されたアドレスからアクセスするアドレスを1つずつインクリメントしながらデータを書き込む。
次に、図5はQSPIの規格でマスタデバイス410、または、マスタ回路502、503がスレーブにリードアクセスするときのタイミングチャートである。図5のリードデータ304における各ブロック内の数字の上位の桁はバイト数を示しており、下位の桁はQSPIマスタデバイス410がデータを受信したときの解析順を示している。
リードコマンドは、オペコード301、アドレス302、ダミーサイクル303、リードデータ304のフェーズで構成される。オペコード301、アドレス302はライトコマンドと同様のため説明を省略する。ダミーサイクル303は、スレーブ回路やスレーブデバイスがデータを読み出すのに必要な待ち時間を示すフェーズである。マスタ側のデバイスには、予め接続されるスレーブデバイスで決められているダミーサイクルの数が設定される。マスタ側のデバイスはリードコマンドを出力する際に、予め設定されたサイクル数のクロック信号をダミーサイクル303とする。マスタ側のデバイスは、ダミーサイクル303の間はデータを受信しても、当該データを無効とする。リードデータ304では、アドレス302で指定されたアドレスに格納されたデータを取得する。リードデータ304では連続してデータを取得することができる。この時、アドレス302で指定されたアドレスを先頭とし、アドレスを1ずつインクリメントしながらQSPIスレーブデバイス412、413からデータを取得する。
図6は、本実施形態において、QSPIマスタデバイス410がアドレスフェーズで指定するアドレスと、各アドレスに対応するQSPIスレーブデバイス412、413の関係を示す図である。ここでは、アドレスを16進数で示している。0x0000〜0x07FFFFまではQSPIスレーブ412に対応するアドレスである。0x080000から0x0FFFFFまではQSPIスレーブデバイス413に対応するアドレスである。即ち、2進数であらわした際の20番目のビットが0である場合、当該アクセスはQSPIスレーブデバイス412へのアクセスである。そして、2進数であらわした際の20番目のビットが1である場合、当該アクセスはQSPIスレーブデバイス413へのアクセスである。このように、本実施形態では、複数のQSPIスレーブデバイスに対して連続したアドレスを付与する。このようにすることで、複数のQSPIスレーブデバイスを1つのQSPIスレーブデバイスであるかのように扱うことができるようになる。すなわち、QSPIマスタデバイス410から、複数のQSPIスレーブデバイスを跨ぐようなアクセスを行う際も、アクセスするアドレスをインクリメントするだけで、次のQSPIスレーブデバイスへとアクセスを切り替えることができるようになる。
続いて、図7と図9を用いてQSPIブリッジデバイス411がQSPIマスタデバイス410からライトアクセスを受け付けたときの動作を説明する。図7は、QSPIブリッジデバイス411がライトアクセスを受け付けたときのタイミングチャートである。図9は、QSPIブリッジデバイス411がライトアクセスを受け付けたときの、QSPIスレーブ回路501の実行する処理と、QSPIマスタ回路502の実行する処理を示すフローチャートである。ここでは、QSPIスレーブデバイス412に対するライトアクセスを例に説明する。
図7のCS信号線543、SCK信号線544、IO_0信号線545〜IO_3信号線548はQSPIマスタデバイス410とQSPIスレーブ回路501間の各信号線の状態を示している。オペコード700、アドレス701、ライトデータバッファ0〜7 511、ライトポインタ703、データ通信イネーブル704は、QSPIスレーブ回路501とQSPIマスタ回路502、503との間の信号線520、521の状態を示している。ライトバッファのリードポインタ705は、QSPIマスタ回路502が管理するライトバッファのアクセス先となるリードポインタである。外部クロック信号線550は、QSPIマスタ回路502、503、SCKゲート回路532、533へ入力される外部クロック信号を示している。SCKゲート信号線552は、QSPIマスタ回路502とSCKゲート回路532を接続する信号線の状態を示す。CS信号線553、SCK信号線554、IO_0信号線555〜IO_3信号線558は、QSPIマスタ回路502とQSPIスレーブデバイス412の間の信号線の状態を示す。CS信号線563、SCK信号線564、IO_0信号線565〜IO_3信号線568、SCKゲート信号線562はQSPIマスタ回路503とQSPIスレーブデバイス413との間の信号線の状態を示す。
図9(a)は、QSPIマスタデバイス410からのライトアクセス時に、QSPIスレーブ回路501の実行する処理を示すフローチャートである。図9(b)は、QSPIマスタデバイス410からのライトアクセス時に、QSPIマスタ回路502が実行する処理を示すフローチャートである。
QSPIスレーブ回路501は、CS信号がアサートされたか否かを判定する(S901)。S901において、QSPIスレーブ回路501は、CS信号線543の電圧レベルがLowレベルであるか否かを判定する。T101において、QSPIマスタデバイス410がCS信号をLowレベルにアサートする。QSPIスレーブ回路501は、CS信号がLowレベルにアサートされたことを検知し、処理をS902に進める。
QSPIスレーブ回路501は、オペコードを受信し不図示のバッファに格納する(S902)。オペコードが格納されるバッファは、ライトバッファ511とは異なるバッファである。
QSPIスレーブ回路501は、オペ―コードの受信が完了したか否かを判定する(S902)。QSPIスレーブ回路501は、CS信号がアサートされてから2クロック分のデータの受信を完了している場合、S903に処理を進める。2クロック分のデータの受信が完了していない場合S902に戻り、オペコードを受信する。T202において、QSPIスレーブ回路501はオペコードの受信を完了する。T102において、QSPIスレーブ回路501はオペコードを解析し、オペコード700を出力する。
続けて、QSPIスレーブ回路501は、アドレスを受信し、不図示のバッファに格納する(S904)。アドレスが格納されるバッファは、オペコードが格納されるバッファや、ライトバッファとは異なるバッファである。QSPIスレーブ回路501はオペコードの受信が完了したのち、受信されたオペコードをバッファに格納する。QSPIスレーブ回路501は、アドレスの受信が完了したか否かを判定する(S905)。オペコードの受信完了後、6クロック分のデータを受信した場合、QSPIスレーブ回路501はアドレスの受信が完了したと判定し、S906へ処理を進める。6クロック分のデータの受信が完了していない場合、QSPIスレーブ回路501は、S904の処理を実行する。T103において、QSPIスレーブ回路501はオペコードの受信を完了する。QSPIスレーブ回路501は、受信したアドレス701を信号線520、521に出力する。
QSPIスレーブ回路501は、データ通信イネーブル信号をHighレベルにアサートする(S906)。QSPIスレーブ回路501は、CS信号がLowレベルにアサートされてから8クロック分のデータを受信した後のT104において、データ通信イネーブル704の電圧レベルをHighレベルに設定する。これにより、データ通信イネーブル信号がアサートされる。データ通信イネーブル信号は、QSPIマスタ回路502,503がQSPIスレーブ回路501にアクセスして良いことを示す信号である。
QSPIスレーブ回路501はQSPIマスタデバイス410からライトデータを受信する(S907)。QSPIスレーブ回路501は、SCK信号線544に合わせてライトデータを受信し、ライトバッファへのライトポインタ703で指示されるバッファにデータを書き込む。そして、QSPIスレーブ回路501は、ライトポインタ703をインクリメントする(S908)。このとき、ライトポインタが7である場合は、ライトポインタを0に設定する。ライトデータバッファ0〜7のそれぞれに、IO_0信号線545〜IO_3信号線547の4ビット分のデータが格納される。
S909において、QSPIスレーブ回路501はCS信号がネゲートされたか否かを判定する。QSPIスレーブ回路501は、CS信号線543の電圧レベルがHighレベルであるか否かを判定する。CS信号線543の電圧レベルがHighレベルの場合、QSPIスレーブ回路501はCS信号がネゲートされたと判定する。CS信号がネゲートされていない場合、QSPIスレーブ回路はS907に処理を戻す。本実施形態では、T109でCS信号がネゲートされる。CS信号がネゲートされている場合、QSPIスレーブ回路501はデータ通信イネーブル704の電圧レベルをLowレベルに設定し、データ通信イネーブル信号をネゲートする(S910)。T109において、QSPIスレーブ回路501は、データ通信イネーブル704の電圧レベルをLowレベルに設定する。これにより、QSPIスレーブデバイス412、413からQSPIマスタ回路502,503へのアクセスを停止することができる。
次に、図9(b)を用いて、QSPIマスタ回路502の実行する処理を説明する。
QSPIマスタ回路502は、データ通信イネーブル信号がアサートされているか否かを判定する(S911)。QSPIマスタ回路502は、信号線520を介してデータ通信イネーブル704の電圧レベルがHighレベルになるまで、S911に記載の処理を実行する。T105でデータ通信イネーブル704の電圧レベルがHighレベルになったことに従って、QSPIマスタ回路502はS912に記載の処理を実行する。
QSPIマスタ回路502は、信号線520を介して入力されるアドレス701を取得し、取得したアドレスが接続されているQSPIスレーブデバイス412を選択するアドレスであるか否かを判定する(S912)。S912において、QSPIマスタ回路502は予め自身に接続されるQSPIスレーブデバイス412のアドレスの19ビット目の値を記憶している。そして、QSPIスレーブデバイス412は受信したアドレスの19ビット目の値を参照し、QSPIスレーブデバイス412へのアクセスであるか否かを判定する。アドレス701で指定されるスレーブデバイスがQSPIマスタ回路502に接続されているスレーブデバイスでない場合、QSPIマスタ回路502は、図9(b)に記載の処理を完了する。
アドレス701で指定されているスレーブデバイスがQSPIマスタ回路502に接続されているスレーブデバイスである場合、QSPIマスタ回路502はCS信号をアサートする(S913)。QSPIマスタ回路502は、T105においてCS信号線543の電圧レベルをLowレベルに設定する。CS信号線553の電圧レベルがLowレベルに設定されると、QSPIスレーブデバイス412へのクロック信号やデータの供給が開始される。
CS信号のアサートとともに、QSPIマスタ回路502は、SCKゲート回路532によるクロック信号のゲートを解除する(S914)。QSPIマスタ回路502は、SCKゲート信号線552の電圧レベルをLowレベルに設定し、SCKゲート信号をネゲートする。これにより、QSPIスレーブデバイス412へのクロック信号の供給が開始される。
QSPIマスタ回路502は、IO_0信号線554〜IO_3信号線558を介してオペコードをQSPIスレーブデバイス412に出力する(S915)。QSPIマスタ回路502は、信号線520を介して、オペコード700を取得し、4本の信号線を介して、2クロックでオペコードを出力する。
そして、QSPIマスタ回路502は、IO_0信号線554〜IO_3信号線558を介してアドレスをQSPIスレーブデバイス412に出力する(S916)。QSPIマスタ回路502は、信号線520を介してアドレス701を取得し、QSPIスレーブデバイス412に対して出力する。
QSPIマスタ回路502は、ライトバッファ511からデータを読み出す際のリードポインタ705の値を取得する(S917)。CS信号がアサートされ、オペコードとアドレスが受信された後のT106において、QSPIマスタ回路502は、リードポインタ705を取得する。QSPIマスタ回路502は、S917で取得したポインタに従って、ライトバッファ511からデータを読み出し、IO_0信号線555〜IO_3信号線558を介してスレーブデバイス412にライトデータを出力する(S918)。
QSPIマスタ回路502は、ライトバッファ511が空になっているか否かを判定する(S919)。QSPIマスタ回路502は、ライトポインタ703とリードポインタ705の値を取得する。取得したライトポインタとリードポインタの値が一致した場合、ライトバッファが空になっていると判定する。ライトバッファ511が空でない場合、QSPIマスタ回路502は、S920に処理を進める。ライトバッファ511が空である場合、QSPIマスタ回路502は、S921に処理を進める。たとえば、T107において、QSPIマスタ回路502は、ライトポインタとリードポインタの値が異なるため、ライトバッファ511は空ではないと判定する。
S920において、QSPIマスタ回路502は、ライトバッファへのリードポインタ705の値を1インクリメントする。設定されているリードポインタが7である場合、QSPIマスタ回路502は、リードポインタを0に設定する。そして、S918処理を戻す。
S919でライトバッファ511が空であると判定された場合、QSPIマスタ回路502は、データ通信イネーブル信号がネゲートされているか否かを判定する(S921)。QSPIマスタ回路502は、データ通信イネーブル704の電圧レベルがLowレベルである場合、データ通信イネーブル信号がネゲートされていると判定する。
S921において、データ通信イネーブル信号がネゲートされていない場合、QSPIマスタデバイス410はデータ転送の途中である。そこで、QSPIマスタ回路502は、以下のS922〜S924に記載の処理を実行する。
QSPIマスタ回路502は、SCKゲート回路532を制御し、QSPIスレーブデバイス412に供給されるクロック信号をゲートする(S922)。これにより、QSPIスレーブデバイス412へのデータの転送が一時停止される。
そして、QSPIマスタ回路502は、ライトバッファ511が空か否かを改めて判定する(S923)。QSPIマスタ回路502は、ライトポインタとリードポインタを取得し、取得したライトポインタとリードポインタを比較する。ライトポインタとリードポインタが一致している場合、QSPIマスタ回路502はライトバッファ511が空であると判定する。ライトポインタとリードポインタが異なる値である場合、QSPIマスタ回路502は、ライトバッファ511に読み出していないデータが格納されており、ライトバッファ511が空でないと判定する。たとえば、図7のT108において、リートポインタとライトポインタがともに同じ値となる。そのため、T108においてQSPIマスタ回路502は、読み出していないデータがライトバッファ511に格納されておらず、ライトバッファ511が空であると判定する。QSPIマスタ回路502は、クロック信号をQSPIスレーブデバイス412に供給せず、ライトバッファ511にデータが溜まるのを待つ。そして、ライトバッファ511に読み出していないデータが溜まった後、QSPIマスタ回路502はQSPIスレーブデバイス412へのクロック信号の供給を再開して、QSPIスレーブデバイス412へのデータの書き込みを再開する。
ライトバッファ511が空の場合、QSPIマスタ回路502はS923の処理を繰り返し実行する。ライトバッファ511に読み出しデータがない場合、ライトバッファ511に読み出すデータが溜まるまで、QSPIスレーブデバイス412へのクロック供給を停止する。
ライトバッファ511が空でなかった場合、QSPIマスタ回路502は、SCKゲート回路532を制御し、QSPIスレーブデバイス412へのクロック信号のゲートを解消し、クロック信号の供給を再開する。クロック信号の供給の再開後、QSPIマスタ回路502は、S920に処理を進める。
S921でデータ信号イネーブル信号がネゲートされている場合、QSPIマスタ回路502は、CS信号線553の電圧レベルをHighレベルにし、CS信号をネゲートする(S925)。ライトバッファ511に格納されたデータを全て読出し、且つ、QSPIマスタデバイス410がライトデータの転送を完了している場合、QSPIスレーブデバイス412へのデータ転送が完了していることとなる。そこで、QSPIマスタ回路502は、QSPIマスタ回路502とQSPIスレーブデバイス412間のCS信号をネゲートし、QSPIマスタ回路502とQSPIスレーブデバイス412の間の通信を終了する。
本実施形態ではQSPIマスタ回路502からQSPIスレーブデバイス412に供給されるクロック信号の周波数をQSPIマスタデバイス410がQSPIスレーブ回路501に供給するクロック信号の周波数よりも速くする。このようにすることで、ライトバッファ511からのデータの読み出し速度が、QSPIマスタ回路502,503がライトバッファ511への書き込み速度より速くなる。そのため、ライトバッファ511にデータが溜まり、読み出し前のデータでライトバッファ511があふれてしまうことを防ぐことができる。一方で、ライトバッファ511への書き込みが追い付かず、ライトバッファ511が空になる可能性がある。そこで、QSPIスレーブデバイスへのクロック供給を停止し、QSPIスレーブデバイスへのデータ転送を一時的に停止する。そして、ライトバッファ511にデータが溜まった後、再度QSPIスレーブデバイスへの転送を再開する。
図9(b)ではQSPIマスタ回路502の実行する処理を説明したが、QSPIマスタ回路503も図9(b)に示す処理を実行する。QSPIマスタ回路503が図9(b)に示す処理を実行する際には、QSPIマスタ回路503はS912において受信したアドレスがQSPIスレーブデバイス413を示すアドレスか否かを判定する。
続いて、QSPIブリッジデバイス411のリードアクセス時の処理について、図8と図10を用いて詳しく説明する。図8はQSPIマスタデバイス410からリードコマンドが発行された場合の処理の流れを示すタイミングチャートである。なお、本実施形態においては、QSPIマスタデバイス410がQSPIスレーブデバイス412からデータを読み出すとする。
図8のリードバッファからのリードポインタ800は、QSPIマスタ回路503のリードバッファ512に格納されたデータを読み出す場合のアクセス先となるバッファを示すポインタである。リードバッファへのライトポインタ801は、QSPIマスタ回路502,503リードバッファ512、513へデータを格納するときのアクセス先となるバッファを示すポインタである。
図10(a)は、QSPIマスタデバイス410がリードコマンドを発行した場合の、QSPIスレーブ回路501の実行する処理を示すフローチャートである。
QSPIスレーブ回路501はCS信号がアサートされた否かを判定する(S1001)。時刻T201において、QSPIマスタデバイス410はQSPIブリッジデバイス411に対してリード動作を開始するため、CS信号線543の電圧レベルをLowレベルに設定する。QSPIスレーブ回路501は、CS信号がアサートされたことに従って、S1002に処理を進める。
QSPIスレーブ回路501は、QSPIマスタデバイス410からIO_0信号線544〜IO_3信号線548を介してオペコードを受信する(S1002)。QSPIスレーブ回路501はオペコードを受信して、不図示のバッファに格納する。QSPIスレーブ回路501はオペコードの受信が完了したか否かを判定する(S1003)。オペコードの受信が完了している場合、QSPIスレーブ回路501は処理をS1003以降に進める。オペコードの受信が完了していない場合、QSPIスレーブ回路501は引き続きオペコードを受信する。時刻T202において、QSPIスレーブ回路501はQSPIマスタデバイス410からオペコードの受信を完了する。また、QSPIスレーブ回路501は、受信したオペコードを保持し、信号線520,521を介してQSPIマスタ回路502,503にオペコード700を出力する。
QSPIスレーブ回路501はQSPIマスタデバイス410からアドレスを受信する(S1004)。QSPIスレーブ回路501は、受信したアドレス701を不図示のバッファに格納し、信号線520、521を介してQSPIマスタ回路502、503に出力する。QSPIスレーブ回路501は、アドレスの受信を完了したか否かを判定する(S1005)。T203においてQSPIスレーブ回路501は、アドレスの受信を完了する。QSPIスレーブ回路501は受信したアドレスを解析し、アドレスによって指定されるデバイスがQSPIスレーブデバイス412であるか、QSPIスレーブデバイス413であるかを判定する。以降、QSPIスレーブ回路501がリードバッファからデータを読み出す際には、S1005で判別されたQSPIスレーブデバイスと接続されるQSPIマスタ回路のリードバッファからデータを読み出す。
時刻T204において、QSPIスレーブ回路501は、データ通信イネーブル信号をアサートする(S1006)。QSPIスレーブ回路501は、データ通信イネーブル704の電圧レベルをHighレベルにする。そして、QSPIスレーブ回路501は、信号線520、521を介してQSPIスレーブデバイス412、413からリードデータを受信したか否かを判定する(S1007)。QSPIスレーブ回路501はリードデータを受信するまで、S1007に記載の処理を繰り替えし実行する。すなわち、QSPIスレーブ回路501はダミーサイクルの間S1007に記載の処理を実行する。QSPIスレーブ回路501は、リードデータを受信した場合S1008に処理を進める。QSPIスレーブ回路501は、IO_0信号線545〜IO_3信号線348を介してQSPIマスタデバイス410に受信したリードデータを送信する。
QSPIスレーブ回路501は、QSPIマスタデバイス410の出力するCS信号がネゲートされたか否かを判定する(S1009)。QSPIスレーブ回路501は、CS信号線543の電圧レベルがHighレベルである場合、CS信号がネゲートされたと判定する。QSPIスレーブ回路501は、データ通信イネーブル信号をネゲートする(S1010)。T209でQSPIマスタデバイス410がCS信号をネゲートした後、T210でQSPIスレーブ回路501がデータ通信イネーブル704の電圧レベルをLowレベルに設定する。
図10(b)は、QSPIマスタ回路502の実行する処理を示すフローチャートである。
QSPIマスタ回路502は、データ通信イネーブル信号がアサートされたか否かを判定する(S1011)。S1011において、QSPIマスタ回路502は、データ通信イネーブル704の電圧レベルがHighレベルである場合に、データ通信イネーブル信号がアサートされていると判定する。T205において、データ通信イネーブル704がアサートされるまで、QSPIマスタ回路502は、S1009に記載の処理を実行する。
データ通信イネーブル信号がアサートされた後、QSPIマスタ回路502は、信号線520を介して受信されるアドレス701が接続されているQSPIスレーブデバイス412を指定するアドレスであるか否かを判定する(S1012)。信号線520を介して受信されたアドレス701がQSPIスレーブデバイス412を指定するアドレスである場合、S1013以降の処理を実行する。信号線520を介して受信されたアドレスがQSPIスレーブデバイス412を指定するアドレスでない場合、図10(b)に記載の処理を終了する。
QSPIマスタ回路502は、CS信号をアサートする(S1013)。T205において、QSPIマスタ回路502は、CS信号線543の電圧レベルをLowレベルに設定し、CS信号をアサートする。そして、QSPIマスタ回路502は、SCKゲート信号線552の電圧レベルをLowレベルに設定しSCKゲート信号をアサートする(S1014)。
QSPIマスタ回路502は、IO_0信号554〜IO_3信号557を介してオペコードをQSPIスレーブデバイス412に送信する(S1015)。続けて、QSPIマスタ回路502は、IO_0信号554〜IO_3信号557を介してアドレスをQSPIスレーブデバイス412に送信する(S1016)。そして、QSPIマスタ回路502は、リードバッファ512へアクセスする際のライトポインタを読み出す(S1017)。T206において、リードバッファへのライトポインタ801を取得する。
QSPIマスタ回路502は、QSPIスレーブデバイス412からリードデータを受信し、S1017で読み出したライトポインタで示されるリードバッファ512に受信したリードデータを格納する(S1018)。なお、本実施形態においては、リードコマンドの発行時のダミーサイクルは3サイクルであるとするが、サイクル数は上記のサイクル数に限らない。
QSPIマスタ回路502は、データ通信イネーブル信号がネゲートされたか否かを判定する(S1019)。QSPIマスタ回路502は、データ通信イネーブル704の電圧レベルがLowレベルであると判定した場合、データ通信イネーブル信号がネゲートされたと判定する。データ通信イネーブル信号がネゲートされている場合、QSPIマスタデバイス410からのアクセスが完了している場合であるため、QSPIマスタ回路502は図10(b)に記載の処理を完了する。
データ通信イネーブル信号がネゲートされていない場合、QSPIマスタ回路502は、リードバッファがいっぱいになったか否かを判定する(S1020)。QSPIマスタ回路502は、リードバッファ512にアクセスする際のライトポインタ801とリードポインタ800の値を比較する。QSPIマスタ回路502は、ライトポインタ801とリードポインタ800の値が一致している場合にリードバッファ512がいっぱいであると判定する。リードバッファ512がいっぱいでない場合、QSPIマスタ回路502はライトポインタの値を1インクリメントする(S1021)。
リードバッファがいっぱいである場合、QSPIマスタ回路502は、SCK信号をネゲートし、QSPIスレーブデバイス412にSCK信号が入力されないよう制御する(S1022)。たとえば、T207では、リードバッファ512に対するライトポインタとリードポインタの値が一致している。QSPIマスタ回路502は、リードバッファ512がいっぱいであると判定し、SCKゲート信号線552の電圧レベルをHighレベルに設定する。これにより、クロック信号がQSPIスレーブデバイス412に入力されないよう制御する。
QSPIマスタ回路502は、リードバッファがいっぱいであるかを判定する(S1023)。S1023において、QSPIマスタ回路502は、リードバッファ512に対するライトポインタとリードポインタを比較する。ライトポインタとリードポインタが一致する場合、リードバッファ512がいっぱいであると判定する。
リードバッファ512がいっぱいでなくなった場合、QSPIマスタ回路502は、SCKゲート信号線552の電圧レベルをLowレベルに設定して、SCKゲート回路532によるクロック信号のゲートを解除する(S1024)。これにより、ふたたびQSPIスレーブデバイス412にクロック信号が供給される。たとえば、T208のようにリードポインタとライトポインタの値が異なる場合、QSPIマスタ回路502はリードバッファ512がいっぱいでないと判定する。すなわり、リードバッファ512はQSPIスレーブデバイス412から読み出したデータを格納することができる。この場合、QSPIマスタ回路502はQSPIスレーブデバイス412へのクロック信号のゲートを解除し、リードデータの読み出しを再開する。本実施形態では、上記のようにQSPIスレーブデバイスに入力されるCS信号をネゲートすることなく、SCK信号のみをゲートする。このようにすることで、ブリッジデバイスとQSPIスレーブデバイスの通信を完了させることなく、データ転送を一時的に停止することができる。そのため、ブリッジデバイスがQSPIスレーブデバイスに対してコマンドやアドレスを出力しなくてもクロック信号のゲートを解除することでデータ転送を再開することができる。
S1019において、データ通信イネーブル信号がネゲートされてた場合、QSPIマスタ回路502は、CS信号線553の電圧レベルをHighレベルにし、CS信号をネゲートする(S1025)。以上で図10に記載の処理を完了する。
本実施形態では、QSPIマスタ回路502、503に、QSPIスレーブ回路501に供給されるクロック信号よりも速い周波数のクロック信号を供給する。そのため、QSPIマスタデバイス410がリード要求を発行した際の、リードバッファ512、513からの読み出しがリードバッファへの書き込みよりも遅くなる。そして、リードバッファ512、513が読出しの完了していないデータでいっぱいになってしまう場合がある。そこで、リードバッファ512、513が読出しの完了していないデータでいっぱいになった場合に、QSPIマスタ回路502、503はQSPIスレーブデバイス412,413へのクロック信号の供給を一時停止する。そして、QSPIマスタ回路502、503は、QSPIスレーブデバイス412,413からのデータの読み出しを一時的に停止し、QSPIスレーブ回路501によるリードバッファ512からのデータの読み出しのみを実行する。このようにすることで、リードバッファ512、513のあふれによるデータの消失を防ぐことができる。
上述のように、ブリッジデバイスを用いてQSPIマスタデバイスとQSPIスレーブデバイスを接続する場合に、QSPIマスタデバイスから供給されるクロック信号と異なるクロック信号をQSPIスレーブデバイスに供給する。そして、QSPIスレーブに供給されるクロック信号は、少なくともブリッジデバイスとQSPIスレーブデバイスがデータの転送を行っている間継続して供給される。このようにすることで、ブリッジデバイスが最後までQSPIデバイスとデータの転送を行うことができる。
また、ブリッジデバイスは、QSPIマスタデバイスから供給されるクロック信号よりも速い周波数のクロック信号をQSPIスレーブデバイスに供給する。このようにすることで、ブリッジデバイス内のバッファが、QSPIマスタデバイスから転送されたデータであふれることなく、ブリッジデバイスに転送されたデータをQSPIスレーブデバイスに転送することができる。
<その他の実施形態>
なお、本実施形態においては、QSPIスレーブ回路501、QSPIマスタ回路502、503を用いて図9、図10に記載の処理を実行するとして説明した。CPUがブリッジデバイスを制御し、当該処理を実行するとしてもよい。
なお、本実施形態においては、QSPIスレーブ回路501、QSPIマスタ回路502、503を用いて図9、図10に記載の処理を実行するとして説明した。CPUがブリッジデバイスを制御し、当該処理を実行するとしてもよい。
上記の実施形態では、QSPIマスタデバイス410とQSPIブリッジデバイス411との間のデータ転送速度と、QSPIブリッジデバイス411とQSPIスレーブデバイス412、413との間のデータ転送速度に違いがある場合を例に説明した。上記の実施形態では、それぞれのデータ転送速度に差があるため、ライトバッファ511、リードバッファ512、513が空になったり、データの空き容量がなくなってしまったりしていた。それぞれのデータ転送速度が同じであっても、以下のような場合にはバッファが空になったり、一杯になってしまうことがある。たとえば、QSPIマスタデバイス410がライトアクセス中に一時的にデータの入出力を停止するためにCS信号をネゲートすることなくクロック信号の出力を停止する。このとき、QSPIブリッジデバイス411とQSPIスレーブデバイス412、413の間でのライトアクセスは継続されるため、バッファが空になりスレーブデバイスへ書き込むデータがなくなってしまう可能性がある。そこで、ブリッジデバイスからスレーブデバイスへのデータ転送を一時的に停止する。また、マスタデバイスがブリッジデバイスにリードアクセスしている途中で一時的にデータの入出力を停止するためにCS信号をネゲートすることなくクロック信号の出力を停止する。このとき、QSPIブリッジデバイス411とQSPIスレーブデバイス412、413の間でのリードアクセスは継続されるため、読み出したデータでバッファの空き容量がなくなってしまう可能性がある。そこで、QSPIスレーブデバイスからのデータwの読み出しを一時的に停止し、読み出したデータをバッファに格納できない状態が発生することを防ぐことができる。上記のように、マスタデバイスとブリッジデバイス、ブリッジデバイスとスレーブデバイスの間のデータ転送速度が同じであっても、本実施形態の制御を実行することでバッファが空になったり、バッファのデータ容量が不足してしまうのを抑制することができる。
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施例の機能を実現するソフトウェア(プログラム)をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム又は装置のコンピュータ(又はCPUやMPU等)がプログラムコードを読み出して実行する処理である。この場合、そのコンピュータプログラム、及び該コンピュータプログラムを記憶した記憶媒体は本発明を構成することになる。
Claims (18)
- 第1のデバイスから受信されたコマンドに応じて、前記第1のデバイスとデータ転送を行う第1の通信手段と、
前記第1のデバイスから受信された前記コマンドに応じて、第2のデバイスとデータ転送を行う第2の通信手段と、
前記第1の通信手段、または、前記第2の通信手段を介して入力されたデータを記憶する記憶手段と、を有するブリッジデバイスにおいて、
前記記憶手段の状態に応じて、前記第2の通信手段による前記第2のデバイスとのデータ転送を停止する制御手段を有することを特徴とするブリッジデバイス。 - 前記第2の通信手段は、前記第1のデバイスから受信されたデータを読み出すためのコマンドに応じて、前記第2のデバイスから読み出されたデータを前記記憶手段に記憶し、
前記第1の通信手段は、前記第1のデバイスから受信された前記データを読み出すためのコマンドに応じて、前記記憶手段に記憶されたデータを前記第1のデバイスに出力し、
前記制御手段は、前記記憶手段に前記第2のデバイスから読み出したデータを格納することができないこと応じて、前記第2のデバイスからのデータの読み出しを停止することを特徴とする請求項1に記載のブリッジデバイス。 - 前記制御手段は、前記記憶手段に記憶されたデータが前記第1の通信手段により出力されていないデータのみである場合に、前記第2のデバイスから読み出したデータを前記記憶手段に記憶することができないと判定することを特徴とする請求項2に記載のブリッジデバイス。
- 前記制御手段は、前記第2のデバイスからのデータの読み出しを停止した後に、前記第1の通信手段が前記記憶手段に記憶されたデータを前記第1のデバイスに出力したことに応じて、前記第2のデバイスからのデータの読み出しを再開することを特徴とする請求項2または3に記載のブリッジデバイス。
- 前記制御手段は、前記第2の通信手段により前記第2のデバイスから読み出されたデータの書き込み箇所を示すポインタと、前記第1の通信手段が前記記憶手段から読み出すデータの記憶された箇所を示すポインタの値が一致したことに基づいて、前記第2の通信手段によるデータの読み出しを停止することを特徴とする請求項2乃至4のいずれか一項に記載のブリッジデバイス。
- 前記第1の通信手段は、前記第1のデバイスから入力されたデータを前記第2のデバイスに書き込むためのコマンドに応じて、前記第1のデバイスから入力されたデータを前記記憶手段に記憶させ、
前記第2の通信手段は、前記第1のデバイスから入力されたデータを前記第2のデバイスに書き込むためのコマンドに応じて、前記記憶手段に記憶されたデータを前記第2のデバイスに出力し、
前記制御手段は、前記第2の通信手段により前記第2のデバイスへ書き込むデータが前記記憶手段に記憶されていないことに基づいて、前記第2の通信手段による前記第2のデバイスへのデータの書き込みを停止させることを特徴とする請求項1乃至5のいずれか一項に記載のブリッジデバイス。 - 前記制御手段は、前記第2の通信手段により前記第2のデバイスへ書き込むデータが前記記憶手段に記憶されていることに基づいて、前記第2の通信手段による前記第2のデバイスへのデータの書き込みを再開することを特徴とする請求項6に記載のブリッジデバイス。
- 前記制御手段は、前記第1の通信手段を介して入力されたデータの記憶される箇所を示すポインタと前記第2の通信手段により出力されるデータの記憶された箇所を示すポインタの値を比較して、前記第2の通信手段による前記第2のデバイスへのデータの書き込みを停止させることを特徴とする請求項6または7に記載のブリッジデバイス。
- 前記第1の通信手段は、前記第1のデバイスが出力するクロック信号に応じて、前記第1のデバイスと通信することを特徴とする請求項1乃至8のいずれか一項に記載のブリッジデバイス。
- 前記第1の通信手段は、前記第2のデバイスを制御するためのコマンド、アドレス、データを同じ信号線で転送することを特徴とする請求項1乃至9のいずれか一項に記載のブリッジデバイス。
- 前記第1の通信手段は、前記第1のデバイスとSPIの規格に則った通信を行うことを特徴とする請求項1乃至10のいずれか一項に記載のブリッジデバイス。
- 前記第2の通信手段は、前記第2のデバイスとSPIの規格に則った通信を行うことを特徴とする請求項1乃至11のいずれか一項に記載のブリッジデバイス。
- 前記第2の通信手段は、前記第2のデバイスとのデータ転送に用いられるクロック信号を前記第2のデバイスに対して出力し、
前記制御手段は、前記第2の通信手段により出力されたクロック信号をゲートすることで、前記第2のデバイスへのデータ転送を停止することを特徴とする請求項1乃至12のいずれか一項に記載のブリッジデバイス。 - 前記ブリッジデバイスは、前記第2のデバイスと通信することを示すチップセレクト信号をアサートし、
前記制御手段は、前記ブリッジデバイスがアサートした前記チップセレクト信号をネゲートすることなく、前記第2のデバイスとのデータ転送を停止することを特徴とする請求項1乃至13のいずれか一項に記載のブリッジデバイス。 - 前記第2の通信手段は、前記制御手段により前記第2のデバイスとのデータ転送が再開された場合、前記第2のデバイスにコマンド、アドレスを出力することなくデータ転送を再開することを特徴とする請求項1乃至14のいずれか一項に記載のブリッジデバイス。
- 前記制御手段は、前記第1の通信手段による通信を停止させることなく、前記第2の通信手段による前記第2のデバイスとのデータ転送を停止することを特徴とする請求項1乃至15のいずれか一項に記載のブリッジデバイス。
- 第1のデバイスから受信されたコマンドに応じて、前記第1のデバイスとデータ転送を行う第1の通信工程と、
前記第1のデバイスから受信された前記コマンドに応じて、第2のデバイスとデータ転送を行う第2の通信工程と、
前記第1の通信工程、または、前記第2の通信工程において入力されたデータを記憶手段に記憶する記憶工程と、を有するブリッジデバイスの制御方法において、
前記記憶手段の状態に応じて、前記第2の通信工程における前記第2のデバイスとのデータ転送を停止する制御工程を有することを特徴とするブリッジデバイスの制御方法。 - 請求項1乃至16のいずれか一項に記載のブリッジデバイスを有する情報処理装置。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018163192A JP2020035337A (ja) | 2018-08-31 | 2018-08-31 | ブリッジデバイスとブリッジデバイスの制御方法、ならびに当該ブリッジデバイスを有する情報処理装置 |
US16/542,741 US20200073837A1 (en) | 2018-08-31 | 2019-08-16 | Bridge device, method for controlling bridge device, and information processing apparatus including bridge device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018163192A JP2020035337A (ja) | 2018-08-31 | 2018-08-31 | ブリッジデバイスとブリッジデバイスの制御方法、ならびに当該ブリッジデバイスを有する情報処理装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020035337A true JP2020035337A (ja) | 2020-03-05 |
Family
ID=69640033
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018163192A Pending JP2020035337A (ja) | 2018-08-31 | 2018-08-31 | ブリッジデバイスとブリッジデバイスの制御方法、ならびに当該ブリッジデバイスを有する情報処理装置 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20200073837A1 (ja) |
JP (1) | JP2020035337A (ja) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10146704B2 (en) * | 2016-02-16 | 2018-12-04 | Dell Products L.P. | Volatile/non-volatile memory device access provisioning system |
US10482045B2 (en) * | 2016-02-17 | 2019-11-19 | Analog Devices Global Unlimited Company | Data communication interface for processing data in low power systems |
US10268448B2 (en) * | 2016-05-06 | 2019-04-23 | Texas Instruments Incorporated | Data flow control for multi-chip-select |
-
2018
- 2018-08-31 JP JP2018163192A patent/JP2020035337A/ja active Pending
-
2019
- 2019-08-16 US US16/542,741 patent/US20200073837A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20200073837A1 (en) | 2020-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100555257C (zh) | 处理页面复制期间的dma操作的存储控制器和方法 | |
EP2613269A1 (en) | Multi-core processor system, synchronisation control system, synchronisation control device, information generation method, and information generation programme | |
US8281073B2 (en) | Information processing apparatus and method of controlling same | |
US20100153622A1 (en) | Data Access Controller and Data Accessing Method | |
JP6843508B2 (ja) | 情報処理装置及び情報処理装置の制御方法 | |
JP2020035337A (ja) | ブリッジデバイスとブリッジデバイスの制御方法、ならびに当該ブリッジデバイスを有する情報処理装置 | |
JP2020035336A (ja) | ブリッジデバイスとブリッジデバイスの制御方法、ならびに当該ブリッジデバイスを有する情報処理装置 | |
CN116610601A (zh) | 一种数据传输装置及其控制方法、装置、介质 | |
CN107678681B (zh) | 信息处理系统、信息处理系统中的方法以及存储介质 | |
JP2012006389A (ja) | 画像形成装置および書込制御方法 | |
JP2002183675A (ja) | データ記録媒体の制御装置とその方法、データ記録装置および制御装置 | |
JPH11232213A (ja) | 入出力装置におけるデータ転送方式 | |
JP2006126938A (ja) | データ転送システム及びそのデータ転送方法 | |
JP2011138401A (ja) | プロセッサシステム、プロセッサシステムの制御方法、及び制御回路 | |
US9197782B2 (en) | Image processing device and image processing method | |
JP2005258783A (ja) | データ転送装置、データ転送方法、画像形成装置及びオプションボード | |
US20200076645A1 (en) | Bridge device and information processing apparatus including bridge device | |
JP2009053829A (ja) | 情報処理装置、情報処理プログラム | |
JPH11203059A (ja) | 画像入出力処理装置および画像入出力処理装置のメモリアクセス方法およびコンピュータが読み出し可能なプログラムを格納した記憶媒体 | |
CN118838648A (zh) | 一种多闪存的控制方法、装置、计算机设备及存储介质 | |
JP6213029B2 (ja) | 通信装置、及び通信システム | |
JP2001282705A (ja) | データ転送装置と画像処理装置及び画像形成装置 | |
JP2022122677A (ja) | 情報処理装置および情報処理装置の制御方法 | |
JP5656589B2 (ja) | データ転送装置、データ転送方法及びデータ転送プログラム | |
JP2581144B2 (ja) | バス制御装置 |