Disassembling The Popular 100M Logic Analyzer

This article comes from the disassembly activity of the Breadboard Community! Rich rewards! (Two DJI drones, two oscilloscopes, etc.)! Electronic engineers hurry up and participate!👇

Disassembling The Popular 100M Logic Analyzer
I have an older 100M logic analyzer that I bought a while ago. Its parameters were quite high at that time, with sampling rates of 100/50/32/16MHz for 3/6/9/16 channels, using a USB 2.0 high-speed interface. It is a clone of the Saleae Logic16 from a domestic manufacturer. Unfortunately, after the firmware was automatically upgraded, it could no longer be used. Since it can’t go to waste, let’s disassemble it for analysis and learning.
Disassembly

Disassembling The Popular 100M Logic Analyzer

Disassembling The Popular 100M Logic Analyzer

This is a common JTAG box, which can be pried open with a flat screwdriver.
Disassembling The Popular 100M Logic Analyzer
You can see the PCB.
Disassembling The Popular 100M Logic Analyzer
Disassembling The Popular 100M Logic Analyzer
Device Information
You can use UsbTreeView.exe to view the device’s enumeration information, which uses a vendor-customized device protocol.
Disassembling The Popular 100M Logic Analyzer
The enumeration content is as follows:
    =========================== USB Port1 ==========================
    Connection Status        : 0x01 (Device is connected)    Port Chain               : 2-1    Properties               : 0x01    IsUserConnectable       : yes    PortIsDebugCapable      : no    PortHasMultiCompanions  : no    PortConnectorIsTypeC    : no    ConnectionIndex          : 0x01 (Port 1)    CompanionIndex           : 0    CompanionHubSymLnk      : USB#ROOT_HUB30#4&302b2024&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}    CompanionPortNumber     : 0x0D (Port 13)    -> CompanionPortChain   : 2-13
          ========================== Summary =========================
    Vendor ID                : 0x21A9 (Saleae LLC)
    Product ID               : 0x1001
    USB Version              : 2.0
    Port maximum Speed       : High-Speed (Companion Port 2-13 supports SuperSpeed)
    Device maximum Speed     : High-Speed
    Device Connection Speed  : High-Speed
    Self powered             : no
    Demanded Current         : 100 mA
    Used Endpoints           : 1
          ======================== USB Device ========================
            +++++++++++++++++ Device Information ++++++++++++++++++
    Device Description       : Saleae Logic16 USB Logic Analyzer
    Device Path 1            : \\?\USB#VID_21A9&PID_1001#5&244f8fa8&0&1#{a5dcbf10-6530-11d2-901f-00c04fb951ed} (GUID_DEVINTERFACE_USB_DEVICE)
    Device Path 2            : \\?\USB#VID_21A9&PID_1001#5&244f8fa8&0&1#{dee824ef-729b-4a0e-9c14-b7117d33a817} (GUID_DEVINTERFACE_WINUSB)
    Device Path 3            : \\?\USB#VID_21A9&PID_1001#5&244f8fa8&0&1#{a6782bce-4376-4de2-8096-70aa9e8fed19}
    Device Path 4            : \\?\USB#VID_21A9&PID_1001#5&244f8fa8&0&1#{d509886e-3aa5-11df-861e-86b356d89593}
    Kernel Name              : \Device\USBPDO-7
    Device ID                : USB\VID_21A9&PID_1001\5&244F8FA8&0&1
    Hardware IDs             : USB\VID_21A9&PID_1001&REV_0000 USB\VID_21A9&PID_1001
    Driver KeyName           : {36fc9e60-c465-11cf-8056-444553540000}\0036 (GUID_DEVCLASS_USB)
    Driver                   : \SystemRoot\System32\drivers\WinUsb.sys (Version: 10.0.22621.608  Date: 2022-10-03)
    Driver Inf               : C:\WINDOWS\inf\oem36.inf
    Legacy BusType           : PNPBus
    Class                    : USB
    Class GUID               : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB)
    Service                  : WinUSB
    Enumerator               : USB
    Location Info            : Port_#0001.Hub_#0002
    Location IDs             : PCIROOT(0)#PCI(1400)#USBROOT(0)#USB(1), ACPI(_SB_)#ACPI(PC00)#ACPI(XHCI)#ACPI(RHUB)#ACPI(HS01)
    Container ID             : {21622f66-2b81-11ee-9f00-e20af6a8ada3}
    Manufacturer Info        : Saleae LLC
    Capabilities             : 0x04 (Removable)
    Status                   : 0x0180600A (DN_DRIVER_LOADED, DN_STARTED, DN_DISABLEABLE, DN_REMOVABLE, DN_NT_ENUMERATOR, DN_NT_DRIVER)
    Problem Code             : 0
    Address                  : 1
    Power State              : D0 (supported: D0, D3, wake from D0)
            +++++++++++++++++ Registry USB Flags +++++++++++++++++
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags
    GlobalDisableSerNumGen  : REG_BINARY 00
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\21A910010000
    osvc                    : REG_BINARY 00 00
            ---------------- Connection Information ---------------
    Connection Index         : 0x01 (Port 1)
    Connection Status        : 0x01 (DeviceConnected)
    Current Config Value     : 0x01 (Configuration 1)
    Device Address           : 0x0D (13)
    Is Hub                   : 0x00 (no)
    Device Bus Speed         : 0x02 (High-Speed)
    Number Of Open Pipes     : 0x00 (0 pipes to data endpoints)
    Data (HexDump)           : 01 00 00 00 12 01 00 02 FF FF FF 40 A9 21 01 10   ...........@.!..
                               00 00 00 00 00 01 01 02 00 0D 00 00 00 00 00 01   ................
                               00 00 00                                          ...
            --------------- Connection Information V2 -------------
    Connection Index         : 0x01 (1)
    Length                   : 0x10 (16 bytes)
    SupportedUsbProtocols    : 0x03
    Usb110                  : 1 (yes, port supports USB 1.1)
    Usb200                  : 1 (yes, port supports USB 2.0)
    Usb300                  : 0 (no, port not supports USB 3.0) -> but Companion Port 2-13 does
    ReservedMBZ             : 0x00
    Flags                    : 0x00
    DevIsOpAtSsOrHigher     : 0 (Device is not operating at SuperSpeed or higher)
    DevIsSsCapOrHigher      : 0 (Device is not SuperSpeed capable or higher)
    DevIsOpAtSsPlusOrHigher : 0 (Device is not operating at SuperSpeedPlus or higher)
    DevIsSsPlusCapOrHigher  : 0 (Device is not SuperSpeedPlus capable or higher)
    ReservedMBZ             : 0x00
    Data (HexDump)           : 01 00 00 00 10 00 00 00 03 00 00 00 00 00 00 00   ................
        ---------------------- Device Descriptor ----------------------
    bLength                  : 0x12 (18 bytes)
    bDescriptorType          : 0x01 (Device Descriptor)
    bcdUSB                   : 0x200 (USB Version 2.0)
    bDeviceClass             : 0xFF (Vendor Specific)
    bDeviceSubClass          : 0xFF
    bDeviceProtocol          : 0xFF
    bMaxPacketSize0          : 0x40 (64 bytes)
    idVendor                 : 0x21A9 (Saleae LLC)
    idProduct                : 0x1001
    bcdDevice                : 0x0000
    iManufacturer            : 0x00 (No String Descriptor)
    iProduct                 : 0x00 (No String Descriptor)
    iSerialNumber            : 0x00 (No String Descriptor)
    bNumConfigurations       : 0x01 (1 Configuration)
    Data (HexDump)           : 12 01 00 02 FF FF FF 40 A9 21 01 10 00 00 00 00   .......@.!......
                               00 01                                             ..
        ------------------ Configuration Descriptor -------------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x02 (Configuration Descriptor)
    wTotalLength             : 0x00AB (171 bytes)
    bNumInterfaces           : 0x01 (1 Interface)
    bConfigurationValue      : 0x01 (Configuration 1)
    iConfiguration           : 0x00 (No String Descriptor)
    bmAttributes             : 0x80
    D7: Reserved, set 1     : 0x01
    D6: Self Powered        : 0x00 (no)
    D5: Remote Wakeup       : 0x00 (no)
    D4..0: Reserved, set 0  : 0x00
    MaxPower                 : 0x32 (100 mA)
    Data (HexDump)           : 09 02 AB 00 01 01 00 80 32 09 04 00 00 00 FF FF   ........2.......
                               FF 00 09 04 00 01 06 FF FF FF 00 07 05 01 02 00   ................
                               02 00 07 05 81 02 00 02 00 07 05 02 02 00 02 00   ................
                               07 05 04 02 00 02 00 07 05 86 02 00 02 00 07 05   ................
                               88 02 00 02 00 09 04 00 02 06 FF FF FF 00 07 05   ................
                               01 03 40 00 01 07 05 81 03 40 00 01 07 05 02 03   ..@......@......
                               00 02 01 07 05 04 02 00 02 00 07 05 86 03 00 02   ................
                               01 07 05 88 02 00 02 00 09 04 00 03 06 FF FF FF   ................
                               00 07 05 01 03 40 00 01 07 05 81 03 40 00 01 07   .....@......@...
                               05 02 01 00 02 01 07 05 04 02 00 02 00 07 05 86   ................
                               01 00 02 01 07 05 88 02 00 02 00                  ...........
        ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x00 (Interface 0)
    bAlternateSetting        : 0x00
    bNumEndpoints            : 0x00 (Default Control Pipe only)
    bInterfaceClass          : 0xFF (Vendor Specific)
    bInterfaceSubClass       : 0xFF
    bInterfaceProtocol       : 0xFF
    iInterface               : 0x00 (No String Descriptor)
    Data (HexDump)           : 09 04 00 00 00 FF FF FF 00                        ..........
        ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x00 (Interface 0)
    bAlternateSetting        : 0x01
    bNumEndpoints            : 0x06 (6 Endpoints)
    bInterfaceClass          : 0xFF (Vendor Specific)
    bInterfaceSubClass       : 0xFF
    bInterfaceProtocol       : 0xFF
    iInterface               : 0x00 (No String Descriptor)
    Data (HexDump)           : 09 04 00 01 06 FF FF FF 00                        ..........
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x01 (Direction=OUT EndpointID=1)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 01 02 00 02 00                              .......
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x81 (Direction=IN EndpointID=1)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 81 02 00 02 00                              .......
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x02 (Direction=OUT EndpointID=2)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 02 02 00 02 00                              .......
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x04 (Direction=OUT EndpointID=4)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 04 02 00 02 00                              .......
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x86 (Direction=IN EndpointID=6)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 86 02 00 02 00                              .......
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x88 (Direction=IN EndpointID=8)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 88 02 00 02 00                              .......
        ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x00 (Interface 0)
    bAlternateSetting        : 0x02
    bNumEndpoints            : 0x06 (6 Endpoints)
    bInterfaceClass          : 0xFF (Vendor Specific)
    bInterfaceSubClass       : 0xFF
    bInterfaceProtocol       : 0xFF
    iInterface               : 0x00 (No String Descriptor)
    Data (HexDump)           : 09 04 00 02 06 FF FF FF 00                        ..........
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x01 (Direction=OUT EndpointID=1)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 01 03 40 00 01                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x81 (Direction=IN EndpointID=1)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 81 03 40 00 01                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x02 (Direction=OUT EndpointID=2)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 02 03 40 00 01                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x04 (Direction=OUT EndpointID=4)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 04 02 00 02 00                              .......
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x86 (Direction=IN EndpointID=6)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 86 03 00 02 01                              .......
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x88 (Direction=IN EndpointID=8)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 88 02 00 02 00                              .......
        ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x00 (Interface 0)
    bAlternateSetting        : 0x02
    bNumEndpoints            : 0x06 (6 Endpoints)
    bInterfaceClass          : 0xFF (Vendor Specific)
    bInterfaceSubClass       : 0xFF
    bInterfaceProtocol       : 0xFF
    iInterface               : 0x00 (No String Descriptor)
    Data (HexDump)           : 09 04 00 02 06 FF FF FF 00                        ..........
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x01 (Direction=OUT EndpointID=1)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 01 03 40 00 01                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x81 (Direction=IN EndpointID=1)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 81 03 40 00 01                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x02 (Direction=OUT EndpointID=2)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 02 03 40 00 01                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x04 (Direction=OUT EndpointID=4)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 04 02 00 02 00                              .......
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x86 (Direction=IN EndpointID=6)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 86 03 00 02 01                              .......
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x88 (Direction=IN EndpointID=8)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 88 02 00 02 00                              .......
        ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x00 (Interface 0)
    bAlternateSetting        : 0x02
    bNumEndpoints            : 0x06 (6 Endpoints)
    bInterfaceClass          : 0xFF (Vendor Specific)
    bInterfaceSubClass       : 0xFF
    bInterfaceProtocol       : 0xFF
    iInterface               : 0x00 (No String Descriptor)
    Data (HexDump)           : 09 04 00 02 06 FF FF FF 00                        ..........
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x01 (Direction=OUT EndpointID=1)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 01 03 40 00 01                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x81 (Direction=IN EndpointID=1)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 81 03 40 00 01                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x02 (Direction=OUT EndpointID=2)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 02 03 40 00 01                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x04 (Direction=OUT EndpointID=4)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 04 02 00 02 00                              .......
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x86 (Direction=IN EndpointID=6)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 86 03 00 02 01                              .......
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x88 (Direction=IN EndpointID=8)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 88 02 00 02 00                              .......
        --------- Device Qualifier Descriptor (for Full-Speed) --------
    bLength                  : 0x0A (10 bytes)
    bDescriptorType          : 0x06 (Device_qualifier Descriptor)
    bcdUSB                   : 0x200 (USB Version 2.00)
    bDeviceClass             : 0xFF (Vendor Specific)
    bDeviceSubClass          : 0xFF
    bDeviceProtocol          : 0xFF
    bMaxPacketSize0          : 0x40 (64 Bytes)
    bNumConfigurations       : 0x01 (1 other-speed configuration)
    bReserved                : 0x00
    Data (HexDump)           : 0A 06 00 02 FF FF FF 40 01 00                     .......@..
        ------------ Other Speed Configuration Descriptor -------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x07 (Other_speed_configuration Descriptor)
    wTotalLength             : 0x00AB (171 bytes)
    bNumInterfaces           : 0x01 (1 Interface)
    bConfigurationValue      : 0x01 (Configuration 1)
    iConfiguration           : 0x00 (No String Descriptor)
    bmAttributes             : 0x80
    D7: Reserved, set 1     : 0x01
    D6: Self Powered        : 0x00 (no)
    D5: Remote Wakeup       : 0x00 (no)
    D4..0: Reserved, set 0  : 0x00
    MaxPower                 : 0x32 (100 mA)
    Data (HexDump)           : 09 07 AB 00 01 01 00 80 32 09 04 00 00 00 FF FF   ........2.......
                               FF 00 09 04 00 01 06 FF FF FF 00 07 05 01 02 40   ...............@                               00 00 07 05 81 02 40 00 00 07 05 02 02 40 00 00   ......@......@..                               07 05 04 02 40 00 00 07 05 86 02 40 00 00 07 05   ....@......@......@.                               0A 07 05 88 02 40 00 00 09 04 00 02 06 FF FF FF   .....@..........                               00 07 05 01 03 40 00 0A 07 05 81 03 40 00 0A 07   .....@......@...                               05 02 01 40 00 01 07 05 04 02 40 00 00 07 05 86   ...@......@.....                               01 40 00 01 07 05 88 02 40 00 00                  .@......@..
        ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x00 (Interface 0)
    bAlternateSetting        : 0x00
    bNumEndpoints            : 0x00 (Default Control Pipe only)
    bInterfaceClass          : 0xFF (Vendor Specific)
    bInterfaceSubClass       : 0xFF
    bInterfaceProtocol       : 0xFF
    iInterface               : 0x00 (No String Descriptor)
    Data (HexDump)           : 09 04 00 00 00 FF FF FF 00                        ..........
        ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x00 (Interface 0)
    bAlternateSetting        : 0x01
    bNumEndpoints            : 0x06 (6 Endpoints)
    bInterfaceClass          : 0xFF (Vendor Specific)
    bInterfaceSubClass       : 0xFF
    bInterfaceProtocol       : 0xFF
    iInterface               : 0x00 (No String Descriptor)
    Data (HexDump)           : 09 04 00 01 06 FF FF FF 00                        ..........
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x01 (Direction=OUT EndpointID=1)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0040 (64 bytes)
    bInterval                : 0x00 (ignored)
    Data (HexDump)           : 07 05 01 02 40 00 00                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x81 (Direction=IN EndpointID=1)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0040 (64 bytes)
    bInterval                : 0x00 (ignored)
    Data (HexDump)           : 07 05 81 02 40 00 00                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x02 (Direction=OUT EndpointID=2)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0040 (64 bytes)
    bInterval                : 0x00 (ignored)
    Data (HexDump)           : 07 05 02 02 40 00 00                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x04 (Direction=OUT EndpointID=4)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0040 (64 bytes)
    bInterval                : 0x00 (ignored)
    Data (HexDump)           : 07 05 04 02 40 00 00                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x86 (Direction=IN EndpointID=6)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0040
    bInterval                : 0x00 (ignored)
    Data (HexDump)           : 07 05 86 02 40 00 00                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x88 (Direction=IN EndpointID=8)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0040
    bInterval                : 0x00 (ignored)
    Data (HexDump)           : 07 05 88 02 40 00 00                              ....@..
        ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x00 (Interface 0)
    bAlternateSetting        : 0x02
    bNumEndpoints            : 0x06 (6 Endpoints)
    bInterfaceClass          : 0xFF (Vendor Specific)
    bInterfaceSubClass       : 0xFF
    bInterfaceProtocol       : 0xFF
    iInterface               : 0x00 (No String Descriptor)
    Data (HexDump)           : 09 04 00 02 06 FF FF FF 00                        ..........
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x01 (Direction=OUT EndpointID=1)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 01 03 40 00 01                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x81 (Direction=IN EndpointID=1)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 81 03 40 00 01                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x02 (Direction=OUT EndpointID=2)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 02 03 40 00 01                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x04 (Direction=OUT EndpointID=4)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 04 02 00 02 00                              .......
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x86 (Direction=IN EndpointID=6)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 86 03 00 02 01                              .......
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x88 (Direction=IN EndpointID=8)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 88 02 00 02 00                              .......
        ---------------- Interface Descriptor -----------------
    bLength                  : 0x09 (9 bytes)
    bDescriptorType          : 0x04 (Interface Descriptor)
    bInterfaceNumber         : 0x00 (Interface 0)
    bAlternateSetting        : 0x02
    bNumEndpoints            : 0x06 (6 Endpoints)
    bInterfaceClass          : 0xFF (Vendor Specific)
    bInterfaceSubClass       : 0xFF
    bInterfaceProtocol       : 0xFF
    iInterface               : 0x00 (No String Descriptor)
    Data (HexDump)           : 09 04 00 02 06 FF FF FF 00                        ..........
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x01 (Direction=OUT EndpointID=1)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 01 03 40 00 01                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x81 (Direction=IN EndpointID=1)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 81 03 40 00 01                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x02 (Direction=OUT EndpointID=2)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 02 03 40 00 01                              ....@..
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x04 (Direction=OUT EndpointID=4)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 04 02 00 02 00                              .......
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x86 (Direction=IN EndpointID=6)
    bmAttributes             : 0x03 (TransferType=Interrupt)
    wMaxPacketSize           : 0x0040
    Bits 15..13             : 0x00 (reserved, must be zero)
    Bits 12..11             : 0x00 (0 additional transactions per microframe -> allows 1..1024 bytes per packet)
    Bits 10..0              : 0x40 (64 bytes per packet)
    bInterval                : 0x01 (1 microframe -> 0.125 ms)
    Data (HexDump)           : 07 05 86 03 00 02 01                              .......
        ----------------- Endpoint Descriptor -----------------
    bLength                  : 0x07 (7 bytes)
    bDescriptorType          : 0x05 (Endpoint Descriptor)
    bEndpointAddress         : 0x88 (Direction=IN EndpointID=8)
    bmAttributes             : 0x02 (TransferType=Bulk)
    wMaxPacketSize           : 0x0200 (max 512 bytes)
    bInterval                : 0x00 (never NAKs)
    Data (HexDump)           : 07 05 88 02 00 02 00                              .......
          -------------------- String Descriptors -------------------
    none
