RDS、それはどのように機能しますか? OSIモデルの最低レベルに落ちます

RDS(Radio Data System)システムを使用すると、カーラジオで「Road Radio」のような局名を見た人が少なくとも一度は出会った。 名前に加えて、再生中の曲の名前、温度、放送周波数などの追加データを表示できます。





しかし、それはどのように機能しますか? なぜなら 私の趣味はラジオとデジタル信号処理ですが、それを理解するのは面白かったです。 判明したように、RuneにはRDSに関する完全な情報はほとんどありません(英語でもまばらです)。この出版物がこのギャップを埋めることを願っています。



カットの下に続けて(慎重に多くの写真)。



はじめに



FMラジオ局が存在し、かなり長い間人気があります。 しかし、時間が経つにつれて、音に加えて、十分なテキスト情報が存在しないことが明らかになりました-ステーションの名前、トラック、曲のアーティスト。 この機能を追加する方法は1つしかありませんでした-サウンドに加えて、追加のデジタルチャネルを送信します。 さらに、一方では、既存の受信機との互換性を損なわないように、一方ではデータのデコードが容易であるように(無線のマイクロ回路の計算能力はかなり制限されている)送信します。 この問題は解決されたため、1990年代に採用されたRDS標準が登場しました。



最新のFMステーションのスペクトルは次のようになります。





図では、4つの主要なコンポーネント(左から右)を確認できます。

-モノラル形式のサウンド(L + R)。 おそらく、古いレシーバーとの互換性のために残されたものです(後方互換性を確保するために、このような標準で異なるテクノロジーが互いに「オーバーラップ」する様子を観察するのは興味深いことです)。

-パイロットトーン19KHz。 これは、パイロットトーン周波数に2を掛けたステレオ信号をデコードするために使用され、ステレオチャネルは38KHzの受信周波数に対して分離されます。

-ステレオサウンド、38KHzに関して対称的に画像内にある2番目のチャンネル(LR)。

-パイロットトーンの3次高調波で送信されるRDSチャネルの周波数は、それぞれ19 * 3 = 57KHzです。 私たちはそれに取り組みます。



RDS変調



信号をデコードするには、最初に信号がどのように形成されるかを理解する必要があり、ここにはかなりの「落とし穴」があります。 RDSを説明する主なドキュメントは、欧州標準EN 50067であり、これについて検討します。



標準によると、RDSエンコーダーは次のようになります。





ご覧のとおり、エンコーダーの信号は5つの段階を通過します。



1)元のビットストリーム。 受信するために、RDSメッセージは最初に16ビットパケットでエンコードされ、次にエラー修正付きの10ビットチェックサムブロックがそれらに追加され、その結果、エンコーダーに送信される26ビットブロックが送信されます。 それは、私たちが受け取り、送るように見えるでしょう? すべてがより複雑です。



2)ビットストリームは、次の表に従って差分エンコーディングを使用して変換されます。



ユニットはビットを変更し、変更がない場合はゼロでエンコードされます。 これは単純な目的のためです-結果のコードは反転に依存しません。 「0」としてカウントするものと「1」としてカウントするものがわからない場合がありますが、このエンコードはこのギャップを解消します。



簡単な例を考えてみましょう。送信されたメッセージを0010100としましょう。この表に従ってエンコードすると、0011000が得られます。

デコードには、別のテーブルが使用されます。



これを使用して、元のメッセージ010100を取得します。アクションの意味は、元のメッセージを反転(つまり1100111)してからデコードすると、同じ結果が得られることです。



信号を受け取って送信しますか? まだ、すべてがより複雑です。



3)前のステップでビット信号を受信しましたが、問題はこの信号が011000000000011のような形式を持っている可能性があることです。このような「形状」の電磁波は不十分に送信およびデコードされます。 目的の周波数の「古典的な」正弦波にできるだけ近い信号を取得する必要があります。 このために、いわゆる「二相コーディング」が使用されます(ロシア語の文献では、「マンチェスターコーディング」という名前がよく見られます)。

アルゴリズム的には、非常に単純に記述されています。

0-> 01

1-> 10

その助けを借りて、上記の信号011000000000011は011010010101010101010101010101として表示されます。ご覧のように、長い同一のシーケンスを取り除きました。



エンコーダー回路の番号「5」に示されている信号は、実際にはマンチェスター符号化後のビットです。標準のエンコーダーのみがハードウェアと見なされました。 次のように機能します。

-ビットストリームは短いパルスのシーケンスに変わります(図の数字「3」)

-マンチェスターコーディングは、信号を半周期遅延させ、反対の符号(数字の「4」)を付加して実行されます。

-正および負のパルスの「バースト」形式の受信信号は、「5」という数字で示されたエンベロープを選択するローパスフィルター(ローパスフィルター)に供給されます。



