TMDS(Transition Minimized Differential Signaling:遷移時間最短差動信号)は、高速シリアル伝送方式の名称です。
TMDSは、Silicon Image社によって開発され商標登録されたPanelLink(パネルリンク)がベースになっています。
DVIでは映像信号、HDMIでは映像+音声信号の伝送に使用されています。


HDMIの場合、非圧縮のデジタル映像信号とデジタル音声信号をソース機器(ブルーレイ・プレーヤーなどのHDMI出力を持つ機器)とシンク機器(テレビなどのHDMI入力を持つ機器)間で伝送することが出来ます。
理論上は、デジタル映像信号とデジタル音声信号が伝送されますが、実際はそのままの状態で送信されるわけではなく、ソース機器側で一旦「3種類(DVIの場合は2種類)」の変換方式によって、デジタル映像信号とデジタル音声信号が変換(エンコード、符号化)され、HDMIケーブルなどを経由した上で、シンク機器側で再度デジタル映像信号とデジタル音声信号へ変換(デコード:エンコード時とは逆方向の変換)されます。
この変換されたデータ(エンコード後、デコード前の状態)を「TMDS Data:データ」、「TMDS Character:キャラクター」や「TMDS Sequence:シーケンス」などと呼びます。

TMDS Data = エンコード後のTMDS Character のうちの最小単位(1ビット:「0」もしくは「1」)
TMDS Character = エンコード後の各種デジタルデータの最小構成単位(10ビットのTMDSデータによって構成)
TMDS Sequence = 連続する TMDS Character の配列、「TMDS信号」とも呼ばれる

一見遠回りのような印象を受けますが、このような処理をすることで次のようなメリットがあります。

・大量のデータの高速な通信ができる。
・通信するピンの数を少なくすることが出来るため、インターフェースの大きさを小さくできる。
・通信時に発生するエラーを少なくすることができる。
・ケーブルを長くすることが出来る。

TMDSを用いることで『HDMIの場合、「小さなコネクタの付いたケーブル1本」で機器間を接続することで「高精細な映像と臨場感あふれる音声」を楽しむことが出来る。』というようなメリットになります。

以下は、HDMIにおけるソース機器&シンク機器間で通信される主な信号です。

hdmi_schematic_illustration

HDMIにおけるTMDSのピンアサイン

TMDSは、TMDSクロック用の1チャネル、TMDSデータ用の3チャネルの合計4チャネルによって構成されますが、実際それぞれのチャネルは3本ずつの導体(導線)を使用しますので、合計12本の導体(導線)が必要です。

hdmi_type_a_pin_assignment
HDMIのTMDSが使用するピンアサインは以下の通りです。
クロック チャネル0 チャネル1 チャネル2
10 7 4 1
12 9 6 3
シールド 11 8 5 2

HDMI/DVIリンク

HDMIとDVIの主信号は、TMDSクロック用の1チャネル、TMDSデータ用の3チャネルによって、ソース機器からシンク機器(一方向)へ伝送されます。

DVIの場合は、TMDSデータ用の3チャネルはそれぞれRGBフォーマットのピクセルデータを伝送します。
HDMIの場合もデフォルトはRGBフォーマットのピクセルデータを伝送しますが、オプションとしてYCbCrフォーマットの信号にも対応します。

規格 カラー フォーマット オーディオ フォーマット
DVI 1.0 RGB (24ビット) 非対応
HDMI 1.4b RGB (24/30/36/48ビット)
YCbCr 4:4:4 (24/30/36/48ビット)
YCbCr 4:2:2 (24/30/36ビット)
L-PCM(32/44.1/48/88.2/96/176.4/192kHz)
One Bit Audio(32/44.1/48/88.2/96/176.4/192kHz)
DST Audio
High-Bitrate Audio
HDMI 2.0 RGB (24/30/36/48ビット)
YCbCr 4:4:4 (24/30/36/48ビット)
YCbCr 4:2:2 (24/30/36ビット)
YCbCr 4:2:0 (24/30/36/48ビット)
L-PCM(32/44.1/48/88.2/96/176.4/192kHz)
One Bit Audio(32/44.1/48/88.2/96/176.4/192kHz)
DST Audio
High-Bitrate Audio
L-PCM 3D Audio
One Bit 3D Audio
L-PCM Multi-Stream Audio
One Bit Multi-Stream Audio

※DVIの色深度は24ビットのみが規格上制定されています。24ビット超の色深度は各メーカー独自の方式になります。

HDMI機器の互換性

HDMIでは、HDMI機器同士の互換性に重点をおいています。
接続すれば最低でも映像と音声が出力されるように以下の決まりがあります。

HDMIのバージョンを問わず全ての機器において以下仕様に対応することが決められています。

HDMIソース機器の最低仕様条件
ビデオ フォーマット 640×480p @ 59.94/60Hz、720×480p @ 59.94/60Hz、720×576p @ 50Hzのいずれか
カラー フォーマット RGB(24ビット)
オーディオ フォーマット 16ビット以上の2チャネルLPCMオーディオ(32、44.1、48kHzのいずれか)
HDMIシンク機器の最低仕様条件
ビデオ フォーマット 60Hz 対応 640×480p @ 59.94/60Hz
720×480p @ 59.94/60Hz
50Hz 対応 640×480p @ 59.94/60Hz
720×576p @ 50Hz
60Hz 対応 HDTV 640×480p @ 59.94/60Hz
720×480p @ 59.94/60Hz

1280×720p @ 59.94/60Hz もしくは
1920×1080i @ 59.94/60Hz のいずれか
50Hz 対応 HDTV 640×480p @ 59.94/60Hz
720×576p @ 50Hz

1280×720p @ 50Hz もしくは
1920×1080i @ 50Hz のいずれか
カラー フォーマット RGB(24ビット)
オーディオ フォーマット 16ビット以上の2チャネルLPCMオーディオ(32、44.1、48kHzの全て)
※これら以外のフォーマットの対応可否はオプションです。
ビデオ フォーマットについて
カラー フォーマット(RGB、YCbCr)について
オーディオ フォーマットについて

TMDS送受信の仕組み

TMDSによって通信する場合、ソース機器側には「TMDS Transmitter(送信機)」がシンク機器側には「TMDS Receiver(受信機)」が必要です。

TMDS送信機の仕組み

HDMIソース機器の中にあるTMDS送信機では、映像データ、音声データ、補助データと制御データを「TMDSキャラクター」へ変換し、それらを決められた順番に繋いだ後「TMDSシーケンス」となってシンク機器へ送信します。

tmds_tx_schematic_illustration
TMDS Data Channel:TMDS データ チャネル

TMDSデータ用の3チャネルには、それぞれ3種類の「エンコーダー」が設置されています。
それぞれの「エンコーダー」では、映像、音声、補助、制御の各種デジタルデータが「TMDSキャラクター」へ変換されます。
そしてこれらの「TMDSキャラクター」は規定のルールに基いて、「シリアライザー」によってパラレル配列からシリアル配列へ変換されます。
そしてLSB(Least Significant Bit:最下位ビット)から順番に送信され「TMDSシーケンス」となります。

TMDS Clock Channel:TMDS クロック チャネル

TMDSクロック用のチャネルには、TMDSクロック信号のみが伝送され、データは伝送されません。
TMDSクロックの主な役割は、TMDSキャラクター毎の始まり(Start)と終わり(Stop)を定めます。
クロック信号は、音楽の「メトロノーム」のような役割を担います。

tmds_clock
上図では、「TMDSクロック」と「ピクセルクロック」は同じですが、必ずしも常に同じというわけではありません。

