ラベル モデム の投稿を表示しています。 すべての投稿を表示
ラベル モデム の投稿を表示しています。 すべての投稿を表示

2009年2月21日土曜日

マイコンで復調

FSKの場合、周波数が高いか低いかが分かれば良いので、FFTを使うのも方法の1つだが、演算量が多い。受信は送信と異なり、常に動作していなくてはならないため、あまり複雑だと消費電力が多くなってしまう。そこで、外部に簡単な回路を設け、そこで電気的に相関の演算を行ってもらうことにする。

PSoCのアプリケーションノートAN2336「Simplified FSK Detector」では、FSK変調のかけられた信号をデジタル信号にした後、基準となるクロックとのXORをとり、これをLPFで平滑化することで相関を得る「correlator」の回路について書かれている。

マイコン外部にXORを用意し、マイコンからはクロックを、音声入力からは変調波を入力することで同じことが行える。あとはcorrelatorの出力を定期的にA/D変換し、その値を閾値と比較して'0'と'1'を判断する。

LPFはビットレートで定数が決まるはずなので、correlatorはキャリア検出のみに使用し、実際の処理は全てデジタルで行うべきかもしれない。

2009年2月15日日曜日

マイコンでPAD兼モデム

PSoCでモデムを作ろうとしたが、むしろマイコンでやった方が部品点数を減らせることに気づく。消費電力はそれなりになるが、モデムを使ったとしてもマイコンを使うことになるのだから、マイコンのみでできた方が楽だと考えられる。 そこでマイコンでモデムをどう実現するかについて考えた。

送信

変調方式によらず、モデムの出力波形(サブキャリア変調)は無線に乗せられるので、高調波を含まない滑らかなものが出力できることが求められる。そのためには、DACを充分なサンプリングレートで周期的に動作させることが必要となる。 出力波形はテーブルとして用意することができる。FSKは正弦波のテーブルを1つ、GMSKはビットパターンに応じた波形をいくつか用意する。シンボル切替のタイミングにおいて、FSKは移送が揃うことはないが、GMSK(MSK)は位相が揃うよう工夫されている。そのため、FSKは波形テーブルの位相を進める間隔を操作することで周波数偏移を与えることができる。一方GMSKは位相が揃っていることから、前後のビットから考えられる波形は数パターンしか存在しない。そのため、パターン分のテーブルさえ用意すれば、それを等間隔に出力するだけで変調波が生成できる。 変調波を正しく出力するためには、帯域の2倍以上でDACのサンプリングを行う必要がある。これには数kHzから数十kHz程度のサンプリングレートが必要となる。これはCPUでポーリングするには遅く、割り込みするには速いため、CPUをほとんど介さずに波形出力を行う方法が必要となる。そこで、波形の出力にはタイマー、DAC、DMAを連動させる方法をとることにした。この方法では、タイマーの作る割り込み信号に合わせて、DMAとDACがそれぞれ動作を行うことが必要となる。

モデムの役割とPAD

GMSKモデム作りを考えていた際、モデムは8bitデータを出力するものだと思い込んでいた。しかしモデムの段階でプリアンブルやデータ開始を判定するのは、プロトコルの仕様をモデムが決めてしまうことになるため、おかしいと思っていた。実際のモデムの受信動作は、クロック同期とデータ取得を行い、クロックとデータ信号をセットで出力するというものであった。 モデムから/へのパルスを入力/出力し、パケットを取り出す/出力するコンポーネントを、PAD(Packet Assembler Disassembler)と呼ぶらしい。パケットは第三層のPDU(Protocol Data Unit)で、フレームは第二層のPDUということらしい(日経BP)。 SRLLの解説ページを見た感じでは、確かに第三層のデータを入力し、二層でデータを付け加えてから送り出している。

PSoCとGMSK/FSK

PSoCでCanSAT用のモデムを作ろうと考えていたが、GMSKはさすがに難しそうだ。ガウシアンフィルタを3次Salen-Keyを2つつなげて作るにしても、外付け部品が多くなりすぎる。もしGMSK9600bpsを求められたら、CMX589(RSで3000円)を使用した方がはるかに合理的と分かった。 一方FSK1200bpsで良い場合、FX614と水晶発振子の入手製の悪さ、PSoCでのFSKモデムの実現性を比べると、PSoCも充分競合できそうである。(PSoCはレジスタで回路構成を変えるため、ビット反転を検出、復旧する仕組みがないと、CanSATの審査で困るかもしれない)

2009年2月12日木曜日

MSKについて

最小の周波数偏移のFSK

2値FSKでは、1シンボルに対して2つの周波数を割り当てる。この周波数の差は大きいほど弁別しやすいが、占有帯域は広がる。最小の周波数偏移は、ビット時間において2つの周波数が直交するという条件から求める。 (1)を零にする必要があるので、信号の積を取ったらLPFで遮断することが必要となる(実は積分回路自体がLPF)。このときの偏移から変調指数を求めると、以下のようになる。 よく「変調指数(modulation index)が0.5であること」がMSKの定義のように書かれている気がするが、これは結果であって、偏移が最小になる理由ではない。

サブキャリアの最小の周波数

モデムのようにサブキャリアを使う場合は、サブキャリアの周波数も最小化できる。GMSK 9600bpsの場合はサブキャリアも最小化されているようで、周波数は9600~14400Hzの間で変化する。 パルスが正しく変調できる最小の周波数は、幅T[s]のパルスの帯域を求めることで計算できる。 帯域は無限になるが、一番大きなローブだけを送るとすると帯域は1/T [Hz]となる。これを正しく変調するには、最低でも1/T [Hz]が必要となる。これが最小の周波数である。GMSKではこの最小の周波数9600Hzを下限とし、最小の偏移4800Hzを加えた14400Hzを上限としている。