MAX7456のメモリとEVキットファイルのフォーマットを用いてカスタム文字とグラフィックスを生成

要約

MAX7456は1チャネルのオンスクリーンディスプレイ(OSD)発生器で、ライブビデオの上にカスタム生成したグラフィックスをオーバレイすることが可能です。このアプリケーションノートはMAX7456のメモリ構成を説明し、このデバイスを使ってカスタム文字とグラフィックスを生成する方法を示します。MAX7456の評価(EV)キットのファイルフォーマットを提示します。このアプリケーションノートではスプレッドシートも併せて使用し、これらのファイルを簡単に操作する方法も説明します。

概要

1チャネルのオンスクリーンディスプレイ(OSD)発生器のMAX7456はライブビデオ上にカスタム生成したグラフィックスをオーバレイすることができます。MAX7456は外付けのビデオドライバ、同期分離器、およびビデオスイッチが不要であるため、システムコストを低減します。このデバイスは525および625ライン標準に使用する256個のユーザプログラマブルなモノクロ文字によって、国内および国際マーケットに対応します。このデバイスによって、会社ロゴ、カスタムグラフィックス、時間、および日付などの情報を任意のフォントと大きさで容易に表示します。このアプリケーションノートはMAX7456を用いてカスタム文字とグラフィックスの生成の方法を述べます。MAX7456の評価(EV)キットのファイルフォーマットも提示されます。

MAX7456のメモリ構成

ユーザ定義の文字セットは入力ビデオストリームと結合されてCVBSに加えOSDビデオ出力を生成します。最大で256個の12 x 18ピクセルの文字を格納することができ、ダイナミックに変更可能です。525ラインのモードでは、13行 x 30文字の表示が、625ラインモードでは16行 x 30文字が表示されます。

MAX7456のOSDは2セットのメモリを備えています。それは表示用メモリと不揮発性の文字メモリ(NVM)です。

ディスプレイメモリ

ディスプレイメモリ(SRAM)には480文字のアドレスが格納され、それはNVM文字メモリの中に格納された文字を指しています。ディスプレイメモリの内容はSPI™対応のシリアルインタフェースを使って設定されます。ディスプレイメモリアドレスはモニタ上の固定位置に対応しています。下の図1を参照してください。各文字は2バイトを要します。最初のバイトは文字メモリ内の文字番号を含み(下の説明を参照)、2番目のバイトは文字属性の状態ビットを含み、図2に示します。文字の番号は左から右、そして上から下に番号が付けられています。

Figure 1. The fixed location of the display memory.
図1. ディスプレイメモリの固定位置

Figure 2. The display memory's character attribute status bits.
図2. ディスプレイメモリの文字属性の状態ビット

文字メモリ

不揮発性文字メモリは表示する文字またグラフィックスイメージを格納します。文字メモリの内容はSPI対応のシリアルインタフェースを使って設定されます。各文字は12水平 x 18垂直ピクセルで構成されます。各ピクセルは2ビットで表現されます。

00 = 黒、不透過
01 = 透過
10 = 白、不透過
11 = 透過
したがって、文字ごとに12 x 18 = 216ピクセルがあることになります。1つの8ビットバイトで4ピクセルを表現します。このように、各文字は216/4 = 54バイトのデータが必要です。(図3を参照してください。)

アドレス指定を簡単にするために、このメモリは64バイトのブロックで構成されます。最初の54バイトのおのおのによって1文字が表現されます。残りの10バイトは使用されません。したがって、文字メモリは64 x 256 = 16384バイト長になります。

結果的に、各ディスプレイメモリアドレス位置に含まれる数は実際に、選択された文字に対応する64バイトのアドレスとなります。

Figure 3. Character memory configuration.
図3. 文字メモリ構成

EVキットのグラフィカルユーザインタフェース(GUI)のソフトウェア

MAX7456のEVキットにはデバイスを制御してカスタムグラフィックスをダウンロードするGUIソフトウェアが同梱されています。

ソフトウェアに対応するファイルはMAX7456のメモリに似た構成となっています。文字メモリ用のデータは1つのファイルに収められ、他方ディスプレイメモリ用のデータは別のファイルに収められます。ファイルに対するファイル拡張子:

*.mdm Display Memory
*.mcm Character Memory
これらのASCIIテキストファイルはWindows® Notepadのようなテキストエディタで見ることができます。したがって、各ラインはASCII文字のreturn/line feed シーケンスで終結されます。

ディスプレイメモリファイルの構成

.mdmディスプレイメモリファイルのセグメントを下の図4に示します。

Figure 4. Display memory organization.
図4. ディスプレイメモリの構成

図4でライン1はデバイスタイプを与えます。つまり、MAX7456です。ライン2はビデオ標準です。PALまたはNTSCです。ライン3は対応文字ファイルのファイル名を示しています。Duck.mcmです。ライン4とそれに続くラインは画面上での各位置に文字を置くラインペアです。これは上の図1に示されています。

したがって、ここでxは図1の文字位置であり、文字を表示するラインは次によって与えられます。

n = 4 + 2 × x 文字番号
n = 5 + 2 × x 文字属性
文字の属性は図5に示します。

Figure 5. The character attributes for character positions shown in Figure 1.
図5. 図1に示される文字位置に対する文字属性

この例では、

ディスプレイの文字0は文字メモリの文字1を使用します。
文字0はブリンク、反転、または透過ではありません
ディスプレイの文字1は文字メモリの文字2を使用します。
文字1はブリンク、反転、または透過ではありません
ディスプレイの文字2は文字メモリの文字2を使用します。
文字2はブリンク、反転、または透過ではありません。
など

