Communications flow

This graph shows the flow of communications from the interface to each of the devices.

Note

You can zoom and move around the diagram using the mouse.

        flowchart LR
    subgraph End devices
        subgraph USB devices
            subgraph SDR["LimeSDR components"]
                LMS7002M_SDR[LMS7002M]
                FPGA_SDR[FPGA]
            end
            subgraph SDRMini["LimeSDR-Mini components"]
                LMS7002M_Mini[LMS7002M]
                FPGA_Mini[FPGA]
            end
        end
        subgraph PCIe devices
            subgraph X3[LimeSDR X3 components]
                FPGA_X3[FPGA]
                LMS7002M_X3["LMS7002M"]
            end
            subgraph XTRX[LimeSDR XTRX components]
                FPGA_XTRX["FPGA"]
                LMS7002M_XTRX["LMS7002M"]
            end
            subgraph MMX8[LimeSDR MMX8 components]
                ADF4002_MMX8["ADF4002"]
                FPGA_MMX8["FPGA"]
                LMS7002M_MMX8["LMS7002M"]
            end
        end
    end

    subgraph Communication libraries
        subgraph USB
            subgraph UNIX
                libusb["libusb library"]
            end
            subgraph Windows
                Cypress["Cypress FX3 library"]
                FTD3XX["FTD3XX Library"]
            end
        end
        subgraph PCIe
            limepcie["limepcie library"]
        end
    end

    %% PCIe
    ISPI-.->LMS64C_ADF_Over_PCIe_MMX8 & IComms & SlaveSelectShim
    IComms-.->LMS64C_LMS7002M_Over_PCIe & LMS64C_FPGA_Over_PCIe & LMS64C_LMS7002M_Over_PCIe_MMX8 & LMS64C_FPGA_Over_PCIe_MMX8

    SlaveSelectShim-->|X3 only|IComms

    LMS64C_LMS7002M_Over_PCIe & LMS64C_FPGA_Over_PCIe-->|X3 & XTRX|PCIE_CSR_Pipe
    LMS64C_LMS7002M_Over_PCIe_MMX8 & LMS64C_ADF_Over_PCIe_MMX8 & LMS64C_FPGA_Over_PCIe_MMX8-->|MMX8|PCIE_CSR_Pipe

    ISerialPort-.->PCIE_CSR_Pipe
    PCIE_CSR_Pipe-->LimePCIe-->limepcie

    limepcie-->|XTRX|XTRX
    limepcie-->|X3|X3
    limepcie-->|MMX8|MMX8

    %% USB
    IComms-.->LMS64C_FPGA_Over_USB & LMS64C_LMS7002M_Over_USB-->USB_CSR_Pipe
    ISerialPort-.->USB_CSR_Pipe

    USB_CSR_Pipe-.->USB_CSR_Pipe_Mini & USB_CSR_Pipe_SDR
    USB_CSR_Pipe_SDR-->FX3
    USB_CSR_Pipe_Mini-->FT601

    FX3-->|On Windows|Cypress-->SDR
    FT601-->|On Windows|FTD3XX-->SDRMini
    FX3 & FT601-->|On UNIX|libusb

    libusb-->|Using FT601|SDRMini 
    libusb-->|Using FX3|SDR