Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

OSC 2013 kansai @kyoto

3,575 views

Published on

Opensource conference 2013 Kansai @Kyoto

Published in: Technology
  • Be the first to comment

OSC 2013 kansai @kyoto

  1. 1. 栗元憲一 http://k2-garage.com FPGAキット上のオープンソースソフト・ オープンソースハードを用いたシステム開発 13年8月2日金曜日
  2. 2. Agenda introduction 1. 発表概要 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. 一部処理をhardware化 6. JPEG処理をhardware化 7. まとめ 13年8月2日金曜日
  3. 3. 自己紹介 SoC カスタムデータパスハードマクロ static timing analyzer 大学院で論理合成アルゴリズム研究 SoCの物理実装 不揮発メモリ開発 トランジスタばらつき測定システム 物理実装に近い分野を10年以上やってました。 13年8月2日金曜日
  4. 4. android + hardware http://k2-garage.com 13年8月2日金曜日
  5. 5. 書籍出版しました 表テーマ ソフトウェア処理で重たい部分をハードウェア化 して高速化する手法を学ぶ 実習書です。 対象読者 SoC開発のエッセンスを学びたい人 13年8月2日金曜日
  6. 6. 概要 LAN上にあるサーバからmotionJPEGファイルをスト リーミング。FPGA上のSoCで動画表示 このようなSoCを開発することでSoC開発のエッセン ス(ソフト処理をハード処理にすることで高速化する) を学習します。 13年8月2日金曜日
  7. 7. こんな感じのSoCをFPGA上で動かします 13年8月2日金曜日
  8. 8. 開発フロー ソフトウェア処理をハードウェ ア処理に変更することでfpsが向 上。 ハードウェア処理が何故高速な のかを学習。 13年8月2日金曜日
  9. 9. Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年8月2日金曜日
  10. 10. まずは普通のSoCの中身を知ろう(1) texus instrumentsのDM3730 ARM Cortex A-8 (processor), GPU,....... example これ beagleboard-xM 13年8月2日金曜日
  11. 11. SoCはどうやって設計するの? HDLで記述 -- controller part if ((count_num = 0 and strobe1 = '1' v.control_reg.counter := if(count_num = 73)then v.control_reg.counter := (others => end if; end if; vready1 := '0'; 論理合成ツール テキスト 工場毎に設計された 論理セルの接続ネット (1000万ゲート以上!) 配置配線ツール 工場毎に設計された 論理セルのレイアウトを 自動で配置配線 工場で製造できるレイアウトが完成! 13年8月2日金曜日
  12. 12. FPGA FPGA内部構造 前ページのHDLを全く別の 方法で動作させます。 4∼5入力のSRAMの メモリの中の値と 接続を変更することで 任意のlogicを実現 13年8月2日金曜日
  13. 13. Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年8月2日金曜日
  14. 14. JPEG decode Algorithmの主な構造 huffman decode 量子化を戻す 2D-DCT変換 YCbCr-RGB変換 13年8月2日金曜日
  15. 15. YCbCr-RGB変換 R = Y + 1.40200(Cr-128) G = Y -0.34414(Cb-128) - 0.71414(Cr-128) B = Y +1.77200(Cb-128) 単なる色空間の変換演算です! 今日はここにFocus! 13年8月2日金曜日
  16. 16. Agenda introduction 1. 自己紹介 2. FPGAって何? 3. JPEGアルゴリズム main 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年8月2日金曜日
  17. 17. FPGA上にSoCを実現! 13年8月2日金曜日
  18. 18. 開発するSoC SPARC V8 CPU, AHB・APBバス, ethernet mac...... 13年8月2日金曜日
  19. 19. 最初にFPGA上にSoCをインプリ Linuxをブートしてソフトウェアのみで システムを動作させる。 13年8月2日金曜日
  20. 20. aeroflex gaisler社からGPLライセンスのSoCが 公開されていて、前出の図からjpegモジュールを除 いたSoCが40種類ぐらいのボードでmakeコマンド 一つで実装できます。 この状態でrepositoryに含めてます 13年8月2日金曜日
  21. 21. linuxについてもconfigurationさえすれば 動作するsnapgear-linuxが公開されてます。 この状態でrepositoryに含めてます 13年8月2日金曜日
  22. 22. jpegソフトウェアについては定評のある IJG(International Jpeg Group)のjpeg library を使用します。 linuxのユーザランドアプリのディレクトリとして repositoryに含めてます 13年8月2日金曜日
  23. 23. softもhardもgitで管理 sourceforgeの MJPEG-LEON-FPGA に repositoryがあります。 xilinx altera actel ASICでも! 動作します 13年8月2日金曜日
  24. 24. Boot! とりあえず、フレームバッファにコンソール出力するとこうな ります。以降はコンソールはUART。 13年8月2日金曜日
  25. 25. IJG付属のjpeg表示ソフトを少し変更すると motionJPEG表示できます。 遅い!!!!!! (こんなに小さな画面でもカクカク) (ちなみに動作周波数40MHz) 13年8月2日金曜日
  26. 26. ちなみにVGAサイズだと、、、 13年8月2日金曜日
  27. 27. gprofを用いて処理時間を測定 Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls ms/call ms/call name 32.26 0.20 0.20 62424 0.00 0.00 decode_mcu 24.19 0.35 0.15 249696 0.00 0.00 jpeg_idct_islow 20.97 0.48 0.13 2448 0.05 0.05 ycc_rgb_convert 8.06 0.53 0.05 1722390 0.00 0.00 jpeg_fill_bit_buffer 8.06 0.58 0.05 1 50.00 50.00 finish_output_bmp 3.23 0.60 0.02 2448 0.01 0.01 put_pixel_rows 1.61 0.61 0.01 236866 0.00 0.00 jpeg_huff_decode 1.61 0.62 0.01 4896 0.00 0.00 h2v1_fancy_upsample 0.00 0.62 0.00 62424 0.00 0.00 jzero_far huffman decode, idct, YCbCr-RGB変換が占める 13年8月2日金曜日
  28. 28. software処理でデータはどう流れる? (1) IU,cache,MMU 13年8月2日金曜日
  29. 29. software処理でデータはどう流れる? (3) cache miss とMMU 13年8月2日金曜日
  30. 30. software処理でデータはどう流れる? (2) cache miss とMMU 13年8月2日金曜日
  31. 31. software処理でデータはどう流れる? (4) framebuffer出力も同時動作 memory controllerの入り口もかなり厳しい 13年8月2日金曜日
  32. 32. software処理でデータはどう流れる? (5) memory controller入り口がボトルネックの 場合は回避策を考える 13年8月2日金曜日
  33. 33. Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年8月2日金曜日
  34. 34. 以下の様な要素技術をマスター ・IPコア設計 ・AMBAバスの理解とインターフェース設計 ・デバイスドライバ開発 (この発表ではふれません) 13年8月2日金曜日
  35. 35. AMBA busにつながるIPコア YCbCr -RGB 13年8月2日金曜日
  36. 36. YCbCr-RGB演算をハード化 hardwareは並行動作可能 動作周波数を満たす限り直列接続可能 13年8月2日金曜日
  37. 37. 他にも考慮しないといけないものがある BUS 13年8月2日金曜日
  38. 38. Busって何? (1) いつキャッシュミスが起きるかは Hardware設計時にも分からないし、アプリケーション開発時にも分からない busにつながるコアには マスタとスレーブの2種 類ある 13年8月2日金曜日
  39. 39. Busって何? (2) bus上にマスタは複数あって要求が出るタイミングは 分からないので当然ぶつかる 13年8月2日金曜日
  40. 40. Busって何? (3) アービタが交通整理をしている 13年8月2日金曜日
  41. 41. Busって何? (4) どのようなタイミングで要求や応答が起きても 正しく動くように構造やプロトコルを規定したもの 13年8月2日金曜日
  42. 42. YCbCr-RGBコア概要設計 processorから書き込まれるslave interfaceと SDRAM上のframe bufferに書き込むmaster interface 両方を持ちます 13年8月2日金曜日
  43. 43. YCbCr-RGBコア概要設計 processorから書き込まれるslave interfaceと SDRAM上のframe bufferに書き込むmaster interface 両方を持ちます 13年8月2日金曜日
  44. 44. 実行すると 殆どfps変わらない!? 13年8月2日金曜日
  45. 45. CPU使用時間の変化 13年8月2日金曜日
  46. 46. データの流れ 13年8月2日金曜日
  47. 47. Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年8月2日金曜日
  48. 48. huffman, dctもhardware化 FIFOやダブルバッファで接続 シェークハンドで連携 13年8月2日金曜日
  49. 49. 再生! ソフト処理より遥かに大きな画面サイズで 動画再生 13年8月2日金曜日
  50. 50. fpsが上がる理由 13年8月2日金曜日
  51. 51. Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年8月2日金曜日
  52. 52. まとめ(1) 13年8月2日金曜日
  53. 53. まとめ(2) 13年8月2日金曜日

×