我目前正尝试使用自定义源块并行执行多个通道的信号处理。到目前为止,我创建了一个OOT源块,它只将一个通道的数据流式传输到一个输出中。
现在我正在寻找扩展此模块的方法,以便它可以并行支持更多数量的通道(=源块的输出;最多64个)。因为用于拉取样本的协议将它们全部拉到一个,所以不可能使用相同源块的更多实例。
到目前为止我找到的东西:
此问题是否有已知的解决方案或解决方法?
答案 0 :(得分:4)
查看add
块:它可以配置许多输入!
现在,这里的技巧有三个:
io_signature
定义为允许可调整数字的输入和输出。如果您使用gr_modtool add
创建新版块,则io_signatures
将填充<+MIN_IN+>
,<+MAX_IN+>
,<+MIN_OUT+>
和<+MAX_OUT+>
。调整这些以反映您的实际最小和最大输入和输出端口号。如果您想要1
到infinity
输入,请使用1
,-1
。 general_
)work
方法中,通过执行ninputs = input_items.size()
等操作检查输入数量,并通过noutputs = output_items.size()
检查输出数量。< / LI>
(可选,如果您要使用GRC)修改块GRC XML中的<sink>
/ <source>
定义:
<sink>
<name>in</name>
<type>complex</type>
<nports>$num_inputs</nports>
</sink>
num_inputs
可以是块参数; compare the add_XX
block源代码。