「TMDSクロック」は、各TMDSデータチャネルの伝送速度である「TMDS Character Rate:キャラクター・レート」によって異なります。
「TMDS Character Rate」は、各TMDSデータチャネルにおける1秒あたりの「TMDS Character」の伝送量を表し、「Mega-characters per second, per channel (Mcsc)」と呼ばれる単位で表します。

HDMIバージョン1.4bまでは、「TMDSクロック」と「TMDS Character Rate」は同じでした。
しかしHDMIバージョン2.0のリリースに伴い、最大「TMDS Data Rate」が「10.2Gbps」から「18Gbps」へ拡張されました。

TMDS Data Rate = TMDS Character Rate × 10(bit) × 3(Channel)

最大「TMDS Data Rate」が「10.2Gbps」から「18Gbps」へ拡張されたということは、最大「TMDS Character Rate」が「340Mcsc」から「600Mcsc」へ拡張されたことになります。

HDMIバージョン2.0以降では、「TMDS Character Rate」が 340Mcscを超える場合に限って

TMDSクロック = TMDS Character Rate ÷ 4

にすることが決められました。
この場合、TMDSクロックは、「TMDSキャラクター毎」ではなく、「」TMDSキャラクター毎の始まり(Start)と終わり(Stop)を定めます。

tmds clock @ HDMI 2.0 mode
「TMDSキャラクター」と「TMDSクロック」の関係性は下図のようになります。
TMDS Character Rate(Mcsc) TMDS Clock(MHz) 最大TMDS Clock(MHz)
TMDS Character Rate =< 340Mcsc TMDS Character Rate 340
340Mcsc < TMDS Character Rate =< 600Mcsc TMDS Character Rate ÷ 4 150
TMDS Character Rate vs TMDS Clock
TMDSクロックは、あくまで送信機と受信機において変換する際に使用するタイミングを同期させる「Reference Clock」になります。
TMDSクロック自体にはデータが含まれないため、クロック速度の変化に伴う情報量(実データ量)の増減はありません。

TMDS受信機の仕組み

HDMIシンク機器の中にあるTMDSの受信部では、ソース機器から受信したTMDSデータを映像データ、音声データ、補助データと制御データへ変換します。

tmds_rx_schematic_illustration

TMDS信号の規格概要

TMDSリンクでは、映像、音声、補助、制御データが伝送されますが、全て同時に伝送されているわけではありません。
「TDM(Time Division Multiplexing:時分割多重化)」と呼ばれる方式で伝送されています。
TDMでは、複数の種類の信号を一定の時間間隔で、一つずつ順番に送ります。
一見、信号を飛び飛びに送ると音声や映像が途切れると思われるかもしれませんが、この飛び飛びに送られる時間間隔が「人間が認識できる時間よりもさらに短ければ」、人間には気づくことができません。

DVIにおけるTMDS信号変換

DVIの場合は、「Active Video Region:ビデオ区域」、「Blank Region:ブランク区域」の2つの区域によって構成されています。

schematic illustration of TMDS(DVI period)
区域 通信データ
ビデオ区域 Pixel Data(ピクセル・データ)
ブランク区域 H Sync(水平同期)データ
V Sync(垂直同期)データ
Control Data(コントロール・データ)※予備

※詳細については後述します。

DE信号が「High」の時は、「Active Video Region」となります。
DE信号が「Low」の時は、「Blank Region」となります。

各区域によって、変換(エンコード)する方法が異なります。

「Active Video Region」では、8ビットの「ピクセル・データ」がTMDS Character(10ビットのTMDSデータ)へ変換されます。
「Blank Region」では、2ビットの各種データがTMDS Character へ変換されます。

HDMIにおけるTMDS信号変換

HDMIの場合は、「Video Data Period:ビデオ・データ区間」、「Data Island Period:データ・アイランド区間」、「Control Period:コントロール区間」の3つの区間によって構成されています。

schematic illustration of TMDS(HDMI period)
上図の通り、3つの区間にはそれぞれ様々なデータが配置されています。
区間 通信データ
ビデオ・データ区間 Video Data(ビデオ・データ:DVIのピクセル・データと同様)
Guardband(ガードバンド)
データ・アイランド区間 Audio Data(音声データ)
Auxillary Data(補助データ)
各Guardband(ガードバンド)
コントロール区間 各Preamble(プリアンブル)

※これらのデータ以外にも実際には通信されますが、詳細については後述します。

HDMIデータは、「VDE(Video Data Enable)」と「ADE(Audio/auxiliary Data Enable)」信号の状態によってそれぞれのデータが10ビットのTMDS信号へ変換されます。「VDE」信号はDVIの「DE」信号と互換性があります。

VDE信号が「High」、ADE信号が「Low」の時は、「ビデオ・データ区間」となります。
VDE信号が「Low」、ADE信号が「High」の時は、「データ・アイランド区間」となります。
VDE信号とADE信号が共に「Low」の時は、「コントロール区間」となります。
※VDE信号とADE信号が共に「High」になることはありません。

そしてDVIと同様に、各区域によって、変換(エンコード)する方法が異なります。

「ビデオ・データ区間」では、8ビットの「ピクセル・データ」がTMDS Character へ変換されます。
「データ・アイランド区間」では、4ビットの「各種データ」がTMDS Character へ変換されます。
「コントロール区間」では、2ビットの「各種データ」がTMDS Character へ変換されます。

DVIとHDMIの投影方式

DVIやHDMIでは、画面を正面から見て、左上から右下に順々に映像を表示していく「Raster Scan(ラスター・スキャン)方式」が採用されています。

Raster Scan

オレンジ = Scan Line(走査線):各ピクセルに映像データを表示する
グリーン = Horizontal Retrace(平行帰線):次の走査線へ移動。改行のようなもの。映像データ表示はない。
ブルー  = Vertical Retrace(垂直帰線):次の走査線へ移動。改頁のようなもの。映像データ表示はない。

この方式は、CRT(Cathod Ray Tube:ブラウン管)などの旧式テレビに使われていた方式と同じです。
CRTでは、電子銃から3本の「電子ビーム」を飛ばし、ブラウン管内部の表面にある電子が当たると光を発するRGB各色の物質(無機蛍光物質)へ照射することで映像を出力します。
この作業を列単位で左から右、そして同じように次の行へという具合に(人間が文章を読むような具合に)繰り返すことで画面全体に映像を映し出します。ちなみに、電子ビームで照射される部分は常に画面の1点になります。人間が視覚で捉える映像は、各蛍光体が発光した残像になります。
先程の3種類の線(時間)は、画面上の各「電子ビーム」の軌跡を表しています。
DVIの投影方式

schematic illustration of TMDS(DVI period)

DVIの「ビデオ区域」と「ブランク区域」はCRTの原理を踏襲しています。
イメージとしては、「ビデオ区域」が「走査線(期間)」で、「ブランク区域」が「各帰線(期間)」にあたります。
あくまで「イメージ」になる点としては、現行の液晶ディスプレイでは旧式のCRTと違い表示方式が違うため、「ブランク区域」における「電子ビーム」の物理的な移動時間を必要としません。
DVIでは、以下のようなイメージで「ビデオ区域」と「ブランク区域」が定義されています。
人間が視覚的に見ることが出来る部分(ディスプレイの画面)が「ビデオ区域」になり、その左側と上部分に『仮想の(見えない)』画面が拡がるイメージです。そして、人間に「見える部分」と「見えない部分」が繋がった状態で「ラスター・スキャン」によって順番にピクセルが表示されていきます。
DVI Operation Mode
HDMIの投影方式

HDMIの場合も、基本的にはDVIと同様のイメージで定義されています。

