デジタルrgb出力をvgaモニタに出力したい
差分
このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| デジタルrgb出力をvgaモニタに出力したい [2020/12/07 05:56] – 作成 araki | デジタルrgb出力をvgaモニタに出力したい [2020/12/23 01:55] (現在) – [アップスキャンコンバータ] araki | ||
|---|---|---|---|
| 行 20: | 行 20: | ||
| === TTLロジック版 === | === TTLロジック版 === | ||
| + | |||
| + | == 部品 == | ||
| + | |||
| + | ^部品^点数^メモ^ | ||
| + | |74LS02|3|2入力NORゲートx4| | ||
| + | |74LS08|2|2入力ANDゲートx4| | ||
| + | |74LS125|1|Tri-State Bufferx4| | ||
| + | |74LS86|1|2入力XORゲートx4 H-Sync/ | ||
| + | |抵抗100Ω|6|| | ||
| + | |電解コンデンサ 100uF 16V|3|| | ||
| + | |半固定抵抗(500Ω)|6|| | ||
| + | |VGAコネクタ|1|D-SUB 15pin メス| | ||
| + | |DIN 8pinプラグ|1|基板用ソケットがあればそれでも可| | ||
| + | |8芯ケーブル|1|| | ||
| + | |電源用USB Micro Bコネクタ|1|5Vの電源入力が可能なら何でもいい| | ||
| === PIC版 === | === PIC版 === | ||
| + | == 部品 == | ||
| + | |||
| + | ^部品^点数^メモ^ | ||
| + | |PIC16F1827|1|PIC16アーキテクチャ/ | ||
| + | |抵抗100Ω|6|| | ||
| + | |電解コンデンサ 100uF 16V|3|| | ||
| + | |半固定抵抗(500Ω)|6|| | ||
| + | |VGAコネクタ|1|D-SUB 15pin メス| | ||
| + | |DIN 8pinプラグ|1|基板用ソケットがあればそれでも可| | ||
| + | |8芯ケーブル|1|| | ||
| + | |電源用USB Micro Bコネクタ|1|5Vの電源入力が可能なら何でもいい| | ||
| + | |||
| + | PIC版とか書いたが、どうもPIC版は動かないかもしれない。 | ||
| + | というのも、PICが思ったより遅いから。 | ||
| + | |||
| + | 15KHzの水平回帰だと、320ドットを描くには、ドット当たり4.8MHzくらい(1/ | ||
| + | |||
| + | が、PIC16F1827をフルスピードで動かしても32MHz。 | ||
| + | となれば、構成する命令が全部1サイクルで終わるものだとしても、わずか6ステップですべてを終わらせる必要がある。 | ||
| + | ま、ポートから値を読んで、テーブル引いて出すとかなら間に合うだろうと思っていた、実は。 | ||
| + | |||
| + | が、ここでPIC16のアーキテクチャの罠があったのを今更知った。 | ||
| + | |||
| + | **なんかするたびに、Wレジスタを経由せざるを得ない。** | ||
| + | |||
| + | 最初、Cでコード吐かせてみて絶望した。 | ||
| + | 最適化を'' | ||
| + | とりあえず、ごりごり、アセンブラで書いてみた。 | ||
| + | |||
| + | < | ||
| + | loop: | ||
| + | movlb | ||
| + | clrf 0x76 ; レジスタ 0x76 をクリアする | ||
| + | ; HV混合信号を生成する (C = H ^ V ^ 1) | ||
| + | movlw | ||
| + | btfsc | ||
| + | movwf 0x76 | ||
| + | btfsc | ||
| + | clrw | ||
| + | xorwf | ||
| + | ; RB - xxxxCBGR で出力する | ||
| + | movf 12,w ; W=PORTA & 7 (RGBコードだけ取り出す) | ||
| + | andlw 7 | ||
| + | iorwf | ||
| + | movwf | ||
| + | ; TRISBにハイインピーダンスにするポートを出力する(IN にセットすると出力としてはハイインピーダンスになる) | ||
| + | movf 12,w ; W=PORTA & 0x0f | ||
| + | andlw 15 | ||
| + | addlw | ||
| + | movwf 6 | ||
| + | movf 1,w ; W = INDX1 (W = ds[PORTA & 0x0f]) | ||
| + | movlb | ||
| + | movwf | ||
| + | goto loop | ||
| + | </ | ||
| + | |||
| + | 頑張って、20命令まで減らせたが、これでも予定より3.5倍くらい多い感じになるので、もうクロックを100MHzくらいにおーばくロックするしかないような気がしている。 | ||
| + | 多分、このまま実装すると、色が3ドットごとにしか変わらない、PC-8001みたいなことになりそうな気がする。 | ||
| + | |||
| + | 無念。 | ||
| + | |||
| + | そう考えると、TTLロジック速いな。 | ||
| ==== アップスキャンコンバータ ==== | ==== アップスキャンコンバータ ==== | ||
| 行 30: | 行 107: | ||
| アマゾンで、GBS 8200 Ver 4.0のボードを見つけ、これを利用することにした。 | アマゾンで、GBS 8200 Ver 4.0のボードを見つけ、これを利用することにした。 | ||
| - | ===== GBS 8200 Ver 4.0 ===== | + | === GBS 8200 Ver 4.0 === |
| アップスキャンコンバータであるが、癖が強いので注意が必要。 | アップスキャンコンバータであるが、癖が強いので注意が必要。 | ||
| 行 37: | 行 114: | ||
| 実際、製品に添付されていたケーブルは、RGBとS(H/ | 実際、製品に添付されていたケーブルは、RGBとS(H/ | ||
| + | 実験的に R, G, B, S(H/ | ||
| + | なお、散見される 3.3V動作だから、信号レベルを調整しないと不安定というのは、誤りであるように思う。 | ||
| + | TTL(5V)の信号を直接放り込んだが、特に動作が不安定になることはなかった。 | ||
デジタルrgb出力をvgaモニタに出力したい.1607320560.txt.gz · 最終更新: by araki
