Fpgax 20130604

1,721 views

Published on

0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,721
On SlideShare
0
From Embeds
0
Number of Embeds
47
Actions
Shares
0
Downloads
18
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Fpgax 20130604

  1. 1. (JavaRock)の話とFPGAでSSDSATAの話三好 健文株式会社イーツリーズ・ジャパン1
  2. 2. SATAもGTPもよく知らない俺がOpenCoresのSATAコアをすんなりうごかせるはずがない...といえないこともなくはない
  3. 3. SSD/HDDで魅力的ですね!!大容量で低価格ピン数少ない(TX{P,N}/RX{P,N})3バイト単価 Read/Write速度 転送速度 HDD 安 数十∼数百MBps ∼6Gbps SSD 中 数百MBps ∼6Gbps SD 高 数十MBps∼104MBps(UHS-II: ∼312MBps)
  4. 4. SATAをFPGAで使いたい外付けのチップを利用SATAホストチップPCのSATAコントローラを乗っ取るSATA IPコアを利用デザインゲートウェイ SATA-IPコア特電SATA互換IPコアOpenCores0から自作4
  5. 5. OpenCoresにあるじゃないか5やってみようなんかMicroBlazeとか書いてある制御部分はJavaでいいか
  6. 6. SATAについて610BDwordsFISデータ/コマンド10BDwordsFISデータ/コマンドホスト ディスクトランスポート/コマンド層リンク層(上位)リンク層(下位)物理層トランスポート/コマンド層リンク層(上位)リンク層(下位)物理層↓これで勉強しました
  7. 7. SATAについて...もう少し詳しく710BDwordsFISデータ/コマンドトランスポート/コマンド層リンク層(上位)リンク層(下位)物理層FIS(Frame Information Structure)の組み立て/送受信制御FIS<->フレームデータ変換CRC計算,スクランブル/デスクランブルDwords単位の操作(Primitive/PureData)8B10B変換シリアル<->10B変換+/-の信号 + Hi-Z(OOB)信号FISFISSOFCRCEOF8bit10bit 10bit 10bit…10bit1bit10bit
  8. 8. SATAホストコアの実装810BDwordsFISデータ/コマンドトランスポート/コマンド層リンク層(上位)リンク層(下位)物理層FIFOcommand_layer.vhdsata_link_layer.vhdsata_phy.vGTXoob_control.vFIFOFIFOI/O
  9. 9. 用意するものGbトランシーバが(ほぼ)必須Xilinx Tシリーズ/Altera GXシリーズSATAポートのついているボードPCIeエッジ搭載ボード + SATAポート変換ジグ電源気持ちの余裕9FPGAFPGAボードその他または
  10. 10. PCIeエッジから信号引き出す(1)10
  11. 11. PCIeエッジから信号引き出す(1)...今思えば11こういうのの方が工作しやすかったかも....
  12. 12. PCIeエッジから信号引き出す(2)12例えば,デザインゲートウェイ社製AB06-PCIeSATA x8とか...安くはない(と思う)
  13. 13. SATAポートを持ったFPGAボードXilinx ML555特殊電子回路(株) EXPARTAN-6T(株)アークス Axpcie603113などなど
  14. 14. 動かすついでにSpartan-6に移植してみた物理層をGTX→GTPに変換SATA 1.5Gbps/3GbpsネゴシエーションOOBはGTPに任せられる16bit <-> 32bit バス変換アプリI/F層をJavaで実装14...Spartan-6の方が安いから
  15. 15. SATAホストコアの実装1510BDwordsFISデータ/コマンドトランスポート/コマンド層リンク層(上位)リンク層(下位)物理層FIFOcommand_layer.vhdsata_link_layer.vhdsata_phy.vGTXoob_control.vFIFOFIFOI/OJavaVHDLこの程度ですむと...
  16. 16. コードの移植をしてみて環境の違いでIPコアをごにょごにょミーリーマシンですか....てか混在ですか??そこでintegerとか使う??割と読みやすいコードでした16
  17. 17. 作ってみたシステムの構成17
  18. 18. BufferedSataIface18内部でキャッシュ単純なWriteBack機構
  19. 19. リソース使用量/速度などPHY単体では3Gbpsでリンク全体では1.5Gbpsでネゴ完了19
  20. 20. 動いている様子(1)20リンク確立の開始OOBD10.2
  21. 21. 動いている様子(2)21リンク確立B5B5957C(SYNC)7B4A4ABC(ALIGN)
  22. 22. 動いている様子(3)22ホストからコマンド発行3737B57C(SOF) <データ> D5D5B57C(EOF)
  23. 23. 動いている様子(4)23転送開始37375B57C(SOF)...
  24. 24. 動いている様子(5)24転送完了..D5D5B57C(EOF)
  25. 25. で,気になる性能は??25
  26. 26. えーっと...動くのは分かった...4KB(=8セクタアクセス)じゃ性能でないよねロジック回路が37.5(75)MHzは寂しいよねってか,エラー処理は?26→上位レイヤも作り直そう...
  27. 27. 上位層の作り直しSpartan-6での3Gbpsでのネゴ実現NCQなどの上位コマンドの実装RAID,みたいな?もっとインテリジェントな何か?今後27
  28. 28. FPGA用(?)SATA接続キット28SATAデバイスにアクセスするため だけ の最小構成欲しい人いませんか?SATA?フィルムケーブルFMC?
  29. 29. たとえば,こんな風に使えるといいな29
  30. 30. 俺のFPGAがこんなかんたんにSATAディスクにアクセスできるはずがない次回(時期未定)

×