並列処理プロセッサを用いた 動画像処理システムの開発 数理情報科学専攻 福永研究室 唐木 靖雅 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 1 研究背景-TPCOREの変遷 • 2005年度 – TPCORE完成 • Inmos社Transputer-T425をベースとして開発された • 2008年度 – 動作速度の向上 • これまで動作周波数が24MHzであったTPCOREが48MHzまで 向上した(現在のFPGAでは50MHzで動作確認) • 2009年度 – VirtualChannel&Routerの開発 • ネットワークトポロジに依らない自由なネットワーク構成が可能 となった • 2010年度 – 実数演算機構の開発 • ハードウェアによる高速な実数演算が可能となった(T800互換) 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 2 研究背景-動機 • 昨年度までの研究でTPCOREはより実用的なプロセッサ となった. • そこで現在, TPCOREを動画像処理に応用し, 「電動車椅子危険探知および回避システム」 の開発を行っている. • このシステム開発にはTPCOREにカメラ画像を取得する 機能が必須である. TPCOREへカメラインターフェースを実装 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 3 研究背景-実装における問題点 • 旧来のTPCOREのメモリでは動画像を扱うには不十分. (動画1フレームのサイズ648×494 = 約32KBに対し, メモリ容量16KB) – TPCOREはOSを必要としない 並列処理プロセッサであるため, 各プロセッサにそれほど大きい メモリを持つ必要はなかった • このままではインターフェースを 実装しても取得したフレームを TPCORE内に保持できない. FPGA 外部メモリ 外部メモリを実装することで解決 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 4 CameraLinkインターフェース • 本研究ではCameraLinkという規格を採用した. • 理由は動画像データが非圧縮で転送されるので 直接TPCOREで処理が可能であるため. 転送される信号 525 1 2 8 9 10 11 25 26 27 28 522 523 524 525 1 2 3 22 23 24 LVAL FVAL DVAL • • • • • CLK FVAL LVAL DVAL DATA : 25MHz : 垂直同期信号 : 水平同期信号 : データ同期信号 : 画素データ DATA 9H 503 504 505 14H 516 517 518 519 LVAL FVAL DVAL DATA 494H 2015/10/1 8H TOTAL : 525H (1H : 780clk) 首都大学東京 修士論文発表会 S.Karaki 使用カメラ : VCC-G21V31CL(CIS社) モノクロカメラ 5 TPCOREへの組み込み • TPCOREのデータバス(32bit)とアドレスバス(21bit)に接続. • 既存の命令”move”を使用して大量のデータを1命令で メモリへ取得する. TPCOREの命令で CameraLink信号 を解析 imgbufにアクセスで きるようにするため の部分 cl_data camera cl_if req TPCORE 本研究のCameraLink インターフェースに関して 新規に設計したのは 黄色の部分 pix_data, waddr etc. pix_ data pix_ data dbus imgbufctrl 動画像フレームを バッファ(一時保存) 常に最新のフレー ムをバッファし続け ている 2015/10/1 imgbuf (320112 byte =648×494 byte) addr addr TPRAM move命令 : メモリ間の配列コピー 首都大学東京 修士論文発表会 S.Karaki 6 move命令 • 本システムではこのmove命令を使用し各周辺機器へ アクセスしている. • move命令はメモリのあるアドレスから別のアドレスへ データをコピーする命令である. Memory … … 01010010 2015/10/1 … 10010101 … 00101011 11010010 … … … … … … … ... … … … … … … … … … … … … … … ... … 首都大学東京 修士論文発表会 S.Karaki 7 TPCOREの機能追加 • move命令により外部のimgbufへアクセスできるようにする ため主にデータバスに変更を加えた. – メモリアクセスの際, アドレスによりアクセス先を切り替えるスイッチ を用意 これまで TPCORE addr : #80000003 addr data … TPRAM 3 data … 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 8 TPCOREの機能追加 • move命令により外部のimgbufへアクセスできるようにする ため主にデータバスに変更を加えた. – メモリアクセスの際, アドレスによりアクセス先を切り替えるスイッチ を用意 現在 TPCORE camera addr data 0 data 21bit目が1のアドレスにアクセスした時 imgbufへアクセスする. 例)10000000000100000000000000000000 →imgbufの0番地 addr : #80100000 … … addr imgbuf data … TPRAM 3 data … 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 9 ソフトウェア側のアクセス方法 • OccamのPLACE文によってimgbuf上に変数を宣言するこ とによってアクセス. – 例)imgbufから100byte分の画像データを取得 データの取得自体 は可能だが, メモリの容量の 問題でフレーム 全ては取得 [100]BYTE x: しきれない 約32KB data imgbuf (読み取り専用) BLANK 21bit目が1のアドレスにアクセスした時…とあったが, この記述でそのアドレスを指定してアクセスを 実現している. 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 16KB TPRAM 10 外部メモリの実装-DDR2-SDRAM • ここまでの研究でTPCOREはカメラの動画像を取得できる ようになった. • しかし, TPCOREのメモリ(16KB)では1フレームを保持する のにも不十分である. • そこで, 使用している評価ボードに標準搭載されている DDR2-SDRAMを外部メモリとして利用できるようにした. – さらに1MBのメモリ領域が使用可能となった • そのためにさらにTPCOREに変更を加え, 外部メモリにアク セスするためのインターフェースも作成した. • これにより, 画像1フレームの保持だけでなく, 複数フレーム の保持, 処理後の結果の保存などが可能となった. 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 11 外部メモリを含めたシステム概略図 TPCOREの命令で DDR2-SDRAMにア クセスできるように するための部分 camera cl_if TPCORE dbus imgbufctrl ddr-if DDR2-SDRAM imgbuf TPRAM 外部メモリ (約1MB) 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 12 システムの動作 画像取得中 camera 001001… cl_if TPCORE dbus frame imgbufctrl frame imgbuf frame3 frame2 frame1 ddr-if DDR2-SDRAM addr : #80004xxx #8010xxxx TPRAM Imgbufへの 外部メモリへの 読み込み信号 書き込み信号 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 13 システムの動作 データ処理中 camera 001001… cl_if TPCORE dbus imgbufctrl data imgbuf frame3 frame2 frame1 ddr-if DDR2-SDRAM data addr addr :: #80004xxx #8xxxxxxx TPRAM 外部メモリへの Memoryへの 読み込み信号 書き込み信号 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 14 外部メモリへのアクセス方法 • 基本的にはimgbufへのアクセス方法と同様である. • データバスの分岐をさらに増やし, 外部メモリへもアクセス 可能にした. • ソフトウェア側もimgbufと同様にPLACE文で実現. 約32KB 15bit目~20bit目のいずれかが1のアドレスにアクセスし た時外部メモリへアクセスする. imgbuf (読み取り専用) data [320112]BYTE xx: [320112]BYTE yy: 約1MB • PLACE文を用いることにより, ソフトを書くユーザ側 からはimgbufも外部メモリも従来のメモリ(TPRAM) 16KB も一様に扱うことができる. 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 外部メモリ (DDR2-SDRAM) TPRAM 15 画像データの取得時間-理論値 • Imgbuf => 外部メモリ – byte数nに対し(6n+2) clkの処理時間がかかる. – 本研究で使用したカメラの画像データは320112byteである. – テスト時のTPCOREの動作周波数は25MHz (1clk = 40ns). 処理時間(ns) = (6×320112+2)×40=76826960 (ns) • 外部メモリ => TPRAM – テスト時の条件は上と同様. – 外部メモリから読み込む際には(10n+2)clkの処理時間がかかる. 処理時間(ns) = (10×320112+2)×40=128044880 (ns) 画像データの取得時間は 204871840 (ns) 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 約0.205秒 (約5fps) 16 画像データの取得時間-実測値 • 実際にFPGAに実装し, 取得にかかる時間を計測した. 約0.077秒 約0.131秒 約0.208秒 計測結果 move命令の準備時間等により多少のずれはあったが, ほぼ理論値通りの計測結果となった 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 17 動作検証 • カメラの動画像の各フレーム平均輝度を出力 – 輝度は0~255で表される. 正常動作していることが確認できた 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 18 まとめ • TPCOREへCameraLinkインターフェースを実装する ことにより, カメラの動画像を取得できるようになった. • さらに, メモリが容量不足だったTPCOREに外部メモリを 実装することで取得した画像データを保持できるようになっ た. – TPRAM・imgbuf・外部メモリをユーザ側からはPLACE文によって 一様に扱うことができる仕様になっている • 以上により, TPCOREを動画像処理に用いることが 可能となったといえる. 電動車椅子の危険探知および回避システムへ TPCOREを活用可能となった 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 19 今後 • ステレオカメラへの対応 • 動画像処理を行うための最適な ハードウェア構成の検討 • 処理の効率化のためにmove命令の改良 – 本研究ではmove命令を多用したが, このmove命令を改良することによって 大幅に処理速度を向上させることが可能である. 現状のmove命令は, byte数nに対し, (6n+2) clk の処理を行っている. これを, アクセス単位を変更 することにより理論上はさらに 高速化できると考えられる. • データ取得をDMA(DirectMemoryAccess) 方式へ 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 20 「電動車椅子」へのシステムの提案 CameraLink camera(right) TPCORE CameraLink camera(left) TPCORE DDR2SDRAM DDR2SDRAM ROUTER TPCORE ・・・ TPCORE TPCOREの台数はスケーラビリティや画像処理アルゴリズム の計算量を参考にさらに検討が必要である. 2015/10/1 首都大学東京 修士論文発表会 S.Karaki 21
© Copyright 2024 ExpyDoc