デジタルrgb出力をvgaモニタに出力したい
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
デジタルrgb出力をvgaモニタに出力したい [2020/12/07 05:56] – [GBS 8200 Ver 4.0] 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ロジック速いな。 | ||
==== アップスキャンコンバータ ==== | ==== アップスキャンコンバータ ==== | ||
行 37: | 行 114: | ||
実際、製品に添付されていたケーブルは、RGBとS(H/ | 実際、製品に添付されていたケーブルは、RGBとS(H/ | ||
+ | 実験的に R, G, B, S(H/ | ||
+ | なお、散見される 3.3V動作だから、信号レベルを調整しないと不安定というのは、誤りであるように思う。 | ||
+ | TTL(5V)の信号を直接放り込んだが、特に動作が不安定になることはなかった。 | ||
デジタルrgb出力をvgaモニタに出力したい.1607320586.txt.gz · 最終更新: 2020/12/07 05:56 by araki