Al Williams12:30 PM Hey @Antti Lukats let me get through some more questions and we'll open up to that towards the end while folks are still here
Al Williams12:31 PM Ok, so my question back to everyone is if we were to do more FPGA-specific bootcamps are you happy with them being ice40 or would you rather see MAX10 or Xilinx or ??? -- whath are you guys using most of?
Al Williams12:32 PM Keeping in mind that most of the bootcamps are agnostic. So I've thoughth about doing a 3A where we deploy the same code to say MAX1000
Christoph12:32 PM I guess ice40 is a good start, and people can progress from there
Frank Buss12:32 PM I don't care, but the boot camp is a good idea. Will there be more advanced stuff discussed like meta stability etc. as well?
Al Williams12:32 PM The nice thing is ice40 is so cheap
Parker12:32 PM I currently use Altera products but because of the bootcamps I have started learning ice40
Al Williams12:32 PM so buy a $20 board and 90% of what you learn will transfer over to Altera/Xilinx etc.
Al Williams12:32 PM Like I say the Upduino is even cheaper
Piotr Esden-Tempski12:33 PM I think fundamental is the ease of access. So iCE40 and soon ECP5 is the way to go. Definitely not Altera. Maybe Xilinx 7 series eventually.
Al Williams12:33 PM and mostly works the same. Has a few more features. Needs a slightly different build script
Al Williams12:33 PM The only reason I keep looking at MAX10 is that a) Arrow has that cheap board (not really Arrow but they sell it) and b) the Arduino Vidor uses it
Kevin12:33 PM @Al Williams The camps would be more directly relevant to me if they were for Spartan 3 or 6. It really depends on whether the example code is using something specific to the ice device.
Al Williams12:33 PM The Upduino 2 is like $13 or $14. Don't get the version 1
Al Williams12:34 PM Well like I say Kevin, all but #3 (right now) are FPGA agnostic
Antti Lukats12:34 PM max1000 is my design, not much to be proud of but relativly cheap :)
Thomas Shaddack12:34 PM how much is the postage for the upduino for those of us stuck in Europistan?
Bonki12:35 PM @Al Williams could you talk about your experience with SoC FPGAs? Currently I am starting to play around with the Cyclone V SoC on a DE10-Nano board.
Al Williams12:35 PM All simulation and you move from there. I love love love EDA Playground for that because you are ready to go with zero software. But I also support Icarus/gtkwave and I have been using cvc too
Al Williams12:35 PM @Antti Lukats I didn't know if that was a secret but yes, I saw that. The docs on your site are better than Arrow's lol
Antti Lukats12:35 PM we are so short on time documents
Antti Lukats12:36 PM we would LOVE LOVE LOVE to give away lots of FPGA hardware for those who would play with it.. for little exposure, demo design and docu
Al Williams12:36 PM @Antti Lukats That's good for us because it gives us something to write about lol
Boian Mitov12:36 PM Found it... Not sure if the link was already posted:
Al Williams12:36 PM The last board you sent me caught me mid divorce so I dind't get much chance to play with it lol
Antti Lukats12:37 PM sorry, hope it wasnt the reason 4? :)
Piotr Esden-Tempski12:37 PM I think that if you standardize on apio for example you will get an easy toolset with a gui and noone can complain about it because the dev boards are very affordable. Most of the excersizes will be translatable to any FPGA. I think it is important to make an executive decision on that because everyone is either forced or chooses to use any kind of FPGA.
Al Williams12:37 PM Actually if you were I'd send you a thank you card!
Frank Buss12:37 PM @Bonki I've used the Cyclone SoC, in combination with NIOS some years ago. As usual, the tools can be a pain sometimes, but pretty nice to click visually your own system with the peripherals you like, and then the code for NIOS is automatically generated etc.
Audi McAvoy12:37 PM I always end up with a hundred tabs open at the end of these chats!
Stephen Tranovich12:38 PM @Al Williams does that give you a good picture of what people are using? Ready for another community question?
Antti Lukats12:39 PM today ZYNQ support both on the FPGA side as on the linux side is superior compared to the altera path
Al Williams12:39 PM As to Eric's question... Verification is great although because FPGAs are easier to respin you don't have to get quite as torqued as the ASIC guys do about it. But it still pays off... so generally
Frank Buss12:39 PM if only Vivado wouldn't suck that much :-)
Al Williams12:40 PM I will try to build up a good testbench and some assertions and run the code through Modelsim or Icarus or cvc (anyone else using cvc? -- very fast)
Stephen Tranovich12:40 PM To piggy-back off that question, @Piotr Esden-Tempski asks: Do you have experience with formal verification? Have you used the Yosys formal verification capabilities yet?
Al Williams12:41 PM So by the time I put it in chip I am pretty happy usually. If I'm using the big tools I will often do a post sim also but those are painful. If you haven't done that, that's where your Verilog is chewed down to primatives
Al Williams12:41 PM and you simulate that which with the right libraries and models can tell you a lot if you are trying to optimize speed or power but without the right models isn't that useful
Al Williams12:41 PM I have not used the Yosys formal verification yet, although I have had some experience with that with expensive tools during my day job
Al Williams12:43 PM Should port to Xilinx easily. Odd
Piotr Esden-Tempski12:43 PM It is very easy to add SUMP to your design, also a great solution to read out the internal state of your design from the FPGA.
Al Williams12:43 PM Yosys does system verilog features that Altera doesn't like putting defaults in a parameter list
Thomas Shaddack12:43 PM three cheers for debug tools right in the design!
Al Williams12:44 PM Yes although SUMP is not tiny and it is nice having the same wave tool for simulation and live debug
Al Williams12:44 PM So check that article out and look for part 2 as soon as I finish it
Sometimes you start something simple and then it just leads to a chain reaction of things. I wanted to write a post about doing state machines in Verilog and target the Lattice iCEstick board that we often use for quick FPGA projects. That led to a small problem: how do you show what's going on inside?
Piotr Esden-Tempski12:44 PM No definitely simulation is essential, and SUMP does not replace that, it is a supplement to address issues at the end of the design process.
Al Williams12:44 PM Who's using verification frameworks like OVM (is it OVM?)
Eric Sherk12:46 PM we use UVM at my day job, OVM is precursor
Al Williams12:46 PM Yes I remember @Piotr Esden-Tempski asking that. Well, it depends. There's been a lot of attempts to convert HDL a lot of different ways. The vendors are all happy about writing C and pushing HDL out -- we've talked about some early efforts on that in HaD.... and there's migen and then whole new languages like Spinal etc. I would almost think it is like programming languages.... you might have your favorite. But it is probably best to teach/learn one of the big ones.
Al Williams12:46 PM UVM... that's what I was thinking of...
Al Williams12:46 PM I knew that didn't sound quite right
Al Williams12:47 PM So just like it is probably better to teach a new programmer simple C, that guy might go on to write only with the Qt toolkit
Al Williams12:47 PM but learning the Qt way first is distracting, hides a lot from you, and makes it hard to go sideways
Al Williams12:47 PM So what other topics do you think we should be investing in the bootcamp format? FPGA topics or otherwise?
Al Williams12:48 PM I will tell you we have at least two more FPGA coming... one will be step by step building a UART and then we will use the UART to do a PWM peripheral that would actually be practical
Al Williams12:48 PM And the new one out today does a pretty broad coverage of state machines
Audi McAvoy12:49 PM Is the UART going to be a 16550 flavor?
Al Williams12:49 PM I doubt we will go that far, but maybe. I haven't written it yet. You can probably find 16550 IP on OpenCores although I haven't looked
uart16550 is a 16550 compatible (mostly) UART core. The bus interface is WISHBONE SoC bus Rev. B. Features all the standard options of the 16550 UART: FIFO based operation, interrupt requests and other. The datasheet can be downloaded from the CVS tree along with the source code.
Piotr Esden-Tempski12:50 PM When you do PWM, make sure to cover PDM too. It is interesting how they differ depending on the amount of outputs you need. ;)
Al Williams12:50 PM Yes. Well you guys probably don't remember my PAK-V chip (which was not an FPGA just a screaming fast SX processor)
Al Williams12:50 PM but it did 8 channels of PWM like that and could do PWM/PDM -- wound up in some surprising places
Audi McAvoy12:51 PM I looked a few years ago. Found lots of half started, and partially implemented projects.
Al Williams12:51 PM There are a ton but like you say I don't know how many of them are useful
Al Williams12:52 PM If you do the Google custom search for 16550 on their site....
Al Williams12:52 PM So what other topics are you interested in for Bootcamps
Al Williams12:05 PM Well most of you probably read some of my stuff on Hackaday but I've been doing electronics for the majority of my life -- ever since I was a kid. I had a ham radio license in 1977....
Al Williams12:05 PM And when I went to school there were no FPGAs
Al Williams12:06 PM So later when I got interested I tried really hard to learn about them and there were 2 or 3 things I just couldn't get. So I finally broke down and took one of the freebie seminars from Altera
Al Williams12:06 PM If I could have just asked the guy those 3 things it would have taken 15 minutes
Al Williams12:06 PM But I had to take the whole class ;-)
Al Williams12:07 PM So since then I've really looked for ways to bring more people into FPGAs and make them more accessible. The costs have come down both of the parts and the tools
Al Williams12:07 PM most of the tools are free and we have Open Source for at least one FPGA family now
Al Williams12:07 PM The bootcamps are one way I wanted to try to make things easier for people to climb that learning curve
Stephen Tranovich12:08 PM That's awesome. And they sure are helping.
Al Williams12:08 PM FPGAs aren't for everything, of course. Neither is an AVR processor or a 555 chip. But it is a great trick to have in your toolbag and when you do need it almost nothing else will do short of building huge racks of logic circuits
Stephen Tranovich12:08 PM And this is everyone's chance to ask you their own 3 questions!
Al Williams12:08 PM If you know me, you know I’m always a little different. This is going to be a unique Hackchat because I’m going to flip it around. Sure, I’ll take questions, but I’m very interested in asking you questions. For example:
Have you tried the FPGA bootcamps? Why or why not?
What FPGAs would you like to see us cover? (Currently, only ice40)
What topics would you like to see in the future? More FPGA topics? Other topics?
If you haven’t heard, we released bootcamp #4 today which is all about developing state machines in Verilog. This is another one where you don’t really need the hardware to follow along -- you can do everything in your browser or an offline Verilog simulator like Icarus.
The next two will build on the state machine premise and we’ll build a serial to PWM “chip” that you could actually use (probably with the ice40 again, but maybe also with the MAX10, or other FPGAs depending on your feedback).
So… who’s taken any of the bootcamps?
Al Williams12:09 PM Well while you are thinking... I see @Thomas Shaddack has a question about command line tools
Stephen Tranovich12:09 PM Sure, here's @Thomas Shaddack 's question: Are there some commandline tools for FPGAs? Something that would not require a heavyweight multigigabyte GUI monstrosity just to compile a verilog or vhdl source, and could be run from a console?
Al Williams12:09 PM That's one thing I like about the open source tools is they are command line and that's it! However, there's a secret about the tools
Al Williams12:10 PM All the vendor tools are GUI shells over a bunch of command line programs, TCL scripts, and Perl scripts
Adrian12:10 PM only found out about the bootcamps today... as a result of the email to join this chat, but will get stuck in as they have always interested me
We like the ICE40 FPGA from Lattice for two reasons: there are cheap development boards like the Icestick available for it and there are open source tools. We've based several tutorials on the Icestorm toolchain and it works quite well. However, the open source tools don't always expose everything that you see from commercial tools.
Al Williams12:12 PM You might read that article about all the tools that are now up and also my command line driver for them is linked there on GitHub.
Kevin12:12 PM I learned about the FPGA bootcamp a few weeks ago. Haven't had time to go through them yet. I picked up three inexpensive FPGA boards. Two are Spartan 3 and the other is Spartan 6. In reading about Verilog and VHDL I went with VHDL.
Al Williams12:13 PM Hi Kevin. Well that's the old vi/emacs pc/mac debate isn't it?
Thomas Shaddack12:13 PM @Al Williams none yet. tried to putz with some rudimentary CPLDs from Xilinx and one lower-end thing from Altera, available as cheapo Chinese boards on ebay.
Al Williams12:14 PM My day job used to be with Boeing and we had to use a lot of VHDL because the government likes it. But most people I know prefer Verilog. With the modern extensions to Verilog the two are pretty much feature equivalent. But it just depends. Verilog is kind of C-like and VHDL is kind of Ada like
Al Williams12:14 PM There are converters that can go either way but they are typically not great
Frank Buss12:14 PM I think VHDL is better, because it catches more bugs at compile time. Verilog is to lax with implicit type conversions etc.
Al Williams12:14 PM Depends on your tools though don't you think? And if you do a lint step.
Adrian12:14 PM i don't have a FPGA /toolchain as yet and would welcome a recommendation on what best to follow along
Al Williams12:15 PM Well the Bootcamps right now assume you have an icestick which is a Lattice ice40 for about $30 and very easy to set up
Frank Buss12:15 PM needing an extra lint step proves my argument :-)
Kevin12:15 PM I have one Spartan 3 board driving a set of 8 7-segment displays wired up for Charlieplexing (9 wires to control 64 segments). I'm using that display for my introduction to using VHDL.
MagicWolfi12:15 PM I will go through the bootcamps when I an going to learn Verilog. I speak VHDL only at the moment.
Al Williams12:15 PM I am about to do a post with a hands on with the version 2 of the Upduino which is really cheap like $12
Al Williams12:16 PM I have found that learning VHDL then Verilog or vice versa isn't a big deal. The real big deal is changing how you think
Does NOT necessarily mean b==10! That usually shocks people for a few days or weeks.
Stephen Tranovich12:17 PM Before we spend the while chat debating VHDL vs Verilog, let's take another community question! This question is from @Christoph : Where could I look for open source "hardware snippets" of decent quality, like an SPI?
I'd like to create a frame buffer that receives a packed monochrome frame (1 bit per pixel) via SPI and outputs a 16-bit per pixel (fixed color) frame to an SPI display.
Al Williams12:17 PM The Upduino is very cool although the board is a bit of a mess. But it has the bigger Lattice part on it which is nice and I'm a big fan of iceStorm
Al Williams12:18 PM I say best because everything is there
Al Williams12:18 PM I say worst because everything is there ;-)
Kevin12:18 PM @Frank Buss I don't remember specifically what it was about VHDL that pointed me in that direction but what I read made me thing it was the better choice. IIRC, VHDL helps avoid some (timing?) problems you can have with Verilog. At the same time I know that in North America Verilog is the more common HDL for use with FPGAs. I've also seen a site online that will convert between Verilog and VHDL.
Everybody wants to give FPGA development a try and here's a great way to get into it. You can build your own Persistence of Vision display using a $30 dev board. It's a fun project, and you'll learn quite a bit about designing for an FPGA, as well as using the Quartus design software.
Being able to communicate between a host computer and a project is often a key requirement, and for FPGA projects that is easily done by adding a submodule like a UART. A Universal Asynchronous Receiver-Transmitter is the hardware that facilitates communications with a serial port, so you can send commands from a computer and get messages in return.
Al Williams12:20 PM Read the comments on that last one.
Al Williams12:21 PM I used a UART "from the Internet" that I've used before and I couldn't find the exact version online that I was using. So I posted mine, but to give credit I linked to the "old version" on GitHub.
Al Williams12:21 PM Well the old version had many problems.
Al Williams12:21 PM I don't remember if I fixed it (and that's why I can't find it) or if someone else fixed it, I took it and now can't find the link
Al Williams12:22 PM But you do have to do a little due diligence when you pick up someone else's code
Piotr Esden-Tempski12:22 PM I did not have the time to work through the bootcamps yet. But big thanks for putting them together. I will definitely see if I can streamline and adapt them to the iCEBreaker that we are working on. :) It is a great resource. :)
Al Williams12:23 PM Thanks @Piotr Esden-Tempski -- yeah I think if more people knew how cheap the ice family was, low power, and the availability of good free tools, we'd see a lot more of it. I'm glad you are building more with it.
Piotr Esden-Tempski12:23 PM Also @Al Williams what do you think about the higher level solutions like migen. I spent some time with it recently and it is great to have a generator language at the fingertips to create repetitive logic.
Stephen Tranovich12:24 PM @Al Williams is calling for @MagicWolfi 's question! What standard bus structure would be recommended to connect modules for routing data between them. Any differences for continuous data streams vs. blocks of data at random times?
Piotr Esden-Tempski12:24 PM At the end it is still Verilog at the backend, but the generator does not make typos as much as I do and keeps the lack of compiler complains away from me. :)
Al Williams12:25 PM Remember the opencores site I just linked? On there you'll find a spec that's open for Wishbone which is a simple nice interconnect. If you are doing something open source and that's good enough then it helps to use that. You can reuse a lot of IP
Frank Buss12:25 PM yes, I have a pretty nice idea to make the core really small, but I don't know if they think it would be cheating :-)
Al Williams12:26 PM If you have an ARM core either soft or on die then you get milage out of using the ARM busses which the vendor probably gives you (e.g., AXI, etc.)
Al Williams12:26 PM But if you need a high speed bus... and interconnect, you might look at what Opal Kelly is doing which is "open" called Syzygy https://syzygyfpga.io/
Antti Lukats12:26 PM Hi Frank, I wrote to riscv mailinglist
By using our website and services, you expressly agree to the placement of our performance, functionality, and advertising cookies.
Learn More