#30 HDMIのAudio伝送について その4

2 comments

Posted on 8th 1月 2009 by admin in ものつくりの現場から

 本blogをお読みいただいている皆さん、あけましておめでとうございます。本blogも2月で3年目を迎えることになります。いろいろとものを実際につくりながら、測定して実験して試聴を行い、またつくりなおして….という試行錯誤を繰り返しながら記事を書いていますので遅々として進みませんが本年もよろしくお願いいたします。

3. Audio信号はどのようなフォーマットで送られるのか。

 HDMIのAudio信号はS/PDIFと同じようなIEC60958/61937に準拠したパケットの形で伝送されているということは、これまでも何度かお話いたしました。図-30-1は実際にHDMIのライン上で伝送されているAudio Sample Packetのフォーマットです。

Fig_30_1_7_3
図-30-1 Audio Sample Packetの構造

後ほど説明しますが、Data island(データアイランド)区間内に伝送されるいろんなデータパケットは同じフォーマットをしており、HB0からHB2までの3バイト(1バイトはb7..b0の8bitです)のパケットヘッダによって区別できるようになっています。
 パケットヘッダ情報とパケットの種類(Packet Type)については表-30-1を参照してください。

Table_30_1_2
表-30-1 HB0内のPacket Typeの値とその意味

図-30-1ではPacket Typeが0x02(binaryで’0000 0010’)ですので、リニアPCMもしくはDolby 5.1などのAudioデータを格納したAudio Sample Packetであることがわかります。Audio Sample packetであってもDSD(SACDの1bit Audio)信号や、DTS HD Master Audio,Dolby True HDなどのHD Audio信号などのAudio Sample Dataを含む場合はPacket Typeの値がそれぞれ異なります。しかし、基本的なフォーマットは同じです。

 HB0に続く、HB1,HB2は各パケット固有のフォーマットが決められており、Audio Sample Data Packetの場合は図-30-1のように決められています。HB1では上位3bit(b7..b5)は’0’固定、b4のオレンジ色の’L’というbitはPacket Layoutを示します。1bitだけですので’0’か’1’のどちらかですが、パケット内のAudio信号のチャンネル数を示します。’0’の場合はAudio Sample dataが2ch(Stereo)であることを示します。Sub Packetひとつでひと組のデータを表現できますので、ひとつのパケットに含まれるAudio Sample Data数は最大で4組(Sub packet 0から3まで)です。何組のデータを含んでいるかどうかということはHB1の下位4bitで表現されます。
 Packet Layout bitが’1’の場合はAudio Dataが8chであることを示し、Sub Packet#0がFront L,R、Sub packet#1のCh.1がCenter、Ch.2がSub Woofer、Sub Packet#2のCh.1,2がリアのL,R、Sub Packet#3のCh.1,2がサラウンド(リスナーの左右の横)のL,Rというように割り当てられています。この場合はひとつのパケットにはひと組のサンプリングデータしか収容できません。

 HB1の下位4bit(b3..b0)は4個のSub packetそれぞれの使用、未使用を示し、’1’なら使用、’0’なら未使用です。たとえばL-PCM 5.1ch.の場合はLayoutが’1’= 8chですが、HB1の下位4bitを’0111’(0x7)とSetすることによって、Sub Packet 3を未使用ということにし、Sub Packet 3内部のデータを無視するようにSink側に伝えることができます。同様にPacket Layout bitが’0’(2ch.Stereo)でHB1の下位bitが’0011’(0x3)の場合はSub Packet 0,1に有効なデータが含まれているが、Sub Packet 2,3には有効なデータが含まれていないことを示します。

 HB2の上位4bitは対応するSub PacketがS/PDIFなどと同じIEC60958の1ブロックすなわち192フレームの先頭フレーム(Frame#0)に相当する場合に’1’がセットされます。その他の場合は’0’がセットされています。以前に本Blogで説明したように、S/PDIFなどでは各フレームを構成するサブフレームにはプリアンブルと呼ばれるヘッダ部があり、先頭フレーム(Frame#0のLch. Sub Frame)のプリアンブルは’B’、その他のSub Frameの先頭は’M’(L ch.)または’W’(R ch.)と決められていました。HDMIのAudio Sample Dataにはサンプリングされたデータごとにこのようなプリアンブルはありませんので、HB2の上位4bitをかわりに使用しています。なぜ、192フレームごとに、区切らなければならないのかというとHDMIのAudio Sample DataにもS/PDIFなどと同様なChannnel Status bitがくっついているためです。このChannel Status bitのフォーマットや意味は同じですので、過去の本Blogを参照してください。

 HB2の下位4bitは対応するSub Packet内のデータが有効な場合(HB1の対応する下位4bitが’1’にセットされている場合)、そのデータが’flat line’かどうかを示します。Audio信号は交流ですので無信号時(音がなにもしない)はオシロスコープ上では横1直線の’flat line’となります。しかし、それに対応するSub Packet内部のデータは0x000000(24bit)となっているわけではありません。これらの各bitはL-PCM 5.1ch.の場合にSub packet 3を有効にして(HB1のbit3を’1’にセット)、HB2のbit3を’1’にセットすることにより、L,R,サラウンドのスピーカーからの音を止めるような場合に使用することができます。実際のHDMI伝送ではSink(受信側の機器)がHDMIから2画面続けてAudio Sample Packetが来ないということを検出すると相手機器(Source)がHDMI機器ではなく、DVI機器であると解釈してHDMIモードを解除し、DVIモード(RGB 24bit)に自分自身を切り替えてしまいます。HDMI Source側がそれを知らずにYCbCrで映像データを送ると、画面が緑一色になってしまったりするというトラブルが発生します。そうならないように、HDMI Sourceは音声なしの無声映画・映像であってもデータ・アイランド区間内で無音Packetや、General Control Packet,Null Packetなどを定期的に送信し続けなければなりません。HB2の下位bitはこのような目的で無音Packetをつくるために使用されます。

 Sub packetの詳細も図-30-1を参照してください。各Ch.(L,R)のサンプリングデータはI2SやS/PDIFなどと同様それぞれ24bit長です。各Ch. 3バイト長(8bit x 3)のデータ2個の最後部には各Ch.あたり4bit(計1Byte)のStatus bitがあります。各bitの意味は過去の本Blog(S/PDIF編)を参照してください。

 1920x1080p@60HzでBRのHD映像を再生している場合、音声が16bit/48kHzとすると、L-PCMのMulti Channelでは1mSあたりサンプリングデータが48組なので1画面 16.6mS(60Hz)の間に796組か797組(48×16.6)のAudio Sample packetをHDMI Sinkに対して送信しなければなりません。しかも、水平帰線区間を縫って伝送しなければならないので、S/PDIFのようにリアルタイム(サンプリングクロックに同期させて、1mSの間にL,Rを48組)でノンキに送っているわけにはゆきません。

 次回か次々回はそのための工夫について説明します。その間にCES2009で見つけたものの報告が割り込むかも知れません。