スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

HDMIリンクスピードと戯れる

11/08/20初稿

 HDMIの規格では、帯域は1.3以前は4.95Gbps。1.3から10.2Gbpsとなっています。
 ですが、これって規格上の“最大値”なので、表示モード別の帯域ではありません。
 では、1080pや1080i、720pなどの実際の帯域はいくつなのでしょう? というか、「HDMI-Audio」にとって知りたいのはそのリンクモードで使われている“HDMIクロック”の値ですが。


■HDMIのリンク速度

 なかなか解らなかったのですが、やっとなんとかこれでいいのではないかという情報を集められたと思いますのでまとめておきます。とりあえず30/60fps系のみ。基本ということで。
 色数はDeepColorではないノーマル24bitカラー時です。この時、pixelあたりの色情報は3色x10bit=30bitのデータとなります(8bitを転送用10bitにcoding)。HDMIは3本のデータライン(1色1本)とクロックラインで構成されるシリアルとパラレルの合体技通信であり、1クロックに1pixel分のデータを転送する仕組みです。よってHDMIクロック=pixelレートであり、データ線1本の転送レートは1pixelで10bit分なのでその10倍、データ線は3本あるので全体はその3倍となります。
 なお、規格上は「TMDSクロック」と呼ぶようですが、本稿では判りやすく「HDMIクロック」と呼称することにします。

・480p(D2)
  水平pixel数:858
  水平有効画素数:640 (4:3の場合。16:9ではスクィーズで非正方画素になる720)
  垂直走査線数:525 (黎明期には525pとも呼ばれていた)
  垂直有効ライン数:480
  フレームレート:59.94fps
  pixelレート=HDMIクロック:27MHz(1クロックで10bitデータ転送)
  転送レート:270MHz (1pixelあたり10bitなので)
  帯域:0.81Gbps (データラインは3本あるので転送レートの3倍)

・1080i(D3)
  水平pixel数:2200
  水平有効画素数:1920
  垂直走査線数:1125 (黎明期には1125iとも呼ばれていた)
  垂直有効ライン数:1080
  フレームレート:30fps
  pixelレート=HDMIクロック:74.25MHz (2200x1125x60=74250000)
  転送レート:742.5MHz
  帯域:2.2275Gbps

・720p(D4)
  水平pixel数:1650 (1080iと同じクロックとのことから逆算してみた)
  水平有効画素数:1280
  垂直走査線数:750 (黎明期には750pとも呼ばれていた)
  垂直有効ライン数:720
  フレームレート:60fps
  pixelレート=HDMIクロック:74.25MHz (1650x750x60=74250000)
  転送レート:742.5MHz
  帯域:2.2275Gbps

・1080p(D5)
  水平pixel数:2200
  水平有効画素数:1920
  垂直走査線数:1125
  垂直有効ライン数:1080
  フレームレート:60fps
  pixelレート=HDMIクロック:148.5MHz
  転送レート:1485MHz
  帯域:4.455Gbps

 以下の本田雅一氏の記事などから、720pと1080i(24pも)のリンク速度は同じで、1080pはその倍だそうなので。
http://av.watch.impress.co.jp/docs/20081216/avt035.htm

 以下技術情報には1080i/720pと1080pの具体的な数値が記載されています。
http://monoist.atmarkit.co.jp/feledev/articles/hdmi/01/hdmi01a.html

 1080i/pの水平pixel数は、ARIBのHDTV資料から判断しました。
http://www.arib.or.jp/english/html/overview/doc/2-BTA_S-001_C1_0.pdf

