ハードウエアの整合性チェック
手元にあるLCDディスプレイのデータシートから
パラメータを抜き出し、検討しました。
LCDディスプレイは、CRTコントローラの出力
信号に似た信号を受けるように設計されているので
次のパラメータを見ます。
- 垂直同期信号(VSYNC)
- 水平同期信号(HSYNC)
- ドットクロック(DCLK)
- RGB信号
データシートに記述された数値を読んで、CAT760の
ハードウエアとSH-4内蔵LCDコントローラの動作
を検討します。
垂直同期信号
垂直ラインは、最低251H必要となっています。
このHは、Horizontal Lineの意味で、1ラインを指します。
表示するのは、240H(240ライン)ですが、表示の
タイミングを取るために、余分なライン数を加えることに
なっています。垂直帰線区間と、ひとくくりします。
垂直同期信号のため、最低3H(3ライン)は電圧レベルが
Lです。そして表示開始前に4H(4ライン)、表示終了後
に4H(4ライン)を入れます。これは、表示の1〜240
Hは、固定ですが、3H、4H、4Hは最低限確保するカウ
ント値になっています。
上の図を、少し変形して、次のようにします。
(フロントポーチとバックポーチを0にします。)
こうすると、SH-4のLCDコントローラがもつ
レジスタへの設定値がわかりやすくなります。
水平同期信号
水平1ラインの出力時間は、最低379D必要です。
このDは、Dot clockの意味で、1クロックを指します。
水平同期信号のため、最低3D(3クロック)は電圧レベル
がLです。表示開始前に48D(48クロック)、表示終了
後に8D(8クロック)を入れます。これは、表示320D
を固定にしたとしても、3D、48D、8Dは最低確保する
クロック値になっています。
上の図を、少し変形して、次のようにします。
(フロントポーチとバックポーチを0にします。)
こうすると、SH-4のLCDコントローラがもつ
レジスタへの設定値がわかりやすくなります。
ドットクロック
水平、垂直を合せて、1回の画像表示に必要となるドット
数は、最低379x251=95129になります。
利用するLCDディスプレイでは、垂直同期信号の周期は
12.5ms〜20.0msと規定されています。
この周期の最大値と最小値から、ドットクロックの範囲を
計算できます。
95129 / 12.5ms = 7610.32 kHz = 7.61032 MHz
95129 / 20.0ms = 4756.45 kHz = 4.75645 MHz
これで、ドットクロックは、4.7MHz〜7.6MHz
であれば、充分となります。
この範囲にある5MHzを採用したとすると、1周期は200ns
になります。10MHzを採用したとすると、1周期は100ns
になります。
ドットクロックの周期は、データシートで最小100nsですが、
7.6MHzが最高なので、実際に与えるクロックの周期は
130nsが最高になります。
この値以上であれば、よいことになります。
何故、この計算をしたかというと、LCDコントローラが
出力できるドットクロックにあるかを検証するためです。
また、LCDディスプレイの論理レベルは、5.0Vを基準
としているのに、SH-4では3.3Vを基準とします。
電圧変換バッファICで、このレベル差を埋めます。
今回は、74HCT541を利用しました。これで、3.3V→5.0V変換
をします。ICを入れると、遅延時間が発生するため、繰返し
周期が決まってしまいます。そこで、1周期を求めました。
再計算
ドットクロックの最高値が130nsと求められたので、CAT760
のLCDコントローラが、これを満足する信号を出力可能
かを検討します。
SH-4(SH7760)のデータシートを読むと、外部から与えられる
クロックを分周し、ディスプレイのドットクロックとして出力
可能と記されています。
この分周比は、1:1、1:2、1:4、1:8、1:16で、CAT760には
外部から25MHzがLCDコントローラに入力されています。
分周比と外部に出力するドットクロックの関係は、以下と
なります。
- 1:1 -> 25.0000MHz
- 1:2 -> 12.5000MHz
- 1:4 -> 6.2500MHz
- 1:8 -> 3.1250MHz
- 1:16 -> 1.5625MHz
分周比を、1:4とすると、6.25MHzになるので、LCD
ディスプレイのドットクロックの範囲4.7MHz〜7.6MHz
に入ることがわかります。
これで、LCDコントローラから出力するドットクロック
を、ディスプレイに接続できることを検証できました。
RGB信号
RGB信号は、それぞれ3ビットずつ入力します。
このとき、LCDディスプレイ内部では、ドットクロック
を利用して、RGBの合計9ビットを記憶(ラッチ)します。
ラッチするには、クロックの↓のエッジを使います。
このエッジからどれだけ前にデータが確定しているかと
どれだけ後までデータに変化がないかを規定されています。
これらを満たさないと、正しく表示できないのです。
エッジからどれだけ前にデータが確定しているかと示す時間
をセットアップタイムと呼びます。
エッジからどれだけ後までデータに変化がないかを示す時間
をホールドタイムと呼びます。
セットアップタイムが30ns、ホールドタイムが20nsです。
ドットクロックの周期を130nsとすると、↑と↓のエッジ間が
65ns程度になります。通常は、↑でデータを出力するため、
ドットクロックの↑から30ns遅れて出力されても、
65ns-30ns=35ns
程度前にはデータが確定しているので、セットアップタイムを
満足します。また、ドットクロックの↑でデータを出力すると
なれば、↓から65ns(最小)はデータに変化がありません。
従って、ホールドタイムを満足することになります。
これは、7.6MHzを採用したときで、ドットクロックに6.25MHz
を採用すると、実際のセットアップタイム、ホールドタイムは
大きくなるので、データシートに規定された値を満足します。
DIPスイッチ設定
SH-4の内蔵LCDコントローラに、25MHzのクロックを
入力しないと、表示ができません。
マニュアルに従って、DIPSW(SW1)の4ビット目を
ONにします。
これを忘れて、まったくLCDに表示できないで、焦りました。(^^;