<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://sigrok.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Planet9</id>
	<title>sigrok - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://sigrok.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Planet9"/>
	<link rel="alternate" type="text/html" href="https://sigrok.org/wiki/Special:Contributions/Planet9"/>
	<updated>2026-04-10T13:04:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16227</id>
		<title>Kingst LA2016</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16227"/>
		<updated>2021-11-19T11:22:12Z</updated>

		<summary type="html">&lt;p&gt;Planet9: Add link to open fx2 firmware to encourage testing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Kingst la2016 mugshot.png|180px]]&lt;br /&gt;
| name             = Kingst LA2016&lt;br /&gt;
| status           = supported&lt;br /&gt;
| source_code_dir  = kingst-la2016&lt;br /&gt;
| channels         = 16&lt;br /&gt;
| samplerate       = 200MHz max.&lt;br /&gt;
| samplerate_state = State analysis not supported&lt;br /&gt;
| triggers         = Level (multiple channels)&amp;lt;br/&amp;gt;Edge (one channel)&lt;br /&gt;
| voltages         = -50V &amp;amp;mdash; 50V&lt;br /&gt;
| threshold        = Configurable:&amp;lt;br/&amp;gt;-4V&amp;amp;mdash;4V, min step 0.01V&lt;br /&gt;
| memory           = 128MByte DDR2 SDRAM&amp;lt;br/&amp;gt;40M&amp;amp;mdash;10G samples&lt;br /&gt;
| compression      = Yes&lt;br /&gt;
| website          = [http://www.qdkingst.com/en qdkingst.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Kingst LA2016&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyser with 200MHz maximum sampling rate and 128MB sample memory.&lt;br /&gt;
The current vendor is &amp;quot;Qingdao Kingst Electronics Co., Ltd.&amp;quot; but older models are branded &amp;quot;Jiankun&amp;quot; rather than &amp;quot;Kingst&amp;quot;.&lt;br /&gt;
Detailed specifications and the vendor software are available on the [http://www.qdkingst.com/en/products Kingst website].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Support Status:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:03-OCT-2021 The Kingst LA2016 and LA1016 are now supported in the PulseView nightly build for Linux and Windows. The macOS build is not yet tested AFAIK.&lt;br /&gt;
:19-NOV-2021 [https://github.com/sigrokproject/sigrok-firmware/pull/1 Open firmware] for the FX2 MCU is available for testing.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Known Issues:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
#PulseView allows the user to setup multiple edge triggers, but the analyser only supports one. Please only use one edge trigger to avoid undefined behaviour. Note the edge trigger can be combined with any number of level triggers.&lt;br /&gt;
#The analyser input threshold can be adjusted in PulseView using a slider control, but there is no gui feedback to confirm the threshold voltage. Workaround for now is to view the log file for confirmation of the set trigger level. The analyser is always initialised to 1.6V input threshold on startup.&lt;br /&gt;
#Unplugging the analyser and then attempting to start a capture causes PulseView to crash.&lt;br /&gt;
#When using the LA1016, the maximum sampling rate is 100MHz but the driver name is still displayed as LA2016.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
This logic analyser has been on the market since around 2012 and there are a few different revisions of it.&lt;br /&gt;
The [[Media:Kingst_LA2016_LA1016_Schematic.zip|schematic]] has been reverse engineered from&lt;br /&gt;
a unit purchased in 2020 containing a PCB marked as v1.3.0. &lt;br /&gt;
The circuitry of older PCBs is similar but may have different voltage regulators, different input&lt;br /&gt;
channel routing to the FPGA, and lack the input threshold adjustment.&lt;br /&gt;
&lt;br /&gt;
The LA1016 uses identical hardware with a different FPGA bitstream which limits the sample rate to 100MHz maximum.&lt;br /&gt;
&lt;br /&gt;
All of these devices use the same firmware for the FX2LP MCU but there are four different FPGA bitstreams;&lt;br /&gt;
i.e. LA1016 &amp;amp; LA2016 bitstreams and the older versions of these (to swap some of the input channels as required by PCB routing changes).&lt;br /&gt;
Once the FX2LP firmware has been loaded, a &amp;#039;magic number&amp;#039; is read from EEPROM which identifies the&lt;br /&gt;
device and thus allows the correct FPGA bitstream to be loaded.&lt;br /&gt;
&lt;br /&gt;
Note that the LA1016 cannot be boosted to 200MHz by changing the &amp;#039;magic number&amp;#039; or the FPGA bitstream.&lt;br /&gt;
When the FPGA initialises, its reads 16 bytes from U10 which are used to authenticate the bitstream; these bytes are different for 100 and 200MHz devices.&lt;br /&gt;
Furthermore, the OEM software performs a challenge-response with U10 to authenticate the logic analyser as genuine &amp;#039;Kingst&amp;#039;.&lt;br /&gt;
The good news is that U10 does not impact sigrok support in any way and we don&amp;#039;t need to communicate with it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main components and their function:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MCU&amp;#039;&amp;#039;&amp;#039; Cypress FX2LP&lt;br /&gt;
:This MCU only has volatile memory and in this implementation it&amp;#039;s firmware is loaded from the host by the application software.&lt;br /&gt;
:Either the OEM firmware or open source firmware can be used.&lt;br /&gt;
:In essence, it just performs data moving operations:&lt;br /&gt;
#Endpoint 0 to EEPROM read/write&lt;br /&gt;
#Endpoint 0 to SPI read/write for FPGA control registers&lt;br /&gt;
#Endpoint 2 bulk out to SPI for loading FPGA bitstream&lt;br /&gt;
#Endpoint 6 bulk in to read capture data from FPGA/SDRAM&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;EEPROM&amp;#039;&amp;#039;&amp;#039; Atmel AT24C02 2Kbit&lt;br /&gt;
:This non-volatile memory stores:&lt;br /&gt;
#VID:PID which is 77a1:01a2 for LA1016 and LA2016 devices&lt;br /&gt;
#&amp;#039;magic number&amp;#039; to identify model and revision&lt;br /&gt;
#purchase date (presumably for warranty claims)&lt;br /&gt;
#other information related to U10 but not of interest to sigrok&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039; Altera EP4CE6&lt;br /&gt;
:Currently requires the OEM bitstream.&lt;br /&gt;
:Has a bank of approximately 60 byte-wide registers accessed via SPI which are used to contol FPGA functions.&lt;br /&gt;
:Captures 16 input channels, performs compression (run length encoding, 16bit sample plus 8 bit repetition count).&lt;br /&gt;
:Stores samples to SDRAM (or streams direct to USB but we don&amp;#039;t implement that method).&lt;br /&gt;
:Interestingly, this device (6K LE) shares the same die as the next up device EP4CE10 (10K LE) and can be programmed as such. However, functionality would not be guaranteed as CE6 devices may be CE10 rejects.&lt;br /&gt;
:If open source FPGA code were to become available there would be capacity to experiment with more advanced triggers, such as pattern trigger for SPI or I2C.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SDRAM&amp;#039;&amp;#039;&amp;#039; Samsung DDR2&lt;br /&gt;
:Samples are stored as 3 bytes (16bit sample plus 8 bit repetition count).&lt;br /&gt;
:A &amp;#039;transfer packet&amp;#039; for upload is 16 bytes = 5 compressed samples plus a sequence number byte.&lt;br /&gt;
:Burst read/write for this SDRAM is up to 16 bytes, which matches the transfer packet size and is likely used for all SDRAM read/writes.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;U10&amp;#039;&amp;#039;&amp;#039; Kingst Authentication Device&lt;br /&gt;
:Not used by sigrok.&lt;br /&gt;
#Provides fixed bytes identifier to FPGA for bitstream validation (either LA1016 100MHz or LA2016 200MHz bitstream)&lt;br /&gt;
#Provides challenge-response rolling-code for OEM software to authenticate the device as genuine &amp;#039;Kingst&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Datasheets:&lt;br /&gt;
&lt;br /&gt;
:U1 [https://www.intel.com/content/www/us/en/products/programmable/fpga/cyclone-iv.html EP4CE6F17C8N] Cyclone IV E FPGA&lt;br /&gt;
:U2,4,5,7 [http://sxsemi.com/upfile/PDWL050019-SOT236.pdf	PDWL050019] TVS Diode Array&lt;br /&gt;
:U3 [https://www.cypress.com/part/cy7c68013a-100axc CY7C68013A-100AXC] EZUSB MCU&lt;br /&gt;
:U6,U8 [http://www.sg-micro.com/show-product-510.html SGM2019] Linear Regulator&lt;br /&gt;
:U9 [https://www.microchip.com/wwwproducts/en/AT24C02C AT24C02] EEPROM 2kbit&lt;br /&gt;
:U10 (device not identified, small MCU of some type)&lt;br /&gt;
:U11 K4T1G164QG-BCF8, DDR2 SDRAM, obsolete&lt;br /&gt;
:U12,U13 [http://www.sg-micro.com/show-product-519.html SGM6013] Switch-mode Regulator&lt;br /&gt;
:U14 [http://www.sg-micro.com/show-product-203.html SGM8272] Dual Op-amp&lt;br /&gt;
:U15 [http://www.ti.com/lit/ds/symlink/tps60403.pdf TPS60403] Charge Pump Voltage Inverter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Kingst la2016 package contents.jpg|&amp;lt;small&amp;gt;Package contents&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 paper.jpg|&amp;lt;small&amp;gt;Paper&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device top.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device bottom.jpg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb top.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb bottom.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 cypress fx2.jpg|&amp;lt;small&amp;gt;Cypress FX2&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 altera cyclone4 ep4ce6f17c8n.jpg|&amp;lt;small&amp;gt;Altera Cyclone IV&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 samsung k4t1g164qg.jpg|&amp;lt;small&amp;gt;Samsung K4T1G164QG&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 atmel 24c02n.jpg|&amp;lt;small&amp;gt;Atmel 24C02N&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 unmarked ic.jpg|&amp;lt;small&amp;gt;Unmarked IC&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 fpni.jpg|&amp;lt;small&amp;gt;PFNI&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
In order to use this device you need to extract the firmware/FPGA files from the vendor software (Linux download) using the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=firmware/kingst-la sigrok-fwextract-kingst-la2016] script from the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree sigrok-util] repo and place them in one of the usual [[Firmware#Where_to_put_the_firmware_files|places where libsigrok expects firmware files]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./sigrok-fwextract-kingst-la2016 KingstVIS/KingstVIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 saved 5430 bytes to kingst-la-01a2.fw (crc32=720551a9)&lt;br /&gt;
 saved 178362 bytes to kingst-la2016a1-fpga.bitstream (crc32=7cc894fa)&lt;br /&gt;
 saved 178542 bytes to kingst-la2016-fpga.bitstream (crc32=20694ff1)&lt;br /&gt;
 saved 178379 bytes to kingst-la1016a1-fpga.bitstream (crc32=166866be)&lt;br /&gt;
 saved 178151 bytes to kingst-la1016-fpga.bitstream (crc32=7db70001)&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.qdkingst.com/en/download Vendor software]&lt;br /&gt;
* [http://www.qdkingst.com/download/vis_ug_en User guide]&lt;br /&gt;
* [[Media:Kingst_LA2016_LA1016_Schematic.zip|Reverse engineered schematic]]&lt;br /&gt;
* More technical details (such as &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039; output) are available here: [[Kingst LA2016/Info]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:Supported]]&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16207</id>
		<title>Kingst LA2016</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16207"/>
		<updated>2021-10-03T10:19:04Z</updated>

		<summary type="html">&lt;p&gt;Planet9: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Kingst la2016 mugshot.png|180px]]&lt;br /&gt;
| name             = Kingst LA2016&lt;br /&gt;
| status           = supported&lt;br /&gt;
| source_code_dir  = kingst-la2016&lt;br /&gt;
| channels         = 16&lt;br /&gt;
| samplerate       = 200MHz max.&lt;br /&gt;
| samplerate_state = State analysis not supported&lt;br /&gt;
| triggers         = Level (multiple channels)&amp;lt;br/&amp;gt;Edge (one channel)&lt;br /&gt;
| voltages         = -50V &amp;amp;mdash; 50V&lt;br /&gt;
| threshold        = Configurable:&amp;lt;br/&amp;gt;-4V&amp;amp;mdash;4V, min step 0.01V&lt;br /&gt;
| memory           = 128MByte DDR2 SDRAM&amp;lt;br/&amp;gt;40M&amp;amp;mdash;10G samples&lt;br /&gt;
| compression      = Yes&lt;br /&gt;
| website          = [http://www.qdkingst.com/en qdkingst.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Kingst LA2016&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyser with 200MHz maximum sampling rate and 128MB sample memory.&lt;br /&gt;
The current vendor is &amp;quot;Qingdao Kingst Electronics Co., Ltd.&amp;quot; but older models are branded &amp;quot;Jiankun&amp;quot; rather than &amp;quot;Kingst&amp;quot;.&lt;br /&gt;
Detailed specifications and the vendor software are available on the [http://www.qdkingst.com/en/products Kingst website].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Support Status:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:03-OCT-2021 The Kingst LA2016 and LA1016 are now supported in the PulseView nightly build for Linux and Windows. The macOS build is not yet tested AFAIK.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Known Issues:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
#PulseView allows the user to setup multiple edge triggers, but the analyser only supports one. Please only use one edge trigger to avoid undefined behaviour. Note the edge trigger can be combined with any number of level triggers.&lt;br /&gt;
#The analyser input threshold can be adjusted in PulseView using a slider control, but there is no gui feedback to confirm the threshold voltage. Workaround for now is to view the log file for confirmation of the set trigger level. The analyser is always initialised to 1.6V input threshold on startup.&lt;br /&gt;
#Unplugging the analyser and then attempting to start a capture causes PulseView to crash.&lt;br /&gt;
#When using the LA1016, the maximum sampling rate is 100MHz but the driver name is still displayed as LA2016.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
This logic analyser has been on the market since around 2012 and there are a few different revisions of it.&lt;br /&gt;
The [[Media:Kingst_LA2016_LA1016_Schematic.zip|schematic]] has been reverse engineered from&lt;br /&gt;
a unit purchased in 2020 containing a PCB marked as v1.3.0. &lt;br /&gt;
The circuitry of older PCBs is similar but may have different voltage regulators, different input&lt;br /&gt;
channel routing to the FPGA, and lack the input threshold adjustment.&lt;br /&gt;
&lt;br /&gt;
The LA1016 uses identical hardware with a different FPGA bitstream which limits the sample rate to 100MHz maximum.&lt;br /&gt;
&lt;br /&gt;
All of these devices use the same firmware for the FX2LP MCU but there are four different FPGA bitstreams;&lt;br /&gt;
i.e. LA1016 &amp;amp; LA2016 bitstreams and the older versions of these (to swap some of the input channels as required by PCB routing changes).&lt;br /&gt;
Once the FX2LP firmware has been loaded, a &amp;#039;magic number&amp;#039; is read from EEPROM which identifies the&lt;br /&gt;
device and thus allows the correct FPGA bitstream to be loaded.&lt;br /&gt;
&lt;br /&gt;
Note that the LA1016 cannot be boosted to 200MHz by changing the &amp;#039;magic number&amp;#039; or the FPGA bitstream.&lt;br /&gt;
When the FPGA initialises, its reads 16 bytes from U10 which are used to authenticate the bitstream; these bytes are different for 100 and 200MHz devices.&lt;br /&gt;
Furthermore, the OEM software performs a challenge-response with U10 to authenticate the logic analyser as genuine &amp;#039;Kingst&amp;#039;.&lt;br /&gt;
The good news is that U10 does not impact sigrok support in any way and we don&amp;#039;t need to communicate with it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main components and their function:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MCU&amp;#039;&amp;#039;&amp;#039; Cypress FX2LP&lt;br /&gt;
:This MCU only has volatile memory and in this implementation it&amp;#039;s firmware is loaded from the host by the application software.&lt;br /&gt;
:Either the OEM firmware or open source firmware can be used.&lt;br /&gt;
:In essence, it just performs data moving operations:&lt;br /&gt;
#Endpoint 0 to EEPROM read/write&lt;br /&gt;
#Endpoint 0 to SPI read/write for FPGA control registers&lt;br /&gt;
#Endpoint 2 bulk out to SPI for loading FPGA bitstream&lt;br /&gt;
#Endpoint 6 bulk in to read capture data from FPGA/SDRAM&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;EEPROM&amp;#039;&amp;#039;&amp;#039; Atmel AT24C02 2Kbit&lt;br /&gt;
:This non-volatile memory stores:&lt;br /&gt;
#VID:PID which is 77a1:01a2 for LA1016 and LA2016 devices&lt;br /&gt;
#&amp;#039;magic number&amp;#039; to identify model and revision&lt;br /&gt;
#purchase date (presumably for warranty claims)&lt;br /&gt;
#other information related to U10 but not of interest to sigrok&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039; Altera EP4CE6&lt;br /&gt;
:Currently requires the OEM bitstream.&lt;br /&gt;
:Has a bank of approximately 60 byte-wide registers accessed via SPI which are used to contol FPGA functions.&lt;br /&gt;
:Captures 16 input channels, performs compression (run length encoding, 16bit sample plus 8 bit repetition count).&lt;br /&gt;
:Stores samples to SDRAM (or streams direct to USB but we don&amp;#039;t implement that method).&lt;br /&gt;
:Interestingly, this device (6K LE) shares the same die as the next up device EP4CE10 (10K LE) and can be programmed as such. However, functionality would not be guaranteed as CE6 devices may be CE10 rejects.&lt;br /&gt;
:If open source FPGA code were to become available there would be capacity to experiment with more advanced triggers, such as pattern trigger for SPI or I2C.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SDRAM&amp;#039;&amp;#039;&amp;#039; Samsung DDR2&lt;br /&gt;
:Samples are stored as 3 bytes (16bit sample plus 8 bit repetition count).&lt;br /&gt;
:A &amp;#039;transfer packet&amp;#039; for upload is 16 bytes = 5 compressed samples plus a sequence number byte.&lt;br /&gt;
:Burst read/write for this SDRAM is up to 16 bytes, which matches the transfer packet size and is likely used for all SDRAM read/writes.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;U10&amp;#039;&amp;#039;&amp;#039; Kingst Authentication Device&lt;br /&gt;
:Not used by sigrok.&lt;br /&gt;
#Provides fixed bytes identifier to FPGA for bitstream validation (either LA1016 100MHz or LA2016 200MHz bitstream)&lt;br /&gt;
#Provides challenge-response rolling-code for OEM software to authenticate the device as genuine &amp;#039;Kingst&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Datasheets:&lt;br /&gt;
&lt;br /&gt;
:U1 [https://www.intel.com/content/www/us/en/products/programmable/fpga/cyclone-iv.html EP4CE6F17C8N] Cyclone IV E FPGA&lt;br /&gt;
:U2,4,5,7 [http://sxsemi.com/upfile/PDWL050019-SOT236.pdf	PDWL050019] TVS Diode Array&lt;br /&gt;
:U3 [https://www.cypress.com/part/cy7c68013a-100axc CY7C68013A-100AXC] EZUSB MCU&lt;br /&gt;
:U6,U8 [http://www.sg-micro.com/show-product-510.html SGM2019] Linear Regulator&lt;br /&gt;
:U9 [https://www.microchip.com/wwwproducts/en/AT24C02C AT24C02] EEPROM 2kbit&lt;br /&gt;
:U10 (device not identified, small MCU of some type)&lt;br /&gt;
:U11 K4T1G164QG-BCF8, DDR2 SDRAM, obsolete&lt;br /&gt;
:U12,U13 [http://www.sg-micro.com/show-product-519.html SGM6013] Switch-mode Regulator&lt;br /&gt;
:U14 [http://www.sg-micro.com/show-product-203.html SGM8272] Dual Op-amp&lt;br /&gt;
:U15 [http://www.ti.com/lit/ds/symlink/tps60403.pdf TPS60403] Charge Pump Voltage Inverter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Kingst la2016 package contents.jpg|&amp;lt;small&amp;gt;Package contents&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 paper.jpg|&amp;lt;small&amp;gt;Paper&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device top.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device bottom.jpg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb top.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb bottom.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 cypress fx2.jpg|&amp;lt;small&amp;gt;Cypress FX2&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 altera cyclone4 ep4ce6f17c8n.jpg|&amp;lt;small&amp;gt;Altera Cyclone IV&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 samsung k4t1g164qg.jpg|&amp;lt;small&amp;gt;Samsung K4T1G164QG&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 atmel 24c02n.jpg|&amp;lt;small&amp;gt;Atmel 24C02N&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 unmarked ic.jpg|&amp;lt;small&amp;gt;Unmarked IC&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 fpni.jpg|&amp;lt;small&amp;gt;PFNI&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
In order to use this device you need to extract the firmware/FPGA files from the vendor software (Linux download) using the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=firmware/kingst-la sigrok-fwextract-kingst-la2016] script from the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree sigrok-util] repo and place them in one of the usual [[Firmware#Where_to_put_the_firmware_files|places where libsigrok expects firmware files]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./sigrok-fwextract-kingst-la2016 KingstVIS/KingstVIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 saved 5430 bytes to kingst-la-01a2.fw (crc32=720551a9)&lt;br /&gt;
 saved 178362 bytes to kingst-la2016a1-fpga.bitstream (crc32=7cc894fa)&lt;br /&gt;
 saved 178542 bytes to kingst-la2016-fpga.bitstream (crc32=20694ff1)&lt;br /&gt;
 saved 178379 bytes to kingst-la1016a1-fpga.bitstream (crc32=166866be)&lt;br /&gt;
 saved 178151 bytes to kingst-la1016-fpga.bitstream (crc32=7db70001)&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.qdkingst.com/en/download Vendor software]&lt;br /&gt;
* [http://www.qdkingst.com/download/vis_ug_en User guide]&lt;br /&gt;
* [[Media:Kingst_LA2016_LA1016_Schematic.zip|Reverse engineered schematic]]&lt;br /&gt;
* More technical details (such as &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039; output) are available here: [[Kingst LA2016/Info]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:Supported]]&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16201</id>
		<title>Kingst LA2016</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16201"/>
		<updated>2021-09-12T15:17:15Z</updated>

		<summary type="html">&lt;p&gt;Planet9: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Kingst la2016 mugshot.png|180px]]&lt;br /&gt;
| name             = Kingst LA2016&lt;br /&gt;
| status           = supported&lt;br /&gt;
| source_code_dir  = kingst-la2016&lt;br /&gt;
| channels         = 16&lt;br /&gt;
| samplerate       = 200MHz max.&lt;br /&gt;
| samplerate_state = State analysis not supported&lt;br /&gt;
| triggers         = Level (multiple channels)&amp;lt;br/&amp;gt;Edge (one channel)&lt;br /&gt;
| voltages         = -50V &amp;amp;mdash; 50V&lt;br /&gt;
| threshold        = Configurable:&amp;lt;br/&amp;gt;-4V&amp;amp;mdash;4V, min step 0.01V&lt;br /&gt;
| memory           = 128MByte DDR2 SDRAM&amp;lt;br/&amp;gt;40M&amp;amp;mdash;10G samples&lt;br /&gt;
| compression      = Yes&lt;br /&gt;
| website          = [http://www.qdkingst.com/en qdkingst.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Kingst LA2016&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyser with 200MHz maximum sampling rate.&lt;br /&gt;
The current vendor is &amp;quot;Qingdao Kingst Electronics Co., Ltd.&amp;quot; but older models are branded &amp;quot;Jiankun&amp;quot; rather than &amp;quot;Kingst&amp;quot;.&lt;br /&gt;
The vendor software can be freely downloaded from their [http://www.qdkingst.com/en/products website].&lt;br /&gt;
&lt;br /&gt;
See [[Kingst LA2016/Info]] for more details (such as &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039; output) about the device.&lt;br /&gt;
&lt;br /&gt;
2021-09-12 status: The Kingst LA2016 and LA1016 are now supported in the PulseView nightly build for Linux.&lt;br /&gt;
The macOS build is not yet tested AFAIK. There is a USB issue on the Windows build, so it&amp;#039;s not useable at present but is being investigated. More info here:&lt;br /&gt;
* [https://github.com/sigrokproject/libsigrok/pull/131 Driver changes]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
This logic analyser has been on the market since around 2012 and there are a few different revisions of it.&lt;br /&gt;
The [[Media:Kingst_LA2016_LA1016_Schematic.zip|schematic]] has been reverse engineered from&lt;br /&gt;
a unit purchased in 2020 containing a PCB marked as v1.3.0. &lt;br /&gt;
The circuitry of older PCBs is similar but may have different voltage regulators, different input&lt;br /&gt;
channel routing to the FPGA, and lack the input threshold adjustment.&lt;br /&gt;
&lt;br /&gt;
The LA1016 uses identical hardware with a different FPGA bitstream which limits the sample rate to 100MHz maximum.&lt;br /&gt;
&lt;br /&gt;
All of these devices use the same firmware for the FX2LP MCU but there are four different FPGA bitstreams;&lt;br /&gt;
i.e. LA1016 &amp;amp; LA2016 bitstreams and the older versions of these (to swap some of the input channels as required by PCB routing changes).&lt;br /&gt;
Once the FX2LP firmware has been loaded, a &amp;#039;magic number&amp;#039; is read from EEPROM which identifies the&lt;br /&gt;
device and thus allows the correct FPGA bitstream to be loaded.&lt;br /&gt;
&lt;br /&gt;
Note that the LA1016 cannot be boosted to 200MHz by changing the &amp;#039;magic number&amp;#039; or the FPGA bitstream.&lt;br /&gt;
When the FPGA initialises, its reads 16 bytes from U10 which are used to authenticate the bitstream; these bytes are different for 100 and 200MHz devices.&lt;br /&gt;
Furthermore, the OEM software performs a challenge-response with U10 to authenticate the logic analyser as genuine &amp;#039;Kingst&amp;#039;.&lt;br /&gt;
The good news is that U10 does not impact sigrok support in any way and we don&amp;#039;t need to communicate with it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main components and their function:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MCU&amp;#039;&amp;#039;&amp;#039; Cypress FX2LP&lt;br /&gt;
:This MCU only has volatile memory and in this implementation it&amp;#039;s firmware is loaded from the host by the application software.&lt;br /&gt;
:Either the OEM firmware or open source firmware can be used.&lt;br /&gt;
:In essence, it just performs data moving operations:&lt;br /&gt;
#Endpoint 0 to EEPROM read/write&lt;br /&gt;
#Endpoint 0 to SPI read/write for FPGA control registers&lt;br /&gt;
#Endpoint 2 bulk out to SPI for loading FPGA bitstream&lt;br /&gt;
#Endpoint 6 bulk in to read capture data from FPGA/SDRAM&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;EEPROM&amp;#039;&amp;#039;&amp;#039; Atmel AT24C02 2Kbit&lt;br /&gt;
:This non-volatile memory stores:&lt;br /&gt;
#VID:PID which is 77a1:01a2 for LA1016 and LA2016 devices&lt;br /&gt;
#&amp;#039;magic number&amp;#039; to identify model and revision&lt;br /&gt;
#purchase date (presumably for warranty claims)&lt;br /&gt;
#other information related to U10 but not of interest to sigrok&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039; Altera EP4CE6&lt;br /&gt;
:Currently requires the OEM bitstream.&lt;br /&gt;
:Has a bank of approximately 60 byte-wide registers accessed via SPI which are used to contol FPGA functions.&lt;br /&gt;
:Captures 16 input channels, performs compression (run length encoding, 16bit sample plus 8 bit repetition count).&lt;br /&gt;
:Stores samples to SDRAM (or streams direct to USB but we don&amp;#039;t implement that method).&lt;br /&gt;
:Interestingly, this device (6K LE) shares the same die as the next up device EP4CE10 (10K LE) and can be programmed as such. However, functionality would not be guaranteed as CE6 devices may be CE10 rejects.&lt;br /&gt;
:If open source FPGA code were to become available there would be capacity to experiment with more advanced triggers, such as pattern trigger for SPI or I2C.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SDRAM&amp;#039;&amp;#039;&amp;#039; Samsung DDR2&lt;br /&gt;
:Samples are stored as 3 bytes (16bit sample plus 8 bit repetition count).&lt;br /&gt;
:A &amp;#039;transfer packet&amp;#039; for upload is 16 bytes = 5 compressed samples plus a sequence number byte.&lt;br /&gt;
:Burst read/write for this SDRAM is up to 16 bytes, which matches the transfer packet size and is likely used for all SDRAM read/writes.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;U10&amp;#039;&amp;#039;&amp;#039; Kingst Authentication Device&lt;br /&gt;
:Not used by sigrok.&lt;br /&gt;
#Provides fixed bytes identifier to FPGA for bitstream validation (either LA1016 100MHz or LA2016 200MHz bitstream)&lt;br /&gt;
#Provides challenge-response rolling-code for OEM software to authenticate the device as genuine &amp;#039;Kingst&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Datasheets:&lt;br /&gt;
&lt;br /&gt;
:U1 [https://www.intel.com/content/www/us/en/products/programmable/fpga/cyclone-iv.html EP4CE6F17C8N] Cyclone IV E FPGA&lt;br /&gt;
:U2,4,5,7 [http://sxsemi.com/upfile/PDWL050019-SOT236.pdf	PDWL050019] TVS Diode Array&lt;br /&gt;
:U3 [https://www.cypress.com/part/cy7c68013a-100axc CY7C68013A-100AXC] EZUSB MCU&lt;br /&gt;
:U6,U8 [http://www.sg-micro.com/show-product-510.html SGM2019] Linear Regulator&lt;br /&gt;
:U9 [https://www.microchip.com/wwwproducts/en/AT24C02C AT24C02] EEPROM 2kbit&lt;br /&gt;
:U10 (device not identified, small MCU of some type)&lt;br /&gt;
:U11 K4T1G164QG-BCF8, DDR2 SDRAM, obsolete&lt;br /&gt;
:U12,U13 [http://www.sg-micro.com/show-product-519.html SGM6013] Switch-mode Regulator&lt;br /&gt;
:U14 [http://www.sg-micro.com/show-product-203.html SGM8272] Dual Op-amp&lt;br /&gt;
:U15 [http://www.ti.com/lit/ds/symlink/tps60403.pdf TPS60403] Charge Pump Voltage Inverter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Kingst la2016 package contents.jpg|&amp;lt;small&amp;gt;Package contents&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 paper.jpg|&amp;lt;small&amp;gt;Paper&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device top.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device bottom.jpg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb top.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb bottom.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 cypress fx2.jpg|&amp;lt;small&amp;gt;Cypress FX2&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 altera cyclone4 ep4ce6f17c8n.jpg|&amp;lt;small&amp;gt;Altera Cyclone IV&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 samsung k4t1g164qg.jpg|&amp;lt;small&amp;gt;Samsung K4T1G164QG&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 atmel 24c02n.jpg|&amp;lt;small&amp;gt;Atmel 24C02N&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 unmarked ic.jpg|&amp;lt;small&amp;gt;Unmarked IC&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 fpni.jpg|&amp;lt;small&amp;gt;PFNI&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
In order to use this device you need to extract the firmware/FPGA files from the vendor software (Linux download) using the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=firmware/kingst-la sigrok-fwextract-kingst-la2016] script from the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree sigrok-util] repo and place them in one of the usual [[Firmware#Where_to_put_the_firmware_files|places where libsigrok expects firmware files]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./sigrok-fwextract-kingst-la2016 KingstVIS/KingstVIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 saved 5430 bytes to kingst-la-01a2.fw (crc32=720551a9)&lt;br /&gt;
 saved 178362 bytes to kingst-la2016a1-fpga.bitstream (crc32=7cc894fa)&lt;br /&gt;
 saved 178542 bytes to kingst-la2016-fpga.bitstream (crc32=20694ff1)&lt;br /&gt;
 saved 178379 bytes to kingst-la1016a1-fpga.bitstream (crc32=166866be)&lt;br /&gt;
 saved 178151 bytes to kingst-la1016-fpga.bitstream (crc32=7db70001)&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.qdkingst.com/en/download Vendor software]&lt;br /&gt;
* [http://www.qdkingst.com/download/vis_ug_en User guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:Supported]]&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16200</id>
		<title>Kingst LA2016</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16200"/>
		<updated>2021-09-12T15:12:43Z</updated>

		<summary type="html">&lt;p&gt;Planet9: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Kingst la2016 mugshot.png|180px]]&lt;br /&gt;
| name             = Kingst LA2016&lt;br /&gt;
| status           = supported&lt;br /&gt;
| source_code_dir  = kingst-la2016&lt;br /&gt;
| channels         = 16&lt;br /&gt;
| samplerate       = 200MHz max.&lt;br /&gt;
| samplerate_state = State analysis not supported&lt;br /&gt;
| triggers         = Level (multiple channels)&amp;lt;br/&amp;gt;Edge (one channel)&lt;br /&gt;
| voltages         = -50V &amp;amp;mdash; 50V&lt;br /&gt;
| threshold        = Configurable:&amp;lt;br/&amp;gt;-4V&amp;amp;mdash;4V, min step 0.01V&lt;br /&gt;
| memory           = 128MByte DDR2 SDRAM&amp;lt;br/&amp;gt;40M&amp;amp;mdash;10G samples&lt;br /&gt;
| compression      = Yes&lt;br /&gt;
| website          = [http://www.qdkingst.com/en qdkingst.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Kingst LA2016&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyser with 200MHz maximum sampling rate.&lt;br /&gt;
The current vendor is &amp;quot;Qingdao Kingst Electronics Co., Ltd.&amp;quot; but older models are branded &amp;quot;Jiankun&amp;quot; rather than &amp;quot;Kingst&amp;quot;.&lt;br /&gt;
The vendor software can be freely downloaded from their [http://www.qdkingst.com/en/products website].&lt;br /&gt;
&lt;br /&gt;
See [[Kingst LA2016/Info]] for more details (such as &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039; output) about the device.&lt;br /&gt;
&lt;br /&gt;
2021-09-12 status: The Kingst LA2016 and LA1016 are now supported in the PulseView nightly build for Linux.&lt;br /&gt;
The macOS build is not yet tested AFAIK. There is a USB issue on the Windows build, so it&amp;#039;s not useable at present but is being investigated. More info here:&lt;br /&gt;
* [https://github.com/sigrokproject/libsigrok/pull/131 Driver changes]&lt;br /&gt;
* [https://github.com/sigrokproject/sigrok-util/pull/7 Firmware extraction]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
This logic analyser has been on the market since around 2012 and there are a few different revisions of it.&lt;br /&gt;
The [[Media:Kingst_LA2016_LA1016_Schematic.zip|schematic]] has been reverse engineered from&lt;br /&gt;
a unit purchased in 2020 containing a PCB marked as v1.3.0. &lt;br /&gt;
The circuitry of older PCBs is similar but may have different voltage regulators, different input&lt;br /&gt;
channel routing to the FPGA, and lack the input threshold adjustment.&lt;br /&gt;
&lt;br /&gt;
The LA1016 uses identical hardware with a different FPGA bitstream which limits the sample rate to 100MHz maximum.&lt;br /&gt;
&lt;br /&gt;
All of these devices use the same firmware for the FX2LP MCU but there are four different FPGA bitstreams;&lt;br /&gt;
i.e. LA1016 &amp;amp; LA2016 bitstreams and the older versions of these (to swap some of the input channels as required by PCB routing changes).&lt;br /&gt;
Once the FX2LP firmware has been loaded, a &amp;#039;magic number&amp;#039; is read from EEPROM which identifies the&lt;br /&gt;
device and thus allows the correct FPGA bitstream to be loaded.&lt;br /&gt;
&lt;br /&gt;
Note that the LA1016 cannot be boosted to 200MHz by changing the &amp;#039;magic number&amp;#039; or the FPGA bitstream.&lt;br /&gt;
When the FPGA initialises, its reads 16 bytes from U10 which are used to authenticate the bitstream; these bytes are different for 100 and 200MHz devices.&lt;br /&gt;
Furthermore, the OEM software performs a challenge-response with U10 to authenticate the logic analyser as genuine &amp;#039;Kingst&amp;#039;.&lt;br /&gt;
The good news is that U10 does not impact sigrok support in any way and we don&amp;#039;t need to communicate with it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main components and their function:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MCU&amp;#039;&amp;#039;&amp;#039; Cypress FX2LP&lt;br /&gt;
:This MCU only has volatile memory and in this implementation it&amp;#039;s firmware is loaded from the host by the application software.&lt;br /&gt;
:Either the OEM firmware or open source firmware can be used.&lt;br /&gt;
:In essence, it just performs data moving operations:&lt;br /&gt;
#Endpoint 0 to EEPROM read/write&lt;br /&gt;
#Endpoint 0 to SPI read/write for FPGA control registers&lt;br /&gt;
#Endpoint 2 bulk out to SPI for loading FPGA bitstream&lt;br /&gt;
#Endpoint 6 bulk in to read capture data from FPGA/SDRAM&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;EEPROM&amp;#039;&amp;#039;&amp;#039; Atmel AT24C02 2Kbit&lt;br /&gt;
:This non-volatile memory stores:&lt;br /&gt;
#VID:PID which is 77a1:01a2 for LA1016 and LA2016 devices&lt;br /&gt;
#&amp;#039;magic number&amp;#039; to identify model and revision&lt;br /&gt;
#purchase date (presumably for warranty claims)&lt;br /&gt;
#other information related to U10 but not of interest to sigrok&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039; Altera EP4CE6&lt;br /&gt;
:Currently requires the OEM bitstream.&lt;br /&gt;
:Has a bank of approximately 60 byte-wide registers accessed via SPI which are used to contol FPGA functions.&lt;br /&gt;
:Captures 16 input channels, performs compression (run length encoding, 16bit sample plus 8 bit repetition count).&lt;br /&gt;
:Stores samples to SDRAM (or streams direct to USB but we don&amp;#039;t implement that method).&lt;br /&gt;
:Interestingly, this device (6K LE) shares the same die as the next up device EP4CE10 (10K LE) and can be programmed as such. However, functionality would not be guaranteed as CE6 devices may be CE10 rejects.&lt;br /&gt;
:If open source FPGA code were to become available there would be capacity to experiment with more advanced triggers, such as pattern trigger for SPI or I2C.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SDRAM&amp;#039;&amp;#039;&amp;#039; Samsung DDR2&lt;br /&gt;
:Samples are stored as 3 bytes (16bit sample plus 8 bit repetition count).&lt;br /&gt;
:A &amp;#039;transfer packet&amp;#039; for upload is 16 bytes = 5 compressed samples plus a sequence number byte.&lt;br /&gt;
:Burst read/write for this SDRAM is up to 16 bytes, which matches the transfer packet size and is likely used for all SDRAM read/writes.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;U10&amp;#039;&amp;#039;&amp;#039; Kingst Authentication Device&lt;br /&gt;
:Not used by sigrok.&lt;br /&gt;
#Provides fixed bytes identifier to FPGA for bitstream validation (either LA1016 100MHz or LA2016 200MHz bitstream)&lt;br /&gt;
#Provides challenge-response rolling-code for OEM software to authenticate the device as genuine &amp;#039;Kingst&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Datasheets:&lt;br /&gt;
&lt;br /&gt;
:U1 [https://www.intel.com/content/www/us/en/products/programmable/fpga/cyclone-iv.html EP4CE6F17C8N] Cyclone IV E FPGA&lt;br /&gt;
:U2,4,5,7 [http://sxsemi.com/upfile/PDWL050019-SOT236.pdf	PDWL050019] TVS Diode Array&lt;br /&gt;
:U3 [https://www.cypress.com/part/cy7c68013a-100axc CY7C68013A-100AXC] EZUSB MCU&lt;br /&gt;
:U6,U8 [http://www.sg-micro.com/show-product-510.html SGM2019] Linear Regulator&lt;br /&gt;
:U9 [https://www.microchip.com/wwwproducts/en/AT24C02C AT24C02] EEPROM 2kbit&lt;br /&gt;
:U10 (device not identified, small MCU of some type)&lt;br /&gt;
:U11 K4T1G164QG-BCF8, DDR2 SDRAM, obsolete&lt;br /&gt;
:U12,U13 [http://www.sg-micro.com/show-product-519.html SGM6013] Switch-mode Regulator&lt;br /&gt;
:U14 [http://www.sg-micro.com/show-product-203.html SGM8272] Dual Op-amp&lt;br /&gt;
:U15 [http://www.ti.com/lit/ds/symlink/tps60403.pdf TPS60403] Charge Pump Voltage Inverter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Kingst la2016 package contents.jpg|&amp;lt;small&amp;gt;Package contents&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 paper.jpg|&amp;lt;small&amp;gt;Paper&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device top.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device bottom.jpg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb top.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb bottom.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 cypress fx2.jpg|&amp;lt;small&amp;gt;Cypress FX2&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 altera cyclone4 ep4ce6f17c8n.jpg|&amp;lt;small&amp;gt;Altera Cyclone IV&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 samsung k4t1g164qg.jpg|&amp;lt;small&amp;gt;Samsung K4T1G164QG&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 atmel 24c02n.jpg|&amp;lt;small&amp;gt;Atmel 24C02N&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 unmarked ic.jpg|&amp;lt;small&amp;gt;Unmarked IC&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 fpni.jpg|&amp;lt;small&amp;gt;PFNI&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TODO This extraction script needs an update&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
In order to use this device you need to extract the firmware/FPGA files from the vendor software (Linux download) using the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=firmware/kingst-la sigrok-fwextract-kingst-la2016] script from the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree sigrok-util] repo and place them in one of the usual [[Firmware#Where_to_put_the_firmware_files|places where libsigrok expects firmware files]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./sigrok-fwextract-kingst-la2016 KingstVIS/KingstVIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 saved 180224 bytes to kingst-la2016a-fpga.bitstream&lt;br /&gt;
 saved 5350 bytes to kingst-la-01a1.fw&lt;br /&gt;
 saved 5430 bytes to kingst-la-01a2.fw&lt;br /&gt;
 saved 5718 bytes to kingst-la-01a3.fw&lt;br /&gt;
 saved 142412 bytes to kingst-la-01a4.fw&lt;br /&gt;
 saved 5452 bytes to kingst-la-03a1.fw&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.qdkingst.com/en/download Vendor software]&lt;br /&gt;
* [http://www.qdkingst.com/download/vis_ug_en User guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:Supported]]&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16130</id>
		<title>Kingst LA2016</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16130"/>
		<updated>2021-07-13T14:00:21Z</updated>

		<summary type="html">&lt;p&gt;Planet9: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Kingst la2016 mugshot.png|180px]]&lt;br /&gt;
| name             = Kingst LA2016&lt;br /&gt;
| status           = supported&lt;br /&gt;
| source_code_dir  = kingst-la2016&lt;br /&gt;
| channels         = 16&lt;br /&gt;
| samplerate       = 200MHz max.&lt;br /&gt;
| samplerate_state = State analysis not supported&lt;br /&gt;
| triggers         = Level (multiple channels)&amp;lt;br/&amp;gt;Edge (one channel)&lt;br /&gt;
| voltages         = -50V &amp;amp;mdash; 50V&lt;br /&gt;
| threshold        = Configurable:&amp;lt;br/&amp;gt;-4V&amp;amp;mdash;4V, min step 0.01V&lt;br /&gt;
| memory           = 128MByte DDR2 SDRAM&amp;lt;br/&amp;gt;40M&amp;amp;mdash;10G samples&lt;br /&gt;
| compression      = Yes&lt;br /&gt;
| website          = [http://www.qdkingst.com/en qdkingst.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Kingst LA2016&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyser with 200MHz maximum sampling rate.&lt;br /&gt;
The current vendor is &amp;quot;Qingdao Kingst Electronics Co., Ltd.&amp;quot; but older models are branded &amp;quot;Jiankun&amp;quot; rather than &amp;quot;Kingst&amp;quot;.&lt;br /&gt;
The vendor software can be freely downloaded from their [http://www.qdkingst.com/en/products website].&lt;br /&gt;
&lt;br /&gt;
See [[Kingst LA2016/Info]] for more details (such as &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039; output) about the device.&lt;br /&gt;
&lt;br /&gt;
2021-03-30 status: This device is basically supported, captures can be made. &lt;br /&gt;
But some important features still are not available or not fully operational. &lt;br /&gt;
It&amp;#039;s yet to get determined what these features are that currently don&amp;#039;t work as intended.&lt;br /&gt;
(This wiki page needs an update so that users can determine whether _their_ use case is covered.)&lt;br /&gt;
&lt;br /&gt;
2021-07-13 status: Some users are reporting this device does not function with PulseView. In this case, please try these PRs:&lt;br /&gt;
&lt;br /&gt;
* [https://github.com/sigrokproject/sigrok-util/pull/7 Firmware extraction]&lt;br /&gt;
* [https://github.com/sigrokproject/libsigrok/pull/131 Driver changes]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
This logic analyser has been on the market since around 2012 and there are a few different revisions of it.&lt;br /&gt;
The [[Media:Kingst_LA2016_LA1016_Schematic.zip|schematic]] has been reverse engineered from&lt;br /&gt;
a unit purchased in 2020 containing a PCB marked as v1.3.0. &lt;br /&gt;
The circuitry of older PCBs is similar but may have different voltage regulators, different input&lt;br /&gt;
channel routing to the FPGA, and lack the input threshold adjustment.&lt;br /&gt;
&lt;br /&gt;
The LA1016 uses identical hardware with a different FPGA bitstream which limits the sample rate to 100MHz maximum.&lt;br /&gt;
&lt;br /&gt;
All of these devices use the same firmware for the FX2LP MCU but there are four different FPGA bitstreams;&lt;br /&gt;
i.e. LA1016 &amp;amp; LA2016 bitstreams and the older versions of these (to swap some of the input channels as required by PCB routing changes).&lt;br /&gt;
Once the FX2LP firmware has been loaded, a &amp;#039;magic number&amp;#039; is read from EEPROM which identifies the&lt;br /&gt;
device and thus allows the correct FPGA bitstream to be loaded.&lt;br /&gt;
&lt;br /&gt;
Note that the LA1016 cannot be boosted to 200MHz by changing the &amp;#039;magic number&amp;#039; or the FPGA bitstream.&lt;br /&gt;
When the FPGA initialises, its reads 16 bytes from U10 which are used to authenticate the bitstream; these bytes are different for 100 and 200MHz devices.&lt;br /&gt;
Furthermore, the OEM software performs a challenge-response with U10 to authenticate the logic analyser as genuine &amp;#039;Kingst&amp;#039;.&lt;br /&gt;
The good news is that U10 does not impact sigrok support in any way and we don&amp;#039;t need to communicate with it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main components and their function:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MCU&amp;#039;&amp;#039;&amp;#039; Cypress FX2LP&lt;br /&gt;
:This MCU only has volatile memory and in this implementation it&amp;#039;s firmware is loaded from the host by the application software.&lt;br /&gt;
:Either the OEM firmware or open source firmware can be used.&lt;br /&gt;
:In essence, it just performs data moving operations:&lt;br /&gt;
#Endpoint 0 to EEPROM read/write&lt;br /&gt;
#Endpoint 0 to SPI read/write for FPGA control registers&lt;br /&gt;
#Endpoint 2 bulk out to SPI for loading FPGA bitstream&lt;br /&gt;
#Endpoint 6 bulk in to read capture data from FPGA/SDRAM&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;EEPROM&amp;#039;&amp;#039;&amp;#039; Atmel AT24C02 2Kbit&lt;br /&gt;
:This non-volatile memory stores:&lt;br /&gt;
#VID:PID which is 77a1:01a2 for LA1016 and LA2016 devices&lt;br /&gt;
#&amp;#039;magic number&amp;#039; to identify model and revision&lt;br /&gt;
#purchase date (presumably for warranty claims)&lt;br /&gt;
#other information related to U10 but not of interest to sigrok&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039; Altera EP4CE6&lt;br /&gt;
:Currently requires the OEM bitstream.&lt;br /&gt;
:Has a bank of approximately 60 byte-wide registers accessed via SPI which are used to contol FPGA functions.&lt;br /&gt;
:Captures 16 input channels, performs compression (run length encoding, 16bit sample plus 8 bit repetition count).&lt;br /&gt;
:Stores samples to SDRAM (or streams direct to USB but we don&amp;#039;t implement that method).&lt;br /&gt;
:Interestingly, this device (6K LE) shares the same die as the next up device EP4CE10 (10K LE) and can be programmed as such. However, functionality would not be guaranteed as CE6 devices may be CE10 rejects.&lt;br /&gt;
:If open source FPGA code were to become available there would be capacity to experiment with more advanced triggers, such as pattern trigger for SPI or I2C.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SDRAM&amp;#039;&amp;#039;&amp;#039; Samsung DDR2&lt;br /&gt;
:Samples are stored as 3 bytes (16bit sample plus 8 bit repetition count).&lt;br /&gt;
:A &amp;#039;transfer packet&amp;#039; for upload is 16 bytes = 5 compressed samples plus a sequence number byte.&lt;br /&gt;
:Burst read/write for this SDRAM is up to 16 bytes, which matches the transfer packet size and is likely used for all SDRAM read/writes.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;U10&amp;#039;&amp;#039;&amp;#039; Kingst Authentication Device&lt;br /&gt;
:Not used by sigrok.&lt;br /&gt;
#Provides fixed bytes identifier to FPGA for bitstream validation (either LA1016 100MHz or LA2016 200MHz bitstream)&lt;br /&gt;
#Provides challenge-response rolling-code for OEM software to authenticate the device as genuine &amp;#039;Kingst&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Datasheets:&lt;br /&gt;
&lt;br /&gt;
:U1 [https://www.intel.com/content/www/us/en/products/programmable/fpga/cyclone-iv.html EP4CE6F17C8N] Cyclone IV E FPGA&lt;br /&gt;
:U2,4,5,7 [http://sxsemi.com/upfile/PDWL050019-SOT236.pdf	PDWL050019] TVS Diode Array&lt;br /&gt;
:U3 [https://www.cypress.com/part/cy7c68013a-100axc CY7C68013A-100AXC] EZUSB MCU&lt;br /&gt;
:U6,U8 [http://www.sg-micro.com/show-product-510.html SGM2019] Linear Regulator&lt;br /&gt;
:U9 [https://www.microchip.com/wwwproducts/en/AT24C02C AT24C02] EEPROM 2kbit&lt;br /&gt;
:U10 (device not identified, small MCU of some type)&lt;br /&gt;
:U11 K4T1G164QG-BCF8, DDR2 SDRAM, obsolete&lt;br /&gt;
:U12,U13 [http://www.sg-micro.com/show-product-519.html SGM6013] Switch-mode Regulator&lt;br /&gt;
:U14 [http://www.sg-micro.com/show-product-203.html SGM8272] Dual Op-amp&lt;br /&gt;
:U15 [http://www.ti.com/lit/ds/symlink/tps60403.pdf TPS60403] Charge Pump Voltage Inverter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Kingst la2016 package contents.jpg|&amp;lt;small&amp;gt;Package contents&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 paper.jpg|&amp;lt;small&amp;gt;Paper&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device top.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device bottom.jpg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb top.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb bottom.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 cypress fx2.jpg|&amp;lt;small&amp;gt;Cypress FX2&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 altera cyclone4 ep4ce6f17c8n.jpg|&amp;lt;small&amp;gt;Altera Cyclone IV&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 samsung k4t1g164qg.jpg|&amp;lt;small&amp;gt;Samsung K4T1G164QG&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 atmel 24c02n.jpg|&amp;lt;small&amp;gt;Atmel 24C02N&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 unmarked ic.jpg|&amp;lt;small&amp;gt;Unmarked IC&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 fpni.jpg|&amp;lt;small&amp;gt;PFNI&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TODO This extraction script needs an update&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
In order to use this device you need to extract the firmware/FPGA files from the vendor software (Linux download) using the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=firmware/kingst-la sigrok-fwextract-kingst-la2016] script from the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree sigrok-util] repo and place them in one of the usual [[Firmware#Where_to_put_the_firmware_files|places where libsigrok expects firmware files]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./sigrok-fwextract-kingst-la2016 KingstVIS/KingstVIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 saved 180224 bytes to kingst-la2016a-fpga.bitstream&lt;br /&gt;
 saved 5350 bytes to kingst-la-01a1.fw&lt;br /&gt;
 saved 5430 bytes to kingst-la-01a2.fw&lt;br /&gt;
 saved 5718 bytes to kingst-la-01a3.fw&lt;br /&gt;
 saved 142412 bytes to kingst-la-01a4.fw&lt;br /&gt;
 saved 5452 bytes to kingst-la-03a1.fw&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.qdkingst.com/en/download Vendor software]&lt;br /&gt;
* [http://www.qdkingst.com/download/vis_ug_en User guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:Supported]]&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Kingst_LA2016/Info&amp;diff=16073</id>
		<title>Kingst LA2016/Info</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Kingst_LA2016/Info&amp;diff=16073"/>
		<updated>2021-04-02T10:42:30Z</updated>

		<summary type="html">&lt;p&gt;Planet9: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== lsusb (before firmware upload) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Bus 002 Device 008: ID &amp;#039;&amp;#039;&amp;#039;77a1:01a2&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Device Descriptor:&lt;br /&gt;
   bLength                18&lt;br /&gt;
   bDescriptorType         1&lt;br /&gt;
   bcdUSB               2.00&lt;br /&gt;
   bDeviceClass          255 &amp;#039;&amp;#039;&amp;#039;Vendor Specific Class&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   bDeviceSubClass       255 &amp;#039;&amp;#039;&amp;#039;Vendor Specific Subclass&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   bDeviceProtocol       255 &amp;#039;&amp;#039;&amp;#039;Vendor Specific Protocol&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   bMaxPacketSize0        64&lt;br /&gt;
   idVendor           0x77a1 &lt;br /&gt;
   idProduct          0x01a2 &lt;br /&gt;
   bcdDevice            0.00&lt;br /&gt;
   iManufacturer           0 &lt;br /&gt;
   iProduct                0 &lt;br /&gt;
   iSerial                 0 &lt;br /&gt;
   bNumConfigurations      1&lt;br /&gt;
   Configuration Descriptor:&lt;br /&gt;
     bLength                 9&lt;br /&gt;
     bDescriptorType         2&lt;br /&gt;
     wTotalLength          171&lt;br /&gt;
     bNumInterfaces          1&lt;br /&gt;
     bConfigurationValue     1&lt;br /&gt;
     iConfiguration          0 &lt;br /&gt;
     bmAttributes         0x80&lt;br /&gt;
       (Bus Powered)&lt;br /&gt;
     MaxPower              100mA&lt;br /&gt;
     Interface Descriptor:&lt;br /&gt;
       bLength                 9&lt;br /&gt;
       bDescriptorType         4&lt;br /&gt;
       bInterfaceNumber        0&lt;br /&gt;
       bAlternateSetting       0&lt;br /&gt;
       bNumEndpoints           0&lt;br /&gt;
       bInterfaceClass       255 Vendor Specific Class&lt;br /&gt;
       bInterfaceSubClass    255 Vendor Specific Subclass&lt;br /&gt;
       bInterfaceProtocol    255 Vendor Specific Protocol&lt;br /&gt;
       iInterface              0 &lt;br /&gt;
     Interface Descriptor:&lt;br /&gt;
       bLength                 9&lt;br /&gt;
       bDescriptorType         4&lt;br /&gt;
       bInterfaceNumber        0&lt;br /&gt;
       bAlternateSetting       1&lt;br /&gt;
       bNumEndpoints           6&lt;br /&gt;
       bInterfaceClass       255 Vendor Specific Class&lt;br /&gt;
       bInterfaceSubClass    255 Vendor Specific Subclass&lt;br /&gt;
       bInterfaceProtocol    255 Vendor Specific Protocol&lt;br /&gt;
       iInterface              0 &lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x01  EP 1 OUT&lt;br /&gt;
         bmAttributes            2&lt;br /&gt;
           Transfer Type            Bulk&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               0&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
         bmAttributes            2&lt;br /&gt;
           Transfer Type            Bulk&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               0&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
         bmAttributes            2&lt;br /&gt;
           Transfer Type            Bulk&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               0&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x04  EP 4 OUT&lt;br /&gt;
         bmAttributes            2&lt;br /&gt;
           Transfer Type            Bulk&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               0&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x86  EP 6 IN&lt;br /&gt;
         bmAttributes            2&lt;br /&gt;
           Transfer Type            Bulk&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               0&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x88  EP 8 IN&lt;br /&gt;
         bmAttributes            2&lt;br /&gt;
           Transfer Type            Bulk&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               0&lt;br /&gt;
     Interface Descriptor:&lt;br /&gt;
       bLength                 9&lt;br /&gt;
       bDescriptorType         4&lt;br /&gt;
       bInterfaceNumber        0&lt;br /&gt;
       bAlternateSetting       2&lt;br /&gt;
       bNumEndpoints           6&lt;br /&gt;
       bInterfaceClass       255 Vendor Specific Class&lt;br /&gt;
       bInterfaceSubClass    255 Vendor Specific Subclass&lt;br /&gt;
       bInterfaceProtocol    255 Vendor Specific Protocol&lt;br /&gt;
       iInterface              0 &lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x01  EP 1 OUT&lt;br /&gt;
         bmAttributes            3&lt;br /&gt;
           Transfer Type            Interrupt&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
         bInterval               1&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
         bmAttributes            3&lt;br /&gt;
           Transfer Type            Interrupt&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
         bInterval               1&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
         bmAttributes            3&lt;br /&gt;
           Transfer Type            Interrupt&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               1&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x04  EP 4 OUT&lt;br /&gt;
         bmAttributes            2&lt;br /&gt;
           Transfer Type            Bulk&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               0&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x86  EP 6 IN&lt;br /&gt;
         bmAttributes            3&lt;br /&gt;
           Transfer Type            Interrupt&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               1&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x88  EP 8 IN&lt;br /&gt;
         bmAttributes            2&lt;br /&gt;
           Transfer Type            Bulk&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               0&lt;br /&gt;
     Interface Descriptor:&lt;br /&gt;
       bLength                 9&lt;br /&gt;
       bDescriptorType         4&lt;br /&gt;
       bInterfaceNumber        0&lt;br /&gt;
       bAlternateSetting       3&lt;br /&gt;
       bNumEndpoints           6&lt;br /&gt;
       bInterfaceClass       255 Vendor Specific Class&lt;br /&gt;
       bInterfaceSubClass    255 Vendor Specific Subclass&lt;br /&gt;
       bInterfaceProtocol    255 Vendor Specific Protocol&lt;br /&gt;
       iInterface              0 &lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x01  EP 1 OUT&lt;br /&gt;
         bmAttributes            3&lt;br /&gt;
           Transfer Type            Interrupt&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
         bInterval               1&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
         bmAttributes            3&lt;br /&gt;
           Transfer Type            Interrupt&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
         bInterval               1&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
         bmAttributes            1&lt;br /&gt;
           Transfer Type            Isochronous&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               1&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x04  EP 4 OUT&lt;br /&gt;
         bmAttributes            2&lt;br /&gt;
           Transfer Type            Bulk&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               0&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x86  EP 6 IN&lt;br /&gt;
         bmAttributes            1&lt;br /&gt;
           Transfer Type            Isochronous&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               1&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x88  EP 8 IN&lt;br /&gt;
         bmAttributes            2&lt;br /&gt;
           Transfer Type            Bulk&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               0&lt;br /&gt;
 Device Qualifier (for other device speed):&lt;br /&gt;
   bLength                10&lt;br /&gt;
   bDescriptorType         6&lt;br /&gt;
   bcdUSB               2.00&lt;br /&gt;
   bDeviceClass          255 Vendor Specific Class&lt;br /&gt;
   bDeviceSubClass       255 Vendor Specific Subclass&lt;br /&gt;
   bDeviceProtocol       255 Vendor Specific Protocol&lt;br /&gt;
   bMaxPacketSize0        64&lt;br /&gt;
   bNumConfigurations      1&lt;br /&gt;
 Device Status:     0x0000&lt;br /&gt;
   (Bus Powered)&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== lsusb (after firmware upload) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Bus 001 Device 022: ID &amp;#039;&amp;#039;&amp;#039;77a1:01a2 Kingst Kingst Logic Analyzer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 Device Descriptor:&lt;br /&gt;
   bLength                18&lt;br /&gt;
   bDescriptorType         1&lt;br /&gt;
   bcdUSB               2.00&lt;br /&gt;
   bDeviceClass            0 &lt;br /&gt;
   bDeviceSubClass         0 &lt;br /&gt;
   bDeviceProtocol         0 &lt;br /&gt;
   bMaxPacketSize0        64&lt;br /&gt;
   idVendor           0x77a1 &lt;br /&gt;
   idProduct          0x01a2 &lt;br /&gt;
   bcdDevice            0.00&lt;br /&gt;
   iManufacturer           1 &amp;#039;&amp;#039;&amp;#039;Kingst&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   iProduct                2 &amp;#039;&amp;#039;&amp;#039;Kingst Logic Analyzer&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
   iSerial                 0 &lt;br /&gt;
   bNumConfigurations      1&lt;br /&gt;
   Configuration Descriptor:&lt;br /&gt;
     bLength                 9&lt;br /&gt;
     bDescriptorType         2&lt;br /&gt;
     wTotalLength       0x0020&lt;br /&gt;
     bNumInterfaces          1&lt;br /&gt;
     bConfigurationValue     1&lt;br /&gt;
     iConfiguration          0 &lt;br /&gt;
     bmAttributes         0x80&lt;br /&gt;
       (Bus Powered)&lt;br /&gt;
     MaxPower              100mA&lt;br /&gt;
     Interface Descriptor:&lt;br /&gt;
       bLength                 9&lt;br /&gt;
       bDescriptorType         4&lt;br /&gt;
       bInterfaceNumber        0&lt;br /&gt;
       bAlternateSetting       0&lt;br /&gt;
       bNumEndpoints           2&lt;br /&gt;
       bInterfaceClass       255 Vendor Specific Class&lt;br /&gt;
       bInterfaceSubClass      0 &lt;br /&gt;
       bInterfaceProtocol      0 &lt;br /&gt;
       iInterface              0 &lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
         bmAttributes            2&lt;br /&gt;
           Transfer Type            Bulk&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               0&lt;br /&gt;
       Endpoint Descriptor:&lt;br /&gt;
         bLength                 7&lt;br /&gt;
         bDescriptorType         5&lt;br /&gt;
         bEndpointAddress     0x86  EP 6 IN&lt;br /&gt;
         bmAttributes            2&lt;br /&gt;
           Transfer Type            Bulk&lt;br /&gt;
           Synch Type               None&lt;br /&gt;
           Usage Type               Data&lt;br /&gt;
         wMaxPacketSize     0x0200  1x 512 bytes&lt;br /&gt;
         bInterval               0&lt;br /&gt;
 Device Qualifier (for other device speed):&lt;br /&gt;
   bLength                10&lt;br /&gt;
   bDescriptorType         6&lt;br /&gt;
   bcdUSB               2.00&lt;br /&gt;
   bDeviceClass            0 &lt;br /&gt;
   bDeviceSubClass         0 &lt;br /&gt;
   bDeviceProtocol         0 &lt;br /&gt;
   bMaxPacketSize0        64&lt;br /&gt;
   bNumConfigurations      1&lt;br /&gt;
 Device Status:     0x0000&lt;br /&gt;
   (Bus Powered)&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Observations of the LA2016 Internal SPI Bus ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The software on the host PC controls the logic analyser capture settings by writing to a set of byte-wide control registers within the FPGA.&amp;lt;br /&amp;gt;&lt;br /&gt;
It contains around 60 registers which are accessed using the SPI bus between the FX2 MCU and the FPGA (see schematic on sigrok wiki page).&amp;lt;br /&amp;gt;&lt;br /&gt;
The SPI bus is configured with the FX2 as master and FPGA as slave. Every SPI transaction is two bytes and is framed by SPI CS (active low).&amp;lt;br /&amp;gt;&lt;br /&gt;
The first byte contains the register address and a READ/write bit. The second byte contains the data, which is either written to the&amp;lt;br /&amp;gt;&lt;br /&gt;
FPGA or read from it. Note that these transactions are all least significant bit first on the SPI bus, so your LA will need to&amp;lt;br /&amp;gt;&lt;br /&gt;
reverse the bit order to interpret correctly.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
Capture status can be read from register address 0x00 and 0x01. After a capture has completed, information about the data location in SDRAM can&amp;lt;br /&amp;gt;&lt;br /&gt;
be read from addresses 0x10-0x1B. For other registers, reading is not implemented and they just read as 0xFF. Where reading is implemented, the&amp;lt;br /&amp;gt;&lt;br /&gt;
same address is used to access different registers based on read/write. For example, FPGA status is read from address 0x00 and 0x01 but writing 0x03&amp;lt;br /&amp;gt;&lt;br /&gt;
to address 0x00 starts an acquistion.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
The FX2 MCU is simply acting as a &amp;#039;dumb&amp;#039; gateway, translating USB requests for FPGA access into SPI bus requests. USB control OUT vendor class&amp;lt;br /&amp;gt;&lt;br /&gt;
transfers with bRequest of 0x20 will write to the FPGA registers, whereas IN transfers will read them. For example, a USB request to read two&amp;lt;br /&amp;gt;&lt;br /&gt;
bytes starting from address 0x00 would cause the FX2 to issue a SPI read for address 0x00 and then a read for address 0x01.&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SPI bus activity during OEM software initialisation ===&lt;br /&gt;
&lt;br /&gt;
    First byte is FPGA register address. The MSbit is set for READ transfers.&lt;br /&gt;
    |&lt;br /&gt;
    |  Second byte is data being written or read&lt;br /&gt;
    |  |&lt;br /&gt;
    |  |&lt;br /&gt;
    80 FF   &amp;lt;-- Read RUN STATUS&lt;br /&gt;
    81 FF&lt;br /&gt;
    &lt;br /&gt;
    80 FF   &amp;lt;-- Read RUN STATUS&lt;br /&gt;
    81 FF&lt;br /&gt;
    &lt;br /&gt;
    68 3F   &amp;lt;-- Write SET INPUT THRESHOLD  &lt;br /&gt;
    69 02&lt;br /&gt;
    6A F2&lt;br /&gt;
    6B 00&lt;br /&gt;
    &lt;br /&gt;
    02 00  &amp;lt;-- Halt USER PWM outputs to begin settings change&lt;br /&gt;
    &lt;br /&gt;
    70 40  &amp;lt;-- USER PWM1 SETTINGS&lt;br /&gt;
    71 0D&lt;br /&gt;
    72 03&lt;br /&gt;
    73 00&lt;br /&gt;
    74 A0&lt;br /&gt;
    75 86&lt;br /&gt;
    76 01&lt;br /&gt;
    77 00&lt;br /&gt;
    &lt;br /&gt;
    78 D0  &amp;lt;-- USER PWM2 SETTINGS&lt;br /&gt;
    79 07&lt;br /&gt;
    7A 00&lt;br /&gt;
    7B 00&lt;br /&gt;
    7C E8&lt;br /&gt;
    7D 03&lt;br /&gt;
    7E 00&lt;br /&gt;
    7F 00&lt;br /&gt;
    &lt;br /&gt;
    02 03  &amp;lt;-- enable USER PWM outputs&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SPI bus activity during capture sequence ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
OEM software with no triggers set does this to FPGA regs:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    First byte is FPGA register address. The MSbit is set for READ transfers.&lt;br /&gt;
    |&lt;br /&gt;
    |  Second byte is data being written or read&lt;br /&gt;
    |  |&lt;br /&gt;
    |  |&lt;br /&gt;
    03 00  &amp;lt;-- Set capture mode to be &amp;quot;write to SDRAM&amp;quot;, rather than stream mode (where reg 03 = 01)&lt;br /&gt;
    &lt;br /&gt;
    TRIGGER SETUP&lt;br /&gt;
    20 FF  &amp;lt;-- enable all 16 channels (change on any channel will cause new repetition packet)&lt;br /&gt;
    21 FF&lt;br /&gt;
    22 00  &amp;lt;-- no triggers active&lt;br /&gt;
    23 00&lt;br /&gt;
    24 00&lt;br /&gt;
    25 00&lt;br /&gt;
    26 00&lt;br /&gt;
    27 00&lt;br /&gt;
    28 00&lt;br /&gt;
    29 00&lt;br /&gt;
    2A 00&lt;br /&gt;
    2B 00&lt;br /&gt;
    2C 00&lt;br /&gt;
    2D 00&lt;br /&gt;
    2E 00&lt;br /&gt;
    2F 00&lt;br /&gt;
    &lt;br /&gt;
    SAMPLING SETUP&lt;br /&gt;
    10 40  &amp;lt;-- 32 bit total samples count request&lt;br /&gt;
    11 42&lt;br /&gt;
    12 0F&lt;br /&gt;
    13 00&lt;br /&gt;
    14 00  &amp;lt;-- always zero&lt;br /&gt;
    15 00  &amp;lt;-- 32 bit pre-trigger samples&lt;br /&gt;
    16 00&lt;br /&gt;
    17 00&lt;br /&gt;
    18 00&lt;br /&gt;
    19 00   &amp;lt;- always zero&lt;br /&gt;
    1A 00    &amp;lt;--|&lt;br /&gt;
    1B 00    &amp;lt;--These 3 bytes are pre_trigger_mem_bytes, see set_sample_config()&lt;br /&gt;
    1C 04    &amp;lt;--|&lt;br /&gt;
    1D C8  &amp;lt;-- Capture rate   1D is divisor LSbyte   200MHz / divisor - sample rate&lt;br /&gt;
    1E 00  &amp;lt;--                1E is divisor MSbyte&lt;br /&gt;
    1F 00&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    00 03   &amp;lt;--- RUN now running the capture&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    80 E2  Reading capture status every 100ms or so from register address 0x00 and 0x01&lt;br /&gt;
    81 85  The run_state values in order are:&lt;br /&gt;
            0x85E2: Pre-sampling (for samples before trigger position, e.g. half of samples when set at 50% capture ratio)&lt;br /&gt;
            0x85EA: Waiting for trigger&lt;br /&gt;
            0x85EE: Running&lt;br /&gt;
            0x85ED: Done&lt;br /&gt;
    &lt;br /&gt;
    80 EE  &lt;br /&gt;
    81 85  &lt;br /&gt;
    &lt;br /&gt;
    80 EE&lt;br /&gt;
    81 85  &lt;br /&gt;
    &lt;br /&gt;
    80 ED&lt;br /&gt;
    81 85&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    Read 12 bytes from the FPGA registers starting at address 0x10 FPGA_REG_CTRL_BULK to get:&lt;br /&gt;
            32bit n_rep_packets&lt;br /&gt;
            32bit n_rep_packets_before_trigger&lt;br /&gt;
            32bit write_pos     &lt;br /&gt;
    90 xx&lt;br /&gt;
    91 xx&lt;br /&gt;
    92 xx&lt;br /&gt;
    93 xx&lt;br /&gt;
    94 xx     see capture_info() driver function&lt;br /&gt;
    95 xx    &lt;br /&gt;
    96 xx     xx == value depends on capture data&lt;br /&gt;
    97 xx&lt;br /&gt;
    98 xx&lt;br /&gt;
    99 xx&lt;br /&gt;
    9A xx&lt;br /&gt;
    9B xx&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    FPGA_REG_UPLOAD  Write two 32 bit numbers, SDRAM start address and n bytes for bulk upload&lt;br /&gt;
    08 00&lt;br /&gt;
    09 00&lt;br /&gt;
    0A 00&lt;br /&gt;
    0B 00    values written are derived from the above info on capture data&lt;br /&gt;
    0C 20&lt;br /&gt;
    0D A9&lt;br /&gt;
    0E 61&lt;br /&gt;
    0F 00&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    01 01  Write to start the transfer of capture data from SDRAM to FX2 fifos (issued by FX2 when it receives USB command 0x38 START BULK TRANSFER)&lt;br /&gt;
    &lt;br /&gt;
           3ms gap&lt;br /&gt;
    &lt;br /&gt;
    00 00  HALT capture engine&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16064</id>
		<title>Kingst LA2016</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16064"/>
		<updated>2021-03-06T14:17:22Z</updated>

		<summary type="html">&lt;p&gt;Planet9: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Kingst la2016 mugshot.png|180px]]&lt;br /&gt;
| name             = Kingst LA2016&lt;br /&gt;
| status           = in progress&lt;br /&gt;
| source_code_dir  = kingst-la2016&lt;br /&gt;
| channels         = 16&lt;br /&gt;
| samplerate       = 200MHz max.&lt;br /&gt;
| samplerate_state = State analysis not supported&lt;br /&gt;
| triggers         = Level (multiple channels)&amp;lt;br/&amp;gt;Edge (one channel)&lt;br /&gt;
| voltages         = -50V &amp;amp;mdash; 50V&lt;br /&gt;
| threshold        = Configurable:&amp;lt;br/&amp;gt;-4V&amp;amp;mdash;4V, min step 0.01V&lt;br /&gt;
| memory           = 128MByte DDR2 SDRAM&amp;lt;br/&amp;gt;40M&amp;amp;mdash;10G samples&lt;br /&gt;
| compression      = Yes&lt;br /&gt;
| website          = [http://www.qdkingst.com/en qdkingst.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5th March 2021:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;This device was previously marked as supported, however, some users are reporting issues and we are working on driver changes.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Kingst LA2016&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyser with 200MHz maximum sampling rate.&lt;br /&gt;
The current vendor is &amp;quot;Qingdao Kingst Electronics Co., Ltd.&amp;quot; but older models are branded &amp;quot;Jiankun&amp;quot; rather than &amp;quot;Kingst&amp;quot;.&lt;br /&gt;
The vendor software can be freely downloaded from their [http://www.qdkingst.com/en/products website].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
This logic analyser has been on the market since around 2012 and there are a few different revisions of it.&lt;br /&gt;
The [[Media:Kingst_LA2016_LA1016_Schematic.zip|schematic]] has been reverse engineered from&lt;br /&gt;
a unit purchased in 2020 containing a PCB marked as v1.3.0. &lt;br /&gt;
The circuitry of older PCBs is similar but may have different voltage regulators, different input&lt;br /&gt;
channel routing to the FPGA, and lack the input threshold adjustment.&lt;br /&gt;
&lt;br /&gt;
The LA1016 uses identical hardware with a different FPGA bitstream which limits the sample rate to 100MHz maximum.&lt;br /&gt;
&lt;br /&gt;
All of these devices use the same firmware for the FX2LP MCU but there are four different FPGA bitstreams;&lt;br /&gt;
i.e. LA1016 &amp;amp; LA2016 bitstreams and the older versions of these (to swap some of the input channels as required by PCB routing changes).&lt;br /&gt;
Once the FX2LP firmware has been loaded, a &amp;#039;magic number&amp;#039; is read from EEPROM which identifies the&lt;br /&gt;
device and thus allows the correct FPGA bitstream to be loaded.&lt;br /&gt;
&lt;br /&gt;
Note that the LA1016 cannot be boosted to 200MHz by changing the &amp;#039;magic number&amp;#039; or the FPGA bitstream.&lt;br /&gt;
When the FPGA initialises, its reads 16 bytes from U10 which are used to authenticate the bitstream; these bytes are different for 100 and 200MHz devices.&lt;br /&gt;
Furthermore, the OEM software performs a challenge-response with U10 to authenticate the logic analyser as genuine &amp;#039;Kingst&amp;#039;.&lt;br /&gt;
The good news is that U10 does not impact Sigrok support in any way and we don&amp;#039;t need to communicate with it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main components and their function:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MCU&amp;#039;&amp;#039;&amp;#039; Cypress FX2LP&lt;br /&gt;
:This MCU only has volatile memory and in this implementation it&amp;#039;s firmware is loaded from the host by the application software.&lt;br /&gt;
:Either the OEM firmware or open source firmware can be used.&lt;br /&gt;
:In essence, it just performs data moving operations:&lt;br /&gt;
#Endpoint 0 to EEPROM read/write&lt;br /&gt;
#Endpoint 0 to SPI read/write for FPGA control registers&lt;br /&gt;
#Endpoint 2 bulk out to SPI for loading FPGA bitstream&lt;br /&gt;
#Endpoint 6 bulk in to read capture data from FPGA/SDRAM&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;EEPROM&amp;#039;&amp;#039;&amp;#039; Atmel AT24C02 2Kbit&lt;br /&gt;
:This non-volatile memory stores:&lt;br /&gt;
#VID:PID which is 77a1:01a2 for LA1016 and LA2016 devices&lt;br /&gt;
#&amp;#039;magic number&amp;#039; to identify model and revision&lt;br /&gt;
#purchase date (presumably for warranty claims)&lt;br /&gt;
#other information related to U10 but not of interest to Sigrok&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039; Altera EP4CE6&lt;br /&gt;
:Currently requires the OEM bitstream.&lt;br /&gt;
:Has a bank of approximately 60 byte-wide registers accessed via SPI which are used to contol FPGA functions.&lt;br /&gt;
:Captures 16 input channels, performs compression (run length encoding, 16bit sample plus 8 bit repetition count).&lt;br /&gt;
:Stores samples to SDRAM (or streams direct to USB but we don&amp;#039;t implement that method).&lt;br /&gt;
:Interestingly, this device (6K LE) shares the same die as the next up device EP4CE10 (10K LE) and can be programmed as such. However, functionality would not be guaranteed as CE6 devices may be CE10 rejects.&lt;br /&gt;
:If open source FPGA code were to become available there would be capacity to experiment with more advanced triggers, such as pattern trigger for SPI or I2C.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SDRAM&amp;#039;&amp;#039;&amp;#039; Samsung DDR2&lt;br /&gt;
:Samples are stored as 3 bytes (16bit sample plus 8 bit repetition count).&lt;br /&gt;
:A &amp;#039;transfer packet&amp;#039; for upload is 16 bytes = 5 compressed samples plus a sequence number byte.&lt;br /&gt;
:Burst read/write for this SDRAM is up to 16 bytes, which matches the transfer packet size and is likely used for all SDRAM read/writes.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;U10&amp;#039;&amp;#039;&amp;#039; Kingst Authentication Device&lt;br /&gt;
:Not used by Sigrok.&lt;br /&gt;
#Provides fixed bytes identifier to FPGA for bitstream validation (either LA1016 100MHz or LA2016 200MHz bitstream)&lt;br /&gt;
#Provides challenge-response rolling-code for OEM software to authenticate the device as genuine &amp;#039;Kingst&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Datasheets:&lt;br /&gt;
&lt;br /&gt;
:U1 [https://www.intel.com/content/www/us/en/products/programmable/fpga/cyclone-iv.html EP4CE6F17C8N] Cyclone IV E FPGA&lt;br /&gt;
:U2,4,5,7 [http://sxsemi.com/upfile/PDWL050019-SOT236.pdf	PDWL050019] TVS Diode Array&lt;br /&gt;
:U3 [https://www.cypress.com/part/cy7c68013a-100axc CY7C68013A-100AXC] EZUSB MCU&lt;br /&gt;
:U6,U8 [http://www.sg-micro.com/show-product-510.html SGM2019] Linear Regulator&lt;br /&gt;
:U9 [https://www.microchip.com/wwwproducts/en/AT24C02C AT24C02] EEPROM 2kbit&lt;br /&gt;
:U10 (device not identified, small MCU of some type)&lt;br /&gt;
:U11 K4T1G164QG-BCF8, DDR2 SDRAM, obsolete&lt;br /&gt;
:U12,U13 [http://www.sg-micro.com/show-product-519.html SGM6013] Switch-mode Regulator&lt;br /&gt;
:U14 [http://www.sg-micro.com/show-product-203.html SGM8272] Dual Op-amp&lt;br /&gt;
:U15 [http://www.ti.com/lit/ds/symlink/tps60403.pdf TPS60403] Charge Pump Voltage Inverter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Kingst la2016 package contents.jpg|&amp;lt;small&amp;gt;Package contents&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 paper.jpg|&amp;lt;small&amp;gt;Paper&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device top.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device bottom.jpg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb top.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb bottom.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 cypress fx2.jpg|&amp;lt;small&amp;gt;Cypress FX2&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 altera cyclone4 ep4ce6f17c8n.jpg|&amp;lt;small&amp;gt;Altera Cyclone IV&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 samsung k4t1g164qg.jpg|&amp;lt;small&amp;gt;Samsung K4T1G164QG&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 atmel 24c02n.jpg|&amp;lt;small&amp;gt;Atmel 24C02N&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 unmarked ic.jpg|&amp;lt;small&amp;gt;Unmarked IC&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 fpni.jpg|&amp;lt;small&amp;gt;PFNI&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TODO This extraction script needs updated&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
In order to use this device you need to extract the firmware/FPGA files from the vendor software (Linux download) using the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=firmware/kingst-la sigrok-fwextract-kingst-la2016] script from the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree sigrok-util] repo and place them in one of the usual [[Firmware#Where_to_put_the_firmware_files|places where libsigrok expects firmware files]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./sigrok-fwextract-kingst-la2016 KingstVIS/KingstVIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 saved 180224 bytes to kingst-la2016a-fpga.bitstream&lt;br /&gt;
 saved 5350 bytes to kingst-la-01a1.fw&lt;br /&gt;
 saved 5430 bytes to kingst-la-01a2.fw&lt;br /&gt;
 saved 5718 bytes to kingst-la-01a3.fw&lt;br /&gt;
 saved 142412 bytes to kingst-la-01a4.fw&lt;br /&gt;
 saved 5452 bytes to kingst-la-03a1.fw&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.qdkingst.com/en/download Vendor software]&lt;br /&gt;
* [http://www.qdkingst.com/download/vis_ug_en User guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:In progress]]&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16063</id>
		<title>Kingst LA2016</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16063"/>
		<updated>2021-03-06T14:00:57Z</updated>

		<summary type="html">&lt;p&gt;Planet9: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Kingst la2016 mugshot.png|180px]]&lt;br /&gt;
| name             = Kingst LA2016&lt;br /&gt;
| status           = in progress&lt;br /&gt;
| source_code_dir  = kingst-la2016&lt;br /&gt;
| channels         = 16&lt;br /&gt;
| samplerate       = 200MHz max.&lt;br /&gt;
| samplerate_state = State analysis not supported&lt;br /&gt;
| triggers         = Level (multiple channels)&amp;lt;br/&amp;gt;Edge (one channel)&lt;br /&gt;
| voltages         = -50V &amp;amp;mdash; 50V&lt;br /&gt;
| threshold        = Configurable:&amp;lt;br/&amp;gt;-4V&amp;amp;mdash;4V, min step 0.01V&lt;br /&gt;
| memory           = 128MByte DDR2 SDRAM&amp;lt;br/&amp;gt;40M&amp;amp;mdash;10G samples&lt;br /&gt;
| compression      = Yes&lt;br /&gt;
| website          = [http://www.qdkingst.com/en qdkingst.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5th March 2021:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;This device was previously marked as supported, however, some users are reporting issues and we are working on driver changes.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Kingst LA2016&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyser with 200MHz maximum sampling rate.&lt;br /&gt;
The current vendor is &amp;quot;Qingdao Kingst Electronics Co., Ltd.&amp;quot; but older models are branded &amp;quot;Jiankun&amp;quot; rather than &amp;quot;Kingst&amp;quot;.&lt;br /&gt;
The vendor software can be freely downloaded from their [http://www.qdkingst.com/en/products website].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
This logic analyser has been on the market since around 2012 and there are a few different revisions of it.&lt;br /&gt;
This [[Media:Kingst_LA2016_LA1016_Schematic.zip|schematic]] has been reverse engineered from&lt;br /&gt;
a unit purchased in 2020 containing a PCB marked as v1.3.0. &lt;br /&gt;
The circuitry of older PCBs is similar but may have different voltage regulators, different input&lt;br /&gt;
channel routing to the FPGA, and lack the input threshold adjustment.&lt;br /&gt;
&lt;br /&gt;
The LA1016 uses identical hardware with a different FPGA bitstream which limits the sample rate to 100MHz maximum.&lt;br /&gt;
&lt;br /&gt;
All of these devices use the same firmware for the FX2LP MCU but there are four different FPGA bitstreams;&lt;br /&gt;
i.e. LA1016 &amp;amp; LA2016 bitstreams and the older versions of these (to swap some of the input channels as required by PCB routing changes).&lt;br /&gt;
Once the FX2LP firmware has been loaded, a &amp;#039;magic number&amp;#039; is read from EEPROM which identifies the&lt;br /&gt;
device and thus allows the correct FPGA bitstream to be loaded.&lt;br /&gt;
&lt;br /&gt;
Note that the LA1016 cannot be boosted to 200MHz by changing the &amp;#039;magic number&amp;#039; or the FPGA bitstream.&lt;br /&gt;
When the FPGA initialises, its reads 16 bytes from U10 which are used to authenticate the bitstream; these bytes are different for 100 and 200MHz devices.&lt;br /&gt;
Furthermore, the OEM software performs a challenge-response with U10 to authenticate the logic analyser as genuine &amp;#039;Kingst&amp;#039;.&lt;br /&gt;
The good news is that U10 does not impact Sigrok support in any way and we don&amp;#039;t need to communicate with it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main components and their function:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MCU&amp;#039;&amp;#039;&amp;#039; Cypress FX2LP&lt;br /&gt;
:This MCU only has volatile memory and in this implementation it&amp;#039;s firmware is loaded from the host by the application software.&lt;br /&gt;
:Either the OEM firmware or open source firmware can be used.&lt;br /&gt;
:In essence, it just performs data moving operations:&lt;br /&gt;
#Endpoint 0 to EEPROM read/write&lt;br /&gt;
#Endpoint 0 to SPI read/write for FPGA control registers&lt;br /&gt;
#Endpoint 2 bulk out to SPI for loading FPGA bitstream&lt;br /&gt;
#Endpoint 6 bulk in to read capture data from FPGA/SDRAM&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;EEPROM&amp;#039;&amp;#039;&amp;#039; Atmel AT24C02 2Kbit&lt;br /&gt;
:This non-volatile memory stores:&lt;br /&gt;
#VID:PID which is 77a1:01a2 for LA1016 and LA2016 devices&lt;br /&gt;
#&amp;#039;magic number&amp;#039; to identify model and revision&lt;br /&gt;
#purchase date (presumably for warranty claims)&lt;br /&gt;
#other information related to U10 but not of interest to Sigrok&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039; Altera EP4CE6&lt;br /&gt;
:Currently requires the OEM bitstream.&lt;br /&gt;
:Has a bank of approximately 60 byte-wide registers accessed via SPI which are used to contol FPGA functions.&lt;br /&gt;
:Captures 16 input channels, performs compression (run length encoding, 16bit sample plus 8 bit repetition count).&lt;br /&gt;
:Stores samples to SDRAM (or streams direct to USB but we don&amp;#039;t implement that method).&lt;br /&gt;
:Interestingly, this device (6K LE) shares the same die as the next up device EP4CE10 (10K LE) and can be programmed as such. However, functionality would not be guaranteed as CE6 devices may be CE10 rejects.&lt;br /&gt;
:If open source FPGA code were to become available there would be capacity to experiment with more advanced triggers, such as pattern trigger for SPI or I2C.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SDRAM&amp;#039;&amp;#039;&amp;#039; Samsung DDR2&lt;br /&gt;
:Samples are stored as 3 bytes (16bit sample plus 8 bit repetition count).&lt;br /&gt;
:A &amp;#039;transfer packet&amp;#039; for upload is 16 bytes = 5 compressed samples plus a sequence number byte.&lt;br /&gt;
:Burst read/write for this SDRAM is up to 16 bytes, which matches the transfer packet size and is likely used for all SDRAM read/writes.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;U10&amp;#039;&amp;#039;&amp;#039; Kingst Authentication Device&lt;br /&gt;
:Not used by Sigrok.&lt;br /&gt;
#Provides fixed bytes identifier to FPGA for bitstream validation (either LA1016 100MHz or LA2016 200MHz bitstream)&lt;br /&gt;
#Provides challenge-response rolling-code for OEM software to authenticate the device as genuine &amp;#039;Kingst&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Datasheets:&lt;br /&gt;
&lt;br /&gt;
:U1 [https://www.intel.com/content/www/us/en/products/programmable/fpga/cyclone-iv.html EP4CE6F17C8N] Cyclone IV E FPGA&lt;br /&gt;
:U2,4,5,7 [http://sxsemi.com/upfile/PDWL050019-SOT236.pdf	PDWL050019] TVS Diode Array&lt;br /&gt;
:U3 [https://www.cypress.com/part/cy7c68013a-100axc CY7C68013A-100AXC] EZUSB MCU&lt;br /&gt;
:U6,U8 [http://www.sg-micro.com/show-product-510.html SGM2019] Linear Regulator&lt;br /&gt;
:U9 [https://www.microchip.com/wwwproducts/en/AT24C02C AT24C02] EEPROM 2kbit&lt;br /&gt;
:U10 (device not identified, small MCU of some type)&lt;br /&gt;
:U11 K4T1G164QG-BCF8, DDR2 SDRAM, obsolete&lt;br /&gt;
:U12,U13 [http://www.sg-micro.com/show-product-519.html SGM6013] Switch-mode Regulator&lt;br /&gt;
:U14 [http://www.sg-micro.com/show-product-203.html SGM8272] Dual Op-amp&lt;br /&gt;
:U15 [http://www.ti.com/lit/ds/symlink/tps60403.pdf TPS60403] Charge Pump Voltage Inverter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Kingst la2016 package contents.jpg|&amp;lt;small&amp;gt;Package contents&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 paper.jpg|&amp;lt;small&amp;gt;Paper&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device top.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device bottom.jpg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb top.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb bottom.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 cypress fx2.jpg|&amp;lt;small&amp;gt;Cypress FX2&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 altera cyclone4 ep4ce6f17c8n.jpg|&amp;lt;small&amp;gt;Altera Cyclone IV&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 samsung k4t1g164qg.jpg|&amp;lt;small&amp;gt;Samsung K4T1G164QG&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 atmel 24c02n.jpg|&amp;lt;small&amp;gt;Atmel 24C02N&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 unmarked ic.jpg|&amp;lt;small&amp;gt;Unmarked IC&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 fpni.jpg|&amp;lt;small&amp;gt;PFNI&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TODO This extraction script needs updated&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
In order to use this device you need to extract the firmware/FPGA files from the vendor software (Linux download) using the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=firmware/kingst-la sigrok-fwextract-kingst-la2016] script from the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree sigrok-util] repo and place them in one of the usual [[Firmware#Where_to_put_the_firmware_files|places where libsigrok expects firmware files]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./sigrok-fwextract-kingst-la2016 KingstVIS/KingstVIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 saved 180224 bytes to kingst-la2016a-fpga.bitstream&lt;br /&gt;
 saved 5350 bytes to kingst-la-01a1.fw&lt;br /&gt;
 saved 5430 bytes to kingst-la-01a2.fw&lt;br /&gt;
 saved 5718 bytes to kingst-la-01a3.fw&lt;br /&gt;
 saved 142412 bytes to kingst-la-01a4.fw&lt;br /&gt;
 saved 5452 bytes to kingst-la-03a1.fw&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.qdkingst.com/en/download Vendor software]&lt;br /&gt;
* [http://www.qdkingst.com/download/vis_ug_en User guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:In progress]]&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16062</id>
		<title>Kingst LA2016</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16062"/>
		<updated>2021-03-06T13:51:49Z</updated>

		<summary type="html">&lt;p&gt;Planet9: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Kingst la2016 mugshot.png|180px]]&lt;br /&gt;
| name             = Kingst LA2016&lt;br /&gt;
| status           = in progress&lt;br /&gt;
| source_code_dir  = kingst-la2016&lt;br /&gt;
| channels         = 16&lt;br /&gt;
| samplerate       = 200MHz max.&lt;br /&gt;
| samplerate_state = State analysis not supported&lt;br /&gt;
| triggers         = Level (multiple channels)&amp;lt;br/&amp;gt;Edge (one channel)&lt;br /&gt;
| voltages         = -50V &amp;amp;mdash; 50V&lt;br /&gt;
| threshold        = Configurable:&amp;lt;br/&amp;gt;-4V&amp;amp;mdash;4V, min step 0.01V&lt;br /&gt;
| memory           = 128MByte DDR2 SDRAM&amp;lt;br/&amp;gt;40M&amp;amp;mdash;10G samples&lt;br /&gt;
| compression      = Yes&lt;br /&gt;
| website          = [http://www.qdkingst.com/en qdkingst.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5th March 2021:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;This device was previously marked as supported, however, some users are reporting issues and we are working on driver changes.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Kingst LA2016&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyser with 200MHz maximum sampling rate.&lt;br /&gt;
The current vendor is &amp;quot;Qingdao Kingst Electronics Co., Ltd.&amp;quot; but older models are branded &amp;quot;Jiankun&amp;quot; rather than &amp;quot;Kingst&amp;quot;.&lt;br /&gt;
The vendor software can be freely downloaded from their [http://www.qdkingst.com/en/products website].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
This logic analyser has been on the market since around 2012 and there are a few different revisions of it.&lt;br /&gt;
This [[Media:Kingst_LA2016_LA1016_Schematic.zip|schematic]] has been reverse engineered from&lt;br /&gt;
a unit purchased in 2020 containing a PCB marked as v1.3.0. &lt;br /&gt;
The circuitry of older PCBs is similar but may have different voltage regulators, different input&lt;br /&gt;
channel routing to the FPGA, and lack the input threshold adjustment.&lt;br /&gt;
&lt;br /&gt;
The LA1016 uses identical hardware with a different FPGA bitstream which limits the sample rate to 100MHz maximum.&lt;br /&gt;
&lt;br /&gt;
All of these devices use the same firmware for the FX2LP MCU but there are four different FPGA bitstreams;&lt;br /&gt;
i.e. LA1016 &amp;amp; LA2016 bitstreams and the older versions of these (to swap some of the input channels as required by PCB routing changes).&lt;br /&gt;
Once the FX2LP firmware has been loaded, a &amp;#039;magic number&amp;#039; is read from EEPROM which identifies the&lt;br /&gt;
device and thus allows the correct FPGA bitstream to be loaded.&lt;br /&gt;
&lt;br /&gt;
Note that the LA1016 cannot be boosted to 200MHz by changing the &amp;#039;magic number&amp;#039; or the FPGA bitstream.&lt;br /&gt;
When the FPGA initialises, its reads 16 bytes from U10 which are used to authenticate the bitstream; these bytes are different for 100 and 200MHz devices.&lt;br /&gt;
Furthermore, the OEM software performs a challenge-response with U10 to authenticate the logic analyser as genuine &amp;#039;Kingst&amp;#039;.&lt;br /&gt;
The good news is that U10 does not impact Sigrok support in any way and we don&amp;#039;t need to communicate with it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main components and their function:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MCU&amp;#039;&amp;#039;&amp;#039; Cypress FX2LP&lt;br /&gt;
:This MCU only has volatile memory and in this implementation it&amp;#039;s firmware is loaded from the host by the application software.&lt;br /&gt;
:Either the OEM firmware or open source firmware can be used.&lt;br /&gt;
:In essence, it just performs data moving operations:&lt;br /&gt;
#Endpoint 0 to EEPROM read/write&lt;br /&gt;
#Endpoint 0 to SPI read/write for FPGA control registers&lt;br /&gt;
#Endpoint 2 bulk out to SPI for loading FPGA bitstream&lt;br /&gt;
#Endpoint 6 bulk in to read capture data from FPGA/SDRAM&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;EEPROM&amp;#039;&amp;#039;&amp;#039; Atmel AT24C02 2Kbit&lt;br /&gt;
:This non-volatile memory stores:&lt;br /&gt;
#VID:PID which is 77a1:01a2 for LA1016 and LA2016 devices&lt;br /&gt;
#&amp;#039;magic number&amp;#039; to identify model and revision&lt;br /&gt;
#purchase date (presumably for warranty claims)&lt;br /&gt;
#other information related to U10 but not of interest to Sigrok&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039; Altera EP4CE6&lt;br /&gt;
:Currently requires the OEM bitstream.&lt;br /&gt;
:Has a bank of approximately 60 byte-wide registers accessed via SPI which are used to contol FPGA functions.&lt;br /&gt;
:Captures 16 input channels, performs compression (run length encoding, 16bit sample plus 8 bit repetition count).&lt;br /&gt;
:Stores samples to SDRAM (or streams direct to USB but we don&amp;#039;t implement that method).&lt;br /&gt;
:Interestingly, this device (6K LE) shares the same die as the next up device EP4CE10 (10K LE) and can be programmed as such. However, functionality would not be guaranteed as CE6 devices may be CE10 rejects.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SDRAM&amp;#039;&amp;#039;&amp;#039; Samsung DDR2&lt;br /&gt;
:Samples are stored as 3 bytes (16bit sample plus 8 bit repetition count).&lt;br /&gt;
:A &amp;#039;transfer packet&amp;#039; for upload is 16 bytes = 5 compressed samples plus a sequence number byte.&lt;br /&gt;
:Burst read/write for this SDRAM is up to 16 bytes, which matches the transfer packet size and is likely used for all SDRAM read/writes.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;U10&amp;#039;&amp;#039;&amp;#039; Kingst Authentication Device&lt;br /&gt;
:Not used by Sigrok.&lt;br /&gt;
#Provides fixed bytes identifier to FPGA for bitstream validation (either LA1016 100MHz or LA2016 200MHz bitstream)&lt;br /&gt;
#Provides challenge-response rolling-code for OEM software to authenticate the device as genuine &amp;#039;Kingst&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Datasheets:&lt;br /&gt;
&lt;br /&gt;
:U1 [https://www.intel.com/content/www/us/en/products/programmable/fpga/cyclone-iv.html EP4CE6F17C8N] Cyclone IV E FPGA&lt;br /&gt;
:U2,4,5,7 [http://sxsemi.com/upfile/PDWL050019-SOT236.pdf	PDWL050019] TVS Diode Array&lt;br /&gt;
:U3 [https://www.cypress.com/part/cy7c68013a-100axc CY7C68013A-100AXC] EZUSB MCU&lt;br /&gt;
:U6,U8 [http://www.sg-micro.com/show-product-510.html SGM2019] Linear Regulator&lt;br /&gt;
:U9 [https://www.microchip.com/wwwproducts/en/AT24C02C AT24C02] EEPROM 2kbit&lt;br /&gt;
:U10 (device not identified, small MCU of some type)&lt;br /&gt;
:U11 K4T1G164QG-BCF8, DDR2 SDRAM, obsolete&lt;br /&gt;
:U12,U13 [http://www.sg-micro.com/show-product-519.html SGM6013] Switch-mode Regulator&lt;br /&gt;
:U14 [http://www.sg-micro.com/show-product-203.html SGM8272] Dual Op-amp&lt;br /&gt;
:U15 [http://www.ti.com/lit/ds/symlink/tps60403.pdf TPS60403] Charge Pump Voltage Inverter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Kingst la2016 package contents.jpg|&amp;lt;small&amp;gt;Package contents&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 paper.jpg|&amp;lt;small&amp;gt;Paper&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device top.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device bottom.jpg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb top.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb bottom.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 cypress fx2.jpg|&amp;lt;small&amp;gt;Cypress FX2&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 altera cyclone4 ep4ce6f17c8n.jpg|&amp;lt;small&amp;gt;Altera Cyclone IV&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 samsung k4t1g164qg.jpg|&amp;lt;small&amp;gt;Samsung K4T1G164QG&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 atmel 24c02n.jpg|&amp;lt;small&amp;gt;Atmel 24C02N&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 unmarked ic.jpg|&amp;lt;small&amp;gt;Unmarked IC&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 fpni.jpg|&amp;lt;small&amp;gt;PFNI&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TODO This extraction script needs updated&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
In order to use this device you need to extract the firmware/FPGA files from the vendor software (Linux download) using the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=firmware/kingst-la sigrok-fwextract-kingst-la2016] script from the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree sigrok-util] repo and place them in one of the usual [[Firmware#Where_to_put_the_firmware_files|places where libsigrok expects firmware files]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./sigrok-fwextract-kingst-la2016 KingstVIS/KingstVIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 saved 180224 bytes to kingst-la2016a-fpga.bitstream&lt;br /&gt;
 saved 5350 bytes to kingst-la-01a1.fw&lt;br /&gt;
 saved 5430 bytes to kingst-la-01a2.fw&lt;br /&gt;
 saved 5718 bytes to kingst-la-01a3.fw&lt;br /&gt;
 saved 142412 bytes to kingst-la-01a4.fw&lt;br /&gt;
 saved 5452 bytes to kingst-la-03a1.fw&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.qdkingst.com/en/download Vendor software]&lt;br /&gt;
* [http://www.qdkingst.com/download/vis_ug_en User guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:In progress]]&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16061</id>
		<title>Kingst LA2016</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16061"/>
		<updated>2021-03-05T17:27:37Z</updated>

		<summary type="html">&lt;p&gt;Planet9: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Kingst la2016 mugshot.png|180px]]&lt;br /&gt;
| name             = Kingst LA2016&lt;br /&gt;
| status           = in progress&lt;br /&gt;
| source_code_dir  = kingst-la2016&lt;br /&gt;
| channels         = 16&lt;br /&gt;
| samplerate       = 200MHz max.&lt;br /&gt;
| samplerate_state = State analysis not supported&lt;br /&gt;
| triggers         = Level (multiple channels)&amp;lt;br/&amp;gt;Edge (one channel)&lt;br /&gt;
| voltages         = -50V &amp;amp;mdash; 50V&lt;br /&gt;
| threshold        = Configurable:&amp;lt;br/&amp;gt;-4V&amp;amp;mdash;4V, min step 0.01V&lt;br /&gt;
| memory           = 128MByte DDR2 SDRAM&amp;lt;br/&amp;gt;40M&amp;amp;mdash;10G samples&lt;br /&gt;
| compression      = Yes&lt;br /&gt;
| website          = [http://www.qdkingst.com/en qdkingst.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5th March 2021:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;This device was previously marked as supported, however, some users are reporting issues with this device and we are working on some driver changes.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Kingst LA2016&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyser with 200MHz maximum sampling rate.&lt;br /&gt;
The current vendor is &amp;quot;Qingdao Kingst Electronics Co., Ltd.&amp;quot; but older models appear to be branded &amp;quot;Jiankun&amp;quot; rather than &amp;quot;Kingst&amp;quot;.&lt;br /&gt;
The vendor software can be freely downloaded from their [http://www.qdkingst.com/en/products website].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
This logic analyser has been on the market since around 2012 and there are a few different revisions of it.&lt;br /&gt;
This [[Media:Kingst_LA2016_LA1016_Schematic.zip|schematic]] has been reverse engineered from&lt;br /&gt;
a unit purchased in 2020 containing a PCB marked as v1.3.0. &lt;br /&gt;
The circuitry of older PCBs is similar but may have different voltage regulators, different input&lt;br /&gt;
channel routing to the FPGA and no input threshold adjustment.&lt;br /&gt;
&lt;br /&gt;
The LA1016 uses identical hardware with a different FPGA bitstream which limits the sample rate to 100MHz maximum.&lt;br /&gt;
&lt;br /&gt;
All of these devices use the same firmware for the FX2LP MCU but there are four different FPGA bitstreams;&lt;br /&gt;
i.e. LA1016 &amp;amp; LA2016 bitstreams and the older versions of these (to swap some of the input channels).&lt;br /&gt;
Once the FX2LP firmware has been loaded, a &amp;#039;magic number&amp;#039; is read from EEPROM which identifies the&lt;br /&gt;
device and thus allows the correct FPGA bitstream to be loaded.&lt;br /&gt;
&lt;br /&gt;
Note that the LA1016 cannot be boosted to 200MHz by&lt;br /&gt;
changing the &amp;#039;magic number&amp;#039; or the FPGA bitstream because of device U10 which&lt;br /&gt;
is used by the FPGA to authenticate the bitstream. It is also used by the OEM software to authenticate&lt;br /&gt;
the logic analyser as genuine &amp;#039;Kingst&amp;#039;. U10 does not impact Sigrok support in any way and we don&amp;#039;t need&lt;br /&gt;
to communicate with it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main components and their function:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MCU&amp;#039;&amp;#039;&amp;#039; Cypress FX2LP&lt;br /&gt;
:This MCU only has volatile memory and in this implementation it&amp;#039;s firmware is loaded from the host by the application software.&lt;br /&gt;
:Either the OEM firmware or open source firmware can be used.&lt;br /&gt;
:In essence, it just performs data moving operations:&lt;br /&gt;
#Endpoint 0 to EEPROM read/write&lt;br /&gt;
#Endpoint 0 to SPI read/write for FPGA control registers&lt;br /&gt;
#Endpoint 2 bulk out to SPI for loading FPGA bitstream&lt;br /&gt;
#Endpoint 6 bulk in to read capture data from FPGA/SDRAM&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;EEPROM&amp;#039;&amp;#039;&amp;#039; Atmel AT24C02 2Kbit&lt;br /&gt;
:This non-volatile memory stores:&lt;br /&gt;
#VID:PID which is 77a1:01a2 for LA1016 and LA2016 devices.&lt;br /&gt;
#&amp;#039;magic number&amp;#039; to identify model and revision&lt;br /&gt;
#purchase date (presumably for warranty claims)&lt;br /&gt;
#other information related to U10 but not of interest to Sigrok&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039; Altera EP4CE6&lt;br /&gt;
:Currently requires the OEM bitstream.&lt;br /&gt;
:Has a bank of approximately 60 byte-wide registers accessed via SPI which are used to contol FPGA functions.&lt;br /&gt;
:Captures 16 input channels, performs compression (run length encoding, 16bit sample plus 8 bit repetition count).&lt;br /&gt;
:Stores samples to SDRAM (or streams direct to USB but we don&amp;#039;t implement that method).&lt;br /&gt;
:Interestingly, this device (6K LE) shares the same die as the next up device EP4CE10 (10K LE) and can be programmed as such. However, functionality would not be guaranteed as CE6 devices may be CE10 rejects.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SDRAM&amp;#039;&amp;#039;&amp;#039; Samsung DDR2&lt;br /&gt;
:Samples are stored as 3 bytes (16bit sample plus 8 bit repetition count)&lt;br /&gt;
:A &amp;#039;transfer packet&amp;#039; for upload is 16 bytes = 5 compressed samples plus a sequence number byte&lt;br /&gt;
:Burst read/write for this SDRAM is up to 16 bytes, which matches the transfer packet size and is likely used for all SDRAM read/writes.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;U10&amp;#039;&amp;#039;&amp;#039; Kingst Authentication Device&lt;br /&gt;
:Not used by Sigrok&lt;br /&gt;
#Provides fixed bytes identifier to FPGA for bitstream validation (either LA1016 100MHz or LA2016 200MHz bitstream)&lt;br /&gt;
#Provides challenge-response rolling-code for OEM software to authenticate the device as genuine Kingst&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Datasheets:&lt;br /&gt;
&lt;br /&gt;
:U1 [https://www.intel.com/content/www/us/en/products/programmable/fpga/cyclone-iv.html EP4CE6F17C8N] Cyclone IV E FPGA&lt;br /&gt;
:U2,4,5,7 [http://sxsemi.com/upfile/PDWL050019-SOT236.pdf	PDWL050019] TVS Diode Array&lt;br /&gt;
:U3 [https://www.cypress.com/part/cy7c68013a-100axc CY7C68013A-100AXC] EZUSB MCU&lt;br /&gt;
:U6,U8 [http://www.sg-micro.com/show-product-510.html SGM2019] Linear Regulator&lt;br /&gt;
:U9 [https://www.microchip.com/wwwproducts/en/AT24C02C AT24C02] EEPROM 2kbit&lt;br /&gt;
:U10 (device not identified, small MCU of some type)&lt;br /&gt;
:U11 K4T1G164QG-BCF8, DDR2 SDRAM, obsolete&lt;br /&gt;
:U12,U13 [http://www.sg-micro.com/show-product-519.html SGM6013] Switch-mode Regulator&lt;br /&gt;
:U14 [http://www.sg-micro.com/show-product-203.html SGM8272] Dual Op-amp&lt;br /&gt;
:U15 [http://www.ti.com/lit/ds/symlink/tps60403.pdf TPS60403] Charge Pump Voltage Inverter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Kingst la2016 package contents.jpg|&amp;lt;small&amp;gt;Package contents&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 paper.jpg|&amp;lt;small&amp;gt;Paper&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device top.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device bottom.jpg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb top.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb bottom.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 cypress fx2.jpg|&amp;lt;small&amp;gt;Cypress FX2&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 altera cyclone4 ep4ce6f17c8n.jpg|&amp;lt;small&amp;gt;Altera Cyclone IV&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 samsung k4t1g164qg.jpg|&amp;lt;small&amp;gt;Samsung K4T1G164QG&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 atmel 24c02n.jpg|&amp;lt;small&amp;gt;Atmel 24C02N&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 unmarked ic.jpg|&amp;lt;small&amp;gt;Unmarked IC&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 fpni.jpg|&amp;lt;small&amp;gt;PFNI&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TODO This extraction script needs updated&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
In order to use this device you need to extract the firmware/FPGA files from the vendor software (Linux download) using the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=firmware/kingst-la sigrok-fwextract-kingst-la2016] script from the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree sigrok-util] repo and place them in one of the usual [[Firmware#Where_to_put_the_firmware_files|places where libsigrok expects firmware files]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./sigrok-fwextract-kingst-la2016 KingstVIS/KingstVIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 saved 180224 bytes to kingst-la2016a-fpga.bitstream&lt;br /&gt;
 saved 5350 bytes to kingst-la-01a1.fw&lt;br /&gt;
 saved 5430 bytes to kingst-la-01a2.fw&lt;br /&gt;
 saved 5718 bytes to kingst-la-01a3.fw&lt;br /&gt;
 saved 142412 bytes to kingst-la-01a4.fw&lt;br /&gt;
 saved 5452 bytes to kingst-la-03a1.fw&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.qdkingst.com/en/download Vendor software]&lt;br /&gt;
* [http://www.qdkingst.com/download/vis_ug_en User guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:In progress]]&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16060</id>
		<title>Kingst LA2016</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16060"/>
		<updated>2021-03-05T17:16:57Z</updated>

		<summary type="html">&lt;p&gt;Planet9: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Kingst la2016 mugshot.png|180px]]&lt;br /&gt;
| name             = Kingst LA2016&lt;br /&gt;
| status           = in progress&lt;br /&gt;
| source_code_dir  = kingst-la2016&lt;br /&gt;
| channels         = 16&lt;br /&gt;
| samplerate       = 200MHz max.&lt;br /&gt;
| samplerate_state = State analysis not supported&lt;br /&gt;
| triggers         = Level (multiple channels)&amp;lt;br/&amp;gt;Edge (one channel)&lt;br /&gt;
| voltages         = -50V &amp;amp;mdash; 50V&lt;br /&gt;
| threshold        = Configurable:&amp;lt;br/&amp;gt;-4V&amp;amp;mdash;4V, min step 0.01V&lt;br /&gt;
| memory           = 128MByte DDR2 SDRAM&amp;lt;br/&amp;gt;40M&amp;amp;mdash;10G samples&lt;br /&gt;
| compression      = Yes&lt;br /&gt;
| website          = [http://www.qdkingst.com/en qdkingst.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5th March 2021:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;This device was previously marked as supported, however, some users are reporting issues with this device and we are working on some driver changes.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Kingst LA2016&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyser with 200MHz maximum sampling rate.&lt;br /&gt;
The current vendor is &amp;quot;Qingdao Kingst Electronics Co., Ltd.&amp;quot; but older models appear to be branded &amp;quot;Jiankun&amp;quot; rather than &amp;quot;Kingst&amp;quot;.&lt;br /&gt;
The vendor software can be freely downloaded from their [http://www.qdkingst.com/en/products website].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
This logic analyser has been on the market since around 2012 and there are a few different revisions of it.&lt;br /&gt;
This [[Media:Kingst_LA2016_LA1016_Schematic.zip|schematic]] has been reverse engineered from&lt;br /&gt;
a unit purchased in 2020 containing a PCB marked as v1.3.0. &lt;br /&gt;
The circuitry of older PCBs is similar but may have different voltage regulators, different input&lt;br /&gt;
channel routing to the FPGA and no input threshold adjustment.&lt;br /&gt;
&lt;br /&gt;
The LA1016 uses identical hardware with a different FPGA bitstream which limits the sample rate to 100MHz maximum.&lt;br /&gt;
&lt;br /&gt;
All of these devices use the same firmware for the FX2LP MCU but there are four different FPGA bitstreams;&lt;br /&gt;
i.e. LA1016 &amp;amp; LA2016 bitstreams and the older versions of these (to swap some of the input channels).&lt;br /&gt;
Once the FX2LP firmware has been loaded, a &amp;#039;magic number&amp;#039; is read from EEPROM which identifies the&lt;br /&gt;
device and thus allows the correct FPGA bitstream to be loaded.&lt;br /&gt;
&lt;br /&gt;
Note that the LA1016 cannot be boosted to 200MHz by&lt;br /&gt;
changing the &amp;#039;magic number&amp;#039; or the FPGA bitstream because of device U10 which&lt;br /&gt;
is used by the FPGA to authenticate the bitstream. It is also used by the OEM software to authenticate&lt;br /&gt;
the logic analyser as genuine &amp;#039;Kingst&amp;#039;. U10 does not impact Sigrok support in any way and we don&amp;#039;t need&lt;br /&gt;
to communicate with it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main components and their function:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;MCU&amp;#039;&amp;#039;&amp;#039; Cypress FX2LP&lt;br /&gt;
:This MCU only has volatile memory and in this implementation it&amp;#039;s firmware is loaded from the host by the application software.&lt;br /&gt;
:Either the OEM firmware or open source firmware can be used.&lt;br /&gt;
:In essence, it just performs data moving operations:&lt;br /&gt;
#Endpoint 0 to EEPROM read/write&lt;br /&gt;
#Endpoint 0 to SPI read/write for FPGA control registers&lt;br /&gt;
#Endpoint 2 bulk out to SPI for loading FPGA bitstream&lt;br /&gt;
#Endpoint 6 bulk in to read capture data from FPGA/SDRAM&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;EEPROM&amp;#039;&amp;#039;&amp;#039; Atmel AT24C02 2Kbit&lt;br /&gt;
:This non-volatile memory stores:&lt;br /&gt;
#VID:PID which is 77a1:01a2 for LA1016 and LA2016 devices.&lt;br /&gt;
#&amp;#039;magic number&amp;#039; to identify model and revision&lt;br /&gt;
#purchase date (presumably for warranty claims)&lt;br /&gt;
#other information related to U10 but not of interest to Sigrok&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039; Altera EP4CE6&lt;br /&gt;
:Currently requires the OEM bitstream.&lt;br /&gt;
:Has a bank of approximately 60 byte-wide registers accessed via SPI which are used to contol FPGA functions.&lt;br /&gt;
:Captures 16 input channels, performs compression (run length encoding, 16bit sample plus 8 bit repetition count).&lt;br /&gt;
:Stores samples to SDRAM (or streams direct to USB but we don&amp;#039;t implement that method).&lt;br /&gt;
:Interestingly, this device (6K LE) shares the same die as the next up device EP4CE10 (10K LE) and can be programmed as such. However, functionality would not be guaranteed as CE6 devices may be CE10 rejects.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;SDRAM&amp;#039;&amp;#039;&amp;#039; Samsung DDR2&lt;br /&gt;
:Samples are stored as 3 bytes (16bit sample plus 8 bit repetition count)&lt;br /&gt;
:A &amp;#039;transfer packet&amp;#039; for upload is 16 bytes = 5 compressed samples plus a sequence number byte&lt;br /&gt;
:Burst read/write for this SDRAM is up to 16 bytes, which matches the transfer packet size and is likely used for all SDRAM read/writes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Datasheets:&lt;br /&gt;
&lt;br /&gt;
:U1 [https://www.intel.com/content/www/us/en/products/programmable/fpga/cyclone-iv.html EP4CE6F17C8N] Cyclone IV E FPGA&lt;br /&gt;
:U2,4,5,7 [http://sxsemi.com/upfile/PDWL050019-SOT236.pdf	PDWL050019] TVS Diode Array&lt;br /&gt;
:U3 [https://www.cypress.com/part/cy7c68013a-100axc CY7C68013A-100AXC] EZUSB MCU&lt;br /&gt;
:U6,U8 [http://www.sg-micro.com/show-product-510.html SGM2019] Linear Regulator&lt;br /&gt;
:U9 [https://www.microchip.com/wwwproducts/en/AT24C02C AT24C02] EEPROM 2kbit&lt;br /&gt;
:U10 (device not identified, small MCU of some type)&lt;br /&gt;
:U11 K4T1G164QG-BCF8, DDR2 SDRAM, obsolete&lt;br /&gt;
:U12,U13 [http://www.sg-micro.com/show-product-519.html SGM6013] Switch-mode Regulator&lt;br /&gt;
:U14 [http://www.sg-micro.com/show-product-203.html SGM8272] Dual Op-amp&lt;br /&gt;
:U15 [http://www.ti.com/lit/ds/symlink/tps60403.pdf TPS60403] Charge Pump Voltage Inverter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Kingst la2016 package contents.jpg|&amp;lt;small&amp;gt;Package contents&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 paper.jpg|&amp;lt;small&amp;gt;Paper&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device top.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device bottom.jpg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb top.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb bottom.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 cypress fx2.jpg|&amp;lt;small&amp;gt;Cypress FX2&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 altera cyclone4 ep4ce6f17c8n.jpg|&amp;lt;small&amp;gt;Altera Cyclone IV&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 samsung k4t1g164qg.jpg|&amp;lt;small&amp;gt;Samsung K4T1G164QG&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 atmel 24c02n.jpg|&amp;lt;small&amp;gt;Atmel 24C02N&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 unmarked ic.jpg|&amp;lt;small&amp;gt;Unmarked IC&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 fpni.jpg|&amp;lt;small&amp;gt;PFNI&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TODO This extraction script needs updated&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
In order to use this device you need to extract the firmware/FPGA files from the vendor software (Linux download) using the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=firmware/kingst-la sigrok-fwextract-kingst-la2016] script from the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree sigrok-util] repo and place them in one of the usual [[Firmware#Where_to_put_the_firmware_files|places where libsigrok expects firmware files]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./sigrok-fwextract-kingst-la2016 KingstVIS/KingstVIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 saved 180224 bytes to kingst-la2016a-fpga.bitstream&lt;br /&gt;
 saved 5350 bytes to kingst-la-01a1.fw&lt;br /&gt;
 saved 5430 bytes to kingst-la-01a2.fw&lt;br /&gt;
 saved 5718 bytes to kingst-la-01a3.fw&lt;br /&gt;
 saved 142412 bytes to kingst-la-01a4.fw&lt;br /&gt;
 saved 5452 bytes to kingst-la-03a1.fw&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.qdkingst.com/en/download Vendor software]&lt;br /&gt;
* [http://www.qdkingst.com/download/vis_ug_en User guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:In progress]]&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16059</id>
		<title>Kingst LA2016</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16059"/>
		<updated>2021-03-05T14:17:59Z</updated>

		<summary type="html">&lt;p&gt;Planet9: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Kingst la2016 mugshot.png|180px]]&lt;br /&gt;
| name             = Kingst LA2016&lt;br /&gt;
| status           = in progress&lt;br /&gt;
| source_code_dir  = kingst-la2016&lt;br /&gt;
| channels         = 16&lt;br /&gt;
| samplerate       = 200MHz max.&lt;br /&gt;
| samplerate_state = State analysis not supported&lt;br /&gt;
| triggers         = Level (multiple channels)&amp;lt;br/&amp;gt;Edge (one channel)&lt;br /&gt;
| voltages         = -50V &amp;amp;mdash; 50V&lt;br /&gt;
| threshold        = Configurable:&amp;lt;br/&amp;gt;-4V&amp;amp;mdash;4V, min step 0.01V&lt;br /&gt;
| memory           = 128MByte DDR2 SDRAM&amp;lt;br/&amp;gt;40M&amp;amp;mdash;10G samples&lt;br /&gt;
| compression      = Yes&lt;br /&gt;
| website          = [http://www.qdkingst.com/en qdkingst.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5th March 2021:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;This device was previously marked as supported, however, some users are reporting issues with this device and we are working on some driver changes.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Kingst LA2016&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyser with 200MHz maximum sampling rate.&lt;br /&gt;
The current vendor is &amp;quot;Qingdao Kingst Electronics Co., Ltd.&amp;quot; but older models appear to be branded &amp;quot;Jiankun&amp;quot; rather than &amp;quot;Kingst&amp;quot;.&lt;br /&gt;
The vendor software can be freely downloaded from their [http://www.qdkingst.com/en/products website].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
This logic analyser has been on the market since around 2012 and there are a few different revisions of it.&lt;br /&gt;
This [[Media:Kingst_LA2016_LA1016_Schematic.zip|schematic]] has been reverse engineered from&lt;br /&gt;
a unit purchased in 2020 containing a PCB marked as v1.3.0. &lt;br /&gt;
The circuitry of early issue PCBs is similar but may have different voltage regulators, different input&lt;br /&gt;
channel routing to the FPGA and no input threshold adjustment.&lt;br /&gt;
&lt;br /&gt;
The LA1016 uses identical hardware with a different FPGA bitstream which limits the sample rate to 100MHz maximum.&lt;br /&gt;
&lt;br /&gt;
All of these devices use the same firmware for the FX2LP MCU but there are four different FPGA bitstreams;&lt;br /&gt;
i.e. LA1016 &amp;amp; LA2016 bitstreams and the older versions of these (to swap some of the input channels).&lt;br /&gt;
Once the FX2LP firmware has been loaded, a &amp;#039;magic number&amp;#039; is read from EEPROM which identifies the&lt;br /&gt;
device and thus allows the correct FPGA bitstream to be loaded.&lt;br /&gt;
&lt;br /&gt;
Note that the LA1016 cannot be boosted to 200MHz by&lt;br /&gt;
changing the &amp;#039;magic number&amp;#039; or the FPGA bitstream because of device U10 which&lt;br /&gt;
is used by the FPGA to authenticate the bitstream. It is also used by the OEM software to authenticate&lt;br /&gt;
the logic analyser as genuine &amp;#039;Kingst&amp;#039;. U10 does not impact Sigrok support in any way and we don&amp;#039;t need&lt;br /&gt;
to communicate with it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main components and their function:&lt;br /&gt;
&lt;br /&gt;
* Cypress FX2LP &amp;#039;&amp;#039;&amp;#039;MCU&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:This MCU only has volatile memory and in this implementation it&amp;#039;s firmware is loaded from the host by the application software.&lt;br /&gt;
:Either the OEM firmware or open source firmware can be used.&lt;br /&gt;
:In essence, it just performs data moving operations:&lt;br /&gt;
#Endpoint 0 to EEPROM read/write&lt;br /&gt;
#Endpoint 0 to SPI read/write for FPGA control registers&lt;br /&gt;
#Endpoint 2 bulk out to SPI for loading FPGA bitstream&lt;br /&gt;
#Endpoint 6 bulk in to read capture data from FPGA/SDRAM&lt;br /&gt;
&lt;br /&gt;
* Atmel AT24C02 2Kbit &amp;#039;&amp;#039;&amp;#039;EEPROM&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:This non-volatile memory stores:&lt;br /&gt;
#VID:PID which is 77a1:01a2 for LA1016 and LA2016 devices.&lt;br /&gt;
#&amp;#039;magic number&amp;#039; to identify model and revision&lt;br /&gt;
#purchase date (presumably for warranty claims)&lt;br /&gt;
#other information related to U10 but not of interest to Sigrok&lt;br /&gt;
&lt;br /&gt;
* Altera EP4CE6 &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:Currently uses the OEM bitstream.&lt;br /&gt;
:Has a bank of approximately 60 byte-wide registers accessed via SPI which are used to contol FPGA functions.&lt;br /&gt;
:Captures 16 input channels, performs compression (run length encoding, 16bit sample plus 8 bit repetition count).&lt;br /&gt;
:Stores samples to SDRAM (or streams direct to USB but we don&amp;#039;t implement that method).&lt;br /&gt;
:Interestingly, this device (6K LE) shares the same die as the next up device EP4CE10 (10K LE) and can be programmed as such. However, functionality would not be guaranteed as CE6 devices may be CE10 rejects.&lt;br /&gt;
&lt;br /&gt;
* Samsung DDR2 &amp;#039;&amp;#039;&amp;#039;SDRAM&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:Samples are stored as 3 bytes (16bit sample plus 8 bit repetition count)&lt;br /&gt;
:A &amp;#039;transfer packet&amp;#039; for upload is 16 bytes = 5 compressed samples plus a sequence number byte&lt;br /&gt;
:Burst read/write for this SDRAM is up to 16 bytes, which matches the transfer packet size and is likely used for all SDRAM read/writes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Datasheets:&lt;br /&gt;
&lt;br /&gt;
U15 [http://www.ti.com/lit/ds/symlink/tps60403.pdf TPS60403] Charge pump voltage inverter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Kingst la2016 package contents.jpg|&amp;lt;small&amp;gt;Package contents&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 paper.jpg|&amp;lt;small&amp;gt;Paper&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device top.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device bottom.jpg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb top.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb bottom.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 cypress fx2.jpg|&amp;lt;small&amp;gt;Cypress FX2&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 altera cyclone4 ep4ce6f17c8n.jpg|&amp;lt;small&amp;gt;Altera Cyclone IV&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 samsung k4t1g164qg.jpg|&amp;lt;small&amp;gt;Samsung K4T1G164QG&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 atmel 24c02n.jpg|&amp;lt;small&amp;gt;Atmel 24C02N&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 unmarked ic.jpg|&amp;lt;small&amp;gt;Unmarked IC&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 fpni.jpg|&amp;lt;small&amp;gt;PFNI&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TODO This extraction script needs updated&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
In order to use this device you need to extract the firmware/FPGA files from the vendor software (Linux download) using the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=firmware/kingst-la sigrok-fwextract-kingst-la2016] script from the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree sigrok-util] repo and place them in one of the usual [[Firmware#Where_to_put_the_firmware_files|places where libsigrok expects firmware files]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./sigrok-fwextract-kingst-la2016 KingstVIS/KingstVIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 saved 180224 bytes to kingst-la2016a-fpga.bitstream&lt;br /&gt;
 saved 5350 bytes to kingst-la-01a1.fw&lt;br /&gt;
 saved 5430 bytes to kingst-la-01a2.fw&lt;br /&gt;
 saved 5718 bytes to kingst-la-01a3.fw&lt;br /&gt;
 saved 142412 bytes to kingst-la-01a4.fw&lt;br /&gt;
 saved 5452 bytes to kingst-la-03a1.fw&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.qdkingst.com/en/download Vendor software]&lt;br /&gt;
* [http://www.qdkingst.com/download/vis_ug_en User guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:In progress]]&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16058</id>
		<title>Kingst LA2016</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16058"/>
		<updated>2021-03-05T14:17:21Z</updated>

		<summary type="html">&lt;p&gt;Planet9: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Kingst la2016 mugshot.png|180px]]&lt;br /&gt;
| name             = Kingst LA2016&lt;br /&gt;
| status           = in progress&lt;br /&gt;
| source_code_dir  = kingst-la2016&lt;br /&gt;
| channels         = 16&lt;br /&gt;
| samplerate       = 200MHz max.&lt;br /&gt;
| samplerate_state = State analysis not supported&lt;br /&gt;
| triggers         = Level (multiple channels)&amp;lt;br/&amp;gt;Edge (one channel)&lt;br /&gt;
| voltages         = -50V &amp;amp;mdash; 50V&lt;br /&gt;
| threshold        = Configurable:&amp;lt;br/&amp;gt;-4V&amp;amp;mdash;4V, min step 0.01V&lt;br /&gt;
| memory           = 128MByte DDR2 SDRAM&amp;lt;br/&amp;gt;40M&amp;amp;mdash;10G samples&lt;br /&gt;
| compression      = Yes&lt;br /&gt;
| website          = [http://www.qdkingst.com/en qdkingst.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5th March 2021:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;This device was previously marked as supported, however, some users are reporting issues with this device and we are working on some driver changes.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Kingst LA2016&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyser with 200MHz maximum sampling rate.&lt;br /&gt;
The current vendor is &amp;quot;Qingdao Kingst Electronics Co., Ltd.&amp;quot; but older models appear to be branded &amp;quot;Jiankun&amp;quot; rather than &amp;quot;Kingst&amp;quot;.&lt;br /&gt;
The vendor software can be freely downloaded from their [http://www.qdkingst.com/en/products website].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
This logic analyser has been on the market since around 2012 and there are a few different revisions of it.&lt;br /&gt;
This [[Media:Kingst_LA2016_LA1016_Schematic.zip|schematic]] has been reverse engineered from&lt;br /&gt;
a unit purchased in 2020 containing a PCB marked as v1.3.0. &lt;br /&gt;
The circuitry of early issue PCBs is similar but may have different voltage regulators, different input&lt;br /&gt;
channel routing to the FPGA and no input threshold adjustment.&lt;br /&gt;
&lt;br /&gt;
The LA1016 uses identical hardware with a different FPGA bitstream which limits the sample rate to 100MHz maximum.&lt;br /&gt;
&lt;br /&gt;
All of these devices use the same firmware for the FX2LP MCU but there are four different FPGA bitstreams;&lt;br /&gt;
i.e. LA1016 &amp;amp; LA2016 bitstreams and the older versions of these (to swap some of the input channels).&lt;br /&gt;
Once the FX2LP firmware has been loaded, a &amp;#039;magic number&amp;#039; is read from EEPROM which identifies the&lt;br /&gt;
device and thus allows the correct FPGA bitstream to be loaded.&lt;br /&gt;
&lt;br /&gt;
Note that the LA1016 cannot be boosted to 200MHz by&lt;br /&gt;
changing the &amp;#039;magic number&amp;#039; or the FPGA bitstream because of device U10 which&lt;br /&gt;
is used by the FPGA to authenticate the bitstream. It is also used by the OEM software to authenticate&lt;br /&gt;
the logic analyser as genuine &amp;#039;Kingst&amp;#039;. U10 does not impact Sigrok support in any way and we don&amp;#039;t need&lt;br /&gt;
to communicate with it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main components and their function:&lt;br /&gt;
&lt;br /&gt;
* Cypress FX2LP &amp;#039;&amp;#039;&amp;#039;MCU&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:This MCU only has volatile memory and in this implementation it&amp;#039;s firmware is loaded from the host by the application software.&lt;br /&gt;
:Either the OEM firmware or open source firmware can be used.&lt;br /&gt;
:In essence, it just performs data moving operations:&lt;br /&gt;
#Endpoint 0 to EEPROM read/write&lt;br /&gt;
#Endpoint 0 to SPI read/write for FPGA control registers&lt;br /&gt;
#Endpoint 2 bulk out to SPI for loading FPGA bitstream&lt;br /&gt;
#Endpoint 6 bulk in to read capture data from FPGA/SDRAM&lt;br /&gt;
&lt;br /&gt;
* Atmel AT24C02 2Kbit &amp;#039;&amp;#039;&amp;#039;EEPROM&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:This non-volatile memory stores:&lt;br /&gt;
#VID:PID which is 77a1:01a2 for LA1016 and LA2016 devices.&lt;br /&gt;
#&amp;#039;magic number&amp;#039; to identify model and revision&lt;br /&gt;
#purchase date (presumably for warranty claims)&lt;br /&gt;
#other information related to U10 but not of interest to Sigrok&lt;br /&gt;
&lt;br /&gt;
* Altera EP4CE6 &amp;#039;&amp;#039;&amp;#039;FPGA&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:Currently uses the OEM bitstream.&lt;br /&gt;
:Has a bank of approximately 60 byte-wide registers accessed via SPI which are used to contol FPGA functions.&lt;br /&gt;
:Captures 16 input channels, performs compression (run length encoding, 16bit sample plus 8 bit repetition count).&lt;br /&gt;
:Stores samples to SDRAM (or streams direct to USB but we don&amp;#039;t implement that method).&lt;br /&gt;
:Interestingly, this device (6K LE) shares the same die as the next up device EP4CE10 (10K LE) and can be programmed as such. However, functionality would not be guaranteed as CE6 devices may be CE10 rejects.&lt;br /&gt;
&lt;br /&gt;
* Samsung DDR2 &amp;#039;&amp;#039;&amp;#039;SDRAM&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
:Samples are stored as 3 bytes (16bit sample plus 8 bit repetition count)&lt;br /&gt;
:A &amp;#039;transfer packet&amp;#039; for upload is 16 bytes = 5 compressed samples plus a sequence number byte&lt;br /&gt;
:Burst read/write for this SDRAM is up to 16 bytes, which matches the transfer packet size and is likely used for all SDRAM read/writes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Datasheets&lt;br /&gt;
&lt;br /&gt;
U15 [http://www.ti.com/lit/ds/symlink/tps60403.pdf TPS60403] Charge pump voltage inverter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Kingst la2016 package contents.jpg|&amp;lt;small&amp;gt;Package contents&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 paper.jpg|&amp;lt;small&amp;gt;Paper&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device top.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device bottom.jpg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb top.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb bottom.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 cypress fx2.jpg|&amp;lt;small&amp;gt;Cypress FX2&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 altera cyclone4 ep4ce6f17c8n.jpg|&amp;lt;small&amp;gt;Altera Cyclone IV&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 samsung k4t1g164qg.jpg|&amp;lt;small&amp;gt;Samsung K4T1G164QG&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 atmel 24c02n.jpg|&amp;lt;small&amp;gt;Atmel 24C02N&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 unmarked ic.jpg|&amp;lt;small&amp;gt;Unmarked IC&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 fpni.jpg|&amp;lt;small&amp;gt;PFNI&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;TODO This extraction script needs updated&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
In order to use this device you need to extract the firmware/FPGA files from the vendor software (Linux download) using the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=firmware/kingst-la sigrok-fwextract-kingst-la2016] script from the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree sigrok-util] repo and place them in one of the usual [[Firmware#Where_to_put_the_firmware_files|places where libsigrok expects firmware files]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./sigrok-fwextract-kingst-la2016 KingstVIS/KingstVIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 saved 180224 bytes to kingst-la2016a-fpga.bitstream&lt;br /&gt;
 saved 5350 bytes to kingst-la-01a1.fw&lt;br /&gt;
 saved 5430 bytes to kingst-la-01a2.fw&lt;br /&gt;
 saved 5718 bytes to kingst-la-01a3.fw&lt;br /&gt;
 saved 142412 bytes to kingst-la-01a4.fw&lt;br /&gt;
 saved 5452 bytes to kingst-la-03a1.fw&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.qdkingst.com/en/download Vendor software]&lt;br /&gt;
* [http://www.qdkingst.com/download/vis_ug_en User guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:In progress]]&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16057</id>
		<title>Kingst LA2016</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16057"/>
		<updated>2021-03-05T12:53:01Z</updated>

		<summary type="html">&lt;p&gt;Planet9: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Kingst la2016 mugshot.png|180px]]&lt;br /&gt;
| name             = Kingst LA2016&lt;br /&gt;
| status           = supported&lt;br /&gt;
| source_code_dir  = kingst-la2016&lt;br /&gt;
| channels         = 16&lt;br /&gt;
| samplerate       = 200MHz&lt;br /&gt;
| samplerate_state = &amp;amp;mdash;&lt;br /&gt;
| triggers         = high/low level, on one channel rising/falling edge&lt;br /&gt;
| voltages         = -50V &amp;amp;mdash; 50V&lt;br /&gt;
| threshold        = configurable:&amp;lt;br /&amp;gt;-4V&amp;amp;mdash;4V, min step 0.01V&lt;br /&gt;
| memory           = 128MByte DDR2 SDRAM&lt;br /&gt;
| compression      = yes&lt;br /&gt;
| website          = [http://www.qdkingst.com/en/products qdkingst.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Kingst LA2016&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyzer with 200MHz sampling rate.&lt;br /&gt;
&lt;br /&gt;
The vendor is &amp;quot;Qingdao Kingst Electronics Co., Ltd.&amp;quot; according to the user guide, and the vendor software can be downloaded from a website with &amp;quot;kingst&amp;quot; in the name. The device housing reads &amp;quot;Jiankun&amp;quot; however, not &amp;quot;Kingst&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
See [[Kingst LA2016/Info]] for more details (such as &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039; output) about the device.&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
The IC marked PFNI is a http://www.ti.com/lit/ds/symlink/tps60403.pdf&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Kingst la2016 package contents.jpg|&amp;lt;small&amp;gt;Package contents&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 paper.jpg|&amp;lt;small&amp;gt;Paper&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device top.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device bottom.jpg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb top.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb bottom.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 cypress fx2.jpg|&amp;lt;small&amp;gt;Cypress FX2&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 altera cyclone4 ep4ce6f17c8n.jpg|&amp;lt;small&amp;gt;Altera Cyclone IV&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 samsung k4t1g164qg.jpg|&amp;lt;small&amp;gt;Samsung K4T1G164QG&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 atmel 24c02n.jpg|&amp;lt;small&amp;gt;Atmel 24C02N&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 unmarked ic.jpg|&amp;lt;small&amp;gt;Unmarked IC&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 fpni.jpg|&amp;lt;small&amp;gt;PFNI&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
In order to use this device you need to extract the firmware/FPGA files from the vendor software (Linux download) using the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=firmware/kingst-la sigrok-fwextract-kingst-la2016] script from the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree sigrok-util] repo and place them in one of the usual [[Firmware#Where_to_put_the_firmware_files|places where libsigrok expects firmware files]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./sigrok-fwextract-kingst-la2016 KingstVIS/KingstVIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 saved 180224 bytes to kingst-la2016a-fpga.bitstream&lt;br /&gt;
 saved 5350 bytes to kingst-la-01a1.fw&lt;br /&gt;
 saved 5430 bytes to kingst-la-01a2.fw&lt;br /&gt;
 saved 5718 bytes to kingst-la-01a3.fw&lt;br /&gt;
 saved 142412 bytes to kingst-la-01a4.fw&lt;br /&gt;
 saved 5452 bytes to kingst-la-03a1.fw&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.qdkingst.com/en/download Vendor software]&lt;br /&gt;
* [http://www.qdkingst.com/download/vis_ug_en User guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:Supported]]&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16056</id>
		<title>Kingst LA2016</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=Kingst_LA2016&amp;diff=16056"/>
		<updated>2021-03-05T12:52:28Z</updated>

		<summary type="html">&lt;p&gt;Planet9: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Infobox logic analyzer&lt;br /&gt;
| image            = [[File:Kingst la2016 mugshot.png|180px]]&lt;br /&gt;
| name             = Kingst LA2016&lt;br /&gt;
| status           = in progress&lt;br /&gt;
| source_code_dir  = kingst-la2016&lt;br /&gt;
| channels         = 16&lt;br /&gt;
| samplerate       = 200MHz max.&lt;br /&gt;
| samplerate_state = State analysis not supported&lt;br /&gt;
| triggers         = Level (multiple channels)&amp;lt;br/&amp;gt;Edge (one channel)&lt;br /&gt;
| voltages         = -50V &amp;amp;mdash; 50V&lt;br /&gt;
| threshold        = Configurable:&amp;lt;br/&amp;gt;-4V&amp;amp;mdash;4V, min step 0.01V&lt;br /&gt;
| memory           = 128MByte DDR2 SDRAM&amp;lt;br/&amp;gt;40M&amp;amp;mdash;10G samples&lt;br /&gt;
| compression      = Yes&lt;br /&gt;
| website          = [http://www.qdkingst.com/en qdkingst.com]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;5th March 2021:&amp;#039;&amp;#039;&amp;#039;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;This device was previously marked as supported, however, some users are reporting issues with this device and we are working on some driver changes.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;#039;&amp;#039;&amp;#039;Kingst LA2016&amp;#039;&amp;#039;&amp;#039; is a USB-based, 16-channel logic analyser with 200MHz maximum sampling rate.&lt;br /&gt;
The current vendor is &amp;quot;Qingdao Kingst Electronics Co., Ltd.&amp;quot; but older models appear to be branded &amp;quot;Jiankun&amp;quot; rather than &amp;quot;Kingst&amp;quot;.&lt;br /&gt;
The vendor software can be freely downloaded from their [http://www.qdkingst.com/en/products website].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
This logic analyser has been on the market since around 2012 and there are a few different revisions of it.&lt;br /&gt;
This [[Media:Kingst_LA2016_LA1016_Schematic.zip|schematic]] has been reverse engineered from&lt;br /&gt;
a unit purchased in 2020 containing a PCB marked as v1.3.0. &lt;br /&gt;
The circuitry of early issue PCBs is similar but may have different voltage regulators, different input&lt;br /&gt;
channel routing to the FPGA and no input threshold adjustment.&lt;br /&gt;
&lt;br /&gt;
The LA1016 uses identical hardware with a different FPGA bitstream which limits the sample rate to 100MHz maximum.&lt;br /&gt;
&lt;br /&gt;
All of these devices use the same firmware for the FX2LP MCU but there are four different FPGA bitstreams.&lt;br /&gt;
i.e. LA1016 &amp;amp; LA2016 bitstreams and the older versions of these (to swap some of the input channels).&lt;br /&gt;
Once the FX2LP firmware has been loaded, a &amp;#039;magic number&amp;#039; in the EEPROM is used to identify the different&lt;br /&gt;
models and thus allow the correct FPGA bitstream to be loaded.&lt;br /&gt;
&lt;br /&gt;
Note that the LA1016 cannot be boosted to 200MHz by&lt;br /&gt;
changing the &amp;#039;magic number&amp;#039; or the FPGA bitstream because of device U10 which&lt;br /&gt;
is used by the FPGA to authenticate the bitstream. It is also used by the OEM software to authenticate&lt;br /&gt;
the logic analyser as genuine &amp;#039;Kingst&amp;#039;. U10 does not impact Sigrok support in any way and we don&amp;#039;t need&lt;br /&gt;
to communicate with it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Main components and their function:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;I2C EEPROM&amp;#039;&amp;#039;&amp;#039;: 2Kbit [http://www.atmel.com/devices/AT24C02B.aspx Atmel 24C02B] (markings: &amp;quot;ATMEL317 24C02BN SU27 D&amp;quot;) ([http://www.atmel.com/Images/doc5126.pdf datasheet])&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Cypress FX2LP MCU&lt;br /&gt;
&lt;br /&gt;
See [[Kingst LA2016/Info]] for &amp;#039;&amp;#039;&amp;#039;lsusb -v&amp;#039;&amp;#039;&amp;#039; endpoint information.&lt;br /&gt;
&lt;br /&gt;
* Atmel AT24C02 2Kbit EEPROM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Altera EP4CE6 FPGA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Samsung DDR2 SDRAM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Datasheets&lt;br /&gt;
&lt;br /&gt;
U15 [http://www.ti.com/lit/ds/symlink/tps60403.pdf TPS60403] Charge pump voltage inverter&lt;br /&gt;
&lt;br /&gt;
The IC marked PFNI is a http://www.ti.com/lit/ds/symlink/tps60403.pdf&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
File:Kingst la2016 package contents.jpg|&amp;lt;small&amp;gt;Package contents&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 paper.jpg|&amp;lt;small&amp;gt;Paper&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device top.jpg|&amp;lt;small&amp;gt;Device, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 device bottom.jpg|&amp;lt;small&amp;gt;Device, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb top.jpg|&amp;lt;small&amp;gt;PCB, top&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 pcb bottom.jpg|&amp;lt;small&amp;gt;PCB, bottom&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 cypress fx2.jpg|&amp;lt;small&amp;gt;Cypress FX2&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 altera cyclone4 ep4ce6f17c8n.jpg|&amp;lt;small&amp;gt;Altera Cyclone IV&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 samsung k4t1g164qg.jpg|&amp;lt;small&amp;gt;Samsung K4T1G164QG&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 atmel 24c02n.jpg|&amp;lt;small&amp;gt;Atmel 24C02N&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 unmarked ic.jpg|&amp;lt;small&amp;gt;Unmarked IC&amp;lt;/small&amp;gt;&lt;br /&gt;
File:Kingst la2016 fpni.jpg|&amp;lt;small&amp;gt;PFNI&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
In order to use this device you need to extract the firmware/FPGA files from the vendor software (Linux download) using the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree;f=firmware/kingst-la sigrok-fwextract-kingst-la2016] script from the [https://sigrok.org/gitweb/?p=sigrok-util.git;a=tree sigrok-util] repo and place them in one of the usual [[Firmware#Where_to_put_the_firmware_files|places where libsigrok expects firmware files]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;&lt;br /&gt;
 $ &amp;#039;&amp;#039;&amp;#039;./sigrok-fwextract-kingst-la2016 KingstVIS/KingstVIS&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 saved 180224 bytes to kingst-la2016a-fpga.bitstream&lt;br /&gt;
 saved 5350 bytes to kingst-la-01a1.fw&lt;br /&gt;
 saved 5430 bytes to kingst-la-01a2.fw&lt;br /&gt;
 saved 5718 bytes to kingst-la-01a3.fw&lt;br /&gt;
 saved 142412 bytes to kingst-la-01a4.fw&lt;br /&gt;
 saved 5452 bytes to kingst-la-03a1.fw&lt;br /&gt;
&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.qdkingst.com/en/download Vendor software]&lt;br /&gt;
* [http://www.qdkingst.com/download/vis_ug_en User guide]&lt;br /&gt;
&lt;br /&gt;
[[Category:Device]]&lt;br /&gt;
[[Category:Logic analyzer]]&lt;br /&gt;
[[Category:In progress]]&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
	<entry>
		<id>https://sigrok.org/w/index.php?title=File:Kingst_LA2016_LA1016_Schematic.zip&amp;diff=16055</id>
		<title>File:Kingst LA2016 LA1016 Schematic.zip</title>
		<link rel="alternate" type="text/html" href="https://sigrok.org/w/index.php?title=File:Kingst_LA2016_LA1016_Schematic.zip&amp;diff=16055"/>
		<updated>2021-03-05T11:17:13Z</updated>

		<summary type="html">&lt;p&gt;Planet9: Electrical schematic of LA1016/LA2016 PCB v1.3.0&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Electrical schematic of LA1016/LA2016 PCB v1.3.0&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{PD}}&lt;/div&gt;</summary>
		<author><name>Planet9</name></author>
	</entry>
</feed>