これで信号を送信できますか? はい、できます。 しかし、すぐではありません。 デジタルRDS信号の元の周波数は1187.5Hzで、小さすぎます。 受信した信号は、57KHzの周波数を持つ別の信号と乗算され、所定の周波数に変換されます。余弦を乗算するための学校の公式を思い出してください。



受信した信号の周波数は57KHzだけで、放送される「メイン」(音声)信号と合計されます。 上の写真からわかるように、57KHzの周波数を追加してもサウンドチャンネルには影響しないため、サポートされていないRDSレシーバーでも歪みは追加されません。



復調



これで、信号がどのように取得されるかが理解できたので、実際のFMステーションからの信号の復調を開始できます。 これを行うには、SDRレシーバーが必要です。HackRFを使用しましたが、より安価なRTL-SDRも適しています。これはeBayで送料無料で10ドルで購入できます。



ステップ1. WFMデコーダー


なぜなら 元の信号は周波数変調されているため、まず復調された形式で取得する必要があります。 別のFMデコーダーを作成しないために、GNU Radioパッケージを使用します。 GNU Radio Companionを実行し、図のように回路を組み立てます。





100.4 MHzの周波数でFMステーションを受信します。これにより、レシーバーを99 MHzの周波数に調整し、プログラムで信号を周波数を1.4 MHzだけ上方向に「シフト」し、そのような周波数の信号を乗算します。 これは、SDRレシーバーが中心に対して0の周波数にピークを持ち、すぐにステーションにチューニングできないためです。



「スキーム」を起動し、記事の冒頭の教科書にあるような画像を確認します。



19KHzパイロットトーン、38KHzステレオ信号、および57KHz付近のRDS信号の2つのピークがはっきりと見えます。



ステップ2.パイロットトーンとRDS信号を強調表示します。


次のステップは、パイロットトーンとRDS信号を抽出することです。 これを行うには、適切な周波数でバンドパスフィルターを使用します。





受信した回線を開始し、RDSの記述による「教科書」のように結果を確認します。





周波数19KHzのパイロットトーンと、周波数1187.5Hzの低周波信号を変調する57KHz信号がはっきりと見えます。



ステップ3.低周波信号を強調表示します。


LF信号を取得するには、2つの手順が必要です。

3.1)57KHz信号の受信(パイロットトーンの3次高調波)。

フィルターによって割り当てられた19KHzの信号がありますが、それから57KHzを取得する方法は? これを行うには、サインの立方体の公式である学校の数学を思い出してください。



ご覧のとおり、サインの立方体には、sin(a)とsin(3 * a)の2つのコンポーネントが含まれています。 なぜなら 「アナログ」ブロックを使用し、GNU Radioで2つのブロック(乗算器、ハイパスフィルター)を使用します。 38KHzフィルターを使用してsin(a)を削除すると、目的の57KHzが得られます。

完成した結果はオシログラムで見ることができます:



3.2)逆周波数転送

エンコード時に、信号は118KHzの周波数から57KHzを乗じて転送されました。 ここで、逆の操作を実行し、信号を「下」に転送します。 これを行うには、57KHz信号を再度乗算します。 サインの製品の公式(学校のカリキュラムは有用なものです)に従って、2つのコンポーネント(頻度の合計と差異)を取得します。 差が必要です。ローパスフィルターを使用して量を破棄します。

これはすべて、GNU Radioにブロックを追加することで行われ、完成した結果が図に示されています。



緑色は、周波数が1187.5Hzの「モデル」信号を示し、変換が正しく実行されていることを示しています。



ステップ4.低周波信号の復調


この部分の原理は、標準の画像(ブロック「バイフェーズシンボルデコーダー」)で説明するのが最も簡単です。





二相信号の復調は、2つの部分で構成されています。

-インバータによる信号の「反転」。 これは、上記で説明した二相性コーディングから元の信号に戻すために必要です。 実際、1秒おきに「反転」する必要があるため、プロセスはクロック信号と同期します。

-期間の信号の合計。 正の量はビット「1」、負の「0」に対応します。

ちなみに、1187.5Hzの期間も偶然ではなく選択されました。これは19KHzのパイロットトーン周波数を16で割ったものです。すべてが行われ、受信機のデコーダーのハードウェア実装が可能な限り単純になり、したがって安価になりました。



復調後、信号は差動デコーダーに供給されます。これについては上記で説明しました。 次に、信号はエラー修正モジュールに送られますが、彼らが言うように、OSIモデルの第2レベルに対応する別の話です。



興味があれば、理論的な部分を続けて、パッケージの形成を検討してください。 誰かが自分で実験したい場合は、RTL-SDRの有効なデコーダーのオプションの1つがgithubにあります。 プロジェクトでハードウェアチューナーを使用する場合、eBayでSi4703 FM RDSチューナーボードを購入できます。価格は約6ドルです。



All Articles