VGA液晶をSH7706ボードにつないでみる。という企画

仕 様 回路図
BUSY信号を追加(070504)
部品表

070316
マウスも動くようになる。
PICマイコン PIC16F628Aは、セラミック発振子なしでもライターで内部発振に設定すれば、動作することも確認できた。

070315
PICマイコンを乗せて、マウスを接続。少し様子が変。
lcd_vga_mouseif-w320.jpg lcd_vga_mouseif2-w320.jpg

070303
ついにDIYS Browser (テキストブラウザー)がVGA液晶でも動き始めました。まだ、マウスインタフェースは実装していないけど。
ファイル置き場に更新したBrowserファイルを置きます。QVGAモニタととVGA液晶の区別はdiys.hの中で行っています。
lcd_VGAC_Browser_w320.JPG

070228
config.sysを変更して、描画メモリを確保できた。
memory b=8c400000 s=300000
これを行うために必要なんです。
以下は、昨日のサンプル画像を表示するプログラムです。
#include <mes2.h>
#include <string.h>
#include "diys.h"

#define WCR1 (*(volatile unsigned short *)0xffffff64)
#define WCR2 (*(volatile unsigned short *)0xffffff66)

int main(void){
WCR1 =0x9551;
WCR2 =0xfbff;

image screen0 ={0,"screen.bmp",0,0,0,0,SCREEN_WIDTH,SCREEN_HEIGHT};
image image0 ={0,"test640.bmp",0,0,0,0,SCREEN_WIDTH,SCREEN_HEIGHT};

screen0.baseptr =(unsigned short *)malloc((SCREEN_WIDTH + BLANKPIXEL)* SCREEN_HEIGHT * (sizeof(unsigned short)));
screen0.baseptr = (unsigned short *)((unsigned long)screen0.baseptr + 0x20000000);
printf("screen0.baseptr =0x%x\r",screen0.baseptr );
image0.baseptr =(unsigned short *)malloc(VGA_SIZE * (sizeof(unsigned short)));
image0.baseptr = (unsigned short *)((unsigned long)image0.baseptr + 0x20000000);
printf("image0.baseptr =0x%x\r",image0.baseptr );

DIYS_screen_clear(&screen0,0xffff);// clear White

/* load bitmap */
DIYS_load_bmp(&image0);
// DIYS_load_bmp(&screen0);

DIYS_put_image(&screen0,&image0);

DIYS_up_screen(&screen0);
}


070227
表示出ましたよ v(^o^)
FIFOメモリの読み出しとLCDのタイミング生成の関係がややこしかったのにCPLD書き込み1回でクリアしたのは嘘のよう。
CPUのFIFOへのDMA転送のほうが1回間違いを直しただけでサンプル画像が表示できてしまった。
ただし、DIYSはメモリをかなり消費してしまうんで、VGAになるとメモリ空間が足りなくなってしまったんです。
config.sysで増やせるかな? もうメモリ張替えなんてねえ。(゜-゜)

背面は右の画像のような感じ。LCDケーブルの引き出し方向が外向きだったり、コネクタの引き出し方向にも不満が残りますね。
心配したLCDへの電源レギュレータの発熱は小さなヒートシンクをつけてもほとんど熱がわからない程度。やはり、やっておいて良かったか。
けれど、基板に実装パターンがないのは、まずかったですね。
test640_ok_w320.JPG back_view1_w320.JPG


070225
電源投入
何も表示されない (=_=;)
power_on.JPG

間違いがすぐに見つかった。LCDへの結線の奇数列と偶数列を入れ違いにしていた。
電源だけは確認していたので、通電はしてしまった。学習しないなあ。
mistake2_w320.JPG


070224
表示関係の回路のみ実装完了した。
FIFOメモリ実装前にCPLDの出力 LCDクロック、LCD同期信号、FIFO制御信号が出ていることを確認できた。3.3V電源動作の24MHzの発振回路も安定している。手で触っても問題なさそう。
ic_top_w240.JPG ic_bottom_w240.JPG

070222
お手製のバイトブラスターでCPLDのプログラム。
Dsc02410.jpg

