この解説は、Skyworks (Silicon Labs) Si47XX PROGRAMMING GUIDE AN332 を基に、Google AI (Gemini) の協力を得て作成しています。
1 プロパティ 概要
SSB_IF_AGC_ATTACK_RATE(プロパティID: 0x3702)
IF AGCのアタックレートを設定します。値を大きくするとアタックは遅くなり、小さくすると速くなります。
次のコマンドを送信しても安全な状態になると、CTSビット(およびオプションの割り込み)がセットされます。
このプロパティは、POWERUPモードでのみ設定または読み出しが可能です。デフォルト値は4(約1400 dB/s)です。
AGC Attack Rate(dB/s) = 5600 / ATTACK
公称値「5600」は、Silicon Labs社のAMアンテナダミーおよびSi474x EVBリファレンスデザインに基づいています。
ソースインピーダンスや設計変更によって値が変動する場合があります。ほとんどのシステムにおいて、正確な値は重要ではありません。
ただし、異なるソースインピーダンスや設計に合わせて計算を行う場合は、以下の手順に従ってください。
1. 目的のソースインピーダンスでアンテナ入力に信号を供給します(アンテナまたはアンテナダミーを使用)。
2. AGCインデックスが19から20に変化するまでRFレベルを上げます。インデックスが19のときの最後のRFレベルを記録します。
3. AGCインデックスが39に達するまでRFレベルを上げます。インデックスが39のときのRFレベルを記録します。
4. レート計算式の「5600」を「(RF39 – RF19) / 0.00667」に置き換えます。
デフォルト: 0x0004
ステップ: 4
範囲: 4~248
IF AGCのアタックレートを設定します。値を大きくするとアタックは遅くなり、小さくすると速くなります。
次のコマンドを送信しても安全な状態になると、CTSビット(およびオプションの割り込み)がセットされます。
このプロパティは、POWERUPモードでのみ設定または読み出しが可能です。デフォルト値は4(約1400 dB/s)です。
AGC Attack Rate(dB/s) = 5600 / ATTACK
公称値「5600」は、Silicon Labs社のAMアンテナダミーおよびSi474x EVBリファレンスデザインに基づいています。
ソースインピーダンスや設計変更によって値が変動する場合があります。ほとんどのシステムにおいて、正確な値は重要ではありません。
ただし、異なるソースインピーダンスや設計に合わせて計算を行う場合は、以下の手順に従ってください。
1. 目的のソースインピーダンスでアンテナ入力に信号を供給します(アンテナまたはアンテナダミーを使用)。
2. AGCインデックスが19から20に変化するまでRFレベルを上げます。インデックスが19のときの最後のRFレベルを記録します。
3. AGCインデックスが39に達するまでRFレベルを上げます。インデックスが39のときのRFレベルを記録します。
4. レート計算式の「5600」を「(RF39 – RF19) / 0.00667」に置き換えます。
デフォルト: 0x0004
ステップ: 4
範囲: 4~248
2 プロパティ
2.1 プロパティリスト
| Bit | 上位バイト PROPH | 下位バイト PROPL | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Name | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ATTACK | |||||||
| Bit | Name | Function |
|---|---|---|
| 7:0 | ATTACK |
2.2 プロパティ
本プロパティは、SSBモードにおいて、中間周波数(IF)ステージおよびA/Dコンバータ(ADC)直前のデジタル可変ゲインアンプ(PGA)段に強力な信号が飛び込んできた際、
ゲインをどれだけ素早く下げるかという「IF AGCアタック・タイム(追従速度)」を設定します。
動作メカニズム:
既定値:
動作メカニズム:
先述の 0x3700 (SSB_RF_AGC_ATTACK_RATE) がアンテナ直後のLNA(高周波段)を保護するのに対し、この 0x3702 はミキサー通過後のIF段(中間周波数段)におけるデジタル飽和や波形クリップを防ぐために機能します。
既定値:
0x0004(10進数で4、パッチの内部基準単位で 4 ms 相当)。
2.2.1 ATTACK
目的と概要:
IFステージにおけるデジタルクリップを防ぐためのゲイン減衰応答速度(時定数)をミリ秒(ms)相当のステップで設定するためのフィールドです。
AN332に明記されない目的と解説:
標準マニュアル(AN332)には未記載のパッチ専用レジスタです。
内部のDSPファームウェアパッチにおける隠れた挙動として、このIF段のアタックレートは「デジタル・シグナル・プロセッサ(DSP)内部の内部演算オーバーフロー(デジタル歪み)の防止」に直結しています。
RF AGCがアンテナ全体の広帯域な過大入力を抑えるのに対し、IF AGCは「デジタルチャネルフィルタによって急峻に切り出された【目的の信号】そのものの過大入力」に反応します。
そのため、この値を極端に遅く(例: 50msなど)設定してしまうと、強力なSSBの第一声(変調の立ち上がり)が飛び込んできた瞬間に DSP内部のビット演算が数ミリ秒間オーバーフロー(クリップ)し、オーディオ出力に「バリッ」「ザリッ」という非常に不快なデジタルバリバリノイズ(デジタルクリップ音)が混入する原因となります。
内部のDSPファームウェアパッチにおける隠れた挙動として、このIF段のアタックレートは「デジタル・シグナル・プロセッサ(DSP)内部の内部演算オーバーフロー(デジタル歪み)の防止」に直結しています。
RF AGCがアンテナ全体の広帯域な過大入力を抑えるのに対し、IF AGCは「デジタルチャネルフィルタによって急峻に切り出された【目的の信号】そのものの過大入力」に反応します。
そのため、この値を極端に遅く(例: 50msなど)設定してしまうと、強力なSSBの第一声(変調の立ち上がり)が飛び込んできた瞬間に DSP内部のビット演算が数ミリ秒間オーバーフロー(クリップ)し、オーディオ出力に「バリッ」「ザリッ」という非常に不快なデジタルバリバリノイズ(デジタルクリップ音)が混入する原因となります。
3 応答パラメータ
プロパティを設定する SET_PROPERTY コマンド、または読み出す GET_PROPERTY コマンドを実行した際、Si4735は1バイトのステータスバイト(STATUS)を応答パラメータとして返します。
STATUS (Status Byte)[目的と概要]:
送信されたIF AGCアタック定数がDSPに正しく受理され、内部のIFゲイン制御ループのタイマーと同期が取れたかを通知するステータスレジスタです。
STATUS (Status Byte)[目的と概要]:
送信されたIF AGCアタック定数がDSPに正しく受理され、内部のIFゲイン制御ループのタイマーと同期が取れたかを通知するステータスレジスタです。
CTS (Clear to Send): 1 の場合、IFアタック定数の書き込みと内部テーブルの更新が完了し、次のIFリリース定数設定(0x3703)などのコマンドを受け入れ可能であることを示します。
ERR (Error): 1 の場合、SSBパッチが完全にロード・起動していない状態でこのプロパティを叩いたか、ハードウェアの演算限界を超える値を書き込もうとした際のエラーをホストMCUに通知します。
ERR (Error): 1 の場合、SSBパッチが完全にロード・起動していない状態でこのプロパティを叩いたか、ハードウェアの演算限界を超える値を書き込もうとした際のエラーをホストMCUに通知します。
4 その他(Google AI (Gemini) の見解)
4.1 コマンドの重要ステップと注意事項
IFリリースレート(0x3703)との比率関係の維持:
RF AGCとの役割分担の意識:
RF段(0x3700/0x3701)と同様に、IF段においても必ず 「IFアタックタイム(0x3702) ≪ IFリリースタイム(0x3703)」 の関係を維持してください(デフォルトはアタック4msに対してリリース24ms)。
RF AGCとの役割分担の意識:
本プロパティは「DSPのデジタル演算を保護する最後の砦」です。
RF AGC(0x3700)より極端に遅い値を設定すると、RF段で抑えきれなかった過渡信号がそのままIF段でクリップするため、特別な理由がない限りはデフォルトの 4ms 付近、もしくはそれより高速な設定に保つのが安全です。
RF AGC(0x3700)より極端に遅い値を設定すると、RF段で抑えきれなかった過渡信号がそのままIF段でクリップするため、特別な理由がない限りはデフォルトの 4ms 付近、もしくはそれより高速な設定に保つのが安全です。
4.2 もう少し踏み込んだ応用展開
強力な混信・パイルアップ環境における「デジタル歪みシャットアウト」プロファイル:短波(SW)のコンディションが良く、
同一周波数近辺に多数の強力な通信局がひしめき合っている(アマチュア無線のコンテスト時など)環境を想定します。
対策:
対策:
ホストMCU側から 0x3702 をデフォルトの 4ms から、限界値に近い 1ms〜2ms にさらに「高速化」させます。
チャネルフィルタ(0x0101 AUDIOBW)で帯域を狭めていても、フィルタの裾野から漏れ聞こえる強力な隣接局の変調パルスがIF段を直撃することがあります。
このIFアタックを極限まで速めておくことで、それらの強力なパルスが飛び込んできた瞬間にIF PGAのゲインをミリ秒未満で自動クランプし、 受信用音声がデジタル的に「バリザリ」と濁るのを完璧に防ぐ、ひずみのないクリアな分離特性を実現できます。
チャネルフィルタ(0x0101 AUDIOBW)で帯域を狭めていても、フィルタの裾野から漏れ聞こえる強力な隣接局の変調パルスがIF段を直撃することがあります。
このIFアタックを極限まで速めておくことで、それらの強力なパルスが飛び込んできた瞬間にIF PGAのゲインをミリ秒未満で自動クランプし、 受信用音声がデジタル的に「バリザリ」と濁るのを完璧に防ぐ、ひずみのないクリアな分離特性を実現できます。
4.3 デバッグ時のチェックリスト
GET_PROPERTY で 0x3702 を読み出し、意図したIFアタック値(例: 0x0004)が正確に反映されているか?
強力なSSB信号の「話し始め(言葉の頭)」や、CWの「一発目の符号」が聞こえた瞬間に、スピーカーから「プチッ」「バリッ」という破裂音のようなデジタル歪みが混入していないか?
(混入する場合は、0x3702 のアタック速度が遅すぎます)
アタック速度を速めすぎた(例: 1ms以下など)際に、受信音声全体の音量が細かく「ガタガタ」と震えるような不自然な変調感が発生していないか?
4.4 まとめ
0x3702 (SSB_IF_AGC_ATTACK_RATE) は、Si4735の内部DSPが持つ広大なダイナミックレンジをフルに活かし、
アナログからデジタルへ変換された音声信号が「絶対に破綻(クリップ)しないように守る」ための電子的な防波堤です。
アンテナ側のLNAを制御するRF AGCと組み合わせて、このIF段のアタックレートを最適化(基本は超高速追従)しておくことで、 混信の激しい短波帯でも、耳に刺さるデジタル特有の歪みを完全に排除した、極めてマイルドで聴き疲れしないハイエンドな受信品質を作り出すことができます。
アンテナ側のLNAを制御するRF AGCと組み合わせて、このIF段のアタックレートを最適化(基本は超高速追従)しておくことで、 混信の激しい短波帯でも、耳に刺さるデジタル特有の歪みを完全に排除した、極めてマイルドで聴き疲れしないハイエンドな受信品質を作り出すことができます。
