SATAの実験(2)
Spartan-6LXTのGTPが持つSATAの機能がわかってきました。
一言でいうと、すごい!
さずがXILINX。
SATAのOOB(Out Of Band)通信をトランシーバ内でサポートしているのです。
簡単に言うと、
・TILE0_TXCOMTYPE0_INという信号を'0'にして、TILE0_TXCOMSTART0_INを1クロックだけ'1'にすると、COMRESET/COMINITが送られる。
・TILE0_TXCOMTYPE0_INという信号を'1'にして、TILE0_TXCOMSTART0_INを1クロックだけ'1'にすると、COMWAKEが送られる。
・COMINITとCOMWAKEのバースト送信回数は、CoreGenで設定する。
・相手からCOMRESET/INITを受け取ると、RXSTATUS(2)が'1'になる
・相手からCOMWAKEを受け取ると、RXSTATUS(1)が'1'になる
・自分がCOMRESET/COMINIT/COMWAKEを送信し終わると、RXSTATUS(0)が'1'になる
というわけです。
電気的IDLEを送信したり検出したり、といった手間が一切不要です。
タイマーとかカウンタも一切不要なのです。
バーストが送られてきた時間や回数を計るのは全部GTP任せにしていいのです。
ちなみに、EXPARTAN-6Tで、2つのSATAコネクタを接続してループバックさせて、COMRESETやCOMWAKEを送受信してみました。
まず、COMRESETを送って、別のポートで受け取ったもの。
RXSTATUS(2)が立っているのがわかります。
次に、COMWAKEを送って、受け取ったもの。
RXSTATUS(1)が立っているのがわかります。
物理層の初期化までは簡単に作れそうです。
明日にはリンクアップさせてホストから何らかの信号を受信してみたいと思います。
最近のコメント