・480pのフレームレートが整数でないワケ
 480pだけフレームレートが整数になってないのはSD時代の白黒→カラー化の際の色信号追加に関わる調整結果だそうです(白黒時代はジャスト30fpsだった模様)。HD時代になっても(日本では?)その影響は残っていて、例えば“60fps”は実際に普及している59.94fpsを指すことがほとんどだそうな。

 HDMIクロックとしては1.001で割れば(480pは掛ければ)よいようです。
 PCの設定(モードの一覧)では「60ヘルツと59ヘルツ」「30ヘルツと29ヘルツ」といった選択肢があることから、60ヘルツは59.94ではなく60fps、30ヘルツは29.97ではなく30fpsを指すと理解しています。59ヘルツは59.94ヘルツのことと理解できます(29ヘルツは29.97ヘルツのこと)。

 実際、TVに接続すると「PCでは表示されるがそのTVでは非対応のモード(50pとか)」は選択肢に出てきませんし、逆に「60/30ヘルツの他に59/29ヘルツ」は出てきますので、「モード一覧」での設定は有効になっていると信じてよさそうです(つまり「60ヘルツ」は60ヘルツであって59.94ヘルツではない)。

・DeepColor
 DeepColorでは30/36/48bitまで拡張されますので、HDMIクロックはそれぞれ24bitの1.25倍、1.5倍、2倍となるようです。


■PCの色数

 ところで、PCの表示モードとHDMIモードとの関係はどうなってるのでしょう? 特に色数がどう対応しているのかが疑問です。だって、マジで32bitもあったら“DeepColor”の領域ですから…

・256色:8bit
 8bitは256色と表示されますが、Windowsシステム上では以下の通り16bitや32bitは色数ではなくbit数で表現されています。どうも複数の発色数があるようなので、敢えて色数ではなくbit数でモード表示してると推察します。

・16bit:HighColor
 2の16乗=65,536色。RGB各5bitの場合は半分。Gのみ6bitにすると16bitになるそうです。
 普通は65,536色と言われていることが多いと思いますので、おそらく後者が普及しているのではないでしょうか。

・32bit:TrueColor
 2の24乗=16,777,216色。いわゆる1677万色。残りの8bitは“その他”としてOption扱いみたいです。
 普通は1677万色と呼ばれるので、色数としては24bitと考えればよいのではないでしょうか。


 つまり、通常のPCの表示モードは「32bitカラーでも色数としての実態は24bitカラーであってDeepColorではない。8bitも16bitも含めて全部ノーマル24bitモード」なのでしょう。
 なので、256色(8bit)モードでも16bitモードでも32bitモードでもHDMIリンク速度は変わらない…はずです。
 が、その信号を作る内部処理が変わる…はず。
 が、全黒なら変わらない…かも?
 もしかすると、イマドキのPCのデータバス幅は32bitより広いので、32bitモードが一番PC内部処理がスムーズだから音によい、なんてこともあるかも知れません。

 以上より、PCの表示設定において色数は音質にあまり影響しないのではないか、と推察しています。実際試しても微妙なので、とりあえず32bitで行っちゃおうかと思っています。


■Audioクロック生成の謎

 Audio用クロックは受信側でHDMIクロックからPLLにて生成します。HDMIクロックはVideo系からきている周波数ですので、当然「ズバリ2倍」といった分周逓倍比にはなりません。
 その生成式は以下の通りのようです。

 サンプリングクロックx128=HDMIクロックxN/CTS

 「N」も「CTS(Cycle Time Stamp)」も送信側から送られてくるパラメータです。
 HDMIクロックを「N」倍して「CTS」分の一にすることで、サンプリング周波数の128倍のAudioクロックを生成するのが基本のようですね。

 さて、そのNとCTSの値を、hdmi_spec_1.3_gm1.pdfより抜粋してみます。

・27MHz時
  44.1x128=27000x6272/30000
  48x128 =27000x6144/27000

・74.25MHz時
  44.1x128=74250x6272/82500
  48x128 =74250x6144/74250

・148.5MHz時
  44.1x128=148500x6272/165000
  48x128 =148500x6144/148500