Based on the enumeration information, the following topology structure is drawn.
Three interfaces are used for different transmission methods, each using six endpoints. Interface 0:0 has no endpoints.
Disassembling The Popular 100M Logic Analyzer
FPGA Schematic Analysis
It uses the Xilinx (now part of AMD) Spartan-3A XC3S200A, which has 200K logic gates.
Disassembling The Popular 100M Logic Analyzer
CPLD
It uses the Altera (now part of Intel) EPM3032A, with 600 logic gates and 32 macro cells.
Disassembling The Popular 100M Logic Analyzer

Among them, J3 is the JTAG debugging port of EPM3032A, defined as follows:

1

2

3

4

5

6

TMS

TDI

TCK

TDO

GND

3.3V

The pin usage of EPM3032A is as follows:Disassembling The Popular 100M Logic Analyzer

USB Interface Chip

It uses the Cypress (now part of Infineon) CY7C68013A-56PVXC (FX2LP). This chip has a very powerful feature, which is to directly send the pin signals through USB packets without needing additional controllers, making it a common solution for low-cost logic analyzers, requiring only this chip without other FPGA, CPLD, or MCU.
Disassembling The Popular 100M Logic Analyzer
EEPROM
It uses the Atmel (now part of Microchip) 24LC02BI, which supports speeds of 400K and has a capacity of 2Kbit.
The EEPROM is connected to the CY7C68013A for USB communication configuration.
Addresses A0-A2 are all 0, so the IIC address is 0x50.
The W2 jumper cap is used for configuring WP write protection.
Disassembling The Popular 100M Logic Analyzer
3.3V Power Supply
It uses the AMS AMS1117-3.3, which is the most commonly used 3.3V power supply chip.
Disassembling The Popular 100M Logic Analyzer
1.2V Power Supply
It uses the AMS AMS1117-1.2.
Disassembling The Popular 100M Logic Analyzer
Encryption Chip
at88sc0104 is not soldered.
Disassembling The Popular 100M Logic Analyzer
Crystal Oscillator
A 24MHz passive crystal is used.
Disassembling The Popular 100M Logic Analyzer
Comparison with the ordinary one.
CPLD and FPGA are used for IO processing.
Summary
The Saleae logic analyzer was indeed very popular back then, mainly due to its high cost-performance ratio, and the upper computer software was very well done, leading to many cloned boards. Especially this 100M model was a hot model at the time. Through disassembly, we can see that it uses a CPLD + FPGA + USB interface IC solution, and the hardware design is not particularly special; the core technology lies in embedded software and upper computer, which is also a weakness of domestic instruments. However, there are now many domestic logic analyzers, oscilloscopes, and other instruments with high cost-performance ratios, and this aspect is getting better and better.

END

Disassembly Activity

Disassembling The Popular 100M Logic Analyzer

Activity Time:September 1 – October 31

Award Settings: First Prize (2): DJI Mini 2 SE Drone / DJI Pocket 2 Gimbal Camera (Choose 1) Second Prize (2): Dual Channel / 100MHz / 1G Sampling Oscilloscope (Dingyang SDS1102X-C) Third Prize (3): 500 Yuan JD Card Encouragement Participation Prize (10): 50 Yuan JD Card

Note:

1. The first prize selection criteria: one for the overall evaluation of “participants” and one for the evaluation of “entries”.

2. Only first prizes are awarded separately for entries, and the rest are awarded based on “participants”!

3. No repeated awards!

Disassembling The Popular 100M Logic AnalyzerClick to read the original text, participate in the activity!

Leave a Comment