 Okay. So hi everybody. Good afternoon. I'm here for making a demonstration of the work that we are doing about our open source tools for trying to learn or to teach non-technical people or even kids to design digital circuits using open source FPGAs. By the way, this is my little girl, Alithia, she's years old and she's my beta tester. So I use her for my testing. My nickname is Obi Juan. I'm not a Jedi yet, but I'm trying, I promise. I'm a system professor at Red Juan Carlos University in Madrid, Spain. I'm also a researcher on robotics. My passions are open source, 3D printers, FPGAs and all this kind of stuff. So before I start tonight, I would like to thank you to Clifford Wall for the wonderful Einstein Project and also to Mattias Lesser. They are the creators of this project and it's the first time in history that we have fully open source tools for synthesizing hardware, and this is something that is going to change everything, I'm sure. It's like the first open source compiler we have in the history of the GCC. But this is the same but in the hardware world. Now researchers all around the world and the community can create new applications and we can start doing different things and the manufacturers have designed the tools. So our motivation is trying to answer to this question. Is it possible for kids or non-technical people to design digital circuits? I really don't know but we are doing this work for trying to know. Also, can we create new tools or open source tools for allowing them to learn digital electronics? We don't know. Let's try to see where we can go. So the tools that we have designed, in this demo I'm using the iFUmaLambra. This is a kind of Arduino board. So we have removed the Arduino. It's an open hardware. So we have replaced the Arduino by an FPGA. And let's say, okay, instead of programming your robots or your staff, just create digital circuits for learning. The other tool, this tool has many keycaps. It's open source and everything is available in the github repository. So you can check there all the details, design files, manufacturing files, whatever. And the other tool is iCess Studio that Jesus has already presented to you. This is the tool we are going to use to represent the schematics and then synthesizing the hardware. And we need something to work and I usually use a kind of cork panel with push pins. Push pins is a technology very well known worldwide, so anyone knows how to use it. And also creating different peripherals and parts that have been printed with a 3D printer. By the way, everything that you see here is on the repository and everything has a free license, an open source license that you can print yourself. So the peripherals that we have designed are very simple. LIDs, switches, buttons, but using 3D printers. And so here are some peripherals that you can pass all around just to have in your hands and to touch it. They have been designed with free cut. I don't know if Jordi is here, but he will be in the late afternoon. And let's start the demonstration. So here what we have, I have a webcam here. I think you can see well. I have my panel. This is the FPGA, this black chip. Here I have a servo. I have LIDs, switches, buttons, buzzers, IR sensors. So now I know that you guys are engineers, many of you, and you know a lot of electronics. But let's pretend you know nothing. Let's do the first circuit for turning on an LID. What I have here in the background is ICES Studio. It is this white background. In that background we are inside the FPGA. So the first thing we are going to do is just to place an output pin. We are inside the FPGA. We're going to go outside. So let's call it LID. So this is an FPGA pin. And for turning on a LED, we need to put a 1. This is digital electronics, 0 to 1. But I imagine the bits like kind of small creatures, small things with legs that are running around the wires. This is because in hardware we work in space. So that's why I like to imagine things moving. So we place the wire and we select which pin of the FPGA we want to go outside. In this case, let's choose. For example, LID 0 is one of these LID that is on the board. And now let's upload the circuit. And in very few seconds you can see here that the LED is turned on. Only three seconds from here to here. It's very fast. It's amazing. I've never seen nothing before. I've been many years working with silence. And this is wonderful. But what really happens here? This is not an emulation. This is a real circuit that has been mapped inside FPGA. So there is something physical inside here. This is the circuit that we have created. This is not a simulation. It's a real hardware that you have synthesized using only your finger. Very easy. So I think that's the way for attracting more people to the hardware world. And let's try to turn on two LEDs. So easy. We copy and paste the circuit. Now these are two circuits in parallel. This is another characteristic of hardware. The hardware works in parallel. We can do many things in parallel. I choose, for example, now these two external LEDs. I've connected these to D13 and D12 outputs. So I choose here D13, D12. And now let's upload. The hardware synthesizing is uploaded in very few seconds. The board is turned off. And here you see the LEDs. So fast. It's amazing. Next example. Let's blink a LED. This is the second Hello World. If you think about it in software, this is an algorithm. What do you have to do for making a LED blinking? First you turn on, then delay, then turn off, delay, and repeat. This is a loop. Okay, this is the software thinking. But in hardware things are moving physically. So what we need to do is pumping the bits or pushing the bits. So, for example, we can use a heart. So we place here a heart. And now I will press the shortcut, control U, for going faster. And now it's being synthesized in hardware. And now the LED is blinking. And you can hear the heartbeat. One zero, one zero, one zero. Bits are coming from the heart to the LED. What should I do if I want to blink it faster? So stupid. Just use a faster heart. For example, here I have one fourth heart. We put it here, synthesizing. And now we have two blinking LEDs, one faster and one slower. But the two LEDs are blinking in parallel. Try to make this in Arduino. Of course you can do it. It's so easy for programmers, but not for beginners. When kids are programming Arduino or in general programming, it's very difficult for making parallel things. You need to learn a lot about computer science for multiplexing the CPU, interruption, and this kind of advance step. But not in hardware. In hardware, parallelism is for free. You have it, so let's use it. If we want to blink the two LEDs with the same frequency, so easy, just drag one heart into the other and just uploading and synthesizing. And we have the two blinking LEDs at the same time. Let's change some bits. For example, let's add here a logic gate. A node gate, for example, here. And we put it here. And now what is happening is that one LED is on, the other is off. So we have here a kind of light side end. So easy. Okay, let's move to the next example. Now we would like to work, for example, with servos. Let's move this servo. For moving this servo, I will place here what I call the component a servo bit. This is the simplest controller for moving a servo, only in two positions. If you put in the input A1, it will move to one position and A0 to another position. Let's connect this to an output here. And the output, the servo, is connected to D0. And let's add an input here. And we connect the input to the servo. This is a switch. And the switch is connected to D11. And we synthesize. Of course, the light side end is already here, parallelism is for free. And now, if I just change the switch, the servo is moving to one side and the other. And, of course, in parallel, the light side end is also moving. Are two independent circuits running at the same time, in the same FPGA. Now, instead of doing the circuit by myself, I will take some example, that will make it more dynamic, the demonstration. What happens when you put the servo and you show it to a kid, he immediately tells you, what happens if you connect a heart to the servo? Let's try. Let's put it here. See what happens. And what is going to happen is what you expect to happen, that it's going to start moving from one side to the other. Now, you can see how the heart is moving. You want it to move slower. You put a slower heart or a divider. In electrical engineers, we'll use a T flip flop for dividing by two the frequency. But here, we can use, I call it a turtle. So, we put here, and we put it here, the turtle. So, of course, the kids know that the beads are going to run slower. You see? And you cannot as much as many you want the turtle. Next example. Let's move to the sound. For example, a doorbell. It's so easy. We have here a buzzer. And this is a component for generating a square signal with a tone. And this is a push button. So, when you receive one, it starts, it sounds. And when it doesn't receive the bead, when you receive a zero, it stops. A doorbell. And now, can we connect a heart to the two here? Of course. Let's put here, for example, this one. You see? And also, the servo here is moving, the light signal and the acoustic signal. Everything is moving at the same time. I will turn it off just for safety. We can try to put it to one or ten hertz. Let's try. I'm just playing. Okay. So, let's move to the next example. Here, I'm using a buzzer just for playing one tone, but you can play two tones and create a real siren. A kind of real siren. Here, the siren is a little bit more complex. You have here the two... Let's synthesize it. The high and low tones and a multiplexer and the heart is selecting which of the tones can you hear on the buzzer. And here, I have a push button and an AND gate just for letting the siren sound. So, when I press the signals... Okay, five minutes, yeah? You see? Okay. And now, the final example, let's use IR sensors. Here, I connected the IR sensor to the buzzer directly. And of course, the rest of the circuits are here. So, when I put my hand here, it detects my hand and it emits a sound. When I showed it to my little daughter, she told me, hey, I like it a lot. I want to play to the supermarket. It's a kind of cash register machine. So, she went to do some products. I said, okay. One. Yeah. It's 1050, please. So, I like that example. And I created a better one. That is here, the supermarket. But still, it's quite simple. Now, the sound is always the same direction. And also, when you scan some objects, the server moves. Why? Because we can. Because it's cool. And then here, you have a binary counter that is telling you how many objects. The problem is that in binary. And here, you can reset it. And the final example that I want you to try is this one. It's a supermarket. But I also added the spinner. Why? I don't know. It's so cool. And here, what you have is that if you move the spinner, you can hear it's counting the pulses. And also, it's working as a supermarket in parallel. And now, thank you. And now, I will give it to you. We put here a power band. And yeah, the circuit is inside. So, you can pass all around and test it. I'm playing a little bit. And just to finish, I am a robotic guy. So, this is a modular robot. This is the kind of robot I like. It moves like a capture pillar. It only has two servos. Here, I have an FPGA. And it's moving like this. I will put it on the camera. So, eyes are very important. It's the most important part. And as the hardware works in parallel, I've also added, in addition with the locomotion algorithm implemented in hardware, I've added another circuit for playing some music. Yes, in parallel. So, let me connect it here. So, this is all for my part. Thank you very much. And may the open FPGAs live with you. Thank you. Thank you. Now you can play. Sorry, I didn't help you because of the imperial march. For localization. What do you mean, the robot? Oh, yes, of course. Yeah, yeah, yeah, yes. I'm so sorry, I didn't understand you. Here, you can change the language. And now it's in Spanish and Galician, Basque, French, Catalan, all the languages in Spain. So many different languages. Yeah. But this is possible. That's one good thing about the free software that you can adapt and you put your own language. Yeah. Yeah, you mean a kind of animation? Or... Oh, yeah, yeah, it's already parametrized. But, yeah, yeah, it's... Jesus already told about it. You can add a parameter. But for kids and for simple demos, it's better just to have a customized heart and just replace one by another. But of course, you can do it. And of course, you can also do it in very low. You can open the heart and do it in very low. I don't know, but sorry, the question is about the safety of this kind of stuff. I've only tested with my daughters and the daughters and kids of my friends. But SPAs can be used by anyone. Then the peripheral you use is up to you. You mean the Alhambra? Yeah, yeah, he's telling me about this board, the Alhambra board. It's not commercial. We've made some crowdfunding campaigns just for making this kind of Arduino with FPVAs. And it's free hardware. So if anyone wants to... Yeah, initially we made a batch of 100 boards, but people started buying more. They wanted more, and now we have manufactured 500 or something like that, a kind of on demand. And we are continuing doing, but... It's a research project. Yes, yes. We don't have long term now that maybe other people can use it and do that plan. So I'm a kind of scientist. So I'm not really interested in that part of the commercial part. But every thing we have free license, so every thing can be used and reused and you can make money with this if you want. Have fun again. Thank you.