AR# 36063

PCI Express のデザイン アシスタント - NAK が前に応答したパケットで出力される

説明

リンク ダンプを確認すると、前に ACK を受信したパケットで NAK が出力されていることがあります。この理由を教えてください。

メモ : このアンサーは PCI Express のザイリンクス ソリューション センター(ザイリンクス アンサー 34536) の一部です。PCI Express のザイリンクス ソリューション センターでは PCIe に関する質問に対する回答を一覧できます。PCIe でデザインを新しく作成する場合、または問題のトラブルシュートをする場合は、このザイリンクス PCI Express ソリューション センターから情報を入手してください。

ソリューション

リンク ダンプを確認すると、コアが TLP を認識した後、同じシーケンス番号に NAK を出力していることがあります。たとえば、次のようになっています。

DS ポートがシーケンス番号 #1 の TLP を送信
エンドポイントがシーケンス番号 #1 に ACK を出力
DS ポートが シーケンス番号 #2 の TLP を送信
エンドポイントがシーケンス番号 #1 に NAK を出力

入力 TLP が 1 つまたは複数破損していて、最後に受信した有効シーケンス番号に NAK を出力して TLP を再送信するようデバイスがリンク パートナに指示しているので、このようになっています。上記の例では、エンドポイントが TLP #1 に NAK を出力したとき、実際にはリンク パートナに TLP #2 を再送信するよう指示しているということになります。

もう 1 例挙げてみます。

DS ポートが TLP #1 を送信
エンドポイントが TLP #1 に ACK を出力
DS ポートが TLP #2 を送信
DS ポートが TLP #3 を送信
DS ポートが TLP #4 を送信
DS ポートが TLP #5 を送信
DS ポートが TLP #6 を送信
エンドポイントが TLP #4 に NAK を出力

この例では、エンドポイントが DS ポートに TLP #5 で問題が発生したことを知らせています。DS ポートは、TLP #2、#3、#4 が有効で、TLP #5 が破損していると認識します。DS ポートは TLP #5 および TLP #6 を再送信します。

正しく受信すれば、エンドポイントは TLP #5 および TLP #6 の両方または TLP #6 のみに ACK を出力します。仕様では、ACK (および NAK) をフラットにすることができます。

また別の例ですが、NAK が出力されたシーケンス番号の後 DS ポートが実際にはパケットを送信していなくても、コアがシーケンス番号に NAK を出力します。 たとえば、

DS ポートが TLP #1 を送信
エンドポイントが TLP #1 に ACK を出力
エンドポイントが TLP #1 に NAK を出力

TLP #1 の NAK は TLP #1 の後に何かを再送信するよう指示しているので、この状況は混乱を招きかねません。しかし、TLP #1 の後リンク アナライザにはパケットが表示されません。これは、物理的なエラー (8b/10b エラー、無効な K 文字など) や、無効な START や END 文字など TLP または DLLP にフレーム エラーがコアに発生した場合のコアの動作です。コアは NAK を出力できるので、別の TLP を送信しようとしていたのか、無視してもかまわないエラーなのかを決めるのはリンクの反対側になります。また、コアが NAK をこの方法で出力する場合、コアはデバイス ステータス レジスタで修正可能エラーのフラグを設定します。


改訂履歴

08/13/2010 - 初期リリース

アンサー レコード リファレンス

関連アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
34538 PCI Express のザイリンクス ソリューション センター - デザイン アシスタント N/A N/A
AR# 36063
日付 12/15/2012
ステータス アクティブ
種類 一般
デバイス 詳細 概略
IP