#x2やx4周波数時はN値がそれぞれ2倍、4倍となる。
#74.25MHzと148.5MHzの差はCTS値が1:2のみ。
#48x128=6144です。

 いずれも余りはナシです。ただし、これらは「推奨値(というか理想値?)」だそうで、実際には送信側の機器がこれ以外の数値を受信側に伝えていることもあるそうです。
 「割り切れないため、CTS値を変動させて調整するのでそれがジッタとなりHDMIは音質が悪くなる」っていう話がありますが、推奨値ではない場合のことでしょうか。しかし、あえて割り切れないパラメータを使う理由はよく解りませんが… もしかして、AudioとVideoはクロック非同期で、HDMIクロックから元もAudioクロックを生成するためのパラメータは“実測値”を送っているから? でも、ソースとしては同期していないといけないハズなので、非同期だとそれぞれの再生精度は上がりますがどこかで破綻しますよねぇ? 一方、もともと同期しているなら実測(カウント)する必要ないですし…

 上記資料に以下の文言があります。

If the clocks are asynchronous, or there is some amount of jitter between the two clocks, then the CTS value will typically alternate between two or three different values.
出典:「hdmi_spec_1.3_gm1.pdf」 P.100

「VideoとAudioのクロックが非同期の場合、またはいくらかのジッタがある場合、CTS値は2~3個の値で変動する」と言ってるようです。同期・非同期両方の想定あるようですね。しかし、CTS値が変動するほどのジッタを想定してるんですかね、HDMIって。

 しかし、こうして並べてみると、48kHz系はあまりにも当たり前の数式ですねぇ(笑)。Nが128fs、CTSがHDMIクロック周波数(kHz)ですから、1kHzに分周して128fsに逓倍するっていう式。
 44.1kHz系は0.9kHzを基準にすることになっているようなのでそのまんまじゃありませんけど。

 ちなみに、フレームレート60Hzに対して44.1kHzはキッチリ735倍の周波数(*)。48kHzは800倍です。x2やx4はそのままかけ算です。フレームレートが30Hzになったらやっぱりx2です。
 つまり、転送音声サンプル数も、フレーム単位で“余り”は出ないハズではないかと思っています。基本的には、ですが。29.97系は別ですけど。
 HDMIの転送システムってもっと複雑なのかも知れず、素人には難しくて何か間違ってる可能性も高いですが…

*:これは決して偶然ではなく、44.1kHzという数字はビデオレコーダ仕様から決まったためです。

 本件についてもっと詳しいRATOCさんの記事です。
http://blog.ratocsystems.com/pcaudio/2009/02/31-hdmiaudio-5c.html


