ラベル dvi_enc の投稿を表示しています。 すべての投稿を表示
ラベル dvi_enc の投稿を表示しています。 すべての投稿を表示

2014年7月21日月曜日

my_FPGA_BOARD 13

先日公開したMY_FPGA_BOARDの設計データのFPGA実装例に、DVIとカメラの実装例を追加した。

http://www.hi-ho.ne.jp/bravo-fpga/

2014年7月19日土曜日

my_FPGA_BOARD 12 (カメラ基板の作成 2)

カメラ用モジュールを含むシステムアーキテクチャは以下のようになった。

I2Cはカメラ(TCM8230MD)の設定を行うために必要である。

例の1件のタイミングエラーは相変わらずあるが、それ以外は問題無く合成できた。
リソース(SLICE)の使用率は53%であった。


動作確認


撮影した画像(左上)


さて、Communication Box (GPIB-IP)の作成から始まってずっとLattice MachXO2で遊んできたが、ここで一旦MachXO2は終わりにして次はZYBOで遊んでみようと思う。

my_FPGA_BOARD 11 (dvi_encの実装とカメラ基板の作成)

レベル変換基板をチップ部品を使って小型化した。




FPGAの中身の方はフレームバッファを組み込み、以下のようなアーキテクチャにした。


dvi_encはこれまでにSpartan3やSpartan6でも動作させている。その時に使用した画像データを今回も表示させてみた。


綺麗に表示されている。長時間表示させても表示が異常になることは無いので、信号レベルに問題無いと思われる。このレベル変換回路は、インターネットでLVTTL IOと抵抗を使ったDVIへのレベル変換回路を作成されている方のブログを見つけ、それをヒントにLVDS版を考えてみたのだが、後から調べたら、FPGAマガジンのNo.1にもこれとほぼ同じ回路(LVDS→DVI)が掲載されている記事があった。(p51,図2)

・カメラ基板
以前予備で購入しておいたVGAカメラ(TCM8230MD)が1個残っていたのでカメラ基板も作ることにした。



ちゃんと動作するかな?

・タイミングエラー
ところで、前回のブログでFPGAの合成結果で1箇所タイミングがMetしない箇所があると書いた。
そのタイミングエラーはまだ解決できていない。
以下のように325MHzの系で1箇所だけタイミングエラーが出ている。

そのエラーの詳細は以下の通りだ。

PT35AのIOLOGICについてエラーと言っているようだ。どうもFmaxの問題のような気もするのだが、それならばエラーが1箇所だけというのは解せない。

PT35Aは上記の通り112番ピンに割り当てていたのだが、試しに、PT25AとPT35Aのピン割り当てを入れ替えて見た。

この場合、112番ピンがPT25Aとなるのでタイミングエラー箇所はPT25Aになると思うのだが、不思議なことにPT35Aがタイミングエラーになる。


念の為、Physical Viewerで確認したが確かにPT35Aは122番ピンになっている。

・・・と言うことで、このエラーはどうも解せない。何が不味いんだろうか???
タイミングエラーは物理的な配線に対して出されるものだと思うのだが、これだと信号名に対して出されているように見える。。。実際の動作は問題無いことも相まって、うーむ。。。解せない。。


2014年7月16日水曜日

my_FPGA_BOARD 10 (dvi_encの実装 1)

FT2232HLの非同期FT245モードの動作確認はできたので、今度は趣向を変えて画像出力 (dvi_enc)をやってみることにした。 画面サイズはXGA (1024 x 768)を目指す。  my_FPGA_BOARDに搭載しているMachXO2はTMDSやCML信号出力をサポートしていないのでMachXO2がサポートしている出力レベルで出力し、これを外付け回路でTMDSにレベル変換する必要がある。  DVI I/Fは端的に言えばシリアルI/Fであり信号レートはドットクロックの10倍のレートになる。 XGAの場合はドットクロックが65MHzなので650Mbps (325MHz)である。 MachXO2のデータシートによると、このレートに対応できるのはLVDSのみであるので、LVDSで出力することにする。

システムアーキテクチャは以下のようにした。 まともに動作するか不安もあったので、フレームバッファの回路は実装せず、dvi_encのデモ回路のみを実装している。

基本的にdvi_encのRTLをそのまま使用しているが、クロックやdvi_tmds_txはMachXO2用に若干変更した。

クロックの位相関係

合成は出来たが、1箇所だけタイミングがmetしていない。

metしていない部分の詳細

合成制約等の設定を変えれば解決できるのでは無いかと思うが、とりあえずこのままで動作確認してみることにした。
レベル変換回路は以下のようにした。

