First FPGA? - Page 1
Forum section: electronics / general

author: Omrieinbar
author_rank: Newbie
timestamp: November 29, 2019, 10:21:11 pm
content: I want to try doing some projects with a FPGA but i don't really know which one to buy. I do have some (very limited) experience with the Digilent BASYS3 board with Xilinx Artix-7 FPGA and vivado 2016.4 but I don't own a FPGA myself.Any recommendations for a first FPGA?Thanks.

author: fourfathom
author_rank: Super Contributor
timestamp: November 30, 2019, 01:48:35 am
content: Check out the TinyFPGA BX (https://tinyfpga.com/) This board has a Lattice ICE40LP8K, USB port, bootloader, NVRAM, 16 MHz xtal, lots of pins via 0.1" headers and it's pretty cheap ($39 from Adafruit:https://www.adafruit.com/product/4038). tinyfpga.com shows you how to use Verilog and the Atom editor. You can also use the Lattice tools to build the program binaries for downloading to the TinyFPGA.

author: NorthGuy
author_rank: Super Contributor
timestamp: November 30, 2019, 02:30:49 am
content: You can get Xilinx Spartan 7 board supported by Vivado for $69:https://store.digilentinc.com/cmod-s7-breadboardable-spartan-7-fpga-module/It is also sold by DigiKey etc.There must be even cheaper ones on eBay.

author: asmi
author_rank: Super Contributor
timestamp: November 30, 2019, 03:12:22 am
content: I've started from Digilent's original Arty, but now I would highly recommend Nandland Go board due to a series of very good video tutorials that - in my opinion - do a very good job in introducing all innards of FPGAs without overloading beginners:https://www.nandland.com/goboard/introduction.htmlI'm not affiliated with them in any way, expect that he is one of very few Youtubers who focus on FPGAs, and I like his content a lot.

author: lawrence11
author_rank: Frequent Contributor
timestamp: November 30, 2019, 04:06:13 am
content: Vivado looks nice, but FPGA's are way more complicated than Microcontrollers, wich give you a debugger interface.So you might end up biting more than you can chew, as they say.Nandland and lattice for beginners sound like a safe route. I feel liek buying a nandland board just cause I like the guy.I also find the max10 series to be attractive. But thats because I decided to go with this because I looked down on lattice and saw it as crap.But I will say this, Vivado and xilinx are the future.

author: james_s
author_rank: Super Contributor
timestamp: November 30, 2019, 04:52:02 am
content: You'll get as many different answers as you have people participating in the thread, there is no one absolutely "right" answer, it all depends on what you want to do with it and your budget. Much will depend on the software too so before spending money you might play around with software from the big three. ISE and Vivado (Xilinx), Quartus (Altera/Intel) and whatever Lattice uses because you're stuck with the vendor provided software for any FPGA you use.Personally one of my favorite FPGA platforms is the EP2C5T144C8 boards which are available from numerous Chinese sellers. They're an ancient and small part by modern standards but still big enough to fit an entire 8 bit computer and they're under $15.

author: lawrence11
author_rank: Frequent Contributor
timestamp: November 30, 2019, 05:09:16 am
content: Yeah, good luck on your decision.

author: hamster_nz
author_rank: Super Contributor
timestamp: November 30, 2019, 07:17:47 am
content: TL;DR: Find some course material/tutorials that you like, then get that board.Why? Getting your first project working is hard. Think 'new microcontroller and toolchain' hard times five.If you don't get that board, then at least get the same brand, but realize you have made you life hard. It will be like using an ATmega tutorial when you have an Stm32 board - the concepts are exactly the same, the execution is very different.If you don't pick the same board then you will most likely need a friend with FPGA experience to get you started - either that or a perverse enjoyment of wasting hours because of tooling or silly pin mapping issues.As a newbie, asking for help on the Internet will not generally get you useful answers, as you will get answers that use concepts you aren't familiar with, and you won't be able to supply pertinent information to allow others to give you targeted help.

author: ralphrmartin
author_rank: Frequent Contributor
timestamp: November 30, 2019, 07:56:48 am
content: Quote from: hamster_nz on November 30, 2019, 07:17:47 amGood advice, but a word of warning. I got the Zybo board and Zynq Book and its Tutorial Book to find out about High Level Synthesis, and even though they're just a few years old, quite a few things work subtly differently now in Vivado, to the point where I am getting distracted by "how do I make that work in the current Vivado" which not only involves changes in Vivado's UI, and use of Vitis, but also needing to change the source code in places.So, I'd recommend making sure any tutorials you follow are recent. I'd steer clear of any Xilinx boards earlier than series 7 devices too, so you can use the current tools. Many lower cost Xilinx boards are based on Spartan 6, for example.

author: rstofer
author_rank: Super Contributor
timestamp: November 30, 2019, 04:00:59 pm
content: Quote from: Omrieinbar on November 29, 2019, 10:21:11 pmI have been playing with FPGAs at a hobby level for about 15 years and there are still huge gaps in my knowledge. I can model complete computing systems like the IBM 1130 (http://ibm1130.org/) and simple processors like the LC3 project (https://www.cs.colostate.edu/~cs270/.Fall17/slides/Lecture24(AppC).pdf)but I have no idea how to use the simulator - never needed it. If you don't put bugs in your code, you won't need to dig them out. Nevertheless...I decided to pay money for a tutorial program (120 videos) plus a smallish project. The program uses the Lattice ICEstick which only costs about $25.https://www.digikey.com/product-detail/en/lattice-semiconductor-corporation/ICE40HX1K-STICK-EVN/220-2656-ND/4289604The class is expensive at $250 but education has never been free. If I took the same course at community college (were it even offered), the cost would be about the same or perhaps even more.The site ishttps://vhdlwhiz.com/basic-vhdl-tutorials/and there are a lot of free tutorials. For whatever reason, the author batches the paid course and enrollment is only open for the next couple of days - see bottom right of page. I don't know when the cycle repeats.The course itself (https://vhdlwhiz.teachable.com/p/dot-matrix) has about 120 videos, all less than 20 minutes or so. I highly recommend it, I'm about 30 videos in...Why spend money? In this case, it is about how to develop a complete system. How to lay out the directory tree, how to keep test benches separate from code for synthesis. I don't know anything about test benches, I should I suppose. I'm not the slightest bit interested in the project itself because I could plunk something together in a day that would work but I am interested in the author's process. The author also uses lots of packages to pull out constants and common code (now wrapped in a procedure).It's kind of odd but the author uses Visual Studio Code with the vhdl plug-in for source editing, ModelSim for simulation and ICEcube2 for synthesis. All free, by the way! I suppose there is some deeper meaning behind this but I'm just going with the flow. Multiple monitors is helpful. Two isn't enough! One for the video, one for code editing and one for simulation would be a really nice setup. Alas, I only have 2 (at the moment). This is a 'nice to have', not a 'must have'. Alt-Tab still works... As an aside, watching videos while following along with an editor or whatever, really does benefit from multiple monitors. It is really nice to be able to see the author's code while typing in the editor. Even better if you can control the video with a foot switch (https://www.amazon.com/gp/product/B008EA1K66) with 'pedable' software. I'm not sure it will work in this case because these are not videos playing on a controllable media player. I haven't tried it... Maybe dual screens is a 'must have'...So, the end level is somewhat higher than beginner level and probably in the intermediate range. And, yes, I intend to implement the project even though it has no particular purpose, Us retired guys can do that!Ignoring that program, there are lots of tutorials on the Internet. NandLand is another good site (https://www.nandland.com/) and the GoBoard is interesting but seems expensive given the limited off-board IO. But it looks like a nice learning tool and given tutorials wrapped around it, I would probably buy it if I was following along. The nice thing is that the author discusses both VHDL and Verilog and in some cases, side by side. The similarity is often striking.

author: lawrence11
author_rank: Frequent Contributor
timestamp: November 30, 2019, 04:32:13 pm
content: Ok dont listen to Rstofer, he is the blakc sheep 0.5% dont do like him.Many free programs out there for simulation, and the vendor tools can generate accurate timing files for you, all this work done for you for free.Might as well use them.

author: rstofer
author_rank: Super Contributor
timestamp: November 30, 2019, 04:49:26 pm
content: Quote from: hamster_nz on November 30, 2019, 07:17:47 amAnd the questions are more complex because an error deep in the logic can start clear across the design. Further, it is hard enough to debug your own code, understanding what someone else is trying to do is nearly impossible.In the embedded microcontroller world, blinking an LED is the first project. It is simple in comparison to blinking an LED on an FPGA by at least an order of magnitude. It's not that the VHDL is so complex, it is just a divider, but learning how to deal with the constraints file is a high hurdle.Associating a physical pin with an entity output is sometimes a challenge. It was easier with ISE than Vivado.Perhaps that idea also leads to an all-encompassing tutorial program. Start to finish with all the details included - that's the kind of program to find.

author: lawrence11
author_rank: Frequent Contributor
timestamp: November 30, 2019, 05:01:54 pm
content: I saw the program you speak of. Should I go back to step 1 I would consider it.But my choise was Verilog, and now it is too late.250$ is expensive, but if its complete and gives actually useful projects, with a good difficulty level while they explain every single detail.Then this is golden!

author: rstofer
author_rank: Super Contributor
timestamp: November 30, 2019, 05:13:40 pm
content: Quote from: lawrence11 on November 30, 2019, 04:32:13 pmRandom Walk is not a design strategy. Bits and pieces from hither and yon are unlikely to interface all that well.Particularly for hardware design, there needs to be deep structure to the design. Modularity is important, keeping things in the right place (define 'right') seems important, modules need to fit together and cooperate. And there are rules! Real rules where violations won't show up until the worst possible moment. Not just the simple rules enforced by the tools...Ideally, one would find an entire collection of tutorials such that the presentation was consistent and complete. There are thousands of videos on how to design some component but far fewer on how to design a system and even less on how to actually build it. In my world only synthesis matters and implementation as real hardware is the goal. I'll learn test benches in the tutorial program but I'm not sure how often I will use them. How badly could I screw up a counter?One thing I have learned: There are a very few universal building blocks. This was obvious with 74xx logic chips but it's still true with HDL. You need things like counters, registers, MUXs, Decoders, gate level logic, FSMs and that's about it. Systems are built from these building blocks in HDL just like they were with chips. Just a lot less wire-wrapping and a lot more typing.All through school, all I was interested in was digital design. I ate logic design for breakfast! It wasn't until decades later that I could have a playground with a million gates. Sweet!

author: lawrence11
author_rank: Frequent Contributor
timestamp: November 30, 2019, 05:21:51 pm
content: I'm sure our friend here wants to be a fully functionnalmoderndesigner and will take all your considerations into account.And also make up his own mind on what long term strategy he will take.

author: rstofer
author_rank: Super Contributor
timestamp: November 30, 2019, 05:24:59 pm
content: Quote from: lawrence11 on November 30, 2019, 05:01:54 pmYes, it is expensive. But it is complete from concept to hardware, every single step pointed out in great detail. I could have built the project with some other FPGA and, really, I don't need a 8x8 display but I'm going to follow the program step by step. I want to learn as much as I can about how a professional designer approaches this stuff.We can debate the advantages of Verilog versus VHDL versus System Verilog versus wire-wrap but that isn't the real issue. The issue is designing hardware - real systems that actually work as intended.Were I you, I would give serious consideration to the program. You clearly want to play in this corner of the sandbox and the cost of entry is somewhat high. I was kind of wondering if this would get your attention.The program isn't just about VHDL, it is about a systematic approach to designing systems. Design, simulate, synthesize - all in sequence. As I said above, I don't simulate but it seems like I should. If the only thing I learn is a little about writing test benches it will be worth the money.The money... I am long retired and well into old age but I'm still spending money on education. There is absolutely no return-on-investment in my case.

author: Rasz
author_rank: Super Contributor
timestamp: November 30, 2019, 06:36:32 pm
content: Quote from: lawrence11 on November 30, 2019, 04:32:13 pm<insert futurama screenshot>not sure if cheapskate, or racist?</>Some people are autodidacts, or have tons of free time, others might value time-vs-money differently from you.Quote from: lawrence11 on November 30, 2019, 05:01:54 pmOnce I learned Turbo Pascal at 8 it was too late for Assembler, C, Java, Go, Erlang, Python. My fate was sealed!

author: lawrence11
author_rank: Frequent Contributor
timestamp: November 30, 2019, 06:46:58 pm
content: you know...rasz...you never know.been reading about it more than I should.

author: james_s
author_rank: Super Contributor
timestamp: November 30, 2019, 06:49:54 pm
content: Quote from: rstofer on November 30, 2019, 04:49:26 pmIt's pretty trivial in Quartus.Assignments> Pin Planner, select the name of the IO in your design and type pin_<pin number> in the field. You can manually edit the file it produces if you want, it's faster once you really know what you're doing, but there is no need to do so.

author: rstofer
author_rank: Super Contributor
timestamp: November 30, 2019, 07:44:06 pm
content: Quote from: Rasz on November 30, 2019, 06:36:32 pmWhen you get really old, you'll see where time is more important than money.

author: rstofer
author_rank: Super Contributor
timestamp: November 30, 2019, 07:46:45 pm
content: Quote from: james_s on November 30, 2019, 06:49:54 pmDigilent provides 'board files' for their boards and that simplifies things considerably. In many cases, you are using predefined peripherals so the pinout is fixed. I just wasn't prepared for the change in syntax. It's all in what you started with.

author: NorthGuy
author_rank: Super Contributor
timestamp: November 30, 2019, 08:44:19 pm
content: Quote from: rstofer on November 30, 2019, 05:13:40 pmIMHO, FPGAs are built from config bits, LUTs, MUXes, flip-flops, interconnect, clock buffers, BRAM, FIFO, SERDES, DSP ...Very interesting as different people see different things while looking at the same object

author: rstofer
author_rank: Super Contributor
timestamp: November 30, 2019, 11:32:47 pm
content: Quote from: NorthGuy on November 30, 2019, 08:44:19 pmYup! I have never used FIFO, SERDES or DSP. I have used the built-in 18 bit multipliers and I have used BRAM, I just left it off my list of gadgets. When I look at a new chip, the first thing I look for is the size of BRAM because if my processor main memory will fit in BRAM I can avoid a lot of effort. Some small 16 bit CPUs might only have 32k (IBM 1130) words and most of the newer chips have more than this in terms of BRAM. The LC3 project is 64kx16 and it fits easily in an Artix 7 100T.

author: SiliconWizard
author_rank: Super Contributor
timestamp: December 01, 2019, 05:20:38 pm
content: Quote from: rstofer on November 30, 2019, 11:32:47 pmWell. I don't know about your need for logic elements, but as far as BRAM is involved, an Artix 7-100T is hugely overkill. It has 4860 kbits of BRAM, which would give you over 300Kx16. A 25T or 35T would be more than adequate for significantly less money.

author: rstofer
author_rank: Super Contributor
timestamp: December 01, 2019, 07:09:10 pm
content: Quote from: SiliconWizard on December 01, 2019, 05:20:38 pmI like boards with gadgets like 7 segment displays, LEDs, buttons, switches and whatever else comes along. To that end, I like this Digilent board:https://store.digilentinc.com/nexys-a7-fpga-trainer-board-recommended-for-ece-curriculum/Note that the price for the 50T version is $229 and just $265 for the 100T. Given that this will be used for many different projects, I might as well go for the 100T. Future proofing!I don't worry about manufacturing and, really, the cost of one board, or even a half dozen different boards over the years, isn't much of a consideration.I do single stepping, breakpoints and single instruction techniques as an aid to debugging and lots of displays and switches help enormously.I have a couple of Arty 7 boards but, while they have a lot of edge IO, they don't have any gadgets. I don't find them nearly as useful for what I want to do.Different strokes, I guess!