Hi Rob,

I can confirm the radio streams correctly.

I have also tried tx_streamer => multiDDC => rx_streamer which successfully
sends a number of samples, but none are received. (The script is below.)

Just to summarize, the IP core seems to be behaving correctly when
simulated in Vivado where I apply AXI handshaking, reset the core, and
clock it.

I have set all endpoints in the design as follows:

  ep0:                       # Stream endpoint name
    ctrl: True                      # Endpoint passes control traffic
    data: True                      # Endpoint passes data traffic
    buff_size: 32768                # Ingress buffer size for data

Regards, Kevin


graph = uhd.rfnoc.RfnocGraph("type=x300,addr=192.168.30.2")

tx_streamer = graph.create_tx_streamer(1, uhd.usrp.StreamArgs("sc16",
"sc16"))
rx_streamer = graph.create_rx_streamer(1, uhd.usrp.StreamArgs("sc16",
"sc16"))

gb = graph.get_block("0/multiddc#0")
graph.connect(tx_streamer, 0, gb.get_unique_id(), 0)
graph.connect(gb.get_unique_id(), 0, rx_streamer, 0)
graph.commit()

num_samps = 4 * tx_streamer.get_max_num_samps()
send_samps = np.array([[0x40004000] * num_samps], dtype="int32")

tx_md = uhd.types.TXMetadata()
tx_md.start_of_burst = True
tx_md.end_of_burst = True

recv_samps = np.zeros((1, num_samps), dtype="int32")

rx_md = uhd.types.RXMetadata()

num_sent = tx_streamer.send(send_samps, uhd.types.TXMetadata())
num_recv = rx_streamer.recv(recv_samps, rx_md, 0.1)


On Tue, 13 Sept 2022 at 00:36, Rob Kossler <rkoss...@nd.edu> wrote:

