MacroFab Engineering Podcast #94
Al Williams returns to the podcast for the fourth time! This time to discuss the importance of circuit simulation and what it can teach engineers.
Al Williams returns to the podcast to discuss FPGA documentation and meat balloons.
Stephen brings up alternative uses for assembly layers in PCB design and Parker uses OctoPrint!
Visit our Slack Channel and join the conversation in between episodes!
Parker is an Electrical Engineer with backgrounds in Embedded System Design and Digital Signal Processing. He got his start in 2005 by hacking Nintendo consoles into portable gaming units. The following year he designed and produced an Atari 2600 video mod to allow the Atari to display a crisp, RF fuzz free picture on newer TVs. Over a thousand Atari video mods where produced by Parker from 2006 to 2011 and the mod is still made by other enthusiasts in the Atari community.
In 2006, Parker enrolled at The University of Texas at Austin as a Petroleum Engineer. After realizing electronics was his passion he switched majors in 2007 to Electrical and Computer Engineering. Following his previous background in making the Atari 2600 video mod, Parker decided to take more board layout classes and circuit design classes. Other areas of study include robotics, microcontroller theory and design, FPGA development with VHDL and Verilog, and image and signal processing with DSPs. In 2010, Parker won a Ti sponsored Launchpad programming and design contest that was held by the IEEE CS chapter at the University. Parker graduated with a BS in Electrical and Computer Engineering in the Spring of 2012.
In the Summer of 2012, Parker was hired on as an Electrical Engineer at Dynamic Perception to design and prototype new electronic products. Here, Parker learned about full product development cycles and honed his board layout skills. Seeing the difficulties in managing operations and FCC/CE compliance testing, Parker thought there had to be a better way for small electronic companies to get their product out in customer's hands.
Parker also runs the blog, longhornengineer.com, where he posts his personal projects, technical guides, and appnotes about board layout design and components.
Stephen Kraig began his electronics career by building musical oriented circuits in 2003. Stephen is an avid guitar player and, in his down time, manufactures audio electronics including guitar amplifiers, pedals, and pro audio gear. Stephen graduated with a BS in Electrical Engineering from Texas A&M University.
Special thanks to whixr over at Tymkrs for the intro and outro!
Welcome to the macro fab engineering podcast. I'm your guest al Williams.
And we're your host, Stephen
Craig and Parker Dohmen.
And this is episode 94.
So, if you don't know who al Williams is, go check out episode 57 of the McWrap engineering podcast. Yep. He is a writer for Hackaday does lots of you know, other things, things like ham radio, FPGA development, stuff like that. So I think a good primer would be to listen to that episode, and then come to this episode. So I'm just gonna jump right into it. So Allie wombs is back. And we're gonna be talking about FPGAs. This time, which is actually I think the topic we ended on. On the last call. Well, in
the last time I was on, we kind of discussed like, we really need him on a second time to go through more and the amount of information that's locked in, in this guy's head over here, we could probably have him on like seven times and be talking about interesting things every single time. So this is the FPGA mega podcast. Yep.
Okay. That's a lot to live up to. Yeah. So I guess, you know, it's kind of interesting. One of you guys is is kind of Cognizant on the FPGAs and one of yours on right. Yeah. So so it'll be interesting to see what kind of questions we generate. But, you know, I've kind of been evangelizing FPGAs for a long time, you know, they're relatively and I say, relatively relatively new, given that, like, capacitors and resistors are really old, right? And even microcontrollers are really old. So like, when I was in school, there weren't any FPGAs. And so I kind of picked up a lot of this later in life. But it traditionally, it was a big ticket item, you had to go get special computers, and you had to get software with a very expensive licenses. And that has changed over time. And really not even that recently, but you know, a lot of people looked at them at some point and went, Oh, I'm not going to spend $20,000 to get into this, I'll just not worry about that. And that has really, really changed. But a lot of people still don't realize that
well. And it's also not just the infrastructure you had to purchase to get up to them. But just back then the hardware itself was very pricey, right.
And now it's very affordable to get development boards. So I always explain this to people who haven't had any exposure to it at all. You know, FPGA, by the way, is field programmable gate array. So if you look at the history of it, you know, there was a time when you and I guess you probably still can, where you could go to a fab and say, hey, you've got this IC. And it's almost finished. But let me tell you the last parts of it to wire up, that's really expensive still, because you're basically committing to a big production run, heaven forbid, it doesn't work, you know, that's very expensive. And people still do that. But that's really not what we're talking about. So the field programmable part is you can program it yourself. And the way to think about it, I'm not sure if they still make these or not, but used to be at Radio Shack, for example, you could go get a kit for your kid, or if you were a kid yourself, and it would say like, it was a 60 in one electronics project, right, you'd have all these parts and have little springs on it. And they say, Okay, if you put the wire from this spring to this spring, and that spring to that spring and the spring to that spring, you'll make a burglar alarm. And then if you take all the wires out and put them in this different way, you made a ham radio or whatever the things are. That's kind of what FPGAs are, in a nutshell is it's a bunch of logic gates and a big sea of gates. And sometimes they're all the same. Sometimes there's some that are a little specialized. And we're effectively defining the wires that go between them to make up different things. And what can you make pretty much anything you could make with digital logic? So I guess the point of that is, is is it's pretty flexible. But if you stop and think about it, you think well, is that really how I'm going to do that? Is sit there and define connections between all these different pieces and a big board? answer is really no, you I guess you could do that, theoretically. But there's a lot of more interesting ways that we do that.
Yeah, the, it's a different way of thinking I always tell people is, you know, when you write code in a Microsoft, you're writing code, and it's a sequence of events, whereas an FPGA, you're, you're not writing, you're writing code, but it's more like you're writing the hardware description of what this thing is going to do.
So I spent a lot of years with a former employer trying to convince the customer that that is not code. And it isn't, I tell you what the answer is, and we'll talk more about this later. But it's really a requirements language. So you're really, what you're going to do is you're going to use a language that looks a lot like a programming language to describe what you want, then the tools are going to go look at that and go, ah, you know, that's a seven segment decoder, or that's a counter, or that's a bunch of flip flops, or that's the special function block I have over here that does magic things. And then I'll infer those things and I'll make up all the connections for it. So it's not code in the sense that If you say, well, here's a statement and that statement executes, and then this statement executes, and then the next one execute. It's not like that at all. You're basically describing requirements. And that requires a very different mindset, which I think what you're getting to is a lot of common mistakes. You see, when people start out, as they say, Oh, I'm writing code, I'll put a loop in there while there's no loop, because it's not executing
well, and you're physically defining internal connections, right? At the end of the day, I mean, it interprets them into connections, right?
You don't say, you know, what? Logic element block? B goes to C, you don't say that way? Because technically, you could. I'm kind of mad man would do that.
Well, speaking of madman. There's this tremendous video on YouTube, I'll have to dig up a link and you can put it in the comments or whatever. But where this guy uses the Xilinx FPGA editor, and he does that he's like, Oh, you look at the design here. I've messed this up. So I'm gonna move this wire from here to here. And he's doing it live basically, on the on the FPGA. I, you know, I'm a pretty stout guy, and I'm not doing that. But it was very impressive to watch.
Did he do that? Just to get around compiling it again? Well, compiling the, the code again.
Maybe or, or maybe he was just trying to show us what a tough macho hacker he was, I don't know. That was a number of years back to so it could be we talked about this a little bit before the podcast, it could be the, you know, on his 386 computer, which was modern at the time, and, um, I don't remember what it was, but whatever, that it was some 12 hour compile cycle. So maybe that did make sense for him to do that. These days? Wow, it's really hard for me to think of why you would do that other than just, you know, why did? There's a lot of things you do that you couldn't explain to somebody?
Yeah, he just could, yeah, it could be it takes a couple hours. Because I've, I've done projects that take, you know, 15 minutes, and they're not super complicated stuff. So if you do something that's, you know, like defining a CPU, that custom one off with some peripherals and stuff, and it takes couple hours, and like, oh, I needed to change that one little bit, and you actually knew how it compiled it out, then.
That's still it's pretty stout. So I'll have to find that video. But it's, it's pretty bad. So anyway, I think the point is, though, you are defining those hardware connections. And one of the things that I always found interesting, when I first started picking this up, I'm like, Oh, I don't care about any of that hardware language. You know, that's, that's stupid. I'm just, I'm a schematic guy, I'll just draw my schematics. And then you start trying to do something like a microprocessor. And you realize, Gee, I don't want 88 pages of schematics, you know, it's too hard to keep track of, and were you
drawn those date level? Or is it like logic blocks, where you had a predefined ail you
you can do both of most of the vendors will have some way to do that. And you can draw a schematic, you can also make a hierarchy of schematics. So you could say, well, I'm going to define my own Aru, but then I'm going to use it in different places, they'll have blocks to, but I don't recommend that at all. I'm gonna give you the example of why I don't recommend that look at say, a seven segment decoder, you got a seven segment display, you're going to, you know, get a binary number four bit number and you're gonna say, well, that's zeros, I got to light up these segments. This is a to light up these segments, any of us could go sit down and figure out how to do that with a bunch of an gates and OR gates and inverters. And it would probably take you 20 minutes. And then after you made two or three mistakes, it probably be an hour and a half to get it all working, right. Well, using a hardware definition language, and we'll talk about that later. But the language is we're talking about, you know, I would do basically like a switch statement and see, I'd say, Okay, here's a binary number. If it's zero, do this output, if it's one do this output, if it's, anybody could look at that and go Oh, that's right, or oh, wait, you you know, this is the wrong segment, you get the wrong one up dummy, you know, and, and I'll compile that. And guess what, I'll get the same code either way, more or less, the same configuration for the FPGA. So, to me, that illustrates how quickly you could do something that would be really painful to do in schematic, it's not hard, but then imagine doing like I've done some 32 bit CPUs, you know, boy schematics for that. I remember, I used to work on the 68,000 stuff from Motorola years back when that was current, and that was pre having everything on the computers. And we had these huge tables with stacks and stacks of papers for the schematics on them. I'm just not able to do that myself. I'd rather just describe it and eight, eight or 10 pages of quote, quote unquote, yeah. So
they actually were when I was a kid looking at like a newspaper clipping or something from from Intel. And they had a picture of a ginormous room that they had the, you know, I think it was like the schematic for one of the weather, probably the Pentium at the time. And it was just like, that was the entire Pentium schematic printed out. And they were, they had like 200 engineers sprawled over it, like looking at it and making sure everything was right.
We used to crawl on the table. Yeah, you know, we'd get up on the table and go find something because the table was that large that you couldn't just bend over it and see to the middle. So you'd actually get up on the table and crawl around. Wow. So you know, that's the kind of thing you do. So you really have two primary choices when you Well, there's a lot of different choices you make but, but really, most of the world's using Verilog, which is letter very C like or VHDL, which is very ADA like, and, you know, there are other things other languages you can use. Those are the ones that are really marketable. So if you ever think you're going to get somebody to pay you for it, you want to know one of those two, there are some things like spinal HDL, which I want to say is Python based, but I won't swear to that. There are actually I think, a couple of Python based ones. And things like that those don't have a lot of commercial acceptance. I mean, if you're just doing your own thing, and you like Python, and that's the way you want to go, great. And a lot of them look like they have great features. But you know, it's kind of like, well, I learned C or I can learn some obscure language nobody's using, well, if it's just for you, who cares. But if you really want to market or publish, you probably want to go with one of those two, my experience has been like the aerospace business tends to use VHDL. And a lot of the academics use VHDL. I find most of the people who are doing this in a garage or something, they're gonna use Verilog. Because they probably know C, and it's kind of familiar. And yeah, the syntax is close. It's similar. Yeah. And there's been a lot of work lately on taking C language and other languages and compiling them to FPGA. Yeah, I
was wondering how Python would work in that, I guess I'm gonna have to look it up. Because Python doesn't really lend itself to doing bitwise style functions, which is kind of what you do on a FPGA.
Yeah. And don't get me wrong. I mean, I think it's libraries that use a Python style maybe written in Python. Yeah, I'm sure. And again, I'm not an expert on those but, but there's several out there that have gained some traction and some popularity. I think the the real interesting thing about that, though, is if you look at the languages like Verilog, that are COI, because even there's other C like they're not C. And if you look at the things that compile C to an FPGA, they are very limited, you know, you'll say, okay, I can only do certain things. And again, you're really kind of describing what you want. And it's inferring, it'll look and say, Oh, that's a loop of 10,000. So I will go and break this up, I can do 50 at a time or something. And for some styles of how people use FPGAs, that's actually a pretty good deal. So it's kind of interesting, the FPGA market, if you're looking at it from outside, you kind of think, oh, it's FPGA. So it's kind of like electrical engineering, right? What do electrical engineers do? Well, that depends. Some of them do power stations and stuff. That's not me. Some of us do PC boards, which is you guys, some of us do FPGA, some and it's really hard to take somebody that knows they know how to design a substation and say here design this ECM logic circuit, they probably aren't gonna remember how to do that, if they ever knew to begin with and vice versa, I'm not going to go to design a substation. So if you look, there's FPGA markets actually fragmented like that, too. So there's people like me, who will build CPUs for basically research actually have to, well, I'd have a patent on some CPU features that are for a particular type of CPU and all that was developed on on FPGA, you have people who are just replacing logic for some reason, and we'll talk about that. You've got people who actually use them more or less as boutique CPUs. So I'll say, okay, my vendor is going to give me an ARM core, or maybe the arms built into the fabric like a Xilinx Zane, for example. And but I need 1832 bit PWM channels, and I need a D to A converter with these characteristics. So I can't buy all that off the shelf. So I'll just go get these modules and put them in there. And I'm basically just doing a TinkerToy approach, right, and this module of that module to that module, push the button. And I've got a microprocessor that meets my specifications. How does it work? I don't know, you know, I just picked up a bunch of modules. There's a couple of things, a lot of the vendors have pretty notable infrastructure for that they'd like to everybody wants to be the App Store, right, everybody wants to be the Apple App Store to say, oh, you know, I need a CPU, I need a PWM generator, I need the Manchester encoding, you know, block or whatever. I don't know that anybody's really succeeded at that to generating a marketplace, but that's the, that's everybody's pie in the sky. There's also some open source stuff like open cores.org, where you can go and if you go browse that that really gives you a good idea what FPGAs can do, because there'll be CPU cores, and CORDIC math libraries, and communications stuff, you know, different types of modems, and, you know, I say Manchester by phase, whatever you want all out there that you can get open source and kind of throw together like that. And then some people are using them for parallel processing, and that's probably where the C to FPGA part gets really interesting. So it's Not that I couldn't do it on a microprocessor. But it's just like you were talking about earlier how the things don't execute at one time. That's what really makes it different than using a microcontroller. And I always find a lot of the projects you see on the web, especially if you're just starting out and you're looking for some easy projects, they don't show a really good reason to use the FPGA. So oh, I built a traffic light with an FPGA. Okay, that's educational, if that's your first project, excellent. But if somebody really said, Let's build an FPGA or build a traffic light, your first response shouldn't be great. I'll go get an FPGA. Yeah, I can do that with an Arduino. And that's fine. And if you can do it with an Arduino that's cheaper, it's better, it's faster. The advantage you get like we're talking about PWM. That's a great example. Because if you and we did a, we did a piece on Hackaday, where we did a PWM generator on a cheap FPGA. So if I generate one PWM signal on a microcontroller, that's easy. You know, assume I don't have hardware on the, on the processor to do it. If I generate two, that's probably easy three, but at some point, I'm going to run out of time to keep updating them. And yeah, I can use interrupts but I'm still gonna run out of time. At some point, maybe it's 50. Maybe it's 100. I don't know. But at some point, I'm going to run out on an FPGA. As long as I can keep adding stuff. As long as I'm making timing, they'll all run and one will run fast and 50 will run fast and 100 will run fast. Because it's all parallel hardware. It's not some brain going, step one, step two, step three, step four. Oh, whoops, I'm out of time. It's just built in hardware.
I think actually, Steven ran into that issue with his 80 Mega 328. On his synthesizer.
That's right. Yeah. So so it actually came down to being able to calculate exponential functions very quickly. So the 328 needed to do sequential processing. And I reached the limit of what a 16 megahertz little processor can do, which isn't actually that hard to get. But I really wasn't asking much for it, it was reading an add doing one or two calculations to it and spitting that out D to A. And that wasn't fast enough, in some situations.
Well, and a lot of people do use FPGAs for DSP type work for that reason, because it's very easy to get a fixed deadline. And if you think about it, you know, I always used to use the example of your monitoring some supercritical process nuclear reactor, let's say, I don't know if I say nuclear reactor on podcast is that the NSA come after? You know, what was the movie bomb bomb bomb, right? Don't Don't say bomb. But if I were monitoring, say 50 things, well, on the microcontroller, maybe I can be smart and monitor eight of them at a time, or, Oh, I'll get a 32 bit processor, I'll do 32 of them at a time. But I still can't do probably all 50 in one gulp. So there's some point of time where I'm looking at one group of them, maybe it's just one at a time, maybe it's 32 of them at a time. And then there's some finite amount of time before I'm looking at the next set. And if I'm doing 300 of them, then there's going to be more finite pieces of time, before I circle back around and get to that first one again, on the FPGA, as long as I've got IO pins to support it, and enough fabric in there to support it. If I monitor 100 things, and it takes me five minutes, you know, five nanoseconds or five picoseconds or whatever the short amount of time to propagate through the logic. They're all going to get that time.
Yeah, cuz you basically would at what would be synthesized would be like a ginormous, OR gates, right? That's got 100 inputs. Yeah, instead of what would be basically on a microcontroller, you'd have the tri states going into a mux, that would probably go into a, think if you were doing like port, you'd be doing like Port detection, changing. So you'd have to hit a hardware flag, some deep register, that the CPU doesn't always look at. And then whenever it's going through its, you know, normal thing, it would eventually go, oh, that flag was set. Let me go figure out what pin it was.
All of that takes more and more
to go look. I mean, if you interrupt on a pin change, like you suggest, which is great idea. You if you want to identify it, you still got to go Yeah, so go check everything. And with the FPGA, it's just there, which is same, I could make the same argument of saying, Well, if I went and got a bunch of chips, and did a custom circuit for it, because guess what, that's what you're doing is just doing it on a micro scale inside the chip instead of?
Yeah, no. Well, and one of the things that I've noticed with FPGAs that I think is super cool, is the fact that you sort of, if you take the mindset that it's one item, you kind of get it wrong. If you look at it, as in it is a grouping of whatever you want it to be, I mean, you can literally cut the chip into however many chunks you need and based off of whatever your pin count is. And it can be doing two entirely independent things that have no correlation to each other. Like in a microcontroller. If you program to separate things. They're still connected by whatever program register that it has to run through and it has to think about them but with an FPGA you can you can slice it however many ways you want. You can
100 Arduinos on FPGA you probably could Yeah, that's gonna be the next big Hackaday. There you go.
How many Arduinos? Can you synthesize? Yeah.
Get on the head of a pin? Yeah. Well, you know, it's interesting you say that too, because a lot of the Barger FPGAs, and this pretty advanced technique, but you can even reconfigure parts of them on the fly. So you can say, okay, you know, I'm in this mode, I'm during the day, I'm collecting data, let's say. So I've got all this stuff that I use to collect data. And then at night, I'm going to reconfigure part of that, go do communications, because I'm going to squirt it up to a satellite or whatever I'm doing. That's a pretty advanced technique, but it's possible to do. And that's actually one of my research interests that I've kind of stalled on at the moment. But I have an architecture for a CPU that makes it very simple to do this. I wrote about it and Dr. Dobbs years ago, you can go look it up. But I want my goal would be to have a C compiler that says, Okay, I'm looking at this program that Parker wrote, and I think I can really optimize the heck out of it. If I had three floating point units for integer units, and two memory access units that did auto increment. So I'll pull those out of my library, and I'll build the CPU that I'll run this code on, then I'll generate the code to run on the CPU. And I'll get these amazing results compared to just running it on some generic processor. Again, that's probably not project number one if you're getting into FPGAs. But it's it's an interesting idea a little advanced, it's a little advanced. So you know, I think that's a thing though, you can you can do as much or as little and I don't want to dissuade anybody from saying, Oh, I'm gonna go do a traffic light on FPGA just so I can learn how to do it. Sure. Of course, we all build stuff. That's silly. But again, if you were doing it commercially, that's not your first choice. I you know, and it's interesting to me, though, that so much of what we do see on the web is stuff is like, really, why did you do that on an FPGA? That doesn't make any sense. And there's only so many first step project, you know, there's only so many Arduino led blinkers that you need on the web before you say, Okay, people know how to do that. Let's go to step two. Step three, yeah.
Like, a couple pages I've done on FPGA, I do a lot of like, taking video data in at one format, and then reformatting in some, some some other way, like VGA, or I'm starting to work on HDMI stuff, which is its own entirely different beast, because it's all serial data, like I square C streams and stuff. But it's FPGAs are really good at that, because you basically you're taking one bit in times 28, if you're 28 bit wide bus, and you're doing exactly the same thing to each bit. So
yeah, as that parallel processing, we talked about, you know, on Hackaday. And, gosh, somebody is gonna be mad at me for not remembering this. But there's a guy we post about a lot, and his, his name has hamster in it, I can't remember the rest of it. It's not just hamster. But he's done a lot of interesting stuff with HDMI on FPGA. So if you go look on our site, he's done quite a bit of
math to look that up. Because that's, it's kind of like one of those like, VGA is actually kind of easy, because you can just, you know, for like eight bit or 16 bit, you just have a, you know, resistor da ladder, because that's good enough for the speed you're doing. And then you just have a H sync V sync. And that's it's pretty easy. Like, you can just look at timing diagram and go, that's how that thing works. With HDMI, you look at a timing diagram of that. And it's just like, just explode your brain. And
I'll just apologize profusely for not remembering his name if he hears this. But, you know, it's interesting, you mentioned that I was just looking at that, if you guys see missed, M is t, which is an FPGA board that's made to emulate old computers, I say emulate that's not really the right word. But you know, basically, so you can say, Well, I'm gonna make a Commodore 64. Or they got a lot of arcade games that you can put on there. And they're not software running on them. You know, they're literally hardware implementations. It's,
it's a hardware description of the game. Yeah. And
they just recently updated that or came out with a second version of the called Mr. And it's a it's essentially a cyclone board, which is a brand Altiris FPGA development board with some daughter boards on it. But one of the things that board has over the original one is that it will take the output, which normally would have been VGA only and we'll scale it out to HDMI, because nobody can you know, like find these weird VGA ancient screen CRTs Yeah. Well, that was 38 Hertz. Resolution, but Oh, you
mean actually, an arcade monitor 1515 Whatever, that
yeah, whatever they were. And so, you know, that turned out to be an impediment for a lot of people's, they couldn't get the monitors to drive it. So that's the kind of thing you can do with an FPGA and it's a pretty good use of it. I think and those are fairly inexpensive, again, the costs on all this stuff has come way down
way down, it's like, we were looking at some CPLDs, which is just like a smaller, it's not really a smaller version, FPGA, but that for conceptually it is, it's actually it is. And you can get them for, like, I think a couple of like, for under Altera, like they're like, you know, they're running like, four or five bucks now.
So one of the nice things about and the markets really fragmented on this over the last few years, but it used to be one of the big differentiators between an FPGA and CPLD was generally, the CPLDs would remember their configuration. And so if you're not familiar with that, you know, these chips start out, and they basically are nothing, they're blank slate. So every time you start up, something's got to happen to make that have your configuration in it, the wires, jumpered, right, the wires, exactly the wires going between the springs on the to make the burglar alarm, or whatever you're making the CPLDs, a lot of them traditionally had some sort of flash memory involved with them. And it's not flash memory in the sense of, Well, here's some memory, I'm gonna copy it over, it was just literally flash cells that said, a one here means this wire is made from here to here, or whatever it is. The FPGAs generally had a ram based technology. And so you would typically have some other device, either a serial double EEPROM, or a CPU that would say, Okay, I'm going to power that guy up, here's a bit stream descending, he's going to load it into his RAM. And that means you couldn't start up real fast. But a lot of that technology has kind of blurred now. So there are FPGAs that just stay configured with flash or other technologies. And so that's not the best differentiator anymore. But you're right, those are very inexpensive. And for small logic circuits, you know, the kind of things you used to use, like a power a gal for Yep, you would probably use a CPL
in going on that flash memory, that's actually the hardest thing with actually maintaining a because I have a couple products that I've developed that use FPGAs. And the hardest thing is actually maintaining a piece of the flash chip, that's still, you know, in stock somewhere, yeah, because they, it seems that they cycle a lot in terms of, you know, just in, in if they are in stock, and then they'll just change the part number randomly. And so you have to go find which one actually will work with that Altera, you know, FPGA, because I'll tell you, it's got one that's like, this is the one to use, I can't remember the part numbers like EPC for some, like something like that, and but they weren't like 15 bucks with a flash memory in your, your FPGAs $11. And so there's a lot of, like, third party guys that will make, you know, Flash meme, or they're basically EEPROMs that are, you know, the, that are equivalent, but then they will build, they're probably, you know, do like 20,000, or how much they're gonna do. And then you got to go to the next guy that's got, you know, similar stuff. Yeah, that's the hardest, that's the hardest thing is in maintaining? Yeah,
well, you know, you're talking about Altera. And I think that's an interesting thing, too. There's a bunch of different companies that make FPGAs, they're all subtly different. And they all have their claim to fame for one reason or another. I actually learned on Altera, it's kind of interesting, I tell you, I was kind of self taught with that. But it's such a different way of thinking that I just couldn't get that last hump. And I finally took one of the distributors, I think it was arrow maybe had a altaira class here in Houston. And I said, I'm going to take that class and you know, 90% of what was in that class. I was like, Yeah, I know that. I know that. I really just needed to talk to that guy for like five minutes and say, I got two questions. If you could answer those questions for me, I'm out of here. But you couldn't do that. So I sat in class all day. And I was like, Oh, I see. I got it. So that was what I actually learned on but I usually most of my commercial stuff now is done on Xilinx.
So crushing it, what were this one or two questions? Remember?
Well, that's a good I don't know if I remember. I was actually thinking that when I said that. I know, one of them was I couldn't figure out how things got configured. Okay, just from reading up on it. I remember this has been a number of years back. So there's a lot better stuff on the web now. And everything, but I couldn't quite figure that out. And, gosh, I cannot remember what the other one was. I think it was something to do with the clocking and I want to talk about that later, too. But I think the clocking I had some confusion about how clocking was routing. And once it was explained to me it's one of the things like how do you learn to tie your shoes now? I can't really remember. Yeah, what I didn't know but
riding a bike. You don't know exactly how you remember how you rode your bike? Yeah, it's not
like you can say Gee, I don't remember how to balance that I figured it out. But but it was two questions like that. They weren't real hard questions, but I just had a roadblock against it. So that was that was really helpful to me, so Xilinx, I do a lot With that, commercially back in my old job that I had for many years, we did a lot of microsemi because we had radiation hardened stuff in space. So that's important, you know, because you don't want stuff just bit flipping all over the place. And of course, that's really expensive. Then you start talking big dollars for those devices. But one of the things we've been talking about on Hackaday a lot in the last couple of years is lattice and lattice was really early player in that space, but they they don't have the name recognition that like Xilinx and Altera has. But two things really have drawn us into the lattice camp a lot. They've got this ice stick, which is basically one up there us Yeah, little USB key, you plug it in, it's an FPGA development board. It's not super powerful, but it's, you know, for something to do your traffic light first project with or, or even something more powerful than that. It's great. And I don't remember the cost on them. I'm sure your buddies at Mouser would be glad to tell us but they're, they're well under 20. But there's a subtle plug. Yeah, exactly. Yeah, I figured if we don't get T shirts from Mouser, Xilinx Altera and lattice out of this, we're doing something wrong. But you know, they're what, maybe 20 bucks, maybe 10 bucks. Yeah, somewhere in that range there not hundreds of dollars.
Actually, I'm going to do another plug is I got one for free from the Digi key, like, Twitter wish thing a couple
years back. So yeah, I got to find out about the Twitter wish thing I don't know anything about Yeah, it's like every
year around Christmas time, you can like tweet them at and what
you want, like Montserrado, you maybe you think
now you gotta find the digit key part number might be mas Irati, dash and D.
Time for weeks, when
you make a joke about the dash nd suffix on digit key, I know you're spending too much time ordering parts. That's funny. So it's really inexpensive. But here's what's really cool. And we did a whole series on this on Hackaday with the videos and everything, showing how to build it up and build something useful out of it. But they have their own tools. And it used to be the tools were very expensive to license. Now most of the vendors give them away for free, and there are varying quality. Now granted, if you want to go to Mentor Graphics and plop down your 20,000 a year or whatever those licenses cost, I'm sure it'll be better. I've used some of those tools. They're great, but I'm not, you know, personally, I'm not paying $20,000 to build my traffic light.
Yeah, I think the Altera one, the big thing you get when you pay for the license is you get multi core processing, which just doesn't matter when you're building your traffic light. But when you're doing something ginormous. Yeah, having 12.
And that's from the vendor. But there's also all sorts of other people that do tools like mentor grab, oh, I didn't know that. Yeah. And and they support the big families, but they're big. It's just like PC board way out, right? You can go by cadence or you can go get a cheap package. Is cadence better? Absolutely. Is it cheap? No. Right. So. But it was funny in the articles that we did for Hackaday on the ice stick, I've set out to install their software under Linux, and it was just painful. And if you go back and look at that article, I mean, I actually outline and so if you don't want to read about my troubles installing the software, just skip ahead. But you know, TLDR it was tough to it was tough to get through. But I went through like three or four strikes, or it was like, Okay, I want your network card, but I assume it's eth 00 I don't have an eth zero. Okay, I want the you know, it was just one comedy after the other. And finally, after three or four strikes, I just said you know what, too bad. And there's actually a very impressive open source tool chain for that family of FPGAs. It only does verilog. So if you want the HDL that's not interesting to you, in if you go grab it, it's called icestorm. And you go grab that it installs just like everything else installs, that's open source under Linux, and it works great. apt get installed. Yay, Storm, probably I don't know if they've got it on a repo. But I mean, you know, it's at worse dot mate, you know exactly why it's config or whatever, you know. So that took 10 minutes. And that was up and running. And I got that working. And that's what we used for that, that series. So if you really want to get started, you know, 1015 bucks for one of those free software, install it, you're off to the races. And then we were talking about this a little bit before we started recording. But then the question is, do you really need even need to spend that? Yeah, and you know, I know you're not a big fan of the simulation stuff. Well, I
just haven't. My only experience for the simulation stuff is back in college. And it was like pulling teeth. It was just easier just like write the Verilog and hit Compile and will compile and quotes and you'll see LEDs blink your your traffic light going. But yeah, I think I think the big thing with simulation, you'll probably explain some more about it but is like a lot of times I'll have the FPGA and then some other thing attached to it and How'd they get that other thing that's attached to it into the simulation is kind of like can frequently
be difficult? Yes, it depends on what you're doing. But yeah. So it's interesting. I think it's always like, you know, you can simulate, you can go visit Paris on Google Earth, you know, you can look at it, and you can see all this stuff. But if you've ever been to Paris, you realize, gee, that really wasn't very good experience. For some reason. It's a lot different somehow, going for real. So there's some cachet, I think, to saying, No, I got the $20. Board, and I've watched the LEDs blink. I don't know why. You know, it shouldn't be any reason why. I guess it's like dating, right? It ought to be just as good simulated, but it isn't.
Oh, that could be Oh, no, no, no, this is not gonna be the next thing is like, are we gonna have to cut? No, no, no, no. You take that thing. You're attached to the FPGA? And you just attach it to your, the simulation? Yeah. So the simulation outputs something. And then you plug that thing in.
And you know, there are most of the vendors have what they call integrated Logic analyzers, or some other nomenclature, you know, some other name, they end up where you basically can build a logic analyzer on some memory and stuff, yeah, heats up a little bit of the FPGA, and then you can sit and debug real time like that. But historically, the the real development cycle is you'll go write your code in Verilog, or VHDL. And you'll simulate it first. And, you know, there are a lot of reasons for that, like, remember, I was talking about way back, you'd go to a semiconductor maker and say, Hey, go finish this chip up for me? Well, you probably should be really sure it works before you commit to buy in 10,000 of those that very expensive prices, and then get them back and oh, well, I forgot this, that's a bad answer. That's the kind of thing makes you have to get your resume together. So you know, normally, you will simulate and that simulations pretty coarse, it will treat the language like a programming language. And it will, it will do things to simulate the parallelism, but it's really just simulating the the effect, you know, this goes to here. Sure it does. And that goes to there. Sure it does. At that point, when I'm satisfied, it's all working, I'm going to go do and it depends on the vendor, what they call it, but essentially, I'm going to compile it, there's a couple of different euphemisms for that translate. And then the place and route step will actually say, Okay, I've, I've generated this from your high level description of a seven segment decoder, down to logic elements, then on the logic elements, I'm going to do a place and I'm going to do a map, rather, I'm going to say, Okay, I know that on the FPGA, I have these resources. So I can do what you want by using these resources. And then I'm gonna place and route I'm gonna say, Okay, I'm gonna pick this particular resource, I'm gonna run this wire from here to here. And I'm gonna run this one from here to here. At that point, I can simulate again, and the vendors have really good simulation libraries for that. It takes longer to do the simulation, but it's timing accurate. So if you say, well, that signal is going to take 18 Pika seconds to go from here to here, at some temperature, that'll be on average accurate for that part, probably 25. See, exactly, and I think you'll monitor, you can change the temperature, okay, you can say I want to operate at 100 C, or whatever you're going to do. So that's more sophisticated thing, I generally don't do that step unless I'm really trying to tweak something and analyze something and look at the edge cases and the margins. But the first simulation is really handy, you know, just to see that I got some I didn't get united, you're gonna do anything complicated. You're not getting it right. The first time, I'm good, but I'm not that good. And that's kind of the normal workflow, if you will, from there, you know, we were talking about the double EEPROM memories, a lot of times the FPGAs can just take the load right from the computer using some sort of dongle today, they tag a tag that always been but usually it's a J tag now. And that same J tag, and then program, the configuration device, when you're ready now for debugging usually won't bother with that, you'll just blow it into the FPGA, you know, do whatever you want to do. And then blow it again, because you're going to change it again.
And usually, a lot of times, we're talking about that the logic analyzer that's built in that you can sometimes put into it with the built in tools that communicates over that JTAG is exactly yeah,
and you get you know, so you get all the nice PC tools, and you can set your triggers. And you know, when this happens, and the stock price goes to 50, the trigger the so, you know, it's one thing too, we were talking about the accuracy of the simulation going like 18 Pika seconds and things like that. That's one of the things that was actually good for me to have come in before all this, I think is I've got a pretty good education and just classic digital design. And one of the things that you see is very crucial to doing successful FPGA designs is doing synchronous logic. And so there'll be a clock and there'll be specialized resources on the FPGA just to distribute the clock. And that maybe sounds funny but FPGAs now some of the bigger ones, especially have so much real estate on them, that the propagation time of a very fast signal going from the top left to the bottom right of the die is significant enough that it'll mess up circuitry trying to talk to each other across the diagonal. So there's all these special resources for getting the clock everywhere. And what you'll do is because, you know, if you didn't have that, what you'd have to do is say, okay, my alarm system for the nuclear reactor, you know, here's all the signals that can come in, and they take 18 Pika seconds, but my inhibit signal comes in 22 picoseconds. So, Oh, what am I going to do about that? I got this couple of pick a second difference. And how do I do that? Flip the design with a normal synchronous logic is going to use a flip flop for that. Yeah. And that flip flop is going to be clocked and it's going to be clocked slower than the 20 to pick a second. So everything gets to the flip flop, and then you go, Okay, is everybody ready? Yep, boom, and you're going to go to the next one, and then every step cycle, you go look at it again. And that way, well, if one of them didn't really take 18, it took 17.5, and it took 18.2, it doesn't matter as long as you're going out further. So that's why it's important that the tools can look at that and say, Okay, I'm going to operate at this temperature. Here's my worst case time. And I'm going to make sure and it'll warn you about that. It'll say, Hey, buddy, your clocks too fast. That's called not making timing. And if you do anything significant, you're going to run into that. And then they're, that's actually one of the harder things to do is they okay, I'm not making timing, I got to go figure out how to break things up so that I make timing again. So it's actually really cool kind of puzzle. If you like solving puzzles. It's kind of interesting.
So I'm actually curious about power draw from FPGAs. Is there a way to calculate based off of your configuration? How much juice it's going to yank?
Yes, most of the tools will do that now. And it's actually a really good question. Because historically, FPGAs drew lots of power, right? Because they're basically static RAM devices. Because some of that technology has changed. There are now FPGAs that are pretty low power. And depending on what your definition of low power is, you may or may not agree, but relatively speaking, low power. And again, that's a lot of why you would pick one particular family of FPGAs over another is, do I really want speed? Do I really want power? Do I really want lots and lots of logic cells, a lot of the FPGAs now will differentiate themselves on special functions. So like we talked about digital signal processing, a lot of FPGAs have special function blocks that do like multiply add accumulator, whatever you
Oh, they'll have like, they'll have a DMA section in there. Yeah, barrel shifting
barrel. Yeah, that. So there's all sorts of specialized things that they might put on the FPGA that might make you go, Oh, that would be great for my application, I need that. And in fact, because so many people marry these with a CPU anyway. And a lot of people will get a CPU core and eat up some of their FPGA with it, that's actually been a real trend lately is to just get them with an arm or whatever processor built right on the die. So it's not that the FPGA has an arm in it, there's an arm, you know, and then there's some FPGA fabric. Again, best example of that is that Xilinx Zynq, which was really cool, a lot of cost. And the tools for that are excellent, because you do that code development, where you essentially, it's almost what I said, except you're the compiler, right? When I said you could compile and say I want the CPU. It's not quite that sophisticated. But you can say, Okay, I want a chip that's got, you know, two D Day and a barrel shifter, and all these other things is IO devices. And they're hooked up to the different arm buses. And then now I'm going to go do my code development. And that's all in one IDE, and it's all integrated. And the debugging is all integrated, which helps with your problem, too, is how do I get these external devices into simulation? So I guess the other thing I was going to mention for simulation, and if you go look on our package, a series that we talked about this too, is so you know, even though it is better to date in person, instead of simulating, it's better to go to Paris in person rather than simulate. You can in fact, do everything through simulation. So if you go download the Xilinx tools, or the Altera tools, or icestorm, or whatever, there are ways to do at least that first level, if not the second level of simulation, and you don't have to have any hardware whatsoever. Like you point out, maybe that's not going to let me simulate my external device without writing a lot of code. So it might not be convenient, but certainly for doing the traffic light, I could do that with nothing except simulation.
And my in my case, you can actually just look at what the FPGA is outputting and go, Oh, okay, that's what my external devices expecting.
Right. And the way you do that, normally, the normal workflow for that is you actually write a test bench, and a lot of those tests and a test bench is just a fancy name for a piece of the same kind of code you're writing that gives it test cases and looks at the outcome. input. So the simplest ones will just display the output. But you can also say, Okay, if I put a one in here, I expect a five out here, or whatever the cases are. And you can automatically go through and go, yeah, that passed that pass that bad a wait that didn't pass that field. And that's a pretty common technique. But if you don't even want to install any software, and that was one of the things we do on the Hackaday series is we use a websites called EDA playground calm. And I really like them, they've got a lot of the EDA electronic design automation. They've got a lot of these FPGA tools for both Verilog system Verilog and VHDL. All sitting there in a web browser. And so no install doesn't matter. You know, go get a Chromebook. And you can go log on to this website, write your Verilog, write your VHDL, write your test bench, do the simulation, look at the output of the simulation. And you can use some pretty cool tools that would not normally be available to you unless you were spending money. And they also have a lot of the free tools on there, too. Now that's no good for doing something specific, right. So if you want to go target Xilinx later, you can still take the code out of it, obviously, but it's not going to help you pass that first simulation point yet. But that's really cool, especially if you're working with students, or if you just want to play around with it on a weekend, instead of saying, Well, let me go kill for hours trying to install the the lattice tools like I did, you can just go over to that website. and off you go. I don't think you have to log on unless you want to save stuff. I think if you want to save it, you do have to give them a log in. But you know, it's one of those things unless you're too paranoid to make a free logon, which some people copy and paste into a local text file. Yeah, and you can do that too. But you know, you can Yeah, again, and there's some advantage to that. But you don't have to I don't think so. Cool. So that's kind of I don't know, it's kind of the brain dump on getting started with FPGA. So yeah.
So I think we can go even further Getting started is actually doing the hardware design. So I first started doing FPGA hardware design, like I tried reading all the like, Have you ever tried to look at the documentation for let's say, a cyclone four, Altera device, which is like, when I started that was like the normal, like, you know, run of the mill FPGA they had, and it's like, 3000 ish pages of PDFs. And so I actually, what I actually did was I started looking for like, is there an open source project, I can just look at how the hook went up. And I didn't find one. So I actually went on to eBay and found the breakout board, and then asked the seller, like, Hey, do you have a schematic I can look at, and they just gave me a schematic. And that's how I wired up. My first FPGA board was just like, copy copying, how they wired it up, you know, because you got to supply them, at least the old ones, you have to give them a, you have to give them IO voltage, which is what their tri states use to talk to the outside world, you have to give them a core voltage, and sometimes they even have a sub core voltage. That's deeper, I guess. So,
you know, that actually triggered me on one of my questions. I did. So you know what it was, it was the setup of the IO pins. Yeah. Because, you know, II Pin Mapping, right, the drains. And so I just couldn't get that through my head. Was that, okay, I said, Well, here's my output queue. Where does that show up on the pins? And the answer appeared to be just at random, you know, and that obviously wasn't the right answer. And so I had to learn, it's a little easier now, because there's more tools, depending on the vendor, but you had to make a file that said, okay, my signal called Q goes to pin 72. And I want it to be a seamless output. Yeah, going back to your i o voltage stuff. And once you had that file set up, and now there's some GUI tools that will get a smile for you. There wasn't at that time, then that was the other part I was missing as I couldn't figure and you know, that would be a killer. If you had to go relay out your PC board every time you rebuild, and go figure out where it's
brutal, no one would use them.
The the, the one I had, that got me because I figured that stuff out was when I started using like, differential signaling. Whereas on a FPGA, you can you can fake differential signaling by just driving to IO pins and saying ones inverse to the other. Or you can, most of them have built in hardware that to do it. And so you sign one pin that also uses another pin that's paired with it. And so you actually have to go down the list and say, Oh, these are the ones that are actually paired in these certain ports. And so you have to give them you know, we were doing LVTs for LCD laptops, so it's like 1.5 volts and said 3.3. So you gave, you have to give those ports, different voltages and the other ones because the other ones were talking to, you know, your USB device and stuff like that. So, yeah, that's, it's a different animal then and then just some normal microcontroller where you just give it five volts and it's happy. Yeah, but at least most my controllers,
well, you know, the constraints will let you do things to like say, Well, I want this piece of circuitry very close to this piece of circuitry, because I'm afraid of the clock stuff and things like that. There's a lot of stuff we haven't really touched on. I mean, you know, for example, on the clock, you don't want to take the clock in and use it as part of the logic signals, because then it destroys its quietness, if you will, you know, I mentioned there's a lot of special clock resources, well, if I start bridging it onto my regular resources, that kind of ruins it, it's really interesting, a lot of the bigger chips now will have some sort of either, like Xilinx, for example, they have a delay Locked Loop. Some of them have multiple delay locked loops. And commonly, you'll use that to say, okay, like, I've got a 10 megahertz oscillator. But I want to step that up to 200 megahertz, because that's what I want to run the FPGA at. But a more interesting use of it is the ones that will have like four in different parts of the chip. And they can actually be synchronized to say, Okay, I know the clocks going to be late coming here. So I'll synchronize up and I'll start the clock early, I'll actually predict that the clocks coming up, so that my clock will come up at the same part as time as the other part. And the other part of the chip will come up, or I can delay, you know, I guess. So they'll basically work it out to where they all come at the same time. So getting into those kind of clocking issues can be really challenging. Also, anytime you've got more than one clock, you know, you're trying to cross clock domains, most common cases as like reading a push button, you know, where it's a synchronous on the outside. So what happens when I hit right at the edge of that clock? Well, will you I don't know. But you could write and certainly you will over time. But even if you're going between different clocks, like if you've got, say, you are running at some frequency, and then you want to go into some higher frequency domain, there's a lot of interesting things you need to figure out to be able to successfully do that without making unreliable designs. So a lot of things to dig into, if you like solving puzzles and figuring stuff out. sounds extremely complex. Well, it can be but it doesn't have to be you know, it depends, again, traffic lights not going to have that problem, right? Yeah, it just, it's like anything else. Those problems are complex anyway. Well, after the high sampling
FPGA inside of $100,000 oscilloscope will have those kinds of issues, right?
More than well, just depends, but yeah, more likely. More likely. More than one. Yeah.
Well, no, well, even stuff that's simple, like, like, I was reading data off a old Gameboy, and I was displaying it onto a VGA monitor. And I was having an issue where my first because how a Gameboy was sending out that it says about like four bits at a time. And so but for some reason, on my first cycle, I was losing one of the bits. And I had to use a lot built in Logic analyzers to figure out why it was and it was just fun. I was not resetting the because I was in a state machine. And I was not resetting the state machine, right? And it's just one of those things where it's just really hard to catch them. So it took me like, probably a whole week of afternoons to find that whole thing.
Yeah, it can be really challenging, especially if you don't have the the built in logic analyzer. Because everything's opaque. You know, it's just like a regular microcontroller, where there's nothing to really look at in the middle. Yeah, it's just here's the inputs, here's the output. Good luck, you know, and the integrated Logic analyzers can make that a lot easier to try to find. And it's
one of those things where like, you make Oh, because this is when I didn't have simulation. So I'll make a change and hit go. And you go, Okay, I'm gonna go walk the dog on the block, be back and be done. Test it. Oh, that didn't fix it, change something else. Go do dishes, come back later. So you get like, three, four changes a night. And then you're like, Well, God, wait till tomorrow to keep working on this thing. And if
it's long enough, in between you come back and you're like, Well, that didn't work. But what was it? I did? Again? I don't know. Exactly. Remember. So I've had that problem, too. And again, that's another good reason for the simulation, though, is if you simulate, you can see everything you know, you've got the God view, right? You can drill down as deep as you want. You can look at everything you can look in the past, you couldn't walk in the future. So I highly recommend the simulations.
Yeah, I'm gonna have to start using that stuff more. I'm actually probably gonna try to get my my a stick working.
Yeah, yeah. Well, like I said, we've got a great series on that. I'll say that I wrote it. So I'm
gonna give us a shirt too. I think I
guess, he says, well, Williams on it.
But you know, I think the last podcast we did the Heinz podcast 57. I think we actually talked about that. That was my favorite comment on a video was on one of those videos. The comment was, gosh, I wish you'd been my Verilog instructor in school. I'll take that. Yeah,
that's a really good one. That's actually um, when I was in school, I we did VHDL to learn digital logic stuff. And FPGAs isn't part of the normal curriculum, at least at UT when I was there, but at the end, I took V LSI, which is like designing actual chips and stuff. And so we actually did it all on FPGAs which is kind of funny thinking about that way. But wrestlers like. So we're gonna learn Verilog because that's what you actually use in real life.
Yeah, I've heard you in Europe. VHDL is more popular commercially, but I haven't been able to prove or disprove that. But for the government stuff VHDL is pretty popular. And then everywhere else I've been, it's all been verilog. So I wonder
why that is not sure. Because academic is VHDL to Yeah, so this was like the only class that at UT that was doing Verilog. And
VHDL does have some abstract advantages if you really dig into it. But it's like Ada, you know, it's you for that advantage. You get a lot of verbose, verbose, the verbosity wherever you pronounce that, and you have a lot of issues with that if and again, even though I've written a lot of ADA code my day, it just doesn't flow off the tongue like the C language does. And granted, like say, Verilog is not C, but it's quote, you know, it's just like Java is not C either. But if you know C, Java seems to syntax, you can read it. Yeah, it's easy to mess with, uh, you know, you were talking about doing the custom chips. That's probably a topic for another day. And I wish we I wish you guys would get somebody on that it actually done it because I haven't, but there are moderately affordable chip foundries now, right, so you can lay out a chip design it and have a made and I think
the last time I checked, moderately priced was like $10 million. Oh, no, no, no, no, it's
much cheaper than that. Actually. So a previous boss of mine, we talked about it one day, and the way he described it goes, if you want one custom chip, it's $100,000. If you want 100,000 custom chips, it's $100,000. That's that's basically the way he put it seems
like last time I looked at it if you were willing to wait. And you didn't care about having them packaged. I think I convinced myself, you could get something really small done for like 10 or $20,000. Oh, wow. So don't get me wrong. That's still more than a macro chip. But there you go. But I've often thought that's really cool that that is getting within reach. I mean, it's still Yeah, you know, I can remember when a computer in your house was $10,000. And there were a few people that had those two, right. Yeah. And then it gets cheaper. So and like to say that's not at the current technology limits and everything else, but those be ASICs? I would guess. No, I think that's actually, that's like, legit.
Okay. Yeah. ASICs must be even cheaper than that, then now.
Yeah, if you could find somebody that would make them in those quantities. I don't know, I haven't looked at that. So I'm talking out of school here. But, but I have looked at the cost of doing the analog chip, or you know, not analog, but just the straight up chips. And it's, it's getting where you could afford it if you really wanted it bad enough. So
we looked into it for a quick second, because we had an entire product that was built on three separate PCBs. And we realized that though, everything literally the entire thing could be compressed into a single chip, with all of the configuration ability. So it was just mainly the external stuff was just simple passives to deliver power to it. So it was it was getting to the point where raising an eyebrow is like, could we actually put this all on one chip? But then you're you're subject to your own quantities of your own chip. And it just, there's a lot of things you have to pass or checkboxes in order to make sure you need your own chip.
Yeah. Oh, I agree. I mean, it would be one of those look at what a tough macho hacker things I am and, and 10 grand still much for that. But I don't know it's interesting, too. I mean, we see people do amazing things and garages and stuff so I keep waiting for you know, that's that's got to be where we're gonna make something like a 709 op amp that kind of technology that's probably getting where people could almost do that in their garage in some way.
Oh, man, we're gonna get bowtique op amps.
Oh, yeah. Well, Jeri Ellsworth had that. That video where she's making mods fits in her living room. I know.
We've seen some other examples of people making their own stuff like that. So you know that would be kind of interesting though. Maybe you could just like the people cater to the audio market going you know, oh, well, this tube amplifier sounds better or the the oxygen free cables. You know, that's the one I really like nitrogen injector. Yes, yes. Yes. So maybe that's our new next business. As you know, these are the Parker op amps. Yeah, definitely different flavors.
Is really crappy shear piece of silicone with bond wires randomly placed on it. Yeah, the
WG 12 bond wires.
Not even gold bond wires. They're just copper.
So I don't know. I mean, that would be a great challenge, right is to actually fabricated something simple like that. And the and I can't believe we're not close to where you could do that if you really wanted to.
I took a couple classes on that in college, and we got to use what was a pretty high tech fab in the late 70s. We got to use the equipment from that time to build our own chips. And out of an entire class of people building chips. Each student had their own wafer with 150 chips on it. We got like 10 Working MOSFET out of out of many, many 1000s of MOSFET. So like, I have an appreciation for like how difficult their
yield is not good. Oh, yeah, yeah.
And we follow the instructions. You can charge more money, though. Oh, yeah, yeah. Yeah, that good. Yeah,
we'll see it work in the 80s. That was my job as I used to take apart microprocessors for Motorola that failed. So we did the opposite. We tore them apart under the microscope. And that was actually a fun job. They, you know, the technology was such I don't know how they would do it now. But back then you could drop a needle down on the die and probe it. And you know, that was actually a reading, we'd cut, you know, cut traces and probe and do a lot of interesting things like that. But so I know a lot about tearing them apart. I don't know about building them. They're not easy difference between a civil engineer and
it'd be like, it'd be like a fancy restaurant where you get deconstructed. Like, die for your maybe I made that joke didn't work. You get deconstructed tacos, which is like, oh, yeah, deconstructed tacos. Like, you get the shell and like the lettuce and the meat. Everything's all separated out in your plate and you kind of eat it separately.
Hold your own integrated circuit. Yeah, yep.
It's like, dust in a bag basically.
No, that would be a good pet rock kind of gag gift for a bag of sands is make your own semiconductor.
Chia chip, right?
I could go viral. Right? The bag of sand. Make your own microprocessor?
Yeah. Not everyone has a quartz furnace in their garage?
In a tank full of? Yeah, a tank full of saline and everything else? Yeah. All the
nasty chemicals you need. Great. Well, sounds good.
So are you ready to go tackle the FPGAs? Even?
You know, I am. I I'm very curious about using them. The thing that the thing that I think I need to prove to myself that I see the benefits of them, I see a handful of things that that are just awesome. And they they seem to be incredible. I just need to do it for myself to really get a feel for it. Because what I look at is a lot of the projects that come up into my head, just don't require what an FPGA would be. But so I need to dream up a project that needs the power an FPGA can give to me, so maybe
I'll do that super synthesizer. You know, I
earlier in the talk is actually thought about that. I was wondering like, Could I synthesize a synthesizer in an FPGA? And the answer, of course, is probably yes. But that seems like a whole hell of a lot of work.
Well, we've seen what's the famous synthesizer from the Commodore mysid chip? Yeah, it's 82 I don't know carbon based life form says that song that is named after that synthesizer and I can't remember the name of it. But anyway, and there's another t shirt right carbon based life forms.
But if it just name dropping all that we are.
I had lunch with Jackie the other day. Oh, yes, that's the one but that joke worked better when she was alive. But you know where they did that all on? FPGA because apparently those are unobtainable or, you know, to get now and that they're very popular with the people who are doing synthesizer music
and it's really funny with those chips. Because when if you ever use it in some project, people say you shouldn't use that that chip because of blah, blah, blah, blah, blah. It's like, if he wasn't using it, it just be sitting in a drawer somewhere collecting dust. So yeah.
I have a few of those, though. Not those chips, but I have a few. Oh my gosh, do I really want to use that it's the last one I'm ever
gonna have. Yeah, it's actually really funny. Um, you because you were needed in Motorola 68k stuff. I have a friend that collects motherboards with 68 K's on him so he's got like 40 motherboards just older like arcade machines. One off computer stuff like that. Just like tons of them. But it's like the same thing if you need 68k goers house with a D soldering iron and have at it.
I have a couple of ceramic 60 1000s with you know, with the gold lid and everything's sitting in my bench somewhere. So yeah, it's Those were fun chips. They a lot of the 68 double O eights had a very obscure bug you should mention to your friend. I'll tell you about that. A lot of them went out with that obscure bug, so don't ask me how I know that.
Oh, cool. I think this is gonna wrap up the podcast, right? Yeah. Thanks, so
well. Great. Well, thanks for having me back. Yeah,
it was a lot of fun. We're gonna have you back on for another topic.
I think we should just build an IC live on the podcast. Yeah, that would be cool.
Just like Lectron beaming into the silicon,
I think. full wave so you can have like pounding on a forge and I don't know Jacob's Ladder sound or something. We have to go to the sound effects line.
Oh, yeah. Just like poof, it's done. I think there's a really awesome video where like, they're like designing a product. And it's just like the there's two guys like lab coats is really hard to ascribe on the podcast. And like two guys in lab coats and they just go throw some smoke down and like poof is a circuit board.
Like that's not how you guys do it.
I wish that's what the reflow oven does.
Sometimes it feels like that.
That's that when it goes poof, that's not a good thing.
Yeah, that's true. Yeah, we try to avoid the poof and with that l would you like to sign us out?
Well, that was the macro fab engineering podcast. I was your guest al Williams actually, I still will
be your guest host
Parker Tillman, and Steven Craig made everyone take it easy.
Thank you. Yes, you are listener for downloading our show. If you have a cool idea, project or topic that you want Steven and I to discuss, tweet us at Matt crab, or email us at podcast at macro lab.com. Also, check out our Slack channel. If you're not subscribed to the podcast yet, click that subscribe button that's on the website. That way you get the latest map episode right when it releases and please review us on iTunes. It helps us show stay visible and helps new listeners find us
Stephen brings up alternative uses for assembly layers in PCB design and Parker uses OctoPrint!
Al Williams returns to the podcast for the fourth time! This time to discuss the importance of circuit simulation and what it can teach engineers.
Al Williams returns to the podcast to discuss FPGA documentation and meat balloons.