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