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.