schematic illustration of TMDS(HDMI period)
HDMIの「ビデオ・データ区間」とDVIの「ビデオ区域」は同じです。
したがって、DVIの「ブランク区域」にあたる区間をHDMIの「データ・アイランド区間」と「コントロール区間」が使用します。
人間に「見える部分」では映像信号を出力し、「見えない部分」では音声信号を出力するため、映像と音声が途切れることなく(人間には識別できないレベルで)認識できます。
HDMI Operation Mode

DVIとHDMIのビデオ フォーマット

DVIやHDMIにおいては、様々な団体によって策定されたビデオ フォーマットに準拠しています。
各ビデオ フォーマットでは、Total Line(総走査線)とActive Line(有効走査線)、Total Pixels(総(平行)ピクセル)とActive Pixel(有効ピクセル)、水平同期、垂直同期の値などが決められています。

以下が主なビデオ フォーマットの例です。
TMDS Character Rate(表中:TMDS Ch Rate)や 各TMDS Data RateはRGB(24ビット)もしくはYCbCr 4:4:4(24ビット)の場合、以下演算式にて算出します。

チャネル毎のTMDS Data Rate(表中:TMDS Data Rate per Ch)
Channel TMDS Data Rate = Total V × Total H × Frame Rate × ((24÷3)+2)

24ビットの場合、各チャネルには8ビットのビデオデータがもともと割り当てられています。
TMDS変換に伴い8ビットが10ビットへ変換されるため、24ビットの場合「 ((24÷3)+2)」となります。

総TMDS Data Rate(表中:TMDS Data Rate Total)
Total TMDS Data Rate = Channel TMDS Data Rate × 3

各チャネルのTMDS Data Rateを総チャネル数分の「3」をかけることで「総TMDS Data Rate」が算出できます。

なお、24ビット以上の色深度については後述の「Deep Colorモード」で説明します。

Video Format Active Total TMDS Data Rate
Frame
Rate
(Hz)
H
(pixel)
V
(line)
H
(pixel)
V
(line)
TMDS
Ch Rate
(Mcsc)
Total
(Gbps)
per Ch
(Gbps)
480p 59.94 640 480 800 525 25.17 0.755 0.252 CEA-861
480p 60 640 480 800 525 25.2 0.756 0.252 CEA-861
480p 59.94 720 480 858 525 27.00 0.810 0.27 CEA-861
480p 60 720 480 858 525 27.03 0.811 0.270 CEA-861
576p 50 720 576 864 625 27 0.81 0.27 CEA-861
720p 24 1280 720 3300 750 59.4 1.782 0.594 CEA-861
1080p 24 1920 1080 2750 1125 74.25 2.228 0.743 CEA-861
1080p sbs 24 3840 1080 5500 1125 148.5 4.455 1.485 HDMI 3D
1080p fp 24 1920 2160 2750 2250 148.5 4.455 1.485 HDMI 3D
720p 60 1280 720 1650 750 74.25 2.228 0.743 CEA-861
1080i 30 1920 1080 2200 1125 74.25 2.228 0.743 CEA-861
1080p 60 1920 1080 2200 1125 148.5 4.455 1.485 CEA-861
1080p sbs 60 3840 1080 4400 1125 297 8.91 2.97 HDMI 3D
1080p fp 60 1920 2160 2200 2250 297 8.91 2.97 HDMI 3D
WUXGA 60 1920 1200 2080 1235 154.13 4.624 1.541 CVT-RB
WQHD 60 2560 1440 2720 1481 241.70 7.251 2.417 CVT-RB
WQXGA 60 2560 1600 2720 1646 268.63 8.059 2.686 CVT-RB
WQUXGA 60 3840 2160 4000 2222 533.28 16.00 5.333 CVT-RB
DCI 4K 60 4096 2160 4400 2250 594 17.82 5.94 DCI
※ 1080iは「インターレース方式」のため、1つの「フレーム」を構成するためには2つの「フィールド」が必要です。
テレビなどの仕様で「インターレース方式」の「リフレッシュ レート」が表記されている場合、「フレーム」ではなく「フィールド」のことを指しています。
例:1080i(リフレッシュ レート:60Hz) = 1080i(フレーム レート:30Hz)

「CEA-861」は、CEA(Consumer Electronics Association:全米家電協会)が策定しています。
「HDMI 3D」は、HDMI Licensing Administrator, Inc もしくは HDMI Forum, Inc. が策定した3Dフォーマットです。
「CVT-RB」は、VESA(Video Electronics Standards Association:ビデオエレクトロニクス規格協会)が策定しています。
「DCI」は、DCI(Digital Cinema Initiative、LLC:デジタルシネマ標準化の業界団体)が策定しています。

カラー フォーマットによるピクセル構成

カラー フォーマットは、Color Space(カラー スペース:色空間)とColor Depth(カラー デプス:色深度)によって構成されます。これらによって、それぞれのピクセルに割り当てられる「色」が決まります。

DVIでは「RGB」のカラー スペースが使用されます。
HDMIでは、標準で「RGB」のカラー スペースが使用され、オプションで「YCbCr」も使用できます。
両方同時に使用することは出来なため、使用する場合はいずれかになります。

TMDSの「ビデオデータ区間」では、各色8ビットの「ピクセル・データ」が10ビットのTMDSデータへ変換されます。

カラー フォーマットによっては、8ビットを超える場合や、実質8ビットに満たない場合(後述のクロマ・サブサンプリングのように色データを複数のピクセルでシェアする場合)などが存在します。
いずれの場合においてもTMDSのエンコーダに入れる「ピクセル・データ」は、「8ビット」にする必要があります。
この処理を「Pixel Packing:ピクセル・パッキング」と呼んでいます。

それぞれの規格では、以下のカラー フォーマットが使用できます。
※接続機器(ハードウェア)とソフトウェアなどが対応している必要があります。

規格 カラー フォーマット
DVI 1.0 RGB(24ビット)
HDMI 1.4b RGB(24/30/36/48ビット)
YCbCr 4:4:4(24/30/36/48ビット)
YCbCr 4:2:2(24/30/36ビット)
HDMI 2.0 RGB(24/30/36/48ビット)
YCbCr 4:4:4(24/30/36/48ビット)
YCbCr 4:2:2(24/30/36ビット)
YCbCr 4:2:0(24/30/36/48ビット)
HDMIの場合、対応できるカラー スペースは「RGB」と「YCbCr」になります。
下図が、各カラー スペースのイメージです。(YCbCrの「色」は、正確に表現できていません。)
Comparison image of RGB vs YCbCr
RGBの場合、グレースケール(白と黒でのみ表現した色)は、(0,0,0)から(1,1,1)への45度の角度で存在します。
各色(1,1,1)に近づくほど白に近い色になり、(0,0,0)に近づくほど黒に近い色になります。

YCbCrの場合、グレースケールは、(0,0,0)から(1,0,0)への90度の角度で存在します。
各色上方向(1,*,*)に近づくほど明るい色になり、下方向(0,*,*)に近づくほど暗い色になります。
そして中心(*,0,0)に近づくほどグレースケールに近い色(色がなくなる)になります。

上図はカラー スペースのイメージですが、基本的に色の集合体によって形成されます。
色深度は、24/30/36/48ビットとありますが、色深度が大きくなるとカラー スペースが大きくなるわけではなく、決められたカラー スペースの中から選択できる色のバリエーション(階調)が増える様なイメージです。
30/36/48ビットについては、後述の「Deep Colorモード」にて記載します。

RGB

RGBは3原色である「赤、緑、青」を組み合わせて色を再現する映像の出力方式です。
Representation of RGB additive colors