■マジックナンバー「330」「495」

 色数は音質にあまり影響ないのではないか、とすると、残るはいわゆる「リンク速度=HDMIクロック」のどれが音にいいかです。
 リンク速度は上記の通り3通りありますが、480pはマルチチャンネルが通らない(ウチのシステムだとステレオハイレゾも通らない)のでパスすると、1080i/720pか1080pのどちらかが選択肢となります。クロックは後者が前者のちょうど2倍の関係です。
 「リンク速度は遅い方が音にはいい」というのが従来の定説です。が、どうもPCによるHDMI-Audioではズハリ当てはまらないような気がしていました。

 で、ふと思いついたのが“PLL”。

 HDMIクロックはGfx動作クロックとシンクロして生成されているのではないか?
 であれば、Gfx動作クロックとHDMIクロックができるだけ整数倍になった方がPLL動作が健やかになり、キレイなHDMIクロックが生成されるのではないか?


 HDMIはS/PDIFと異なりエンベデッドクロックではなく、データとは物理的に独立したクロック信号線を持っています。受信側はそのクロックからまたPLLでAudio用クロックを再生成するのですが、エンベデッドクロックを分離するプロセスがない分だけ再生成の品質は高そうです。HDMI-Audioの(理屈上の)優位点のひとつかと思っています。
 いずれにしろ、送信側のHDMIクロックがキレイなほど、そこから生成させるAudioクロックにも好影響を与えると思えます。

 GA-E350NはGfxクロックを300~2000MHzの範囲で1MHz単位で設定できます(ただしE-350の定格は500MHzらしい)。
 そこで、HDMIクロックの10倍を素因数分解してみました。どうせGfx内部処理では必要であろうデータクロックはHDMIクロックの10倍なので。
 まずは最高周波数の1080pモード:1485MHzの方をいじります(1080iはその1/2なので)。
 すると1485=11x5x3x3x3。これを参考に300~500の中で一番低い周波数を捜します。
 結果、「495x3」が見つかりました。整数倍にはなりませんが「330x4.5」も候補とします。
 ホントは「297x5」が低クロックなのですが、残念ながらGA-E350Nでは設定できません。297MHzが設定できるなら、ベースクロックを100MHz→99MHzにしてその3倍、CPUクロックはその16倍、ついでにメモリクロックは4倍、だと整数倍でキレイに揃うんですけどね(それが音質にいいはどうかはさておき)。
 なお、設定可能性をさておけば「165x9」「135x11」「99x15」なんてのもありますね。

 早速1080p/32bitモードにて試してみると…明らかに変わりました。
 設定下限の300MHzよりも330MHzの方がいいです。
 そして495MHzですが、明らかに違う音になります。善し悪しは別として(苦笑)。プラシーボじゃないと思いますねぇ。いずれにしろ、無為に設定するよりは面白いかと。
 シャキっと元気なカンジの330MHz、非常に繊細なまったりしたカンジの495MHzってところでしょうか。ハイレゾっぽい495MHzで行こうかと。

 音の変化要因がHDMIクロックとGfx動作クロックの逓倍率の影響なのか否かを検証する術を持ちませんので断定はできませんが、これは発見…かも?

 いずれにしろ、HDMIクロックの生成に影響するであろうパラメータまでいじって遊べるところが、PCを使ったAVの面白みのひとつとは言えましょう。

 なお、SandyBridge系の低消費電力機能ではCPUコアと内蔵Gfxコアを連動させてクロックコントロールしていますので、おそらくこの技は使えないかと思います。
 E-350はクロック変動させているという情報は得ていませんが、正確には判りません。12/09/02追記:無負荷状態で「VISION Control Center」のハードウェア情報を見ると495MHzになっていましたけれど。


■備忘録

・DSP-Z7のHDMI端子、一番上のDVRがシャッキリ系。2番目のCBS/SATがまるみ系。3番目のDVDは2番とニアリー。4番目のBDはDVRと似てるけどやや悪い?
 こちらも、DVRはやや高域が割れ気味になるので2番3番が「正しい」のかも知れませんが…

・SH-1010とSilverStarLight、当システムではやっぱり前者が中域よりのまるみ系、後者が高域よりのシャッキリ系のようです。

・12/09/02追記:ソフトウェアからクロック設定できるかGA-E350Nで試してみました。
 「VISION Control Center(12年08月版)」では、おそらく機能がないためであろう「AMD Over Drive」項目非表示のため複数クロック選択できません。プリセット用ファイルは生成されますがクロックを記述するところはなさそうです。
 「ATI Tray Tools v1.7.9.1573」は、起動するとシステム再起動になってしまいます。ソフトウェアでBIOSを読む? オプションをチェックしてインストールすると、再起動はしませんが「BIOS読めない」で終わってしまいました。


メインメニューへ
スポンサーサイト

テーマ : オーディオ
ジャンル : 趣味・実用

最新記事
ERIへようこそ

Author:らかせ
「最新記事」または
「メインメニュー」からどうぞ

・ファイルへの直接リンク以外はリンクフリー(連絡不要)です

・一応、拍手にコメント(非公開)付けられるようにしてあります

・DB的に利用しており、過去記事もガシガシ書き換えています。特に「最新記事」は初稿から一週間くらいは直してることが多く、大幅に変わっちゃうことも。ご了承ください

・ということもありますし、記すまでもないですが無断転載(ファイル含む)はご遠慮ください

・引用の考え方については「007:諸事」をご参照ください

・アフィリエイトはAmazonのみです

・ハイパーリンクは当Blog記事のみです(054:節電記事のみ例外)

カテゴリ
検索フォーム
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。