この辞書は、Skyworks (Silicon Labs) Si47XX PROGRAMMING GUIDE AN332 を基に、Google AI (Gemini) の協力を得て作成しています。
1 コマンド 0x22. FM_TUNE_STATUS 概要
FM_TUNE_FREQまたはFM_SEEK_STARTコマンドのステータスを返します。
このコマンドは、現在の周波数、RSSI、SNR、マルチパス、およびアンテナ同調容量値(0~191)を返します。
ARG1のINTACKビットがセットされている場合、このコマンドはSTCINT割り込みビットをクリアします。
次のコマンドを安全に送信できる場合、CTSビット(およびオプションの割り込み)がセットされます。
このコマンドは、電源投入モードのときのみ送信できます。
使用可能環境:全環境
コマンド引数:1つ
応答バイト数:7
このコマンドは、現在の周波数、RSSI、SNR、マルチパス、およびアンテナ同調容量値(0~191)を返します。
ARG1のINTACKビットがセットされている場合、このコマンドはSTCINT割り込みビットをクリアします。
次のコマンドを安全に送信できる場合、CTSビット(およびオプションの割り込み)がセットされます。
このコマンドは、電源投入モードのときのみ送信できます。
使用可能環境:全環境
コマンド引数:1つ
応答バイト数:7
2 コマンドパラメータ
2.1 パラメータリスト
| Bit | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|---|---|---|---|---|---|---|---|---|
| CMD | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
| ARG1 | 0 | 0 | 0 | 0 | 0 | 0 | CANCEL | INTACK |
| ARG | Bit | Name | Function |
|---|---|---|---|
| 1 | 7:2 | Reserved | 常に0に書き込みます。 |
| 1 | 1 | CANCEL | シークをキャンセルします。 設定されている場合、現在進行中のシークを中止します。 |
| 1 | 0 | INTACK | シーク/チューニング割り込みクリア。 設定されている場合、シーク/チューニング完了割り込みステータスインジケータをクリアします。 |
2.2 パラメータ
2.2.1 CANCEL
目的
現在チップ内部で実行されている自動選局(シーク処理)を、途中で強制的にキャンセル(中断)させる [AN332]。
解説
1 を設定して送信すると、チップは即座にスキャンを中止し、シークを開始する前の「元の周波数」へと戻ります [AN332]。
ユーザーがシーク中に「やっぱり探すのをやめたい」とキャンセルボタンを押した時などに、このフラグを 1 にしてコマンドを発行します [AN332]。 通常時(単に状態を読み出したいだけのアクティブな選局後など)は 0 にしておきます [AN332]。
ユーザーがシーク中に「やっぱり探すのをやめたい」とキャンセルボタンを押した時などに、このフラグを 1 にしてコマンドを発行します [AN332]。 通常時(単に状態を読み出したいだけのアクティブな選局後など)は 0 にしておきます [AN332]。
2.2.2 INTACK
(Interrupt Acknowledge)
目的
選局やシークが完了したことを示す割り込みフラグ(STCINT)を、チップ内部でクリア(0にリセット)する [AN332]。
解説
1 を設定して送信すると、ステータスバイト内にある STCINT ビットが 0 にクリアされます [AN332]。
マイコン側が「選局完了の通知を確かに受け取った(了解した)」という合図(Acknowledge)をチップに送るためのフラグです [AN332]。
通常、選局完了後に初めてこの 0x22 コマンドを発行する際は 1 に設定します [AN332]。
マイコン側が「選局完了の通知を確かに受け取った(了解した)」という合図(Acknowledge)をチップに送るためのフラグです [AN332]。
通常、選局完了後に初めてこの 0x22 コマンドを発行する際は 1 に設定します [AN332]。
3 応答パラメータ
3.1 パラメータリスト
| Bit | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
|---|---|---|---|---|---|---|---|---|
| STATUS | CTS | ERR | X | X | RSQINT | RDSINT | X | STCINT |
| RESP1 | BLTF | x | x | x | x | x | AFCRL | VALID |
| RESP2 | READFREQH | |||||||
| RESP3 | READFREQL | |||||||
| RESP4 | RSSI | |||||||
| RESP5 | SNR | |||||||
| RESP6 | MULT | |||||||
| RESP7 | READANTCAP | |||||||
| RESP | Bit | Name | Function |
|---|---|---|---|
| 1 | 7 | BLTF | バンドリミット。 シークがバンドリミットに達した場合(FM_START_SEEK の WRAP = 0)、または元の周波数に戻った場合(WRAP = 1)を報告します。 |
| 1 | 6:2 | Reserved | 常に0に書き込みます。 |
| 1 | 1 | AFCRL | AFC レールインジケータ。 AFC がレール状態の場合に設定されます。 |
| 1 | 0 | VALID | 有効チャンネル。 シーク/チューニングプロパティ(0x1403、0x1404、0x1108)に基づいて、チャンネルが現在有効であり、シーク中に検出された場合に設定されます。 |
| 2 | 7:0 | READFREQH | 読み取り周波数上位バイト。 このバイトは、READFREQL と組み合わせて、チューニング中の周波数(10 kHz)を返します。 |
| 3 | 7:0 | READFREQL | 読み取り周波数下位バイト。 このバイトは、READFREQHと組み合わせることで、チューニング中の周波数(10 kHz)を返します。 |
| 4 | 7:0 | RSSI | 受信信号強度インジケータ。 このバイトには、チューニング完了時の受信信号強度(dBμV)が含まれます。 |
| 5 | 7:0 | SNR | SNR このバイトには、チューニング完了時のSNR値(dB)が含まれます。 |
| 6 | 7:0 | MULT | マルチパス このバイトには、チューニング完了時のマルチパス値が含まれます。マルチパスインジケータは、Si4706-D50、Si4704/05/30/31/34/35-D50以降、およびSi4732でのみ利用可能です。 |
| 7 | 7:0 | READANTCAP | アンテナチューニングコンデンサの読み取り(Si4704/05/06のみ)。 このバイトには、現在のアンテナ同調コンデンサの値が含まれています。 |
3.2 パラメータ
応答の先頭パラメータ
応答(STATUSバイト)に含まれる各ビット(CTS, ERR, RSQINT, RDSINT, STCINT)は、「デバイスの現在の処理状態」や「各種割り込み(通知)の発生」をホストMCUに知らせる目的で設計されています。
STATUSバイトの信頼性:Si4735の仕様上、いくつかのコマンド送信時に返ってくるSTATUSバイトでは、CTS以外の割り込みビット(RSQINT, RDSINT, STCINTなど)がリアルタイムに更新されない場合があります。
正しい確認方法:正確な割り込みステータスを確認したい場合は、STATUSバイトを直接過信するのではなく、専用の割り込み確認コマンド(例:GET_INT_STATUS (0x14) コマンドなど)を明示的に発行して最新の状態を読み出すのが一般的なセオリーとなっています。
正しい確認方法:正確な割り込みステータスを確認したい場合は、STATUSバイトを直接過信するのではなく、専用の割り込み確認コマンド(例:GET_INT_STATUS (0x14) コマンドなど)を明示的に発行して最新の状態を読み出すのが一般的なセオリーとなっています。
3.2.1 CTS(Clear to Send)
目的:
デバイスが次のコマンドを受け付けられる状態かどうかを判定する。
解説:
最も重要なビットです。Si4735が前のコマンドの処理を完了し、「次のコマンドを送信しても安全(送信可)」になると1にセットされます。
0の間はデバイスが内部処理中(ビジー)であるため、ホストMCUは次のコマンド送信を待機する必要があります。
0の間はデバイスが内部処理中(ビジー)であるため、ホストMCUは次のコマンド送信を待機する必要があります。
3.2.2 ERR(Error)
目的:
直前に送信したコマンドが正常に実行されたか、エラーが発生したかを判別する。
解説:
コマンドの引数(引数の値が範囲外など)や、無効なコマンドが送られた場合に1にセットされます。
ホスト側のプログラムで例外処理や再試行(リトライ)を行うために使用します。
ホスト側のプログラムで例外処理や再試行(リトライ)を行うために使用します。
3.2.3 RSQINT(Received Signal Quality Interrupt)
目的:
受信信号の品質(電界強度RSSIやSNRなど)が、あらかじめ設定した閾値を超えた(または下回った)ことを通知する。
解説:
「受信品質の変化」をトリガーに処理を行いたい場合に使用します。
例えば、現在のチャンネルの電波が急激に弱くなったことを検知して自動で再スキャンをかける、といった機能を実装する目的で利用されます。
例えば、現在のチャンネルの電波が急激に弱くなったことを検知して自動で再スキャンをかける、といった機能を実装する目的で利用されます。
3.2.4 RDSINT(Radio Data System Interrupt)
目的:
RDS(文字情報などのデータ放送)のデータバッファ(FIFO)に新しいデータが格納されたことを通知する。
解説:
FM放送などで送られてくる「RDS/RBDSデータ(番組名や楽曲情報など)」を受信した際に1になります。
ホストMCUはこのビットを見てからデータを読み出す(FM_RDS_STATUS コマンドを発行する)ことで、無駄な空読みを防ぎ効率的にテキストデータを取得できます。
ホストMCUはこのビットを見てからデータを読み出す(FM_RDS_STATUS コマンドを発行する)ことで、無駄な空読みを防ぎ効率的にテキストデータを取得できます。
3.2.5 STCINT(Seek/Tune Complete Interrupt)
目的:
選局(Tune)操作または自動選局(Seek)操作が完了したことを通知する。
解説:
周波数を変更するコマンド(FM_TUNE_FREQ や FM_SEEK_START など)は内部処理に時間がかかります。
デバイスが「目的の周波数への同調、または次の放送局の検知を完了した」時点でこのビットが1になります。
選局完了のタイミングを正確に把握する目的で使用します。
デバイスが「目的の周波数への同調、または次の放送局の検知を完了した」時点でこのビットが1になります。
選局完了のタイミングを正確に把握する目的で使用します。
3.2.6 BLTF (Band Limit Flag)
目的:
自動選局(シーク)を行った際、目的の局が見つからないままバンドの端(上限・下限)に到達してしまったかを判別する [AN332]。
解説:
1 のときは、シーク中に「有効な放送局が1つも見つからないまま、バンドの境界に達してシークが終了した(あるいはWRAP=0で停止した)」ことを意味します [AN332]。シーク失敗の例外処理をマイコン側で行うために使用します [AN332]。
3.2.7 AFCRL (AFC Rail Flag)
目的:
内部のAFC(自動周波数制御)回路が制御限界(レールの端)に達してしまい、周波数を正しく追従できなくなっているかを判別する [AN332]。
解説:
通常は 0(正常)です [AN332]。
もし 1 になった場合は、電波が極端に不安定であるか、周波数のズレが大きすぎて内部の追従回路が限界を迎えている(飽和している)ことを示します [AN332]。
もし 1 になった場合は、電波が極端に不安定であるか、周波数のズレが大きすぎて内部の追従回路が限界を迎えている(飽和している)ことを示します [AN332]。
3.2.8 VALID (Valid Station)
目的:
現在合わせている周波数に、「有効な(聴取に耐える十分な強さの)放送局が存在するか」をチップが自動判定した結果 [AN332]。
解説:
非常に便利なフラグです。
現在受信中の周波数の電波強度(RSSI)やSNRが、あらかじめ設定したしきい値をクリアしている(=間違いなく放送局の電波である)とチップが認めた場合に 1 になります [AN332]。
0 の場合は、単なるノイズ(空きチャンネル)である可能性が高いと判断できます [AN332]。
現在受信中の周波数の電波強度(RSSI)やSNRが、あらかじめ設定したしきい値をクリアしている(=間違いなく放送局の電波である)とチップが認めた場合に 1 になります [AN332]。
0 の場合は、単なるノイズ(空きチャンネル)である可能性が高いと判断できます [AN332]。
3.2.9 READFREQ H,L
目的:
チップが現在実際に同調(受信)している周波数を「10kHz単位」の16ビット値で読み出す [AN332]。
解説:
自動選局(シーク)によって「最終的にどこで止まったか」をマイコンが知るために使用します [AN332]。
計算式: 実際の周波数(MHz) = ( (READFREQH << 8) | READFREQL ) / 100 [AN332]
例:読み出した値が 0x235A(10進数で9050)であれば、現在 90.5MHz を受信しています。
例:読み出した値が 0x235A(10進数で9050)であれば、現在 90.5MHz を受信しています。
3.2.10 RSSI
目的:
受信しているFM電波の強度を数値として取得する [AN332]。
解説:
単位は dBμV(デシベルマイクロボルト)で返ってきます [AN332]。
値が大きいほど電波が強く、液晶ディスプレイ(LCD)に「バリ5」のような電波メーター(Sメーター)をグラフィカルに表示させたい場合、このRSSIの値をトリガーにしてバーを伸縮させます [AN332]。
値が大きいほど電波が強く、液晶ディスプレイ(LCD)に「バリ5」のような電波メーター(Sメーター)をグラフィカルに表示させたい場合、このRSSIの値をトリガーにしてバーを伸縮させます [AN332]。
3.2.11 SNR
目的:
受信している音声信号のクリアさ(信号対雑音比)を数値として取得する [AN332]。
解説:
単位は dB です [AN332]。
RSSI(電波の強さ)がどれだけ高くても、このSNRが低い(値が0に近い)場合は、ノイズの混じった非常に聴き取りにくい音になっています。
ステレオ放送がクリアに聴こえる目安はおおむね 25dB 以上となります。
RSSI(電波の強さ)がどれだけ高くても、このSNRが低い(値が0に近い)場合は、ノイズの混じった非常に聴き取りにくい音になっています。
ステレオ放送がクリアに聴こえる目安はおおむね 25dB 以上となります。
3.2.12 MULT
目的:
建物の反射などによって発生する「マルチパス(多重波妨害・フェージング)」による信号の歪み度合いを取得する [AN332]。
解説:
値の範囲は 0(歪みなし・極めてクリア)〜 100(最大級の歪み)です [AN332]。都市部などのビル街でラジオを移動させながら聴くような場合、電波が壁に反射して音が歪む現象を検知するために使用します。通常は参考値として読み飛ばしても問題ありません。
4 その他
4.1 選局完了後に必ず呼ぶべき理由(Google AI (Gemini) の見解)
マイコンから周波数を指定する 0x20 (FM_TUNE_FREQ) コマンドを送信した際、引数として ANTCAP = 0(アンテナ自動インピーダンスマッチング)を設定したことを思い出してください [AN332]。
このとき、Si4735は指定された周波数に対して、内部のコンデンサ容量(ANTCAP)を何pFにすれば、LNA(低雑音アンプ)の複素共役整合が最も綺麗に取れるかを裏で一生懸命計算しています。
選局が完了した直後に、この 0x22 コマンドを発行して応答の最後(RESP7)にある READANTCAP を読み出すと、「チップが最終的に弾き出した、インピーダンスマッチングの最適解の数値(1〜191)」をリアルタイムに確認することができます [AN332]。
自作レシーバーの開発中にこの値をLCD等にデバッグ表示させておくと、周波数を変えたときにアンテナ可変容量が連動して綺麗に動いている(=ハードウェアのマッチング回路が正常に機能している)かどうかが一目でわかるため、回路デバッグにおいて非常に強力な味方となります。
このとき、Si4735は指定された周波数に対して、内部のコンデンサ容量(ANTCAP)を何pFにすれば、LNA(低雑音アンプ)の複素共役整合が最も綺麗に取れるかを裏で一生懸命計算しています。
選局が完了した直後に、この 0x22 コマンドを発行して応答の最後(RESP7)にある READANTCAP を読み出すと、「チップが最終的に弾き出した、インピーダンスマッチングの最適解の数値(1〜191)」をリアルタイムに確認することができます [AN332]。
自作レシーバーの開発中にこの値をLCD等にデバッグ表示させておくと、周波数を変えたときにアンテナ可変容量が連動して綺麗に動いている(=ハードウェアのマッチング回路が正常に機能している)かどうかが一目でわかるため、回路デバッグにおいて非常に強力な味方となります。
4.2 疑問にお答え(Google AI (Gemini) の見解)
4.2.1 Rail とは何か
質問
AFCRL bit1 AFC Rail Indicatorの Rail Indicator とはなんですか
見解
高周波(RF)回路やアナログ電子回路において、「Rail(レール)」とは「制御の上限・下限の壁(限界値)」を意味します [AN332]。
パワーアンプの出力が電源電圧(電源レール)にぶつかって音が歪む現象を「クリッピング(レールに張り付く)」と呼ぶのと同様のニュアンスです。
仕組み
パワーアンプの出力が電源電圧(電源レール)にぶつかって音が歪む現象を「クリッピング(レールに張り付く)」と呼ぶのと同様のニュアンスです。
仕組み
Si4735の内部には、FM電波のわずかな周波数のズレ(送信局の癖や温度変化によるズレ)を自動的に追いかける AFC(自動周波数制御)回路 が入っています。
Rail Indicatorの意味
このAFC回路が「これ以上は周波数を高く(低く)補正できない」という制御の限界の壁(レール)に突き当たって、これ以上の自動追従を諦めた状態を示します [AN332]。
辞書への落とし込み
AFC追従限界フラグ」と訳すと分かりやすいです。「1のときは、電波が不安定すぎるか、ノイズが多すぎてAFCの自動補正が飽和(限界に到達)している状態」を意味します [AN332]。
4.2.2 RSSI,SNR,MULT の正式名称と意味
質問
RSSI、SNR、MULTは何の略で意味は何ですか
見解
(1) RSSI (Received Signal Strength Indicator)
正式名称: Received Signal Strength Indicator(受信信号強度指示器)
意味: アンテナ端子に入力されている 電波そのものの絶対的な強さ を表します [AN332]。
単位: dBμV(デシベルマイクロボルト) [AN332]
注意点: 単に「空間に飛び交っている高周波のエネルギー量」を測っているだけなので、強力なノイズ(違法無線やPCのデジタルノイズなど)を受信していても、RSSIの値は高く(強く)なってしまいます。
(2) SNR (Signal-to-Noise Ratio)意味: アンテナ端子に入力されている 電波そのものの絶対的な強さ を表します [AN332]。
単位: dBμV(デシベルマイクロボルト) [AN332]
注意点: 単に「空間に飛び交っている高周波のエネルギー量」を測っているだけなので、強力なノイズ(違法無線やPCのデジタルノイズなど)を受信していても、RSSIの値は高く(強く)なってしまいます。
正式名称: Signal-to-Noise Ratio(信号対雑音比、エスエヌ比)
意味: 受信した電波の中に、「聴きたい目的の信号(S)」が「邪魔なノイズ(N)」に対してどれくらい綺麗に含まれているかの比率です [AN332]。
単位: dB(デシベル)目安: 値が大きいほど音がクリアです [AN332]。
RSSIが高くてもSNRが低ければ「ザーー」という雑音しか聴こえません。
逆にRSSIが低くてもSNRが高ければ、驚くほどクリアに聴こえます。
(3) MULT (Multipath)意味: 受信した電波の中に、「聴きたい目的の信号(S)」が「邪魔なノイズ(N)」に対してどれくらい綺麗に含まれているかの比率です [AN332]。
単位: dB(デシベル)目安: 値が大きいほど音がクリアです [AN332]。
RSSIが高くてもSNRが低ければ「ザーー」という雑音しか聴こえません。
逆にRSSIが低くてもSNRが高ければ、驚くほどクリアに聴こえます。
正式名称: Multipath(マルチパス / 多重波妨害)
意味: 送信所から出た電波が、ビルや山に反射して複数のルート(マルチ・パス)を通ってアンテナに届くことで発生する 「電波の位相の乱れ・歪み」 の度合いです [AN332]。
単位: 0(歪みなし)〜 100(最大級の歪み) [AN332]
役割: RSSI(電波強度)が十分に強いのに、なぜか音が歪んでクリアに聴こえない原因(マルチパスフェージング)を特定するために使用します [AN332]。
意味: 送信所から出た電波が、ビルや山に反射して複数のルート(マルチ・パス)を通ってアンテナに届くことで発生する 「電波の位相の乱れ・歪み」 の度合いです [AN332]。
単位: 0(歪みなし)〜 100(最大級の歪み) [AN332]
役割: RSSI(電波強度)が十分に強いのに、なぜか音が歪んでクリアに聴こえない原因(マルチパスフェージング)を特定するために使用します [AN332]。
4.2.3 Si4735は ANTCAP を読めないか
質問
READANTCAP bit7 「Si4704/05/06のみ」とマニュアルに記載されているがSi4735はアンテナ同調コンデンサの値を設定できるのに、見ることができないのはなぜですか教えて下さい
見解
AN332マニュアルの 0x22 コマンド「RESP7」の記述にある 「Si4704/05/06のみ」 という制限についての、非常に深いハードウェア的な理由がこちらです。
結論
結論
FMモードにおいて、Si4735は「固定の内部容量(バリコン)」を使っていないため実は、Si4704/05/06というチップと、
Si4730/31/34/35(Si4735含む)というチップでは、FM受信時のフロントエンド(アンテナ入力回路)のハードウェア構造が全く異なります。
Si4704/05/06(FM専用チップファミリー)
では、FM 0x20 の ANTCAP パラメータは何のためにあるのか?
Si4704/05/06(FM専用チップファミリー)
FM入力端子に、マニュアル通り「1〜191」の段階を持つ、本物のデジタル可変コンデンサ(バリコン)が内蔵されています。
そのため、自動モードで確定した実際の容量値を READANTCAP(RESP7)からいつでも数値として読み出すことができます。
Si4735(AM/FM/LW/SWマルチバンドチップ)
そのため、自動モードで確定した実際の容量値を READANTCAP(RESP7)からいつでも数値として読み出すことができます。
AMや短波(SW)を受信する際は、内部のデジタル可変コンデンサ(バリコン)がアクティブになり、0x40 コマンドやプロパティで容量を設定・読み出すことができます。
しかし、FM受信モード(0x20)のときだけは、IC内部のLNA(アンプ)の構造がFM専用の「広帯域マッチング回路」に切り替わり、1〜191の細かいバリコンを動かす仕組み自体が機能していません。
しかし、FM受信モード(0x20)のときだけは、IC内部のLNA(アンプ)の構造がFM専用の「広帯域マッチング回路」に切り替わり、1〜191の細かいバリコンを動かす仕組み自体が機能していません。
マニュアルをよく読むと、FMの 0x20 コマンドにおける ANTCAP パラメータは、1〜191の容量値を指定するものではなく、「0(自動)」か「それ以外(固定値)」かという、
回路の動作モードを切り替えるためだけのフラグ(実質的にダミーに近い扱い)として残されています [AN332]。
Si4735はマルチバンドICとしてすべてのコマンドの互換性を保つために、FMコマンドにも ANTCAP という引数(枠)を用意していますが、 FM動作時には読み出すべき「バリコンの確定値」そのものが内部に存在しないため、マニュアルに「Si4704/05/06のみ有効(Si4735では読み出せない/常に0または無効値が返る)」と記載されているのです [AN332]。
Si4735はマルチバンドICとしてすべてのコマンドの互換性を保つために、FMコマンドにも ANTCAP という引数(枠)を用意していますが、 FM動作時には読み出すべき「バリコンの確定値」そのものが内部に存在しないため、マニュアルに「Si4704/05/06のみ有効(Si4735では読み出せない/常に0または無効値が返る)」と記載されているのです [AN332]。
4.2.4 SNRの算出方法
質問
SNR を測定する方法です。
電波で言うノイズは音で言えば暗騒音と思っていました。
信号強度と同時に測定出来るとはどの様にノイズを測定しているか興味がありますが、お答えできますか?
見解
電波で言うノイズは音で言えば暗騒音と思っていました。
信号強度と同時に測定出来るとはどの様にノイズを測定しているか興味がありますが、お答えできますか?
電波の世界の「ノイズ」について、音の「暗騒音」に例えられたのは非常に本質を捉えた素晴らしい着眼点です!まさにその通りで、電波の世界にも、放送がないチャンネルでも常に「ザーー」と流れている宇宙からの雑音や、電子機器が発する「暗騒音(バックグラウンドノイズ)」が存在します。
信号の強さ(RSSI)と同時に、どうやってその「暗騒音(ノイズ)」の量を分離して測定し、SNR(信号対雑音比)を計算しているのか、Si4735の内部で行われているデジタル信号処理(DSP)の驚くべき仕組みを分かりやすく解説します。
1. アナログ時代と現代(Si4735)の最大の違い
2. どうやって「信号」と「ノイズ」を分けているのか?
信号の強さ(RSSI)と同時に、どうやってその「暗騒音(ノイズ)」の量を分離して測定し、SNR(信号対雑音比)を計算しているのか、Si4735の内部で行われているデジタル信号処理(DSP)の驚くべき仕組みを分かりやすく解説します。
1. アナログ時代と現代(Si4735)の最大の違い
昔のアナログ・ラジオの場合、RSSI(電波の強さ)は針のメーターで表示できましたが、SNR(ノイズとの比率)をリアルタイムに測定することは困難でした。しかし、
Si4735は「ソフトウェア・ラジオ(SDR)」と呼ばれる最新のアーキテクチャを採用しています。
アンテナから入ってきた電波は、超高速な「A/Dコンバータ」という部品によって、即座に「1秒間に何百万回ものデジタルデータ(0と1の数字の列)」に変換されます。
アンテナから入ってきた電波は、超高速な「A/Dコンバータ」という部品によって、即座に「1秒間に何百万回ものデジタルデータ(0と1の数字の列)」に変換されます。
2. どうやって「信号」と「ノイズ」を分けているのか?
Si4735の内部では、主に以下の2つのデジタル計算手法を使ってノイズ量をリアルタイムに割り出しています。
(1)周波数ごとの「エネルギー分布」を計算する(FFT解析)
(2)「変調の正しさ」を計算する(IQ信号処理)
(1)周波数ごとの「エネルギー分布」を計算する(FFT解析)
DSPは、受信している帯域のデジタルデータを高速で「周波数ごとの成分」に分解します。
放送の信号(S)
放送の信号(S)
特定の周波数(例えば90.5MHzのピンポイント)に、トゲのように鋭く高いエネルギーが集中します。
ノイズ(N)
放送の周波数の「両脇のほんの少しズレた隙間」に、平べったく均一に広がるエネルギー(これが電波の暗騒音です)として現れます。
DSPは、この「トゲの高さ(信号の強さ)」と「両脇の平らな部分の高さ(暗騒音の強さ)」を同時に別々に計算し、その割り算を行うことで、一瞬でSNRを弾き出しています。
(2)「変調の正しさ」を計算する(IQ信号処理)
FM放送は、音声信号に応じて電波の周波数が細かく「揺れる(変調する)」仕組みです。
Si4735の内部では、電波を「I(同相成分)」と「Q(直交成分)」という2つのベクトルデータに分解して処理しています。
このズレの大きさがそのまま「ノイズ(N)」の量となり、RSSI(全体の強さ)から逆算することで、正確なSNR(信号対雑音比)を測定できるのです。
Si4735の内部では、電波を「I(同相成分)」と「Q(直交成分)」という2つのベクトルデータに分解して処理しています。
・綺麗な放送の電波であれば、このIQデータは計算上、綺麗な「円」を描くように規則正しく動きます。
・そこにノイズ(暗騒音)が混ざると、円の軌道が「ブレてガタガタ」になります。
DSPはこの「本来あるべき綺麗な軌道から、どれくらいガタガタにズレているか(エラーの量)」を常に計算しています。・そこにノイズ(暗騒音)が混ざると、円の軌道が「ブレてガタガタ」になります。
