I'm a professional software developer who is trying to make the jump into FPGA for fun, learning, and my own research purposes. I've been studying the tutorials here and elsewhere, reading some basic FPGA development books, and I have some end-goal projects that I want to work towards (robotics motor control, DSP and combinatorial problems, data capture and analysis).
I'm ready to pull the trigger on purchasing a development kit to start working on the basics, from counters and oscilloscopes all the way up to studying FFT implementations in FPGAs. So, in 2018, what would you, the more experienced folks, suggest?
Initially, I'm thinking of the following parameters:
- Xilinx dev boards/kits: I have their software installed on my dev machine, and it seems to me (a beginner) that there are a lot of examples and academic research centered around their products--so I should be able to get up to speed if I put in the work.
- USB interface: "Easiest" way to hook up to the board itself. Also less chance that I'll hook up something wrong and burn out the whole thing.
- Mid-level starter kit: Though I don't have money to burn, I know that having good tools, as opposed to cheapest, can make a big difference.
- Easy replacement or upgrades: Accidents happen, cats knock things off the table, and sometimes you decide that your project is good enough to keep around (instead of tearing it down) or you want to move up the food chain to a bigger resource.
With all this in mind, I've been looking at the Xilinx kits in the $150 range:
- knjn.com USB boards, particularly the the Xylo-E
- Trenz Electronic
- Digilent kits:
The Zybo Z7 from Digilent looks enticing, but I suspect that I would either be buying way too much horsepower for an absolute beginner, or all the bells and whistles would "spoil" me and I would be lost when dealing with something more basic, like trying to breadboard my own setup with raw parts.
So, if anyone could help with some guidance:
- Am I on the right track with one of these options?
- Am I aiming too high, or too low, with price/kit/capabilities?
- If someone said, "Here's $XXX; go buy one to play with", what would you suggest?
Thanks in advance!
On the XILINX side you should restrict yourself to 7-series and beyond to be able to take advantage of the Vivado tool.
The first choice is: do you want a pure FPGA, or a device that will bring you also in the SoC domain?
A pure FPGA low cost device will be Artix-7 or Spartan-7 as I saw in some replies.
An SoC using these low-cost technologies would be a Zynq 7010 or Zynq 7020.
My choice would be for the latter as you would be able to experiment interactions between processor (ARM dual Cortex A9) and programmable logic (Artix-7 technology) in a very handy way.
XILINX technology would also open you to a number of tools that are included in the free WebPack (including Vivado HLS to translate C/C++ code into HDL) or that can also be included in the starter Kit like SDSoC ( where you define your entire system in software).
Have a look to the Avnet site: http://zedboard.org/
And particularly to the Ultra Low Cost board MiniZed (89$): http://zedboard.org/product/minized
where the processor is a single Cortex A9.
This Minized has Arduino compatible shield interface and 2 PMods that are easy to use to interface modules.
I like the minized. I have done some software work for Public Lab, an open source environmental data collection organization. They are always looking for ways to prototype sensor data collection methods, and this looks like a great way to build out some ideas. Built-in wireless/Bluetooth would make it a lot easier to get those ideas off the ground.
You just added about 5 new projects that I want to work towards.
Can't claim to be an expert; Like you I'm just getting into FPGAs, and for the same reasons. But I've ordered an Elbert V2, which has the Xilinx Spartan 3A chip:
It's $44.05 at Amazon.
Udemy has an FPGA course based on the Elbert V2:
Inexpensive FPGA development and prototyping by example
The particular chip the Elbert V2 uses is the bottom of the line, so no chance of emulating an Intel i7 processor, but the board has a nice array of buttons, LEDs, and even a 3-digit seven-segment display. I think it will do nicely for me.
I'd like to tell you how it's working for me, but I ordered it directly from Numato to save a few bucks, and after a month, it's still "in the mail." Do yourself a favor, and order it from Amazon!!!
Xilinx is a good choice if you're developing on a Linux workstation; I've had the most success with their tools on mine. Xilinx also supports the widest range of products with their free toolchains; it's only some of the highest-end parts that require a paid license. With others like Altera (nee Intel) the free tools only support the lowest of the low-end devices.
There's nothing inherently wrong with the Xilinx ISE toolchain. I have it running fine in a CentOS VM on my Gentoo desktop, and still use it for the Spartan series. In general Xilinx tools are about a year (or more) behind their products, so getting too close to the bleeding edge is problematical unless you have an In with the factory FAEs. That's an advantage for the older ISE and Spartan line. However, the other posters are right--Series 7 and Vivado (and beyond) are currently 'where it's at', and most of the online 'conversations' (forums et al) are more active on those products. They've been out long enough now that the initial rough edges are gone.
I bought the Avnet Arty board when it first came out to evaluate the Artix, and it works fine. As it uses the Vivado suite it also provides an introduction to the new HDL C/C++ workflow. As oliviert's excellent reply notes, you have to decide how much you want to explore at once. There's the base Verilog and VHDL languages you need to come up to speed with, the C/C++ HDL for the 'next generation' of development, and then the entirety of integrated SoC development if you go with a Zynq-based product. Personally, I'd start easy with one of the low-cost FPGA-only boards using the Artix and work on getting the toolchain running and study how to integrate Verilog/VHDL code and the Artix macro libraries at a low level to drive I/O, instantiate memory, run the DSP blocks, etc. The next step would be to acquire a Zynq-based board and study the higher-level C/C++/SoC workflow. Doing it all at once could be a bit overwhelming.
The other advantage of that approach is you start with the lowest-cost boards, so when you blow up I/O pins while learning you don't cry quite as much or pull too much hair out :-)
From your post, it looks to me like you've done your homework and are on the right track. Good luck!
I wanted to say that I really appreciate the advice from everyone, and I've decided on my plan of attack:
- I went ahead and bought two of the Mojo V3 boards. I've got Arduino experience under my belt, so the onboard microcontroller will give me some familiar territory to work with as I move along.
- I got two for a couple of reasons. First, it fit into my self-assigned learning budget. Second, as Bob11 said, they are low-end enough that I won't cry when (not if!) I burn out something because I hooked up the IO pins wrong.
- My personal goal is to create a device/peripheral/"coprocessor" to do some specific high-speed calculations in the realm of sensor fusion and data analysis.* So after working on the basics of counters and adders oscilliscopes and Verilog/VHDL, I'll start working towards that goal. Final size/form factor dependent on what I come up with.
- On the other end of the spectrum are the specialized projects I mentioned. These will probably end up being smallest/cheapest I can get down to, in order to come up with usable designs for that organization I mentioned previously.
- I expect to move on to something like the MiniZed-, Cyclone-, and Numato-class boards within the next few months.
With the various options that everyone has mentioned, I think I'll have a lot to keep me busy, and I _should_ be able to avoid becoming locked into a particular chip/vendor, just because it's familiar. Once I get past the "hey, y'all, watch this!" phase, I can try to give some serious semi-professional thought to how I move forward on each project.
I'll keep this thread updated with anything that I run into, as I move from product to product.
Again, thanks for all the advice.
* Note: None of what I'm doing is secret or proprietary--I just don't want to bore anyone to death with my pet projects. When all is said and done, I plan on posting some articles here (and code on Github) to talk about what I'm doing and any (lack of) progress.
There is a list including most of fpga board vendors on Xilinx website for selecting
For me, I selected the Z-turn board from MYIR. I am a fpga beginner and really don't want to waste much money on some expensive board, I have limited budget, price 99$ for this board looks very attractive.
All turns well so far during my evaluation, it's far enough for a fpga beginner, except HDMI display. this board was using xylon trial version IP and can only work within 30 minutes after booted. For this, I posted a thread on this forum to ask for help. But MYIR solved this problem by providing an unlimited display version now.
Here is link for the board in case someone have the interest on it
It took me a while, but I was finally able to relocate one other board that I have been looking at: Mojo v3 board from Embedded Micro
I've never used Embedded Micro products, so I have no idea if they are a good supplier or not. The low cost, high number of IO pins, and the photos certainly make it look attractive.
I'd favour Artix-7 or Spartan-7 based boards over Spartan-6 as the latter ties you to the 'frozen' ISE development tool.
There is also a Cyclone 10 based board:
I had not caught the ISE development was frozen--thanks for the heads up.
The Cyclone board looks very good for my level and a good price.
If you are fed up with 'frozen' development tools (or trouble with licences), you should consider Lattice FPGAs. There are open source development tools for them! Probably only Verilog is supported now, so I have to learn it first. I've bought an Olimex iCE40HX1K-EVB board and started with implementation of UARTs, SRAM controller, etc. It's not so powerful, but I am very happy with it. The tools are fast (yosys, arachne-pnr), I can simulate the circuit (iverilog & GTKWave).
A few years ago I bought a Nexys 2 and tried to learn VHDL. I made some progress: I created a simple oscilloscope which could drive VGA and display the signals. But I was very disappointed in Xilinx ISE. Now ISE is abandoned, so I've got an expensive unusable card.
I agree with this suggestion for Lattice parts. But be aware that they will not allow you to register for support if you have a gmail or university email. I'm an engineer at a university and we buy a LOT of electronics to go into our research instrumentation, and they refused my registration due to my .edu email address. A call to the rep in the area didn't help.
Not cool in my book. They should be encouraging users
Xilinx ISE isn't abandoned, just not available for series 7 and later stuff. I have the unfortunate job of maintaining a Virtex-6 design in ISE and porting the whole works to an Artix-7 using Vivado.
Interesting about the email issue--I've run into the exact opposite problem (won't touch you if you don't have a .edu address) in other places.
I had looked at Lattice based on ivanovp's suggestion, and it is still in the pot for at least someday working with. Knowing they have a 'thing' about gmail is something to keep in mind. (I went with gmail as my catch-all "grown up" email address--instead of being dependent upon my many past employers).