WEBVTT 00:00.000 --> 00:09.000 So with presentation on, I would try to pronounce it, 00:09.000 --> 00:11.000 Sukkala, LA. 00:11.000 --> 00:15.000 Yes, please welcome, Jan, with his talk. 00:15.000 --> 00:18.000 Test test. 00:18.000 --> 00:20.000 All right. 00:20.000 --> 00:22.000 Thank you for coming. 00:22.000 --> 00:25.000 So I'm going to present Sukkala, 00:25.000 --> 00:27.000 which is an open source. 00:27.000 --> 00:30.000 She was a 3-logic analyzer. 00:30.000 --> 00:32.000 So I'm going to present myself. 00:32.000 --> 00:34.000 Present the project. 00:34.000 --> 00:35.000 Why is the project? 00:35.000 --> 00:37.000 What are the specifications? 00:37.000 --> 00:41.000 What I did so far and what next? 00:41.000 --> 00:43.000 So I'm Yans Juno. 00:43.000 --> 00:45.000 I'm a French guy from Granible. 00:45.000 --> 00:49.000 And I'm a kernel and hypervisor engineer Advaits, 00:49.000 --> 00:52.000 which is a French company making a hypervisor. 00:52.000 --> 00:54.000 Completely open source based on Zen, 00:54.000 --> 00:56.000 called the XCPNG. 00:56.000 --> 00:58.000 Thanks. 00:58.000 --> 01:00.000 I'm cheating a bit. 01:00.000 --> 01:03.000 And the timing. 01:03.000 --> 01:04.000 OK. 01:04.000 --> 01:07.000 But this talk is not related to the base company. 01:07.000 --> 01:10.000 It's just my own products. 01:10.000 --> 01:14.000 So Sukkala, I've just said, it's a logic analyzer. 01:14.000 --> 01:16.000 But what is a logic analyzer? 01:16.000 --> 01:19.000 So this slide is just to explain that. 01:19.000 --> 01:21.000 So this is the usual setup. 01:21.000 --> 01:25.000 So a logic analyzer is the thingy on the left. 01:25.000 --> 01:31.000 So it's a device that you connect on one end to your PC. 01:31.000 --> 01:34.000 And on the other end, you've got probes, prob wires, 01:34.000 --> 01:39.000 usually with colors that you plug on another device. 01:39.000 --> 01:46.000 And the goal is to analyze what's going on in the other device. 01:46.000 --> 01:50.000 So usually, you spin a software on your PC. 01:50.000 --> 01:55.000 And you will be able to display what's going on on the wires 01:55.000 --> 01:58.000 that you're probing, kind of like an oscilloscope, 01:58.000 --> 02:00.000 but for digital signals. 02:00.000 --> 02:04.000 So this is a tool for usually low-level embedded 02:04.000 --> 02:08.000 developers to kind of debug one day 02:08.000 --> 02:15.000 bringing up new hardware or debugging new hardware. 02:15.000 --> 02:20.000 Or software drivers, for instance. 02:20.000 --> 02:25.000 So as I said, it's a USB 3 device. 02:25.000 --> 02:27.000 It's a FPGA-based. 02:27.000 --> 02:30.000 That's a kind of chip. 02:30.000 --> 02:32.000 And it is open-source. 02:32.000 --> 02:36.000 But we are going back on this topic in the presentation. 02:36.000 --> 02:38.000 So how is it pronounced? 02:38.000 --> 02:40.000 Sukkala. 02:40.000 --> 02:43.000 So it's just a bad play on words. 02:43.000 --> 02:47.000 It is related to the company that is making a commercial 02:47.000 --> 02:50.000 a logic analyzer called Sally Aight. 02:50.000 --> 02:53.000 Yeah, so it's just a French play on words. 02:53.000 --> 02:55.000 Don't worry about this. 02:55.000 --> 02:57.000 So what's the goal of the project? 02:57.000 --> 03:00.000 It is to make a reasonably fast, reasonably cheap, 03:00.000 --> 03:03.000 an open-source logic analyzer. 03:03.000 --> 03:09.000 So most open-source logic analyzers today 03:09.000 --> 03:12.000 are usually kind of cheap, which is good. 03:12.000 --> 03:17.000 But they are also usually slow in the use case that I like to use, 03:17.000 --> 03:21.000 which is a real-time streaming. 03:21.000 --> 03:25.000 You've got usually two ways of using logic analyzers. 03:25.000 --> 03:29.000 Either the analyzer is going to sample the signals 03:29.000 --> 03:34.000 and buffer them on the device in some kind of memory. 03:34.000 --> 03:38.000 So it comes from a really fast and buffer in the memory, 03:38.000 --> 03:41.000 but quickly the memory is full. 03:41.000 --> 03:46.000 And then it has to stop sampling and send the data to the PC. 03:46.000 --> 03:51.000 So in this configuration the problem is that you really 03:51.000 --> 03:54.000 can sample for a small period. 03:54.000 --> 03:57.000 So you can't capture for a long time. 03:57.000 --> 04:00.000 So if you want to debug something that takes time to happen, 04:00.000 --> 04:04.000 you can't do it or you can't do it easily. 04:04.000 --> 04:07.000 So the streaming mode, 04:07.000 --> 04:11.000 it's like the device is sampling the data and 04:11.000 --> 04:15.000 sending them over to the PC at the same time. 04:15.000 --> 04:18.000 And it's able to do it for long period of times. 04:18.000 --> 04:21.000 Basically it could just do it forever. 04:21.000 --> 04:24.000 It would just feel your computer ran. 04:24.000 --> 04:28.000 So that's the, in my opinion, that's the use case that's the best 04:28.000 --> 04:30.000 to debug stuff. 04:30.000 --> 04:33.000 And when you're using USB 2.0, 04:34.000 --> 04:41.000 you can't have high sample rates for real-time streaming. 04:41.000 --> 04:46.000 So that's the problem I'm wanting to solve using USB 3. 04:46.000 --> 04:49.000 So now let's focus on USB 3 solutions. 04:49.000 --> 04:54.000 So I'm making a completely unfair comparison metrics table. 04:54.000 --> 04:58.000 So the Sali AI, which is a big commercial logic analyzer, 04:58.000 --> 05:01.000 it looked bad because there is already two-be-fair. 05:01.000 --> 05:03.000 It is a really good device. 05:03.000 --> 05:06.000 So it is pretty expensive. 05:06.000 --> 05:10.000 It's really like $1500 solution. 05:10.000 --> 05:14.000 It is close source, but it's really a good device. 05:14.000 --> 05:17.000 There is the site it solution, 05:17.000 --> 05:19.000 which just came out recently. 05:19.000 --> 05:23.000 It is extremely cheap, $69. 05:23.000 --> 05:27.000 But it is still kind of close source as well. 05:28.000 --> 05:31.000 There is also the Dream Source Lab solution, 05:31.000 --> 05:35.000 which is a bit in the middle, in terms of pricing. 05:35.000 --> 05:38.000 But it's still close source. 05:38.000 --> 05:41.000 And it's still great, which is what I'm trying to achieve. 05:41.000 --> 05:43.000 So this is completely unfair comparison. 05:43.000 --> 05:46.000 Everything is green, obviously, for my solution. 05:46.000 --> 05:54.000 And the really the goal is to have kind of the same performances. 05:54.000 --> 05:57.000 But be as open as possible. 05:57.000 --> 06:00.000 And for the price, I don't know, we'll see. 06:00.000 --> 06:04.000 And to not be too expensive, obviously. 06:04.000 --> 06:09.000 So yeah, there are also already interesting projects 06:09.000 --> 06:11.000 about USB 3 logic analyzer. 06:11.000 --> 06:14.000 There is the FX3LAFW project, 06:14.000 --> 06:20.000 which is an open source firmware for Cypress FX3 chips. 06:21.000 --> 06:25.000 That you can use on your computer using your C-Glock or PulseView. 06:25.000 --> 06:30.000 It does exist, but there is no open source board. 06:30.000 --> 06:32.000 Open source hardware for it yet. 06:32.000 --> 06:36.000 It's only supports the Cypress development kits, 06:36.000 --> 06:38.000 which is kind of cheap, so it's good, 06:38.000 --> 06:42.000 but it's not per se open source. 06:42.000 --> 06:46.000 So you can check it out if you want. 06:46.000 --> 06:49.000 So just to summarize, why is this project? 06:49.000 --> 06:54.000 You've got fast devices already, but they are close source. 06:54.000 --> 06:57.000 And the open source one usually are cheap and slow. 06:57.000 --> 07:01.000 So let's try to change that. 07:01.000 --> 07:05.000 So let's be more precise. 07:05.000 --> 07:10.000 Open source, what does it mean here on this project? 07:10.000 --> 07:13.000 It is a hardware project, so you have a printed secret board. 07:13.000 --> 07:16.000 So the idea is that the hardware should be open source. 07:16.000 --> 07:17.000 What does it mean? 07:17.000 --> 07:21.000 It means that the design files are open. 07:21.000 --> 07:25.000 They are on the Git repository, as well as the production files. 07:25.000 --> 07:29.000 So that anybody could just take the file, open them, 07:29.000 --> 07:31.000 modify them, learn from them, 07:31.000 --> 07:34.000 and also just take them, not modify them, 07:34.000 --> 07:39.000 and send them to production and get the device. 07:39.000 --> 07:43.000 The PC software to control the device is open source. 07:43.000 --> 07:48.000 And I'm just using the Cigroc project and the PulseU project, 07:48.000 --> 07:53.000 which already exists and support many logic analyzers. 07:53.000 --> 07:56.000 And yeah, it is open source. 07:56.000 --> 08:01.000 There is the firmware, because there is firmware running on the device. 08:01.000 --> 08:04.000 So there are many two chips on my project. 08:04.000 --> 08:08.000 There is a micro controller, which is running a firmware. 08:08.000 --> 08:10.000 So the firmware is a custom one. 08:10.000 --> 08:14.000 And it is also on the Git repository. 08:14.000 --> 08:17.000 And there is a second chip, which is an FPGA. 08:17.000 --> 08:20.000 It behaves differently than a micro controller, 08:20.000 --> 08:23.000 as it doesn't run per firmware, but it is configured 08:23.000 --> 08:26.000 to behave like some kind of chip. 08:26.000 --> 08:31.000 And so the HDL sources, the description of the hardware and the FPGA 08:31.000 --> 08:33.000 is also open source. 08:33.000 --> 08:35.000 It is based on the region. 08:35.000 --> 08:37.000 It is written in the main general language. 08:37.000 --> 08:41.000 And I'm using the LitX environment, which is a well-known open source 08:41.000 --> 08:46.000 and environment to make a system on FPGA. 08:46.000 --> 08:48.000 And also the tools. 08:48.000 --> 08:52.000 Tools are pretty important, because you could have open source code for your FPGA. 08:52.000 --> 08:56.000 But if you need to program your FPGA, 08:56.000 --> 09:00.000 if you need a close source tools, that's not good. 09:00.000 --> 09:05.000 So I've chosen the FPGA so that you could use the open source tool 09:05.000 --> 09:09.000 from cover to cover. 09:09.000 --> 09:12.000 So I'm using only Kiker, GCC, and XP, and I use this. 09:12.000 --> 09:15.000 And you don't have to use any proprietary tool. 09:15.000 --> 09:19.000 So I'm using open source hardware license. 09:19.000 --> 09:23.000 The weak copy left one for the printed second ball, 09:23.000 --> 09:27.000 for all the remaining part, LGPR. 09:27.000 --> 09:30.000 So it should be fast, as I said, USB3. 09:30.000 --> 09:33.000 So you could have like 400 mega samples per second 09:33.000 --> 09:38.000 and some probes to be comparable with the other solutions. 09:38.000 --> 09:44.000 And as I said, one of the big feature I like is real time streaming on the LGPR. 09:44.000 --> 09:47.000 So I'm focusing on real time streaming. 09:47.000 --> 09:50.000 There is no buffer on the device. 09:50.000 --> 09:53.000 And I'm just doing real time streaming. 09:53.000 --> 09:59.000 And one of the ideas I have in mind is to be extensible. 09:59.000 --> 10:03.000 So because I'm pretty sure that I'm trying to do something, 10:03.000 --> 10:05.000 I will reach some point with some features. 10:05.000 --> 10:09.000 But the idea is that someone should be able to improve upon it. 10:09.000 --> 10:12.000 To take the project, say, oh, he did it like this. 10:12.000 --> 10:14.000 But we can do better, we can modify, et cetera. 10:14.000 --> 10:18.000 So the idea, I'm using the FPGA because it truly modular. 10:18.000 --> 10:22.000 You can modify it, easily add elements in the pipeline 10:22.000 --> 10:30.000 to do, I don't know, some computing, run live encoding or filtering whatever you want. 10:30.000 --> 10:38.000 I'm using a language that is easy to read and to learn and easy to modify 10:38.000 --> 10:43.000 because it's a Python-based language to describe the FPGA. 10:43.000 --> 10:45.000 So it's easy to read. 10:45.000 --> 10:49.000 And I'm reusing already known components. 10:49.000 --> 10:57.000 So I'm not re-inventing the wheel so that, so yeah, it's a known ecosystem. 10:57.000 --> 10:58.000 Thank you. 10:58.000 --> 11:00.000 So I'm using lightx. 11:00.000 --> 11:03.000 And the architecture is as simple as possible. 11:03.000 --> 11:05.000 So what has been done so far? 11:05.000 --> 11:09.000 So the first prototype is this kind of mess. 11:09.000 --> 11:12.000 So it's basically just two already existing boards. 11:12.000 --> 11:17.000 On the left, you've got an FPGA development board, which is a nice one. 11:17.000 --> 11:19.000 It's the orange crab. 11:19.000 --> 11:23.000 And on the right, it's a hydro USB-3 board. 11:23.000 --> 11:28.000 It's a board featuring the mic for controller I'm using. 11:28.000 --> 11:31.000 And it is here just to provide USB-3 connection. 11:31.000 --> 11:38.000 So I'm just wiring together those two boards, and that is the first prototype. 11:38.000 --> 11:44.000 Second prototype, the idea was just to replace the orange crab, the FPGA part, 11:44.000 --> 11:48.000 and to reuse the blue board, the USB-3 board. 11:48.000 --> 11:52.000 So I'm not tackling all the problems at the same time. 11:52.000 --> 11:57.000 So I designed the board, the FPGA board, the green one, 11:57.000 --> 12:04.000 so that you can plug it underneath the USB-3 board. 12:04.000 --> 12:09.000 So that's the second prototype that allow to just get rid of the messy wiring. 12:09.000 --> 12:15.000 And I've just received the printed SQL board for the third prototype, 12:15.000 --> 12:17.000 and the bring-up has barely started. 12:17.000 --> 12:22.000 And so the idea of the third prototype is to have everything on one single board. 12:22.000 --> 12:27.000 So you've got the microcontroller on the middle and the FPGA right next to it, 12:27.000 --> 12:29.000 and there is just one board. 12:29.000 --> 12:32.000 So this is just 3D rendering. 12:32.000 --> 12:35.000 Let me just explain basically how things work. 12:35.000 --> 12:37.000 So you've got the connectors on the right. 12:37.000 --> 12:40.000 That's where you plug the sampling wire, the probes. 12:40.000 --> 12:42.000 So the data is coming from the right. 12:42.000 --> 12:44.000 It's entering the board. 12:44.000 --> 12:47.000 It's going through the divider and ESD protection. 12:47.000 --> 12:50.000 Then it's entering the FPGA, which is sampling the data. 12:50.000 --> 12:55.000 It goes down a pipeline, which I will describe inside the FPGA. 12:55.000 --> 13:01.000 Then the FPGA is sending the data to the microcontroller using HSPI. 13:01.000 --> 13:08.000 And the role of the microcontroller is just to send data over USB 3 to the computer. 13:08.000 --> 13:10.000 That's basically it. 13:10.000 --> 13:12.000 You've got the bottom of the board. 13:12.000 --> 13:15.000 And that's a picture of the actual board assemble. 13:15.000 --> 13:17.000 So that's the real thingy. 13:17.000 --> 13:26.000 It was nice to work and assembly it with a dog who is in the room. 13:26.000 --> 13:31.000 And so also there is the software part on your computer. 13:31.000 --> 13:34.000 When you plug the logic analyzer, you need to be able to use it. 13:34.000 --> 13:36.000 So I'm using Perseview and Cigrox. 13:36.000 --> 13:38.000 So the support is already developed. 13:38.000 --> 13:39.000 And it's already working. 13:39.000 --> 13:47.000 So this is a screenshot of Perseview capturing a serial data using the device. 13:47.000 --> 13:53.000 At a 128 mega sample spec and it's showing debug text. 13:53.000 --> 13:56.000 That's the computer host part. 13:56.000 --> 14:01.000 So let's focus a bit on the FPGA pipeline. 14:01.000 --> 14:02.000 It's quite simple. 14:02.000 --> 14:04.000 So this data is coming from the left. 14:04.000 --> 14:06.000 You've got the probe inputs. 14:06.000 --> 14:10.000 There is an over simpler to just use a simple data. 14:10.000 --> 14:15.000 Normally via DDR or twice or four per clock cycle. 14:15.000 --> 14:17.000 There is a hardware trigger mechanism. 14:17.000 --> 14:20.000 There is a sub simpler because maybe you want to drop samples. 14:20.000 --> 14:25.000 You don't want to, you have no use of something at 100 megahertz. 14:25.000 --> 14:28.000 Maybe you just need to dump sample. 14:28.000 --> 14:36.000 And then there is packet buffer and the HSPI transmitter to transmit to the microcontroller. 14:36.000 --> 14:40.000 And now let's talk about the microcontroller firmware. 14:40.000 --> 14:43.000 Its call is really simple. 14:43.000 --> 14:47.000 It's just to get data from the FPGA. 14:48.000 --> 14:52.000 Send it over to the PC via USB 3. 14:52.000 --> 15:08.000 And it also acts as a bridge between the host PC and the FPGA to send a register reads and write from the host PC to be able to start a capture, stop a capture, configure a capture etc. 15:08.000 --> 15:15.000 And also it is there to program the FPGA from the USB stream from the PC. 15:15.000 --> 15:19.000 And to have serial debugger logs. 15:19.000 --> 15:25.000 This is a scheme, a diagram of the whole situation for the FPGA on the right, the microcontroller on the left. 15:25.000 --> 15:27.000 So you see the probes on the right. 15:27.000 --> 15:34.000 It goes down the pipeline in the FPGA and it goes to HSPI on the MCU and USB 3 to the PC. 15:34.000 --> 15:40.000 And the URL link to configure the FPGA SOC. 15:40.000 --> 15:45.000 And so you see the diagram of the SOC. 15:45.000 --> 15:50.000 So what's next, bring up of the new board. 15:50.000 --> 15:54.000 Improved driver, the documentation, bring up new features. 15:54.000 --> 15:59.000 Make HSPI go faster, program the FPGA of a USB, maybe Render Syncoding, 15:59.000 --> 16:02.000 Lipscopal, lots of stuff to do. 16:02.000 --> 16:05.000 Thank you. 16:05.000 --> 16:15.000 Here are the link to the Git repository.