SDRの受信基板からのIQ信号を復調する方法として、今回のようなソフトオシレータを使う方法と、FFTをかけて希望の周波数部分を抜き出して逆FFTをかけて復調する方法がある。
LabVIEWを使って、両方の方法で復調してみたが、後者の方法では、FFTと逆FFTの処理が重いうえ、FFTの前回分の一部を使うoverlapという方法を使ったせいか、はたまた作りが悪いのか、とても重かった。
LCDも何とか表示できるようになったので、これからやることを整理してみる。
1. IQ信号のFFT処理
選局のために使うだけなので、IQ信号の片方だけを使えばいいのだろうか。わからん。
LCDの表示サイズはx方向128ピクセルだから、2行にわけて表示すると、256ピクセルとなる。
したがって選局するためには、FFTのサイズ(ポイント数)は自動的に256となる。
この場合の分解能はサンプリング周波数が48KHzだから、48000/256=187.5Hzとなり、このままでは使い物にならない。
ここはサンプリング周波数の変換を組み合わせながら、分解能をあげることを考えよう。取りあえずはFFT処理をやってみる。
ちなみに、デシメータ処理を行い、サンプリング周波数を2KHzにすると、2000/256=7.8125Hzとなる。
2. FFT結果の並べ替え
FFT結果は周波数の昇順に並んでいないはずだから、これを昇順に並び替える。
dsPICのコンパイラには昇順に並び替える関数があるが、Blackfinのlibdspにはなさそうだ。処理は遅いかも知れないが、Cで作るか。
3. LCDへのスペクトル表示
FFTの昇順の並び替え結果の大きさに比例した、棒グラフ表示を行う。
現在はASCII文字コードだけであるが、棒グラフ用の表示パーツの作成が必要。
まだまだ、時間がかかりそうだ。
LabVIEWを使って、両方の方法で復調してみたが、後者の方法では、FFTと逆FFTの処理が重いうえ、FFTの前回分の一部を使うoverlapという方法を使ったせいか、はたまた作りが悪いのか、とても重かった。
LCDも何とか表示できるようになったので、これからやることを整理してみる。
1. IQ信号のFFT処理
選局のために使うだけなので、IQ信号の片方だけを使えばいいのだろうか。わからん。
LCDの表示サイズはx方向128ピクセルだから、2行にわけて表示すると、256ピクセルとなる。
したがって選局するためには、FFTのサイズ(ポイント数)は自動的に256となる。
この場合の分解能はサンプリング周波数が48KHzだから、48000/256=187.5Hzとなり、このままでは使い物にならない。
ここはサンプリング周波数の変換を組み合わせながら、分解能をあげることを考えよう。取りあえずはFFT処理をやってみる。
ちなみに、デシメータ処理を行い、サンプリング周波数を2KHzにすると、2000/256=7.8125Hzとなる。
2. FFT結果の並べ替え
FFT結果は周波数の昇順に並んでいないはずだから、これを昇順に並び替える。
dsPICのコンパイラには昇順に並び替える関数があるが、Blackfinのlibdspにはなさそうだ。処理は遅いかも知れないが、Cで作るか。
3. LCDへのスペクトル表示
FFTの昇順の並び替え結果の大きさに比例した、棒グラフ表示を行う。
現在はASCII文字コードだけであるが、棒グラフ用の表示パーツの作成が必要。
まだまだ、時間がかかりそうだ。
※コメント投稿者のブログIDはブログ作成者のみに通知されます