マイコン工作実験日記

Microcontroller を用いての工作、実験記録

W-SIMのPCM信号について

2010-08-17 22:59:38 | W-SIM
W-SIMの信号については、そのピン番号と信号名がWCMのページで公開されています。おそらく通信関係の知識をおもちの方であれば、これらの名前をみるだけでおおよその意味が理解できると思われます。しかしながら、通信関係の知識が無いと、特に音声関連の信号にはなじみが無いと思われます。そこで、今回の記事ではW-SIMを使うための、各ピンの扱いについて簡単に説明してみたいと思います。


まず、誰にでも理解できるのがVcc とGNDです。わたしは、Vcc = 3.3Vで使っていますが、仕様としては5Vまでの電圧で使えるようです。

TXD, RXD, RTS, CTSの4本は、RS232Cを知っている方ならご存知のとおりのシリアル通信制御用の信号です。W-SIMの信号名はホスト側から見た信号に合わせてつけられていますので、それぞれの信号をマイコン側の同じ名前の端子に直結すれば通信できます。例えば、W-SIMのTXD信号(1番ピン)は、マイコン側のUART(あるいはUSART)の送信端子につないでやります。すなわち、TXD信号は入力信号であることに注意してください。他の端子も同様です。

DTR, DCD, RIはちょっとなじみが薄いかもしれませんが、モデム制御用の信号です。マイコン側のUARTがモデム制御信号の端子を持っていれば、それらと直結してやることができます。マイコンにモデム制御機能がなければ、DTRをLにしてやれば、DCD, RIは未接続でもW-SIMを動かしてやることはできます。INS信号は、W-SIM側に電源が入っており、選択されていることを示す信号のようです。モデム制御信号のDSRと同じように扱えるようです。IF_SEL信号は、複数のW-SIMがある場合の選択信号のようなものではないかと想像しています。Lレベルにしてやる必要があります。

と、まぁ、ここまではマイコンを使っている人なら、ほとんどの人が何の問題もなく理解できるところだと思います。わかりにくいのは、音声PCM信号用の4つの信号の意味でしょう。PCMについては、音声や音楽のデジタル化の基本技術ですので、多くの方がご存じだと思うので、基礎的な説明はここでは省略します。電話用途では、人間の音声の帯域が4000Hzを上限として充分に表現できることから、8000Hzでサンプリングするのが標準となっています。国内のISDNあるいはひかり電話のようなデジタル回線上では、さらにサンプリングされた値を対数圧縮した、u-Law符号を用いて1サンプルを8ビットで表現しています。この結果、8 x 8000 = 64Kbpsの帯域で音声を送ることができます。この規格については国際標準であるG.711で定められていますので、もうちょっと勉強したい方はこちらを参照してください。

W-SIMでも上記のように8000Hzでサンプリングした8ビットu-Law符号によって音声データを表現しており、PCM信号の4つの端子を使ってその送受をおこないます。それぞれの信号は次のような意味となります。それぞれの内容の項が示すように、信号は適切なCODECを選択すれば、CODEC側の信号と直接接続することができるようになっています。
信号名内容意味
PCMCLKPCM CODECクロックコーデックに供給するデータシフトクロック
PCMSYNCPCM CODEC同期信号CODECに供給する8000Hzのフレーム同期信号
PCMINPCM CODECデータ入力CODECのデータ入力端子に与える回線からの音声データ信号
PCMOUTPCM CODECデータ出力CODECのデータ出力端子から受け取り、回線へ出力する音声データ信号


CODECというのは、Coder/Decoderのふたつの言葉からなる合成語で、簡単なはなしがA/DとD/Aが一緒になった音声信号用のチップのことです。PCM信号のようなデジタル信号がつながった端子と、マイク/スピーカがつながったアナログ側端子の信号とを相互に変換してくれます。W-SIMを直接接続できる適切なコーデックを選択するための条件は次のようになります。
  • W-SIMからのPCM信号はロング・フレーム形式となっているので、このフレーム形式をサポートしていること。
  • W-SIMはPCMデータをu-Lawで送受するので、u-Law圧縮をサポートしていること。
  • PCMCLKとして384KHzをサポートできること。
  • CODECの動作に必要なクロックは、PCMCLKと非同期なクロックが利用できること。

