OSC 2013  kansai @kyoto
Upcoming SlideShare
Loading in...5
×
 

OSC 2013 kansai @kyoto

on

  • 2,896 views

Opensource conference 2013 Kansai @Kyoto

Opensource conference 2013 Kansai @Kyoto

Statistics

Views

Total Views
2,896
Views on SlideShare
1,360
Embed Views
1,536

Actions

Likes
2
Downloads
8
Comments
0

3 Embeds 1,536

http://kurinkurin12.hatenablog.com 1281
https://twitter.com 251
http://cloud.feedly.com 4

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

OSC 2013  kansai @kyoto OSC 2013 kansai @kyoto Presentation Transcript

  • 栗元憲一 http://k2-garage.com FPGAキット上のオープンソースソフト・ オープンソースハードを用いたシステム開発 13年8月2日金曜日
  • Agenda introduction 1. 発表概要 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. 一部処理をhardware化 6. JPEG処理をhardware化 7. まとめ 13年8月2日金曜日
  • 自己紹介 SoC カスタムデータパスハードマクロ static timing analyzer 大学院で論理合成アルゴリズム研究 SoCの物理実装 不揮発メモリ開発 トランジスタばらつき測定システム 物理実装に近い分野を10年以上やってました。 13年8月2日金曜日
  • android + hardware http://k2-garage.com 13年8月2日金曜日
  • 書籍出版しました 表テーマ ソフトウェア処理で重たい部分をハードウェア化 して高速化する手法を学ぶ 実習書です。 対象読者 SoC開発のエッセンスを学びたい人 13年8月2日金曜日
  • 概要 LAN上にあるサーバからmotionJPEGファイルをスト リーミング。FPGA上のSoCで動画表示 このようなSoCを開発することでSoC開発のエッセン ス(ソフト処理をハード処理にすることで高速化する) を学習します。 13年8月2日金曜日
  • こんな感じのSoCをFPGA上で動かします 13年8月2日金曜日
  • 開発フロー ソフトウェア処理をハードウェ ア処理に変更することでfpsが向 上。 ハードウェア処理が何故高速な のかを学習。 13年8月2日金曜日
  • Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年8月2日金曜日
  • まずは普通のSoCの中身を知ろう(1) texus instrumentsのDM3730 ARM Cortex A-8 (processor), GPU,....... example これ beagleboard-xM 13年8月2日金曜日
  • 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日金曜日
  • FPGA FPGA内部構造 前ページのHDLを全く別の 方法で動作させます。 4∼5入力のSRAMの メモリの中の値と 接続を変更することで 任意のlogicを実現 13年8月2日金曜日
  • Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年8月2日金曜日
  • JPEG decode Algorithmの主な構造 huffman decode 量子化を戻す 2D-DCT変換 YCbCr-RGB変換 13年8月2日金曜日
  • 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日金曜日
  • Agenda introduction 1. 自己紹介 2. FPGAって何? 3. JPEGアルゴリズム main 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年8月2日金曜日
  • FPGA上にSoCを実現! 13年8月2日金曜日
  • 開発するSoC SPARC V8 CPU, AHB・APBバス, ethernet mac...... 13年8月2日金曜日
  • 最初にFPGA上にSoCをインプリ Linuxをブートしてソフトウェアのみで システムを動作させる。 13年8月2日金曜日
  • aeroflex gaisler社からGPLライセンスのSoCが 公開されていて、前出の図からjpegモジュールを除 いたSoCが40種類ぐらいのボードでmakeコマンド 一つで実装できます。 この状態でrepositoryに含めてます 13年8月2日金曜日
  • linuxについてもconfigurationさえすれば 動作するsnapgear-linuxが公開されてます。 この状態でrepositoryに含めてます 13年8月2日金曜日
  • jpegソフトウェアについては定評のある IJG(International Jpeg Group)のjpeg library を使用します。 linuxのユーザランドアプリのディレクトリとして repositoryに含めてます 13年8月2日金曜日
  • softもhardもgitで管理 sourceforgeの MJPEG-LEON-FPGA に repositoryがあります。 xilinx altera actel ASICでも! 動作します 13年8月2日金曜日
  • Boot! とりあえず、フレームバッファにコンソール出力するとこうな ります。以降はコンソールはUART。 13年8月2日金曜日
  • IJG付属のjpeg表示ソフトを少し変更すると motionJPEG表示できます。 遅い!!!!!! (こんなに小さな画面でもカクカク) (ちなみに動作周波数40MHz) 13年8月2日金曜日
  • ちなみにVGAサイズだと、、、 13年8月2日金曜日
  • 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日金曜日
  • software処理でデータはどう流れる? (1) IU,cache,MMU 13年8月2日金曜日
  • software処理でデータはどう流れる? (3) cache miss とMMU 13年8月2日金曜日
  • software処理でデータはどう流れる? (2) cache miss とMMU 13年8月2日金曜日
  • software処理でデータはどう流れる? (4) framebuffer出力も同時動作 memory controllerの入り口もかなり厳しい 13年8月2日金曜日
  • software処理でデータはどう流れる? (5) memory controller入り口がボトルネックの 場合は回避策を考える 13年8月2日金曜日
  • Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年8月2日金曜日
  • 以下の様な要素技術をマスター ・IPコア設計 ・AMBAバスの理解とインターフェース設計 ・デバイスドライバ開発 (この発表ではふれません) 13年8月2日金曜日
  • AMBA busにつながるIPコア YCbCr -RGB 13年8月2日金曜日
  • YCbCr-RGB演算をハード化 hardwareは並行動作可能 動作周波数を満たす限り直列接続可能 13年8月2日金曜日
  • 他にも考慮しないといけないものがある BUS 13年8月2日金曜日
  • Busって何? (1) いつキャッシュミスが起きるかは Hardware設計時にも分からないし、アプリケーション開発時にも分からない busにつながるコアには マスタとスレーブの2種 類ある 13年8月2日金曜日
  • Busって何? (2) bus上にマスタは複数あって要求が出るタイミングは 分からないので当然ぶつかる 13年8月2日金曜日
  • Busって何? (3) アービタが交通整理をしている 13年8月2日金曜日
  • Busって何? (4) どのようなタイミングで要求や応答が起きても 正しく動くように構造やプロトコルを規定したもの 13年8月2日金曜日
  • YCbCr-RGBコア概要設計 processorから書き込まれるslave interfaceと SDRAM上のframe bufferに書き込むmaster interface 両方を持ちます 13年8月2日金曜日
  • YCbCr-RGBコア概要設計 processorから書き込まれるslave interfaceと SDRAM上のframe bufferに書き込むmaster interface 両方を持ちます 13年8月2日金曜日
  • 実行すると 殆どfps変わらない!? 13年8月2日金曜日
  • CPU使用時間の変化 13年8月2日金曜日
  • データの流れ 13年8月2日金曜日
  • Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年8月2日金曜日
  • huffman, dctもhardware化 FIFOやダブルバッファで接続 シェークハンドで連携 13年8月2日金曜日
  • 再生! ソフト処理より遥かに大きな画面サイズで 動画再生 13年8月2日金曜日
  • fpsが上がる理由 13年8月2日金曜日
  • Agenda introduction 1. 自己紹介 2. FPGAって何? main 3. JPEGアルゴリズム 4. softwareのみでmotionJPEG再生 5. YCbCr-RGB変換のみhardware化 6. JPEG処理すべてhardware化 7. まとめ 13年8月2日金曜日
  • まとめ(1) 13年8月2日金曜日
  • まとめ(2) 13年8月2日金曜日