
| ディスプレイ自動認識 |
| プラグアンドプレイとは・・・ |
1.) 機器を繋いで上手く動くよう祈ること*1。 2.) 機器を繋ぐだけでドライバ類の組み込みや設定を自動的に行い、すぐに使える状態になること。*2 ここでは後者のことを言っていますが、特にグラフィックアダプタが繋がれたディスプレイの仕様に沿った映像信号や同期信号を配給できるため、パラメータをディスプレイからもらう(聞き出す)仕様について触れます。 VESA http://www.vesa.org/ ベサと読みます。Video Electronics Standards Association(ビデオ エレクトロニクス標準化 協会とでも訳すのか?)の頭文字で、パソコン向けグラフィックス機器メーカーの業界団体のことです。 ここは各種コンピュータディスプレイの規格を制定していますが、その中にディスプレイの各種電気仕様等をパソコンに自動識別させる仕様があります。これがDDC(ディスプレイ・データ・チャンネル)です。古くは特定のセンスピンをプルダウンするとかの組み合わせで表現していましたが、モードが増えすぎたのか抜本的な変更を加え、ディスプレイにEEPROMを搭載しグラフィックアダプタ側と通信を行わせ各種パラメータを得るという方式が定められました。 DDCにはバージョンがあります(DDC1、DDC2Bなど)。細かい仕様はVESAのサイトを調べてもらうとして、最新のものはフィリップスのI2C(アイ・スクゥエア・シー)バス形式の2線式シリアルEEPROM*3を使用することになっています。この種の汎用*4シリアルEEPROMはMicrochip Technorogy社*5等が出していますが(24XX01等)、特にVESAのDDCソリューション用に特化したデバイスがあります(24XX21シリーズ)。大体のディスプレイは基板上でこのチップを見つけることができると思います。一般的には1kbit(1024bit = 128Byte)のサイズのメモリ(24XX21)を使用します*6 DDCはデータのやりとりをする線の規格のようなもので、当然中に収めるパラメータの規格があります。データ構造はEDID*7(extended display identification data)規格で規定されています。ただしデータが一部コード化されているので単純に汎用エディタで編集しても意味がありません。EDID専用エディタ*8を使用したりコード表とにらめっこする必要があります。 EDID/DDCはアナログ接続でもデジタル接続でも同じ規格が使用されます。違うのはコネクタ上のピン番号*9ぐらいです。初期のDsub15コネクタには+5Vの配給*10が無かったのでディスプレイ側から電源を配給する場合もありますが、その場合ディスプレイの作りによっては電源を入れておかないとEDIDが読み出せなくなります。DVIコネクタの場合+5VがPC側から配給されます。 DDCのバス電圧はデバイス性能から見ると2.5V〜5.5Vで3V動作も可能なように見えます。規格的にどうなっているのか調べきれていませんが、汎用メモリを使用する場合は動作電圧の範囲に気を付けた方がいいでしょう。 EDID/DDCがデータを読み出すのは起動時などいくつかのタイミングがあります。読み出されたパラメータは最終的にはOSに渡されますが、グラフィックアダプタでまず使用され、ベーシックなスキャンレートなどを決定しているようです*11。 今回のターゲット「KDL-L30HX1」のパネル部「LDM-3000」はVESA準拠の液晶モニタではなく、規定のピンにEDIDのデータは出てきません*12。ただいろいろ調べた結論として不足しているのはEDID/DDCだけに思えます。従って外部的にEDIDを補ってあげること*13は最低限必要なことになります。 I2Cバスは取り扱いが簡単ですし、EEPROMも8PIN DIPで小型*14で外付けパーツもプルアップ抵抗とパスコンぐらいですので簡単な工作で済みます。むしろ問題はROMライター*15の方となってきます。 しかしMicrochip Technorogy社と言えばあの「PICマイコン*16」で有名な訳で、都合のいいことにPICのEEPROMのバスもI2Cバスなのです。つまり世にあまねく存在する「PICライター」の類の物の配線を多少いじることでそのまま24XX系の書き込みに使用できます。その辺りの情報をかき集めて適当なライターをでっち上げれば*17、EDID/DDC用のROMを簡単に作成できるようになる訳です。 |
| 脚注コーナー 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 |
1* Plug and Pray. Windows9X Me系では本当にそうだった。98辺りまではプラグアンドプレイでインストール中にA:ドライブにドライバを読みに行かせると、その後C:ドライブのことを忘れるという仕様だったため、直ぐに「ファイルが見つかりません」と出てしまい初心者を迷宮に誘い込んでいた。結果ドライバの組み込みに失敗するが、素人には脱出不可能。後は祈るしか・・・ 2* ディスプレイのプラグアンドプレイは比較的安定しているが、DVIが出た当初かなり混乱があったらしい。 *3 電気的に書き込み・消去のできるROM、データの保持に電力を必要としない。フラッシュROMとも言う。 *4 汎用品なのでどこにでもあるハズだが、最近は256k程度(24LC256とか)が最小扱いで1kの物(24LC01等)は在庫していない(需要がない?)。 *5 この社名でピンと来る人はマイコン屋さんですね。(後述)この会社が24xxシリーズのオリジナルなんでしょうか?(勉強不足) *6 特殊な仕様のディスプレイはより大きなメモリを積んで拡張していたりしますが、VESA標準はあくまで1kbit。ページ切替とかでメーカ独自モードに入るらしい。今回調達できたのはMicrochip Technorogy 24LC21A/P ですがスペックシートを見ると、独自のDual-mode動作をする点と、電圧範囲が2.5V〜5.5Vと広範囲になっている。 *7 通常はひっくるめてEDID/DDC2 とか言っている。 *8 元スレにも書きましたが、完全なツールがないので多少工夫して使用する必要がある。 *9 Dsub15p 12=DDC Data 15=DDC Clock、DVI 6=DDC Clock 7=DDC Data *10 Dsub15p 9=+5V、DVI 14=+5V *11 上限値を超えたレートはカードやディスプレイ内蔵のスケーラがある程度カバーしてしまう。しかしスケーラを持たないディスプレイに対しては逸脱したレートで出さないようにEDIDを書かないと画面が流れる。 *12 用途を考えればここにEDIDが存在しないのは当然である。 *13 液晶パネルにEDID/DDC基板を内蔵する手もあるが、とりあえずケーブルの途中に入れる形式の方が現状復帰が完璧にでき、バラックでも作業ができるので安全。将来DVI-D切替器を導入する場合はその方がスッキリするが、その場合は切替器にEDID/DDC基板を入れてしまってもいいかも。 *14 8PIN DIP 左右に4本の足の出たゲジゲジ型IC。現在の基準からは十分でかいので、一般的な製品では表面実装型のパッケージ(SOP等)が使用される。ジャンクのディスプレイからSOPの24LC21を調達する方法もある。これとチップ部品を使えばDVIコネクタ内にモールドすることなども可能かも。ただ基板を起こすとか、サンハヤトのシール基板を使うなどしないと工作は困難かも。 *15 EEPROMにデータを書き込む為の物。ライターはハードのことを差しているが書き込み用のソフトウエアも当然必要。 *16 PICマイコン:その筋では非常にポピュラーなワンチップマイコン。PICに手を出す予定が全くないならEDID/DDC専用のライターとして作成して費用を抑える方法もある。 *17 上手く自作すれば800円〜3,000円程度で作成可能。ソフトはフリーの物がある。ライターの市販品もあるが1万はするので、この程度のことで購入するのはお勧めできない。ただし24XX系への応用の情報は薄いので配線とかは注意が必要。 |