IT業界では「フルカラー」と呼ばれています。
RGB 24ビットの場合、各色8ビットになるため、各色を「256階調」で表すことが出来ます。

赤 = 0 〜 255
緑 = 0 〜 255
青 = 0 〜 255

これらを組み合わせることで、16,777,216(256の3乗)色のうちのいずれかの色を1ピクセルに再現することが出来ます。
ちなみに「R:255 G:255 B:255」は白、「R:0 G:0 B:0」は黒になります。

RGBの構成イメージ

色深度を問わず、全てのRGBの有効ピクセル(画面)内の構成イメージは下図のようになります。
全てのピクセルには、それぞれR(赤)、G(緑)、B(青)の要素が存在します。
Pixel representation of RGB 4:4:4 (24bit)

メリットは、各ピクセル毎に色情報を保有しているためピクセル毎に固有の色を出力できます。
デメリットは、ピクセル数が多くなれば全体の情報量も膨大になります。
RGB 24ビットのピクセル パッキング

RGB 24ビットの場合、もともと各色8ビットのため、ピクセルパッキングでは「ピクセルデータ」をピクセル単位にまとめます。
RGBの場合、各チャネル毎にそれぞれの色情報がTMDSエンコーダーへ伝送されます。

Channel 0 = Blue(青)
Channel 1 = Green(緑)
Channel 2 = Red(赤)

Pixel packing of RGB 4:4:4 (24bit)

YCbCr

YCbCrは、輝度信号(Y)、輝度信号と青色成分の差(Cb)、輝度信号と赤色成分の差(Cr)の組み合わせで色を再現する映像の出力方式です。

「輝度信号(Y)」は、「明るさ」情報のことで「Luma:ルマ」と呼ばれています。
「輝度信号と青色成分の差(Cb)」と「輝度信号と赤色成分の差(Cr)」は、「明るさを除外した色」情報のことで、「Chroma:クロマ」や「色差信号」とも呼ばれています。

私たちの眼の網膜の奥には、光を感じることができる「視細胞(しさいぼう)」があります。
視細胞には、暗い光にも反応するが色を識別することができない「桿体(かんたい)細胞」と呼ばれる細胞と、明るい光にしか反応しないが色を識別できる「錐体(すいたい)細胞」と呼ばれる細胞があります。
錐体細胞は黄斑部を中心に分布し、桿体細胞は錐体細胞よりも数が多く、主に網膜の外周部分に分布しています。
参考までに人間の網膜には、平均で桿体細胞が9,200万個、錐体細胞が460万個存在するという説(1)や、桿体細胞が1億2,000万個、錐体細胞が600〜700万個存在するという説(2)があります。
いずれにしても、人間の目は「明るさ」を認識する細胞が「色彩」を認識する細胞よりもはるかに(およそ20倍)多いことがわかります。
人間は「色」よりも「光」に対して格段に敏感であることが医学的に証明されています。
参考資料(1):“Human photoreceptor topography”(英文)
参考資料(2):“The Rods and Cones of the Human Eye”(英文)

話が少し逸れましたが「YCbCr」の方式はもともと放送業界において使用されてきました。
「輝度」情報は可変することなく「色彩」の度合いをサブサンプリング(フィルターや平均化など)することで、人間の目の仕組みを逆手に取り、少ないデータ量で同等の映像を再現する仕組みが出来上がりました。

HDMIで使用される「YCbCr」には、次の3種類があります。

YCbCr 4:4:4
YCbCr 4:2:2
YCbCr 4:2:0

これらの数字は、ルマに対する各クロマのサブサンプリング(Chroma Subsampling:クロマの抽出度合)の割合を表します。
それぞれ次のような意味があります。

Chroma Subsampling Notation
YCbCr 4:4:4

YCbCr 4:4:4では、RGB同様全てのピクセルが色情報を保有しますので、クロマ サブサンプリングが行われない状態です。

YCbCr 4:4:4 の構成イメージ

YCbCr 4:4:4 における有効ピクセル(画面)内の構成イメージは下図のようになります。
全てのピクセルには、それぞれルマと各クロマが存在します。
Pixel representation of YCbCr 4:4:4 (24bit)

メリットとデメリットは、RGBと同様です。
メリットは、各ピクセル毎に色情報を保有しているためピクセル毎に固有の色を出力できます。
デメリットは、ピクセル数が多くなれば全体の情報量も膨大になります。
YCbCr 4:4:4 24ビットのピクセル パッキング

YCbCr 4:4:4 24ビットの場合も、もともと各色8ビットのため、ピクセルパッキングでは「ピクセルデータ」をピクセル単位にまとめます。
YCbCr 4:4:4の場合、RGB同様各チャネル毎にそれぞれの情報がTMDSエンコーダーへ伝送されます。

Channel 0 = クロマ:輝度信号と青色成分の差(Cb)
Channel 1 = ルマ:輝度信号(Y)
Channel 2 = クロマ:輝度信号と赤色成分の差(Cr)

Pixel packing of YCbCr 4:4:4 (24bit)
YCbCr 4:2:2

YCbCr 4:2:2では、全てのピクセルがルマを保有しますが、水平方向2ピクセルあたり各1つのクロマのみとなります。
水平方向にクロマ サブサンプリングが行われます。

YCbCr 4:2:2 の構成イメージ

YCbCr 4:2:2 における有効ピクセル(画面)内の構成イメージは下図のようになります。
全てのピクセルには、ルマが存在します。
平行方向に並ぶ2つのピクセルでは、各クロマがシェアされます。
Pixel representation of YCbCr 4:2:2 (24bit)

メリットは、YCbCr 4:4:4 と比較して情報量を 2/3 にすることが出来ます。
デメリットは、クロマ数が少なくなったことによって、色を再現するにあたっての制限が生まれます。
YCbCr 4:2:2 24ビットのピクセル パッキング

YCbCr 4:2:2では、標準で36ビット分のスペースが確保されています。
24ビットや30ビットの場合は、MSB(Most Significant Bit:最上位ビット)から順番に割当られていきます。

24ビットの場合、「bits 7-0」は、「bits 11-4」にそれぞれ割り当てられます。(空きビットは各4ビット(bits 3-0))
30ビットの場合、「bits 9-0」は、「bits 11-2」にそれぞれ割り当てられます。(空きビットは各2ビット(bits 1-0))

「空きビット」が生じた場合、それらには「0」が当てはめられます。

仮に24ビットの場合、「ビデオ・データ」におけるチャネル0には、Y、Cb、Crの全てのデータが存在しないため、「0」が羅列されるような状態になります。

Pixel packing of YCbCr 4:2:2 (24/30/36bit)
YCbCr 4:2:0

YCbCr 4:2:0では、全てのピクセルが「ルマ:輝度信号(Y)」を保有しますが、水平2ピクセル、垂直2ピクセルのルマあたり各1つのクロマのみとなります。水平、垂直方向にクロマ サブサンプリングが行われます。

YCbCr 4:2:0 の構成イメージ

YCbCr 4:2:0 における有効ピクセル(画面)内の構成イメージは下図のようになります。
全てのピクセルには、ルマが存在します。
平行方向に並ぶ2つのピクセルと垂直方向に並ぶ2つのピクセル(4つのピクセル)では、各クロマがシェアされます。
Pixel representation of YCbCr 4:2:0 (24bit)

メリットは、YCbCr 4:4:4 と比較して情報量を 1/2 にすることが出来ます。
デメリットは、クロマ数がさらに少なくなったことによって、色を再現するにあたっての制限が生まれます。
YCbCr 4:2:0 24ビットのピクセル パッキング

