このページは、マルチギガビット・トランシーバ(MGT)を紹介する一連のページの 6 ページ目であり、PMA については 2 ページ目です。
はじめに
前のページでは、PMA を使って物理チャネル上でビットを送信する方法について説明しました。しかし、このデータストリームが常にオンになっているとは限りません。省電力のために、MGT の大部分をオフにすることができます。これは特に、ノートパソコンの中で MGT が SATA、PCIe、SuperSpeed USB を実装している場合に重要です。これらのプロトコルを使うときは、送信すべきデータがないのに物理リンクをアクティブに保つのはエネルギーの無駄です。
したがって MGT には、低電力状態へ移行する機能が必要です。さらに重要なこととして、MGT には、この低電力状態から復帰すべきタイミングを相手側に通知する機能も必要です。この目的(および他の目的)のために OOB 信号を生成および検出するのは、PMA の役割です。
帯域外(Out-of-band、OOB)信号は、データストリームの送信に使われる同じ差動配線上に現れる、単純な電気的活動パターンから構成されます。これらの OOB 信号は、通常のデータストリームがオフのときだけ送信できます。この信号について最も重要な点は、受信側が非常に単純なロジックでそれを検出できることです。これにより、OOB 信号を受信する MGT は、たとえ低電力状態であってもそれを検出できます。
MGT がサポートするもう 1 つの機能は、送信側が、相手側に何もさせることなく、自分が物理的に別の MGT に接続されているかどうかを検出できることです。この機能はレシーバ検出(Receiver Detection)と呼ばれます。
このページでは、OOB 信号とレシーバ検出の 2 つの機能を紹介します。前の 2 ページのブロック図を、便宜のためここに再度示します。
OOB 信号の送信
帯域外(OOB)信号は、通常、一定周波数の単純な方形波信号です。この信号は、通常のデータストリームの代わりに送信できるだけで、データストリームと同時に送信することはできません。
プロトコルごとに、OOB 信号の波形に対する要求は異なります。FPGA MGT は通常、最も一般的なプロトコル(特に PCIe と SATA)に沿った OOB 信号をアプリケーションロジック(application logic)が要求できるようにする入力ポートを持っています。
OOB 信号の名称と要求事項は、プロトコルによって異なります。例えば次のとおりです。
- PCIe プロトコルは、その OOB 信号を「ビーコン(Beacon)」と呼びます。この要件は、周波数 30 kHz から 500 MHz の方形波信号で満たせます。しかし、プロトコルは信号が周期的であることすら要求していません。ビーコンは、低電力状態から復帰するために使われます。
- SATA プロトコルは、COMRESET、COMINIT、COMWAKE の 3 種類の OOB 信号を定義しています。プロトコルは、これらの信号の構成を正確に定義しています。COMRESET はホスト側がデバイスをリセットするために使います。COMINIT はデバイスだけが送信し、リンクを初期化するために使われます。COMRESET と COMINIT はまったく同じ信号ですが、その意味はどちらの側が送信するかに依存します。COMWAKE は、どちらかの側がリンクを低電力状態から復帰させるために使います。
- USB SuperSpeed プロトコルは、その OOB 信号を「LFPS(Low Frequency Periodic Signaling、低周波周期信号)」と呼びます。これは、周波数 10 MHz から 50 MHz の方形波です。この信号は、低電力状態を終了させるために使われるほか、さまざまな他の目的にも使われます。特に、データストリームの初期セットアップは、LFPS 信号の厳密に定義された交換から構成されます。このプロトコルは、それぞれ異なる意味を持つ複数の LFPS 信号パターンを定義しています。例えば、ホストが LFPS 信号を 100 ms にわたって連続送信した場合、これはデバイスのリセット要求です。
特定のプロトコルに適した OOB 信号を MGT 自体が生成できないこともあります。これは、送信部をデータ送信用にオンにし、MGT に所望の信号パターンに対応するデータストリームを供給することで解決できます。特に、MGT のエンコーディング機能をオフにすると、MGT は単純な SERDES として動作します。すると、所望の信号パターンを送信データによって任意に整形できます。例えば、'0' と '1' の連続列を送信することで方形波を生成できます。この解決策の主な欠点は、MGT のエンコーディング機能が使われないため、エンコーディング機能をアプリケーションロジック側で実装しなければならないことです。
電気的アイドル
MGT の送信部がオフ、または低電力モードにあるとき、その出力は通常、電気的アイドル状態(electrical idle)になります。これは、送信部が 2 本の差動出力配線(D+ と D-)の両方をグランドに接続することを意味します。したがって、これらの配線間の電圧はゼロですが、各配線はグランドに対してもゼロ電圧になります。
MGT がスリープ中は、電気的アイドル状態は OOB 信号の送信と正反対の状態です。あるいは、送信部の取り得る状態をまとめると、次の 3 つになります。
- データの送信。MGT は、この状態にあるときのみ電源オンとみなされます。
- OOB の送信。
- 電気的アイドル。
前述のように、OOB は、相手側を低電力状態から起こすため、またはリンク立ち上げの一部として、たまにしか使われません。したがって、MGT はほとんどの時間、データを送信しているか、電気的アイドル状態でスリープしているかのどちらかです。
OOB 信号の検出
MGT がオフ、または低電力状態にあるとき、その受信部は相手側が OOB を送信しているかどうかを検出する必要があるかもしれません。これは特に、通常動作の再開要求に応答するために必要です。
ほとんどのプロトコルは、OOB 信号の波形を正確に規定するのではなく、可能性の範囲を定義しています。したがって、受信側が到着信号を期待される波形と比較することはできません。その代わり、OOB 信号は、差動配線上に何らかの活動があるときに検出されます。つまり、データストリームがオフであるにもかかわらず、差動配線の電圧が電気的アイドルとみなせないほど変化している場合、それは相手側が OOB 信号を送信していることを意味します。
このため、FPGA MGT には、OOB 信号の検出専用の出力ポートはありません。その代わり、受信側が電気的アイドルを検出したときにハイになる出力ポートがあります。このポートの名前は通常、"rx_elecidle" のようなものです。
残念ながら、電気的アイドルの検出メカニズムは信頼性が低いことがあります。特に、相手側がデータストリームを送信しているときの受信側の電気的アイドル検出器の動作は、MGT ごとに異なります。この状況で電気的アイドルを検出する可能性もあります。電気的アイドルではないと確定的に検出する可能性もあります。ランダムな検出が発生する可能性もあります。FPGA ごとに動作は異なります。
理論的には、これは問題になりません。データストリームがアクティブなときに電気的アイドルをチェックする必要性は、そもそもないからです。しかし現実には、MGT は相手側が期待していないときにもデータを送信することがあります。したがって、アプリケーションロジックは、相手側がオフになっていると予想されるのに、代わりに通常のデータストリームが到着した場合にも正しく反応するよう設計する必要があります。
電気的アイドル検出のもう 1 つの問題は、ノイズに対する感度です。完全な電気的アイドルは、2 本の差動配線の両方の電圧がゼロのときです。ノイズの結果、受信側が電気的アイドルを否定するのに十分な電圧を測定する可能性があります。するとアプリケーションロジックは、これを OOB 信号と解釈する危険があります。
結論として、OOB 信号を確実に検出するための単純な解決策はありません。アプリケーションロジックは、電気的アイドル検出器の不完全さを補うように設計しなければなりません。
レシーバ検出
PCIe プロトコルと SuperSpeed USB は、リンクの相手側に何かが接続されているかを検出する機能を要求します。この検出は、相手側との通信を開始しようとせずに行う必要があります。この機能はレシーバ検出(Receiver Detection)と呼ばれます。
SuperSpeed USB では、コンピュータがデバイスの物理的な切断を把握する必要があるため、これが必要です。リンクが低電力状態のときにそのような切断が発生した場合、コンピュータには何かが起こったことを知る手段がありません。そもそも配線上に活動が期待されていないからです。したがって、このプロトコルは、ホストが 100 ms ごとにレシーバ検出を行うことを要求します。これにより、コンピュータはエネルギーを浪費せずにデバイスがまだ接続されていることを確認できます。
PCIe プロトコルは、各 PCIe スロットで、そのスロットに接続されている可能性のあるデバイスとのリンク立ち上げを試みる前に、レシーバ検出を行うことを要求します。リンクの立ち上げには、データ送信のために MGT に電源を投入すること(より正確にはトレーニングシーケンスを送信すること)が伴うため、不要な試行を避けることは省エネのために重要です。
MGT の送信部は、2 本の出力配線(D+ と D-)の両方に短い電圧パルスを発生させることでレシーバ検出を行います。これはコモンモード電圧パルスです。つまり、グランド基準で同じ電圧が両方の配線に加わります。相手側に受信部があれば、受信部の終端抵抗を介して測定可能な電流が流れます。この電流は送信部の出力電圧に影響を与えます。相手側に受信部がなければ、電流は無視できる程度になります。したがって、送信部はパルスの開始直後に出力電圧を測定し、それに応じて相手側に受信部が存在するかどうかを判断します。
パルスが必要な理由(単純な直流電圧ではなく)は、送信部と受信部の間にコンデンサがあるためです。パルス直後は、パルス電圧が送信部と受信部の終端抵抗にかかるため、電流が流れます。コンデンサが充電されるにつれて、電流はどの RC 回路でも同じように低下します。電圧が一定に保たれれば、電流は最終的にゼロになります。
レシーバ検出は、受信部の終端抵抗が D+ と D- の両方についてグランドに接続されている場合にのみ機能することに注意することが重要です。例えば、PCIe プロトコルは、これらの終端抵抗が 50Ω であることを要求します。D+ と D- の間に 100Ω の抵抗を接続し、グランドに接続しないことでも、同じ差動インピーダンスを実現できます。このように終端した場合、レシーバ検出を除くすべての機能は正しく動作します。その違いは、他のすべての機能が D+ と D- の間の差動電圧に依存しているのに対し、レシーバ検出は両方の配線に同じ電圧を加えることで実装されているからです。終端抵抗が中間点でグランドに接続されていなければ電流は流れないため、受信部は検出されません。
以上で、MGT に関するこの一連のページの 6 ページ目を終わります。次のページでは、MGT のクロッキングについての説明をいくつか行い、このシリーズを締めくくります。
