2016-03-02 43 views
2

我目前正在嘗試使用自定義源塊並行處理多個通道的信號。到目前爲止,我創建了一個OOT信號源模塊,它可以將只有一個通道的數據流式傳輸到一個輸出中。可變輸入/輸出數量的GNU無線電塊

現在我正在尋找擴展此模塊的方法,以便它可以並行支持更多數量的通道(=源塊的輸出;最多64個)。由於用於拉取樣本的協議將它們全部拉到一起,因此不可能使用同一個源塊的更多實例。

事情我迄今發現:

  • 一個pdf這似乎解釋了到底該怎麼做已經但是似乎它已經過時,而且是在GNU收音機此功能不再支持。
  • description應該在將來實現的功能。

是否有已知的解決方案或解決此問題的方法?

回答

4

看看add塊:它具有可配置的輸入!現在

Two different input configurations of the add block

,這裏的訣竅在於三個方面:

  1. 限定io_signature作爲輸入和輸出,允許可調整的數字。如果您使用gr_modtool add創建新塊,則您的io_signatures將填充爲<+MIN_IN+>,<+MAX_IN+><+MIN_OUT+><+MAX_OUT+>。調整這些以反映實際的最小和最大輸入和輸出端口號。如果您想要1infinity輸入,請使用1,-1
  2. 在您的(general_work方法中,通過執行諸如ninputs = input_items.size()之類的操作來檢查輸入的數量,並通過執行noutputs = output_items.size()來檢查輸出的數量。
  3. (可選,如果你想使用GRC)修改<sink>/<source>定義在塊GRC XML:

    <sink> 
         <name>in</name> 
         <type>complex</type> 
         <nports>$num_inputs</nports> 
    </sink> 
    

num_inputs可能是一個塊參數; compare the add_XX block源代碼。