YCbCr 4:2:0では、走査線毎に各クロマを交互にTMDSエンコーダーへ送信します。

『Line 0』伝送時:
Pixel packing of YCbCr 4:2:0 (24bit) Line 0
『Line 1』伝送時:
Pixel packing of YCbCr 4:2:0 (24bit) Line 1

Deep Color モード

HDMIでは、カラー フォーマットが24ビットを超える色深度を「Deep Color:ディープ カラー」と呼んでいます。
Deep Color は、HDMIバージョン1.3より導入されました。

24ビットの色深度では、各色8ビット(256階調)によって16,777,216(256の3乗)色の再現が可能であり、自然界のたいていの映像を表示することができます。
しかし、夕日、夕暮れ、晴天の空などのゆるやかに色が変化するグラデーションのような映像の場合、階調の制約が存在するため放射状の縞模様が出てしまう場合があります。このような現象を「Color Banding:カラー バンディング」と呼びます。
The Foston by pass on the A1 North - geograph.org.uk - 1068397
この「カラー バンディング」を回避するためには、より高い階調表示が必要になります。
※素材、ソフトウェア、機器などの全てが「Deep Color」に対応している必要があります。

「より高い階調表示」では、使用できる「色」が増えるわけですがあくまで「カラー スペース」内に限定されます。
ビット数が増加したことによって、RGBで指定されている「RGBレッド」の色が変わるわけではありません。

24ビット(R:255 G:0 B:0)
30ビット(R:1023 G:0 B:0)
36ビット(R:4095 G:0 B:0)
40ビット(R:65535 G:0 B:0)

これらは全て同じ色を表します。

Representation of difference of Bit-Rate in RGB Red
色の違いは解りづらいかもしれませんが、24ビットの階調に対する各色深度の階調を表しています。
ビット数が増えることによって、階調の間に存在する色の再現が可能になります。
Representation of difference of Bit-Rate in RGB 24bit R:1 G:0 B:0

階調を増やすことによって、人間の目では認識することが難しいレベルまで「カラー バンディング」の現象を抑制することが可能です。

参考までに、各色深度では以下の色数を再現できます。

24ビット = 16,777,216(256の3乗)色 = 約1,677万色
30ビット = 1,073,741,824(1024の3乗)色 = 約10億色
36ビット = 68,719,476,736(4096の3乗)色 = 約687億色
48ビット = 281,474,976,710,656 (65536の3乗)色 = 約281兆色

※素材、ソフトウェア、機器などの全てが各色深度に対応している必要があります。

色深度によるピクセル・パッキング

各カラーフォーマット 24ビットについては重複しますが、24ビット超の「Deep Color」時を含めたピクセル・パッキングは以下のとおりです。

RGB もしくは YCbCr4:4:4 24ビット

RGB もしくは YCbCr4:4:4 24ビットの場合、各色8ビットによってピクセルが構成されます。

Pixel packing of RGB 4:4:4 24bit
RGB もしくは YCbCr4:4:4 30ビット

RGB もしくは YCbCr4:4:4 30ビットの場合、各色10ビットによってピクセルが構成されます。

Pixel packing of RGB 4:4:4 30bit
RGB もしくは YCbCr4:4:4 36ビット

RGB もしくは YCbCr4:4:4 36ビットの場合、各色12ビットによってピクセルが構成されます。

Pixel packing of RGB 4:4:4 36bit
RGB もしくは YCbCr4:4:4 48ビット

RGB もしくは YCbCr4:4:4 48ビットの場合、各色16ビットによってピクセルが構成されます。

Pixel packing of RGB 4:4:4 48bit
YCbCr 4:2:2 24/30/36ビット

YCbCr 4:2:2では、標準で36ビット分のスペースが確保されています。
24ビットや30ビットの場合は、MSB(Most Significant Bit:最上位ビット)から順番に割当られていきます。

24ビットの場合、「bits 7-0」は、「bits 11-4」にそれぞれ割り当てられます。(空きビットは各4ビット(bits 3-0))
30ビットの場合、「bits 9-0」は、「bits 11-2」にそれぞれ割り当てられます。(空きビットは各2ビット(bits 1-0))

「空きビット」が生じた場合、それらには「0」が当てはめられます。

Pixel packing of YCbCr 4:2:2(24/30/36bit)
YCbCr 4:2:0 24ビット

YCbCr 4:2:0では、走査線毎に各クロマを交互に送信します。

『Line 0』伝送時:
Pixel packing of YCbCr 4:2:0 (24bit) Line 0
『Line 1』伝送時:
Pixel packing of YCbCr 4:2:0 (24bit) Line 1
YCbCr 4:2:0 30ビット

YCbCr 4:2:0では、走査線毎に各クロマを交互に送信します。

『Line 0』伝送時:
Pixel packing of YCbCr 4:2:0 (30bit) Line 0
『Line 1』伝送時:
Pixel packing of YCbCr 4:2:0 (30bit) Line 1
YCbCr 4:2:0 36ビット

YCbCr 4:2:0では、走査線毎に各クロマを交互に送信します。

『Line 0』伝送時:
Pixel packing of YCbCr 4:2:0 (36bit) Line 0
『Line 1』伝送時:
Pixel packing of YCbCr 4:2:0 (36bit) Line 1
YCbCr 4:2:0 48ビット

YCbCr 4:2:0では、走査線毎に各クロマを交互に送信します。

『Line 0』伝送時:
Pixel packing of YCbCr 4:2:0 (48bit) Line 0
『Line 1』伝送時:
Pixel packing of YCbCr 4:2:0 (48bit) Line 1

色深度におけるTMDS Character Rate

Deep Colorモードの場合、1つのピクセルに対する色情報(Video Data)が増加しますが、ビデオフォーマットのルール(Total Line(総走査線)とActive Line(有効走査線)、Total Pixels(総(平行)ピクセル)とActive Pixel(有効ピクセル)、水平同期、垂直同期の値など)はそのまま適用されます。
言い換えると、24ビットの倍のデータが必要な48ビットにおいて、24ビットで表示する映像と48ビットで表示する映像は同じ周期で描画する必要があります。
そこで、これらの増えたデータの処理時間を補うために Deep Colorモードでは、TMDS Character Rateを増加して対応します。
各カラースペースにおける色深度では、TMDS Character Rateは以下のように増減します。
同じフォーマットでの RGB もしくは YCbCr 4:4:4 24ビットを基準とした場合です。

色深度 カラースペース
RGB YCbCr 4:4:4 YCbCr 4:2:2 YCbCr 4:2:0
24ビット 基準 基準 基準 基準 × 0.5
30ビット 基準 × 1.25 基準 × 1.25 基準 基準 × 0.625
36ビット 基準 × 1.5 基準 × 1.5 基準 基準 × 0.75
48ビット 基準 × 2 基準 × 2 N/A 基準
なお、Deep ColorにおけるTMDS Character Rateが増加する区間には決まりがあります。
「ビデオ・データ区間のビデオ・データ」と「プリアンブル以外のコントロール区間」のみが適用されます。
色深度の変更に伴い、単純に上記の倍率が「TMDS Data Rate」に影響するわけではありません。

色深度におけるTMDS Clock Rate

TMDS Character Rateの増加に伴い、TMDS Clockも増加します。
TMDS Character Rateが340Mcsc以下のTMDS Clockの1周期は、TMDS Character Rateと同じです。
TMDS Character Rateが340Mcsc超のTMDS Clockの1周期は、「TMDS Character Rate ÷ 4」になります。

Difference of TMDS Ch Rate upon Pixel Bit Rate

