(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024000983
(43)【公開日】2024-01-09
(54)【発明の名称】SPIホストとSPIデバイスの間のSPI動作モード同期の方法、およびSPIバス同期装置
(51)【国際特許分類】
G06F 13/38 20060101AFI20231226BHJP
G06F 13/42 20060101ALI20231226BHJP
【FI】
G06F13/38 320A
G06F13/42 310
【審査請求】有
【請求項の数】20
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023098526
(22)【出願日】2023-06-15
(31)【優先権主張番号】17/844,764
(32)【優先日】2022-06-21
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】512167426
【氏名又は名称】華邦電子股▲ふん▼有限公司
【氏名又は名称原語表記】Winbond Electronics Corp.
(74)【代理人】
【識別番号】100204490
【弁理士】
【氏名又は名称】三上 葉子
(72)【発明者】
【氏名】アドモン, イッテー
(57)【要約】 (修正有)
【課題】SPI通信における同期外れの検出および回復に用いる方法及びSPIバス同期装置を提供する。
【解決手段】SPIバスを介して通信するSPIホストとSPIデバイスの間のSPI動作モード同期の方法は、SPI通信システムにおいて、SPIホストとSPIデバイスの間のSPI動作モードの同期外れを指示するものとして、SPIバス上の1つまたはそれ以上の値を予め定義することを含み、SPIデバイスにおいて予め定義された値のいずれかを受信すると、それに応答して、SPI動作モードの再同期が開始される。
【選択図】
図1
【特許請求の範囲】
【請求項1】
SPIバスを介して通信するSPIホストとSPIデバイスの間のシリアル・ペリフェラル・インターフェース(SPI)動作モード同期の方法であって、
前記SPIデバイスにおいて、前記SPIホストと前記SPIデバイスの間のSPI動作モードの同期外れを指示するものとして、前記SPIバス上の1つまたはそれ以上の値を予め定義することと、
前記SPIデバイスにおいて前記予め定義された値のいずれかを受信すると、それに応答して、前記SPI動作モードの再同期を開始することと、
を含む方法。
【請求項2】
前記SPIバスの1つまたはそれ以上の線が、前記1つまたはそれ以上の線を定義されたロジック状態に強制するプルアップまたはプルダウンデバイスに接続され、前記同期外れを指示する前記1つまたはそれ以上の値が、前記1つまたはそれ以上の線が前記定義されたロジック状態にある前記1つまたはそれ以上の値を含む請求項1に記載の方法。
【請求項3】
前記同期外れを指示する前記1つまたはそれ以上の値が、前記SPIホストと前記SPIデバイスの間で予め調整された予め定義された値のシーケンスを含む請求項1に記載の方法。
【請求項4】
前記SPIホストにより前記予め定義された値のうちの1つまたはそれ以上を送信して、前記SPIデバイスに前記再同期を開始させることを含む請求項1に記載の方法。
【請求項5】
前記1つまたはそれ以上の予め定義された値が、予め定義されたビットのグループが定義されたロジック状態にある1つまたはそれ以上のSPI指令操作コードを含む請求項1に記載の方法。
【請求項6】
前記1つまたはそれ以上の予め定義された値が、予め定義されたビットのグループが定義されたロジック状態にある1つまたはそれ以上のSPIアドレス操作コードを含む請求項1に記載の方法。
【請求項7】
前記SPIデバイスにおいて、前記SPIホストに応答せずに現在の操作を中止することを含む請求項1に記載の方法。
【請求項8】
前記再同期を開始することが、前記SPIデバイスにおいて、デフォルトSPI動作モードに戻ることを含む請求項1に記載の方法。
【請求項9】
前記デフォルトSPI動作モードが、1線式、24ビットアドレス、非XIP(non-Execute-In-Place)動作モードである請求項8に記載の方法。
【請求項10】
前記SPIデバイスにおいて、デフォルトの動作モードおよび現在の動作モードにおいて同時にSPI指令をデコードすることを含み、前記再同期を開始することが、前記予め定義された値のいずれかを受信したときに前記デフォルトの動作モードに戻ることを含む請求項1に記載の方法。
【請求項11】
シリアル・ペリフェラル・インターフェース(SPI)ホストと、
SPIデバイスと、
を含み、前記SPIデバイスが、
SPIバスを介して前記SPIホストと通信することと、
前記SPIバス上で、前記SPIホストと前記SPIデバイスの間のSPI動作モードの同期外れを指示するものとして前記SPIデバイスにおいて予め定義された1つまたはそれ以上の値のいずれかを受信すると、それに応答して、前記SPI動作モードの再同期を開始することと、
を行うように構成された装置。
【請求項12】
前記SPIバスの1つまたはそれ以上の線が、前記1つまたはそれ以上の線を定義されたロジック状態に強制するプルアップまたはプルダウンデバイスに接続され、前記同期外れを指示する前記1つまたはそれ以上の値が、前記1つまたはそれ以上の線が前記定義されたロジック状態にある前記1つまたはそれ以上の値を含む請求項11に記載の装置。
【請求項13】
前記同期外れを指示する前記1つまたはそれ以上の値が、前記SPIホストと前記SPIデバイスの間で予め調整された予め定義された値のシーケンスを含む請求項11に記載の装置。
【請求項14】
前記SPIホストが、前記予め定義された値の1つまたはそれ以上を送信して、前記SPIデバイスに前記再同期を開始させるように構成された請求項11に記載の装置。
【請求項15】
前記1つまたはそれ以上の予め定義された値が、予め定義されたビットのグループが定義されたロジック状態にある1つまたはそれ以上のSPI指令操作コードを含む請求項11に記載の装置。
【請求項16】
前記1つまたはそれ以上の予め定義された値が、予め定義されたビットのグループが定義されたロジック状態にある1つまたはそれ以上のSPIアドレス操作コードを含む請求項11に記載の装置。
【請求項17】
前記SPIデバイスが、前記SPIホストに応答せずに現在の操作を中止するように構成された請求項11に記載の装置。
【請求項18】
前記SPIデバイスが、デフォルトの動作モードに戻ることによって前記再同期を開始するように構成された請求項11に記載の装置。
【請求項19】
前記デフォルトの動作モードが、1線式、24ビットアドレス、非XIP動作モードである請求項18に記載の装置。
【請求項20】
前記SPIデバイスが、デフォルトの動作モードおよび現在の動作モードにおいて同時にSPI指令をデコードするように構成され、前記予め定義された値のいずれかを受信したときに前記デフォルトの動作モードに戻ることによって前記再同期を開始する請求項11に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シリアル・ペリフェラル・インターフェース(Serial-Peripheral Interface, SPI)バスに関するものであり、特に、SPI通信における同期外れの検出および回復に用いる方法およびシステムに関するものである。
【背景技術】
【0002】
SPI通信システムは、複数の動作モードのうちの1つにある。SPI通信システムにおいて、SPIホストは、通常、適切な指令をSPIデバイスに送信することによって動作モードを設定する。SPIホストとSPIデバイスが同じモードにない(「同期されていない」)場合には、誤操作が発生することがある。
【発明の概要】
【発明が解決しようとする課題】
【0003】
SPI(Serial-Peripheral Interface)は、SPIホストとSPIデバイスの間の二重通信用に定義されている。現在、SPIは、プロセッサとフラッシュメモリデバイスの間の通信に広く使用されており、プロセッサ(SPIマスターとして機能する)がフラッシュメモリ(SPIデバイスとして機能する)に指令を送信して、SPIデバイスがいくつかのオペコードに対してデータを返送する。
【0004】
SPIは、もともとシングルビット(1ビット)SPIとして定義されており、1本の線を使用してすべてのコマンドフェーズ(コマンド、アドレス、データ)を送信し、このモードを1-1-1と呼ぶ。性能を向上させるために、SPIは、このとき、4ビットおよび8ビットSPIに拡張され、1ビットを使用してコマンドを送信し、4ビットまたは8ビットを使用してアドレスとデータを送信する(1-4-4および1-8-8モードと呼ぶ)。その後、新しいバスモードが追加され、新しいバスモードには、4ビット周辺インターフェース(Quad Peripheral Interface, QPI)および8ビット周辺インターフェース(Octal Peripheral Interface, OPI)が含まれる。QPIでは、さらに、4ビットを使用してすべてのコマンドフェーズを送信し(4-4-4モードと呼ぶ)、OPIでは、さらに8ビットを使用してすべてのコマンドフェーズを送信する(8-8-8モードと呼ぶ)。また、XIP(Execute-In-Place)動作モードと一緒に使用できることもあり、SPIホストは、操作コード(オペコード)を送信せず、SPIデバイスは、前のコマンドに基づいて操作コードが変更されないと仮定する。一般的に、QPIまたはOPIをサポートするSPIホストまたはSPIデバイスは、少なくとも1つのSPIモード(例えば、1-1-1、1-4-4、または1-8-8モードのいずれか)もサポートし、通常、SPIモードは、デフォルトSPI動作モードとして配置される。
【0005】
すべての場合において、SPIホストおよびSPIデバイスは、同じ動作モードを使用して操作を行う必要がある。SPIホストとSPIデバイスが何らかのエラーにより異なる動作モードになった場合(例えば、ホストがリセットされた場合)、SPIデバイスが無用なコマンドを実行し、SPIホストがエラーを受信したSPIデバイスからデータを読み取る可能性がある。SPIホストが動作モードを変更したのにSPIデバイスが動作モードを変更しなかったとき(またはその逆)、同期外れが発生するとみなされる。
【課題を解決するための手段】
【0006】
本発明は、SPI(Serial-Peripheral Interface)バスを介して通信するSPIホストとSPIデバイスの間のSPI動作モード同期の方法を提供する。この方法は、SPIデバイスにおいて、SPIホストとSPIデバイスの間のSPI動作モードの同期外れを指示するものとして、SPIバス上の1つまたはそれ以上の値を予め定義することを含む。SPIデバイスにおいて予め定義された値のいずれかを受信すると、それに応答して、SPI動作モードの再同期を開始する。
【0007】
本発明は、さらに、SPI(Serial-Peripheral Interface)ホストおよびSPIデバイスを含む装置を提供する。SPIデバイスは、SPIバスを介してSPIホストと通信し、SPIバス上で、SPIホストとSPIデバイスの間のSPI動作モードの同期外れを指示するものとしてSPIデバイスにおいて予め定義された1つまたはそれ以上の値のいずれかを受信すると、それに応答して、SPI動作モードの再同期を開始するように構成される。
【発明の効果】
【0008】
実施形態において、I/O線にプルアップ(pull-up)デバイスを追加し、および/または独特のモード-リセットシーケンスを定義することにより、SPIデバイスは、同期外れ(Lost-Sync)イベントを検出し、その状態から回復することができる。
【図面の簡単な説明】
【0009】
【
図1】本発明の1つの実施形態に係る同期外れ(Lost-Sync)検出および回復を備えたSPI通信システムを示すブロック図である。
【
図2】本発明の1つの実施形態に係る同期外れイベントの検出および回復を示す波形図である。
【
図3】本発明の1つの実施形態に係るSPIデバイスを示すブロック図である。
【
図4】本発明の1つの実施形態に係るSPIホストによりモード-リセットシーケンスを送信するときの波形図である。
【
図5】本発明の1つの実施形態に係る入力データを調べることにより同期外れイベントを検出する方法を示すフローチャートである。
【
図6】本発明の1つの実施形態に係るSPIデバイスの状態を示す状態図である。
【発明を実施するための形態】
【0010】
SPIホストとSPIデバイスの間のSPI通信は、複数のプロトコルおよび動作モードにおいて行うことができ、これらのプロトコルおよび動作モードは、データバスの幅(指令の様々なフェーズにおいて)、アドレスの長さ、およびXIP(Execute-In-Place)モードにおいて異なる。
【0011】
本願に記載されているSPI通信は、バス幅動作モード、アドレス幅動作モード、およびXIP(Execute-In-Place)動作モードをサポートすることができる。以下、その詳細について説明する。
【0012】
バス幅動作モードは、以下を含むことができる。
【0013】
(i)SPIモードは、1本の線を使用して指令の指令フェーズを送信し、1本、4本、または8本の線を使用して指令のアドレスおよびデータフェーズを送信する(それぞれ1-1-1モード、1-4-4モード、および1-8-8モードと呼ぶ)。
【0014】
(ii)QPI(Quad Peripheral Interface)モードは、指令のすべてのフェーズにおいて4本の線を使用する(4-4-4モードと呼ぶ)。
【0015】
(iii)OPI(Octal Peripheral Interface)モードは、指令のすべてのフェーズにおいて8本の線のうちの1つを使用する(8-8-8モードと呼ぶ)。
【0016】
アドレス幅動作モードは、(i)24ビットアドレス、または(ii)32ビットアドレスのいずれかでなければならない。
【0017】
XIP動作モードは、オンまたはオフのいずれかでなければならない。
【0018】
本願の1つの実施形態において、デフォルトSPI動作モードは、SPIモード(1-1-1モード、1-4-4モード、および1-8-8モードのいずれか)、24ビットアドレス、およびXIPオフとして定義することができる。SPIホストおよびSPIデバイスは、通常、いずれもリセット後にデフォルトSPI動作モードで開始する。
【0019】
図1は、本発明の1つの実施形態に係る同期外れ検出および回復を備えたSPI通信システム100を示すブロック図である。SPIホスト101(例えば、プロセッサ)は、SPIリンクを介してSPIデバイス102と通信し、SPIリンクは、チップ-セレクト(Chip-Select, CS)線103、クロック(Clock, CK)線104、入力-出力0(Input-Output 0, I/O0)線106、およびI/O1~I/O7の線108を含む。
【0020】
通信は、SPI指令を実行することを含み、SPI指令は、オペコードの送信、アドレスの送信、データの送信および/または受信を含むことができる。
【0021】
図1に示した実施形態に基づくと、I/O0線106は、常に使用されており、I/O1~I/O7の線108(破線)は、指令のいくつかまたはすべてのフェーズにおいて使用されてもよく、または一度も使用されなくてもよい。
【0022】
同期外れイベントの検出を可能にするために、I/O線108は、抵抗器110を介してVdd(電源-高電圧)に結合される。抵抗器は、SPIデバイス(またはSPIホスト)が対応する線をロー(low)に駆動したときに、SPIホストまたはデバイスが優先され、線がローに設定されるように設計される。そのため、抵抗器は、「ウィークプルアップ(weak-pull-up)」デバイスである。
【0023】
SPIホストがSPIモード(1-1-1モード、1-4-4モード、または1-8-8モードのいずれか)にあり、SPIデバイスがI/Oバスを駆動しない場合、I/O1~I/O7の線108は、オペコードフェーズの間にプルアップデバイスによってハイ(high)に駆動される。プロトコルに基づき、SPIデバイスがI/O1~I/O7において高レベルを受信することを予期していない場合、SPIデバイスは、I/O1~I/O7において高レベルを受信したときに、受信した高レベルを同期外れイベントの検出として解釈し、回復措置をとる(例えば、デフォルトSPI動作モードに切り替える)。
【0024】
そのため、SPIホストが一方的にSPIモードに変更され、SPIデバイスが何らかの理由でまだ非SPIモード(例えば、QPIモードまたはOPIモード)にある場合、I/O1~I/O7に結合されたプルアップ抵抗器は、オペコードフェーズにおいてI/O1からI/O7を高レベルに駆動することができるため、SPIデバイスは、同期外れイベントを検出して、デフォルトSPI動作モードに回復することができる。
【0025】
1つの実施形態において、SPIデバイス102が8ビットバスではなく4ビットバスをサポートする場合、SPI通信デバイス100は、単に3つのプルアップデバイスを構成することができる。別の実施形態において、プルアップデバイスは、SPIホスト101内に構成されてもよく、別の実施形態において、プルアップデバイスは、SPIデバイス102内にあってもよい。
【0026】
代替の実施形態において、プルアップデバイスの代わりに、プルダウン(pull-down)デバイス(例えば、ウィークプルダウン(weak pull-down)抵抗器)を使用することができる。一般的に、プルアップまたはプルダウンデバイスは、関連するSPI線を定義されたロジック状態(プルアップの場合は「1」、プルダウンの場合は「0」)に強制する。したがって、プルダウンデバイスを使用したとき、同期外れを指示する値も「0」に変更されなければならない。さらに別の代替の実施形態において、プルダウンデバイスは、負ロジックと組み合わせて使用され、低電圧レベルは、ロジック-ハイ(high)を表し、高電圧レベルは、ロジック-ロー(low)を表す。
【0027】
1つの実施形態において、複数のSPIデバイスを単一のSPIホストに結合してもよく、別の実施形態において、複数のSPIホストを1つまたはそれ以上のSPIデバイスに接続してもよい。
【0028】
図2は、本発明の1つの実施形態に係る同期外れイベント検出および回復を示す波形
図200である。
図2を参照すると、時間点216において、SPIホストは、CSを低レベルとして設定し、新しい指令の開始を指示する。SPIホストおよびSPIデバイスは、いずれもQPIモードにある(例えば、過去のセット-モード指令に応答して)。SPIホストは、時間点216からオペコードの送信を開始し、その後、時間点218において、アドレスの送信を開始し、時間点220において、データを送信する。
【0029】
指令は、SPIホストがCSを高レベルとして設定し、クロックを停止する時間点222において終了する。その後、時間点224において、SPIホストは、SPIモード指令を開始し、SPIデバイスは、モードの移行を見逃して、QPIモードにとどまる。
【0030】
SPIモードにあるとき、SPIホストは、オペコードフェーズにおいてI/O線1~3を駆動しないが、線がプルアップデバイス110(
図1)に結合されているため、I/O線1~3は、高レベルであると仮定する。オペコードフェーズにおけるSPIデバイスは、I/O線1~3において「1」を受信する。現在のオペコードの最上位2ビットが0であると仮定すると、SPIデバイスは、I/O0(つまり、I0=0およびI4=0)から0を取得し、得られるオペコードは、11101110(0xEE)となる。SPIデバイスは、このオペコードを同期外れ指示として認識し、時間点226において、デフォルトモードに切り替えて、同期外れイベントから回復する。
【0031】
いくつかの実施形態において、時間点216と218の間のバス幅動作モードは、オクタル(octal)であってもよく、I/O線4~7を追加することができる。1つの実施形態において、SPIデバイスは、同期外れイベントを瞬時に検出し、同じクロックサイクル内でデフォルトモードに戻ることができる(したがって、時間点224と226が統合される)。このとき、時間点224と226の間の時間差は、任意の適切なクロックサイクル数であってもよい。
【0032】
実施形態において、SPIデバイスが同期外れイベントを検出してデフォルトモードに戻ったが、SPIホストがSPIモード指令の第1ビット(または、いくつかの第1ビット)を送信した可能性があるとき、SPIホストとSPIデバイスが同様にSPIモードにあっても、時間的に同期していない(例えば、SPIホストが送信する第2ビットは、SPIデバイスによって指令の第1ビットとして解釈される可能性がある)。
【0033】
したがって、同期外れの場合に時間同期を確保するために、SPIデバイスは、さらに、並列デコード回路を含むことができる。
【0034】
図3は、本発明の1つの実施形態に係るSPIデバイス300を示すブロック図である。SPIデバイス300は、設定可能なモードデコーダ302、同期外れ検出回路304、デフォルト-モードデコーダ306、セレクタ308、および指令実行ユニット310を含む。
【0035】
1つの実施形態において、設定可能なモードデコーダ302は、I/O1~I/O7に結合され、デフォルトSPI動作モード(1-1-1、1-4-4、または1-8-8のいずれか)において、およびQPIモード(4-4-4)またはOPIモード(8-8-8)のいずれかにおいて、SPI指令をデコードできるように構成される。いくつかの実施形態において、設定可能なモードデコーダ302は、QPIモードおよびOPIモードの両方においてSPI指令をデコードすることができる。
【0036】
同期外れ検出回路304は、設定可能なモードデコーダ302に結合され、ロジック-ローレベルが予期されるときにI/O線上のロジック-ハイレベルを検出し、その検出結果を同期外れイベントとして解釈するように構成される。
【0037】
デフォルト-モードデコーダ306は、I/O0に結合され、SPIホストが送信する指令をデコードするように構成される。また、デフォルト-モードデコーダ306は、同期外れ検出回路304に結合され、同期外れ検出回路304が同期外れイベントの検出に失敗したときに、デコード結果の出力を停止するように構成される。SPIホストおよびSPIデバイスが非SPIモード(例えば、OPIモードまたはQPIモード)にあると仮定すると、SPIホストが一方的にSPIモードに切り替わったとき(例えば、リセットのため)、デフォルト-モードデコーダ306は、SPIデバイスがまだ非SPIモード(例えば、OPIモードまたはQPIモード)にあっても、指令を正しくデコードすることができる。
【0038】
セレクタ308は、設定可能なモードデコーダ302、同期外れ検出回路304、デフォルト-モードデコーダ306、および指令実行ユニット310に結合される。セレクタ308は、同期外れ検出回路304が同期外れイベントを検出したかどうかに応答して、設定可能なモードデコーダ302またはデフォルトモードデコーダ306のいずれかを指令実行ユニット310に接続するように構成される。
【0039】
図3の例において、設定可能なモードデコーダ302およびデフォルト-モードデコーダ306は、異なるブロックに記載されているが、本発明はこれに限定されない。
【0040】
1つの実施形態において、デフォルト-モードデコーダ306は、設定可能なモードデコーダ302の一部である。
【0041】
特に、SPIモードにある間にSPIホストが指令オペコードを駆動したとき、SPIホストは、I/O0線のみを駆動し、より高いバス幅モードにおいて使用される追加のI/O線を駆動しない。
【0042】
したがって、プルアップデバイス110(
図1)は、SPIマスタがI/O0上で指令オペコードを駆動したとき、I/O1~I/O3またはI/O1~I/O7の値をロジック「1」に設定する。
【0043】
このとき、SPIデバイスがまだQPIモードまたはOPIモードにあり、それに応じて入ってくる指令オペコードをデコードする場合、SPIデバイスは、すべての4本(QPI)または8本(OPI)の線が有効なオペコードビットを運んでいると仮定する。しかしながら、そのときのI/O1~I/O3またはI/O1~I/O7は、プルアップデバイスによって「1」に設定され、SPIホストによって駆動されるのはI/O0のみであるため、SPIデバイスが受信してデコードする可能性のあるオペコードは、単に0xFF、0xFE、0xEF、0xEEを含む(前の2つのオペコードは、QPIおよびOPIモードにおいて受信でき、後の2つのオペコードは、QPIモードにおいてのみ受信できる)。したがって、本実施形態において、オペコードが0xFF、0xFE、0xEF、および0xEEを受信したとき、SPIデバイスは、オペコードを同期外れイベントとして解釈することができる。
【0044】
SPIデバイスが同期外れイベントの検出に応答して同期外れ回復を実行することにより、SPIデバイスをデフォルトモードに設定し、さらなる指令を適切にデコードすることができる。また、SPIデバイスは、並列デフォルトモードを選択的に使用することによってデコードし、前のコマンドを再構築して実行することができる。
【0045】
同じ指令オペコードが繰り返し実行されたとき、SPI通信は、XIP動作モードを開いて時間を節約することができる。XIP動作モードをオンにしたとき、SPIホストは、指令オペコードフェーズの送信をスキップして、アドレスとデータのみを送信することができる。XIPモードをオンにしたとき、指令の第1バイトは、アドレスのMSバイトである。1つの実施形態において、SPIホストは、例えば、指令に関連するアドレスを送信した後、第1ループにおいてI/O0をハイロジックに配置することにより、XIP動作モードに入ることができる。
【0046】
大部分のSPIデバイスは、アドレス空間の一部しか使用しないため、アドレスのMSビットは、0であることが予期される。例えば、256MビットのSPIデバイス(32Mバイト)で32bアドレッシングモード(addressing mode)を使用したとき、最大の可能なアドレスは、0x01FFFFFFであり、7つのMSビットがロジック0にある。
【0047】
1つの実施形態において、プルアップデバイスは、SPIホストがSPIモードにあるときに、I/O1~I/O3(または、I/O1~I/O7)をロジック1に設定する。したがって、SPIデバイスが依然としてXIPモードにおいてオンになっている場合、OPIモードまたはQPIモードにおいてアドレスを受信することを予期し、最も重要なアドレスバイトは、0xFF、0xFE、0xEF、または0xEEである。この実施形態において、0xFF、0xFE、0xEF、または0xEEで始まる任意のアドレスは、同期外れイベントとして解釈することができる。1つの実施形態において、受信したアドレス範囲のMSビットが0でなければならず、そうでない場合には、同期外れイベントとして解釈されると定義することができる。これにより、24ビットアドレスモードにおいてメモリサイズが8Mバイトに制限され、32ビットアドレスモードにおいて2Gバイトに制限される。
【0048】
1つの実施形態において、SPIデバイスは、XIPモードがオンの間に同期外れイベントを検出すると、それに応答して、動作モードをデフォルトモードに回復することができる。さらに、前のコマンドを選択的に並列にデコードすることによって、指令を失わないようにすることができる。
【0049】
いくつかの応用では、FF、FE、EF、またはEEバイトで始まるアドレス範囲を除外できない可能性がある。この実施形態では、SPIホストによって独特のモード-リセットシーケンスを送信することができ、SPIデバイスは、モード-リセットシーケンスを受信したとき、プルアップデバイスがなくても無条件にデフォルトモードに切り替わり、さらに、SPIホストとの同期を回復する。1つの実施形態において、モードリセットシーケンスは、例えば、16個の連続したクロックサイクルの間にすべての利用可能なI/O線においてオール1のシーケンスとして定義される。SPIデバイスは、現在のインターフェース動作モードに関係なく、この指令をオペコード0xFFに続いてオール1アドレスおよびデータとしてデコードする。
【0050】
さらに、XIPモードがオンのとき、SPIデバイスは、特定のアドレスを違法(illegal)として定義して、特定のアドレスをモード-リセットシーケンスとして解釈しなければならない。例えば、アドレッシングモードが24ビットの場合、SPIデバイスは、0xFFFFFFを特定のアドレスとして定義することができ、アドレッシングモードが32ビットの場合、SPIは、0xFFFFFFFFを特定のアドレスとして定義することができる。
【0051】
図4は、本発明の1つの実施形態に係るSPIホストによりモード-リセットシーケンスを送信するときの波形
図400である。
【0052】
図4を参照すると、SPIホストは、時間点414において、CS線をロジックローレベルとして設定し、指令を指示する。そして、次の16クロックサイクルの間、SPIホストは、SPIデバイスに接続されたすべてのI/O線をロジック1として設定し、モード-リセットシーケンスを指示する。時間点416において、モード-リセットが終了し、SPIホストは、CS線をロジックハイレベルとして設定する。
【0053】
時間点414において、SPIデバイスは、例えば、QPIモードまたはOPIモードを含む任意の動作モードにあってもよい。時間点416において、16個の連続したクロックサイクルの間にすべてのI/O線上でロジック1を受信した後、SPIデバイスは、モード-リセットシーケンスを検出して、デフォルトモードに戻る。
【0054】
上述した信号の極性は、現在のSPIバス定義および応用と互換性のある例である。しかしながら、本発明はこれに限定されない。例えば、1つの実施形態において、CS線がロジックハイレベルのときに有効である。別の実施形態において、I/O線が低電圧として配置されたとき、ロジック1が負ロジック(つまり、ロジック1は低電圧で示され、ロジック0は高電圧で示される)を運び、プルアップデバイスではなくプルダウンデバイスがI/O線に結合されることを意味する。
【0055】
さらに、本発明の実施形態は、SPIバリアント(variant)をサポートし、バス幅(I/O線の数)は、1、2、4、または8とは異なる。例えば、1つの実施形態において、本発明の技術は、必要な変更を加えて、16本のI/O線を有するSPIバリアントで使用することができる。
【0056】
図5は、本発明の1つの実施形態に係る入力データを調べることにより同期外れイベントを検出するときのフローチャート500である。
図5を参照すると、例えば、SPIデバイスは、電源オンまたはリセット(例えば、電源オンリセット)後に、操作502に入る。操作502において、SPIデバイスは、デフォルトモードにおいて実行する。具体的に説明すると、SPIデバイスは、デフォルトSPIモード(1-1-1、1-4-4、および1-8-8のいずれか)においてデコードし、デコードされたSPI指令を実行する。
【0057】
次に、操作504において、SPIデバイスは、受信したSPI指令がスイッチ-モード指令(例えば、OPIモードに切り替える)であるかどうかを検査し、そうでない場合は、再び操作502に入り、デフォルトモードにおいて次のSPI指令をデコードして実行する。
【0058】
操作504に戻り、受信した指令がスイッチ-モード指令(例えば、OPI指令に対する検査)であることをSPIデバイスが検査した場合、SPIデバイスは、操作506に入り、SPIデバイスは、現操作504のSPI指令によって指示された動作モード(例えば、OPIモードまたはQPIモード)と並列にデフォルトモードにあり、SPI指令をデコードする。しかしながら、SPIデバイスは、デコードされたSPI指令のみを実行し、デフォルトモードによってデコードされたSPI指令を保存する。
【0059】
次に、操作508において、SPIデバイスは、受信したSPI指令がデフォルトSPIモードへの切り替え指令であるかどうかを検査し、そうであれば、SPIデバイスは、再度操作502に入り、デフォルトモードにおいてさらなるSPI指令をデコードする。
【0060】
操作508に戻り、SPIデバイスがデフォルトSPIモードへの切り替え指令を検査しなかった場合、SPIデバイスは、操作510に入り、SPIデバイスは、モード-リセットシーケンスを受信したかどうかを検査する。もし受信した場合、SPIデバイスは操作512に入り、デフォルトモードによってデコードされた最後の指令(つまり、操作506におけるデフォルトモードによる並列デコードの後に保存された指令)を実行して、操作502に戻る。したがって、SPIデバイスは、操作512の後に再度操作502に入り、指令を失うことなくデフォルトモードにおいて他の指令をデコードすることができる。操作5l0に戻り、SPIデバイスがモード-リセットシーケンスを受信しなかった場合、SPIデバイスは、操作514に入り、SPIデバイスは、SPIホストがXIPモードを開くことを指示しているかどうかを検査する。
【0061】
1つの実施形態において、SPIホストは、アドレスの送信に続いて第1クロックサイクルでI/O0=1を設定し、XIPモードがオンであることを指示することができる。操作514において、XIPモードがオンであることをSPIホストが指示しなかった場合、SPIデバイスは、再度操作506に入り、OPIモードにおいて次の指令をデコードする。
【0062】
操作514に戻り、XIPモードがオンになったことをSPIホストが指示した場合、SPIデバイスは、操作516に入り、SPIデバイスは、受信したSPI指令(アドレスとデータのみを含み、実行は、最後に送信するオプコードの使用である)を現在のモード(QPIまたはOPIモード)においてデコードして実行し、並列にデフォルトモードにおいてデコードしてデフォルトモードによってデコードされたSPI指令を保存する。
【0063】
次に、操作518において、SPIデバイスは、同期外れイベントが検出されたかどうかを検査する。例えば、SPIデバイスは、FFまたはFEで始まるアドレスを違法なアドレスとして定義し、それを同期外れイベントとして解釈することができる。このとき、SPIデバイスは、受信したアドレスのMSバイトがFFまたはFEであるかどうかを検査することができる。SPIデバイスが同期外れイベントを検出しなかった場合、SPIデバイスは、再度操作615に入り、並列にデコードを続ける。
【0064】
操作518に戻り、SPIデバイスによって同期外れイベントを検査した場合、SPIデバイスは、操作520に入り、SPIデバイスは、デコードされた最後のデフォルト-SPI指令(つまり、操作516においてデフォルトモードでデコードされ、並列に保存された指令)を実行し、操作502に戻る。したがって、SPIデバイスは、指令を失うことなく、デフォルトモードにおいて操作512の後に再度操作502に入り、デフォルトモードにおいてさらなるSPI指令をデコードして実行することができる。
【0065】
図6は、本発明の1つの実施形態に係るSPIデバイスの状態を示す状態
図600である。
図6の各状態は、SPI、QPI、またはOPI動作モードを表す。
【0066】
1.状態602、デフォルトモード、例えば、シングル(1-1-1)、クワッド(1-4-4)、またはオクタル(1-8-8)SPIモードのいずれか。
【0067】
2.状態604(SPI-XIP)、デフォルトモードにおいてXIPモードをオンにする。
【0068】
3.状態608、QPIモード(4-4-4)。
【0069】
4.状態610(QPI-XIP)、QPIモードにおいてXIPモードをオンにする。
【0070】
5.状態612、OPIモード(8-8-8)。
【0071】
6.状態614(OPI-XIP)、OPIモードにおいてXIPモードをオンにする。
【0072】
実施形態に基づき、まず、これらの状態間の「通常」の移行について説明し、次に、同期外れの場合の移行について説明する。
【0073】
リセット信号に続いて、SPIデバイスは、SPI状態602にある。XIP-オン指示(例えば、アドレスに続いて第1クロックにおいてI/O0=1を設定する)に応答して、SPIデバイスは、SPI-XIP状態604に移行し、XIP-オフ指示(例えば、アドレスに続いて第1クロックループにおいてI/O0=0を設定し、違法なアドレスまたは特定のシーケンスを受信する)に応答して、SPIデバイスは、SPI-XIP状態604から状態602に戻る。
【0074】
SPIデバイスがデフォルト-SPI状態602にある間にセット-モード-QPIまたはセット-モード-OPI指令を受信した場合、SPIデバイスは、それぞれ状態608(QPI)または状態610(OPI)に移行する。状態608または状態612にあるとき、SPIデバイスは、セット-モード-SPI指令の受信に応じて状態602に戻る。
【0075】
状態608または状態612のいずれかにあるとき、SPIデバイスは、XIP-オン指示を受信し、それぞれ状態610(QPI-XIP)または状態614(QPI-XIP)に移行することができる。状態610または状態614のいずれかにあるとき、SPIデバイスは、XIP-オフ指示に応答して、それぞれ状態608または状態612に戻る。
【0076】
実施形態において、同期外れイベントからの回復を可能にするために、追加の状態間移行を提供してもよい。SPIデバイスがSPI-XIP状態にあり、SPIホストがSPI(非XIP)状態にある場合、SPIデバイスは、少なくとも3つのMSビットが設定された(プルアップ抵抗器110によってロジックハイに駆動された)アドレスを受信し、それに応答して、状態602に戻る。
【0077】
SPIデバイスがQPI状態608にあり、SPIホストがSPI(非XIP)モードにある場合、SPIデバイスは、ロジックハイレベル(オプコードFF、FE、EF、EEのいずれか-実施形態に基づき、すべて違法として定義される)においてビット5-6-7および3-2-1を有するオプコードを受信し、それに応答して、状態602に戻る。
【0078】
SPIデバイスがOPI状態612にあり、SPIホストがSPI(非XIP)モードにある場合、SPIデバイスは、ロジックハイレベルにおいてビット1~7を有するオプコード(オプコードFF、FEのうちの1つ)を受信し、それに応答して、状態602に戻る。
【0079】
SPIデバイスがOPI-XIP状態614にある間に同期が外れた場合、SPIデバイスは、MSバイトがFF、FE、EF、またはEEに等しいアドレスを取得し、それに応答して、デフォルト状態602に戻る。SPIデバイスがSPI-XIP状態604にある間に同期が外れた場合、SPIデバイスは、FFまたはFEで始まるアドレス(OPIに対し)、またはFF、FE、EF、EEで始まるアドレス(QPIに対し)を取得し、それに応答して、デフォルトSPIモード602に戻る(この方法は、シングルSPI-XIPにおける同期外れからの回復には機能しない)。
【0080】
さらに、モード-リセットシーケンス(上記で説明した)を検出したとき、SPIデバイスは、どの状態からでも、状態602に移行する。
【0081】
SPIホスト101、SPIデバイス102、プルアップデバイス110、およびSPIデバイス300の異なるサブユニットは、適切なハードウェア、例えば、1つまたはそれ以上の特定用途向け集積回路(Application-Specific Integrated Circuits, ASIC)またはフィールドプログラマブルゲートアレイ(Field-Programmable Gate Arrays, FPGA)を使用して、ソフトウェアを使用して、ハードウェアを使用して、または上述したハードウェアとソフトウェアの組み合わせを使用して、実施することができる。
【0082】
SPIホスト101および/またはSPIデバイス(
図1)および/またはSPIデバイス300(
図3)は、1つまたはそれ以上の汎用プロセッサを含むことができ、これらのプロセッサは、ソフトウェアにおいてプログラムされ、ここで説明した機能を実行する。ソフトウェアは、例えば、ネットワーク上で、またはホストから電子形式でプロセッサにダウンロードされてもよく、あるいは、代わりに、または追加で、磁気、光学、または電子メモリなどの非一時的な有形媒体に提供および/または保存されてもよい。
【0083】
以上のように、本発明の1つの実施形態において、SPIデバイスは、SPIホストが一方的にSPIモードに切り替わったかどうかを検出するように構成される。本実施形態において、例えば、ウィークプルアップデバイス(例えば、正極電源に接続された抵抗器)をデータ線の一部に接続することができる。SPIホストがSPIモードに変更されたとき、SPIデバイスは、未使用の線(例えば、I/O1~I/O7)上でロジックハイレベルを受信する。
【0084】
1つの実施形態において、1つまたは複数の配置されたロジックハイビットで始まる操作コードを使用しないことによって、同期外れイベントとして定義することができる。その結果、SPIデバイスがQPIモードまたはOPIモードにおいてMSバイトとして配置されたロジックハイビットで始まるオペコードを受信した場合、SPIホストとの同期外れを検出して、デフォルトモードに回復すると考えられる。別の実施形態において、1つまたはそれ以上のロジックハイで始まるアドレスが違法であると定義することができる。その結果、合法(legal)なアドレスを受信することが予期されるとき(例:XIPモードがオンになったとき)にSPIデバイスが1つまたはそれ以上のロジックハイで始まるアドレスを受信した場合、SPIホストとの同期外れを検出して、デフォルトモードに回復すると考えられる。XIPモードがオンになったときにSPIデバイスが同期外れを検出した場合、SPIデバイスは、SPIホストに対応しない場合に現在のXIP操作を中止し、それにより、起こりうるバス競合を回避する。
【0085】
1つの実施形態において、SPIホストがモードを変更した後に送信されるSPIホストの第1指令のデータを失わないようにするために、SPIデバイスは、現在設定された動作モード(例えば、QPIまたはOPI)およびデフォルトモードにおいてSPI通信を並列にデコードする並列デコード回路を含む。SPIデバイスが同期外れイベントを検出したとき、SPIデバイスは、デフォルトモードにおいてデコードされた指令を実行する。
【0086】
別の実施形態において、独特のモード-リセットシーケンスを定義することができ、例えば、SPIバスのすべてのI/O線をより長いサイクル期間(例えば、16クロックパルス)においてロジック「1」に配置することができる。この実施形態において、この種のシーケンスは、適切な操作の送信として使用することができないため、その結果、SPIデバイスは、動作モードをデフォルトモードにリセットする指令として解釈することができる。
【0087】
その結果、本実施形態において、I/O線にプルアップデバイスを追加し、並列デコードを行い、および/または独特のモード-リセットシーケンスを定義することにより、SPIデバイスは、同期外れイベントを検出し、その状態から回復することができる。
【産業上の利用可能性】
【0088】
本発明の実施形態に係るSPI同期の方法およびシステムは、SPI通信における同期外れの検出および回復に適用することができる。
【符号の説明】
【0089】
100 SPI通信システム
101 SPIホスト
102、300 SPIデバイス
103 チップ-セレクト(CS)線
104 クロック(CK)線
106 入力-出力0(I/O0)線
108 I/O1~I/O7の線
110 プルアップデバイス
202、204、206、208、210、212、214、402、404、406、408、410、412 波形
216、218、220、222、224、226、414、416 時間点
302 設定可能なモードデコーダ
304 同期外れ検出回路
306 デフォルト-モードデコーダ
308 セレクタ
310 指令実行ユニット
602、604、608、610、612、614 状態
【外国語明細書】