Post Go back to editing

Eliminate AXI tdd_core module when not including TDD in AD9361

Category: Hardware
Product Number: AD9361

Greetings,

I'm customizing the FPGA logic in a Pluto Rev C. I have disabled the TDD in the AD9361 to save FPGA resources; this works. I notice there is an AXI target axi_tdd_0/tdd_core which consumes some logic resources. Can someone recommend how to safely remove this? I considered simply tie-ing off the AXI target interface to always return 0's. However, I suspect there is a more complete solution where I tell the processing system that this device is no longer here?

Better yet, I would like to use this target destination as my own AXI interface, but that is beyond the scope of my question and I think has been answered before. For now I would just like my FPGA resources back.

Regards,

Steve

  • Hello,

    You can safely remove the axi_tdd_0 instance entirely and all the corresponding connections from the Pluto block design, then rebuild the project. If you're using Linux, you'll have to remove it from the devicetree, too.

    Kind regards,

    Stanca

  • #############
    ## WARNING ##
    #############

    If you don't delete it from the Linux devicetree, you will brick the Pluto, resulting in an issue like here

  • Thank you so much. I was hoping to not have to dig into the device tree, but it's the proper way. If I ultimately remove this, I'll certainly go this route. Thank you!

  • I was looking over the device tree at the link. I'm using firmware version 0.32. I see two entries for tdd (starting at line 35 in zync-pluto-sdr-revc.dts). Should both be removed/disabled?

    &amba {
    	axi_tdd_0: axi-tdd-0@7C440000 {
    		compatible = "adi,axi-tdd";
    		reg = <0x7C440000 0x10000>;
    		clocks = <&clkc 15>, <&adc0_ad9364 20>;
    		clock-names = "s_axi_aclk", "intf_clk";
    	};
    
    	iio_axi_tdd_0@0 {
    		compatible = "adi,iio-fake-platform-device";
    		adi,faked-dev = <&axi_tdd_0>;
    		adi,attribute-names =
    		"version", "core_id", "scratch", "magic",
    		"sync_soft", "sync_external", "sync_internal", "sync_reset",
    		"enable", "startup_delay_raw", "startup_delay_ms",
    		"burst_count", "frame_length_raw", "frame_length_ms",
    		"state", "internal_sync_period_raw", "internal_sync_period_ms",
    		"out_channel0_enable", "out_channel0_polarity",
    		"out_channel0_on_raw", "out_channel0_on_ms",
    		"out_channel0_off_raw", "out_channel0_off_ms",
    		"out_channel1_enable", "out_channel1_polarity",
    		"out_channel1_on_raw", "out_channel1_on_ms",
    		"out_channel1_off_raw", "out_channel1_off_ms",
    		"out_channel2_enable", "out_channel2_polarity",
    		"out_channel2_on_raw", "out_channel2_on_ms",
    		"out_channel2_off_raw", "out_channel2_off_ms";
    		label = "iio-axi-tdd-0";
    	};
    

    -Steve