TMDSの主な仕組み

TMDSは2つの大きな仕組みによって形成されています。

・ソフトウェア(Algorithm:計算方法)による信号変換
・物理的な接続方法

そして、様々な電気の理論が応用されています。
ここからの説明では、今まで説明した内容が重複します。

DVIやHDMIには様々なデータが存在しますが、それらは全て同時に伝送されているわけではありません。
「TDM(Time Division Multiplexing:時分割多重化)」と呼ばれる方式で伝送されています。
TDMでは、複数の種類の信号を一定の時間間隔で、一つずつ順番に送ります。

どのデータが登場するかは時間単位で決められており、DVIでは「ビデオ区域」と「ブランク区域」、
HDMIでは、「ビデオ・データ区間」、「データ・アイランド区間」、「コントロール区間」という具合に分けられています。

そしてデータの種類によって、変換方式が異なります。

DVI・HDMIのデータ種別と変換方式

DVI
schematic illustration of TMDS(DVI period)
Active Video Region(ビデオ区域)
チャネル データ種類 データ内容 符号化方式 変換方式
チャネル 0 ビデオ・データ Pixel Data (B) 8b/10b Active Region Coding
チャネル 1 Pixel Data (G)
チャネル 2 Pixel Data (R)

Active Video Regionでは、表示されるピクセルの情報が送信されます。
8ビットの「ビデオ・データ」が変換され10ビットへ構成されます。
専門的には「8ビット(bit)」を「10ビット(bit)」へ変換するため、「8b/10b」とも呼ばれています。
「Active Region Coding」は、正式名称ではありませんが、2つのプロセスによってTMDSデータが生成されます。

Active Region Coding
・Transition Minimized(遷移時間最短)
・DC-Balancing(DCバランス)
Blank Region(ブランク区域)
チャネル データ種類 データ内容 符号化方式 変換方式
チャネル 0 H/V Sync H Sync
V Sync
2b/10b Blank Region Coding
チャネル 1 制御データ(予備) CTL0
CTL1
チャネル 2 CTL2
CTL3

Blank Regionでは、同期信号(H Sync、V Sync)の情報が送信されます。
制御データについては、基本的に予備のため使用しません。
規格上、エンコーダに入力する前のCTL1,2,3の状態は”0″にすることが決められています。
なお、CTL0については、メーカー判断で使用が可能です。(基本は”0″)
これらの2ビットのデータが変換され10ビットへ構成されます。
「Blank Region Coding」も正式名称ではありません。1つのプロセスによってTMDSデータが生成されます。

Blank Region Coding
・Transition Maximized(遷移時間最長)
HDMI
schematic illustration of TMDS(HDMI period)
ビデオ・データ区間:Video Data(ビデオ・データ)
チャネル データ種類 データ内容 符号化方式 変換方式
チャネル 0 ビデオ・データ Pixel Data 8b/10b Video Data Coding
チャネル 1 Pixel Data
チャネル 2 Pixel Data

ビデオ・データ区間では、表示されるピクセルの情報が送信されます。
DVIのビデオ区域同様、8ビットの「ビデオ・データ」が変換され10ビットへ構成されます。
しかし「Video Data Coding」はDVIと違い、条件によっていずれかのプロセスでTMDSデータが生成されます。

Video Data Coding
TMDS character rate が「340Mcsc超」の場合
・Scrambling(スクランブル)
・Transition Minimized(遷移時間最短)
・DC-Balancing(DCバランス)

TMDS character rate が「340Mcsc以下」の場合
・Transition Minimized(遷移時間最短)
・DC-Balancing(DCバランス)

ビデオ・データ区間:Video Data Guardband(ビデオ・データ・ガードバンド)
チャネル データ種類 データ内容 符号化方式 変換方式
チャネル 0 Guardband 固定データ
“1011001100”
N/A N/A
チャネル 1 固定データ
“0100110011”
チャネル 2 固定データ
“1011001100”

Video Data Guardbandは、固定のデータになります。
「ビデオ・データ区間」の「ビデオ・データ」が送信される前に必ず「2 TMDS Character」分存在します。
※後述のデータ・アイランド・ガードバンドのように、本データの前後には存在せず前だけになります。

データ・アイランド区間:Data Island(データ・アイランド)
チャネル データ種類 データ内容 符号化方式 変換方式
チャネル 0 H/V Sync
補助データ
H Sync
V Sync
パケット・ヘッダー
固定データ
4b/10b TERC4 Coding
チャネル 1 音声/補助データ パケットデータ
チャネル 2 パケットデータ

データ・アイランド区間に存在する「音声データ」もしくは「補助データ」は、Data Island Preambleの後に各Data Island Guardbandに挟まれて存在します。
Data Islandの本データは「パケット形式」で送信されます。
1つのパケットは「32 TMDS character」で構成されます。

映像データが送信されている場合、2つの「ビデオ・データ区間」の間に必ず最低1パケット分の「データ・アイランド区間」が存在します。なお、データ・アイランド区間に送信されるパケット数に明確な決まりはありませんが、18パケット以下であることが決められています。

データ・アイランド区間では、区間を通してTMDSチャネル0の「bit 0」には「H Sync」、「bit 1」には「V Sync」が既にエンコードされた状態で送信されます。
パケットヘッダーの内容によってどのような「データ」なのかを識別します。
TMDSチャネル1と2にはパケットヘッダーに準じたパケットデータの内容が送信されます。

「データ・アイランド区間」の後は必ず「コントロール区間」になります。

「データ・アイランド」では、4ビットの「データ」が変換され10ビットへ構成されます。
「ビデオ・データ」同様、条件によっていずれかのプロセスでTMDSデータが生成されます。

TERC4 Coding
TMDS character rate が「340Mcsc超」の場合
・Scrambling(スクランブル)
・TERC4(TMDS Error Reduction Coding)

TMDS character rate が「340Mcsc以下」の場合
・TERC4

データ・アイランド区間:各Data Island Guardband(データ・アイランド・ガードバンド)
チャネル データ種類 データ内容 符号化方式 変換方式
チャネル 0 H/V Sync
GuardBand
H Sync
V Sync
固定データ”1″
固定データ”1″
4b/10b TERC4 Coding
チャネル 1 Guardband 固定データ
“0100110011”
N/A N/A
チャネル 2 固定データ
“0100110011”

データ・アイランド・ガードバンドは、データ・アイランド区間の本データの前後に2種類存在します。
前に登場するものが「Leading Data Island Guardband(リーディング・データ・アイランド・ガードバンド)」、後に登場するものが「Trailing Data Island Guardband(トレイリング・データ・アイランド・ガードバンド)」です。
ビデオ・データ・ガードバンド同様「2 TMDS Character」単位分繰り返して存在します。

チャネル1と2には、固定データが送信されます。
チャネル0のみ以下条件に則り変換されます。

TERC4 Coding
TMDS character rate が「340Mcsc超」の場合
・Scrambling(スクランブル)
・TERC4

TMDS character rate が「340Mcsc以下」の場合
・TERC4

コントロール区間
チャネル データ種類 データ内容 符号化方式 変換方式
チャネル 0 H/V Sync H Sync
V Sync
2b/10b Control Period Coding
チャネル 1 制御データ CTL0
CTL1
チャネル 2 CTL2
CTL3

「コントロール区間」には、3つの状態が存在します。
1.Video Preamble(ビデオ・プリアンブル)
2.Data Island Preamble(データ・アイランド・プリアンブル)
3.それ以外

