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