.mdmファイルの長さはビデオ標準に依存します。PALが選択されれば、ファイルは480ラインペアとなり、NTSCならば390ラインペアとなります。

文字メモリファイルの構成

*.mcmファイルのセグメントを下の図6に示します。

Figure 6. Organization of the display memory.
図6. ディスプレイメモリの構成

ライン1はデバイスタイプを表します。ライン2とそれに続くラインは上の図3に示すようにピクセルを定義します。この例では文字0の各ピクセルは「01」、つまり透過に設定されます。

文字メモリに役立つ情報

文字0の各ビットを「01」に設定することは必須ではありません。しかし、デバイスの電源をオンにしたとき、ディスプレイメモリはデフォルトで文字0にリセットされます。したがって、電源をオンにしたとき、入力ビデオはエラーのないオーバレイがなく、素通しになります。デバイスの初期化が正しく行われた後、通常の文字が通常にオーバレイされます。

ピクセルがどうしてグレイまたは透過になるか。

文字メモリ内でピクセルが透過(メモリの中で「01」か「11」とする)として定められると、それは他の幾つかの条件に従って、透過またはグレイになって現れます。

ピクセルに影響する3つの条件があります。

  1. ディスプレイメモリ内で設定される各文字の属性ビットで決まる文字レベル
  2. ビデオモードレジスタ(ビット7、レジスタ01)のバックグランドビットで決まるグローバルレベル
  3. 外部同期検出器の状態
各ビットは入力ビデオ同期検出の状態に従って、透過となることもできます。表1に示す真理値表はピクセルがそのピクセルレベルで透過と定義されることを仮定しています。透過ではない場合、そのピクセルは黒または白と表示されますが、これは他の設定値の影響を受けません。もちろん、OSD表示がオンに設定されていることは当然です。

表1. グレイピクセルに対する文字属性

外部同期検出
(1 = Yes, 0 = No)
グローバルバックグランドモード 文字レベル属性 ピクセル表示
0 X X Gray
1 0 0  
1 0 1  
1 1 X Gray

ピクセルがグレイに表示されたら、明るさはアドレス位置90H~9FHにあるレジスタRB0~RB15を用いて行ごとに設定することができます。

文字メモリファイルにあるピクセルカラーの変換

EVキットファイルの構造を理解すると、各ピクセルを黒、白、および透過色に容易に変換することができます。

文字メモリファイルは容易にエクセルのようなプログラムを用いて変換されます。このような例を下の図7に示します。EVキットのソフトウェアにロードするとキャプションはこのように見えます。

Figure 7. The color of a pixel can be altered by using Excel to change the character memory.
図7. ピクセルの色はエクセルを使用して文字メモリを変更して変えることができます。

キャプションの文字は白い背景の上の黒です。この色方式を変換する簡単な方法があります。

  1. .mcmファイルをエクセルにロードします。テキストファイルとして、.mcmファイルは単にそれを開くだけでインポートすることができます。各ラインはテキストとして扱わなければならないことに注意してください。そうしないと先行するゼロは除去されます。したがって、インポートする場合はカラムデータフォーマットをテキストに設定してください。
  2. フォーマットを保存するにはそのカラム値を新しいスプレッドシートにコピーすることが最良です。
  3. エクセルのMID機能を用いて各ラインを4 x 2の文字にチョップします。
  4. この次に、2つの文字値を変換します。
  5. 各ラインを再構築します。
  6. 元のファイルのカラムにアセンブルしたカラムを代替してそれを保存します。
  7. 行ったことの確認として、新しい.mdmファイルをEVキットソフトウェアにロードします。
この例では、すべての黒文字が白に、そしてすべての白文字が透過に変換されました。この結果、

「00」は「10」—黒が白に変換
「10」は「01」—白は透過に変換
「01」は変化なし—透過(変化なし)

この色変換は単純にエクセルを用いて行いましたその結果が元のファイルに戻されてフォーマットを保存します。

エクセルによる式は簡単で、以下に示す通りです、カラムAは元のデータです。

カラムB = MID(Ax, 1, 2)、文字1から始まる2つの文字を選択します。
カラムC = MID(Ax, 3, 2)、文字3から始まる2つの文字を選択します。
カラムD = MID(Ax, 5, 2)、文字5から始まる2つの文字を選択します。
カラムE = MID(Ax, 7, 2)、文字7から始まる2つの文字を選択します。
カラムF = IF(Bx="00","10",IF(Bx="10","01",Bx))
カラムG = IF(Cx="00","10",IF(Cx="10","01",Cx))
カラムH = IF(Dx="00","10",IF(Dx="10","01",Dx))
カラムI = IF(Ex="00","10",IF(Ex="10","01",Ex))
「00」を「10」と、または「10」を「01」と入れ替えます。
カラムJ = CONCATENATE(F2,G2,H2,I2)、新しい語を作り直します。

カラムJは元のファイルにコピーされてフォーマットを保存するためにセーブされました(図8)。

Figure 8. Formulae above are used to convert the pixel color in Excel.
図8. エクセルでは上の式がピクセルのカラーを変換するために使用されています。

EVキットソフトウェアにロードすると、新しいファイルは図9のようになります。

Figure 9. Illustration of how the altered pixel colors appear in Excel.
図9. 変換されたピクセルカラーがエクセルでどのように見えるかを示します。

上に示したエクセルのスプレッドシートとEVキットの関連するファイルはAN4117.zipをダウンロードすると入手可能です。