OSC 2013 kansai @kyoto

Post on 20-Jun-2015

2.707 views 0 download

description

Opensource conference 2013 Kansai @Kyoto

Transcript of OSC 2013 kansai @kyoto

栗元憲一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があります。

xilinxalteraactel

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_mcu24.19 0.35 0.15 249696 0.00 0.00 jpeg_idct_islow20.97 0.48 0.13 2448 0.05 0.05 ycc_rgb_convert8.06 0.53 0.05 1722390 0.00 0.00 jpeg_fill_bit_buffer8.06 0.58 0.05 1 50.00 50.00 finish_output_bmp3.23 0.60 0.02 2448 0.01 0.01 put_pixel_rows1.61 0.61 0.01 236866 0.00 0.00 jpeg_huff_decode1.61 0.62 0.01 4896 0.00 0.00 h2v1_fancy_upsample0.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 とMMU13年8月2日金曜日

software処理でデータはどう流れる? (2)

cache miss とMMU13年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日金曜日