Hi,

I am currently working on a custom rfnoc block that needs input from the
DDC but also gets samples from the host and sends them to the radio via
the DUC. The block works perfectly in simulation and even in gnuradio
but for some reason I cant get it to work in pure UHD.  In my UHD code I
always get a "No upstream blocks" warning from the DDC block and nothing
happens.
No reception and no transmission (No light on the panel) and the
registers in my block indicate that no data is flowing but UHD happily
transmits data to the FPGA.

Some info about my setup:

I am working on an X310 with the rate set to 184.32e6. My custom block
has two inputs and two outputs. Input 0 is wired to the DmaFifo and
Input 1 is connected to the DDC. Output 0 is connected to the DDC for
transmission while output 1 streams to the host.

I don't know if the warning is directly related to my problem but it is
my only guess, since it works in gnuradio. Any help would be appreciated.

The code below reproduces the warning (Unfortunately, I cant show you my
actual code):

> #include<uhd/device3.hpp>
> #include<uhd/rfnoc/radio_ctrl.hpp>
> #include<uhd/rfnoc/block_ctrl.hpp>
> #include<uhd/rfnoc/source_block_ctrl_base.hpp>
>
> int main(int argc, char *argv[]){
>     uhd::device3::sptr dev;
>     uhd::device_addr_t hint;
>
>     hint["addr"] = "192.168.10.2";
>
>     std::cout << "Opening USRP...\n";
>     dev = uhd::device3::make(hint);
>
>     //Block Declaration
>     uhd::rfnoc::radio_ctrl::sptr radio0;
>     uhd::rfnoc::block_ctrl_base::sptr lbt;
>     uhd::rfnoc::source_block_ctrl_base::sptr ddc;
>     uhd::rfnoc::source_block_ctrl_base::sptr duc;
>     uhd::rfnoc::source_block_ctrl_base::sptr dmaFifo;
>
>     uhd::rfnoc::block_id_t radio_id_0(0, "Radio", 0);
>     uhd::rfnoc::block_id_t lbt_id(0, "lbt", 0);
>     uhd::rfnoc::block_id_t duc_id(0, "DUC", 0);
>     uhd::rfnoc::block_id_t ddc_id(0, "DDC", 0);
>     uhd::rfnoc::block_id_t dmaFifo_id(0, "DmaFIFO", 0);
>
>     radio0 = dev->get_block_ctrl<uhd::rfnoc::radio_ctrl>(radio_id_0);
>     lbt = dev->get_block_ctrl<uhd::rfnoc::block_ctrl_base>(lbt_id);
>     ddc = dev->get_block_ctrl<uhd::rfnoc::source_block_ctrl_base>(ddc_id);
>     duc = dev->get_block_ctrl<uhd::rfnoc::source_block_ctrl_base>(duc_id);
>     dmaFifo =
> dev->get_block_ctrl<uhd::rfnoc::source_block_ctrl_base>(dmaFifo_id);
>     
>     dev->clear();
>         
>     uhd::rfnoc::graph::sptr graph;
>     graph = dev->create_graph("lbt_test");
>
>     graph->connect(radio_id_0,0, ddc_id,0);
>     graph->connect(duc_id,0, radio_id_0,0);
>     
>     graph->connect(lbt_id,0,duc_id,0);
>
>     graph->connect(ddc_id,0,lbt_id,1);
>     graph->connect(dmaFifo_id,0,lbt_id,0);    
>
>     uhd::stream_args_t tx_args("fc32","sc16");
>     tx_args.args["block_id"] = dmaFifo_id;
>
>     uhd::stream_args_t rx_args("fc32","sc16");
>     rx_args.args["block_id"] = lbt_id;
>     rx_args.args["block_port"] = "1";
>
>     radio0->set_rx_streamer(true, 0);
>     radio0->set_tx_streamer(true, 0);
>
>     uhd::tx_streamer::sptr tx_stream = dev->get_tx_stream(tx_args);    
>     uhd::rx_streamer::sptr rx_stream = dev->get_rx_stream(rx_args);    
>
>     uhd::stream_cmd_t
> cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS);
>     rx_stream->issue_stream_cmd(cmd);
> }


_______________________________________________
USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to