Your SlideShare is downloading. ×
オープンハードセミナー
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

オープンハードセミナー

361

Published on

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

  • Be the first to like this

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×