Post on 20-Jun-2015
description
栗元憲一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日金曜日
書籍出版しました
表テーマソフトウェア処理で重たい部分をハードウェア化して高速化する手法を学ぶ
実習書です。
対象読者
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日金曜日