質問:
シンボルレート(ボーレート)の見積もり
Isaac
2011-02-17 20:11:55 UTC
view on stackexchange narkive permalink

ベースバンド信号のシンボルレートを検出できるアルゴリズムを探しています。

ガードナー法は、タイミングドリフトをキャンセルする方法であり、シンボルレート(シンボルあたりのサンプル数)がわかっている場合は、受信側を送信側に同期します。 MATLABは、ガードナーメソッドを実装するパッケージも提供します。

しかし、シンボルレートがわからない場合はどうなりますか?信号の周期定常プロパティを使用するようないくつかの提案された方法を見つけました。

MATLABまたはCシンボルレート推定にこれらの方法(または他の方法)のパッケージ/実装はありますか?


更新#1:

これは周期定常特性を使用してボーレートを推定する単純な実装ですが、ウェーブファイルのような大きな入力には適していません。


更新#2:

受信信号を復調およびフィルタリングした後、ベースバンド信号があります。 like:enter image description here

シンボルは、この信号でさまざまな形状としてエンコードされます(たとえば、送信側が正方形の形状のフィルターを使用している場合は、さまざまなレベルの電圧)。ご覧のとおり、この信号の最高周波数はシンボルレートではありません。

シンボルレートを推定するための新しいソリューション/アイデアを探していません。シンボルレート推定のための既知の方法(周期定常ベースまたはウェーブレットベースの方法など)の実装を探しています。

