以前作ったIntelの、MAX10 FPGAボードで遊んでいます。
以前はCPLDで白黒のNTCS信号を作ったことがあります。
今回は、MAX10 FPGAなので、回路規模にも余裕があるし、PLLが使えるので、カラーサブキャリアの信号を生成して、カラーの映像信号に挑戦したいと思います。
verilog HDLで作っていく
自作ボードには50MHzの水晶が載っています。それを元にしてFPGA内蔵のPLLで14.318180MHzを生成します。そのクロックをカウンターでカウントして、垂直同期、水平同期、カラーバースト、映像表示区間の輝度、クロマ信号を生成しました。
これらの信号を抵抗でいい感じに合成して、それぽいNTSC信号になりました。
NTSC信号の仕組みやタイミングについては、ELMさんの「RS-170A NTSCビデオ信号タイミング規格の概要」にとても詳しく書いてあります。このような貴重な資料を公開していただいて本当にありがたいです。
本物USB Blaster買いました
以前買った中華USB Blasterクローンですが、突然パソコンで認識しなくなってしまいました。色々なパソコンに接続しても認識できないので、何か壊れたようです。そこで急遽、本物のUSB Blasterを購入しました。
本物といってもIntel純正はちょっと高すぎて手が出ないので、Intel公認のパートナー企業である台湾Terasic社の USB Blaster(1-TB1)を購入しました。FPGA開発で有名なヒューマンデータ社より購入したところ、JTAGケーブルの予備ケーブルがもらえました。ちょっと嬉しいです。
本物なので、中華クローンの時にあった、セットアップ時にブルースクリーンになるということもなく、安全に使えます。
使ってみると、中華製クローンと違って、書き込み速度が20〜30%程度速い感じです。これだけでも、買ったかいがあります。
(上記の画像はセルの使用率数%の場合です。)
モニターに映像が映ったよ
USBビデオキャプチャーで、FPGAで生成した映像信号をキャプチャーして、パソコンの液晶モニターに表示しました。ブラウン管の業務用モニターにも映りました。
クロマ信号の位相分解能16段階、輝度の分解能4段階です。64色表示できます。FPGAすごいですね。何10MHzという高速なクロックの信号を、正確なタイミングで出力できます。しかも実際にICとIC間を配線しなくても、プログラムで接続できてしまういうのが、とっても便利です。ロジックICだけで作った時は試行錯誤がとても大変でした。
VRAMを準備
次は、VRAMを用意して画像を表示できるようにしたいと思います。FPGAの中に、VRAMを構築できればよかったのですが、ボードに載っている10M02の内蔵RAMは10kBくらいしかありませんでした。仕方がないのでSRAMを外付けにして、それをVRAMにしようと思います。
ただ3.3Vで動作するSRAMってあんまりないんですよね。SRAMだとHM62256などの62256シリーズが有名なのですが、どれも古いICなので5V動作です。色々探したところ、 Alliance Memory社の256kb SRAM AS6C62256(データシート)が3.3Vでも動作することが分かりました。Digikeyで売っているということは、マルツパーツでも買えますね。
これを買って、VRAMの実験をしたいと思います。
この記事のFPGAボードは↓こちら↓で販売しています。
コメント