- 免責について
|
本情報を利用したことにより発生したすべての結果に対し、管理者および著作者はその責任を負いません。
本情報を使用する場合は、すべて自己責任のもとで行うようお願いします。
|
- 更新履歴
2008/04/22 : トップページ作成
- TURQUOISEとは
TURQUOISE(ターコイズ)は秋月カラーグラフィックLCDモジュール(LTA042B010F)専用の駆動基板です。
液晶モジュールの駆動に必要な機能を1枚の基板に実装しているので、
非同期SRAMアクセスが可能なマイコンを直結するだけで、画像を表示することかできます。
外部のピンヘッダはMILグリッド配置になっているので、ユニバーサル基板へのマウントが可能です。

主な仕様は次の通りです。
- 秋月カラーグラフィックLCDの駆動に必要な機能をワンボードに集積。
- CPUからはアクセスタイム135nsの1Mビット非同期SRAM(128kワード×8bit幅)として見える。
- CPUバスは5VトレラントのLVTTLレベル。
- フレームバッファはパックドピクセルのRGB=5:5:5(15bppモード)。
- 512×128ピクセルのフレームバッファのうち、400×96ピクセルが表示エリア(表示位置は固定)。
- VHDLコンパイルオプションにより、200×96(横倍角)×2面、400×48(縦倍角)×2面のダブルバッファ構成が可能。
- LCDテストモードピンのコントロール可能。
- バイト並びはリトルエンディアン(ただしCPLDを書き換えることでビッグエンディアン対応は可能)。
- 画面更新速度は60fps。
- VSYNCおよびHSYNCの割り込み出力あり(コンパイルオプションでオープンドレイン出力可能)。
- オンボードで±10Vステップアップコンバータを搭載して、電源入力は5V単一。
- ダウンロード
TURQUOISEのプロジェクトファイル一式です。
著作権はS.OSAFUNE/J-7SYSTEM Worksが保持しますが、使用条件は特に定めません。ご自由にお使いください。
- 実機動作
CQ付録のV850ESボードを接続して動作させたものに関しては、サンプルアプリケーションを参照してください。
ニコニコ動画に製作と動作デモのダイジェストをアップしています。
カラーグラフィックLCDモジュールのテストパターンを表示させているところ。

マイコン基板(V850ES基板)を接続してビットマップを表示させているところ。

- LCDコントローラの実装について
TURQUOISE基板のブロック図は下記のようになっています。

TURQUOISEは手持ちの、EPM7128AETC100-10と8bit×128kワード高速SRAM(K6R1008V)を使うという前提で設計を行ったため、
LCDの色深度が15bppでVRAMバスが8bitという変則的な構造になっています。
I/Oピン、マクロセルともにほとんど空きはありません。
非同期SRAMであることを利用して基本動作ステートはLCDへのドットリードサイクルを基本に回し、
LCDドットリードの空き時間をCPUアクセスへ割り当てています。
LCDの非表示期間でもドットリードが発生しているため、バス使用効率はあまりよくありませんが、
アービトレーションに必要なロジック数の削減を優先しています。

このような固定スケジューリングを行うことで、CPUアクセスへの遅延の最悪値を保証することができます。
この場合の最悪値は、3+2+3=8クロックが最悪値となります。
TURQUOISEのCPLDは64.0MHzで動作しているため、
CPU側から見たアクセスタイムの最悪値は 8クロック×15.625ns+Tsu+Tco≒135ns となります。
また1ドットサイクルを16クロックで回してるので、ドットクロックは 64.0MHz÷16=4.0MHz になっています。
LCDの同期信号はVRAMスキャンアドレスをそのまま流用してロジック数を削減しています。
そのため水平ドット数は512ドットのスキャンを行い406ドット目でHSYNCを発行するようにしています。
1H期間は 1/4.0MHz×512=128μs となるので、総ライン数はリフレッシュレートの60fpsから逆算して130ラインとしました。
130ラインとすると、1/(128μs×130)=60.096fps と、わずかに早くなってしまいますが目を瞑ることにします。

秋月カラーグラフィックLCDモジュールの解析情報については、下記リンクもご参照ください。
- VHDLコンパイルオプション
TURQUOISEで使用しているCPLDは規模が小さく、動作モードを動的に変えることはできませんが、
VHDLファイルのgenericマップで指定されているオプションを変更して再コンパイルすることで、
動作モードを変更することができます。
- CS_ASSERT_LEVEL
CSピンのアサートレベルをstd_logic型で指定します。
"0"で負論理(/CS)、"1"で正論理(CS)です。
それ以外の値を指定した場合の合成結果は不定になります。
- VINT_TRIGGER_EDGE
VSYNC割り込みのトリガー位置をstring型で指定します。
"FALL"を指定するとVSYNCの開始位置(115ライン目)でVSYNC割り込みを発行します。
"RISE"を指定するとフレーム走査の開始位置(0ライン目)でVSYNC割り込みを発行します。
どちらも指定されない場合はコンパイルエラーになります。
- INT_NEGATE_DRIVE
割り込みが発生していない時の/INTピンの状態をstring型で指定します。
"OFF"を指定すると、割り込みネゲート時はHi-Zになります。外部でワイヤードOR結線を行う場合は必ずこちらを指定してください。
"ON"を指定すると割り込みネゲート時はHレベルになります。
どちらも指定されない場合はコンパイルエラーになります。
- LCD_COLORMODE
VRAMのカラーモードをstring型で指定します。
"RGB555"を指定すると、R,G,B各色5bitの32k色(15bpp)モードになります。
"RGB565"を指定すると、R,Bを5bit、Gを6bitにした64k色(16bpp)モードになります。
ただし、EPM7128AEではマクロセル不足のためRGB565モードは実装できません。
どちらも指定されない場合はコンパイルエラーになります。
- VRAM_RESOLUTION
VRAMの解像度をstring型で指定します。
"FULL"を指定すると、400×96ピクセル×1面の構成になります。
VRAMエリアは(0,0)-(399,95)のページ0のみとなります。VPAGEおよびHPAGEビットは無効です。
"H_HALF"を指定すると、200×96ピクセル(横倍角)×2面の構成になります。
VRAMエリアのうち(0,0)-(199,95)がページ0、(256,0)-(455,95)がページ1となります。ページ指定はHPAGEビットで行います。
"V_HALF"を指定すると、400×48ピクセル(縦倍角)×2面の構成になります。
VRAMエリアのうち(0,0)-(399,47)がページ0、(0,64)-(399,111)がページ1となります。ページ指定はVPAGEビットで行います。
どちらも指定されない場合はコンパイルエラーになります。
- LCD_TESTPATTERN
LCDテストパターン時にG要素に出力するビットパターンをstd_logic_vector型で指定します。
EPM7128AEではマクロセル不足のため、"000000"のみ指定が可能です。
なお動作モードを変更する場合、合成後のPOFファイルをCPLDに書き込むためのダウンロードケーブル(ByteBlasterMV,ByteBlasterII,USB-Blaster)が必要になります。
QuartusIIやダウンロードケーブルについての詳細は ALTERA Webサイトを参照してください。
|
|