各プリアンブルは「8 TMDS character」単位分繰り返して存在します。
これらのプリアンブルの後にどの区域が続くかを示します。
「ビデオ・プリアンブル」の後は「ビデオ・ガードバンド」から始まる「ビデオ・データ区間」が続きます。
「データ・アイランド・プリアンブル」の後は「リーディング・データ・アイランド・ガードバンド」から始まる「データ・アイランド区間」が続きます。

プリアンブル CTL0 CTL1 CTL2 CTL3
ビデオ・プリアンブル 1 0 0 0
データ・アイランド・プリアンブル 1 0 1 0

「それ以外」の状態は、各プリアンブルが登場するまでの状態です。この状態は「4 TMDS Character」単位以上であることが決められています。

いずれの場合においても、「データ・アイランド区間」同様、区間を通してTMDSチャネル0の「bit 0」には「H Sync」、「bit 1」には「V Sync」が既にエンコードされた状態で送信されます。

DVIのブランク区域同様、各チャネル2ビットのデータが変換され10ビットへ構成されます。
しかしHDMIの「Video Data Coding」と同様、条件によっていずれかのプロセスでTMDSデータが生成されます。

Control Period Coding
TMDS character rate が「340Mcsc超」の場合
・Scrambling(スクランブル)
・Transition Maximized(遷移時間最長)

TMDS character rate が「340Mcsc以下」の場合
・Transition Maximized(遷移時間最長)

※TMDS character rate が「340Mcsc超」の場合、各フィールドに1回の割合で「Scrambler Synchronization Control Period:SSCP」と呼ばれる期間が存在します。この期間は、「8 TMDS character」単位分存在します。この期間では、「TMDS character rate が「340Mcsc以下」の場合」と同様の処理をします。

ソフトウェア(Algorithm:計算方式)による信号変換

DVIやHDMIでは、以下5種類の方式やそれらの組み合わせによって各種データがTMDSデータへ変換されます。

方式1.Transition Minimized(遷移時間最短)
方式2.DC-Balancing(DCバランス)
方式3.TERC4
方式4.Transition Maximized(遷移時間最長)
方式5.Scrambling(スクランブル)

方式1 Transition Minimized(遷移時間最短)

Transition Minimized(遷移時間最短)は、ビデオ・データの変換に用いられます。
このプロセスを経ることで「8ビット」のデータが「9ビット」のデータへ変換されます。

TMDSでは、LSB(Least Significant Bit:最下位ビット)から順番に送信されます。
例えば「01010101」のようなデータが伝送される場合、ソース機器側からシンク機器側へ
「1」→「0」→「1」→「0」→「1」→「0」→「1」→「0」とデータが順番に伝送されます。

データ上では「1」、「0」になりますが、電気上では「電流の変化」となります。
「01010101」のようにこの変化の頻度が多くなると、HDMIケーブルの伝送路である銅線上にEMI(Electromagnetic Interference:電磁障害)が発生しやすくなります。
このEMIの発生を抑えるために「Transition Minimized」を用いることで、この「0」→「1」もしくは「1」→「0」への遷移時間(遷移する回数)を最短(最小回数)にします。

この符号化プロセスでは、以下のルールが用いられます。

条件1
8ビットのデータ上の「1」の総数が4つよりも多く(5つ以上)ある場合

条件2
8ビットのデータ上の「1」の総数が4つあり、なおかつ
LSB(Least Significant Bit:最下位ビット)が「0」である場合

この「条件1」もしくは「条件2」に該当する場合、8ビットのデータは「XNORプロセス」にかけられます。
そして「条件1」、「条件2」に該当しない場合、8ビットのデータは「XORプロセス」にかけられます。

XNORプロセス

「XNOR」は、論理演算のひとつです。
2つの入力が同じ場合、「1」を出力します。
2つの入力が違う場合、「0」を出力します。

XNOR
A B C
0 0 1
0 1 0
1 0 0
1 1 1
例えば、「10110101」のデータがあった場合、「1」が5つ存在しますので「XNOR」プロセスを施します。
変換前のデータは、「1→0」、「0→1」の遷移回数が6回発生します。
XNOR encode
「XNOR」プロセスを施すことによって遷移回数を「6回」→「3回」へ減らすことが出来ます。
「XNOR」プロセスを経た場合、9番目のビットが「0」になります。
XORプロセス

「XOR」は、「XNOR」とは反対の数字を出力します。
2つの入力が同じ場合、「0」を出力します。
2つの入力が違う場合、「1」を出力します。

XOR
A B C
0 0 0
0 1 1
1 0 1
1 1 0
例えば、「01010101」のデータがあった場合、「1」が4つ存在し、かつLSBが「1」ですので「XOR」プロセスを施します。
変換前のデータは、「1→0」、「0→1」の遷移回数が7回発生します。
XOR encode
「XOR」プロセスを施すことによって遷移回数を「7回」→「3回」へ減らすことが出来ます。
「XOR」プロセスを経た場合、9番目のビットが「1」になります。
方式2 DC-Balancing(DCバランス)

DC-Balancing(DCバランス)は、Transition Minimizedを施した後のビデオ・データの変換に用いられます。
このプロセスを経ることで「9ビット」のデータが「10ビット」のデータへ変換されます。

「DCバランス」では、データが「1」もしくは「0」の連続にならないように変換します。
細かく遷移するデータの遷移回数を減らす「Transition Minimized」とは矛盾する内容ですが、電気信号の伝送には極めて重要です。

例えばもし長時間「0」が続いた後に、単発での遷移(0→1→0)が起きると、「1」に上がりきらずに「0」に戻ってしまいシンク機器側が誤って読み取る(「1」と認識しない)可能性が発生します。

この「DCバランス」では、「ビデオ・データ区間」中に存在する「0」と「1」の比率を同じ頻度(50%ずつ)に近づけるためのものです。

「DCバランス」には、2種類のプロセスがあり「4つの条件」によって、いずれかのプロセスが施されます。
そしてその時点までにTMDSシーケンス上に登場した「1」と「0」の数の差異を積算していく「カウンター」と呼ばれるものによって影響します。

「ビデオ・データ区間」に入った時点では、このカウンターの数値は「0」になります。

9th = Transition Minimized処理時に経た際に追加された9番目のビット。「0」= XNOR、「1」= XOR
Cnt(t-1) = データがエンコーダーに入る前の「カウンター」の数値
Cnt(t) = 新しい「カウンター」の数値(次のプロセスで使用される数値)
N0 = Transition Minimized処理後の9ビットの内、下8ビット内に存在する「0」の数
N1 = Transition Minimized処理後の9ビットの内、下8ビット内に存在する「1」の数

9th Cnt(t-1) N0 – N1 10th Cnt(t)
Cnt(t) = Cnt(t-1) – (N0 – N1)
>0 <0
<0 >0
>0 >0 Cnt(t) = Cnt(t-1) + (N0 – N1)
<0 <0
>0 <0 Cnt(t) = Cnt(t-1) + 2 – (N0 – N1)
<0 >0
>0 >0 Cnt(t) = Cnt(t-1) + 2 + (N0 – N1)
<0 <0

「10th」は、新たに追加される10番目のビットにおける数値になります。
「10th」が「0」の場合、「DCバランス」では「スルー・プロセス(仮名)」となります。
「10th」が「1」の場合、「DCバランス」では「インバース・プロセス(仮名)」となります。

Cnt(t)は、それまでのTMDSシーケンス上の「0」の数と「1」の数の比較を表します。
・「正の整数」の場合、「0」<「1」 (「1」が多い)
・「負の整数」の場合、「0」>「1」 (「0」が多い)
・「ゼロ」の場合、「0」=「1」 (「0」、「1」は同じ)

各プロセスは次の通りです。

スルー・プロセス

