SATAの実験(1)
最近、特殊電子回路のSpartan-6 PCI Express評価ボード「EXPARTAN-6T」で、SATAのドライブをつなぎたいというご要望をよくいただきます。
SATAを動かすにはIPコアが必要なのですが、そう簡単には入手できません。
ないなら自分で作ることができないだろうかと考え、思案中です。
まず、SATA用のギガビットトランシーバを動かしてみることにします。
簡単なGTPデザインをFPGAに入れ、EXPARTAN-6TのSATA1コネクタを手近なパソコンのSATAドライブ用のコネクタに接続し、電源をいれます。
おおっ! 電気的IDLEが6回下がっているのが観測されました。
これはCOMRESETというSATAのプロトコルで、(K28.5 D10.2 D10.2 D27.3)×4、を6回繰り返しているのです。
1回の送信で16シンボルという短い時間しか送ってこないので、PLLがロックしないので、どんな内容なのかは見ることができません。信号があるか/ないか、しかわからないのですが、それを利用してOOB(Out Of Band)というシーケンスを構築しています。
この信号が「あり」の時間と「なし」の時間を大雑把に測って、相手の有無とリセットを認識します。
拡大してみると、D10.2とか、K28,5とか、断片的に見えます。
FPGAからPCに同じ信号を返してあげれば、初期化シーケンスは次のステップに進めるはずです。
ちょっと実験してみたくなりました。
最近のコメント