070221
LCDの仕様が違ったりする。\(>o<)/
購入したのはNL6448BC26-01だね。
しかし、当初NL6448BC20-08とか見つけて、これが同じ物とばかり思っていた。
本当のところ、大きさが違うだけで電気的特性は一緒。。。と
間違えたのは、インタフェース電圧 いずれも+5Vあるいは+3.3Vいずれかで動作できるのだが、NL6448BC20-08のほうは、内部にDC/DCコンバータがあって、入力信号の閾値は常に一定なのに、購入したNL6448BC-01はVhがMin 0.7VCCとなっている。
+5V動作時には+3.5V以上ないとHiレベルに達しない。
やってみるのも良いのだが、今日は、やはりLCDを+3.3Vで動作させることを考える。ここにも問題がある。
LCDは+3.3V動作時に0.3〜0.4A必要なようなので、SH7706ボードのレギュレータや今回のボードに積む予定のTA48M033(Max0.5A)では心細い。

TO-220パッケージのLM1086が手元にあるので、LCDの電力のみこれを使うことを考えてみる。
熱損失を計算する。
 PD(W) =(5−3.3)V x 0.4A =0.68W
周囲温度が50℃のときのジャンクション温度を計算。

Tjc - Ta=PD x Rf
Rfは全体の熱抵抗 
 ケースまでの熱抵抗 4℃/W
 絶縁シート部分を3℃/W
 20〜30℃/Wのヒートシンクをつけたとして、これらを加算。
としたとき、Rf=37℃/W
Tjc = 75.2℃ @50℃ (case)
ジャンクションTjmax 125℃なら60%くらいのディレーティング

ところで、20〜30℃/Wのヒートシンクって、どうつけようかというのが、最大の問題であったりする。
もう少し小さくてもいけないかな?
1W以内なら裸でも良いというご意見もありそう。


070220
基板が届いた。olimexのあるブルガリアからAirmailで7日というのは最短記録です。
8mil.druでも5日でshipedしたあたりも記録。
しかし、あちこちポカミスが。。。(=_=;)
Dsc02406.jpg

ポカミス1
なんと0.5mmピッチのTSOPのパッドの上にシルクが \(◎o◎)/!
裏面のパスコンのシルクが乗ってしまったんです。検図が足りなかったなあ。削ろうか?そのまま載せてみようか?
pcb_mistake1.jpg

上の画像、凄いでしょ!
このルーペをデジカメに当てて撮ったんですよ。
秋葉のヒロセテクニカルで\500くらいでした。
loope.jpg


070213
boards shipped (^o^)/♪
invoice attached
OLIMEX

070210
フォトフレームパネルに接着中。
panel1.jpg


070206A
今日、FIFOメモリが届いたんです§^。^§

OKIの6MBit FIFOメモリ MS81V06160は
corestaff_logo.gif
で購入しました。よそで買うと\1万くらいの見積もりになってしまいます。
なかなか品種が豊富なほか、1個でも扱っていただいたことが好感をもてますね。
ユーザー登録してIDをとると、単価が見えるものもあります。
SH7706ボードのSDRAMの載せ変えに
K4S561632 256Mbit(16M x 16Bit)も千円以下(送料他 別)であるようです。

あれっ (゜-゜) ヒロセのDF9-31S-1Vも1個から。。。見積もり可能なようです(・o・)が、大丈夫かな?
これってすごいことですね。困ったときは、ココで調べるといいかも!

070206
通勤中にプルアップ抵抗が足りないことに気づく。
GNDがズタズタなので、スルーホールで縫い合わせたけど、電源コネクタからCPLD,FIFOまでのパターンが良くない。
あとでよく見ると、電源コネクタをFIFOよりに置けば良かったかもと気づく。
LCDのコネクタはあきらめました。表面実装のようなイメージになっているけど、リード線30本を手半田します。(=*_*=)
このあたりでolimexに発注。回路図(ちょっと見苦しいですけど)
lcd_vgac_brd_gnd_p50.gif


070205
このあたりで出図してみようかな。
メモリとバスの接続は手で書いてみました。パターンの直角屈折は、よろしくないかもね。
KEYBOARDとかもつけてみましたけど(*'o'*)
lcd_vgac_brd.gif