W-SIMからのPCMデータはPCMCLKに同期して送られてきますが、PCMCLKは経験的に384KHzになっているようです。PCMCLKが384KHzであるのに対し、実際の音声データは64bps分しか使用しませんので、PCMOUT/PCMIN信号の有効部分の始まりを示すための情報が必要となり、そのための信号がPCMSYNCです。PCMSYNCはPCMCLKと同期しており、8000Hzでサンプリングされた音声データの位置を示すことから、その周波数も8000Hzとなります。PCM信号にはPCMSYNCとPCMOUT/PCMINの位置関係によっていくつかの種類がありますが、次に示すショート・フレーム同期とロング・フレーム同期が代表的な同期フォーマットであり、わたしの使っている青耳のW-SIMではロング・フレーム同期が使われています。ひょっとすると、機種によってはATコマンドによってフォーマットを選択することが可能なのかもしれませんが、未確認です。

ロング・フレーム同期


ショート・フレーム同期


ショート・フレーム同期ではフレーム同期信号(SYNC)の長さは1クロック分なのですが、ロング・フレーム同期ではデバイスによって異なっていたり、設定可能になっていたりするようです。どちらのフォーマットでも、1秒間に8000サンプルが送受されることに変わりはありません。受信の場合を例にとれば、受信できた8ビットのデータはu-Law圧縮されているので、まずこれを伸長してからD/A変換することでアナログ音声信号に変換することができます。CODECチップは、この処理をおこなってくれるわけです。

最新の画像もっと見る

6 コメント

コメント日が  古い順  |   新しい順
Unknown (通りすがり)
2010-08-19 21:58:16
IF_SELは、インターフェースの規格の切替信号だと思われます。
RX420IN(青耳)とRX430AL(黒耳)にしか実装されていないのですが、おそらくHレベルにするとIFがUSB仕様になります。これを利用しているのが、データ通信ジャケットNS001Uです。
ちなみにその他のW-SIMでもUSB仕様には切り替わりますが、USBのベンダIDやプロダクトIDが未設定であるため事実上動作しません。
返信する
Re: Unknown (sirius506)
2010-08-19 23:25:06
コメントありがとうございます。

そうだったのですか。知りませんでした。それではちょっと調べてみれば、どの端子がDPで、どれがDMかくらいはわかりそうですね。やってみようかな。

USBではデータ通信はできても、音声通話はできないんでしょうかね?
返信する
Unknown (通りすがり)
2010-08-20 17:19:32
USBのエンドポイントが複数(インタラプト×1・バルク×2)あるようなので、音声も流し込めるかもしれません。
http://d.hatena.ne.jp/goriponsoft/20091221/1261376172
返信する
Re: Unknown (sirius506)
2010-08-20 21:39:24
これは典型的な仮想COMポートだけの構成のようですね。入力と出力で2つのバルクを使い、状態変化通知にインタラプトを使います。USBのCDCで呼制御はおこなえても、音声についてはUSBでは流すことはできず、PCM信号端子を使うのではないでしょうか。つまり、USBだけでは音声は扱えないことになります。

おもしろいことに、idVendorはProlific(0x11F6)のままになっていますね。
返信する
Re: Unknown (sirius506)
2010-08-20 21:47:47
>おもしろいことに、idVendorはProlific(0x11F6)のままになっていますね。

間違ってました。Prolificは10進数で1659で登録されていました。0x11F6は現在有効なベンダリストである usb.if には登録されていませんでしたが、おそらくNetindexでVendor番号取得しているのでしょう。
返信する
Unknown (通りすがり)
2010-08-22 08:22:43
>これは典型的な仮想COMポートだけの構成のようですね。
なるほど。ソフト屋の私には分からんネタですね。

まあ、この情報が何かのお役に立てば。
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。