ベースバンドでの信号はどのように見えますか?方形波ですか?
ベースバンド信号です。レイズドコサインフィルターでフィルター処理されます。また、白色ガウスノイズがあります。
私には厄介に聞こえます。どのタイプのシステムがこれを使用していますか?
注意として、私はこれを通して同僚と話し合っています。少なくとも教えられたことを覚えているという理論から、正方形以外の形を使用してもメリットはないと考えました。
どのような変調が使用されていますか?BTW:一般的に、ベースバンド信号はミキサーによってダウンカバーされていると思いましたが、まだ復調されていません。これは事実ですか?
無線通信システムからの信号です。正方形の信号を使用すると、シンボルの誤検出の可能性が最小限に抑えられますが、正方形の形状を送信するには広い帯域幅が必要です。レイズドコサイン形状は、帯域幅とシンボル検出の間の適切なトレードオフを提供します。信号はBPSK、QPSKなどで変調されます。特定の信号はすでに復調されているため、変調はシンボルレート検出に直接影響しません。
@mazurnification:これは、実際には復調されたベースバンド信号の位相のプロットです。
各シンボルがどのように見えるかの例はありますか?私はそのようなものが何にデコードされるかを見るのに苦労しています。
私はあなたがあなたのデータ収集システムのどこかで溢れ、包んでいることをほぼ確信しています。フィルタを詳しく調べて、トポロジを変更する必要があると思います。
それで、あなたの説明を少し要約させてください...基本的にあなたはバイナリからクロックレート回復を行おうとしています(または[PAM](http://en.wikipedia.org/wiki/のようにもっと重くエンコードされていますか? Pulse_amplitude_modulation))ビットストリーム。固定機能(ストップビットなど)がありません。シュミットトリガーでフィルター処理してから、結果のエッジをfftする必要があるようです。
@FakeName:位相カウンターがラップしている可能性がありますが、Y軸が円の周りにラップされていると想像してください。0とMAXは同じ値です。たとえば、2の補数の符号付き整数で連続するサンプル間の差をとっている場合は、機能します。
@Joe-可能性はありますが、より連続的に見える波形を見ることができれば、何かを目で見て、ボーレートを見つけるための発見的アルゴリズムを考えることができるかもしれません。大きな言葉がたくさんあった男。
@Fake Name:実際、私はそのような信号にアクセスできます。送信側または受信の復調ユニットのプロパティを変更できません。私たちが持っているのは、この信号のサンプルを含むバイナリファイルだけです。
@FakeName:ほぼはい。バイナリまたはPAMでエンコードされた信号から「シンボルクロックリカバリ」を実行しています。この信号にはヒント(ストップビットなど)はありません。受信機は2つの問題に直面しています:*シンボルレート推定*と*シンボルタイミング同期*。前者の解決策を探しています。
@AngryEE:この問題に対して適切なヒューリスティックが提案されれば、私は本当に嬉しいです。しかし、この問題はアカデミックで議論されており、いくつかの方法があると思います(質問で引用した周期定常論文を見てください)。私はこれらの種類のメソッドの実装を探しています
したがって、システムはPAMベースです。わかりました。ノイズが多いか、振幅レベルが大きい場合を除いて、クロックリカバリがそれほど難しい理由はわかりません。基本的に、サンプルポイントのいずれも中間状態にないものに到達するまで、降順でボーレートを繰り返し試行します。データレートを推定しようとしているだけなので、何度もサンプリングして平均を下げると、かなり正確な結果が得られるはずです。
シンボルレートについての知識がない理由について、いくつかの情報を提供できますか?私はコミュニケーションを想像するのに苦労しています。受信者がシンボルレートについて無知であるシステム。見積もりすらありませんか?
6 答え:
davidcary
2011-02-18 10:01:35 UTC
view on stackexchange narkive permalink

復調器はすでにボーレートを知っている可能性があります

多くのワイヤレス通信プロトコルは、symbol_timeをチップ時間またはキャリアサイクル時間の既知の整数倍に設定します。信号を復調できる場合、復調器はすでにチップ時間またはキャリアサイクル時間を知っている必要があります。おそらく、その時間情報を取得し、それを「既知の整数」で乗算して、symbol_timeを取得できます。次に、「単に」位相調整を行う必要があります。その時間情報を復調器から引き出す方法はありますか?

FFT

シンボルレートは帯域幅とほぼ同じです(-10 dBの帯域幅はQPSKのシンボルレートの1.19倍であると聞きましたが、これはすべての信号コンスタレーションに当てはまりますか?)

SNRが十分に高い場合は、信号をFFTに通して、帯域幅を見積もることができます。これは、手元にあるほぼすべての形式(生の(「実際の」)変調信号、または復調された(「複雑な」I、Q)ベースバンド信号)で機能すると思います。 、または私だけ、またはQだけ-しかし、上記の「更新#2」プロットからFFTに位相データをフィードした場合は機能しないと思います。

通常、人間がグラフ上で-3dB帯域幅を視覚的に選択します.-3dB帯域幅を推定するためのMatlab関数はありますか?

純粋なホワイトノイズが入ってくる場合(SNRが悪すぎる) -3dBの「帯域幅」は、実際のボーレートとは明らかに関係ありません。ただし、復調器で使用されるフィルターに完全に依存します。

自己相関

Matlab autocorr()またはxcorr()を使用して関数の自己相関を見つけることができます。 )関数。

その自己相関をボーレートの推定値に変換するには、少なくとも3つの方法があります。

  • ほぼ無相関のデータビットでは、正確に1 symbol_time以上のオフセット時間での自己相関はほぼゼロになり、0.0〜1.0ビット時間の短いオフセット時間での正規化された自己相関はほぼ線形になります。1-(time / symbol_time)。これらの短いオフセット時間に直線を当てはめて、非整数オフセット時間での自己相関の適切な推定値を取得し、その当てはめられた線に沿って約1/2の推定自己相関を与えるオフセット時間t_halfを見つけます。シンボル時間は、約symbol_timeです。 〜= 2 * t_half。
  • バースト送信中、一部の送信機は10ビットごとに開始シンボルを作成します。自己相関関数には、いつものように、オフセット時間0に1つのピークがあります。その最初のピークをスキップして、自己相関関数で次に大きい正のピーク(予想される振幅が約1/10)を与える正の時間t_positiveを検索します。シンボル時間は、symbol_time〜 = t_positive / 10です。
  • 一部の送信機は、すべての開始シンボルの後に正確に9ビット時間停止シンボルを使用し、停止シンボルに開始シンボルの負の振幅を与えます。自己相関関数で最大の負のピークを与えるオフセット時間t_negativeを検索します(予想される振幅は約1/10)。シンボル時間は約symbol_time〜 = t_negative / 9です。

自己相関近似

他の多くの手法では、自己相関関数の計算が速い近似を使用します。特に、オフセット時間が10を超える場合の自己相関振幅を計算する意味はありません。 bit_times。

特に、1つの時間オフセットHでのみ自己相関関数を計算してみましょう。信号をある時間Hだけ遅延させ、遅延信号に元の(遅延されていない)信号を掛けて、いくつかを使用します。完全または漏れのあるインテグレータは、長期平均を取得します。 (ほとんどのFMおよびPSK受信機のように、入力信号がすでに+1 -1の範囲にクリップされている場合、その長期平均はすでに正規化されています。それ以外の場合は、信号の2乗の平均で正規化するため、長期期間平均は-1から+1の範囲であることが保証されています。

次に、Hを微調整して、正規化された長期平均が正確に1/2になるようにします。時間オフセットHを短くします。正規化された長期平均が1/2未満の場合。正規化された長期平均が1/2を超える場合は、Hを長くします。

その場合、シンボル時間は約symbol_time〜 = 2 * Hです。

その他の手法

ウィキブックスの「時計とデータの回復」は、まだ大まかなドラフトですが、有望に聞こえます。更新して、どのアプローチが最適かを教えていただけますか?

多くの受信機が Costasループまたはその他の比較的単純なキャリアリカバリボーレートを検出する手法。

コミュニケーションハンドブックには、「アーリーレイトゲートシンクロナイザー」と記載されています。このようなものを使用できますか?

詳細​​ strong>

多くの無線通信プロトコルは、信号に多くの「冗長」機能を追加して、受信機がノイズにもかかわらず信号をロックしてデコードしやすくします。 -スタートビット、ストップビット、トレリス変調、エラー検出および訂正ビット、定数プレリュードおよびヘッダービットなど。

おそらく、信号には、作業を容易にするこれらの機能が1つ以上含まれていますか?

ありがとう。ノイズがスペクトル領域で高周波を生成するため、 `FFT`についてはよくわかりません。自己相関は、この問題の正しい解決策になります。 *バースト送信*および**ストップビット** / **ストップシンボル**はありません。 *自己相関*セクションで提案した最初のオプションは、信号のいわゆる周期定常特性です。質問で引用された論文に基づくと、送信者が小さなロールオフ(a <0.3)のレイズドコサイン形状フィルターを使用する場合、この方法は堅牢ではありません。この論文は、改善された方法を提案しています。そのメソッドの実装を見つけられるといいのですが。
FFT:はい、ノイズは高周波数と低周波数で多数のスプリアスピークを作成しますが、運が良ければ、SNR比は十分に優れているため、これらのピークはすべてピークレベルより-3dB低くなり、無視できます。 FFTを実行し、すべてのビンのピーク振幅の半分のカットレベルを選択し、カットレベルより低い振幅ですべてのFFTビンをゼロにし、残っている(できれば連続した)非ゼロビンの数を数えます。適度な量のホワイトノイズがあると、高周波数と低周波数をカットレベルより上に押し上げるのに十分なノイズがないため、それらはゼロにされて無視されます
gallamine
2011-03-24 03:22:41 UTC
view on stackexchange narkive permalink

シンボルの形状が方形パルスであることがわかっている場合は、これが周波数領域での同期関数になることがわかります。信号のFFTを取得し、データの最初のローブの幅(またはベースバンドのローブの2倍)を測定すると、それがシンボルレートになります。

アーリーレイトゲートシンボルシンクロナイザーは簡単に実装できますが、最初に整合フィルターを介してデータを実行する必要があります。これには、少なくともシンボルレートの推定値が必要です。

AngryEE
2011-02-17 20:34:25 UTC
view on stackexchange narkive permalink

ここではさまざまな目的で話しているかもしれませんが、UARTの自動ボーレート検出はマイクロコントローラーの分野で行われていることであり、高度なアルゴリズムは必要ないようです。もちろん、標準の8-N-1シリアル接続には1つのSTARTビットが必要です。そのため、それを見つけて時間を設定できれば(特に、115200、38400などの特定の許容ボーレートしかないことを考慮すると)。

ここにAVRのシリアルラインで自動ボーレートを実行するためのCコードがあります(また、アルゴリズムの簡単な説明もあります): http://mycal.net/?cpath=/Archive/&id= 569&action = 9

しかし、これよりも一般的なものを探していると思いますか?

はい。標準のシリアルポートだけでなく、一般的な受信信号のシンボルレートを検出する方法を探しています。さらに、受信者を支援するSTARTまたはその他の種類のフラグ記号はありません。
Kellenjb
2011-02-18 02:59:37 UTC
view on stackexchange narkive permalink

これを行うための事前に構築された方法を知りません。少なくとも現在の経験では、それは私にとってかなりユニークなようです。しかし、学術的な目的で、このような問題へのアプローチを書き出すことができるかどうかを確認します。

この状況では、シンボルレートは、形状が伸びたり縮んだりするように表示されます。私は形を取り、相関関係を見てスペクトル全体でそれらを「スライド」させます。次に、形状のさまざまな「ストレッチ」を使用してこれを何度も実行します。使用できる標準のシンボルレートがいくつかあることを願っています。

次に、どのシンボルレートが最も相関が良かったかを分析できるはずです。 。

これを行うにはもっと簡単な方法があるかもしれませんが、今私が思いつくのはそれだけです。

Joe Koberg
2011-02-18 06:06:24 UTC
view on stackexchange narkive permalink

一般的な問題は「クロックリカバリ」と呼ばれ、多くの場合、フェーズロックループが使用されます。データエッジが発生するたびに、PLLはそれをローカルVCOからのクロックエッジと比較します。ローカルクロックが早いか遅い場合、PLLの自然な動作はVCO周波数を少し調整することです。最終的に、ロックはデータエッジレートの倍数で達成されます。

PLLがそれらにロックオンするには、データエッジの最小数が存在する必要があります。これが、最小遷移密度を適用するために8B10Bなどのビットスタッフィングとラインエンコーディングが使用される理由です。そうしないと、PLLVCOが同じビット値の長時間にわたってデータクロックから離れてドリフトします。

I RFチャネルがすでに何らかのラインエンコーディングを使用していると思われます。通常、DCバイアス信号はRF変調で回避され、エンコーディングはDCバイアス(別名ロングラン)を排除するために使用されます。

ありがとう。しかし、クロックリカバリは、私がアクセスできない別のモジュールで実行されます。 `PLL`は*キャリアクロックリカバリ*用ですが、*シンボルクロック(レート)リカバリ*の方法を探しています
シンボルに別のPLLを使用することを妨げるものは何もありません。それらが2レベルでない場合は、エンコーディングに関する詳細情報を使用して質問を拡張する必要があります。あなたは何が起こっているのか知っているようです-それで、なぜ私たちに答えを突くようにさせるのですか?
Taniwha
2011-03-20 13:24:40 UTC
view on stackexchange narkive permalink

フィルターの後でシンボルが異なるレベルの電圧としてエンコードされている場合、波形を見ると4つのレベルがあります。つまり、log2(4)シンボルまたは2シンボル/ボーです。

(これは想定しています余分な位相情報が失われる、押しつぶされた位相変調信号は表示されません)

もう一度質問を読んでください。ボーレートを自動的に推定するための実装を探しています。質問で提示された図は単なる例です。


このQ&Aは英語から自動的に翻訳されました。オリジナルのコンテンツはstackexchangeで入手できます。これは、配布されているcc by-sa 2.0ライセンスに感謝します。
Loading...