Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

FPGAを用いたシリアル入力型VGA映像出力装置の設計と実装

2,942 views

Published on

Keio Univ. Murai Lab. ARCH
Yusei Yamanak @ B2 / WIP presentation.

Published in: Technology
  • Be the first to comment

FPGAを用いたシリアル入力型VGA映像出力装置の設計と実装

  1. 1. FPGAを用いたシリアル入力型 VGA映像出力装置の設計と実装 WIP ARCH B2 miyukki PARENT macchan
  2. 2. きっかけ • 映像、音響に愛がある • FPGAを触ってみたい • FPGAを触って高価な映像、音響機器類の実装を 作ってみたい • オープンソースで公開する • FPGAの実装スキルを身に着けたい
  3. 3. 実装について • RS-232からデータを受け取り、レジスタに記憶す るシリアルモジュールとレジスタのデータを映像と して出力するVGAモジュールをFPGAに実装し、実 際に動作させた • ソースコードはGitHubで公開している https://github.com/miyukki/spartan-3an-vga
  4. 4. 構成図 FPGA 評価ボード モニター PCなど RS-232 VGA 10101… …
  5. 5. 環境 • FPGA • Spartan 3AN 評価ボード • 開発環境 • Ubuntu 14.04 • ISE WebPACK 20131013
  6. 6. Spartan 3AN 評価ボード
  7. 7. Serial Module • RS-232インターフェースを用いてRS-232規格の 通信をするモジュールを実装 • 入力をレジスタに記録していく • RS-232のではいくつかのボーレート(通信速度)を 指定することができるが、精度の観点から9600bps を指定した • 50MHzの発振子から9600Hzを生成してモジュール のクロックとした
  8. 8. RS-232仕様1 • EIA(現、TIA)が「ANSI/TIA/EIA-232-F-1997」、 日本では「JIS X 5101」として規格が定められて いるが、製品によって様々な信号が出力されている • 仕様ではデータビットは8bit、スタートビットとス トップビットがそれぞれ1bit、データビットにパリ ティビットを含む場合がある • 1本の信号でデータをやりとりするが、クロックの 同期をデータとともに行う調歩同期式のため、お互 いのボーレートを同期する必要がある
  9. 9. RS-232仕様2 • また、ビットの1は-5V以下であり、0は5V以上であ るため、注意が必要 • 評価ボードの場合は電圧変換器を含んでいるため、 実装時に考慮しなくてもよい
  10. 10. VGA Module • D-Sub 15pinインターフェースを用いてVGA規格 の通信をするモジュールを実装 • レジスタの内容を表示し続ける • ピクセル単位で25MHzのクロックが必要なため、 50MHzの発振子から25MHzを生成してモジュール のクロックとした • 1ピクセル25MHzだとフレーム単位で、 59.52Hz 59.94Hz=60FPS
  11. 11. VGA仕様1 • VGA信号における厳密な規格は制定されていない • 民間でVESAなどが仕様を決めているが、製品によっ て様々な信号が出力されている • 最低限必要な信号はR,G,B,水平同期,垂直同期の5本
  12. 12. VGA仕様2 • ピクセルごとの色をアナログ値で出力する • ちなみに評価ボードでは4bit出力をサポートしているた め、2^4bit^3色=4096色の出力が可能 • 1ライン(ここでは640)の出力の後に、水平同期信 号をLOW※にする • 1フレーム(ここでは640*480)の出力の後に、垂直 同期信号をLOW※にする ※機器によってはHIGH出力するものもあり
  13. 13. VGA仕様 図 Active Video 水平同期 96px 垂直同期 2px 640 480 800 525 1 0 16 48 10 33
  14. 14. Register • ここで言うRegisterとはFF/Latch回路のこと • FPGA内で生成できるFF/Latch回路の制限から、 64x48=3072bitの領域を確保した • VGAの解像度は、640x480のため、10pxのブロッ クを表示する
  15. 15. 描画について • シリアルからの入力をレジスタにunshiftをして記 録をしていき、レジスタの先頭から画面に描画する 1 10 110101 100000… 010000… 110101… … … … 画面の描画レジスタシリアルの入力 ※unshift方式であればシリアルからの入力が何番目の  レジスタに代入するかを記録する必要が無いため 10px
  16. 16. 回路仕様 VGA FF/Latch Register CLOCK 50MHz CLOCK GENERATOR 9600Hz CLOCK GENERATOR 25MHz [3:0] RED [3:0] GREEN [3:0] BLUE HSYNC VSYNC [3071:0] Serial RS-232 TX [3071:0] CLK RX CLK CLK CLK FF/Latch Register FF/Latch Register
  17. 17. デモ1
  18. 18. 画像の出力 • Rubyで画像を二値化し、0と1でシリアル出力する プログラムを作った 00000000 01111110 01000000 01111110 00000010 01111110 00000000 …
  19. 19. デモ2
  20. 20. 実装の問題点 • FPGA内にFF/Latch回路をこれ以上作ることが出来 ない • 評価ボードのSDRAMなどを使うことによってより 多くのデータを記録することができ、多色で高解像 度のデータを持つことができる • RS-232の通信速度が遅い/損失が出る • ボーレートを速くすると損失が出るが、数倍のクロッ クで動作させ、中間位置でデータを取得するべき • パリティを用いて早くするか、Ethernetなどを用 いる
  21. 21. 今後について • VGAはもはや主流ではなくなってきているため、 今後は、SDI/HDMIなどで実装、開発をしたい • HDMI入出力が可能なSpartan 6(Atlys)評価ボー ドを借りることが出来たので、2入力の映像を合 成することを目標としたい
  22. 22. 参考文献 • 全般 • FPGA始めました! • http://kozos.jp/fpga/ • RS-232 • シリアル通信RS232Cについて • http://homepage3.nifty.com/ken-create/hard/rs/rs232c.htm • VGA • Video Graphics Array • http://en.wikipedia.org/wiki/Video_Graphics_Array • Arduino Uno output to VGA monitor • http://www.gammon.com.au/forum/?id=11608
  23. 23. 質疑応答など
  24. 24. ご清聴ありがとうございました

×