3

私はまだ GNU Radio を学んでいますが、信号処理ブロックの種類について理解するのに苦労しています。入力と出力の4つのサンプルで2つのサンプルを取るブロックを作成すると、2のインターポレーターになることを理解しています.

しかし今、フレーマーとなるブロックを作成したいと思います。したがって、2 つの入力と 1 つの出力があります。ブロックはn最初の入力からサンプルを受け取り、次にm2 番目の入力から入力を受け取り、入力 1 から受け取ったサンプルに追加して、それらを出力します。この場合、私のサンプルはバイトであると想定されています。

この場合の進め方を教えてください。私はそのように正しい道を歩んでいますか?このタイプのシナリオを進める方法を知っている人はいますか?

4

2 に答える 2

3

あなたのケース (入力 0 と入力 1 の出力に対する相対レートが異なる) は、sync_block/ interpolator/ decimatorGNU Radio が持つ「テンプレート」ではカバーされないため、一般的なブロック アプローチを使用する必要があります。

¹ に精通していると仮定すると、 (relative rate >1)、(<1)、(=1) ブロックgr_modtoolなどを追加するために使用できます。interpolatordecimatorssync

-t BLOCK_TYPE, --block-type=BLOCK_TYPE
                    One of sink, source, sync, decimator, interpolator,
                    general, tagged_stream, hier, noblock.

ただし、generalタイプにも注意してください。それを利用することで、入力と出力の関係に制限のないブロックを実装できます。つまり、

  1. consume()入力から取得したアイテムの数は、出力アイテムの数から導き出すことができなくなるため、入力から手動でアイテムを取得する必要があります。
  2. 与えられた出力に必要な項目の数を GNU Radio スケジューラーに伝えるメソッドを実装するforecast必要があります。

gr_modtool正しいコードを追加するだけでよいスタブが提供されます。


¹ そうでない場合: GNU Radio Guided Tutorialsのパート 3 などで紹介されているので、すぐに楽しく読めると思います。

于 2016-03-29T17:22:17.290 に答える