オープンハードセミナー

525
-1

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
525
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

オープンハードセミナー

  1. 1. mjpeg stream viewer on FPGA ハードウェア処理とソフトウェア処理の違いを理解する 栗元憲一 http://k2-garage.com 13年7月14日日曜日
  2. 2. Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年7月14日日曜日
  3. 3. 自己紹介 excellent design inc データパス系ハードマクロや static timing analyzer の開発 九州工業大学笹尾研究室 論理合成アルゴリズムの研究 NP完全問題への挑戦 13年7月14日日曜日
  4. 4. 自己紹介 ソニーLSIデザイン SoCの物理設計 *これはIntelのチップです NSCore inc 標準プロセスで作る不揮発メモリ トランジスタバラつき測定システム 数万トランジスタ を並べたチップ switching matrix semiconductor parametric analyzer pc 13年7月14日日曜日
  5. 5. motionJPEG viewer on FPGA android + hardware 13年7月14日日曜日
  6. 6. 書籍出版しました 表テーマ ソフトウェア処理で重たい部分をハードウェア化 して高速化する手法を学ぶ 対象読者 FPGAで小さなロジックは作れるようになったが、 システムを作る方法はまだ知らない人 13年7月14日日曜日
  7. 7. Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年7月14日日曜日
  8. 8. まずは普通のSoCの中身を知ろう(1) texus instrumentsのDM3730 ARM Cortex A-8 (processor), GPU,....... example これ beagleboard-xM 13年7月14日日曜日
  9. 9. まずは普通のSoCの中身を知ろう(2) Androidやlinuxが動作してinternetに接続 できたり複雑な動作をしている Logic部分とSRAM部分とanalog回路部分 の組み合わせ 13年7月14日日曜日
  10. 10. まずは普通のSoCの中身を知ろう(3) in_A in_B BB out L L H L H H H L H H H L in_A in_B BB out L L H L H L H L L H H L 代表的な論理ゲートNAND NOR その他INVERTERやD-FFと呼ばれる記憶素子等が 複雑に組み合わさっています (数千万以上!!!!) logic部分 13年7月14日日曜日
  11. 11. まずは普通のSoCの中身を知ろう(4) SRAM部分 大量の0,1をアドレスに紐づけて記憶します。 DRAMと異なりTrが6個必要なので、DRAMと同じ面積だと容量は少ないですが、 特別な製造ライン無しにLogicと一緒に作れます。 13年7月14日日曜日
  12. 12. 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年7月14日日曜日
  13. 13. FPGA FPGA内部構造 前ページのHDLを全く別の 方法で動作させます。 4∼5入力のSRAMの メモリの中の値と 接続を変更することで 任意のlogicを実現 13年7月14日日曜日
  14. 14. FPGA vs ASIC pros 一種類のチップで任意の機能のLSIをユーザの手元で実現  動作中に書き換えるアプリケーションの可能性 少量生産のASICより安くなる可能性 cons 同一機能のASICより面積増大、速度遅い、消費電力大 大量生産するとASICよりコスト高 13年7月14日日曜日
  15. 15. Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年7月14日日曜日
  16. 16. JPEG algorithm 画像を人間の目では劣化が 分かりにくいように圧縮するアルゴリズム とりあえずencodeを理解 decodeは逆向きにしただけ。 13年7月14日日曜日
  17. 17. JPEG encode Algorithmの主な構造 13年7月14日日曜日
  18. 18. RGB−YCbCr変換(1) Y = 0.29900R + 0.58700G + 0.11400B Cb = -0.16874R - 0.33126G + 0.5000B + 128 Cr = -0.5000R -0.41869G - 0.08131B + 128 13年7月14日日曜日
  19. 19. RGB−YCbCr変換(2) Y成分と比較してCbCr成分に人間の目は 鈍感なので間引くことが可能 13年7月14日日曜日
  20. 20. 2D-DCT変換(1) 右上の基底波形の重ねあわせの係数に 変換する正規直行変換 13年7月14日日曜日
  21. 21. 2D-DCT変換(3) 8x8行列演算を2回行う 13年7月14日日曜日
  22. 22. 量子化 dctと量子化によって、次のrun-length huffman圧縮で 圧縮しやすいデータを作り出す 13年7月14日日曜日
  23. 23. ランレングス圧縮 基本:  同じ文字が連続した数を記述 例: 「A A A A A B B B B B B B B B A A A」 → 「A 5 B 9 A 3」 JPEGでは: 0が連続した数を後ろに付ける 例: 2,1,-1,0,3,2,1,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0, → 20,10,-11,30,20,11,14,14,EOB 13年7月14日日曜日
  24. 24. huffman圧縮 基本思想: 出現確率の大きい文字に少ないビット数のコードを、出現確率の小さい文 字に大きなビット数のコードを割り当てる 13年7月14日日曜日
  25. 25. Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年7月14日日曜日
  26. 26. FPGA上にSoCを実現! 13年7月14日日曜日
  27. 27. 実現するシステム LAN上にあるサーバからmotionJPEGファイル をストリーミング。FPGA上のSoCで動画表示 13年7月14日日曜日
  28. 28. 開発するSoC SPARC V8 CPU, AHB・APBバス, ethernet mac...... 13年7月14日日曜日
  29. 29. 最初にFPGA上にSoCをインプリ Linuxをブートしてソフトウェアのみで システムを動作させる。 13年7月14日日曜日
  30. 30. aeroflex gaisler社からGPLライセンスのSoCが 公開されていて、前出の図からjpegモジュールを除 いたSoCが40種類ぐらいのボードでmakeコマンド 一つで実装できます。 この状態でrepositoryに含めてます 13年7月14日日曜日
  31. 31. linuxについてもconfigurationさえすれば 動作するsnapgear-linuxが公開されてます。 この状態でrepositoryに含めてます 13年7月14日日曜日
  32. 32. jpegソフトウェアについては定評のある IJG(International Jpeg Group)のjpeg library を使用します。 linuxのユーザランドアプリのディレクトリとして repositoryに含めてます 13年7月14日日曜日
  33. 33. Boot! とりあえず、フレームバッファにコンソール出力するとこうな ります。以降はコンソールはUART。 13年7月14日日曜日
  34. 34. IJG付属のjpeg表示ソフトを少し変更すると motionJPEG表示できます。 遅い!!!!!! (こんなに小さな画面でもカクカク) (ちなみに動作周波数40MHz) 13年7月14日日曜日
  35. 35. ちなみにVGAサイズだと、、、 13年7月14日日曜日
  36. 36. 開発フロー ソフトウェア処理をハードウェ ア処理に変更することでfpsが向 上。 ハードウェア処理が何故高速な のかを学習。 13年7月14日日曜日
  37. 37. softもhardもgitで管理 sourceforgeの MJPEG-LEON-FPGA に repositoryがあります。 xilinx altera actel ASICでも! 動作します 13年7月14日日曜日
  38. 38. 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年7月14日日曜日
  39. 39. software処理でデータはどう流れる? (1) IU,cache,MMU 13年7月14日日曜日
  40. 40. software処理でデータはどう流れる? (3) cache miss とMMU 13年7月14日日曜日
  41. 41. software処理でデータはどう流れる? (2) cache miss とMMU 13年7月14日日曜日
  42. 42. software処理でデータはどう流れる? (4) framebuffer出力も同時動作 memory controllerの入り口もかなり厳しい 13年7月14日日曜日
  43. 43. software処理でデータはどう流れる? (5) memory controller入り口がボトルネックの 場合は回避策を考える 13年7月14日日曜日
  44. 44. Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年7月14日日曜日
  45. 45. 以下の様な要素技術をマスター ・IPコア設計 ・AMBAバスの理解とインターフェース設計 ・デバイスドライバ開発 (この発表ではふれません) 13年7月14日日曜日
  46. 46. AMBA busにつながるIPコア YCbCr -RGB 13年7月14日日曜日
  47. 47. YCbCr-RGB演算をハード化 hardwareは並行動作可能 動作周波数を満たす限り直列接続可能 13年7月14日日曜日
  48. 48. Busって何? (1) いつキャッシュミスが起きるかは Hardware設計時にも分からないし、アプリケーション開発時にも分からない busにつながるコアには マスタとスレーブの2種 類ある 13年7月14日日曜日
  49. 49. Busって何? (2) bus上にマスタは複数あって要求が出るタイミングは 分からないので当然ぶつかる 13年7月14日日曜日
  50. 50. Busって何? (3) アービタが交通整理をしている 13年7月14日日曜日
  51. 51. Busって何? (4) どのようなタイミングで要求や応答が起きても 正しく動くように構造やプロトコルを規定したもの 13年7月14日日曜日
  52. 52. YCbCr-RGBコア概要設計 13年7月14日日曜日
  53. 53. FIFO(First In First Out) データを一定数貯めれる バッファで一番古いデータ から出力される 13年7月14日日曜日
  54. 54. 実行すると 殆どfps変わらない!? 13年7月14日日曜日
  55. 55. CPU使用時間の変化 13年7月14日日曜日
  56. 56. データの流れ 13年7月14日日曜日
  57. 57. Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年7月14日日曜日
  58. 58. huffman, dctもhardware化 FIFOやダブルバッファで接続 シェークハンドで連携 13年7月14日日曜日
  59. 59. ダブルバッファ 13年7月14日日曜日
  60. 60. 再生! ソフト処理より遥かに大きな画面サイズで 動画再生 13年7月14日日曜日
  61. 61. fpsが上がる理由 13年7月14日日曜日
  62. 62. Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年7月14日日曜日
  63. 63. まとめ(1) 13年7月14日日曜日
  64. 64. まとめ(2) 13年7月14日日曜日
  65. 65. おまけ 裏テーマ SoCに対するバザール開発の可能性 13年7月14日日曜日
  66. 66. 買ってねw 13年7月14日日曜日
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×