0

GNU Radioによく似た、デジタル信号処理用のデータフローベースのシステムを実装したいと思います。このシステムでは、処理がブロック単位で行われ、これらのブロックが連結されてデータ ストリームが処理されます。私が知る限り、データのストリームを渡すには 3 つの方法があります。ブロックが次のブロックにデータを「プッシュ」する方法、ブロックが前のブロックからデータを「プル」する方法、またはブロックがデータのバッファーを処理する方法です。バッファを処理するスケジューラを使用して、データのバッファを返します (この最後の方法が GNU Radio の動作方法です)。

それぞれのアプローチにはトレードオフがあります。たとえば、「プル」アーキテクチャでは、1 つの入力ストリームを受け取り、2 つの出力ストリームを返すブロックの場合、出力ストリームを任意の大きなバッファでバッファリングする必要があります (2 番目の出力はn、最初の出力の前のサンプルに対して「プル」できます)。引っ張られます)。同様に、「プッシュ」アプローチには、2 つの入力ストリームを受け取り、1 つの出力ストリームを返すブロックと同じ問題があります。しかし、各ブロックは入力と出力を 1 つのストリームとして表示できるため、これらの方法はどちらもブロックの実装を容易にすると主張します。

プロジェクトをさらに進める前に、知りたいのですが、このようなフローグラフを実装するさまざまな方法の間のトレードオフに関する研究はありますか? 実装の途中で問題に遭遇する前に問題を理解できるように、読めるような記事が本当に欲しいです。

4

1 に答える 1