aioscilloscope / Hardware / Owon ADS800A

Inside the Owon ADS800A, part by part

A Nexell S5P4418 runs the scope on Android 7.1; a Xilinx Spartan-7 XC7S75 FPGA, configured from a file at every boot, catches the samples and hands them to the SoC over its static-memory bus — not PCIe, as on the Rigol scopes. This page is what we have read on our own ADS802A, from read-only captures of its stock system. Each part is marked by how we know it. NovaOS now boots on it, on Linux 7.2.10 (where it stands); this is the map the work is built from, and it grows as the work does.

CH1The block diagram

Signal flows left to right across the top: input, front end, ADC, FPGA. The FPGA captures the record and the SoC reads it back over a 16-bit parallel memory bus. Solid lines carry data; dashed lines are slow control. Our bench unit is a 2-channel ADS802A; the 4-channel models in the family add two more input chains and an arbitrary-generator FPGA that this unit does not fit.

Block diagram of the Owon ADS800A (ADS802A) Two BNC inputs feed two analog front-end chains with relays and VGAs, then a 12-bit ADC. The ADC feeds a Xilinx Spartan-7 XC7S75 FPGA, which captures, triggers and records the samples. The FPGA is configured at every boot by a kernel driver that clocks a file from the eMMC into it over five slave-serial GPIOs, and it is read and controlled by the Nexell S5P4418 over the SoC's static-memory bus as a 16-bit window at 0x34000000. The S5P4418 has four Cortex-A9 cores, a Mali-400 GPU, 2 GiB of DDR3 and 8 GB of eMMC. It drives a 1024x600 LVDS panel and HDMI, a Goodix GT928 touch controller, Ethernet and USB, and carries an AXP228 PMIC, a PCF8563 real-time clock and a TMP175 temperature sensor. CH1–CH2BNC1 MΩ Front end ×2 attenuator relaysAC / DC / GND coupleLMH6518 VGA*20 MHz limit in the VGA ADCADC12DL500 class*12-bitrate: in progress samples Xilinx Spartan-7XC7S75 acquisition: lane capturetrigger enginerecord memoryread-out FSM drives the front-endrelay HC595 chain IDCODE0x037C8093 config: slave serial,from a file at boot FPGA imageMain.bin on /oem(eMMC partition)loaded every boot 5 GPIOs:PROG · CCLK · DINDONE · INIT_B AWG FPGA(4-ch models)not fitted here static-memory bus (EIM)16-bit · 0x34000000bank CS13, 64 MiB config GPIO(boot) Nexell S5P44184× Cortex-A9, ≤ 1.2 GHzMali-400 GPU2 GiB DDR3eMMC 8 GBAXP228 PMIC · PCF8563 RTCTMP175 · ALC5623 audio Front panelGoodix GT928 touch1024×600, 5-pointbuzzer · LA detect · keys I²C · GPIO 7″ panel 1024×600LVDS · ≈ 51.4 MHz pixel clock HDMI out (shared DDC) Ethernet (RGMII) · USBUSBTMC · ADB · MTP gadget analog FPGA host I/O * part not yet read on our own board
Drawn by us from our ADS802A's device tree and its boot and system captures. Parts marked * are named or driven by the firmware but not yet read off the board.

CH2Every part we know of

verified on our unit means we read it ourselves on our ADS802A: a node in the running device tree, a live /sys or /proc entry, or the FPGA's own ID code. in the firmware means the stock kernel or app names or drives it, but we have not seen the part itself. public is a published claim, or a known part, we have not confirmed. in progress is what we are working out now.

PartJobConnected byHow we know
Nexell S5P4418Runs everything: OS, UI, drivers. 4 × Cortex-A9 up to 1.2 GHz, Mali-400 GPU—verified on our unit CPU IDs and the SoC node
2 GiB DDR3Main memorySoC DRAM controllerverified size and range
eMMC 8 GB (7.28 GiB)The only storage: Android system, the /oem identity and FPGA image, and the settings partitionSD/MMC bus, 4-bit, 100 MHz, non-removableverified protocol and partition map
Xilinx Spartan-7 XC7S75Acquisition FPGA: capture, trigger, record memory, read-out, and it serializes the front-end relaysSoC static-memory bus (16-bit, 0x34000000); configured over 5 GPIOsverified from its ID code (0x037C8093), and in the firmware's loader
Analog front end ×2Per channel: attenuator and coupling (AC/DC/GND) relays and a VGA, whose own filter is the 20 MHz bandwidth limit. The inputs are 1 MΩ only: Owon's firmware has a 50 Ω setting for other boards, and never uses it on this oneRelays shifted into a 74HC595 chain by the FPGA; VGA set over FPGA registersin the firmware the control path. in progress the analog parts (LMH6518 class)
ADCSampling, 12-bitTo the FPGAin the firmware a TI ADC12DL500-class part, as the stock software sets it up. in progress the exact marking and the sample rate
Goodix GT928Capacitive touch, 1024 × 600, 5-pointI²C, address 0x5dverified device and live driver
7″ LVDS panel1024 × 600, ≈ 51.4 MHz pixel clockLVDS from the SoC display controllerverified timing and live output. in progress the panel controller marking
HDMI outThe SoC's own HDMI output, sharing the panel's DDC bus—verified the output node is enabled
X-Powers AXP228Power management: all core, I/O and DDR rails, and an RTC LDOBit-banged I²C, address 0x34verified device and live driver
NXP PCF8563Real-time clock (the SoC's own RTC is disabled)I²C, address 0x51verified device and clock-out
TMP175Board temperature; it re-trims the front-end gain over temperatureI²C, address 0x37verified device. in the firmware the temperature-compensation callback
Realtek ALC5623Audio codecI²S, plus I²C control at 0x1averified device and live driver
Ethernet (GMAC)LAN control; the SCPI, VXI-11 and web servicesRGMII to a Realtek RTL8211F PHY (MDIO address 4)verified the MAC, the PHY's ID and a gigabit link
USB device portA gadget carrying USBTMC (SCPI), ADB and MTP at oncedwc2 OTGverified the live gadget configuration
SMSC USB25144-port USB 2.0 hubSoC USB host (EHCI/OHCI)in the firmware driver registered. in progress its exact role on this board
Board peripheralsBuzzer, logic-analyser probe detect, front-panel LED chain and keysGPIO; a 74HC595 LED chainverified buzzer and LA-detect live. in the firmware the LED chain; only the Home key is live
AWG (“AG”) FPGAArbitrary-generator FPGA on the 4-channel modelswould use its own GPIOsverified not fitted on the ADS802A (boots with ag=0); its pins read as pulls

CH3The FPGA, the register bus and the front end

We deliberately leave the analog bandwidth, the sample rate and the record memory depth off this page: they are not yet established from a primary source, and a guessed figure here would be worse than none. When we measure them on the unit, they will appear here with how we measured them.

Still unknown, and how we will check

Credits and sources

Thank you to the owners in EEVblog's Voltcraft DOV thread, who mapped this platform first.

We read and measure; we do not publish Owon's code. OWON, Voltcraft and CEI are trademarks of their owners. Have an ADS800A, an ADS900A, a DOV702/DOV704 or a CEI914/CEI924, and photos of its board? Tell us — we will credit you and fill in the parts we list as in progress.