この回路をユニバーサル基板に実装した。


動作した。!!


デジタルI/Fだけあって、階調も綺麗に出ている。

レベル変換回路出力のコモンモードレベルと差動振幅レベルに不安もあったのだが、レベル変換基板の出力をLCDディスプレイ(SAMSUNG SyncMaster 2243)と直結した場合でも、また、BUFFALOのHDMIセレクタを介した場合でも動作した。  こんなに簡単にXGAが表示できるとは想定してなかったので嬉しい。 \(^_^)/   ただし、現状はdvi_enc部のみで実用性は無い。 フレームバッファも入れてみよう。


2011年11月7日月曜日

Spartan3A StarterKit 用 DVI (HDMI)変換基板の作成

Spartan3A StarterKitのDVI I/F用コネクタは下の写真の通りHDMIコネクタに線材を直付けしていて、いつか変換基板を作ることが懸案事項になっていた。


ようやく、今日ユニバーサル基板を用いて変換基板を作成した。


配線はUEW線を使用したが差動信号なのでツイストペアにし、長さも揃えた。


気持ち LCD Displayの同期のかかりも早くなった気がする。


アップロードした動画は階調が落ちる?らしく上の動画ではLCD Displayの表示画面の画質や階調が悪く見えるが、実際は綺麗に表示されている。


2011年10月17日月曜日

dvi_enc download 200+1

先日jwrtのsourceforgeでのdownload数が100に到達したが、
今日見たらdvi_encも201に到達していた。



国数は27ヵ国、記念すべき200 Download目は日本のようだ。
200 Download目を見逃してしもうた。
それにしても、FPGAをやっている人って世界中にいらっしゃるんだな。
当然っちゃー当然かも知れんが。

2011年5月22日日曜日

dvi_encをAtlysに移植した

Spartan6のprogrammingも出きるようになったので、次のステップとして dvi_enc の移植を行った。
移植は簡単に出来たが、ついでにclockの乗せ替え部分(dvi_gearbox)の変更を行った。
dvi_gearboxはこれまで非同期FIFOにしていたがこれを止めて、hs_ddr2cのclockの乗せ替え部と同じ方式にした。具体的にはclock生成部において、pixel clock(pclk)はTMDSのclock(sclk)をring counterで1/5して作るのだが、この時pclkのstrobe信号(pvld)も生成する。 clockの乗せ替え部ではpclk同期の信号をpvldに同期してsclkでcaptureする。 この方式の方が使用するresourceが少なくて済む。



以下は動作している様子だ。 XGA (1024x768)で動作させている。



公開しているdvi_encも新版に更新した。

2010年10月4日月曜日

acerのH243で確認

これまでDVIエンコーダの出力はSAMSUNGのSyncMaster 2243でのみ確認していたが、念のため、acerのH243でもちゃんと表示されるか見てみた。





































問題なく表示されている。

2010年10月3日日曜日

ブログ開始

無謀(?)にもDVI エンコーダ(dvi_enc)をSourceforgeで公開したのを契機にブログを始めてみた。
きゃ~~、コッパズカシィ~
何やってんだ→俺。まっ、いいか。
実は、公開するのは今回が初めてでは無く2回目(2作目?)だ。
最初のはjwrtというJTAG programmerだった。特にアナウンス等していないのに、これまでに何と世界中の50件近い方がダウンロードしている。ちょっとビックリ。

さて、dvi_encだが、これはDVI規格書を参考にしてXilinxのSpartan-3A(Spartan-3 Starter Kit ボード)に実装してみた実装例だ。意外とそれほど労せずにXGA(1024x768)の解像度までを実装することが出来た。(やっぱXilinxっていいな。好きだな~Xilinx)

表示画面は当初はカラーバー+文字のみだった。

















これだと面白みがないので、Linuxのマスコットのペンギン君のアニメーションも表示するようにしてみた。















表示モードは4種類でSOUTHボタンで切替できる。上の画像は各モードのシミュレーションによる出力画面を合成したもの。ペンギン君を表示するモードでは彼が回転しながら画面上を移動する。下は実際の出力の様子。



















さぁ~て、次は何しようかしらん。。。

ERROR: Failed to spawn fakeroot worker to run ...

なにかと忙しくてなかなか趣味の時間を確保できない。 ...orz  家の開発機のOSはLinux Mintなのだが、最近バージョンを22に更新したところ、myCNC用のpetalinuxをビルドできなくなってしまった。ビルドの途中で ERROR: Failed to spawn ...