以前、Chanさんの汎用ディスプレーコントローラ
http://elm-chan.org/works/crtc/report_j.html
を見て以来、ずーーーーーとアタマから離れなかった
のが、カラーで1ドット単位で自由自在にビデオ表示
をしたいって言う野望。しかも汎用部品で。
Chanさんのこれは16色表示。例のAVGA
(mega168ワンチップでマリオとかやっちゃう
あれね)も16色表示。
オイラとしては以前から1ドット3ビット(8色)や
4ビット(16色)を超える発色を実現したい、
しかもカラーNTSC表示で、と思っているんですが、
色々考えてみるとすぐに一つの壁にぶち当たってしまう…
単に表示するだけならともかく、マイコンからの
描画信号を受け取りながらVRAMとして使用する
外部SRAM(FPGAと違ってブロックRAMが
無い)への読み書きタイミングを取りつつ、
かつ14.3Mhzの4クロック単位(V、U、-V、-U)
で1ドット確実に表示するということを同時処理して
いかないといけないわけですが、SRAMへの書き込みは
最低でも3クロック(アドレスとデータをセット、
WE立ち下げ、WE立ち上げ)は必要だし、SRAMの
アクセス速度によってはあと1~2クロックは必要かも。
とすると、書き込みだけ、もしくは読み出すだけで
約4クロック、しかも書き込みだけで読む暇が無い…
(ん?読み出しはもう少し少ないクロックでも
いけるか?)
うーん、そうか。Chanさんの回路で16色(4ビット)
しか使っていないのは、1バイト分の読み書きで2ドット
扱える(つまり8クロックに1回書き込めばいい)という
ことも一つの目的になっているわけだな…といまさら
になって気付く。
なるほどね。これならば8-4=4クロック分はマイコン
から受け取ったデータの書き込み用に充てられるわけだ。
頭いいなぁ。
うーん、じゃぁ14.3MhzのCPLDでは
やはり4ビット以上の表示は不可能なのか?
これより速いクロック源を探さないといけないのか?
というのが、ここ数ヶ月ずーーーーとアタマから
離れなかったことでした。大きな壁。
ところが、今日電車乗ってボーーーーーとしてたら、ふと
思いついた。(といっても、解法ではなくてまだ糸口程度)
1+1は2だな。考えてみれば当たり前のことだけど…
いままで気付かなかったおいらはやっぱ毛が3本足りない
んだな。
問題は、これをVHDLに上手い具合に押し込むことが
出来るのか?
かなり面倒なステートマシンを書かないといけないかも
知れない…(規模ではなく処理内容が)
でもこれが出来れば16色どころではなくなるもんな…
面白いかも!
まぁこの件に限らず、以前作ったスプライト表示器
http://picavr.uunyan.com/avr_m_sprite.html
とかも、頭の中で「おっ?なんかできちゃいそうだな…」
って思いついちゃったら、あとは力技でむりやり
ねじ伏せるまで突っ走ったから、こんかいも馬鹿丸出し
で突っ走ってみるか???
そう。馬車は嘶きゃ治らない((c)ログイン/アスキー)
なのだ。
あ、馬車丸出しか。
とりあえず、目指すは320×200の8ビット表示だ!
(注:8色表示ではない)
でもその前に、ようやく完成したCPUボードを弄り
倒す方が先だな。
|