我想为数字信号处理实现一个基于数据流的系统,就像GNU Radio一样,其中处理以块的形式进行,并且这些块串在一起以处理数据流。据我所知,有三种方法可以传递数据流:一个块可以“推送”数据到下一个块,一个块可以从前一个块“拉”数据,或者块可以处理数据缓冲区并返回数据缓冲区,调度程序处理缓冲区(最后一种方式是 GNU Radio 的操作方式)。
每种方法都需要权衡取舍。例如,对于接受一个输入流并返回两个输出流的块,“拉动”架构要求输出流使用任意大的缓冲区进行缓冲(第二个输出可以n
在第一个输出之前“拉动”样本)被拉)。类似地,“推送”方法对于采用 2 个输入流并返回 1 个输出流的块有同样的问题。但我认为这两种方法都使块实现更容易,因为每个块都可以将它们的输入和输出视为一个流。
在我进一步了解这个项目之前,我想知道:有没有研究过实现这种流程图的不同方式之间的权衡?我真的很想要一篇我可以阅读的文章,以便在实施中途遇到问题之前了解这些问题。