「スルー・プロセス」では、10番目のビット「0」が追加されるのみで何も処理されません。
DC-Balance Case:0

インバース・プロセス

「インバース・プロセス」では、10番目のビット「1」が追加され、下位8ビットの内容が反転します。
DC-Balance Case:1

方式3 TERC4

TERC4(TMDS Error Reduction Coding)では、4ビットのデータを10ビットのTMDSデータへ変換します。

D3 D2 D1 D0 TERC4
0 0 0 0 1010011100
0 0 0 1 1001100011
0 0 1 0 1011100100
0 0 1 1 1011100010
0 1 0 0 0101110001
0 1 0 1 0100011110
0 1 1 0 0110001110
0 1 1 1 0100111100
1 0 0 0 1011001100
1 0 0 1 0100111001
1 0 1 0 0110011100
1 0 1 1 1011000110
1 1 0 0 1010001110
1 1 0 1 1001110001
1 1 1 0 0101100011
1 1 1 1 1011000011
方式4 Transition Maximized(遷移時間最長)

Transition Maximized(遷移時間最長)では、2ビットのデータを10ビットのTMDSデータへ変換します。

D1 D0 Transition Maximized
0 0 1101010100
0 1 0010101011
1 0 0101010100
1 1 1010101011
方式5 Scrambling(スクランブル)

「Scrambling(スクランブル)」は、TMDS Character Rateが340Mcsc超の場合にのみ使用されます。

高速通信において同じデータがパターンのように繰り返されると、変換をした場合でも結果的に同じようなパターンになってしまうため、EMIが発生しやすくなります。
そこで乱数を用いてデータをひとまず攪拌させ、その後に各種変換方式を用いることでEMIが低減します。

スクランブルでは、「擬似乱数(Pseudo random:スードー・ランダム)」を発生させます。
そしてそれらの数値をデータに対して決められらルールで「XOR」処理させることによって、仮に同じデータが続いた場合でも変換後それぞれ全く違うデータの羅列を作り出す(データを撹拌させる)ことが出来ます。
なお「擬似乱数」は、「乱数」ですが「完全な乱数(常にランダム)」というわけではなく、決められた方法に則れば毎回同じ数値が生成されます。エンコーダー側で処理をした内容をデコーダー側でも処理をするため「擬似乱数」でなくてはなりません。

物理的な仕組みによる特性

TMDSは、Differential Signaling(差動伝送)によってソース機器からシンク機器へ伝送されます。
デジタル信号は「1」と「0」で構成されます。
これらのデジタル信号を電気信号では、「1」を「HIGH(高い電圧)」、「0」を「グランド(GND:0V)」として、認識させます。
この「HIGH」になる状態、「LOW」になる状態は、回路の設計(ルール)によって数値(◯V以上、◯V以下など)が異なります。
Single End Modulation
なお、「HIGH」から「LOW」、「LOW」から「HIGH」に変更する際、デジタル上では「1」、「0」のみでしか表すことが出来ませんが、実際の電気信号上では、「遷移時間」が発生します。
この遷移時間は、時間軸を少ない値に(拡大)することで確認することが出来ます。図のように「垂直」だった部分が「斜線」になります。
Single End Modulation @ time scale
この方式で「ドライバー」から「レシーバー」へ信号を伝送することを「Single-ended Signaling(シングル・エンド伝送)」と呼びます。
Single-ended Signal
「シングル・エンド伝送」では、「DATA信号」は「グランド」との「電位差」によって決まります。
現在、幅広く使われているシングル・エンド信号のひとつに、TTL規格として標準化されている「LVTTL(Low Voltage Transistor-Transistor Logic:低電圧トランジスタ・トランジスタ・ロジック)」と呼ばれるものがあります。
3.3VのLVTTLでは,使用される電圧レンジは「0V から + 3.3V」になります。
そして「グランド」を基準にして,+ 2.0V 以上を「HIGH」に、+ 0.8V 以下を「LOW」にすると規定されています.
つまり、「+ 2.0V 以上」、「+ 0.8V 以下」にしなければ、「HIGH」、「LOW」と認識されません。
これらの値を「Threshold Voltages:スレッショルド電圧」や「しきい電圧」と呼びます。

データ量が少なければ問題無いですが、データ量を多くする場合、転送速度を早くしなければなりません。
転送速度が早くなった場合、遷移時間を短縮させる必要があります。
高速伝送する場合、「LOW」から「HIGH」への信号の「立ち上がり」と「HIGH」から「LOW」への信号の「立ち下がり」の時間を短縮するか、使用する電圧レンジの幅を小さくする(「立ち上がり」、「立ち下がり」の量を少なくする)必要があります。

「LOW」から「HIGH」への信号の「立ち上がり」と「HIGH」から「LOW」への信号の「立ち下がり」の時間を短縮するには、急激な電圧変化が必要です。
急激な電圧変化によって遷移時間を短縮することが出来、より多くのデータを伝送することが出来ます。
しかし急激な電圧変化は、「立ち上がり」時に「オーバー・シュート」、「立ち下がり」時には「アンダー・シュート」を発生させます。
Single End Modulation over shoot and under shoot
時間が経過すれば、これらの電圧は既定値に戻りますが「オーバー・シュート」、「アンダー・シュート」発生中は誤認識(誤作動)します。
Single End Modulation error @ over shoot and under shoot

次に、使用する電圧レンジの幅を小さくした場合、電圧レンジを小さくすることでスレッショルド電圧のレンジも小さくすることが出来ます。スレッショルド電圧の差が少なければ、遷移時間を小さくすることが出来ます。
しかしこの場合にも問題が有ります。
もともと使用していた電圧レンジでは、問題なかった外的な要因によるノイズが電圧レンジを小さくした結果、スレッショルド電圧域と被ってしまい誤認識(誤作動)してしまうケースです。
Single End Modulation noise
Single End Modulation noise 2
Differential Signaling(差動伝送)

シングル・エンド伝送の問題点は、差動伝送によって解決することが出来ます。
シングル・エンド伝送では導体が1本でしたが、差動伝送には導体2本が必要です。
導体は2本ですが、伝送される信号は1つです。
Differential Signal
シングル・エンド伝送では、「DATA信号」は「グランド」との「電位差」によって決まりましたが、差動伝送では2本の導体の電位差によって決まります。

「差動伝送」方式の仕組み

例えば以下のようなTMDS信号があるとします。(+側)
Differential Signal +ve
このTMDS信号を複製し、片方の位相を反転させます。(ー側)
Differential Signal -ve
それぞれを各々の線で伝送します。
レシーバー側では2つの信号の「差」を求めます。
Differential Signal +ve & -ve
「青 – 赤」が「+」であれば「HIGH」、「青 – 赤」が「ー」であれば「LOW」と認識します。
差動伝送では、シングル・エンド伝送の際に存在していた遷移時間がほとんどなくなるため、より多くのデータを伝送することが出来ます。

そして、シングル・エンド伝送の際に問題となった、外的な要因によるノイズなどの「同位相ノイズ(+側と-側の信号線に同じノイズが加わった状態)」と呼ばれるものは、レシーバーによってお互い打ち消される状態になります。
Differential Signal +ve & -ve

「差動伝送」方式のメリット

・信号の高速化
・システム電源の低電圧化
・外的な要因などによるノイズ・キャンセル

「差動伝送」方式のデメリット

・反射ノイズなどの「異相位ノイズ」への対策が必要がある
・導体の長さを同じにする必要がある

Twist Pair(ツイスト・ペア)の仕組み

「ツイストペア」はノイズ発生を抑えると同時にノイズの影響を受けにくくします。