> One more thought. If the FPGA version that you built with dynamic linking,
> you should be able to create an RFNoC Graph as follows:
>   tx_streamer => multiDDC => rx_streamer(s)
> This way you can eliminate the radio from the equation and test in a very
> similar fashion to the way it is tested in a testbench.
>
> Rob
>
> On Mon, Sep 12, 2022 at 6:33 PM Rob Kossler <rkoss...@nd.edu> wrote:
>
>> Oops. Ignore what I said. I now realize you stated you were getting an
>> Overflow which of course you would never get if streaming hadn't started.
>> Rob
>>
>> On Mon, Sep 12, 2022 at 6:32 PM Rob Kossler <rkoss...@nd.edu> wrote:
>>
>>> Are you sure that the radio is even streaming?  The typical method for
>>> starting streaming is to tell the rx_streamer to start streaming.  Then, in
>>> UHD-land, the rx_streamer ctrl tells the next upstring block to start
>>> streaming such that this streaming command propagates up the chain until
>>> the radio receives it and starts streaming.  So, if your custom block does
>>> not forward the streaming command from the rx_streamer to the radio, then
>>> the radio never even starts streaming.  You can verify by simply monitoring
>>> the LEDs.
>>>
>>> If this is the problem, you can go-around the intended use by simply
>>> telling the radio to start streaming rather than the rx_streamer.  Or, of
>>> course, you can modify your custom block controller to propagate the
>>> streaming command.
>>> Rob
>>>
>>> On Mon, Sep 12, 2022 at 4:18 PM Kevin Williams <zs1...@gmail.com> wrote:
>>>
>>>> Yes, of course. But I don't get 1 sample from the ddc's, even with just
>>>> one channel of a 2:1 decimated channel connected to the rx streamer.
>>>>
>>>> On Mon, 12 Sept 2022 at 22:13, Jonathon Pendlum <
>>>> jonathon.pend...@ettus.com> wrote:
>>>>
>>>>> The aggregate output rate of the 5 streams could require more
>>>>> bandwidth than the 10 GigE interface can sustain. What are the exact 
>>>>> output
>>>>> rates?
>>>>>
>>>>> On Mon, Sep 12, 2022 at 3:53 PM Kevin Williams <zs1...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Those rates vary from a 2:1 decimation down to other rates.
>>>>>>
>>>>>> The host has 10 Gbe interfaces to the USRP.
>>>>>>
>>>>>> I get samples if i connect the radio to the rx streamer, just nothing
>>>>>> from the ddc's.
>>>>>>
>>>>>> On Mon, 12 Sept 2022 at 21:48, Jonathon Pendlum <
>>>>>> jonathon.pend...@ettus.com> wrote:
>>>>>>
>>>>>>> Hi Kevin,
>>>>>>>
>>>>>>> What are the sample rates for the 5 outputs? What connection are you
>>>>>>> using to your host PC, 1 GigE or 10 GigE?
>>>>>>>
>>>>>>> Jonathon
>>>>>>>
>>>>>>> On Mon, Sep 12, 2022 at 3:38 PM Kevin Williams <zs1...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi Jonathon,
>>>>>>>>
>>>>>>>> I've got an x310. The flowgraph is a simple radio->multiddc->(to 5x
>>>>>>>> outputs). I've tried both static and dynamic routing from the radio 
>>>>>>>> block.
>>>>>>>> I.e. the static route version:
>>>>>>>>
>>>>>>>> |    /
>>>>>>>> |   |       Static connections on this device:
>>>>>>>> |   |
>>>>>>>> |   |   * 0/Radio#0:0==>0/multiddc#0:0
>>>>>>>> |   |   * 0/multiddc#0:0==>0/SEP#2:0
>>>>>>>> |   |   * 0/multiddc#0:1==>0/SEP#3:0
>>>>>>>> |   |   * 0/multiddc#0:2==>0/SEP#4:0
>>>>>>>> |   |   * 0/multiddc#0:3==>0/SEP#5:0
>>>>>>>> |   |   * 0/multiddc#0:4==>0/SEP#6:0
>>>>>>>>
>>>>>>>>
>>>>>>>> On the input side it is all at the radio rate, but I hope my core
>>>>>>>> is being clocked at 214 MHz.
>>>>>>>>
>>>>>>>> When I simulate my IP core (which includes the AXI streaming
>>>>>>>> interfaces) it looks ok.
>>>>>>>>
>>>>>>>> Regards, Kevin
>>>>>>>>
>>>>>>>> On Mon, 12 Sept 2022 at 21:29, Jonathon Pendlum <
>>>>>>>> jonathon.pend...@ettus.com> wrote:
>>>>>>>>
>>>>>>>>> Hello Kevin,
>>>>>>>>>
>>>>>>>>> What device are you using and what does your flowgraph look like?
>>>>>>>>> What sample rate are you running at? If your block is running at the 
>>>>>>>>> radio
>>>>>>>>> sample rate (e.g. 200 MSPS on a X310), your block will need to 
>>>>>>>>> process one
>>>>>>>>> input sample every clock cycle on average.
>>>>>>>>>
>>>>>>>>> Jonathon
>>>>>>>>>
>>>>>>>>> On Mon, Sep 12, 2022 at 9:09 AM Kevin Williams <zs1...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>> Hi All,
>>>>>>>>>>
>>>>>>>>>> I've got an IP core that is causing an "ERROR_CODE_OVERFLOW" when
>>>>>>>>>> used in an RFNoC project.
>>>>>>>>>>
>>>>>>>>>> The core responds correctly when simulated outside the RFNoC
>>>>>>>>>> environment. (I can see correct output, the AXI streaming signalling,
>>>>>>>>>> back-pressure when required, etc.)
>>>>>>>>>>
>>>>>>>>>> I'm not sure how to go about debugging this, and am not yet
>>>>>>>>>> familiar enough with RFNoC to know what to ask.
>>>>>>>>>>
>>>>>>>>>> I have been thinking it was the core not being reset or clocked
>>>>>>>>>> correctly, but this is how it gets instantiated:
>>>>>>>>>>
>>>>>>>>>>   multiddc multiddc_i (
>>>>>>>>>>     //   - Using different clocks for the IP core and the AXI
>>>>>>>>>> interface. The IPCore_Clk and AXILite_ACLK must be
>>>>>>>>>>     //     synchronous and connected to the same clock source.
>>>>>>>>>> The IPCore_RESETN and AXILite_ARESETN must be
>>>>>>>>>>     //     connected to the same reset source. See
>>>>>>>>>> Synchronization of Global Reset Signal to IP Core Clock Domain.
>>>>>>>>>>     .IPCORE_CLK                (axis_data_clk),
>>>>>>>>>>     .IPCORE_RESETN             (~axis_data_rst),
>>>>>>>>>>
>>>>>>>>>>     .AXI4_Lite_ACLK            (axis_data_clk),
>>>>>>>>>>     .AXI4_Lite_ARESETN         (~axis_data_rst),
>>>>>>>>>>
>>>>>>>>>> The core YAML file describes the clock as:
>>>>>>>>>>
>>>>>>>>>> data:
>>>>>>>>>>   fpga_iface: axis_chdr
>>>>>>>>>>   clk_domain: ce
>>>>>>>>>>
>>>>>>>>>> In the project YAML file:
>>>>>>>>>>
>>>>>>>>>> clk_domains:
>>>>>>>>>>     - { srcblk: _device_, srcport: radio, dstblk: radio0,
>>>>>>>>>> dstport: radio }
>>>>>>>>>>     - { srcblk: _device_, srcport: ce,    dstblk: multiddc0,
>>>>>>>>>> dstport: ce }
>>>>>>>>>>
>>>>>>>>>> Is there something that might be an obvious first place to check?
>>>>>>>>>>
>>>>>>>>>> Many thanks, Kevin
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Kevin Williams
>>>>>>>>>> _______________________________________________
>>>>>>>>>> USRP-users mailing list -- usrp-users@lists.ettus.com
>>>>>>>>>> To unsubscribe send an email to usrp-users-le...@lists.ettus.com
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Kevin Williams
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>> --
>>>>>> Kevin Williams
>>>>>>
>>>>>
>>>>
>>>> --
>>>> Kevin Williams
>>>> _______________________________________________
>>>> USRP-users mailing list -- usrp-users@lists.ettus.com
>>>> To unsubscribe send an email to usrp-users-le...@lists.ettus.com
>>>>
>>>

-- 
Kevin Williams
_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com

Reply via email to