このドキュメントを含むファイルは、拙作「RGBI対応スキャンコンバータ」に使用したFPGAをコンフィグレーションするために必要なソース及びプロジェクト一式です。
スキャンコンバータの概要やおおまかな動作原理については、次のWebサイトを参照してください。なお予告なくURLが変更されることがありますので、もし行方不明になった時は恐れ入りますがググるなどして捜して下さい。
FPGAはザイリンクスのISE14.7にて開発しました。一時はISEの後継バージョンがどうなるのか右往左往しましたが、Spartanなど対応は続くが古いFPGAについてはISEのバージョンが固定されて使用していくことになりました。
ISEを起動し、ファイルを展開したフォルダを開いてScanConv.xiseを指定するとプロジェクトが再生されます。あとはISEの使い方に沿って改造など様々な用途に活用して下さい。
ほとんどコメントのない不親切なソースですが、ここで簡単な説明をしておきます。機能としては
- RGBI→RGB変換
- ラインダブラーを含むスキャンコンバート
- 同期信号調整
の三つに大分されます。
RGBI→RGB変換は、337行目から586行目のテーブル変換で行います。switch~caseが複数ブロックありますが、これはスイッチ選択で切り替えられた変換モードごとにテーブルがあるという構成になっています。
スキャンコンバートはckgenというクロック生成モジュール(32MHzクロック入力から56MHzと100MHzを生成)とRAM(4096×4bit)、その他回路で構成されています。RAMはデュアルポートで構成され、ポートAを入力専用、ポートBを出力専用として使っています。
56MHzクロックは入力側のドットクロックの4倍として生成させています。つまり水平同期周波数15kHz・640ドットにおけるドットクロック、16MHzの4倍…ではないですね。当初ドットクロックはMZ-2000用CRTであるMZ-1D01の仕様を元に決定したものだったのですが、実は16MHzより若干遅いようで表示が横からあふれてしまいます。MZ-700/1500/X1対応のこともありますし、14.318MHzの4倍に近い56MHzに変更しました。なおクロック設定のみいじったので、信号名はCLK64のままだったりします。
56MHzクロックでカウントするICTRは水平同期信号が入ったら('L')リセットされます。念のため入力はフィルタリングしてありますが、果たしてどの程度効果があるのかはわかりません…(217行目~231行目)。カウンタICTRはそのままRAMの入力側アドレスカウンタとして使っています。
さらに56MHzクロックでは垂直同期信号を監視し、入力がなければモノクロモードとして自動的に切り替えています。モノクロモードでは、RGBI入力の代わりに全てをI入力で置き換え、次に書いている分離した同期信号を入力されたものの代わりに使うようになります。
157行目から198行目にて、MZ-2200のモノクロ出力にある複合同期信号から水平同期信号を消去するためのパルスを生成します。水平同期信号の一周分のカウンタから四ヶ所のチェックポイントのタイミングを作り、水平同期パルスをキャッチするようカウンタを調整します。水平同期信号のフィルタリングは203行目から212行目で行い、これにより元の水平同期信号と垂直同期信号を再生するようにしています。
100MHzクロックは出力側の水平同期信号生成とRAMの出力側アドレスカウンタとして使っています(238行目~332行目)。
入力側と同様に水平同期信号をフィルタリングしてカウンタCTR100Mをリセットします。このカウンタは入力の1行分=出力の2行分をカウントしています。CTR100Mを基準に二周回るカウンタOCTRが同時に動いています。両カウンタは入力される水平同期信号と同期するように随時調整されるようになっていて、入力のジッタに対してあまり敏感に反応しないように変更されました。OCTRを元に出力用水平同期信号を生成し、RAMの出力用アドレスカウンタとしています。
またそのカウンタを元に出力用水平同期信号と水平ブランキング信号を作成しています。水平ブランキング信号はX1シリーズのボーダーカラー出力に対応するもので、これを元に出力用映像信号をマスクすることでモニターの色が暗く変化するのを防いでいます。現時点ではX1turboの標準解像度モードでの現物合わせでそのタイミングを決めているので、今後もし他の機種で不都合があった場合は予告なく変更することがあります。もし左右の端に表示されない部分があったら、325行目(左端)や327行目(右端)の数値を変更してみて下さい。
いずれもかなり以前からあるアップスキャンコンバータの製作例。ラインダブラーの考え方をここで学びました。といってもこれらの製作例ではラインメモリを使用しているため、FPGAではデュアルポートRAMに置き換える必要があります。
使用したFPGA基板が付録としてついてきた雑誌です。今となっては雑誌自体なくなりましたが、回路図など一部データや記事が今でも参照できます。
デバイスの仕様はデータシートをよく読んで。以前入手できた日本語版は改版対応してないせいか提供されなくなってしまいました。
なおデジタルRGB出力の同期信号タイミングは当時のカタログ等に掲載されたものを参考にしています。
本データ全体または一部を利用した結果につきまして、いかなる損害・損失についても当方はその責任を全て免除されるものといたします。