Embedded - 66: As Simple as Possible

Episode Date: September 3, 2014

Jack Gassett (@gadgetfactory) is the creator of the open source FPGA Papiliodevelopment board. He joins Chris and Elecia to answer the age-old question of how to get started with FPGAs. Jack's compa...ny is Gadget Factory. Chris got the Papilio Pro and Arcade MegaWing. Recommended reading: Mike Field's book Introducing the Spartan 3E FPGA and VHDL (FREE! With code!) Mealy and Tappero's Free Range VHDL (FREE!) Sundar Rajan's Essential VHDL : RTL Synthesis Done Right Roger Tokheim Digital Electronics: Principles and Applications Thomas Floyds Digital Logic Fundamentals (also see the latest edition) Chris and Elecia will be recording live at Hacker Dojo in Mountain View, CA on Monday, September 8, 2014 at 7 P.M. RSVP!

Transcript
Discussion (0)
Starting point is 00:00:00 Welcome to Embedded, the show for people who love gadgets. I'm Elysia White, here with co-host Christopher White, and our guest is Jack Gassett, designer of the Papilio boards and founder of the Gadget Factory. We're going to be talking about field programmable gate arrays. And before we get started, I'd like to remind you that Chris and I will be recording a live show at Mountain View's Hacker Dojo on Monday, September 8th. So please come out and give us a heckle. Now back to our guest. What time? Oh, uh, seven? Sure. I'll edit it if it isn't. Hi, Jack. Thank you for being on the show.
Starting point is 00:00:45 Hi, Alicia. Thank you for having me. It's a pleasure to be on the show with you guys. Hi, Jack. Could you tell us a little about your background and what you're up to? Sure. Yeah, so I'm a longtime computer and electronics hacker. I started out when I was 13 and then just pretty much have been hacking on both for my entire life.
Starting point is 00:01:06 And then maybe about eight, nine years ago, I was working a cushy corporate job when I found myself constantly daydreaming about inventing stuff and being an inventor. And so I spent a couple of years saving up money to pay off all my debt and save some money to live off for a couple of years. And then I started the gadget factory. And one of the first things that I did was the open bench logic sniffer with Ian Lesnett from Dangerous Prototypes. And that kind of got me started in open source hardware. And then I went into making the Papilio fpga boards which was originally intended to be my invention platform and uh that's kind of it in a nutshell and now the papilio when i look on the website it says it provides an easy introduction to fpga digital electronics and
Starting point is 00:02:00 system on a chip design what so easy introduction versus platform for future development seems different. Yeah, so exactly. It started out originally as my, that was how it was conceived originally, was my invention platform to be an inventor. And then it kind of evolved into i wanted to make it into something that was usable by you know a much wider audience than just myself and i started looking at the arduino platform and really studying what they did with the arduino platform and uh doing you know and i've gone on this long journey to figure out and i'm still on the journey to figure out, and I'm still on the journey, to figure out how we can make an FPGA that is as easy to use and as accessible as the Arduino and as useful as the Arduino.
Starting point is 00:02:56 And it's still, you know, it's in progress. So the journey is still happening. It's not complete, but, you know, we're getting further and further along every day. Well, that's a very tall order. I mean, the Arduino is very geared to be as simple as possible and sometimes even simpler. Yes, and that's exactly true. FPGAs are a black box. I mean, I work in embedded embedded systems I use microcontrollers
Starting point is 00:03:26 all the time Arduino is trivial but FPGAs are scary right exactly it's such a blank canvas compared to just normal software where you've got and it's been a real challenge to try and pull that off so that's been the goal have I done a great job so far
Starting point is 00:03:43 you know I'm not real satisfied with the job I've done so far job so far you know i'm not real satisfied with the job i've done so far but i think i'm right on the verge of of attaining those goals or at least making a good shot at it and you know so kind of when you look at the arduino what they did really well is they took something that was very scary to a lot of people which is c c or c plus plus programming you know before the ar the Arduino, you went out and you asked the average electronic hobbyist or the electronic people or the average person that is using Arduinos now,
Starting point is 00:04:13 if you would have said, do you see yourself programming in C++? They would have said, never, no. And the Arduino took something that was very scary and they did an excellent job of making it accessible to just everyday people. And so that's kind of my inspiration, which is, well, if they were able to do that with C++, can we do the same thing with FPGA technology? Because it's equally as scary as Cs are what a lot of my hardware engineers use, but now they're using FPGAs to do fast timing synchronization sorts of problems. but mostly it's doing all the logic stuff, adding I2C buses or additional SPI buses to a chip that doesn't have enough.
Starting point is 00:05:12 Yeah, and it's good at that sort of thing, but really, you know, what I try and explain the FPGA is, so just think of, and I have a new board called the Papilio Duo where we're coupling the Arduino, the chip, the AVR chip or the Atmel chip that's used in the Arduino Leonardo. We're coupling it with an FPGA. And so the way I describe it is to think of the FPGA as a circuit board or a circuit laboratory that's connected to the Arduino chip. So yes, it is very good at those sorts of things that you brought up like timing and high-speed tasks. But really, it's good at that stuff
Starting point is 00:05:54 because it's a blank circuit board. And if you have the right VHDL or the right cores, it can do any of those things in parallel very quickly. So it's like being able to design a circuit and have it realized instantly where you don't have to go out and have the PCB manufactured and then solder it all together and all that good stuff. I always thought it was like designing a chip, which I guess is sort of a circuit board.
Starting point is 00:06:23 Yes. So it's using digital logic to design a circuit. And chips, that's ultimately what chips are, is they are a circuit designed using either VHDL, some kind of hardware description language, or in the older days they used to use schematic entry. It's just without kind of the hardware portions. So like, you know, differential signaling and that sort of thing. You have to do that off the chip.
Starting point is 00:06:59 So when I got, I got my husband some of the yearboards for his birthday in the spring, early summer. And he, and I thought it was all FPGAs and was expecting, I don't know, signal processing or logic things or robot things to happen. And the next thing I hear, he's downloaded it to be an Arduino. So you're doing cores as well as logic, and you're using cores from the web. Right. So basically, you know, we're coupling a core.
Starting point is 00:07:40 Well, you consider any component. So if you take it back to the circuit board analogy, cores would be like a chip that you would put on the circuit board. So one of the things that we have the ability to do is take a core that is an implementation using VHDL. Well, we've used VHDL. I shouldn't say we. An open source developer made of a core that implements an AVR compatible soft processor.
Starting point is 00:08:13 And we can take that and put that in the FPGA. And it's really great for control logic. So when you're designing a solution on an FPGA, one of the things that's very hard to do in VHDL is control logic. So how you tie everything together, how you control it. It's difficult to do in VHDL.
Starting point is 00:08:39 I like to liken it to, you can design a circuit using all 7400 series chips but you wouldn't want to you know try and set your control logic up using 7400 series chips you would always put a you would put a microcontroller or a processor because that makes the tasks trivial so it's the same thing with an fpga um you want to want to save yourself a whole lot of headache by using a soft processor to tie everything together and to do the sequential type logic. was, not the board itself, but the concept of FPGAs being so wide open. Normally you get a microcontroller and it has almost you know how many elements you have on it the timing you can actually achieve across the across the chip from one end to the other so it's it you can look at this thing go i can do anything with this right and it can be really
Starting point is 00:09:58 really fast i mean i can implement some signal processing thing or some video processing thing and it can be many many tens of or hundreds of times faster than on a cpu and so i just sat there looking at it going well i have no idea what to do with this but exactly uh going back to what you're saying about vhdl one of the things i ran across in the reading was okay this is this looks like software vhdl and verilog look like software so it's almost deceptive to a software developer to look at this and go, oh, this is sort of C-like. I get it.
Starting point is 00:10:30 Very C-like. But nothing operates in the same manner that you're used to. Like you're saying, everything's happening all at once or is clocked all at once. So doing the standard kind of this happens and then this happens if then that
Starting point is 00:10:45 that's not easy and that that's where you have to twist your brain around and that's one of the things that that's the control logic so from an education standpoint how do you how do you encourage people or how do you uh bridge that gap between say somebody who's used to programming and c and here's an fpga i can do anything with it but you have to think a lot bridge that gap between, say, somebody who's used to programming in C and here's an FPGA. I can do anything with it, but you have to think a lot differently. Yeah, so I think the first thing
Starting point is 00:11:13 to wrap your mind around, and when I was first learning how to use FPGAs, I had my first breakthrough because I did the exact same thing. I'm like, oh, I know how to code. And so I took the approach of, hey, I'm like oh i know how to code and you know and so i i took the approach of hey i'm gonna code something with vhdl you know and i tried to put all of that same thinking and that way of doing things into vhdl or verilog verilog is even worse because
Starting point is 00:11:38 it's c-like um and that's a that's a mistake uh because really you need to start off from the get-go understanding that an FPGA, you're really designing circuits that go on the FPGA. And, you know, maybe that's a bit of a simplification, but I think that it works. That if you go into it thinking of it as, okay, I've got an Atmel chip with a circuit laboratory connected to it so when i'm going to write something in vhdl i'm not writing code i'm writing hardware description i'm describing hardware and so vhdl is not writing code it's actually describing circuits that will run on your FPGA. So it's sort of textual schematics? Yes, exactly. Yes. And so I had my big breakthrough with FPGAs when I stopped thinking of it as a program, VHDL as a programming language, but as a high level way to design circuits or design schematics. And so basically what helped me, also what helped me was I bought every Digital Logic book
Starting point is 00:12:53 that I could find on eBay. I just spent a hundred bucks or something and bought as many used books as I could find. And then I studied all the basic building blocks for digital design. You know, I understand things like shift registers, comparators, you know, all the basic building blocks, multiplexers, decoders, all that stuff. And then when you're thinking how to solve a problem with an FPGA, break it down to how would you design a circuit to do that and what are these what are
Starting point is 00:13:27 the equivalent digital building blocks that i can use uh and then how do i describe that digital building block with vhdl and you can quite often find the examples on the web or even in the xilinx isc they have what's called the design template or the language templates where they break it down. How do you describe an 8-bit shift register with VHDL and then you just copy and paste it? Well, with the Papilia board, there was this idea that you could do it from VHDL or you could just copy things from the web. I mean, we mentioned the Arduino, but there were lots of other cores and then you just put them all together and then you stick on the arcade wing that we got too and now you have a little arcade machine and you've done no coding and not necessarily a lot of learning
Starting point is 00:14:26 except how to download these things. Right. And that kind of goes to kind of the timeframe of... So I've been working for four or five years now trying to crack this nut of how to do the same thing for FPGAs that the Arduino did for C++ and microcontrollers. And so, like I said, I haven't been really successful.
Starting point is 00:14:51 I'm not happy with the results because I think in the beginning, initially, what I was trying to do is I was trying to provide a lot of examples because what worked for me was to learn from examples so I thought you know what if I uh provide a lot of examples so you know and make a lot of different examples work with the papilio people can look at these projects so a good example is those arcade projects right which are fantastic I'm not dissing them at all. No, totally. I totally understand. And, you know, they came from Mike Johnson at FPGA Arcade. He made all these examples, and they were such wonderful... Wrap your mind around what's possible with an FPGA,
Starting point is 00:15:38 that in the very beginning, that was kind of where my focus and where my emphasis was. And so, you know know i designed the arcade hardware mega wing and then i got all of those excellent arcade games working because if you dive into the vhdl code for those video games it's really cool because what what they're doing what mike johnson did is he would study the and and i think it was it was also a group of people it was a community that did a lot of the different pieces but mike johnson brought it all together um mike jay and if you look at the source code it's really cool because you see that he studied to like implement pac-man he studied the original schematics for the pac-man motherboard And then every chip that's on that Pac-Man motherboard,
Starting point is 00:16:26 he recreated it in VHDL. Amazing. And then he tied it all together. So it's basically shrinking that entire Pac-Man motherboard onto one chip and doing it all with VHDL. And so, you know, like I said in the beginning, I thought that, well, this is the way to do it. This is, you know, provide all
Starting point is 00:16:45 these examples and then people can study these examples and learn from it. And then, you know, it's kind of evolved that, okay, that's really not the answer. That's cool and that's fun and that's, you know, it's a valid learning tool and I don't regret all that work, but the direction that I'm heading in now has evolved much further beyond that. Whereas now, what I'm trying to do is trying to, because VHDL, the realization that I've come to is VHDL, and I mean, everyone knows this, and I knew this from the beginning, but I thought maybe I could make VHDL easier to learn also. So that was kind of the next step. So I thought, okay, well, maybe the solution is to make VHD't have to learn the difficult control logic. You can just plop in this soft processor into your designs. And then all you have to worry about is the peripherals,
Starting point is 00:17:56 which it's much easier to code VHDL for simple things like, you know, a UART or, you know, something like that. It's easier than, you know, doing your own control logic with a finite state machine. That gets really hard. And it's actually kind of the first wall that you run into with most FPGA boards is it's pretty easy to do basic stuff like blinking LEDs, you know, reading, UART, you know, a lot of that stuff is really easy. But when you try and make a full system that actually does something that normally you would use a microcontroller or something
Starting point is 00:18:39 in a circuit to implement, that's the brick wall that most people hit with FPGAs and they throw their hands up and they're like, I don't know where to go from here. I don't know what to do from here. And what's your advice to those people? Well, that's actually the phase that I'm in now. So, moving beyond just providing an Arduino compatible soft processor. Wait a minute, before we go on.
Starting point is 00:19:07 I want to get back to that. But when you say Arduino-compatible soft processor, these are things you can download, and you have one that's like an Arduino on steroids. It's 100 megahertz and 8 megabytes of code space. Yeah, this is the thing about FPGA. I mean, it's not an Arduino processor. They have a lot of power. Anything is possible with an FPGA. I mean, it's not an Arduino processor. They have a lot of power.
Starting point is 00:19:27 Anything is possible with an FPGA, and that's the beauty, and that's the wonder of it, but it also can be overwhelming, and that's what we're trying to do with the Popilio is to make it not overwhelming and to provide the tools and the resources necessary to, right out of the gate, be able to do meaningful and useful things with an FPGA. But, you know, back to your question of, so yeah, we have a, we call it the AVR8,
Starting point is 00:19:56 which is, it's a VHDL implementation of an Atmega 103 chip. So the guy who made it, his name is Ruslan Lep leptinic i don't i i'm sure i'm not pronouncing that right i apologize um but he you know he studied the data sheets for the at mega 103 and then wrote vhdl code to implement everything described in those data sheets so that this core works in the exact same way that the ATmega103 does so that includes all the peripherals that so the USART the SPI master the PWM the timers it all works exactly the same way it has the exact same registers using it is exactly the same as using an app mega 103 um and then we then what i did is i took that core i made it work on the
Starting point is 00:20:54 papilio i made it work um because originally it needed a an external programmer you needed to use the app mega uh external programmer so i i did the work to make it so that it would just program over the papilio serial port um and then i integrated it into the arduino ide so um you know i took the the core files that defined and it wasn't you know it wasn't crazy it wasn't really super hard. But because the Arduino IDE, one of the beautiful genius things that they've done is they kind of have like a hardware abstraction layer
Starting point is 00:21:36 that is really designed from the beginning to support any type of microcontroller. So all I had to do was copy their existing core, which is targeted for the Yatmega 8, I think it was at the time, and change all of the registers to be compatible with the Yatmega 103. And then I had to change the code a little bit to support my loader application. And then, bam, you've got Arduino compatible soft processor running on FPGA. So you could take the majority of the Arduino code out there and run it on the Papilio. But the benefit is that you have access to the complete source code of that processor.
Starting point is 00:22:28 So you can tweak it or modify it or expand it in any way that you want. If you need... You know, the serial port. Right. Ten serial ports. Right, exactly. You need ten serial ports,
Starting point is 00:22:38 you have that capability. Or you need a bunch more PWMs so that you can do some robotics fun. Yeah, I hadn't considered that option of taking the soft core ability or you need a bunch more pwm so that you can do some robotics fun yeah that's that's i hadn't considered that option of taking the soft core and then twisting it to your right to your desires okay right and then if you if you want to directly so so that was kind of the first step then the next step is um a guy named alvaro lopez along, and he's a FPGA rock star. So he's way above and beyond my capabilities with FPGAs.
Starting point is 00:23:11 And he's the one that implemented the ZPUino, which is that Arduino on steroids. It's a 32-bit soft processor running at 100 megahertz, and it has a SDRAM controller, so the code runs out of 8 megabits of SDRAM. And then he also did the same thing. He did the same thing with the Arduino IDE, where he took their core implementation, implementation and he adjusts or he changed the libraries to provide support for all the peripherals on his zpuino so the timers are different on the zpuino and he made changes to the arduino core to use his timers instead of the atmega8 timers and so so on so forth um so the end result is that you can load the zpu zpuino bit file to the fpga um plug it in bring up our modified version of the arduino ide and then select the zpuino as your processor or your board type and then take your arduino code and as long as it doesn't do anything
Starting point is 00:24:28 special directly with the hardware it all works so the truth is is that there are some libraries some arduino libraries that they directly manipulate uh registers in the app mega chips and those have to be ported yeah so okay so let's say i had a board and i got it just immediately maybe chris could tell me some of this too um and i wanted to be able to download some arduino code to it do i have to start by downloading fpga code yeah i think i think so but there was an easy loader and stuff. Right, so, okay, yes and no. If you want to modify the soft processor, then yes, you need to download the Xilinx tool chain, and it's free, by the way. So the Xilinx software, you would have to download that if you want to modify the soft processor.
Starting point is 00:25:21 So if you wanted to add more serial ports ports or you want to change where the pins connect and that sort of thing. But we have built into the Arduino IDE or our version of the Arduino IDE, which we currently call ZAP, which is short for ZPUino, Arduino, Papilio. But the next step is we're changing it to Design Lab. And I'll tell you more about those changes
Starting point is 00:25:44 because that's kind of the next cool thing, the next phase of how we're going to make FPGAs more accessible. But anyway, it's all integrated into the IDE, and if you just simply want to run code, everything is there with that one 300-megabyte download to do that. But then I'm stuck with being an arduino although maybe yes super powered arduino right and so that's exactly there's not a whole lot of value to doing that unless you want to start it right unless you want to learn you know it provides you a baseline for starting in with FPGAs and making sure everything works.
Starting point is 00:26:29 So if you are going to dive into modifying, adding more UARTs and that sort of thing, it's a quick way to get a baseline up and running while you're waiting for the rest of the tools to download. But you're waiting for the rest of the tools to download but but you're right there you know and that was one of the the realizations i came to is okay i've you know there's the soft processors now but what are we doing to make this better than not necessarily better but as useful as the arduino in its own way okay so so Christopher, you got the Papilio Pro and the Arcade Mega Boy.
Starting point is 00:27:09 What were the things you actually did with them? Well, I did what Jack's talking about, and I put the Arduino core on and played around with that. And then I did a lot of reading, actually, and tried to sort of decide what I wanted to do next
Starting point is 00:27:26 and then got overwhelmed. Well, there was a blinking light stage, too. Yeah, there's some easy or semi-easy VHDL examples for things like counters and blinking lights that you can plug in. So I played with some of that stuff. There were, on the website, there were a number of, I seem to recall there was a number of
Starting point is 00:27:46 small examples of that kind of thing and there was a good sort of intro to vhdl and fpga's ebook on there that took you through some of the concepts and things so i read through that one of my kind of pie in the sky goals is to kind of recreate the apple 2 and an fpga so yeah you know or or maybe not go as far as that but to design a really stupid cpu to learn how to do to learn you know processor design and just to not necessarily to go anywhere with it but just to explore that and to see what that's like and the fpGA provides that capability. You can really do that. But one of my questions as going through it was, okay, there are these things that are educational,
Starting point is 00:28:32 like making your own CPU. There's these things like taking a known soft core and if I have to modify it for my needs, changing peripherals. What are some other things that only FPGAs can do that the sort of the hobbyist would want to to use these devices for beyond just getting a microcontroller
Starting point is 00:28:53 and to my mind it was things that required different different uh high speed kind of things or maybe radio or maybe different kinds of networking that you can't easily get um think simultaneity serial communication that kind of thing but but in your mind what have you yeah thought of other pieces like that yes uh so those are really the kind of the big ones there is one is being able to create something that just doesn't exist anywhere else you know for example uh i have the retrocade synth project that i put together and that was awesome yes oh thank you thank you and so basically what that does is it takes all the audio chips from all the classic uh computing systems like the Commodore 64 SID chip and the Atari YM2149 chip,
Starting point is 00:29:50 and then the Pokey, I'm sorry, no, that was the Yamaha, but it was using the Atari ST. And then like the Pokey chip, and then connecting them all to the ZPUino soft processor and making a synthesizer that has all three of these classic audio chips all together on one one uh circuit board with one solution and you can play all three of them at the same time so something like that has never
Starting point is 00:30:20 existed before and that was relatively easy to do with an fpga um so something like that has never existed before. And that was relatively easy to do with an FPGA. So something like that, something unique that doesn't exist anywhere else. Or you need 10 serial ports like the SoundPuddle project. It drives 20,000 RGB LEDs and it uses nine SPI masters to do so. And those SPI masters are, are memory mapped to some internal memory. And so they, they're really just acting as big giant displays because to control it,
Starting point is 00:30:58 you change the memory, the bits in memory. And then it just automatically VHDL code automatically spits it out over the the nine spi masters and it's a really cool thing that there's no chip out there that does that you know it doesn't exist uh so that's the kind of cool things you could do and then also just high speed stuff like um you know fpgas can operate very quickly. So like a logic analyzer was one of the things I did with the OpenBench logic sniffer
Starting point is 00:31:30 that it wouldn't really be feasible with a microcontroller because you would really struggle to get 32 channels sampling at 100 megahertz altogether at the same time. The simultaneousness yeah the parallel operations that that's the type because keep in mind it's a circuit board you know it's you're implementing circuits and and that's what i'm really trying to emphasize to make it clear easy to understand in people's heads is that you know because the questions always come up like oh well are you emulate with the arcade game heads is that you know because the questions always come up like oh well are you emulate with the arcade game stuff well are you emulating the arcade games are you
Starting point is 00:32:11 you know running a soft processor that translates the code and it's like no it's actually you know taking the original pac-man motherboard and recreating those circuits on an fpga and so i'm rambling i'm getting off on a tangent a little bit there but back to the question so the high speed stuff like logic analyzer or driving uh these new rgb leds that require at least 20 megahertz uh they require you to drive them at at least 20 megahertz. They require you to drive them at least 20 megahertz. And Arduino can barely do it, but you can't do much with it. And in our demo for the Papilio Duo, Alvaro Lopez, or Alvi Lopez,
Starting point is 00:33:00 he put together a demo driving two of those displays and actually putting 24-bit full color video on it so you know we're running like the intro to to the simpsons and star trek clips and that sort of thing which as far as i know the arduino wouldn't be capable of doing that so you've mentioned the duo and the new interface, DesignLogic? DesignLab, yes. DesignLab. Yes.
Starting point is 00:33:30 What do you have cooking? Yeah, so that's kind of the next phase of, and this is where I think we're just about to crack the nut with the long-time goal of making an FPGA as useful and accessible as the Arduino. Because like Chris said, it's like, you know, there's these cool projects and then there's a soft processor. And you said it as well, which is, you know, how is this better than just using an Arduino? Well, it's not, you know, and that's something that, but it's's the first step it was the first thing that had to happen in the in the journey was to have that capability so now we're poised i think to take it
Starting point is 00:34:14 to that final step and really have something special and i'm really excited about it so Okay, let me gather myself. And so in a nutshell, what we're doing is we're going to eliminate the requirement to learn VHDL to use an FPGA. And the way we're going to do that is by using schematic-based entry. And so to make... What? He's going to go from something I know how to do to something i don't know how to do i don't know i don't know how to do either so yeah what are you going to use for schematic entry kai cat no no um ltm no the so the xilinx isc has a really passable schematic editor. So we're using that. So we're taking the path of least resistance.
Starting point is 00:35:09 They already have that. You know, it will get the job done because really what we're trying to, the end goal here is to have it so that anyone can pick up the Papilio and do make a useful and meaningful system using it so a system on chip and vhdl has too much overhead with it there's too much learning that you have to do to get proficient enough to be able to do a lot much with it so you know like we were talking about
Starting point is 00:35:42 you can blink lights pretty easily you can you know input and output pretty easily but then you hit a brick wall and you can't it's you have to have several years of experience to to really pull off a useful system you know and like i said one of the biggest problems is control logic now if, if we kind of follow the path that the Arduino provided, and so they took C++ and they figured out a way to make it easy to use and leverage C++. And the way they did that is they have the libraries that do all the heavy lifting. And really what you're doing when you program on an arduino is you're doing c++ client programming meaning you don't have to learn the intricacies of classes and how to make libraries and polymorphism and all that crazy
Starting point is 00:36:39 stuff that you know most people don't even need or will never use so a client programmer is just going to need to know how to instantiate objects and the way that you learn how to use those objects and then use those objects so you know with the arduino you download a library you instantiate that object and then you're calling the the properties and the the methods of the that object, and then you're calling the properties and the methods of that object to do meaningful work. And it's very easy to learn, and it's very easy to use, and it's very powerful. I'm going to disagree, actually. It is very, very easy to learn, and it is very powerful. But it's a good starting place.
Starting point is 00:37:23 And most of the Arduinoduino people i speak with they start there and then they quickly discover they need to learn all of this other stuff i mean once you get past moving a motor and blinking a light and you start wanting to do what you want to do instead of what the library wants you to do, that's where they start learning. And I love that point. That's the tipping point of I'm a hobbyist to I'm an enthusiast. Exactly.
Starting point is 00:37:56 And I agree completely with you. And so that's the point that I'm making is that there's a ramp there. There's a ramp where you start, and then there's a clear ramp up where you start with client programming and then you run into something where you're like man i need to make my own library so you learn and you have the resources and you learn how to make libraries and then the next thing you know you're doing c++ programming and you do care about classes and you do care about all these things but you can learn it in a gentle rap. It's not just, bam, you have to do C++ programming to do anything. But isn't that like downloading the soft cores and using the VHDL? You were saying they have widgets, although I forgot the name.
Starting point is 00:38:38 Cores, cores. Not just the cores, but like the soft timers and all of these, the blocks that other people have made that are in the xilinx isc and so you you start out with a core and you use it like a core and then you say hey i want some more pwms and then you go and you replicate the pwm blocks and until at some point you're like oh yeah okay i could write this from scratch because i've been playing with it for a year and a half. Exactly. Yeah, and so that's what we're trying to do with Design Lab
Starting point is 00:39:08 is that we're trying to take, we're trying to recreate that ramp for FPGA. So the same ramp that you have with the Arduino where you can start out with just client programming and you can learn it over a weekend or a couple of weeks period and actually be doing interesting things with it because there's libraries that you can download and implement
Starting point is 00:39:30 and use that do the stuff that you need. We're trying to do the same thing for FPGAs, and the way we're doing that is it starts with the soft processors, but what we've done is we have converted the soft processors to schematic form. And then each soft processor has what's called the wishbone bus. And it's kind of like the ISA bus on a computer where you would plug. So we're back to, with an FPGA, you're making circuits. The Wishbone bus allows you to pretty much plug in, think of it as a way to plug into this soft processor,
Starting point is 00:40:14 a way to plug in a chip. And the cores kind of equate to chips. Give me an example of the chip you would want to plug in. The Commodore 64 SID chip, the audio chip. So if you wanted to plug in six, well, it depends on the size of your FPGA, but we have 15 wishbone slots on our schematic. So if the FPGA chip was big enough, which it's not, but for the sake of an example, if it was big enough,
Starting point is 00:40:46 you could put 16 or 15 SID audio chips into these 15 wishbone slots and they would all be, and you would do it by simply dragging and dropping using the schematic editor. And then you generate the bit file, load it to the Papilio, and then it's all integrated. So Design Lab is a fork of the Arduino IDE. But what we've done is we've added the ability to manage circuits into Design Lab. So when you have a sketch sketch your sketch also has a circuit component so every sketch you know it's comprised of code so arduino compatible code and then any libraries um so for example there's a library for that sid chip chip. So if you use that SID chip, you don't just have to study the data sheet
Starting point is 00:41:47 for the SID chip and go, okay, if I want to make this tone, I have to write these values to these registers. No, we have Arduino style libraries where it's as simple as instantiating a SID object and then you tell it which wishbone slot you've connected, you've placed that SID chip, and then you have all these methods and properties,
Starting point is 00:42:12 such as load this frequency into this SID voice, and then there's a method to play. So you've extended Arduino with customizable hardware. Right, yes. It sounds pretty familiar actually to me because years ago on a professional project we had to use an fpga to provide custom uh custom interconnect and some peripherals to a pc standard embedded computer with pci so we needed an fpga and we needed to stick pci on it and we needed some i squared c masters and some other things
Starting point is 00:42:44 like that yes and the electrical things like that. Yes. And the electrical engineer doing that, he didn't know VHDL. Right. So he pieced things together from the soft cores and blocks that came with, I think it was Altera at the time. Mm-hmm. And he didn't, you know, I think he obviously had electrical engineering knowledge,
Starting point is 00:43:00 so he could do some glue interconnects that probably I couldn't do or a software engineer couldn't do but it was in essence putting together blocks and there was some small amount of verilog we ended up doing um for some tiny pieces but yeah that's that's sort of how it worked and you could do a lot with with that kind of methodology right and so that's kind of the ramp that we're talking about which is okay so would i ever make something with the schematic editor no it would anyone who knows vhdl or verilog well enough to not use a schematic editor would they use it no however to get started in a in a very easy to learn and easy to use way, it's very valid. And underneath the covers, it's still all is VHDL or Verilog.
Starting point is 00:43:49 So each one of these cores, so like the SID, when you drag and drop the SID chip and you connect it to a Wishbone slot, you can just double click on that SID chip and bam, you're in the VHDL. So you can study it, you can expand it, you can copy it. And so the schematic,
Starting point is 00:44:09 so our goal now is to make everything work with the schematic editor so that it's that very easy introduction. And right off the bat, if you can draw, if you can drag and drop blocks and, you know, then you can use an FPGA and make something as long as we've provided the blocks you know that you are interested in using you can very quickly and easily make a working solution um and then when you want to move beyond that there's all these examples each one of these
Starting point is 00:44:41 blocks that you've been using already and are familiar with and comfortable with, it's all done in VHDL. So you can just copy a block. If there's a block that does 90% of what you need, then you just copy. And it's the same with the Arduino. You find a library that does 90% of what you need, then you just copy that library
Starting point is 00:45:01 and you learn enough C++ to implement the remaining 10% that you need. And so we're trying to implement that framework that allows you to have that easy ramp. Okay, so this is kind of like when Mindstorms from Lego came out with what seemed to me a very labVIEW-ish sort of visual display, and that let people use their mouse. Instead of typing in long strings, they could just click and pop and drop. Am I getting the right idea? I think it's more than that, because keep in mind,
Starting point is 00:45:41 it really is, it's the it's design link schematic editor so you can do anything with that that you could do with vhdl or verilog so it's not limiting you know it's and that's another reason why we wouldn't use kicad or or some other better schematic application because they they've already put so much time and energy into allowing you to draw circuits so you know if somebody just wasn't comfortable with vhdl and and they wanted to make a circuit using the entirely using the um schematic editor you know and like i said it always comes back down anyway for me at least to what are the digital building blocks to implement something you know so they could take the schematic version of those digital building blocks and wire them up and it would be indistinguishable from a vhdl solution so i can see how how making it more apparent that what you're doing in the FPGA is making an electronics
Starting point is 00:46:48 board in the schematic. That makes a lot of sense to me, although since my version of schematics indubitably involves a pen and a piece of paper and begging someone to make it real, the schematic capture. The schematic capture is not, I would rather type it. I would rather learn Verilog than learn schematic capture and then learn Verilog. Have you seen it?
Starting point is 00:47:14 I have actually. I have done a fair amount of Verilog. I just wanted to make sure. I'm definitely playing the straight woman. But I have seen Verilog. I have done CPLD programming. Yeah. But it's not, it's not easy.
Starting point is 00:47:26 So one of the reasons... And it gets frustrating because there's things... So VHDL and Verilog, they both started out as a way to simulate circuits. And so then kind of after the fact is when FPGAs and CPLDs and PLAs started coming around, you know, originally they would, like they said, well, we can use these VHDL and Verilog, these HDL languages that are already out there to simulate circuits. We could use them to actually implement, synthesize real circuits on the FPGA or the PLAs in the beginning. And so then what they did is they kind of had to twist the language because it wasn't originally intended for that use. So they had to twist the language to be able to support their hardware. And so what you run into is you have to learn these weird ways,
Starting point is 00:48:49 not, well, I shouldn't say weird, not obvious ways to implement certain things. So, you know, if you want to register... Which leads me to my next question. Right. I think we've really dug a big hole here. So I kind of want to get back to a little bit of getting into this. We've really, gotten uh off track um so what are the basic building blocks that someone who just picked
Starting point is 00:49:15 up a board um and and wants to do it in vhdl because i mean design lab seems neat, but it's all about me. What are the basic building blocks of VHDL and FPGAs that I need to understand to implement my own project? Right. What I would recommend for someone in your shoes who you just want to go straight into VHDL and, you know, what I did I think worked well for me which was learn get books on digital logic and learn all of the basic digital logic building blocks that are available to you and then find a real world solution that you want to tackle something that's easy for me it was I wanted to program a flash chip so I wanted to use the parallel port on my computer to program a flash chip and so you know to tackle that problem I had all these books on digital building blocks I understood all the digital building blocks
Starting point is 00:50:20 and then I sat down and draw drew out like okay how would i design a circuit to do this and so you know you're going to need a uh you know a parallel to serial shift register you're going to need this you're going to need that you're going to need some registers here and then once you have that blueprint then then use VHDL. Figure out how you implement each one of those building blocks in VHDL. And then that's the best way to proceed, I believe. So what digital logic books would you suggest for a software engineer? You know what?
Starting point is 00:50:57 It's been so long. We're talking like eight, nine years ago. So I'm looking at my bookshelf and mostly textbooks are what I have. I've got one by Floyd. It says Digital Fundamentals, 6th Edition, Digital Electronics by Thompson. So really, I think the majority of what I bought were old college-level textbooks. And they're discontinued. So if courses aren't teaching them anymore,
Starting point is 00:51:34 then you could get them for really cheap off of eBay or Amazon. So like here, okay, I got one here. Digital Fundamentals, 6th Edition by Floyd Prentice-Hall. Here's another. Instructors Annotated Edition, Digital Electronics, Principles and Applications, 5th Edition by Tokheim. I found those very useful, very helpful. And that wasn't obvious.
Starting point is 00:52:00 When you're going to learn VHDL, it's not obvious at all how to go about learning VHDL. And so the fundamentals of digital electronics helped me tremendously. And then also knowing that there's a difference between simulation and synthesis. And don't bother learning the simulation in the beginning. Make sure that whatever VHDL book you're looking at and you're learning from make sure that it is geared towards synthesis rather than simulation because that so the difference is uh simulation is useful for after you've designed a circuit or when you've designed something in vhdl you use simulation to uh generate the uh test
Starting point is 00:52:48 bench to test it to provide the input that makes sense uh to see and then you look at the waveforms uh you look at the waveforms uh to make sure that it operates the way that you expect it to operate. But simulation, so the constructs that you use for simulation don't work in synthesis. So, you know, one of the things that tripped me up when I was first learning is I was trying to write code. I was finding all these VHDL books and examples that were geared towards simulation. And so I would code something up that would be a simulation construct and it would work in simulation.
Starting point is 00:53:30 But then as soon as you go to synthesize it, to run on an FPGA, it's throwing up all these error messages and you're throwing your hands up in frustration and going, why isn't this working? Well, it took me quite a while to realize that, Hey, you know, they're not coming out and saying that this is simulation and that this will only work in simulation. So, you have to make sure that you're learning from a book that is geared for synthesis. Why would you ever want it to be simulation and not synthesis? Because VHDL and Verilog are used for DVT.
Starting point is 00:54:06 So if you're designing something, all the test people in your company are running that and testing your design to make sure it's doing what it's supposed to. It's like test-driven development except for hardware. But why would you do that in an FPGA environment? You wouldn't, but that's where the languages came from. Right, exactly. So keep in mind it comes back to verilog and vhdl was designed designed originally to simulate hardware
Starting point is 00:54:30 to simulate circuits and so later down the road when fpgas came into the picture or the precursors the fpgas is when they took a subset of vhdl and Verilog to make so that you could have a textual way to program FPGAs. Do you think there's a movement or any interest in getting beyond that and saying, look, we've had these for a long time and maybe they're not the best thing in the world? And I know you're trying to do that with the schematic designer, but is there a third way? Like a new descriptive language? Something that's clearer
Starting point is 00:55:07 or easier or doesn't have the same baggage? Yeah, there's a lot of attempts out there, like Objective-C. No, no. I think that's what it is.
Starting point is 00:55:23 I might be... Objectiveive C is Apple's thing no yeah I'm sorry it's like oh good I don't pay a lot of attention to it I'm sorry no that's fine there's
Starting point is 00:55:34 you know there's Python Python attempts and there's MyHDL there's a lot of different attempts and there's my HDL. There's a lot of different attempts out there. But what you generally hear from people is once you know VHDL or Verilog, you're pretty happy with it. I mean, most people don't, there's not a lot of support for these things.
Starting point is 00:56:02 Yeah. Okay. You know, because in the industry, it's just everyone that I've talked to, one, would never want to use a schematic editor, and two, would never use any of these other solutions that have come out. But it's very hard to change. Yeah, they feel that VHDL and Verilog is completely adequate. The people that are doing this every day are pretty comfortable with the tools, and they don't have much interest in these other.
Starting point is 00:56:34 So I haven't seen anything that really looks that good out there. Well, that's the challenge and the contours of your challenge in getting hobbyists and enthusiasts interested in this. You have a bunch of professional class of people who are perfectly happy with tools that require years of study. Yeah, yeah. And so, right, and so, you know, what Design Lab is geared for the people, the hobbyists and the DIY, do-it-yourself,
Starting point is 00:57:00 and the people who are trying to get into this, it's geared for them, you know. It's not useful not that useful for me because I'm comfortable with VHDL. And the people who are designing cores and that sort of thing, they're going to use VHDL or Verilog. But where it is useful
Starting point is 00:57:21 and why I'm putting so much time and energy into it is because it's that ramp. I believe that this provides a ramp to get more people to bring FPGAs into more of the mainstream. Well, and I asked for book suggestions, and you gave a couple, and I'll put those links on the show notes. But don't you have a book on your website we have a uh ebook that um yeah the uh hamster or mike fields aka hamster aka hamster wrote and it's a great book and it's targeted for uh the papilio and the logic start um and is it a good place i mean, it must be synthesis and not simulation. Yes, it is a good place to start, but it's the same. So there's tons of really great books, VHDL books out there.
Starting point is 00:58:12 And the one that Mike Fields wrote is excellent. And a lot of people love it. But it's the same problem, which you hit a brick wall with VHDL that can't be overcome until you have years of experience under your belt. And you want to make it as simple as Arduino, but it can build Arduino. So how can it possibly be as simple as there has to be a layer of additional complexity? Are you trying to make something that's actually really complicated so simple anybody can use it and then we'll end up at that star trek episode where nobody knows how to fix anything uh you know logical train of thought right everybody passed through the train yeah i'm not sure i saw that episode but you know it's the i I believe that the Arduino team did something that was pretty incredible, which is they took something that was scary, you know, to a lot of people, which is C++ programming, and they made it every day.
Starting point is 00:59:20 And so I'm making an attempt to do the same thing for FPGAs. Will I be successful? I haven't been successful yet. But I think it's a worthy goal and it's something that I'm continuing to work towards. Will I get there? I hope so. Will it be something that people can make stuff and they can't fix? I think that depends on the ramp.
Starting point is 00:59:46 You know, I think that, you know, the C++ was hard for people to learn. You know, I know I certainly was scared to death of it when I was in my, you know, when I was in my teenage years. But as you get more experience and you're dealing with C++ projects on the client programming level and you get more exposure to it, all of a sudden it's not as scary and you hit a tipping point, like you said.
Starting point is 01:00:22 I believe there could be the same tipping point with VHDL. And you do recommend VHDL over Verilog? I personally do, and there's a lot of some people, it's kind of a religious, it comes down to kind of a religious discussion a lot of times. Because people who love Verilog really love Verilog, and people who love VHDL really love VHDL. They're both good languages and my reason for preferring VHDL is because from the perspective of a beginner, I think it's better for beginners because it's more it's Verilog is so C++ or C-like that you get this
Starting point is 01:01:09 false sense of hey I can I could do things just like I can in C and it really feeds into when you're dealing with FPGAs and you're writing V8 or you're using an HDL you can't think of it as you would a programming language because it's not a programming language. It's a hardware description language. You're describing hardware. You're not programming a processor. Okay. So as far as that goes, yes.
Starting point is 01:01:35 But what about the debug aspect? How do you debug VHDL code? Yeah, so there's two ways um since you're describing hardware you use the same exact method methodology that you would use to debug a circuit board how do i fit my oscilloscope probes in there that's part of what we're doing with design lab is it's difficult to do that in vhdl however if we implement everything schematically, so the top level is schematically. So one of the things, one of the building blocks that we're providing with Design Lab is a logic analyzer. And so one of the things that you can drag out of the tool
Starting point is 01:02:19 band and drop onto your schematic is a fully featured logic analyzer which is uh you know it's comes from my work on the open bench logic sniffer so that's how you would debug that's one way to debug using design lab is that you would connect the probes you know if you've got a uart and you want to see you know is it generating the correct timing and is it what is the data that it's sending over you just connect the the logic analyzer probes to those pins inside the schematic and bam you've got all that information in front of you okay so that's one way is you would use the standard tools and the standard methodology that you would use to debug a circuit board so whenever i design available in the xilinx isc as well they're um
Starting point is 01:03:10 they have a solution they have a solution called chip scope uh which is expensive so it's not free so all of this stuff that i'm doing yes it exists except that it's professional level tools that are have professional level cost what i'm doing is open source. So I'm providing an open source solution for these things. So, yes, Chipscope. Altera has their own. I think it's called TAP something. Yeah, they're all pretty expensive.
Starting point is 01:03:39 But you mentioned the ISE was free with the Papilio to be able to download stuff and to develop, but not the debugging suite. Exactly. So that's a missing piece, really. Oh, that kind of sucks. Right. And so that's also one of the challenges of one of the things that makes FPGAs hard. But also, if you look at the Arduino, there's no debugger.
Starting point is 01:04:03 And there's no need for it because, you know because the people that are doing the high-level libraries are probably using a debugger. But the people using those libraries, those libraries are tested. And just in the same way, what we're doing with Design Lab is the cores that we're providing will be tested. And so there will be less of a need for a debugger is the thinking um but so learning without a debugger is very difficult yeah because i like to step through things and see what's happening and where what's going here and there although you know not all arduino libraries are very well tested. Yeah, that's true. Would you like a list? But, you know, it's, for the beginner at least, you know, once you get to the intermediate level,
Starting point is 01:04:54 yes, you want a debugger. And you're like, how did I ever survive without a debugger? You know, but people do. You know, people manage to do some pretty cool stuff with the Arduino. And I think they'll be able to manage to do some pretty cool stuff with the Arduino, and I think they'll be able to manage to do some pretty cool stuff once we put these tools in their hands, the Design Lab tools with FPGAs. Okay, so back to the question of how do you debug an FPGA.
Starting point is 01:05:19 So like I said, first of all, if you're debugging the hardware, once it's on the FPGA, you use pretty much the same methodology you would to debug a circuit board. So whenever I design a new FPGA board or a new arcade mega wing, you know, when I run into problems, that's what I do is I bust out the logic analyzer, you know, or I bust out, you know, just basically the log. Yeah. You can't, you're really using an Oscope on a FEJ, but there's not really a need because you're not looking really at the physical attributes.
Starting point is 01:05:59 And so to debug, you're like toggling a line that says, I'm in this part or I'm in that part. There's no part really. So you're thinking more of sequential C++. So you're thinking as a programmer right now, so it's not like you're in this section of code. It's more of this. But you could do things like you could bring out a signal to a pin.
Starting point is 01:06:22 Exactly. To say I want to look at this internal i want to look at this internal state and you can look at that logic and that's exactly it so you would maybe look at a register inside the fpga and you could bring it out to um you know a set of pins a set of pins or you could bring it out into the top level of your schematic and connect a logic analyzer to it so yes so so it's all the same things you your schematic and connect a logic analyzer to it. So yes, so all the same things you would do with the circuit board, that's what you're doing with FPGA hardware. Okay, so now there's something that's a little nicer
Starting point is 01:06:55 when you're designing VHDL or a schematic or whatever intended for an FPGA, which is the simulation. So when you're designing it, before you ever synthesize it for the FPGA, really what you should be doing is have it set so you make a test plan. I'm sorry, a test bench that's going to provide the input, the stimulus, that will be as close to the real-world stimulus as you can get it. And then you simulate it, and you'll get a printout of all the waveforms that are generated.
Starting point is 01:07:35 And then you can debug your code, your VHDL code or Verilog code at various points. Before you've even put it in the hardware. Right. Okay. And do you, is the simulation part of ISE free? Yes. Or is that?
Starting point is 01:07:51 That's free, yes. Oh, that's nice. Yes. What kind of pitfalls and traps do most beginners hit? I mean, clearly the sequential versus non-sequential is going to be one that a lot of programmers have a hard time with. Right. Are there other ones that are just really common? Yeah, so I think the whole simulation thing trips up a lot of people.
Starting point is 01:08:14 It certainly tripped up me. And it's easy to tell what's intended for simulation and what's intended for what's not. Because the most telling sign usually with simulation is that it has some kind of a time associated with it. Do this for 49 nanoseconds. That's a dead giveaway that that's not going to work in synthesis. So that kind of stuff, that's a big trip. The other thing that trips you up a lot when you're beginning
Starting point is 01:08:47 is that um fpgas don't have latches natively they have registers instead and so if you do something that uh infers if you write your vhdl like i said so there's weird you have to do things in a very specific way to get exactly what you intended so if you're trying to make a register you have to do a very specific uh couple lines of code to implement that in vhdl and if you get one of those lines just a little bit off you're going to infer a latch instead of a register and so when you do that and you have latches being inferred it's kind of like a low-key warning in the tools that just say oh you inferred a latch and they think they assume that you know what you're doing but latches don't work generally whenever you have a problem with getting... So it'll work in simulation just fine.
Starting point is 01:09:46 But then when you go to run it on your hardware and you're beating your head up against the wall, why is it not working? The number one thing to do is go back at your code, go back on your synthesis report and see if any latches were inferred. And if they were, study that piece of code, fix it so that it's not making a latch, so that it's making a register or whatever else
Starting point is 01:10:08 you intended and then 9 out of 10 times that fixes that problem then what are the other things that trip people up? Just the fundamental what is FPGAs used for and I think people have the misconception I think what really helps out is to say you're designing circuits and that does seem like a really good thing for people to realize um so I I guess well let's see uh you mentioned open source. Your boards are open source as well as your software, right?
Starting point is 01:10:47 Yes. So everything that I do that can be open source is open source because I strongly believe in open source. However, the Xilinx tool chains are not open source and that's outside of my control um because they pretty tightly protect those um like to generate a bit stream only only the vendor has the information of it necessary to be able to do that final step for an fpga and generate the do the placing and routing to generate the the bit file uh so you know we're not completely open source but that's outside of our control everything that i work on and that i release uh and that i touch is is open source and parallax just opened their core their um propeller one do you have any comments about that yeah i think that's really cool um i they run it on a Papilio board?
Starting point is 01:11:46 Yeah, I mean, I was really excited about it. And a lot of people in the Papilio forum were excited about it. And people made attempts pretty quickly. But what we found is that you generally need a larger FPGA, like a Spartan 6 LX 25 to implement the that design so the LX the Popelio Pro uses Spartan 6 LX 9 and as well as the Popelio Duo they use the LX 9 and the chip is just too small to implement all I think it's like eight cores i think the the propeller one is eight cores so people have been saying that maybe if we used fewer cores like maybe half the cores we could get it to fit but then you know is it still useful at that point yeah i mean it was a
Starting point is 01:12:41 neat it's a neat processor wow yeah cool but it but. Yeah, but that's exactly what's so cool about FPGAs is that stuff like... So pretty much every chip that's out there, they're using some kind of a hardware description language to make it. And theoretically, you know, if that trend started to happen more, where companies that are making chips release the source code of those chips, then they would all be able to run on an FPGA, and we'd be limited just by the size.
Starting point is 01:13:19 It does seem likely that people are going to more custom things, just because that seems very likely all over. Well, prices drop on FPGAs, then it becomes more compelling to use them, too. That's always been the problem, is as a hobbyist, it's like, oh, if I want an FPGA, well, I've got to get this chip, I've got to get this development system from Palter or Xilinx and all these things that are very expensive. And now this project is kind of driving things more to being able to be used by anyone.
Starting point is 01:13:48 And that's the cool thing, I think. Yeah, and the cost, one of the Papilio boards is $38. The chips themselves are not that expensive right you know um like the the lx9 is i believe it's like when you get it in bulk it's it's not that far off from some of the the the processors out there so it's like, I want to say anywhere from $6 to $13. So FPGAs aren't necessarily that much more expensive. What drives up the cost? So the variables that drive up the cost are, one, you need to add a chip like the FT-2232 to be able to program it and communicate with it.
Starting point is 01:14:42 Those get expensive. You can't just use the FT-232. You need the dual-channel one that can do JTAG programming. So that adds expense. And then, you know, we have to have it assembled and manufactured, and we're not doing it in the volume. Yeah, we're not doing it in the volume
Starting point is 01:15:04 that some of the bigger companies are. Well, no, once you get good volume on FPGA, you spin an ASIC and... Yeah, yeah. Well, I think we're about out of time. Are there any last thoughts you'd like to leave us with? No, I think that's it. I really appreciate you guys having me on.
Starting point is 01:15:23 It was a great time. Thank you so much for being here. Thanks, Jack. Okay. My guest has been Jack Gassett, founder of Gadget Factory, designer of the Papilio boards, the open source FPGA development boards. Very cool. You can buy the boards and daughter cards on SparkFun,
Starting point is 01:15:39 but also from the Buy button on papilio.cc. A link will be in the show notes. Very big and special thank you goes out this week to listener Punky for not only suggesting we ask Jack to be on the show, but also for writing half my outline. Normally I get cranky when people try to do this, but this time it's all gratitude. Good job, Punky.
Starting point is 01:16:02 As always, thank you also to Christopher White for producing and for co-hosting. And thank you all for listening. If you've got comments, questions, or suggestions, email us show at embedded.fm or hit the contact link on embedded.fm. Final thought for this week. I had a lot of really good ones, but listener John said that we got another Mark Twain quote wrong. It's sad. All of the grumpy, funny things get attributed to Mark Twain, but he didn't actually have a monopoly on being curmudgeonly. So I'm going to do this one properly. William Allen White was a prominent newspaper editor in Emporia, Kansas And here's the whole story of the very and damn quote According to Quote Investigator, one of my new favorite websites
Starting point is 01:16:57 I was in a meeting with several fledgling newspaper men And Mr. White was the sage of Emporia. So the Cubs asked him to give them some advice about newspaper writing. He said, I never give advice, but there's one thing I wish you would do when you sit down to write news stories, and that is this.
Starting point is 01:17:18 Never use the word very. It is the weakest word in the English language. It doesn't mean anything. If you feel the urge of very coming on, just write the word damn in its place. Very. The editor will strike out the word damn and you'll have a good sentence. Okay. Okay.

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.