070204
秋葉 最近はココが繁盛してます。
駐車場が店舗になってしまったもんね。ケバブで家を建ててしまうかもしれないほどの反響ですよ。
けどBIGBOYは量が多くて飽きるね。中からのソースとか選んでしまうと、手前のコンビニでドリンクを買いたくなります。


070202
LCDとの接続ケーブル 長すぎるんですね。FIFOから直接出力したいんだけど。どうしようかな。
コネクタだけの入手もなかなか厳しそうだし。

070201
もう2月になっちゃたのね。
ModelSimをちょっと走らせてみたりする。あちこち、変な挙動が。。。やっておいて良かった。
FIFOのリードリセットとリードイネーブルおまけにLCDのデータイネーブル3つとFIFOとLCD2つのクロックの同期が絡んでいてややこしい。
データシートを見ても悩んでしまう。液晶の表示を目で観てよければいいんだけど。
part1_sim.gif part2_sim.gif


070131
ハードディスクを換装したせいでModelSIMが動かない。(-。-;) フリーのライセンスの取りなおしって出来るの?
ともかく、配線出来るのかも気になるので、今日もEagle。
lcd_vgac070131.gif


070130
今回もXilinxのCPLD XC9572XL-10VQをFIFOと液晶のタイミング生成に使ってみる。
FIFOメモリはOKIのMS81V06160(6MBit) 約400k x16ビット品 これひとつでVGA16ビット1フレームが入る。
OKIにはピンコンパチの10MBit品もあるので800x600くらいはCPLDが間に合えばそのまま対応できるかも。
ただし、リセットやリードイネーブルのタイミングの規定がわかりづらい。
ルネサスやサイプレスにも同機能のものがあるが、機能が高すぎるのでやめた。

低容量の物としては、以前QVGAモニタ表示に使ったNECのμPD42280に仕様がよく似たM518221や低電圧品M51V8221(128kx8)がある。

液晶はNECが数年前に出したと思われる8.4インチTFT。本当は、6インチくらいが欲しかった。
フレームバッファはないので、上記の回路が必要。
RGB各6ビットをデジタルパラレル入力出来るが、今回はR5G6B5とする。
クロックは21〜27MHz、他にDE(表示期間イネーブル)となる信号があればよい。
パチンコ液晶やTVもモニタでよく使われる物でアナログ入力タイプのものは使えないが、まれに使えるものはありそう。

液晶の駆動電源は単一電源でよく3.3Vもしくは5Vとなっている。5Vで駆動すると電流が抑えられるので、FIFOからは3.3Vを送るようにしてみる。
液晶のケーブルは、やはりaitendoで購入できる。来週購入する予定。
バックライトは、冷陰極灯菅(CCFL)なのでDC-ACインバータが必要。専用のインバータが\1,680で購入できた。電源も5Vなのが良い。

部品点数は、QVGAモニタのものより、大幅に減りそう。キット化もしてみたい。
ケースどうしようかな。誰かいいものありません!? (^-^*

070129
FIFOメモリのほうは。。。
国内外に見積もり依頼メールの乱れ撃ち \(・_・)
個人相手でもきちんと対応してくれるところが多かった。
海外のほうは、輸送費の記載がなかったり、売買の専門用語 T/T、FOBなどがあって閉口したが、それはそれで勉強になった。
今のところ、国内から買える見込みが立ちそう。ここまでくれば、設計に入れそう。

070128C
電源パターンを仮に入れてみる。
Eagleの最適化を外してみた。
lcd_vgac070127.gif


070127B
aitendoでインバータを購入。
液晶(NEC NL6448BC26-01 8.4インチTFT液晶)のほうはオークションで落としました。\3,000でした。
Dsc02380.jpg


070127
NEC のVGA液晶が届いた。
MS81V06160を個人に1個だけ安く売ってくれるところがなかなかない。
海外問わず多くの業者にメールで頼んでみるとしよう。

070125
FIFO(MS81V06160)にTSOP2 0.5mmピッチ70ピンを使おうと思ったけど。
olimexの8milのdrcが通らない。
パッド幅 10milを少し多く0.26mmにして、パッド間クリアランスも8milを超えるようにして、さらにパターンのクリアランスをdefault 8milに変えてようやく、エラーが消える。Eagle恐るべし。
lcd_vgac.gif