オーディオコーデックの代替え-Audio Injector Zero
1.はじめに
「オーディオコーデックの選択」で紹介した「WM8731Audio Codec Proto」はLINE-OUTが基板端子に出されていない。このためスピーカーでモニターしたいときに不便である。何とかICピンにはんだ付けをして取りだそうとしたがピン間隔が狭すぎて失敗して基板を壊してしまった。良い代替えはないかネットで探すとAudio InjectorからWM8731ベースで2種類の基板(Zero Soundcard, Stereo Soundcard)がRaspberry Pi用に販売されているのが分かった。どちらでもよいがZeroが若干安くLine-OutとLine-Inが別基板で取り付けに柔軟性があると思いこれをAmazon.comで1個(送料込みで$22.15)購入してみた。
2.Zero Soundcardの仕様
「オーディオコーデックの選択」で紹介した「WM8731Audio Codec Proto」はLINE-OUTが基板端子に出されていない。このためスピーカーでモニターしたいときに不便である。何とかICピンにはんだ付けをして取りだそうとしたがピン間隔が狭すぎて失敗して基板を壊してしまった。良い代替えはないかネットで探すとAudio InjectorからWM8731ベースで2種類の基板(Zero Soundcard, Stereo Soundcard)がRaspberry Pi用に販売されているのが分かった。どちらでもよいがZeroが若干安くLine-OutとLine-Inが別基板で取り付けに柔軟性があると思いこれをAmazon.comで1個(送料込みで$22.15)購入してみた。
Audio Injector Zero Soindcard |
2.Zero Soundcardの仕様
同じくWM8731を使っているのでRedPitayaへのI2SおよびI2Cの接続は同じである。基板上にはヘッドフォーンコネクタが用意されているがマイクは小型のコンデンサーマイクが基板上に取り付けるようになっている。LINE-INとLINE-OUTはRCAコネクターで外付けである。
3.Zeroとの接続
Rasberry PIのコネクターと直接接続することを想定して基板が設計されている。RedPitayaでは以下の接続が適当であることが分かった。
Zeroコネクタ RedPitaya
Rasberry Pi B+ J8 Header
Rasberry Pi B+ J8 Header
CONNECTOR E1
BITCLOCK #12 BLCK DIO4_N #12
LRCLOCK #35 ADCLRC DIO7_N #18
DATA IN #38 ADCDATA in DIO5_N #14
DATA OUT #40 DACDATA, out DIO6_N #16
BITCLOCK #12 BLCK DIO4_N #12
LRCLOCK #35 ADCLRC DIO7_N #18
DATA IN #38 ADCDATA in DIO5_N #14
DATA OUT #40 DACDATA, out DIO6_N #16
I2C CONNECTOR E2
DATA #03 I2C(SDA) #10
CLK #05 I2C(SCL) #09
DATA #03 I2C(SDA) #10
CLK #05 I2C(SCL) #09
+5V #02, #04 CONNECTOR E2 #1
3.3V #17 CONNECTOR E1 #1, #2
3.3V #17 CONNECTOR E1 #1, #2
GND #06 CONNECTOR E1, E2 #25, #26
4.OpenHPSDRとの接続時の留意点
1)クロック周波数の変更
WM8731Audio Codec Protoのクロックは12.288MHzの水晶である。一方Zeroは12.000MHzである。この違いはWM8743のマニュアルのTable 21でADCとDACともに48kHzでMCLKの周波数を12.000MHzとするためにSampling Control RegistorをUSB mode bitに変更する必要がある。このため以下のコードをsdr-transceiver-hpsdr.cに加えた。
i2c_write_addr_data8(i2c_fd, 0x10, 0x01);
2)Line-Inの選択と利得の設定
HPSDRの SetupのTransmitのタグのLine InとLine GaindB)が現在アクティブになっていない。このためsdr_transceiver_hpsdr.cに変更を加えた。
5.まとめ
Zero Soundcardを用いることで
1)Line-outとLine-inが利用可能となった。このためヘッドフォーン以外に外付けスピーカーおよび外付けマイクに接続して通常の無線機の使い方ができる。
2)2つの基板の性能を左右において聞き比べていないが、Zero Soundcardの音質はクリアーであり小生のPCサンドカードと同質である。
3)ローカルのAM局を受信していると時々ポップアップ雑音が認識される。これはオーディオクロックがRedPitayaの場合は125MHzのクロックから分周したものではないためで同期が時々外れるものと推測している。しかしHF帯で利用するときはこのポップアップ雑音は気にならない。
ZeroとRedPitayとの接続 |
4.OpenHPSDRとの接続時の留意点
1)クロック周波数の変更
WM8731Audio Codec Protoのクロックは12.288MHzの水晶である。一方Zeroは12.000MHzである。この違いはWM8743のマニュアルのTable 21でADCとDACともに48kHzでMCLKの周波数を12.000MHzとするためにSampling Control RegistorをUSB mode bitに変更する必要がある。このため以下のコードをsdr-transceiver-hpsdr.cに加えた。
i2c_write_addr_data8(i2c_fd, 0x10, 0x01);
2)Line-Inの選択と利得の設定
HPSDRの SetupのTransmitのタグのLine InとLine GaindB)が現在アクティブになっていない。このためsdr_transceiver_hpsdr.cに変更を加えた。
5.まとめ
Zero Soundcardを用いることで
1)Line-outとLine-inが利用可能となった。このためヘッドフォーン以外に外付けスピーカーおよび外付けマイクに接続して通常の無線機の使い方ができる。
2)2つの基板の性能を左右において聞き比べていないが、Zero Soundcardの音質はクリアーであり小生のPCサンドカードと同質である。
3)ローカルのAM局を受信していると時々ポップアップ雑音が認識される。これはオーディオクロックがRedPitayaの場合は125MHzのクロックから分周したものではないためで同期が時々外れるものと推測している。しかしHF帯で利用するときはこのポップアップ雑音は気にならない。
はじめまして、JA5AEAさん。
返信削除私もAudio Codec Protoを壊してしまい当Zeroを購入。
うまく動作しなかったので検索していたところJA5AEAさんのページを見つけました。
情報ありがとうございます!
私はpiHpSDRの工作を楽しんでおりますがProtoとZeroの水晶発振周波数の違いまで気づきませんでした。
raspberry pi3B+上でaudioInjectorZeroが動いていたもので....良しとしてしまいはまりました。
壊れたProtoの水晶発振子をZeroへ載せ替えたところZeroは正常に機能しております。
ありがとうございました。
JA8WVQ
はじめまして、JA5AEA様。
返信削除有用な記事をご公開いただきありがとうございます。
私もRedPitaya + RaspberryPi + 自前RF AMPにてOpenHPSDRトランシーバー作成を楽しんでいます。
当方は通常の周波数表示はLCD,必要に応じて外部ディスプレイ使用を考えており、
Raspberry Pi(以降、PI)の周波数データをUSBポートへ垂れ流し、PAのLPFコントロール等を
をPIのソース変更にて考えた次第です。(PA接続にUSBをしようとしました。)
しかしながら....諸々パフォーマンスの点でうまくゆきませんでした。
となると、RedPitaya側からI2C経由で(Arduinoへ)データを送るほかないと考えた次第です。
JA5AEA様はsdr_transceiver_hpsdr.cへ変更を行ったとのことですので、
xilinx書き込み環境を用意なさっと思います。
sdr_transceiver_hpsdr.cだけコンパイルなんて方法はないですよね。
何か方法があればお聞かせいただければ幸いです。
よろしくお願いいたします。
JA8WVQさん、
返信削除コメントありがとうございます。
はい、「xilinx書き込み環境を用意」しました。WindowsとDual BootでKubuntu18.04にVivado18.3をインストールしていますのでこれを使っています。しかしこれは少し大袈裟なので単純なGCC環境を作れば良いのではないでしょうか?
他のSDR機とは異なってRedPitayaはFPGA以外に立派なARMがあります(=ZeROが内臓されている)のでこの部分を自作のCファイルで変更すればかなりの周辺制御は自前でできます。別のS-ATT制御はこの例です。
JA5AEA様。
削除返信が遅れまして申し訳ございませんでした。
Vivadoコンパイル環境のPCをジャンクを集め用意し何とか成功しました。
RedPitayaのマイコン側プログラムの改造ですね。ありがとうございます。
アドバイス大変参考になりました。
ありがとうございました。
このコメントは投稿者によって削除されました。
返信削除